diff --git a/c64/,,config_custom.s b/c64/,,config_custom.s index d98e0103..bb93e633 100644 --- a/c64/,,config_custom.s +++ b/c64/,,config_custom.s @@ -46,10 +46,10 @@ // I/O devices #define CONFIG_IEC -#define CONFIG_IEC_DOLPHINDOS -#define CONFIG_IEC_DOLPHINDOS_FAST -#define CONFIG_IEC_JIFFYDOS -#define CONFIG_IEC_JIFFYDOS_BLANK +//#define CONFIG_IEC_DOLPHINDOS +//#define CONFIG_IEC_DOLPHINDOS_FAST +//#define CONFIG_IEC_JIFFYDOS +//#define CONFIG_IEC_JIFFYDOS_BLANK // #define CONFIG_IEC_BURST_CIA1 // 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 diff --git a/c64/kernal/tape/tape_head_align.s b/c64/kernal/tape/tape_head_align.s index adb750ae..c191977c 100644 --- a/c64/kernal/tape/tape_head_align.s +++ b/c64/kernal/tape/tape_head_align.s @@ -13,14 +13,13 @@ // XXX for Mega65 it can be done more easily, by just disabling the badlines // XXX consider "PRESS PLAY ON TAPE" before start, with option to stop -// XXX add some text explaining what tool it is ('head align chart', or something similar) // XXX make tape wedge (and this tool) available also without tape turbo support // XXX create separate configuration for tape users // XXX block NMIs // XXX fix Mega65 build compilation issues -.label __ha_start = 11 // starting row of the chart +.label __ha_start = 12 // starting row of the chart .label __ha_rows = 10 // number of rows for scrolling // Helper tables @@ -34,7 +33,7 @@ .label __ha_sta_addr = $1202; // 2 bytes, for code generator .label __ha_pulses = $1204; // 64 bytes .label __ha_gfxflag = $1244; // 1 byte -.label __ha_loopcnt = $1245; // 1 byte +.label __ha_storage = $1245; // 1 byte // Generated code location @@ -98,6 +97,10 @@ tape_head_align: cpx #$40 bne !- + // Print help message + + jsr tape_head_align_print_help + // Make sure the row where the chart is being created is not visible lda #(CONFIG_COLOR_TXT * $10 + CONFIG_COLOR_TXT) @@ -225,7 +228,7 @@ tape_head_align_loop_2: ldx #$00 !: - stx __ha_loopcnt + stx __ha_storage lda __ha_pulses, x cmp #$FF @@ -233,7 +236,7 @@ tape_head_align_loop_2: jsr tape_head_align_draw_pulse - ldx __ha_loopcnt + ldx __ha_storage inx cpx #$40 bne !- diff --git a/c64/kernal/tape/tape_head_align_help.s b/c64/kernal/tape/tape_head_align_help.s new file mode 100644 index 00000000..76939d14 --- /dev/null +++ b/c64/kernal/tape/tape_head_align_help.s @@ -0,0 +1,133 @@ +// #LAYOUT# STD * #TAKE +// #LAYOUT# M65 KERNAL_1 #TAKE +// #LAYOUT# * * #IGNORE + +// +// Tape head alignemnt tool - prints out a help message on screen +// + + +#if CONFIG_TAPE_HEAD_ALIGN + + +tape_head_align_print_help: + + // Make screen font visible + + lda CPU_R6510 + pha + and #%11111011 + sta CPU_R6510 + + // Print help message + + ldy #$00 + + // Retrieve address +!: + lda tape_head_align_help_text, y + iny + cmp #$FF + beq tape_head_align_print_end + sta EAL+0 + + lda tape_head_align_help_text, y + iny + sta EAL+1 +!: + // Retrieve and print character + + lda tape_head_align_help_text, y + iny + cmp #$FF + beq !-- + + sty __ha_storage + jsr tape_head_align_print_char + ldy __ha_storage + + bne !- // branch alwats + + +tape_head_align_print_end: + + // Restore normal memory configuration and quit + + pla + sta CPU_R6510 + rts + +tape_head_align_print_string: + + + +tape_head_align_print_char: + + // Calculate start address of character in .A + + sta SAL+0 + lda #$00 + sta SAL+1 + + asl SAL+0 + rol SAL+1 + asl SAL+0 + rol SAL+1 + asl SAL+0 + rol SAL+1 + + clc + lda SAL+1 + adc #$D0 + sta SAL+1 + + // Print out the character + + ldy #$07 +!: + lda (SAL), y + sta (EAL), y + dey + bpl !- + + // Prepare EAL for the next character + + lda EAL+0 + clc + adc #$08 + sta EAL+0 + bne !+ + inc EAL+1 +!: + rts + + +// +// Strings to print +// + +.encoding "screencode_upper" + + +tape_head_align_help_text: + + .word $2000 + (40 * 8) * 1 + 8 * 2 + .text "ADJUST HEAD FOR MINIMUM SIGNAL NOISE" + .byte $FF + + .word $2000 + (40 * 8) * 5 + 8 * 2 + .text "IF THE DECK HAS A PITCH (SPEED) KNOB" + .byte $FF + + .word $2000 + (40 * 8) * 6 + 8 * 6 + .text "USE IT TO PLACE DOTTED LINES" + .byte $FF + + .word $2000 + (40 * 8) * 7 + 8 * 3 + .text "EXACTLY HALF A WAY BETWEEN SIGNALS" + .byte $FF + + .byte $FF + + +#endif