From 5e65fcba1347515f13748416e26f5ef408a5c0d6 Mon Sep 17 00:00:00 2001 From: Dean Netherton Date: Sun, 10 May 2020 13:17:20 +1000 Subject: [PATCH] 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