From 8c2c0f45b598ee1778eabffb54d9b599d20833cf Mon Sep 17 00:00:00 2001 From: Dean Netherton Date: Sat, 9 May 2020 22:57:26 +1000 Subject: [PATCH 1/7] sn76489: refactor to support full note range No need to full mapping table Range can be consistent with all sound drivers --- Source/HBIOS/audio.inc | 6 +- Source/HBIOS/sn76489.asm | 400 ++++++++++++--------------------------- 2 files changed, 124 insertions(+), 282 deletions(-) diff --git a/Source/HBIOS/audio.inc b/Source/HBIOS/audio.inc index 2b69513b..09469326 100644 --- a/Source/HBIOS/audio.inc +++ b/Source/HBIOS/audio.inc @@ -6,10 +6,11 @@ #DEFINE AUDTRACE_E PUSH AF \ LD A, E \ CALL PRTHEXBYTE \ POP AF #DEFINE AUDTRACE_L PUSH AF \ LD A, L \ CALL PRTHEXBYTE \ POP AF #DEFINE AUDTRACE_HL CALL PRTHEXWORDHL -#DEFINE AUDTRACE_DE PUSH DE \ PUSH DE \ POP HL \ CALL PRTHEXWORDHL \ POP DE +#DEFINE AUDTRACE_BC PUSH HL \ PUSH BC \ POP HL \ CALL PRTHEXWORDHL \ POP HL +#DEFINE AUDTRACE_DE PUSH HL \ PUSH DE \ POP HL \ CALL PRTHEXWORDHL \ POP HL #DEFINE AUDTRACE_IY PUSH HL \ PUSH IY \ POP HL \ CALL PRTHEXWORDHL \ POP HL -#DEFINE AUDDEBUG(S) CALL PRTSTRD \ .TEXT S \ .TEXT "$" ; $$$$$$ PRINT STRING S TO CONSOLE - PRTD("HELLO") - NO TRAILING $ REQUIRED +#DEFINE AUDDEBUG(S) push hl \ CALL PRTSTRD \ .TEXT S \ .TEXT "$" \ pop hl ; $$$$$$ PRINT STRING S TO CONSOLE - PRTD("HELLO") - NO TRAILING $ REQUIRED #DEFINE AUDTRACE_CR AUDDEBUG("\r\n$") @@ -20,6 +21,7 @@ #DEFINE AUDTRACE_D #DEFINE AUDTRACE_E #DEFINE AUDTRACE_L +#DEFINE AUDTRACE_BC #DEFINE AUDTRACE_HL #DEFINE AUDTRACE_DE #DEFINE AUDTRACE_IY diff --git a/Source/HBIOS/sn76489.asm b/Source/HBIOS/sn76489.asm index f8181983..8f90e360 100644 --- a/Source/HBIOS/sn76489.asm +++ b/Source/HBIOS/sn76489.asm @@ -26,19 +26,6 @@ SN7CLKDIVIDER .EQU 4 SN7CLK .EQU CPUOSC / SN7CLKDIVIDER SN7RATIO .EQU SN7CLK * 100 / 32 - -SN7_FIRST_NOTE .EQU 5827 ; A1# -SN7_LAST_NOTE .EQU 209300 ; C7 - -A1S .EQU SN7RATIO / SN7_FIRST_NOTE -C7 .EQU SN7RATIO / SN7_LAST_NOTE - - .ECHO "SN76489: range of A1# (period: " - .ECHO A1S - .ECHO ") to C7 (period: " - .ECHO C7 - .ECHO ")\n" - #INCLUDE "audio.inc" SN76489_INIT: @@ -112,22 +99,19 @@ SN7_VOLUME: XOR A ; SIGNAL SUCCESS RET - - SN7_NOTE: AUDTRACE(SNT_NOTE) AUDTRACE_HL AUDTRACE_CR - LD H,0 - ADD HL, HL ; SHIFT RIGHT (MULT 2) -INDEX INTO SN7NOTETBL TABLE OF WORDS - ; TEST IF HL IS LARGER THAN SN7NOTETBL SIZE - OR A ; CLEAR CARRY FLAG - LD DE, SIZ_SN7NOTETBL - SBC HL, DE - JR NC, SN7_NOTE1 ; INCOMING HL DOES NOT MAP INTO SN7NOTETBL + LD B, H + LD C, L + LD DE, 48 - ADD HL, DE ; RESTORE HL + CALL _DIV16 + ; BC IS OCTAVE COUNT + ; HL is NOTE WITIN ACTAVE + ADD HL, HL LD DE, SN7NOTETBL ADD HL, DE @@ -136,10 +120,57 @@ SN7_NOTE: LD H, (HL) LD L, A - JR SN7_PERIOD ; APPLY PERIOD - + INC C SN7_NOTE1: - OR $FF ; NOT IMPLEMENTED YET + DEC C + JR Z, SN7_NOTE2 + SRL H + RR L + JR SN7_NOTE1 + +SN7_NOTE2: + LD A, L + OR H + JR NZ, SN7_PERIOD + + LD H, $FF + LD L, $FF + JR SN7_PERIOD + +; Divide 16-bit values (with 16-bit result) +; In: Divide BC by divider DE +; Out: BC = result, HL = rest +; +_DIV16: + LD HL, 0 + LD A, B + LD B, 8 +DIV16_LOOP1: + RLA + ADC HL, HL + SBC HL, DE + JR NC, DIV16_NOADD1 + ADD HL, DE +DIV16_NOADD1: + DJNZ DIV16_LOOP1 + RLA + CPL + LD B, A + LD A, C + LD C, B + LD B, 8 +DIV16_LOOP2: + RLA + ADC HL, HL + SBC HL, DE + JR NC, DIV16_NOADD2 + ADD HL, DE +DIV16_NOADD2: + DJNZ DIV16_LOOP2 + RLA + CPL + LD B, C + LD C, A RET SN7_PERIOD: @@ -147,11 +178,17 @@ SN7_PERIOD: AUDTRACE_HL AUDTRACE_CR - LD A, H - CP $04 - JP NC, SN7_QUERY_PERIOD1 ; RETURN NZ IF NUMBER TOO LARGE + ; LD A, H ; IF ZERO - ERROR + ; OR L + ; JR Z, SN7_QUERY_PERIOD1 + + LD (SN7_PENDING_PERIOD), HL ;ASSUME SUCCESS + + OR A ; IF >= 401 ERROR + LD DE, $401 + SBC HL, DE + JR NC, SN7_QUERY_PERIOD1 - LD (SN7_PENDING_PERIOD), HL XOR A ; SIGNAL SUCCESS RET @@ -361,257 +398,60 @@ SNT_PLAY .DB "\r\nSN7_PLAY CH: $" SNT_REGWR .DB "\r\nOUT SN76489, $" #ENDIF -; THE FREQUENCY BY QUARTER TONE STARTING AT A1# +; THE FREQUENCY BY QUARTER TONE STARTING AT A0# +; OCATVE 0 - not suported by this driver +; FIRST PLAYABLE NOTE WILL BE $2E - 2 quater tones below a1# +; A1# is $30 + SN7NOTETBL: - .DW A1S ; 5827 - .DW SN7RATIO / 5912 - .DW SN7RATIO / 5998 - .DW SN7RATIO / 6085 - .DW SN7RATIO / 6174 - .DW SN7RATIO / 6264 - .DW SN7RATIO / 6355 - .DW SN7RATIO / 6447 - .DW SN7RATIO / 6541 - .DW SN7RATIO / 6636 - .DW SN7RATIO / 6733 - .DW SN7RATIO / 6831 - .DW SN7RATIO / 6930 - .DW SN7RATIO / 7031 - .DW SN7RATIO / 7133 - .DW SN7RATIO / 7237 - .DW SN7RATIO / 7342 - .DW SN7RATIO / 7449 - .DW SN7RATIO / 7557 - .DW SN7RATIO / 7667 - .DW SN7RATIO / 7778 - .DW SN7RATIO / 7891 - .DW SN7RATIO / 8006 - .DW SN7RATIO / 8122 - .DW SN7RATIO / 8241 - .DW SN7RATIO / 8361 - .DW SN7RATIO / 8482 - .DW SN7RATIO / 8606 - .DW SN7RATIO / 8731 - .DW SN7RATIO / 8858 - .DW SN7RATIO / 8987 - .DW SN7RATIO / 9118 - .DW SN7RATIO / 9250 - .DW SN7RATIO / 9385 - .DW SN7RATIO / 9521 - .DW SN7RATIO / 9660 - .DW SN7RATIO / 9800 - .DW SN7RATIO / 9943 - .DW SN7RATIO / 10087 - .DW SN7RATIO / 10234 - .DW SN7RATIO / 10383 - .DW SN7RATIO / 10534 - .DW SN7RATIO / 10687 - .DW SN7RATIO / 10843 - .DW SN7RATIO / 11000 - .DW SN7RATIO / 11160 - .DW SN7RATIO / 11322 - .DW SN7RATIO / 11487 - .DW SN7RATIO / 11654 - .DW SN7RATIO / 11824 - .DW SN7RATIO / 11995 - .DW SN7RATIO / 12170 - .DW SN7RATIO / 12347 - .DW SN7RATIO / 12527 - .DW SN7RATIO / 12709 - .DW SN7RATIO / 12894 - .DW SN7RATIO / 13081 - .DW SN7RATIO / 13271 - .DW SN7RATIO / 13464 - .DW SN7RATIO / 13660 - .DW SN7RATIO / 13859 - .DW SN7RATIO / 14061 - .DW SN7RATIO / 14265 - .DW SN7RATIO / 14473 - .DW SN7RATIO / 14683 - .DW SN7RATIO / 14897 - .DW SN7RATIO / 15113 - .DW SN7RATIO / 15333 - .DW SN7RATIO / 15556 - .DW SN7RATIO / 15782 - .DW SN7RATIO / 16012 - .DW SN7RATIO / 16245 - .DW SN7RATIO / 16481 - .DW SN7RATIO / 16721 - .DW SN7RATIO / 16964 - .DW SN7RATIO / 17211 - .DW SN7RATIO / 17461 - .DW SN7RATIO / 17715 - .DW SN7RATIO / 17973 - .DW SN7RATIO / 18234 - .DW SN7RATIO / 18500 - .DW SN7RATIO / 18769 - .DW SN7RATIO / 19042 - .DW SN7RATIO / 19319 - .DW SN7RATIO / 19600 - .DW SN7RATIO / 19885 - .DW SN7RATIO / 20174 - .DW SN7RATIO / 20468 - .DW SN7RATIO / 20765 - .DW SN7RATIO / 21067 - .DW SN7RATIO / 21373 - .DW SN7RATIO / 21684 - .DW SN7RATIO / 22000 - .DW SN7RATIO / 22320 - .DW SN7RATIO / 22645 - .DW SN7RATIO / 22974 - .DW SN7RATIO / 23308 - .DW SN7RATIO / 23647 - .DW SN7RATIO / 23991 - .DW SN7RATIO / 24340 - .DW SN7RATIO / 24694 - .DW SN7RATIO / 25053 - .DW SN7RATIO / 25418 - .DW SN7RATIO / 25787 - .DW SN7RATIO / 26163 - .DW SN7RATIO / 26544 - .DW SN7RATIO / 26930 - .DW SN7RATIO / 27321 - .DW SN7RATIO / 27718 - .DW SN7RATIO / 28121 - .DW SN7RATIO / 28530 - .DW SN7RATIO / 28945 - .DW SN7RATIO / 29366 - .DW SN7RATIO / 29793 - .DW SN7RATIO / 30226 - .DW SN7RATIO / 30666 - .DW SN7RATIO / 31113 - .DW SN7RATIO / 31566 - .DW SN7RATIO / 32025 - .DW SN7RATIO / 32490 - .DW SN7RATIO / 32963 - .DW SN7RATIO / 33442 - .DW SN7RATIO / 33929 - .DW SN7RATIO / 34422 - .DW SN7RATIO / 34923 - .DW SN7RATIO / 35431 - .DW SN7RATIO / 35946 - .DW SN7RATIO / 36469 - .DW SN7RATIO / 36999 - .DW SN7RATIO / 37537 - .DW SN7RATIO / 38083 - .DW SN7RATIO / 38637 - .DW SN7RATIO / 39200 - .DW SN7RATIO / 39770 - .DW SN7RATIO / 40349 - .DW SN7RATIO / 40936 - .DW SN7RATIO / 41530 - .DW SN7RATIO / 42134 - .DW SN7RATIO / 42747 - .DW SN7RATIO / 43369 - .DW SN7RATIO / 44000 - .DW SN7RATIO / 44640 - .DW SN7RATIO / 45289 - .DW SN7RATIO / 45948 - .DW SN7RATIO / 46616 - .DW SN7RATIO / 47294 - .DW SN7RATIO / 47982 - .DW SN7RATIO / 48680 - .DW SN7RATIO / 49388 - .DW SN7RATIO / 50106 - .DW SN7RATIO / 50835 - .DW SN7RATIO / 51575 - .DW SN7RATIO / 52325 - .DW SN7RATIO / 53086 - .DW SN7RATIO / 53858 - .DW SN7RATIO / 54642 - .DW SN7RATIO / 55437 - .DW SN7RATIO / 56243 - .DW SN7RATIO / 57061 - .DW SN7RATIO / 57891 - .DW SN7RATIO / 58733 - .DW SN7RATIO / 59587 - .DW SN7RATIO / 60454 - .DW SN7RATIO / 61333 - .DW SN7RATIO / 62225 - .DW SN7RATIO / 63130 - .DW SN7RATIO / 64048 - .DW SN7RATIO / 64980 - .DW SN7RATIO / 65925 - .DW SN7RATIO / 66884 - .DW SN7RATIO / 67857 - .DW SN7RATIO / 68844 - .DW SN7RATIO / 69846 - .DW SN7RATIO / 70862 - .DW SN7RATIO / 71893 - .DW SN7RATIO / 72938 - .DW SN7RATIO / 73999 - .DW SN7RATIO / 75075 - .DW SN7RATIO / 76167 - .DW SN7RATIO / 77275 - .DW SN7RATIO / 78399 - .DW SN7RATIO / 79539 - .DW SN7RATIO / 80696 - .DW SN7RATIO / 81870 - .DW SN7RATIO / 83061 - .DW SN7RATIO / 84269 - .DW SN7RATIO / 85495 - .DW SN7RATIO / 86738 - .DW SN7RATIO / 88000 - .DW SN7RATIO / 89280 - .DW SN7RATIO / 90579 - .DW SN7RATIO / 91896 - .DW SN7RATIO / 93233 - .DW SN7RATIO / 94589 - .DW SN7RATIO / 95965 - .DW SN7RATIO / 97361 - .DW SN7RATIO / 98777 - .DW SN7RATIO / 100214 - .DW SN7RATIO / 101671 - .DW SN7RATIO / 103150 - .DW SN7RATIO / 104650 - .DW SN7RATIO / 106172 - .DW SN7RATIO / 107716 - .DW SN7RATIO / 109283 - .DW SN7RATIO / 110873 - .DW SN7RATIO / 112486 - .DW SN7RATIO / 114122 - .DW SN7RATIO / 115782 - .DW SN7RATIO / 117466 - .DW SN7RATIO / 119175 - .DW SN7RATIO / 120908 - .DW SN7RATIO / 122667 - .DW SN7RATIO / 124451 - .DW SN7RATIO / 126261 - .DW SN7RATIO / 128098 - .DW SN7RATIO / 129961 - .DW SN7RATIO / 131851 - .DW SN7RATIO / 133769 - .DW SN7RATIO / 135715 - .DW SN7RATIO / 137689 - .DW SN7RATIO / 139691 - .DW SN7RATIO / 141723 - .DW SN7RATIO / 143784 - .DW SN7RATIO / 145876 - .DW SN7RATIO / 147998 - .DW SN7RATIO / 150151 - .DW SN7RATIO / 152335 - .DW SN7RATIO / 154550 - .DW SN7RATIO / 156798 - .DW SN7RATIO / 159079 - .DW SN7RATIO / 161393 - .DW SN7RATIO / 163740 - .DW SN7RATIO / 166122 - .DW SN7RATIO / 168538 - .DW SN7RATIO / 170990 - .DW SN7RATIO / 173477 - .DW SN7RATIO / 176000 - .DW SN7RATIO / 178560 - .DW SN7RATIO / 181157 - .DW SN7RATIO / 183792 - .DW SN7RATIO / 186466 - .DW SN7RATIO / 189178 - .DW SN7RATIO / 191930 - .DW SN7RATIO / 194722 - .DW SN7RATIO / 197553 - .DW SN7RATIO / 200426 - .DW SN7RATIO / 203342 - .DW SN7RATIO / 206299 - .DW C7 ; 209300 + .DW SN7RATIO / 2913 + .DW SN7RATIO / 2956 + .DW SN7RATIO / 2999 + .DW SN7RATIO / 3042 + .DW SN7RATIO / 3086 + .DW SN7RATIO / 3131 + .DW SN7RATIO / 3177 + .DW SN7RATIO / 3223 + .DW SN7RATIO / 3270 + .DW SN7RATIO / 3318 + .DW SN7RATIO / 3366 + .DW SN7RATIO / 3415 + .DW SN7RATIO / 3464 + .DW SN7RATIO / 3515 + .DW SN7RATIO / 3566 + .DW SN7RATIO / 3618 + .DW SN7RATIO / 3670 + .DW SN7RATIO / 3724 + .DW SN7RATIO / 3778 + .DW SN7RATIO / 3833 + .DW SN7RATIO / 3889 + .DW SN7RATIO / 3945 + .DW SN7RATIO / 4003 + .DW SN7RATIO / 4061 + .DW SN7RATIO / 4120 + .DW SN7RATIO / 4180 + .DW SN7RATIO / 4241 + .DW SN7RATIO / 4302 + .DW SN7RATIO / 4365 + .DW SN7RATIO / 4428 + .DW SN7RATIO / 4493 + .DW SN7RATIO / 4558 + .DW SN7RATIO / 4624 + .DW SN7RATIO / 4692 + .DW SN7RATIO / 4760 + .DW SN7RATIO / 4829 + .DW SN7RATIO / 4899 + .DW SN7RATIO / 4971 + .DW SN7RATIO / 5043 + .DW SN7RATIO / 5116 + .DW SN7RATIO / 5191 + .DW SN7RATIO / 5266 + .DW SN7RATIO / 5343 + .DW SN7RATIO / 5421 + .DW SN7RATIO / 5499 + .DW SN7RATIO / 5579 + .DW SN7RATIO / 5661 + .DW SN7RATIO / 5743 SIZ_SN7NOTETBL .EQU $ - SN7NOTETBL .ECHO "SN76489 approx " From 98a63cefa9845f455559af4968cf9eda893d7d55 Mon Sep 17 00:00:00 2001 From: Dean Netherton Date: Sun, 10 May 2020 12:05:45 +1000 Subject: [PATCH 2/7] SN76489: refactor - remove custom div16 function - use common hbios util div16 function --- Source/HBIOS/sn76489.asm | 67 +++++++++------------------------------- 1 file changed, 14 insertions(+), 53 deletions(-) diff --git a/Source/HBIOS/sn76489.asm b/Source/HBIOS/sn76489.asm index 8f90e360..182cc6a5 100644 --- a/Source/HBIOS/sn76489.asm +++ b/Source/HBIOS/sn76489.asm @@ -5,6 +5,9 @@ ;====================================================================== ; ; TODO: +; 1. PROVIDE SUPPORT FOR NOISE CHANNEL +; 2. FOR PERIOD SET, MAP 400 TO 0 AND RETURN ERROR FOR 000 +; 3. DOES THIS WORK FOR FASTER CPUS? ONLY BEEN TEST ON A Z80 7MHZ UNIT ; ;====================================================================== ; CONSTANTS @@ -104,13 +107,10 @@ SN7_NOTE: AUDTRACE_HL AUDTRACE_CR - LD B, H - LD C, L LD DE, 48 - - CALL _DIV16 + CALL DIV16 ; BC IS OCTAVE COUNT - ; HL is NOTE WITIN ACTAVE + ; HL is NOTE WITIN OCTAVE ADD HL, HL LD DE, SN7NOTETBL ADD HL, DE @@ -129,55 +129,21 @@ SN7_NOTE1: JR SN7_NOTE1 SN7_NOTE2: - LD A, L + LD A, L ; IF WE GENERATE ZERO - RETURN ERROR OR H - JR NZ, SN7_PERIOD + JR NZ, SN7_PERIOD ; OTHERWISE APPLY THE CALCULATED PERIOD LD H, $FF LD L, $FF JR SN7_PERIOD -; Divide 16-bit values (with 16-bit result) -; In: Divide BC by divider DE -; Out: BC = result, HL = rest -; -_DIV16: - LD HL, 0 - LD A, B - LD B, 8 -DIV16_LOOP1: - RLA - ADC HL, HL - SBC HL, DE - JR NC, DIV16_NOADD1 - ADD HL, DE -DIV16_NOADD1: - DJNZ DIV16_LOOP1 - RLA - CPL - LD B, A - LD A, C - LD C, B - LD B, 8 -DIV16_LOOP2: - RLA - ADC HL, HL - SBC HL, DE - JR NC, DIV16_NOADD2 - ADD HL, DE -DIV16_NOADD2: - DJNZ DIV16_LOOP2 - RLA - CPL - LD B, C - LD C, A - RET - SN7_PERIOD: AUDTRACE(SNT_PERIOD) AUDTRACE_HL AUDTRACE_CR + ; TODO: MAKE ZERO BE AN INVALID VALUE (USE 400) TO INDICATE LOWEST NOTE + ; NEED TO UPDATE TUNE.ASM TO SUPPORT THIS? ; LD A, H ; IF ZERO - ERROR ; OR L ; JR Z, SN7_QUERY_PERIOD1 @@ -398,10 +364,11 @@ SNT_PLAY .DB "\r\nSN7_PLAY CH: $" SNT_REGWR .DB "\r\nOUT SN76489, $" #ENDIF -; THE FREQUENCY BY QUARTER TONE STARTING AT A0# -; OCATVE 0 - not suported by this driver -; FIRST PLAYABLE NOTE WILL BE $2E - 2 quater tones below a1# -; A1# is $30 +; THE FREQUENCY BY QUARTER TONE STARTING AT A0# OCATVE 0 +; USED TO MAP EACH OCTAVE (DIV BY 2 TO JUMP AN OCTAVE UP) +; FIRST PLAYABLE NOTE WILL BE $2E +; ASSUMING A CLOCK OF 1843200 THIS MAPS TO +; 2 QUATER TONES BELOW A1#, WITH A1# AT $30 SN7NOTETBL: .DW SN7RATIO / 2913 @@ -454,9 +421,3 @@ SN7NOTETBL: .DW SN7RATIO / 5743 SIZ_SN7NOTETBL .EQU $ - SN7NOTETBL - .ECHO "SN76489 approx " - .ECHO SIZ_SN7NOTETBL / 2 / 4 /12 - .ECHO " Octaves. Last note index supported: " - - .ECHO SIZ_SN7NOTETBL / 2 - .ECHO "\n" From 7330928dcacebc6d0b984789a24606258b2db118 Mon Sep 17 00:00:00 2001 From: Dean Netherton Date: Sun, 10 May 2020 12:25:33 +1000 Subject: [PATCH 3/7] SN76489: Moved clock configuration from driver to platform config files --- Source/HBIOS/cfg_dyno.asm | 2 ++ Source/HBIOS/cfg_ezz80.asm | 2 ++ Source/HBIOS/cfg_master.asm | 2 ++ Source/HBIOS/cfg_mk4.asm | 2 ++ Source/HBIOS/cfg_n8.asm | 2 ++ Source/HBIOS/cfg_rcz180.asm | 2 ++ Source/HBIOS/cfg_rcz80.asm | 2 ++ Source/HBIOS/cfg_sbc.asm | 2 ++ Source/HBIOS/cfg_scz180.asm | 2 ++ Source/HBIOS/cfg_zeta.asm | 2 ++ Source/HBIOS/cfg_zeta2.asm | 2 ++ Source/HBIOS/sn76489.asm | 6 ++++-- 12 files changed, 26 insertions(+), 2 deletions(-) diff --git a/Source/HBIOS/cfg_dyno.asm b/Source/HBIOS/cfg_dyno.asm index 058816cd..c0c936a3 100644 --- a/Source/HBIOS/cfg_dyno.asm +++ b/Source/HBIOS/cfg_dyno.asm @@ -155,6 +155,8 @@ UFENABLE .EQU FALSE ; UF: ENABLE ECB USB FIFO DRIVER (UF.ASM) ; AUDIOTRACE .EQU FALSE ; ENABLE TRACING TO CONSOLE OF SOUND DRIVER SN76489ENABLE .EQU FALSE ; SN76489 SOUND DRIVER +SN7CLK .EQU CPUOSC / 4 ; DEFAULT TO CPUOSC / 4 + AY38910ENABLE .EQU FALSE ; AY: AY-3-8910 / YM2149 SOUND DRIVER AYMODE .EQU AYMODE_RCZ180 ; AY: DRIVER MODE: AYMODE_[SCG/N8/RCZ80/RCZ180] SPKENABLE .EQU FALSE ; SPK: ENABLE RTC LATCH IOBIT SOUND DRIVER (SPK.ASM) diff --git a/Source/HBIOS/cfg_ezz80.asm b/Source/HBIOS/cfg_ezz80.asm index 9319a4b5..2ea3df23 100644 --- a/Source/HBIOS/cfg_ezz80.asm +++ b/Source/HBIOS/cfg_ezz80.asm @@ -180,6 +180,8 @@ UFENABLE .EQU FALSE ; UF: ENABLE ECB USB FIFO DRIVER (UF.ASM) ; AUDIOTRACE .EQU FALSE ; ENABLE TRACING TO CONSOLE OF SOUND DRIVER SN76489ENABLE .EQU FALSE ; SN76489 SOUND DRIVER +SN7CLK .EQU CPUOSC / 4 ; DEFAULT TO CPUOSC / 4 + AY38910ENABLE .EQU FALSE ; AY: AY-3-8910 / YM2149 SOUND DRIVER AYMODE .EQU AYMODE_RCZ80 ; AY: DRIVER MODE: AYMODE_[SCG/N8/RCZ80/RCZ180] SPKENABLE .EQU FALSE ; SPK: ENABLE RTC LATCH IOBIT SOUND DRIVER (SPK.ASM) diff --git a/Source/HBIOS/cfg_master.asm b/Source/HBIOS/cfg_master.asm index 31ff520a..f46779c8 100644 --- a/Source/HBIOS/cfg_master.asm +++ b/Source/HBIOS/cfg_master.asm @@ -235,6 +235,8 @@ UFBASE .EQU $0C ; UF: REGISTERS BASE ADR ; AUDIOTRACE .EQU FALSE ; ENABLE TRACING TO CONSOLE OF SOUND DRIVER SN76489ENABLE .EQU FALSE ; SN76489 SOUND DRIVER +SN7CLK .EQU CPUOSC / 4 ; DEFAULT TO CPUOSC / 4 + AY38910ENABLE .EQU FALSE ; AY: AY-3-8910 / YM2149 SOUND DRIVER AYMODE .EQU AYMODE_NONE ; AY: DRIVER MODE: AYMODE_[SCG/N8/RCZ80/RCZ180] SPKENABLE .EQU FALSE ; SPK: ENABLE RTC LATCH IOBIT SOUND DRIVER (SPK.ASM) diff --git a/Source/HBIOS/cfg_mk4.asm b/Source/HBIOS/cfg_mk4.asm index 6817d124..fc316e15 100644 --- a/Source/HBIOS/cfg_mk4.asm +++ b/Source/HBIOS/cfg_mk4.asm @@ -189,6 +189,8 @@ UFBASE .EQU $0C ; UF: REGISTERS BASE ADR ; AUDIOTRACE .EQU FALSE ; ENABLE TRACING TO CONSOLE OF SOUND DRIVER SN76489ENABLE .EQU FALSE ; SN76489 SOUND DRIVER +SN7CLK .EQU CPUOSC / 4 ; DEFAULT TO CPUOSC / 4 + AY38910ENABLE .EQU FALSE ; AY: AY-3-8910 / YM2149 SOUND DRIVER AYMODE .EQU AYMODE_SCG ; AY: DRIVER MODE: AYMODE_[SCG/N8/RCZ80/RCZ180] SPKENABLE .EQU FALSE ; SPK: ENABLE RTC LATCH IOBIT SOUND DRIVER (SPK.ASM) diff --git a/Source/HBIOS/cfg_n8.asm b/Source/HBIOS/cfg_n8.asm index bbcc60fc..88069943 100644 --- a/Source/HBIOS/cfg_n8.asm +++ b/Source/HBIOS/cfg_n8.asm @@ -189,6 +189,8 @@ FIFO_BASE .EQU $0C ; UF: REGISTERS BASE ADR ; AUDIOTRACE .EQU FALSE ; ENABLE TRACING TO CONSOLE OF SOUND DRIVER SN76489ENABLE .EQU FALSE ; SN76489 SOUND DRIVER +SN7CLK .EQU CPUOSC / 4 ; DEFAULT TO CPUOSC / 4 + AY38910ENABLE .EQU TRUE ; AY: AY-3-8910 / YM2149 SOUND DRIVER AYMODE .EQU AYMODE_N8 ; AY: DRIVER MODE: AYMODE_[SCG/N8/RCZ80/RCZ180] SPKENABLE .EQU FALSE ; SPK: ENABLE RTC LATCH IOBIT SOUND DRIVER (SPK.ASM) diff --git a/Source/HBIOS/cfg_rcz180.asm b/Source/HBIOS/cfg_rcz180.asm index 8fc7d329..ebc473e2 100644 --- a/Source/HBIOS/cfg_rcz180.asm +++ b/Source/HBIOS/cfg_rcz180.asm @@ -189,6 +189,8 @@ UFENABLE .EQU FALSE ; UF: ENABLE ECB USB FIFO DRIVER (UF.ASM) ; AUDIOTRACE .EQU FALSE ; ENABLE TRACING TO CONSOLE OF SOUND DRIVER SN76489ENABLE .EQU FALSE ; SN76489 SOUND DRIVER +SN7CLK .EQU CPUOSC / 4 ; DEFAULT TO CPUOSC / 4 + AY38910ENABLE .EQU FALSE ; AY: AY-3-8910 / YM2149 SOUND DRIVER AYMODE .EQU AYMODE_RCZ180 ; AY: DRIVER MODE: AYMODE_[SCG/N8/RCZ80/RCZ180] SPKENABLE .EQU FALSE ; SPK: ENABLE RTC LATCH IOBIT SOUND DRIVER (SPK.ASM) diff --git a/Source/HBIOS/cfg_rcz80.asm b/Source/HBIOS/cfg_rcz80.asm index 3d279a45..dfd4d72a 100644 --- a/Source/HBIOS/cfg_rcz80.asm +++ b/Source/HBIOS/cfg_rcz80.asm @@ -195,6 +195,8 @@ UFENABLE .EQU FALSE ; UF: ENABLE ECB USB FIFO DRIVER (UF.ASM) ; AUDIOTRACE .EQU FALSE ; ENABLE TRACING TO CONSOLE OF SOUND DRIVER SN76489ENABLE .EQU FALSE ; SN76489 SOUND DRIVER +SN7CLK .EQU CPUOSC / 4 ; DEFAULT TO CPUOSC / 4 + AY38910ENABLE .EQU FALSE ; AY: AY-3-8910 / YM2149 SOUND DRIVER AYMODE .EQU AYMODE_RCZ80 ; AY: DRIVER MODE: AYMODE_[SCG/N8/RCZ80/RCZ180] SPKENABLE .EQU FALSE ; SPK: ENABLE RTC LATCH IOBIT SOUND DRIVER (SPK.ASM) diff --git a/Source/HBIOS/cfg_sbc.asm b/Source/HBIOS/cfg_sbc.asm index 7803b1a0..c37f0ef4 100644 --- a/Source/HBIOS/cfg_sbc.asm +++ b/Source/HBIOS/cfg_sbc.asm @@ -191,6 +191,8 @@ UFBASE .EQU $0C ; UF: REGISTERS BASE ADR ; AUDIOTRACE .EQU FALSE ; ENABLE TRACING TO CONSOLE OF SOUND DRIVER SN76489ENABLE .EQU FALSE ; SN76489 SOUND DRIVER +SN7CLK .EQU CPUOSC / 4 ; DEFAULT TO CPUOSC / 4 + AY38910ENABLE .EQU FALSE ; AY: AY-3-8910 / YM2149 SOUND DRIVER AYMODE .EQU AYMODE_SCG ; AY: DRIVER MODE: AYMODE_[SCG/N8/RCZ80/RCZ180] SPKENABLE .EQU FALSE ; SPK: ENABLE RTC LATCH IOBIT SOUND DRIVER (SPK.ASM) diff --git a/Source/HBIOS/cfg_scz180.asm b/Source/HBIOS/cfg_scz180.asm index 483f043f..68fbccf6 100644 --- a/Source/HBIOS/cfg_scz180.asm +++ b/Source/HBIOS/cfg_scz180.asm @@ -184,6 +184,8 @@ UFENABLE .EQU FALSE ; UF: ENABLE ECB USB FIFO DRIVER (UF.ASM) ; AUDIOTRACE .EQU FALSE ; ENABLE TRACING TO CONSOLE OF SOUND DRIVER SN76489ENABLE .EQU FALSE ; SN76489 SOUND DRIVER +SN7CLK .EQU CPUOSC / 4 ; DEFAULT TO CPUOSC / 4 + AY38910ENABLE .EQU FALSE ; AY: AY-3-8910 / YM2149 SOUND DRIVER AYMODE .EQU AYMODE_RCZ180 ; AY: DRIVER MODE: AYMODE_[SCG/N8/RCZ80/RCZ180] SPKENABLE .EQU FALSE ; SPK: ENABLE RTC LATCH IOBIT SOUND DRIVER (SPK.ASM) diff --git a/Source/HBIOS/cfg_zeta.asm b/Source/HBIOS/cfg_zeta.asm index 8898ceea..2d9cce1e 100644 --- a/Source/HBIOS/cfg_zeta.asm +++ b/Source/HBIOS/cfg_zeta.asm @@ -136,6 +136,8 @@ UFENABLE .EQU FALSE ; UF: ENABLE ECB USB FIFO DRIVER (UF.ASM) ; AUDIOTRACE .EQU FALSE ; ENABLE TRACING TO CONSOLE OF SOUND DRIVER SN76489ENABLE .EQU FALSE ; SN76489 SOUND DRIVER +SN7CLK .EQU CPUOSC / 4 ; DEFAULT TO CPUOSC / 4 + AY38910ENABLE .EQU FALSE ; AY: AY-3-8910 / YM2149 SOUND DRIVER AYMODE .EQU AYMODE_NONE ; AY: DRIVER MODE: AYMODE_[SCG/N8/RCZ80/RCZ180] SPKENABLE .EQU FALSE ; SPK: ENABLE RTC LATCH IOBIT SOUND DRIVER (SPK.ASM) diff --git a/Source/HBIOS/cfg_zeta2.asm b/Source/HBIOS/cfg_zeta2.asm index 28ab8d69..fbbaf6ac 100644 --- a/Source/HBIOS/cfg_zeta2.asm +++ b/Source/HBIOS/cfg_zeta2.asm @@ -146,6 +146,8 @@ UFENABLE .EQU FALSE ; UF: ENABLE ECB USB FIFO DRIVER (UF.ASM) ; AUDIOTRACE .EQU FALSE ; ENABLE TRACING TO CONSOLE OF SOUND DRIVER SN76489ENABLE .EQU FALSE ; SN76489 SOUND DRIVER +SN7CLK .EQU CPUOSC / 4 ; DEFAULT TO CPUOSC / 4 + AY38910ENABLE .EQU FALSE ; AY: AY-3-8910 / YM2149 SOUND DRIVER AYMODE .EQU AYMODE_NONE ; AY: DRIVER MODE: AYMODE_[SCG/N8/RCZ80/RCZ180] SPKENABLE .EQU FALSE ; SPK: ENABLE RTC LATCH IOBIT SOUND DRIVER (SPK.ASM) diff --git a/Source/HBIOS/sn76489.asm b/Source/HBIOS/sn76489.asm index 182cc6a5..cb062d53 100644 --- a/Source/HBIOS/sn76489.asm +++ b/Source/HBIOS/sn76489.asm @@ -25,10 +25,12 @@ CHANNEL_1_SILENT .EQU $BF CHANNEL_2_SILENT .EQU $DF CHANNEL_3_SILENT .EQU $FF -SN7CLKDIVIDER .EQU 4 -SN7CLK .EQU CPUOSC / SN7CLKDIVIDER SN7RATIO .EQU SN7CLK * 100 / 32 + .ECHO "SN76489 CLOCK: " + .ECHO SN7CLK + .ECHO "\n" + #INCLUDE "audio.inc" SN76489_INIT: From 625e696f68895a866bb9294a898b45863474ba5a Mon Sep 17 00:00:00 2001 From: Dean Netherton Date: Sun, 10 May 2020 13:15:21 +1000 Subject: [PATCH 4/7] whitespace --- Source/HBIOS/ay38910.asm | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/Source/HBIOS/ay38910.asm b/Source/HBIOS/ay38910.asm index b703bad5..fcb591a1 100644 --- a/Source/HBIOS/ay38910.asm +++ b/Source/HBIOS/ay38910.asm @@ -20,7 +20,7 @@ AY_RIN .EQU AY_RSEL AY_ACR .EQU N8_DEFACR #ENDIF ; -#IF (AYMODE == AYMODE_RCZ80) +#IF (AYMODE == AYMODE_RCZ80) AY_RSEL .EQU $D8 AY_RDAT .EQU $D0 AY_RIN .EQU AY_RSEL+AY_RCSND @@ -71,7 +71,7 @@ AY_NOISECNT .EQU 1 ; COUNT NUMBER OF NOISE CHANNELS ; AY_PHICLK .EQU 3579545 ; MSX NTSC COLOUR BURST FREQ = 315/88 ;AY_PHICLK .EQU 3500000 ; ZX SPECTRUM 3.5MHZ -;AY_PHICLK .EQU 4000000 ; RETROBREW SCB-SCG +;AY_PHICLK .EQU 4000000 ; RETROBREW SCB-SCG AY_CLKDIV .EQU 2 AY_CLK .EQU AY_PHICLK / AY_CLKDIV AY_RATIO .EQU AY_CLK * 100 / 16 @@ -99,7 +99,7 @@ AY38910_INIT: #ENDIF ; LD DE,(AY_R2CHBP*256)+$55 ; SIMPLE HARDWARE PROBE - CALL AY_WRTPSG ; WRITE AND + CALL AY_WRTPSG ; WRITE AND CALL AY_RDPSG ; READ TO A LD A,$55 ; SOUND CHANNEL CP E ; REGISTER @@ -107,7 +107,7 @@ AY38910_INIT: ; CALL PRTSTRD \ .TEXT " NOT PRESENT$" ; - LD A,$FF ; UNSUCCESSFULL INIT + LD A,$FF ; UNSUCCESSFULL INIT RET ; AY_FND: LD IY, AY_IDAT ; SETUP FUNCTION TABLE @@ -275,7 +275,7 @@ AY_PLAY: INC A JR Z, AY_PLAY1 ; PERIOD IS TOO LARGE, UNABLE TO PLAY ; - PUSH HL + PUSH HL PUSH DE LD A,D ; LIMIT CHANNEL 0-2 AND $3 ; AND INDEX TO THE @@ -460,7 +460,7 @@ AYT_REGWR .DB "\r\nOUT AY-3-8910 $" #ENDIF ; ;====================================================================== -; BBC MICRO QUARTER TONE FREQUENCY TABLE +; BBC MICRO QUARTER TONE FREQUENCY TABLE ;====================================================================== ; AY3NOTETBL: From 5e65fcba1347515f13748416e26f5ef408a5c0d6 Mon Sep 17 00:00:00 2001 From: Dean Netherton Date: Sun, 10 May 2020 13:17:20 +1000 Subject: [PATCH 5/7] AY38910: Refactored to use a common function for note mapping as SN76489 driver --- Source/HBIOS/audio.inc | 43 +++++ Source/HBIOS/ay38910.asm | 373 +++++++----------------------------- Source/HBIOS/cfg_dyno.asm | 3 +- Source/HBIOS/cfg_ezz80.asm | 1 + Source/HBIOS/cfg_master.asm | 1 + Source/HBIOS/cfg_mk4.asm | 1 + Source/HBIOS/cfg_n8.asm | 1 + Source/HBIOS/cfg_rcz180.asm | 1 + Source/HBIOS/cfg_rcz80.asm | 1 + Source/HBIOS/cfg_sbc.asm | 1 + Source/HBIOS/cfg_scz180.asm | 1 + Source/HBIOS/cfg_zeta.asm | 1 + Source/HBIOS/cfg_zeta2.asm | 1 + Source/HBIOS/sn76489.asm | 37 +--- 14 files changed, 122 insertions(+), 344 deletions(-) diff --git a/Source/HBIOS/audio.inc b/Source/HBIOS/audio.inc index 09469326..a3ca68da 100644 --- a/Source/HBIOS/audio.inc +++ b/Source/HBIOS/audio.inc @@ -30,3 +30,46 @@ #DEFINE AUDTRACE_CR #ENDIF + + +#IFNDEF AUDIOUTILS +#DEFINE AUDIOUTILS + +AUD_NOTE: + AUDDEBUG("AUDNOTE ") + AUDTRACE_HL + AUDTRACE_CR + AUDTRACE_DE + AUDTRACE_CR + + push de + LD DE, 48 + CALL DIV16 + ; BC IS OCTAVE COUNT + ; HL is NOTE WITIN OCTAVE + ADD HL, HL + pop de + ADD HL, DE + + LD A, (HL) ; RETRIEVE PERIOD COUNT FROM SN7NOTETBL + INC HL + LD H, (HL) + LD L, A + + INC C +AUD_NOTE1: + DEC C + JR Z, AUD_NOTE2 + SRL H + RR L + JR AUD_NOTE1 + +AUD_NOTE2: + LD A, L ; IF NOT ZERO + OR H + RET NZ ; RETURN THE CALCULATED PERIOD + + LD H, $FF ; OTHERWISE RETURN -1 PERIOD (ERROR) + LD L, $FF + RET +#ENDIF \ No newline at end of file diff --git a/Source/HBIOS/ay38910.asm b/Source/HBIOS/ay38910.asm index fcb591a1..7f712f09 100644 --- a/Source/HBIOS/ay38910.asm +++ b/Source/HBIOS/ay38910.asm @@ -72,8 +72,6 @@ AY_NOISECNT .EQU 1 ; COUNT NUMBER OF NOISE CHANNELS AY_PHICLK .EQU 3579545 ; MSX NTSC COLOUR BURST FREQ = 315/88 ;AY_PHICLK .EQU 3500000 ; ZX SPECTRUM 3.5MHZ ;AY_PHICLK .EQU 4000000 ; RETROBREW SCB-SCG -AY_CLKDIV .EQU 2 -AY_CLK .EQU AY_PHICLK / AY_CLKDIV AY_RATIO .EQU AY_CLK * 100 / 16 ; #INCLUDE "audio.inc" @@ -199,6 +197,19 @@ AY_VOLUME: RET ; ;====================================================================== +; SOUND DRIVER FUNCTION - NOTE +;====================================================================== +; +AY_NOTE: + AUDTRACE(AYT_NOTE) + AUDTRACE_HL + AUDTRACE_CR + + LD DE, AY3NOTETBL + CALL AUD_NOTE ; RETURNS PERIOD IN HL, FALL THRU + ; TO SET THIS PERIOD +; +;====================================================================== ; SOUND DRIVER FUNCTION - PERIOD ;====================================================================== ; @@ -220,45 +231,6 @@ AY_PERIOD1: RET ; AND RETURN FAILURE ; ;====================================================================== -; SOUND DRIVER FUNCTION - NOTE -;====================================================================== -; -AY_NOTE: - AUDTRACE(AYT_NOTE) - AUDTRACE_L - AUDTRACE_CR -; - PUSH HL - PUSH DE - LD H,0 - ADD HL, HL ; SHIFT RIGHT (MULT 2) -INDEX INTO AY3NOTETBL TABLE OF WORDS -; ; TEST IF HL IS LARGER THAN AY3NOTETBL SIZE -; OR A ; CLEAR CARRY FLAG - LD DE, SIZ_AY3NOTETBL -; SBC HL, DE -; JR NC, AY_NOTE1 ; INCOMING HL DOES NOT MAP INTO AY3NOTETBL -; -; ADD HL, DE ; RESTORE HL - LD DE, AY3NOTETBL ; HL = AY3NOTETBL + HL - ADD HL, DE -; - LD A, (HL) ; RETRIEVE PERIOD COUNT FROM AY3NOTETBL - INC HL - LD H, (HL) - LD L, A -; - CALL AY_PERIOD ; APPLY NOTE PERIOD - POP DE - POP HL - RET -; -AY_NOTE1: - POP DE - POP HL - OR $FF ; NOT IMPLEMENTED YET - RET -; -;====================================================================== ; SOUND DRIVER FUNCTION - PLAY ; B = FUNCTION ; C = AUDIO DEVICE @@ -463,271 +435,56 @@ AYT_REGWR .DB "\r\nOUT AY-3-8910 $" ; BBC MICRO QUARTER TONE FREQUENCY TABLE ;====================================================================== ; +; THE FREQUENCY BY QUARTER TONE STARTING AT A0# OCATVE 0 +; USED TO MAP EACH OCTAVE (DIV BY 2 TO JUMP AN OCTAVE UP) +; FIRST PLAYABLE NOTE WILL BE 0 +; ASSUMING A CLOCK OF 1843200 THIS MAPS TO A0# AY3NOTETBL: - .DW AY_RATIO / 5827 ; A#1 INDEX 0 = A#1 AS PER BBC MANUAL -; .DW AY_RATIO / 5912 -; .DW AY_RATIO / 5998 -; .DW AY_RATIO / 6085 - .DW AY_RATIO / 6174 ; B1 INDEX 1 = B1 AS PER BBC MANUAL - .DW AY_RATIO / 6263 - .DW AY_RATIO / 6354 - .DW AY_RATIO / 6447 - .DW AY_RATIO / 6541 ; C2 - .DW AY_RATIO / 6636 - .DW AY_RATIO / 6732 - .DW AY_RATIO / 6830 - .DW AY_RATIO / 6930 ; C#2 - .DW AY_RATIO / 7030 - .DW AY_RATIO / 7133 - .DW AY_RATIO / 7236 - .DW AY_RATIO / 7342 ; D2 - .DW AY_RATIO / 7448 - .DW AY_RATIO / 7557 - .DW AY_RATIO / 7667 - .DW AY_RATIO / 7778 ; D#2 - .DW AY_RATIO / 7891 - .DW AY_RATIO / 8006 - .DW AY_RATIO / 8123 - .DW AY_RATIO / 8241 ; E2 - .DW AY_RATIO / 8361 - .DW AY_RATIO / 8482 - .DW AY_RATIO / 8606 - .DW AY_RATIO / 8731 ; F2 - .DW AY_RATIO / 8858 - .DW AY_RATIO / 8987 - .DW AY_RATIO / 9117 - .DW AY_RATIO / 9250 ; F#2 - .DW AY_RATIO / 9384 - .DW AY_RATIO / 9521 - .DW AY_RATIO / 9659 - .DW AY_RATIO / 9800 ; G2 - .DW AY_RATIO / 9942 - .DW AY_RATIO / 10087 - .DW AY_RATIO / 10234 - .DW AY_RATIO / 10383 ; G#2 - .DW AY_RATIO / 10534 - .DW AY_RATIO / 10687 - .DW AY_RATIO / 10842 - .DW AY_RATIO / 11000 ; A2 - .DW AY_RATIO / 11160 - .DW AY_RATIO / 11322 - .DW AY_RATIO / 11487 - .DW AY_RATIO / 11654 ; A#2 - .DW AY_RATIO / 11824 - .DW AY_RATIO / 11996 - .DW AY_RATIO / 12170 - .DW AY_RATIO / 12347 ; B2 - .DW AY_RATIO / 12527 - .DW AY_RATIO / 12709 - .DW AY_RATIO / 12894 - .DW AY_RATIO / 13081 ; C3 - .DW AY_RATIO / 13272 - .DW AY_RATIO / 13465 - .DW AY_RATIO / 13660 - .DW AY_RATIO / 13859 ; C#3 - .DW AY_RATIO / 14061 - .DW AY_RATIO / 14265 - .DW AY_RATIO / 14473 - .DW AY_RATIO / 14683 ; D3 - .DW AY_RATIO / 14897 - .DW AY_RATIO / 15113 - .DW AY_RATIO / 15333 - .DW AY_RATIO / 15556 ; D#3 - .DW AY_RATIO / 15783 - .DW AY_RATIO / 16012 - .DW AY_RATIO / 16245 - .DW AY_RATIO / 16481 ; E3 - .DW AY_RATIO / 16721 - .DW AY_RATIO / 16964 - .DW AY_RATIO / 17211 - .DW AY_RATIO / 17461 ; F3 - .DW AY_RATIO / 17715 - .DW AY_RATIO / 17973 - .DW AY_RATIO / 18234 - .DW AY_RATIO / 18500 ; F#3 - .DW AY_RATIO / 18769 - .DW AY_RATIO / 19042 - .DW AY_RATIO / 19319 - .DW AY_RATIO / 19600 ; G3 - .DW AY_RATIO / 19885 - .DW AY_RATIO / 20174 - .DW AY_RATIO / 20468 - .DW AY_RATIO / 20765 ; G#3 - .DW AY_RATIO / 21067 - .DW AY_RATIO / 21374 - .DW AY_RATIO / 21685 - .DW AY_RATIO / 22000 ; A3 - .DW AY_RATIO / 22320 - .DW AY_RATIO / 22645 - .DW AY_RATIO / 22974 - .DW AY_RATIO / 23308 ; A#3 - .DW AY_RATIO / 23647 - .DW AY_RATIO / 23991 - .DW AY_RATIO / 24340 - .DW AY_RATIO / 24694 ; B3 - .DW AY_RATIO / 25053 - .DW AY_RATIO / 25418 - .DW AY_RATIO / 25787 - .DW AY_RATIO / 26163 ; C4 - .DW AY_RATIO / 26543 - .DW AY_RATIO / 26929 - .DW AY_RATIO / 27321 - .DW AY_RATIO / 27718 ; C#4 - .DW AY_RATIO / 28121 - .DW AY_RATIO / 28530 - .DW AY_RATIO / 28945 - .DW AY_RATIO / 29366 ; D4 - .DW AY_RATIO / 29794 - .DW AY_RATIO / 30227 - .DW AY_RATIO / 30667 - .DW AY_RATIO / 31113 ; D#4 - .DW AY_RATIO / 31565 - .DW AY_RATIO / 32024 - .DW AY_RATIO / 32490 - .DW AY_RATIO / 32963 ; E4 - .DW AY_RATIO / 33442 - .DW AY_RATIO / 33929 - .DW AY_RATIO / 34422 - .DW AY_RATIO / 34923 ; F4 - .DW AY_RATIO / 35431 - .DW AY_RATIO / 35946 - .DW AY_RATIO / 36469 - .DW AY_RATIO / 36999 ; F#4 - .DW AY_RATIO / 37538 - .DW AY_RATIO / 38084 - .DW AY_RATIO / 38638 - .DW AY_RATIO / 39200 ; G4 - .DW AY_RATIO / 39770 - .DW AY_RATIO / 40348 - .DW AY_RATIO / 40935 - .DW AY_RATIO / 41530 ; G#4 - .DW AY_RATIO / 42135 - .DW AY_RATIO / 42747 - .DW AY_RATIO / 43369 - .DW AY_RATIO / 44000 ; A4 - .DW AY_RATIO / 44640 - .DW AY_RATIO / 45289 - .DW AY_RATIO / 45948 - .DW AY_RATIO / 46616 ; A#4 - .DW AY_RATIO / 47294 - .DW AY_RATIO / 47982 - .DW AY_RATIO / 48680 - .DW AY_RATIO / 49388 ; B4 - .DW AY_RATIO / 50107 - .DW AY_RATIO / 50836 - .DW AY_RATIO / 51575 - .DW AY_RATIO / 52325 ; C5 - .DW AY_RATIO / 53086 - .DW AY_RATIO / 53858 - .DW AY_RATIO / 54642 - .DW AY_RATIO / 55437 ; C#5 - .DW AY_RATIO / 56243 - .DW AY_RATIO / 57061 - .DW AY_RATIO / 57891 - .DW AY_RATIO / 58733 ; D5 - .DW AY_RATIO / 59587 - .DW AY_RATIO / 60454 - .DW AY_RATIO / 61333 - .DW AY_RATIO / 62225 ; D#5 - .DW AY_RATIO / 63130 - .DW AY_RATIO / 64049 - .DW AY_RATIO / 64980 - .DW AY_RATIO / 65926 ; E5 - .DW AY_RATIO / 66884 - .DW AY_RATIO / 67857 - .DW AY_RATIO / 68844 - .DW AY_RATIO / 69846 ; F5 - .DW AY_RATIO / 70862 - .DW AY_RATIO / 71892 - .DW AY_RATIO / 72938 - .DW AY_RATIO / 73999 ; F#5 - .DW AY_RATIO / 75075 - .DW AY_RATIO / 76167 - .DW AY_RATIO / 77275 - .DW AY_RATIO / 78399 ; G5 - .DW AY_RATIO / 79539 - .DW AY_RATIO / 80696 - .DW AY_RATIO / 81870 - .DW AY_RATIO / 83061 ; G#5 - .DW AY_RATIO / 84269 - .DW AY_RATIO / 85495 - .DW AY_RATIO / 86738 - .DW AY_RATIO / 88000 ; #A5 - .DW AY_RATIO / 89280 - .DW AY_RATIO / 90579 - .DW AY_RATIO / 91896 - .DW AY_RATIO / 93233 ; A#5 - .DW AY_RATIO / 94589 - .DW AY_RATIO / 95965 - .DW AY_RATIO / 97361 - .DW AY_RATIO / 98777 ; B5 - .DW AY_RATIO / 100213 - .DW AY_RATIO / 101671 - .DW AY_RATIO / 103150 - .DW AY_RATIO / 104650 ; C6 - .DW AY_RATIO / 106172 - .DW AY_RATIO / 107717 - .DW AY_RATIO / 109283 - .DW AY_RATIO / 110873 ; C#6 - .DW AY_RATIO / 112486 - .DW AY_RATIO / 114122 - .DW AY_RATIO / 115782 - .DW AY_RATIO / 117466 ; D6 - .DW AY_RATIO / 119174 - .DW AY_RATIO / 120908 - .DW AY_RATIO / 122667 - .DW AY_RATIO / 124451 ; D#6 - .DW AY_RATIO / 126261 - .DW AY_RATIO / 128097 - .DW AY_RATIO / 129961 - .DW AY_RATIO / 131851 ; E6 - .DW AY_RATIO / 133769 - .DW AY_RATIO / 135715 - .DW AY_RATIO / 137689 - .DW AY_RATIO / 139691 ; F6 - .DW AY_RATIO / 141723 - .DW AY_RATIO / 143785 - .DW AY_RATIO / 145876 - .DW AY_RATIO / 147998 ; F#6 - .DW AY_RATIO / 150150 - .DW AY_RATIO / 152334 - .DW AY_RATIO / 154550 - .DW AY_RATIO / 156798 ; G6 - .DW AY_RATIO / 159079 - .DW AY_RATIO / 161393 - .DW AY_RATIO / 163740 - .DW AY_RATIO / 166122 ; G#6 - .DW AY_RATIO / 168538 - .DW AY_RATIO / 170990 - .DW AY_RATIO / 173477 - .DW AY_RATIO / 176000 ; A6 - .DW AY_RATIO / 178560 - .DW AY_RATIO / 181157 - .DW AY_RATIO / 183792 - .DW AY_RATIO / 186466 ; A#6 - .DW AY_RATIO / 189178 - .DW AY_RATIO / 191929 - .DW AY_RATIO / 194721 - .DW AY_RATIO / 197553 ; B6 - .DW AY_RATIO / 200427 - .DW AY_RATIO / 203342 - .DW AY_RATIO / 206300 - .DW AY_RATIO / 209300 ; C7 - .DW AY_RATIO / 212345 - .DW AY_RATIO / 215433 - .DW AY_RATIO / 218567 - .DW AY_RATIO / 221746 ; C#7 - .DW AY_RATIO / 224971 - .DW AY_RATIO / 228244 - .DW AY_RATIO / 231564 - .DW AY_RATIO / 234932 ; D7 - .DW AY_RATIO / 238349 - .DW AY_RATIO / 241816 - -SIZ_AY3NOTETBL .EQU $ - AY3NOTETBL - .ECHO "AY-3-8910 approx " - .ECHO SIZ_AY3NOTETBL / 2 / 4 / 12 - .ECHO " Octaves. Last note index supported: " - - .ECHO SIZ_AY3NOTETBL / 2 - .ECHO "\n" + .DW AY_RATIO / 2913 + .DW AY_RATIO / 2956 + .DW AY_RATIO / 2999 + .DW AY_RATIO / 3042 + .DW AY_RATIO / 3086 + .DW AY_RATIO / 3131 + .DW AY_RATIO / 3177 + .DW AY_RATIO / 3223 + .DW AY_RATIO / 3270 + .DW AY_RATIO / 3318 + .DW AY_RATIO / 3366 + .DW AY_RATIO / 3415 + .DW AY_RATIO / 3464 + .DW AY_RATIO / 3515 + .DW AY_RATIO / 3566 + .DW AY_RATIO / 3618 + .DW AY_RATIO / 3670 + .DW AY_RATIO / 3724 + .DW AY_RATIO / 3778 + .DW AY_RATIO / 3833 + .DW AY_RATIO / 3889 + .DW AY_RATIO / 3945 + .DW AY_RATIO / 4003 + .DW AY_RATIO / 4061 + .DW AY_RATIO / 4120 + .DW AY_RATIO / 4180 + .DW AY_RATIO / 4241 + .DW AY_RATIO / 4302 + .DW AY_RATIO / 4365 + .DW AY_RATIO / 4428 + .DW AY_RATIO / 4493 + .DW AY_RATIO / 4558 + .DW AY_RATIO / 4624 + .DW AY_RATIO / 4692 + .DW AY_RATIO / 4760 + .DW AY_RATIO / 4829 + .DW AY_RATIO / 4899 + .DW AY_RATIO / 4971 + .DW AY_RATIO / 5043 + .DW AY_RATIO / 5116 + .DW AY_RATIO / 5191 + .DW AY_RATIO / 5266 + .DW AY_RATIO / 5343 + .DW AY_RATIO / 5421 + .DW AY_RATIO / 5499 + .DW AY_RATIO / 5579 + .DW AY_RATIO / 5661 + .DW AY_RATIO / 5743 diff --git a/Source/HBIOS/cfg_dyno.asm b/Source/HBIOS/cfg_dyno.asm index c0c936a3..577dd712 100644 --- a/Source/HBIOS/cfg_dyno.asm +++ b/Source/HBIOS/cfg_dyno.asm @@ -158,5 +158,6 @@ SN76489ENABLE .EQU FALSE ; SN76489 SOUND DRIVER SN7CLK .EQU CPUOSC / 4 ; DEFAULT TO CPUOSC / 4 AY38910ENABLE .EQU FALSE ; AY: AY-3-8910 / YM2149 SOUND DRIVER +AY_CLK .EQU CPUOSC / 4 ; DEFAULT TO CPUOSC / 4 AYMODE .EQU AYMODE_RCZ180 ; AY: DRIVER MODE: AYMODE_[SCG/N8/RCZ80/RCZ180] -SPKENABLE .EQU FALSE ; SPK: ENABLE RTC LATCH IOBIT SOUND DRIVER (SPK.ASM) +SPKENABLE .EQU FALSE ; SPK: ENABLE RTC LATCH IOBIT SOUND DRIVER (SPK.ASM) \ No newline at end of file diff --git a/Source/HBIOS/cfg_ezz80.asm b/Source/HBIOS/cfg_ezz80.asm index 2ea3df23..d604eb3e 100644 --- a/Source/HBIOS/cfg_ezz80.asm +++ b/Source/HBIOS/cfg_ezz80.asm @@ -183,5 +183,6 @@ SN76489ENABLE .EQU FALSE ; SN76489 SOUND DRIVER SN7CLK .EQU CPUOSC / 4 ; DEFAULT TO CPUOSC / 4 AY38910ENABLE .EQU FALSE ; AY: AY-3-8910 / YM2149 SOUND DRIVER +AY_CLK .EQU CPUOSC / 4 ; DEFAULT TO CPUOSC / 4 AYMODE .EQU AYMODE_RCZ80 ; AY: DRIVER MODE: AYMODE_[SCG/N8/RCZ80/RCZ180] SPKENABLE .EQU FALSE ; SPK: ENABLE RTC LATCH IOBIT SOUND DRIVER (SPK.ASM) diff --git a/Source/HBIOS/cfg_master.asm b/Source/HBIOS/cfg_master.asm index f46779c8..2b1baa7c 100644 --- a/Source/HBIOS/cfg_master.asm +++ b/Source/HBIOS/cfg_master.asm @@ -238,5 +238,6 @@ SN76489ENABLE .EQU FALSE ; SN76489 SOUND DRIVER SN7CLK .EQU CPUOSC / 4 ; DEFAULT TO CPUOSC / 4 AY38910ENABLE .EQU FALSE ; AY: AY-3-8910 / YM2149 SOUND DRIVER +AY_CLK .EQU CPUOSC / 4 ; DEFAULT TO CPUOSC / 4 AYMODE .EQU AYMODE_NONE ; AY: DRIVER MODE: AYMODE_[SCG/N8/RCZ80/RCZ180] SPKENABLE .EQU FALSE ; SPK: ENABLE RTC LATCH IOBIT SOUND DRIVER (SPK.ASM) diff --git a/Source/HBIOS/cfg_mk4.asm b/Source/HBIOS/cfg_mk4.asm index fc316e15..8889fd05 100644 --- a/Source/HBIOS/cfg_mk4.asm +++ b/Source/HBIOS/cfg_mk4.asm @@ -192,5 +192,6 @@ SN76489ENABLE .EQU FALSE ; SN76489 SOUND DRIVER SN7CLK .EQU CPUOSC / 4 ; DEFAULT TO CPUOSC / 4 AY38910ENABLE .EQU FALSE ; AY: AY-3-8910 / YM2149 SOUND DRIVER +AY_CLK .EQU CPUOSC / 4 ; DEFAULT TO CPUOSC / 4 AYMODE .EQU AYMODE_SCG ; AY: DRIVER MODE: AYMODE_[SCG/N8/RCZ80/RCZ180] SPKENABLE .EQU FALSE ; SPK: ENABLE RTC LATCH IOBIT SOUND DRIVER (SPK.ASM) diff --git a/Source/HBIOS/cfg_n8.asm b/Source/HBIOS/cfg_n8.asm index 88069943..700fc0f7 100644 --- a/Source/HBIOS/cfg_n8.asm +++ b/Source/HBIOS/cfg_n8.asm @@ -192,5 +192,6 @@ SN76489ENABLE .EQU FALSE ; SN76489 SOUND DRIVER SN7CLK .EQU CPUOSC / 4 ; DEFAULT TO CPUOSC / 4 AY38910ENABLE .EQU TRUE ; AY: AY-3-8910 / YM2149 SOUND DRIVER +AY_CLK .EQU CPUOSC / 4 ; DEFAULT TO CPUOSC / 4 AYMODE .EQU AYMODE_N8 ; AY: DRIVER MODE: AYMODE_[SCG/N8/RCZ80/RCZ180] SPKENABLE .EQU FALSE ; SPK: ENABLE RTC LATCH IOBIT SOUND DRIVER (SPK.ASM) diff --git a/Source/HBIOS/cfg_rcz180.asm b/Source/HBIOS/cfg_rcz180.asm index ebc473e2..2e77375b 100644 --- a/Source/HBIOS/cfg_rcz180.asm +++ b/Source/HBIOS/cfg_rcz180.asm @@ -192,5 +192,6 @@ SN76489ENABLE .EQU FALSE ; SN76489 SOUND DRIVER SN7CLK .EQU CPUOSC / 4 ; DEFAULT TO CPUOSC / 4 AY38910ENABLE .EQU FALSE ; AY: AY-3-8910 / YM2149 SOUND DRIVER +AY_CLK .EQU CPUOSC / 4 ; DEFAULT TO CPUOSC / 4 AYMODE .EQU AYMODE_RCZ180 ; AY: DRIVER MODE: AYMODE_[SCG/N8/RCZ80/RCZ180] SPKENABLE .EQU FALSE ; SPK: ENABLE RTC LATCH IOBIT SOUND DRIVER (SPK.ASM) diff --git a/Source/HBIOS/cfg_rcz80.asm b/Source/HBIOS/cfg_rcz80.asm index dfd4d72a..f4480f94 100644 --- a/Source/HBIOS/cfg_rcz80.asm +++ b/Source/HBIOS/cfg_rcz80.asm @@ -198,5 +198,6 @@ SN76489ENABLE .EQU FALSE ; SN76489 SOUND DRIVER SN7CLK .EQU CPUOSC / 4 ; DEFAULT TO CPUOSC / 4 AY38910ENABLE .EQU FALSE ; AY: AY-3-8910 / YM2149 SOUND DRIVER +AY_CLK .EQU CPUOSC / 4 ; DEFAULT TO CPUOSC / 4 AYMODE .EQU AYMODE_RCZ80 ; AY: DRIVER MODE: AYMODE_[SCG/N8/RCZ80/RCZ180] SPKENABLE .EQU FALSE ; SPK: ENABLE RTC LATCH IOBIT SOUND DRIVER (SPK.ASM) diff --git a/Source/HBIOS/cfg_sbc.asm b/Source/HBIOS/cfg_sbc.asm index c37f0ef4..650d4eae 100644 --- a/Source/HBIOS/cfg_sbc.asm +++ b/Source/HBIOS/cfg_sbc.asm @@ -194,5 +194,6 @@ SN76489ENABLE .EQU FALSE ; SN76489 SOUND DRIVER SN7CLK .EQU CPUOSC / 4 ; DEFAULT TO CPUOSC / 4 AY38910ENABLE .EQU FALSE ; AY: AY-3-8910 / YM2149 SOUND DRIVER +AY_CLK .EQU CPUOSC / 4 ; DEFAULT TO CPUOSC / 4 AYMODE .EQU AYMODE_SCG ; AY: DRIVER MODE: AYMODE_[SCG/N8/RCZ80/RCZ180] SPKENABLE .EQU FALSE ; SPK: ENABLE RTC LATCH IOBIT SOUND DRIVER (SPK.ASM) diff --git a/Source/HBIOS/cfg_scz180.asm b/Source/HBIOS/cfg_scz180.asm index 68fbccf6..dcc39d72 100644 --- a/Source/HBIOS/cfg_scz180.asm +++ b/Source/HBIOS/cfg_scz180.asm @@ -187,5 +187,6 @@ SN76489ENABLE .EQU FALSE ; SN76489 SOUND DRIVER SN7CLK .EQU CPUOSC / 4 ; DEFAULT TO CPUOSC / 4 AY38910ENABLE .EQU FALSE ; AY: AY-3-8910 / YM2149 SOUND DRIVER +AY_CLK .EQU CPUOSC / 4 ; DEFAULT TO CPUOSC / 4 AYMODE .EQU AYMODE_RCZ180 ; AY: DRIVER MODE: AYMODE_[SCG/N8/RCZ80/RCZ180] SPKENABLE .EQU FALSE ; SPK: ENABLE RTC LATCH IOBIT SOUND DRIVER (SPK.ASM) diff --git a/Source/HBIOS/cfg_zeta.asm b/Source/HBIOS/cfg_zeta.asm index 2d9cce1e..14d8770e 100644 --- a/Source/HBIOS/cfg_zeta.asm +++ b/Source/HBIOS/cfg_zeta.asm @@ -139,5 +139,6 @@ SN76489ENABLE .EQU FALSE ; SN76489 SOUND DRIVER SN7CLK .EQU CPUOSC / 4 ; DEFAULT TO CPUOSC / 4 AY38910ENABLE .EQU FALSE ; AY: AY-3-8910 / YM2149 SOUND DRIVER +AY_CLK .EQU CPUOSC / 4 ; DEFAULT TO CPUOSC / 4 AYMODE .EQU AYMODE_NONE ; AY: DRIVER MODE: AYMODE_[SCG/N8/RCZ80/RCZ180] SPKENABLE .EQU FALSE ; SPK: ENABLE RTC LATCH IOBIT SOUND DRIVER (SPK.ASM) diff --git a/Source/HBIOS/cfg_zeta2.asm b/Source/HBIOS/cfg_zeta2.asm index fbbaf6ac..1901511d 100644 --- a/Source/HBIOS/cfg_zeta2.asm +++ b/Source/HBIOS/cfg_zeta2.asm @@ -149,5 +149,6 @@ SN76489ENABLE .EQU FALSE ; SN76489 SOUND DRIVER SN7CLK .EQU CPUOSC / 4 ; DEFAULT TO CPUOSC / 4 AY38910ENABLE .EQU FALSE ; AY: AY-3-8910 / YM2149 SOUND DRIVER +AY_CLK .EQU CPUOSC / 4 ; DEFAULT TO CPUOSC / 4 AYMODE .EQU AYMODE_NONE ; AY: DRIVER MODE: AYMODE_[SCG/N8/RCZ80/RCZ180] SPKENABLE .EQU FALSE ; SPK: ENABLE RTC LATCH IOBIT SOUND DRIVER (SPK.ASM) diff --git a/Source/HBIOS/sn76489.asm b/Source/HBIOS/sn76489.asm index cb062d53..5237aac4 100644 --- a/Source/HBIOS/sn76489.asm +++ b/Source/HBIOS/sn76489.asm @@ -105,40 +105,9 @@ SN7_VOLUME: RET SN7_NOTE: - AUDTRACE(SNT_NOTE) - AUDTRACE_HL - AUDTRACE_CR - - LD DE, 48 - CALL DIV16 - ; BC IS OCTAVE COUNT - ; HL is NOTE WITIN OCTAVE - ADD HL, HL LD DE, SN7NOTETBL - ADD HL, DE - - LD A, (HL) ; RETRIEVE PERIOD COUNT FROM SN7NOTETBL - INC HL - LD H, (HL) - LD L, A - - INC C -SN7_NOTE1: - DEC C - JR Z, SN7_NOTE2 - SRL H - RR L - JR SN7_NOTE1 - -SN7_NOTE2: - LD A, L ; IF WE GENERATE ZERO - RETURN ERROR - OR H - JR NZ, SN7_PERIOD ; OTHERWISE APPLY THE CALCULATED PERIOD - - LD H, $FF - LD L, $FF - JR SN7_PERIOD - + CALL AUD_NOTE ; RETURNS PERIOD IN HL, FALL THRU + ; TO SET THIS PERIOD SN7_PERIOD: AUDTRACE(SNT_PERIOD) AUDTRACE_HL @@ -421,5 +390,3 @@ SN7NOTETBL: .DW SN7RATIO / 5579 .DW SN7RATIO / 5661 .DW SN7RATIO / 5743 - -SIZ_SN7NOTETBL .EQU $ - SN7NOTETBL From ab84a43d33ef1c1b2fd43d535d48610862ecd6a4 Mon Sep 17 00:00:00 2001 From: Dean Netherton Date: Sun, 10 May 2020 13:52:51 +1000 Subject: [PATCH 6/7] Sound drivers: support/rejection of zero value for period SN76489: The SN76489 chip will produce a note for value 0 - but the driver will reject this value - but it does allow value $400 - (logically the same) to produce the lowest note AY38910: This chip does not produce a sound for period of 0 - so its also rejected The max value for this driver is still $0FFF --- Source/HBIOS/ay38910.asm | 6 +++++- Source/HBIOS/sn76489.asm | 15 ++++++--------- 2 files changed, 11 insertions(+), 10 deletions(-) diff --git a/Source/HBIOS/ay38910.asm b/Source/HBIOS/ay38910.asm index 7f712f09..01dc90a5 100644 --- a/Source/HBIOS/ay38910.asm +++ b/Source/HBIOS/ay38910.asm @@ -217,7 +217,11 @@ AY_PERIOD: AUDTRACE(AYT_PERIOD) AUDTRACE_HL AUDTRACE_CR -; + + LD A, H ; IF ZERO - ERROR + OR L + JR Z, AY_PERIOD1 + LD A, H ; MAXIMUM TONE PERIOD IS 12-BITS AND 11110000B ; ALLOWED RANGE IS 0001-0FFF (4095) JR NZ, AY_PERIOD1 ; RETURN NZ IF NUMBER TOO LARGE diff --git a/Source/HBIOS/sn76489.asm b/Source/HBIOS/sn76489.asm index 5237aac4..56aaaecc 100644 --- a/Source/HBIOS/sn76489.asm +++ b/Source/HBIOS/sn76489.asm @@ -113,11 +113,9 @@ SN7_PERIOD: AUDTRACE_HL AUDTRACE_CR - ; TODO: MAKE ZERO BE AN INVALID VALUE (USE 400) TO INDICATE LOWEST NOTE - ; NEED TO UPDATE TUNE.ASM TO SUPPORT THIS? - ; LD A, H ; IF ZERO - ERROR - ; OR L - ; JR Z, SN7_QUERY_PERIOD1 + LD A, H ; IF ZERO - ERROR + OR L + JR Z, SN7_QUERY_PERIOD1 LD (SN7_PENDING_PERIOD), HL ;ASSUME SUCCESS @@ -130,11 +128,10 @@ SN7_PERIOD: RET SN7_QUERY_PERIOD1: ; REQUESTED PERIOD IS LARGER THAN THE SN76489 CAN SUPPORT - LD L, $FF - LD H, $FF + LD A, $FF + LD L, A + LD H, A LD (SN7_PENDING_PERIOD), HL - - OR $FF ; SIGNAL FAILURE RET SN7_PLAY: From 45cd12b77e45336ddc2da0493bf742d679b5c465 Mon Sep 17 00:00:00 2001 From: Dean Netherton Date: Sun, 10 May 2020 14:08:34 +1000 Subject: [PATCH 7/7] Sn76489: Updated todo list --- Source/HBIOS/sn76489.asm | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/Source/HBIOS/sn76489.asm b/Source/HBIOS/sn76489.asm index 56aaaecc..220e07e3 100644 --- a/Source/HBIOS/sn76489.asm +++ b/Source/HBIOS/sn76489.asm @@ -6,8 +6,7 @@ ; ; TODO: ; 1. PROVIDE SUPPORT FOR NOISE CHANNEL -; 2. FOR PERIOD SET, MAP 400 TO 0 AND RETURN ERROR FOR 000 -; 3. DOES THIS WORK FOR FASTER CPUS? ONLY BEEN TEST ON A Z80 7MHZ UNIT +; 2. DOES THIS WORK FOR FASTER CPUS? ONLY BEEN TESTED ON A Z80 7MHZ UNIT ; ;====================================================================== ; CONSTANTS