started work on integrated head align tool
This commit is contained in:
1 parent
a87d6bd065
commit
e06046e82e
20 files changed
+187
-30
No files matched your search
@@ -54,9 +54,9 @@
|
|||||||
// #define CONFIG_IEC_BURST_CIA2 // please keep disabled for now
|
// #define CONFIG_IEC_BURST_CIA2 // please keep disabled for now
|
||||||
// #define CONFIG_IEC_BURST_SOFT // 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_TURBO
|
||||||
#define CONFIG_TAPE_AUTODETECT
|
// #define CONFIG_TAPE_AUTODETECT
|
||||||
// #define CONFIG_TAPE_NO_KEY_SENSE
|
// #define CONFIG_TAPE_NO_KEY_SENSE
|
||||||
// #define CONFIG_TAPE_NO_MOTOR_CONTROL
|
// #define CONFIG_TAPE_NO_MOTOR_CONTROL
|
||||||
// #define CONFIG_TAPE_NO_ERROR_CORRECTION
|
// #define CONFIG_TAPE_NO_ERROR_CORRECTION
|
||||||
@@ -124,6 +124,7 @@
|
|||||||
#define CONFIG_PANIC_SCREEN
|
#define CONFIG_PANIC_SCREEN
|
||||||
#define CONFIG_DOS_WEDGE
|
#define CONFIG_DOS_WEDGE
|
||||||
#define CONFIG_TAPE_WEDGE
|
#define CONFIG_TAPE_WEDGE
|
||||||
|
#define CONFIG_TAPE_HEAD_ALIGN // XXX work in progress
|
||||||
#define CONFIG_BCD_SAFE_INTERRUPTS
|
#define CONFIG_BCD_SAFE_INTERRUPTS
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -117,6 +117,7 @@
|
|||||||
// #define CONFIG_PANIC_SCREEN
|
// #define CONFIG_PANIC_SCREEN
|
||||||
// #define CONFIG_DOS_WEDGE
|
// #define CONFIG_DOS_WEDGE
|
||||||
// #define CONFIG_TAPE_WEDGE
|
// #define CONFIG_TAPE_WEDGE
|
||||||
|
// #define CONFIG_TAPE_HEAD_ALIGN // XXX work in progress
|
||||||
#define CONFIG_BCD_SAFE_INTERRUPTS
|
#define CONFIG_BCD_SAFE_INTERRUPTS
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -115,6 +115,7 @@
|
|||||||
#define CONFIG_PANIC_SCREEN
|
#define CONFIG_PANIC_SCREEN
|
||||||
#define CONFIG_DOS_WEDGE
|
#define CONFIG_DOS_WEDGE
|
||||||
#define CONFIG_TAPE_WEDGE
|
#define CONFIG_TAPE_WEDGE
|
||||||
|
// #define CONFIG_TAPE_HEAD_ALIGN // XXX work in progress
|
||||||
#define CONFIG_BCD_SAFE_INTERRUPTS
|
#define CONFIG_BCD_SAFE_INTERRUPTS
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -96,11 +96,11 @@
|
|||||||
|
|
||||||
.const CONFIG_KEYCMD_HELP = @"LIST"
|
.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_F10 = @"REM F10"
|
||||||
.const CONFIG_KEYCMD_F11 = @"REM F11"
|
.const CONFIG_KEYCMD_F11 = @"MONITOR"
|
||||||
.const CONFIG_KEYCMD_F12 = @"REM F12"
|
.const CONFIG_KEYCMD_F12 = @"REM F12"
|
||||||
.const CONFIG_KEYCMD_F13 = @"REM F13"
|
.const CONFIG_KEYCMD_F13 = @"\$5FH"
|
||||||
.const CONFIG_KEYCMD_F14 = @"REM F14"
|
.const CONFIG_KEYCMD_F14 = @"REM F14"
|
||||||
|
|
||||||
|
|
||||||
@@ -115,6 +115,7 @@
|
|||||||
#define CONFIG_PANIC_SCREEN
|
#define CONFIG_PANIC_SCREEN
|
||||||
#define CONFIG_DOS_WEDGE
|
#define CONFIG_DOS_WEDGE
|
||||||
#define CONFIG_TAPE_WEDGE
|
#define CONFIG_TAPE_WEDGE
|
||||||
|
// #define CONFIG_TAPE_HEAD_ALIGN // XXX work in progress
|
||||||
#define CONFIG_BCD_SAFE_INTERRUPTS
|
#define CONFIG_BCD_SAFE_INTERRUPTS
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -115,6 +115,7 @@
|
|||||||
#define CONFIG_PANIC_SCREEN
|
#define CONFIG_PANIC_SCREEN
|
||||||
#define CONFIG_DOS_WEDGE
|
#define CONFIG_DOS_WEDGE
|
||||||
#define CONFIG_TAPE_WEDGE
|
#define CONFIG_TAPE_WEDGE
|
||||||
|
// #define CONFIG_TAPE_HEAD_ALIGN // XXX work in progress
|
||||||
#define CONFIG_BCD_SAFE_INTERRUPTS
|
#define CONFIG_BCD_SAFE_INTERRUPTS
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -115,6 +115,7 @@
|
|||||||
#define CONFIG_PANIC_SCREEN
|
#define CONFIG_PANIC_SCREEN
|
||||||
#define CONFIG_DOS_WEDGE
|
#define CONFIG_DOS_WEDGE
|
||||||
#define CONFIG_TAPE_WEDGE
|
#define CONFIG_TAPE_WEDGE
|
||||||
|
// #define CONFIG_TAPE_HEAD_ALIGN // XXX work in progress
|
||||||
#define CONFIG_BCD_SAFE_INTERRUPTS
|
#define CONFIG_BCD_SAFE_INTERRUPTS
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -298,6 +298,9 @@
|
|||||||
#if CONFIG_TAPE_WEDGE && !CONFIG_TAPE_TURBO
|
#if CONFIG_TAPE_WEDGE && !CONFIG_TAPE_TURBO
|
||||||
.error "CONFIG_TAPE_WEDGE requires CONFIG_TAPE_TURBO"
|
.error "CONFIG_TAPE_WEDGE requires CONFIG_TAPE_TURBO"
|
||||||
#endif
|
#endif
|
||||||
|
#if !CONFIG_TAPE_WEDGE && CONFIG_TAPE_HEAD_ALIGN
|
||||||
|
.error "CONFIG_TAPE_HEAD_ALIGN requires CONFIG_TAPE_WEDGE"
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -125,6 +125,10 @@
|
|||||||
.label SID_RANDOM = $D41B
|
.label SID_RANDOM = $D41B
|
||||||
.label SID_ENV3 = $D41C
|
.label SID_ENV3 = $D41C
|
||||||
|
|
||||||
|
// Color COLOR_RAM
|
||||||
|
|
||||||
|
.label COLOR_RAM = $D800
|
||||||
|
|
||||||
// CIA #1 registers
|
// CIA #1 registers
|
||||||
|
|
||||||
.label __CIA1_BASE = $DC00 // base address of the chip
|
.label __CIA1_BASE = $DC00 // base address of the chip
|
||||||
|
|||||||
@@ -50,3 +50,7 @@
|
|||||||
#if CONFIG_SHOW_PAL_NTSC
|
#if CONFIG_SHOW_PAL_NTSC
|
||||||
.label print_pal_ntsc = KERNAL().print_pal_ntsc
|
.label print_pal_ntsc = KERNAL().print_pal_ntsc
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#if CONFIG_TAPE_HEAD_ALIGN
|
||||||
|
.label tape_head_align = KERNAL().tape_head_align
|
||||||
|
#endif
|
||||||
@@ -22,25 +22,9 @@ cmd_load:
|
|||||||
|
|
||||||
// Check for the file name
|
// Check for the file name
|
||||||
jsr basic_end_of_statement_check
|
jsr basic_end_of_statement_check
|
||||||
bcc !+
|
bcc cmd_load_fetch_filename
|
||||||
|
|
||||||
#if CONFIG_TAPE_NORMAL || CONFIG_TAPE_TURBO
|
// Try to load the first file from disk
|
||||||
|
|
||||||
// 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
|
|
||||||
|
|
||||||
lda #$01 // name length
|
lda #$01 // name length
|
||||||
ldx #<cmd_load_default_filename
|
ldx #<cmd_load_default_filename
|
||||||
@@ -52,9 +36,8 @@ cmd_load_default_filename:
|
|||||||
|
|
||||||
.text "*"
|
.text "*"
|
||||||
|
|
||||||
#endif
|
cmd_load_fetch_filename:
|
||||||
|
|
||||||
!:
|
|
||||||
jsr basic_fetch_and_consume_character
|
jsr basic_fetch_and_consume_character
|
||||||
cmp #$22
|
cmp #$22
|
||||||
beq !+
|
beq !+
|
||||||
|
|||||||
+22
-1
@@ -17,8 +17,20 @@ wedge_tape:
|
|||||||
bne_16 do_SYNTAX_error
|
bne_16 do_SYNTAX_error
|
||||||
|
|
||||||
lda BUF+1
|
lda BUF+1
|
||||||
|
|
||||||
cmp #$4C // 'L'
|
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'
|
// Execute 'arrow + L'
|
||||||
|
|
||||||
@@ -34,5 +46,14 @@ wedge_tape:
|
|||||||
|
|
||||||
jmp cmd_load_got_secondaryaddress
|
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
|
#endif // CONFIG_TAPE_WEDGE
|
||||||
@@ -17,6 +17,7 @@
|
|||||||
.label VK1__load_tape_normal = $4000 + 2 * 3
|
.label VK1__load_tape_normal = $4000 + 2 * 3
|
||||||
.label VK1__load_tape_turbo = $4000 + 2 * 4
|
.label VK1__load_tape_turbo = $4000 + 2 * 4
|
||||||
.label VK1__load_tape_auto = $4000 + 2 * 5
|
.label VK1__load_tape_auto = $4000 + 2 * 5
|
||||||
|
.label VK1__tape_head_align = $4000 + 2 * 6
|
||||||
|
|
||||||
#else
|
#else
|
||||||
|
|
||||||
@@ -44,5 +45,10 @@
|
|||||||
.word $0000
|
.word $0000
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#if CONFIG_TAPE_HEAD_ALIGN
|
||||||
|
.word tape_head_align
|
||||||
|
#else
|
||||||
|
.word $0000
|
||||||
|
#endif
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
@@ -55,5 +55,4 @@ proxy_K1_print_return:
|
|||||||
jsr print_return
|
jsr print_return
|
||||||
jmp map_KERNAL_1
|
jmp map_KERNAL_1
|
||||||
|
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
+12
-1
@@ -2,7 +2,7 @@
|
|||||||
// #LAYOUT# * * #IGNORE
|
// #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
|
jmp map_NORMAL
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
||||||
|
#if CONFIG_TAPE_HEAD_ALIGN
|
||||||
|
|
||||||
|
tape_head_align:
|
||||||
|
|
||||||
|
jsr map_KERNAL_1
|
||||||
|
jsr_ind VK1__tape_head_align
|
||||||
|
jmp map_NORMAL
|
||||||
|
|
||||||
|
#endif
|
||||||
@@ -68,7 +68,7 @@ screen_scroll_up_delay_done: // entry point for cursor move control codes
|
|||||||
sta SAL+1
|
sta SAL+1
|
||||||
sta EAL+1
|
sta EAL+1
|
||||||
|
|
||||||
lda #>$D800
|
lda #>COLOR_RAM
|
||||||
sta PNT+1
|
sta PNT+1
|
||||||
sta USER+1
|
sta USER+1
|
||||||
|
|
||||||
|
|||||||
@@ -50,7 +50,7 @@ screen_calculate_USER:
|
|||||||
sec
|
sec
|
||||||
sbc HIBASE
|
sbc HIBASE
|
||||||
clc
|
clc
|
||||||
adc #>$d800
|
adc #>COLOR_RAM
|
||||||
sta USER+1
|
sta USER+1
|
||||||
|
|
||||||
rts
|
rts
|
||||||
@@ -45,6 +45,7 @@ load_tape_normal:
|
|||||||
// Start playing
|
// Start playing
|
||||||
jsr tape_common_prepare_cia
|
jsr tape_common_prepare_cia
|
||||||
jsr tape_ask_play
|
jsr tape_ask_play
|
||||||
|
jsr tape_prepare_reading
|
||||||
|
|
||||||
// FALLTROUGH
|
// FALLTROUGH
|
||||||
|
|
||||||
|
|||||||
@@ -32,6 +32,7 @@ load_tape_auto:
|
|||||||
// Start playing
|
// Start playing
|
||||||
jsr tape_common_prepare_cia
|
jsr tape_common_prepare_cia
|
||||||
jsr tape_ask_play
|
jsr tape_ask_play
|
||||||
|
jsr tape_prepare_reading
|
||||||
|
|
||||||
// FALLTROUGH
|
// FALLTROUGH
|
||||||
|
|
||||||
|
|||||||
@@ -104,6 +104,15 @@ tape_wait_first_pulse:
|
|||||||
|
|
||||||
tape_wait_play_done:
|
tape_wait_play_done:
|
||||||
|
|
||||||
|
rts
|
||||||
|
|
||||||
|
|
||||||
|
//
|
||||||
|
// Prepare screen / tape motor for reading
|
||||||
|
//
|
||||||
|
|
||||||
|
tape_prepare_reading:
|
||||||
|
|
||||||
#if CONFIG_MB_MEGA_65
|
#if CONFIG_MB_MEGA_65
|
||||||
|
|
||||||
// Display confirmation
|
// Display confirmation
|
||||||
|
|||||||
@@ -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
|
||||||
Reference in new issue
Block a user