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_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
|
||||
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
|
||||
@@ -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
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
@@ -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
@@ -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
|
||||
@@ -55,5 +55,4 @@ proxy_K1_print_return:
|
||||
jsr print_return
|
||||
jmp map_KERNAL_1
|
||||
|
||||
|
||||
#endif
|
||||
+12
-1
@@ -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
|
||||
@@ -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
|
||||
@@ -45,6 +45,7 @@ load_tape_normal:
|
||||
// Start playing
|
||||
jsr tape_common_prepare_cia
|
||||
jsr tape_ask_play
|
||||
jsr tape_prepare_reading
|
||||
|
||||
// FALLTROUGH
|
||||
|
||||
|
||||
@@ -32,6 +32,7 @@ load_tape_auto:
|
||||
// Start playing
|
||||
jsr tape_common_prepare_cia
|
||||
jsr tape_ask_play
|
||||
jsr tape_prepare_reading
|
||||
|
||||
// FALLTROUGH
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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