From 8225da796b063ec5608df760e0750bf9e1c1f3af Mon Sep 17 00:00:00 2001 From: Vince Weaver Date: Wed, 13 Jun 2018 23:11:51 -0400 Subject: [PATCH] Update with reproducer --- chiptune_debug/chiptune_debug.dsk | Bin 143360 -> 143360 bytes chiptune_debug/chiptune_tiny.s | 148 +++--------------------------- 2 files changed, 13 insertions(+), 135 deletions(-) diff --git a/chiptune_debug/chiptune_debug.dsk b/chiptune_debug/chiptune_debug.dsk index b66e81c1f1ad43e5a276b1274b75aa41e892fe88..156ed123de45d0daef86f1cbc6933d7337b873df 100644 GIT binary patch delta 1107 zcmb7?Pe>F|9LL{p=dC-t^P4wgg+`%Hfd|Q~wm*2-pg=If!-^M)4jwv4M0t%4O~ukd zrVtlKiaKG9wN_JeA-8+{UH!P`VCM>CO|a ziFopOJefG0OvHUHYN?}&q);KgSK>h^DQX`1r=Y0Q|5udP!HGpYPW=zDOkbH|(l6c4 zeuIju1v%7XfoEOwc$wgeRG}||x4`!p>>_zQEQXK7w7+j(hqH-mLrwKq6{;{U@*~C* zT-c^A1Ig#u%#R=lQdPW@MnX`iWPC#|Z=8(s6l%lN4S$6QWf;X6Du}2eLrvuMc{`Fa zqY;f}G`f-Z1zE{{itQ~&(Y`neXV}@2OL1ty{q7OMHh1oX*8pt`AhHJNTL7^FP&Goz zHwTu)LlE`fvGpue*?Y3^VE}630i^&`WlXipRcNyf6{7Y920MM#WSb0{2I#Wn(s@`> z@4o>3*+;-wwWesOsT$KXMi{UVlNe=TR>mSsX3<{!k`PDT6;ah2P3S*&8~I=m)eb)@ zE~QM-uW*+7-QIGt7+YoMzt|j-7cJAZFsv>&_~s5oN(b_~U(xlXoXA>Y zxpV?nLgHE}b%o!01jRn2!x6}dDtEc24&CZrB}6A)PR-1{o1R>pogDMV$0lC)mo~}W yUk&G>Q;P-Q_}J`ZDO1o51mysEJ2kz5=$DB?0%UG#`uzqbbaS-^+|`;8=zjs!ce5D) delta 14098 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 QSabGdBI0xg3lPEo12e8$aR2}S diff --git a/chiptune_debug/chiptune_tiny.s b/chiptune_debug/chiptune_tiny.s index 85a34d78..398b02a6 100644 --- a/chiptune_debug/chiptune_tiny.s +++ b/chiptune_debug/chiptune_tiny.s @@ -6,7 +6,7 @@ MB_VALUE = $91 -; left speaker +; left channel MOCK_6522_1_ORB = $C400 ; 6522 #1 port b data MOCK_6522_1_ORA = $C401 ; 6522 #1 port a data MOCK_6522_1_DDRB = $C402 ; 6522 #1 data direction port B @@ -24,7 +24,7 @@ MOCK_6522_1_IFR = $C40D ; 6522 #1 Interrupt Flag Register MOCK_6522_1_IER = $C40E ; 6522 #1 Interrupt Enable Register MOCK_6522_1_ORAN = $C40F ; 6522 #1 port a data, no handshake -; right speaker +; right channel MOCK_6522_2_ORB = $C480 ; 6522 #2 port b data MOCK_6522_2_ORA = $C481 ; 6522 #2 port a data MOCK_6522_2_DDRB = $C482 ; 6522 #2 data direction port B @@ -207,11 +207,6 @@ reset_ay_right: write_ay_both: write_ay_address: - - ; value - lda #$ff - sta MOCK_6522_1_DDRA - ; address stx MOCK_6522_1_ORA ; put address on PA1 ; 3 stx MOCK_6522_2_ORA ; put address on PA2 ; 3 @@ -224,10 +219,6 @@ write_ay_address: write_ay_value: - ; value - lda #$ff - sta MOCK_6522_1_DDRA - lda MB_VALUE ; 3 sta MOCK_6522_1_ORA ; put value on PA1 ; 3 sta MOCK_6522_2_ORA ; put value on PA2 ; 3 @@ -243,38 +234,6 @@ write_ay_value: ; 53 -read_ay_both: - - ; value - lda #$ff - sta MOCK_6522_1_DDRA - - ; address - stx MOCK_6522_1_ORA ; put address on PA1 ; 3 - lda #MOCK_AY_LATCH_ADDR ; latch_address on PB1 ; 2 - sta MOCK_6522_1_ORB ; latch_address on PB1 ; 3 - lda #MOCK_AY_INACTIVE ; go inactive ; 2 - sta MOCK_6522_1_ORB ; 3 - -read_ay_value: - ; value - - lda #$0 - sta MOCK_6522_1_DDRA - - lda #MOCK_AY_READ ; ; 2 - sta MOCK_6522_1_ORB ; read on PB1 ; 3 - - ldy MOCK_6522_1_ORA ; read value - - lda #MOCK_AY_INACTIVE ; go inactive ; 2 - sta MOCK_6522_1_ORB ; 3 - - tya - - rts ; 6 - - ;======================================= ; clear ay -- clear all 14 AY registers @@ -304,69 +263,6 @@ interrupt_handler: pha ; save A ; 3 ; Should we save X and Y too? -.if 0 - lda MOCK_6522_1_IFR - tay - and #$f - clc - adc #'0'+$80 - sta $401 - tya - lsr - lsr - lsr - lsr - clc - adc #'0'+$80 - sta $400 - - lda MOCK_6522_1_IER - tay - and #$f - clc - adc #'0'+$80 - sta $403 - tya - lsr - lsr - lsr - lsr - clc - adc #'0'+$80 - sta $402 - - lda MOCK_6522_2_IFR - tay - and #$f - clc - adc #'0'+$80 - sta $407 - tya - lsr - lsr - lsr - lsr - clc - adc #'0'+$80 - sta $406 - - lda MOCK_6522_2_IER - tay - and #$f - clc - adc #'0'+$80 - sta $409 - tya - lsr - lsr - lsr - lsr - clc - adc #'0'+$80 - sta $408 -.endif - - bit MOCK_6522_1_T1C_L ; clear 6522 interrupt by ; reading T1C-L ; 4 @@ -388,30 +284,19 @@ mb_write_frame: ; 4: C CHANNEL FINE lda c_fine,Y sta MB_VALUE - sta expected+4 - ldx #4 - jsr write_ay_both -; jsr write_ay_value - - ; read out all of AY registers and see if match expected - ldx #0 -loop: - jsr read_ay_both - cmp expected,X - beq good - - brk - -good: - inx - cpx #14 - bne loop + jsr write_ay_value increment_offset: inc MB_CHUNK_OFFSET ; increment offset lda MB_CHUNK_OFFSET - and #$1 + + and #$1 ; reduce number played + ; $f = 16 + ; $3 = 4 + ; $1 = 2 + ; $0 = 1 + sta MB_CHUNK_OFFSET done_interrupt: @@ -420,18 +305,11 @@ done_interrupt: - -expected: ; 0 1 2 3 4 5 6 7 8 9 10 11 12 13 - .byte $00,$00,$00,$00, $00,$00,$00,$38, $00,$00,$0c,$00, $00,$00 - - - -; 4: C fine +; 4: C fine frequency c_fine: -;.byte $51,$3c,$32,$50, $3d,$32,$50,$3c, $33,$50,$3c,$32,$51,$3c,$32,$50 - -.byte $50,$32,$32,$50, $3d,$32,$50,$3c, $33,$50,$3c,$32,$51,$3c,$32,$50 +.byte $51,$3c,$32,$50, $3d,$32,$50,$3c, $33,$50,$3c,$32,$51,$3c,$32,$50 +