started work on integrated head align tool

This commit is contained in:
FeralChild64 committed 2020-06-02 15:27:16 +02:00
1 parent a87d6bd065
commit e06046e82e
20 files changed
+187 -30

No files matched your search

+3 -2
View File
@@ -54,9 +54,9 @@
// #define CONFIG_IEC_BURST_CIA2 // please keep disabled for now
// #define CONFIG_IEC_BURST_SOFT // please keep disabled for now
#define CONFIG_TAPE_NORMAL
// #define CONFIG_TAPE_NORMAL
#define CONFIG_TAPE_TURBO
#define CONFIG_TAPE_AUTODETECT
// #define CONFIG_TAPE_AUTODETECT
// #define CONFIG_TAPE_NO_KEY_SENSE
// #define CONFIG_TAPE_NO_MOTOR_CONTROL
// #define CONFIG_TAPE_NO_ERROR_CORRECTION
@@ -124,6 +124,7 @@
#define CONFIG_PANIC_SCREEN
#define CONFIG_DOS_WEDGE
#define CONFIG_TAPE_WEDGE
#define CONFIG_TAPE_HEAD_ALIGN // XXX work in progress
#define CONFIG_BCD_SAFE_INTERRUPTS
+1
View File
@@ -117,6 +117,7 @@
// #define CONFIG_PANIC_SCREEN
// #define CONFIG_DOS_WEDGE
// #define CONFIG_TAPE_WEDGE
// #define CONFIG_TAPE_HEAD_ALIGN // XXX work in progress
#define CONFIG_BCD_SAFE_INTERRUPTS
+1
View File
@@ -115,6 +115,7 @@
#define CONFIG_PANIC_SCREEN
#define CONFIG_DOS_WEDGE
#define CONFIG_TAPE_WEDGE
// #define CONFIG_TAPE_HEAD_ALIGN // XXX work in progress
#define CONFIG_BCD_SAFE_INTERRUPTS
+4 -3
View File
@@ -96,11 +96,11 @@
.const CONFIG_KEYCMD_HELP = @"LIST"
.const CONFIG_KEYCMD_F9 = @"REM F9"
.const CONFIG_KEYCMD_F9 = @"BOOT"
.const CONFIG_KEYCMD_F10 = @"REM F10"
.const CONFIG_KEYCMD_F11 = @"REM F11"
.const CONFIG_KEYCMD_F11 = @"MONITOR"
.const CONFIG_KEYCMD_F12 = @"REM F12"
.const CONFIG_KEYCMD_F13 = @"REM F13"
.const CONFIG_KEYCMD_F13 = @"\$5FH"
.const CONFIG_KEYCMD_F14 = @"REM F14"
@@ -115,6 +115,7 @@
#define CONFIG_PANIC_SCREEN
#define CONFIG_DOS_WEDGE
#define CONFIG_TAPE_WEDGE
// #define CONFIG_TAPE_HEAD_ALIGN // XXX work in progress
#define CONFIG_BCD_SAFE_INTERRUPTS
+1
View File
@@ -115,6 +115,7 @@
#define CONFIG_PANIC_SCREEN
#define CONFIG_DOS_WEDGE
#define CONFIG_TAPE_WEDGE
// #define CONFIG_TAPE_HEAD_ALIGN // XXX work in progress
#define CONFIG_BCD_SAFE_INTERRUPTS
+1
View File
@@ -115,6 +115,7 @@
#define CONFIG_PANIC_SCREEN
#define CONFIG_DOS_WEDGE
#define CONFIG_TAPE_WEDGE
// #define CONFIG_TAPE_HEAD_ALIGN // XXX work in progress
#define CONFIG_BCD_SAFE_INTERRUPTS
+3
View File
@@ -298,6 +298,9 @@
#if CONFIG_TAPE_WEDGE && !CONFIG_TAPE_TURBO
.error "CONFIG_TAPE_WEDGE requires CONFIG_TAPE_TURBO"
#endif
#if !CONFIG_TAPE_WEDGE && CONFIG_TAPE_HEAD_ALIGN
.error "CONFIG_TAPE_HEAD_ALIGN requires CONFIG_TAPE_WEDGE"
#endif
}
+4
View File
@@ -125,6 +125,10 @@
.label SID_RANDOM = $D41B
.label SID_ENV3 = $D41C
// Color COLOR_RAM
.label COLOR_RAM = $D800
// CIA #1 registers
.label __CIA1_BASE = $DC00 // base address of the chip
+4
View File
@@ -50,3 +50,7 @@
#if CONFIG_SHOW_PAL_NTSC
.label print_pal_ntsc = KERNAL().print_pal_ntsc
#endif
#if CONFIG_TAPE_HEAD_ALIGN
.label tape_head_align = KERNAL().tape_head_align
#endif
+3 -20
View File
@@ -22,25 +22,9 @@ cmd_load:
// Check for the file name
jsr basic_end_of_statement_check
bcc !+
bcc cmd_load_fetch_filename
#if CONFIG_TAPE_NORMAL || CONFIG_TAPE_TURBO
// No file name given, just load the first file from tape
ldx #$00
stx SA // secondary address
#if CONFIG_TAPE_NORMAL
inx // 1 - for normal tape format
#else
ldx #$07 // 7 - for turbo tape format
#endif
stx FA // device number
bne cmd_load_got_secondaryaddress // branch always
#else
// Without tape support, try to load the first file from disk
// Try to load the first file from disk
lda #$01 // name length
ldx #<cmd_load_default_filename
@@ -52,9 +36,8 @@ cmd_load_default_filename:
.text "*"
#endif
cmd_load_fetch_filename:
!:
jsr basic_fetch_and_consume_character
cmp #$22
beq !+
+22 -1
View File
@@ -17,8 +17,20 @@ wedge_tape:
bne_16 do_SYNTAX_error
lda BUF+1
cmp #$4C // 'L'
bne_16 do_SYNTAX_error
beq wedge_arrow_L
#if CONFIG_TAPE_HEAD_ALIGN
cmp #$48 // 'H'
beq wedge_arrow_H
#endif
jmp do_SYNTAX_error
wedge_arrow_L:
// Execute 'arrow + L'
@@ -34,5 +46,14 @@ wedge_tape:
jmp cmd_load_got_secondaryaddress
#if CONFIG_TAPE_HEAD_ALIGN
wedge_arrow_H:
jsr tape_head_align
jmp basic_main_loop
#endif
#endif // CONFIG_TAPE_WEDGE
@@ -17,6 +17,7 @@
.label VK1__load_tape_normal = $4000 + 2 * 3
.label VK1__load_tape_turbo = $4000 + 2 * 4
.label VK1__load_tape_auto = $4000 + 2 * 5
.label VK1__tape_head_align = $4000 + 2 * 6
#else
@@ -44,5 +45,10 @@
.word $0000
#endif
#if CONFIG_TAPE_HEAD_ALIGN
.word tape_head_align
#else
.word $0000
#endif
#endif
-1
View File
@@ -55,5 +55,4 @@ proxy_K1_print_return:
jsr print_return
jmp map_KERNAL_1
#endif
@@ -2,7 +2,7 @@
// #LAYOUT# * * #IGNORE
//
// ROM routine call redirect for tape loading
// ROM routine call redirect for tape routines
//
@@ -37,3 +37,14 @@ load_tape_auto:
jmp map_NORMAL
#endif
#if CONFIG_TAPE_HEAD_ALIGN
tape_head_align:
jsr map_KERNAL_1
jsr_ind VK1__tape_head_align
jmp map_NORMAL
#endif
+1 -1
View File
@@ -68,7 +68,7 @@ screen_scroll_up_delay_done: // entry point for cursor move control codes
sta SAL+1
sta EAL+1
lda #>$D800
lda #>COLOR_RAM
sta PNT+1
sta USER+1
@@ -50,7 +50,7 @@ screen_calculate_USER:
sec
sbc HIBASE
clc
adc #>$d800
adc #>COLOR_RAM
sta USER+1
rts
+1
View File
@@ -45,6 +45,7 @@ load_tape_normal:
// Start playing
jsr tape_common_prepare_cia
jsr tape_ask_play
jsr tape_prepare_reading
// FALLTROUGH
+1
View File
@@ -32,6 +32,7 @@ load_tape_auto:
// Start playing
jsr tape_common_prepare_cia
jsr tape_ask_play
jsr tape_prepare_reading
// FALLTROUGH
+9
View File
@@ -104,6 +104,15 @@ tape_wait_first_pulse:
tape_wait_play_done:
rts
//
// Prepare screen / tape motor for reading
//
tape_prepare_reading:
#if CONFIG_MB_MEGA_65
// Display confirmation
+109
View File
@@ -0,0 +1,109 @@
// #LAYOUT# STD * #TAKE
// #LAYOUT# M65 KERNAL_1 #TAKE
// #LAYOUT# * * #IGNORE
//
// Tape (normal) helper routine - reading speed calibration
//
// Needs pulse length in .A
//
#if CONFIG_TAPE_HEAD_ALIGN
tape_head_align:
#if (ROM_LAYOUT_M65 && SEGMENT_KERNAL_0)
jsr map_KERNAL_1
jsr_ind VK1__tape_head_align
jmp map_NORMAL
#else
// Start by asking for tape playback
// jsr tape_ask_play
// Disable interrupts
sei
// Set IO to default values
jsr IOINIT
jsr cint_legacy
// Clear color data ($0800)
ldy #$00
!:
lda #($10 + $06) // XXX synchronize colors with setup_vicii
sta $0800, y
sta $0900, y
sta $0A00, y
sta $0B00, y
iny
bne !-
// Clear bitmap data ($2000)
lda #$20
sta SAL+1
tya // put 0 to .A
sta SAL+0
!:
sta (SAL), y
iny
bne !-
inc SAL+1
ldx SAL+1
cpx #$40
bne !-
// Set graphics mode
lda #$28 // graphic memory start at $2000, color at $0800
sta VIC_YMCSB
lda #$3B // set bit 5 to enable graphic mode
sta VIC_SCROLY
// Set tape timing
// XXX
tape_head_align_loop_1:
// XXX waste pulse
tape_head_align_loop_2:
// XXX get pulse
// XXX put pulse
// XXX check time; if not enough passed - next iteration tape_head_align_loop2
// XXX check for STOP key; if pressed, quit
// XXX scroll
jmp tape_head_align_loop_1
tape_head_align_quit:
// Clear screen, restore old display settings
jsr cint_legacy
// XXX restore COLOR, VIC_EXTCOL, VIC_BGCOL0, CIA2_PRA
cli
rts // XXX perform new after quit
#endif // ROM layout
#endif // CONFIG_TAPE_HEAD_ALIGN