From 67cf2d7b4b77374b44dcdc8cf50c533b2b7e2287 Mon Sep 17 00:00:00 2001 From: Vince Weaver Date: Sat, 17 Feb 2018 00:26:58 -0500 Subject: [PATCH] chiptune: initial playing --- asm_routines/mockingboard_a.s | 219 ++++++++++++++++++++++++++++++ chiptune_player/Makefile | 4 +- chiptune_player/OUT.0 | Bin 0 -> 14336 bytes chiptune_player/chiptune_player.s | 156 +++++++-------------- chiptune_player/mock_player.dsk | Bin 143360 -> 143360 bytes chiptune_player/zp.inc | 2 + 6 files changed, 276 insertions(+), 105 deletions(-) create mode 100644 asm_routines/mockingboard_a.s create mode 100644 chiptune_player/OUT.0 diff --git a/asm_routines/mockingboard_a.s b/asm_routines/mockingboard_a.s new file mode 100644 index 00000000..29423d46 --- /dev/null +++ b/asm_routines/mockingboard_a.s @@ -0,0 +1,219 @@ +; Mockingboad programming: +; + Has two 6522 I/O chips connected to two AY-3-8910 chips +; + Optionally has some speech chips controlled via the outport on the AY +; + Often in slot 4 +; TODO: how to auto-detect? +; References used: +; http://macgui.com/usenet/?group=2&id=8366 +; 6522 Data Sheet +; AY-3-8910 Data Sheet + +;======================== +; Mockingboard card +; Essentially two 6522s hooked to the Apple II bus +; Connected to AY-3-8910 chips +; PA0-PA7 on 6522 connected to DA0-DA7 on AY +; PB0 on 6522 connected to BC1 +; PB1 on 6522 connected to BDIR +; PB2 on 6522 connected to RESET + + +; left speaker +MOCK_6522_ORB1 EQU $C400 ; 6522 #1 port b data +MOCK_6522_ORA1 EQU $C401 ; 6522 #1 port a data +MOCK_6522_DDRB1 EQU $C402 ; 6522 #1 data direction port B +MOCK_6522_DDRA1 EQU $C403 ; 6522 #1 data direction port A + +; right speaker +MOCK_6522_ORB2 EQU $C480 ; 6522 #2 port b data +MOCK_6522_ORA2 EQU $C481 ; 6522 #2 port a data +MOCK_6522_DDRB2 EQU $C482 ; 6522 #2 data direction port B +MOCK_6522_DDRA2 EQU $C483 ; 6522 #2 data direction port A + +; AY-3-8910 commands on port B +; RESET BDIR BC1 +MOCK_AY_RESET EQU $0 ; 0 0 0 +MOCK_AY_INACTIVE EQU $4 ; 1 0 0 +MOCK_AY_READ EQU $5 ; 1 0 1 +MOCK_AY_WRITE EQU $6 ; 1 1 0 +MOCK_AY_LATCH_ADDR EQU $7 ; 1 1 1 + + + ;======================== + ; Mockingboard Init + ;======================== + ; Initialize the 6522s + ; set the data direction for all pins of PortA/PortB to be output + +mockingboard_init: + lda #$ff ; all output (1) + sta MOCK_6522_DDRB1 + sta MOCK_6522_DDRA1 + sta MOCK_6522_DDRB2 + sta MOCK_6522_DDRA2 + rts + + ;====================== + ; Reset Left AY-3-8910 + ;====================== +reset_ay_both: + lda #MOCK_AY_RESET + sta MOCK_6522_ORB1 + lda #MOCK_AY_INACTIVE + sta MOCK_6522_ORB1 + + ;====================== + ; Reset Right AY-3-8910 + ;====================== +;reset_ay_right: + lda #MOCK_AY_RESET + sta MOCK_6522_ORB2 + lda #MOCK_AY_INACTIVE + sta MOCK_6522_ORB2 + rts + + +; Write sequence +; Inactive -> Latch Address -> Inactive -> Write Data -> Inactive + + ;======================= + ; Write Right AY-3-8910 + ;======================= + ; register in X + ; value in MB_VALUE + +write_ay_both: + ; address + stx MOCK_6522_ORA1 ; put address on PA + lda #MOCK_AY_LATCH_ADDR ; latch_address on PB + sta MOCK_6522_ORB1 + lda #MOCK_AY_INACTIVE ; go inactive + sta MOCK_6522_ORB1 + + ; value + lda MB_VALUE + sta MOCK_6522_ORA1 ; put value on PA + lda #MOCK_AY_WRITE ; write on PB + sta MOCK_6522_ORB1 + lda #MOCK_AY_INACTIVE ; go inactive + sta MOCK_6522_ORB1 + + ;======================= + ; Write Left AY-3-8910 + ;======================= + +;write_ay_left: + ; address + stx MOCK_6522_ORA2 ; put address on PA + lda #MOCK_AY_LATCH_ADDR ; latch_address on PB + sta MOCK_6522_ORB2 + lda #MOCK_AY_INACTIVE ; go inactive + sta MOCK_6522_ORB2 + + ; value + lda MB_VALUE + sta MOCK_6522_ORA2 ; put value on PA + lda #MOCK_AY_WRITE ; write on PB + sta MOCK_6522_ORB2 + lda #MOCK_AY_INACTIVE ; go inactive + sta MOCK_6522_ORB2 + + rts + + ;======================================= + ; clear ay -- clear all 14 AY registers + ; should silence the card + ;======================================= +clear_ay_both: + ldx #14 + lda #0 + sta MB_VALUE +clear_ay_left_loop: + jsr write_ay_both + dex + bpl clear_ay_left_loop + rts + + ;======================================= + ; Detect a Mockingboard card + ;======================================= + ; Based on code from the French Touch "Pure Noise" Demo + ; Attempts to time an instruction sequence with a 6522 + ; + ; If found, puts in bMB + ; MB_ADDRL:MB_ADDRH has address of Mockingboard + ; returns X=0 if not found, X=1 if found + +mockingboard_detect: + lda #0 + sta MB_ADDRL + +mb_detect_loop: ; self-modifying + lda #$07 ; we start in slot 7 ($C7) and go down to 0 ($C0) + ora #$C0 ; make it start with C + sta MB_ADDRH + ldy #04 ; $CX04 + ldx #02 ; 2 tries? +mb_check_cycle_loop: + lda (MB_ADDRL),Y ; timer 6522 (Low Order Counter) + ; count down + sta TEMP ; 3 cycles + lda (MB_ADDRL),Y ; + 5 cycles = 8 cycles + ; between the two accesses to the timer + sec + sbc TEMP ; subtract to see if we had 8 cycles + cmp #$f8 ; -8 + bne mb_not_in_this_slot + dex ; decrement, try one more time + bne mb_check_cycle_loop ; loop detection + inx ; Mockingboard found (X=1) +done_mb_detect: + ;stx bMB ; store result to bMB + rts ; return + +mb_not_in_this_slot: + dec mb_detect_loop+1 ; decrement the "slot" (self_modify) + bne mb_detect_loop ; loop down to one + ldx #00 + beq done_mb_detect + + + ;======================================= + ; Detect a Mockingboard card in Slot4 + ;======================================= + ; Based on code from the French Touch "Pure Noise" Demo + ; Attempts to time an instruction sequence with a 6522 + ; + ; MB_ADDRL:MB_ADDRH has address of Mockingboard + ; returns X=0 if not found, X=1 if found + +mockingboard_detect_slot4: + lda #0 + sta MB_ADDRL + +mb4_detect_loop: ; self-modifying + lda #$04 ; we're only looking in Slot 4 + ora #$C0 ; make it start with C + sta MB_ADDRH + ldy #04 ; $CX04 + ldx #02 ; 2 tries? +mb4_check_cycle_loop: + lda (MB_ADDRL),Y ; timer 6522 (Low Order Counter) + ; count down + sta TEMP ; 3 cycles + lda (MB_ADDRL),Y ; + 5 cycles = 8 cycles + ; between the two accesses to the timer + sec + sbc TEMP ; subtract to see if we had 8 cycles + cmp #$f8 ; -8 + bne mb4_not_in_this_slot + dex ; decrement, try one more time + bne mb4_check_cycle_loop ; loop detection + inx ; Mockingboard found (X=1) +done_mb4_detect: + rts ; return + +mb4_not_in_this_slot: + ldx #00 + beq done_mb4_detect + diff --git a/chiptune_player/Makefile b/chiptune_player/Makefile index 8d48cf79..1706572b 100644 --- a/chiptune_player/Makefile +++ b/chiptune_player/Makefile @@ -5,8 +5,10 @@ PNG2GR = ../gr-utils/png2gr all: mock_player.dsk -mock_player.dsk: CHIPTUNE_PLAYER +mock_player.dsk: CHIPTUNE_PLAYER OUT.0 $(DOS33) -y mock_player.dsk BSAVE -a 0x1000 CHIPTUNE_PLAYER + $(DOS33) -y mock_player.dsk BSAVE -a 0x4000 OUT.0 + CHIPTUNE_PLAYER: chiptune_player.o ld65 -o CHIPTUNE_PLAYER chiptune_player.o -C ../linker_scripts/apple2_1000.inc diff --git a/chiptune_player/OUT.0 b/chiptune_player/OUT.0 new file mode 100644 index 0000000000000000000000000000000000000000..3a887fd59837464e03ea139e0f0b43bfaa2fb0e6 GIT binary patch literal 14336 zcmeI0y>8P`6vtzyaXw0079^HRl*XbHbES5u8mU$?5DzF)S*bE~W?;<317u5HA?gdT zv&Ca(cmQSw7PvR@FSUYgJ3*-w1c8zq2l=vbsqeJgolZwd zj&ZXY$8j^Zaj74VM&t2VNsifcnq}EEvvH}v5v!Lk)RId*{eVU5e^4q720>|XHW-{~ zapiHl9jlWa51Y;5Fm4WAc{Unl>SSmA>9pU^rhQl5ySeFUne=)SEw0?PU+M4Kuk?5A zSNgm5EBz~Ch514)xztBumGgyKa;YaDDCq##C$Op=Ll1sm^QVF#LVHjv}<>e?UYYEEbK#MDPttb6m>q&o^&y~x3uH3br^mnZ% z{afAZw3R9W)$zH>(dU>bObmPa{?k=@r36&RU6befqi#1%k6xvR7Z*u#_%b;-KX0`T zUbK?SkC##|?$F_rDw`Jg_1o*jMX0-fa&mgQzkfQLs5P5S){Q^D@4S99`uuhF<=f9^ z?><~Dan<^HKJtU)hlA+BrJjA*@(DZh+L(AbchM*P$hp}1!{25{58_XLxXq3p#Q(wZ zmi|jcU+V2gKl|&qpmkzUu0+*pZT^;}ziD+naMijx5BWjz!$I_*sb?Rye5PH;YraYG z%-h6G+W)HaH~Z%N7ya^IKKJmPQ?TbB-+!^6e~W(o`~Lj|`~-?Sfvvy1O691r^E9l0 ztClAZzYBtY(n~x0kb3e-J6z)b8qdBY+WJEe(kJn7iP(t)@xu<6h@ChPKkRUc*ogzt zOMG7Nb)?tv@$tG*m6)%29r;gLR;sUp^Ylxg#8QzTpa-$fxgt_;v*T~GqX+RPKipxvE@e(K1zL+?A8`YjviD_hG~BIDD`g@Uy!}M-QArh+uI)f9Q@~?xYt3W zURQs$TCEzX->Iur?g!}MHpFk!;v2PSD^#yP>&88Gmu=Lmk;d&ty#}sYmpo>ESqBc9 z^@(F2wtUiVa-G-Y~&wssFFzZT%Pb&41B3 v_p?pCfBF3{p4ksp_theme -; sta INH - -; lda (INL),Y ; read in frame delay -; sta MB_FRAME_DIFF -; inc INL ; FIXME: should check if we oflowed + lda #$40 + sta INH + lda #$00 + sta INL + lda #$0 + sta MB_CHUNK ;========================= ; Setup Interrupt Handler @@ -105,7 +101,7 @@ mockingboard_found: ; Enable 6502 interrupts ;============================ ; -; cli ; clear interrupt mask + cli ; clear interrupt mask ;============================ @@ -147,8 +143,7 @@ done_play: sei ; disable interrupts - jsr clear_ay_left - jsr clear_ay_right + jsr clear_ay_both lda #0 sta CH @@ -179,100 +174,53 @@ interrupt_handler: pha ; save A ; Should we save X and Y too? + inc $0404 ; debug + bit $C404 ; can clear 6522 interrupt by reading T1C-L - inc $0401 ; DEBUG: increment text char + ldy MB_FRAME_DIFF - dec MB_FRAME_DIFF - bne done_interrupt + ldx #0 +mb_write_loop: + lda (INL),y + cpx #13 + bne mb_not_13 + cmp #$ff + beq skip_r13 - - - ldy #0 -bottom_regs: - lda (INL),Y ; load low reg bitmask - sta MASK - ldx #$ff ; init to -1 -bottom_regs_loop: - inx ; increment X - cpx #$8 ; if we reach 8, done - beq top_regs ; move on to top - - ror MASK - bcc bottom_regs_loop ; if bit not set in mask, skip reg - - stx XX ; save X - - iny ; get next output value - lda (INL),Y ; read in value - - sty YY ; save Y - - tax ; value in X - ldy XX ; register# in Y - - ; reg in Y, value in X - jsr write_ay_left ; assume 3 channel (not six) - jsr write_ay_right ; so write same to both left/write - - ldx XX ; restore X - ldy YY ; restore Y - - jmp bottom_regs_loop ; loop - -top_regs: - iny ; point to next value - lda (INL),Y ; load top reg bitmask - sta MASK - ldx #$7 ; load X as 7 (we increment first) -top_regs_loop: - inx ; increment - cpx #16 - beq done_with_masks ; exit if done - - ror MASK - bcc top_regs_loop ; loop if not set - - stx XX ; save X value - - iny ; point to value - lda (INL),Y ; read in output value - - sty YY ; save Y value - - tax ; value in X - ldy XX ; register in Y - - ; reg in Y, value in X - jsr write_ay_left ; assume 3 channel (not six) - jsr write_ay_right ; so write same to both left/write - - ldx XX - ldy YY - - jmp top_regs_loop - -done_with_masks: -new_frame_diff: - iny - lda (INL),Y ; read in frame delay - cmp #$ff ; see if end - bne not_done ; if so, done - inc DONE_PLAYING ; set done playing flag - jmp done_interrupt -not_done: - sta MB_FRAME_DIFF - - iny +mb_not_13: + sta MB_VALUE + ; INLINE? + jsr write_ay_both ; assume 3 channel (not six) + ; so write same to both left/write clc - tya - adc INL - sta INL - lda #0 - adc INH + lda INH + adc #$4 sta INH + inx + cpx #14 + bmi mb_write_loop + +skip_r13: + lda MB_CHUNK + clc + adc #$40 + sta INH + + inc MB_FRAME_DIFF + bne done_interrupt +wraparound: + + inc MB_CHUNK + lda MB_CHUNK + cmp #$4 + bne chunk_good + lda #0 + sta MB_CHUNK +chunk_good: + done_interrupt: pla rti @@ -286,7 +234,7 @@ done_interrupt: ;========= .include "../asm_routines/gr_offsets.s" .include "../asm_routines/text_print.s" -.include "../asm_routines/mockingboard.s" +.include "../asm_routines/mockingboard_a.s" .include "../asm_routines/lzss_decompress.s" .include "../asm_routines/gr_fast_clear.s" .include "../asm_routines/pageflip.s" diff --git a/chiptune_player/mock_player.dsk b/chiptune_player/mock_player.dsk index e833618152de77c09111f4c356c398e2fd2d1763..c5cbe9da2536710e62be3f341bc9e3267f69a649 100644 GIT binary patch literal 143360 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 N+#dLH;BlXU{}2D#y;}eP literal 143360 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 W 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 EKhDh*fdBvi diff --git a/chiptune_player/zp.inc b/chiptune_player/zp.inc index a83a7dd0..a4ae6bf1 100644 --- a/chiptune_player/zp.inc +++ b/chiptune_player/zp.inc @@ -100,6 +100,8 @@ KEY_OFFSET EQU $8D DRAW_BLUE_SKY EQU $8E RANDOM_POINTER EQU $8F FRAME_COUNT EQU $90 +MB_VALUE EQU $91 +MB_CHUNK EQU $92 MB_ADDRL EQU $91 MB_ADDRH EQU $92 DONE_PLAYING EQU $93