From 21b2eee7ab56fb66020c892987753e92a55e7c37 Mon Sep 17 00:00:00 2001 From: Wayne Warthen Date: Mon, 15 Jul 2024 12:49:27 -0700 Subject: [PATCH] Add Beep Function to Sound Driver Interface, Issue #402 --- Doc/RomWBW Applications.pdf | Bin 341130 -> 341130 bytes Doc/RomWBW Disk Catalog.pdf | Bin 123905 -> 123905 bytes Doc/RomWBW Errata.pdf | Bin 28759 -> 28758 bytes Doc/RomWBW System Guide.pdf | Bin 578516 -> 581655 bytes Doc/RomWBW User Guide.pdf | Bin 805435 -> 805435 bytes ReadMe.md | 2 +- ReadMe.txt | 2 +- Source/Doc/SystemGuide.md | 13 ++- Source/HBIOS/ay38910.asm | 168 ++++++++---------------------------- Source/HBIOS/hbios.asm | 70 +++++++-------- Source/HBIOS/hbios.inc | 1 + Source/HBIOS/sn76489.asm | 94 +++++++++++--------- Source/HBIOS/spk.asm | 73 ++++++++++------ Source/HBIOS/ym2612.asm | 8 ++ Source/ver.inc | 2 +- Source/ver.lib | 2 +- 16 files changed, 197 insertions(+), 238 deletions(-) diff --git a/Doc/RomWBW Applications.pdf b/Doc/RomWBW Applications.pdf index c02a88ac38e43dca39204d5989e7a03db8e1bc8d..fba769fc7faec2a545f940497b489e221db250b7 100644 GIT binary patch delta 480 zcmeBrDbn>)WWx0N+-)!Jl|78U7~FVPGh)mC`Us;*IjS1h*ql!)SsE{CDqw4w&iUTv zr9KlQYuQ92mXCbK2al)znsZ{I-NH7W*Ht%+Znw8z=RWxP{>$n6{=T@dTCQ!=X)D`5 z9;{0&rW_EwW*^Qf^%Yv)RDzpu~i zTP7zwA?|3*w#JsFw`Fn-u6>($Pqw=L{Jwj0|9{R4P4$nJx_R4v;gKgn9|NvDt(|pc znS`eA|H2(ha$?{49z4EJNcwMZ_rbrDvb(EXvP@Rqy6|XX`1j?dzu1jm-_B_^U}`sD zVgzCk&Ai=!iN)`OmZ7Pkk+G$Tv95u+x`BbZrh>k2eu_(CNveW|i` delta 480 zcmeBrDbn>)WWx0N%xyRJZvBwEaXHglO^sXs?R6wQw+ZQ7V{<;KWNEyl=>sFjdEtAN zm*QENxZWtGay*hvYubMLi|It?S|?t~YhO2{ZsX^-*Jtscf4O_#-xn8F%e8GfZDsq% zgLR3;lmmj-zUw-=%vsLy=;*{}YsG)mx=iT^I+vv$tKT7W_I&-d_^nbR?(I5_$Aab@ zeX69;(REq7a7N@6_WM4jKh-B2Fh1ttSVd3oLXklt*Vq#zd6m>B(c67Bomf`!qfFJ}|IB+|-YyGvx8>b%+RAp% z5~d&-uLm5j-|ITK%vsLy=;*{_Yr}th?9dQg8dGBXy3X-QM$x~Wb?fT`WMnt7SUI%5 z5Mg5p{9K}PuH)aDQkALtpF3*}*UoLqDxMs+lI_<#Wn%*?v4$%!F$#fuT`qoLcgiF=uP}3&!u^B>6EDqJ7d1hlh_gdz@|XI?4D4I zbcOXt*IFGm^W8zp_fy`f{Mql>Qvb$9drM>5!$gCvr*fvAYw6$WB|TxDcmAOyOXt^L z*7AnjY~N(Oe(f!r>B>*eUcMg@<~3iw_xA7C4wL5|XIXMxcY3Zu;>+wlGl}fq9`F11 z?oVI;Y5yMSRc{u0D_8%yxF`1Qfq+TgmGhT9ocGr68)qbcii5RTrpvoeoBZN+<4-zr zH48Is7iMC7cb>!0)X>P-($sW1=OspIIB&boCB_oLL`P=}Lkn{!Csz|!MEI6PS)TVGRQLSRHU%h(K3jY;)hxbWErv%&7>=&A2zij@mvdb$M&ttohI#+I9 zFry})YC+4_Ty6ou=bB9wg-Z%wi`LmIdAVqc$NKMz7qFZ)=l>det$GpncAZAP07a`- zM#n2QvYp0@?6YM(pMI`MiucK0zTnoKC84Vt_dP$s)6?f_(Q9e5Nn4dES~tRM*ZnlL zsrxj1a!#HTHQJ!+o27bH=(Se0kkWLIzx=IJUId-;YKYOR_UE~yT_CqZ+&Z80ikJW2 zBjR5-O5Ay~@#l;)b6ftKcTT9Eo6%}^LC1z?S=h|Amu7z07?#O=sraRDgidO`*~5zp2}a+r@dZ&-dp(ltI>s&=Z1_gOHZdtdqn)2wV3zVExSv*li$C; zx%!X(`!=oW7ne@R)tlspTN_My5_E5Q=8p8;lWU!>F-ui%KerQq#B$4J}Pf47pTQUH#p-0C33MGXMYp diff --git a/Doc/RomWBW Errata.pdf b/Doc/RomWBW Errata.pdf index bfc3136edb92f8b6c0df90a3e6750986bee50548..bf2b0307023acc2212220227dc74df0428b42af2 100644 GIT binary patch delta 1561 zcmah|drZwy9A9a&>td2niz{j#Gv}P&IluF};?lj{Qkx1H@+b*+;zker!*6-aBAevZ z#3FAi=_ZeLU9Zqi(4H_H$7F29uVb3O)=9NT;4ltv}1hQzU^Hwp~#Y9+EDRKKTD^pboex< z6<6G|^f-Z>QR?)&R}6vbtJQDgA|`fsy5=seF6qd1f8A4nX6{hinqOTFa{rQ-c(UPb zi+^dxm;kH8@i*pSp(EWLD-MR7+0~^gUnhGEIolQ45z&}5SO2-L z{Qz3X7J&lgT!4ba2vPh;5Mov_>SvEpFUY7v1WD}Z6cf0GLkLq=2qFYRnN27{i7O&v z%ms@?V%4v>NGR| fPg$YS=~Qv?t77A~#jaVaLX-$vm8YjM*iZEx%{0U~ delta 1555 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

H$Yv+N9gCE2l_Tju$1lqp};yrj&G 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 YmOKjxo*42Oe#!z|=IJjM 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 X%NJid4jsoi*EoL19Y1~Uk>mdlJt0*v delta 81180 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 QBLaQnop(O?(T8sQKSJnb@&Et; diff --git a/Doc/RomWBW User Guide.pdf b/Doc/RomWBW User Guide.pdf index 844b2457e774b7d44d0862983a08ec86972b14c4..60673932212d13ad28a001bb0d82382d283c65cc 100644 GIT binary patch delta 620 zcmdlz#c=l&!wGHmzWrAWc=mn||H0pLz3fem$6~LN@`!`HSEL`c9GU0F@$Wz5a?ky4 z9l28rrL51tzbV&bu23QS;^3zLLIxW+-OeRAPBc2)|NBFAf=d0GR+(>SZ{~k%UhZGs zHa-5ZczyWwRM)*S3Ck-he$C)&X%g{KI%B_`TahKCPaw(7lk2nWzWUfsrzHV-`{vc! z3wo|8`(sz17a%lIMPmMfNr@$26x!xIW($pRQM#1%xI$33PKz(AZjt`JqOWBibQD^I znwBWw4`9|0ff~YCL_X-8o%%>e1^7Et103e>@#KX9TfLY)PpK zS}=F{PrL0cv$nHrYxu6e(=@lYNe*~<*h5% z%>DR&lUU*^%e9+4_VV1h5q)#!_MqH}mnDljue7Ev{_=cn@$X+%3p7_uIiOm(HfL$( z>c>hJ zr&+#Ly((I563y93p8vwmeiFgka|-MCXl<`+s`3K4Lf#_mV+Wv}s{=*aDHT6*)>ui$tW4aeHqIHVfD)T)A;-*Y-yB zvYrF?itjXY8$FTH*~rk^`~35XlD7|ZCpxa$epEHmME|Dd#Z*RZuQ)^BrQ9GHn zbnY_0+TMjG%cj)&zdsUp?#p5eNNv?jj){OmN zdiDJF{p*Te@HAU9wOcbW0x^hY24WTv` zndusss~Z@oYbxmb=BKzMmZU0ZxL6q(7?~KD!<20QwUhf{zmto(iJ5_cnYo#zxv{a6 gsga?Zlev?lxs$o6g|o4ltDS<4IRPcpWxaUh01lZB3jhEB diff --git a/ReadMe.md b/ReadMe.md index 6e51ba26..aac1b197 100644 --- a/ReadMe.md +++ b/ReadMe.md @@ -3,7 +3,7 @@ **RomWBW ReadMe** \ Version 3.5 \ Wayne Warthen ([wwarthen@gmail.com](mailto:wwarthen@gmail.com)) \ -08 Jul 2024 +15 Jul 2024 # Overview diff --git a/ReadMe.txt b/ReadMe.txt index 73b12b3c..e30291e8 100644 --- a/ReadMe.txt +++ b/ReadMe.txt @@ -1,6 +1,6 @@ RomWBW ReadMe Wayne Warthen (wwarthen@gmail.com) -08 Jul 2024 +15 Jul 2024 diff --git a/Source/Doc/SystemGuide.md b/Source/Doc/SystemGuide.md index 0976fe0a..a1a68c0d 100644 --- a/Source/Doc/SystemGuide.md +++ b/Source/Doc/SystemGuide.md @@ -2015,7 +2015,7 @@ sound will play for the duration defined in HL and then return. | **Entry Parameters** | **Returned Values** | |----------------------------------------|----------------------------------------| | B: 0x57 | A: Status | -| C: Disk Unit | C: Device Attributes | +| C: Sound Unit | C: Device Attributes | | | D: Device Type | | | E: Device Number | | | H: Device Unit Mode | @@ -2038,6 +2038,17 @@ is servicing the specified unit. Both of these values are considered driver specific. Refer to the associated hardware driver for the values used. +### Function 0x58 -- Sound Beep (SNDBEEP) + +| **Entry Parameters** | **Returned Values** | +|----------------------------------------|----------------------------------------| +| B: 0x58 | A: Status | +| C: Sound Unit | | + +Play a beep tone on the specified Sound Unit (C). The beep will +normally be about 1/3 second in duration and the tone will be +approximately B5. + `\clearpage`{=latex} ## System (SYS) diff --git a/Source/HBIOS/ay38910.asm b/Source/HBIOS/ay38910.asm index ecd23da2..c357b0d9 100644 --- a/Source/HBIOS/ay38910.asm +++ b/Source/HBIOS/ay38910.asm @@ -127,6 +127,7 @@ AY_FNTBL: .DW AY_QUERY .DW AY_DURATION .DW AY_DEVICE + .DW AY_BEEP ; #IF (($ - AY_FNTBL) != (SND_FNCNT * 2)) .ECHO "*** INVALID SND FUNCTION TABLE ***\n" @@ -156,7 +157,6 @@ AY_NOISECNT .EQU 1 ; COUNT NUMBER OF NOISE CHANNELS ; ; ANNOUNCE DEVICE ON CONSOLE. ACTIVATE DEVICE IF REQUIRED. ; SETUP FUNCTION TABLES. SETUP THE DEVICE. -; ANNOUNCE DEVICE WITH BEEP. SET VOLUME OFF. ; RETURN INITIALIZATION STATUS ; AY38910_INIT: @@ -221,77 +221,22 @@ AY38910_INIT: LD A,$FF ; UNSUCCESSFULL INIT RET ; -AY_FND: LD IY, AY_IDAT ; SETUP FUNCTION TABLE +AY_FND: + LD IY, AY_IDAT ; SETUP FUNCTION TABLE LD BC, AY_FNTBL ; POINTER TO INSTANCE DATA LD DE, AY_IDAT ; BC := FUNCTION TABLE ADDRESS CALL SND_ADDENT ; DE := INSTANCE DATA PTR ; - CALL AY_INIT ; SET DEFAULT CHIP CONFIGURATION -; - LD E,$08 ; SET VOLUME TO 50% - CALL AY_SETV ; ON ALL CHANNELS -; -; LD DE,(AY_R2CHBP*256)+$55 ; BEEP ON CHANNEL B (CENTER) -; CALL AY_WRTPSG ; R02 = $55 = 01010101 - LD DE,(AY_R3CHBP*256)+$00 - CALL AY_WRTPSG ; R03 = $00 = XXXX0000 -; -#IF (SYSTIM != TM_NONE) - LD A, TICKFREQ / 3 ; SCHEDULE IN 1/3 SECOND TO TURN OFF SOUND - LD (AY_TIMTIK), A -; - ; RESET THE AY_TIMER BYPASS - LD HL,AY_TIMER1 - LD (AY_TIMER + 1),HL -; - ; HOOK THE TICK VECTOR - LD HL,(VEC_TICK + 1) ; GET CUR TICKS VECTOR - LD (AY_TIMHOOK + 1),HL ; SAVE IT INTERNALLY - LD HL,AY_TIMER ; INSTALL TIMER HOOK HANDLER - LD (VEC_TICK + 1),HL -; - LD A, $02 ; NOT READY & IN INTERUPT HANDLER - LD (AY_READY), A -#ELSE - CALL LDELAY ; HALF SECOND DELAY - LD E,$00 ; SET VOLUME OFF - CALL AY_SETV ; ON ALL CHANNELS - LD A, $01 ; READY & NOT IN INTERUPT HANDLER - LD (AY_READY), A -#ENDIF -; + CALL AY_RESET ; SET DEFAULT CHIP CONFIGURATION XOR A ; SUCCESSFULL INIT RET ; -#IF (SYSTIM != TM_NONE) -AY_TIMER: - JP AY_TIMER1 ; SELF MODIFIED TO BYPASS HANDLER -AY_TIMER1: - LD A,(AY_TIMTIK) - DEC A - LD (AY_TIMTIK), A - JR NZ,AY_TIMHOOK -; - LD E,$00 ; SET VOLUME OFF - CALL AY_SETV ; ON ALL CHANNELS - LD A, $01 ; READY & NOT IN INTERUPT HANDLER - LD (AY_READY), A -; - ; MAKE AY_TIMER A NO-OP HANDLER - LD HL,(AY_TIMHOOK + 1) - LD (AY_TIMER + 1),HL -; -AY_TIMHOOK: - JP 0 ; OVERWRITTEN WITH NEXT HANDLER -; -AY_TIMTIK .DB 0 ; COUNT DOWN TO FINISH BOOT BEEP -#ENDIF -; ;====================================================================== ; INITIALIZE DEVICE ;====================================================================== ; AY_INIT: + ; HANDLE R7 SPECIAL #IF (AYMODE == AYMODE_NABU) ; I/O B=INPUT, I/O A=OUTPUT, NOISE CHANNEL C, B, A DISABLE, TONE CHANNEL C, B, A ENABLE LD DE,(AY_R7ENAB*256)+$78 ; SET MIXER CONTROL / IO ENABLE. $78 - 01 111 000 @@ -299,29 +244,21 @@ AY_INIT: ; I/O PORTS = OUTPUT, NOISE CHANNEL C, B, A DISABLE, TONE CHANNEL C, B, A ENABLE LD DE,(AY_R7ENAB*256)+$F8 ; SET MIXER CONTROL / IO ENABLE. $F8 - 11 111 000 #ENDIF - JP AY_WRTPSG -; -AY_CHKREDY: - LD A, (AY_READY) - BIT 0, A - RET NZ - - POP HL ; REMOVE LAST RETURN ADDRESS - OR $FF - RET ; RETURN NZ -; -;====================================================================== -; SET VOLUME ALL CHANNELS -;====================================================================== -; -AY_SETV: - PUSH BC - LD B,AY_TONECNT ; NUMBER OF CHANNELS - LD D,AY_R8AVOL ; BASE REGISTER FOR VOLUME -AY_SV: CALL AY_WRTPSG ; CYCLING THROUGH ALL CHANNELS - INC D - DJNZ AY_SV - POP BC + CALL AY_WRTPSG ; SETUP R7 +; + ; THEN JUST SET ALL OTHER REGISTERS TO ZERO + LD E,0 ; VALUE ZERO + LD D,0 ; START W/ R0 + LD B,7 ; DO 7 REGISTERS (R0-R6) + CALL AY_INIT1 ; DO IT + INC D ; SKIP R7 + LD B,6 ; DO 6 MORE REGISTERS (R8-R13) + ; FALL THRU TO DO IT +; +AY_INIT1: + CALL AY_WRTPSG ; WRITE REGISTER + INC D ; BUMP TO NEXT + DJNZ AY_INIT1 ; LOOP RET ; ;====================================================================== @@ -333,25 +270,15 @@ AY_SV: CALL AY_WRTPSG ; CYCLING THROUGH ALL CHANNELS ; AY_RESET: AUDTRACE(AYT_INIT) - CALL AY_CHKREDY ; RETURNS TO OUR CALLER IF NOT READY -; - PUSH DE - PUSH HL CALL AY_INIT ; SET DEFAULT CHIP CONFIGURATION ; - AUDTRACE(AYT_VOLOFF) - LD E,0 ; SET VOLUME OFF - CALL AY_SETV ; ON ALL CHANNELS -; + ; RESET DEFAULTS IN CASE OF AN IN-PLACE HBIOS RESTART + LD HL,0 + LD (AY_PENDING_PERIOD),HL ; SET TONE PERIOD TO ZERO + LD (AY_PENDING_DURATION),HL; SET DURATION TO ZERO XOR A ; SIGNAL SUCCESS LD (AY_PENDING_VOLUME),A ; SET VOLUME TO ZERO - LD H,A - LD L,A - LD (AY_PENDING_PERIOD),HL ; SET TONE PERIOD TO ZERO -; - POP HL - POP DE - RET + RET ; DONE, A=0 ABOVE ; ;====================================================================== ; SOUND DRIVER FUNCTION - VOLUME @@ -414,12 +341,14 @@ AY_PLAY: AUDTRACE(AYT_PLAY) AUDTRACE_D AUDTRACE_CR - CALL AY_CHKREDY ; RETURNS TO OUR CALLER IF NOT READY ; LD A, (AY_PENDING_PERIOD + 1) ; CHECK THE HIGH BYTE OF THE PERIOD INC A - JR Z, AY_PLAY1 ; PERIOD IS TOO LARGE, UNABLE TO PLAY + JR NZ, AY_PLAY1 ; PERIOD IS OK, CONTINUE + OR $FF ; ELSE TOO LARGE, SIGNAL FAILURE + RET ; AND RETURN ; +AY_PLAY1: PUSH HL PUSH DE LD A,D ; LIMIT CHANNEL 0-2 @@ -432,7 +361,7 @@ AY_PLAY: AUDTRACE_CR ; LD HL,AY_PENDING_PERIOD ; WRITE THE LOWER - ld E,(HL) ; 8-BITS OF THE TONE PERIOD + LD E,(HL) ; 8-BITS OF THE TONE PERIOD CALL AY_WRTPSG INC D ; NEXT REGISTER INC HL ; NEXT BYTE @@ -467,18 +396,6 @@ AY_PLAY: XOR A ; SIGNAL SUCCESS RET ; -AY_PLAY1: - PUSH DE ; TURN VOLUME OFF TO STOP PLAYING - LD A,D ; LIMIT CHANNEL 0-2 - AND $3 ; AND INDEX TO THE - ADD A,AY_R8AVOL ; CHANNEL VOLUME - LD D,A ; REGISTER - LD E,0 - CALL AY_WRTPSG ; SET VOL (E) IN CHANNEL REG (D) - POP DE - OR $FF ; SIGNAL FAILURE - RET -; ;====================================================================== ; SOUND DRIVER FUNCTION - QUERY AND SUBFUNCTIONS ;====================================================================== @@ -546,22 +463,11 @@ AY_DEVICE: RET ; ;====================================================================== -; NON-BLOCKING INTERRUPT CODE +; SOUND DRIVER FUNCTION - BEEP ;====================================================================== ; -AY_DI: - LD A, (AY_READY) - BIT 1, A - RET NZ - HB_DI - RET -; -AY_EI: - LD A, (AY_READY) - BIT 1, A - RET NZ - HB_EI - RET +AY_BEEP: + JP SND_BEEP ; DEFER TO GENERIC CODE IN HBIOS ; ;====================================================================== ; @@ -571,7 +477,6 @@ AY_EI: ;====================================================================== ; AY_WRTPSG: - CALL AY_DI #IFDEF SBCV2004 LD A,(HB_RTCVAL) ; GET CURRENT RTC LATCH VALUE OR %00001000 ; SBC-V2-004 CHANGE @@ -595,14 +500,13 @@ AY_WRTPSG: LD A,(HB_RTCVAL) ; SBC-V2-004 CHANGE TO OUT (RTCIO),A ; NORMAL CLOCK SPEED #ENDIF - JP AY_EI + RET ; ;====================================================================== ; ; READ FROM REGISTER D AND RETURN WITH RESULT IN E ; AY_RDPSG: - CALL AY_DI #IFDEF SBCV2004 LD A,(HB_RTCVAL) ; GET CURRENT RTC LATCH VALUE OR %00001000 ; SBC-V2-004 CHANGE @@ -626,15 +530,13 @@ AY_RDPSG: LD A,(HB_RTCVAL) ; SBC-V2-004 CHANGE TO OUT (RTCIO),A ; NORMAL CLOCK SPEED #ENDIF - JP AY_EI + RET ; ;====================================================================== ; AY_PENDING_PERIOD .DW 0 ; PENDING PERIOD (12 BITS) ; ORDER AY_PENDING_VOLUME .DB 0 ; PENDING VOL (8 BITS) ; SIGNIFICANT AY_PENDING_DURATION .DW 0 ; PENDING DURATION (16 BITS) -AY_READY .DB 0 ; BIT 0 -> NZ DRIVER IS READY TO RECEIVE PLAY COMMAND - ; BIT 1 -> NZ EXECUTING WITHIN TIMER HANDLER = DO NOT DIS/ENABLE INT ; #IF AUDIOTRACE AYT_INIT .DB "\r\nAY_INIT\r\n$" diff --git a/Source/HBIOS/hbios.asm b/Source/HBIOS/hbios.asm index e87743c6..b839f340 100644 --- a/Source/HBIOS/hbios.asm +++ b/Source/HBIOS/hbios.asm @@ -3492,11 +3492,12 @@ DBG_NOTE: ; #ENDIF ; -; DIAGNOSTIC ROUTINE TO PLAY A BEEP -; -#IFDEF TESTING - CALL SND_BEEP -#ENDIF + ; MAKE A LITTLE NOISE... + LD B,BF_SNDBEEP ; HBIOS BEEP FUNCTION + LD C,0 ; SOUND UNIT 0 + LD A,(SND_CNT) ; GET SOUND UNIT COUNT + OR A ; CHECK FOR ZERO + CALL NZ,HB_DISPATCH ; DO IT IF WE HAVE A SOUND UNIT ; ;-------------------------------------------------------------------------------------------------- ; TRANSITION TO USER LAND @@ -3841,7 +3842,7 @@ HB_DISPATCH1: JP C,DSKY_DISPATCH CP BF_VDA + $10 ; $40-$4F: VIDEO DISPLAY ADAPTER JP C,VDA_DISPATCH - CP BF_SND + $08 ; $50-$58: SOUND DRIVERS + CP BF_SND + $10 ; $50-$5F: SOUND DRIVERS JP C,SND_DISPATCH CP BF_SYS ; SKIP TO BF_SYS VALUE AT $F0 JR C,HB_DISPERR ; ERROR IF LESS THAN BF_SYS @@ -4439,7 +4440,7 @@ SND_ADDENT: ; WORD DRIVER FUNCTION TABLE ADDRESS ; WORD UNIT SPECIFIC DATA (TYPICALLY A DEVICE INSTANCE DATA ADDRESS) ; -SND_FNCNT .EQU 8 ; NUMBER OF SND FUNCS (FOR RANGE CHECK) +SND_FNCNT .EQU 9 ; NUMBER OF SND FUNCS (FOR RANGE CHECK) SND_MAX .EQU 5 ; UP TO 5 UNITS SND_SIZ .EQU SND_MAX * 4 ; EACH ENTRY IS 4 BYTES ; @@ -4452,47 +4453,48 @@ SND_TBL .FILL SND_SIZ,0 ; SPACE FOR ENTRIES ; SPEAKER BEEP ROUTINE ;-------------------------------------------------------------------------------------------------- ; -;;; RELOCATE -; -; ROUTINE TO BEEP THE DEFAULT SOUND UNIT -; NEED TO CHECK FOR EXISTENCE OF SOUND UNIT +; ROUTINE TO BEEP A SOUND UNIT +; THE SOUND DRIVERS CAN DEFER THEIR BEEP FUNCTION TO THIS FUNCTION +; ON ENTRY, B = SOUND UNIT ; WHICH CHANNEL SHOULD BE USED? IS THERE A GOOD DEFAULT CHANNEL? ; SND_BEEP: - ; CHECK FOR AT LEAST 1 SOUND DEVICE - LD A,(SND_CNT) ; GET SOUND UNIT COUNT - OR A ; CHECK FOR ZERO - RET Z ; BAIL OUT IF NO SOUND UNITS - - ; PLAY A BEEP ON SOUND DEVICE UNIT 0 + ; RESET THE SOUND DEVICE TO START LD B,$50 ; SOUND RESET FUNCTION - LD C,0 ; SOUND UNIT NUMBER - CALL SND_DISPATCH ; DO IT + CALL SND_BEEP_DISP ; DO IT +; + ; SET VOLUME TO MAX LD B,$51 ; VOLUME - LD C,0 ; SOUND UNIT NUMBER LD L,$FF ; MAX - CALL SND_DISPATCH ; DO IT + CALL SND_BEEP_DISP ; DO IT +; + ; SET NOTE TO PLAY LD B,$53 ; SELECT NOTE - LD C,0 ; SOUND UNIT NUMBER - ;LD HL,0 ; A0# LD HL,244 ; B5 (CLOSE TO 1 KHZ) - CALL SND_DISPATCH ; DO IT - ;LD B,$56 ; DURATION - ;LD C,0 ; SOUND UNIT NUMBER - ;LD HL,500 ; 1/2 SECOND - ;CALL SND_DISPATCH ; DO IT + CALL SND_BEEP_DISP ; DO IT +; + ; START PLAYING THE SOUND LD B,$54 ; PLAY SOUND - LD C,0 ; SOUND UNIT NUMBER LD D,0 ; CHANNEL 0 - CALL SND_DISPATCH ; DO IT - LD DE,15625 ; PLAY FOR 1/4 SECOND + CALL SND_BEEP_DISP ; DO IT +; + ; WAIT A BIT FOR SOUND TO PLAY + LD DE,23436 ; PLAY FOR 1/3 SECOND CALL VDELAY ; WAIT WHILE TONE IS PLAYED - ;CALL LDELAY ; LET SOUND PLAY 1/2 SECOND +; LD B,$50 ; SOUND RESET FUNCTION - LD C,0 ; SOUND UNIT NUMBER - CALL SND_DISPATCH ; DO IT + CALL SND_BEEP_DISP ; DO IT +; + XOR A ; SIGNAL SUCCESS RET ; DONE ; +SND_BEEP_DISP: + ; CALL SOUND DISPATCHER PRESERVING BC ACROSS CALL + PUSH BC + CALL SND_DISPATCH + POP BC + RET +; ;-------------------------------------------------------------------------------------------------- ; SYSTEM FUNCTION DISPATCHER ;-------------------------------------------------------------------------------------------------- diff --git a/Source/HBIOS/hbios.inc b/Source/HBIOS/hbios.inc index 5c9634c8..a6006a20 100644 --- a/Source/HBIOS/hbios.inc +++ b/Source/HBIOS/hbios.inc @@ -74,6 +74,7 @@ BF_SNDPLAY .EQU BF_SND + 4 ; INITIATE THE REQUESTED SOUND COMMAND BF_SNDQUERY .EQU BF_SND + 5 ; E IS SUBFUNCTION BF_SNDDURATION .EQU BF_SND + 6 ; REQUEST DURATION HL MILLISECONDS BF_SNDDEVICE .EQU BF_SND + 7 ; SOUND DEVICE INFO REQUEST +BF_SNDBEEP .EQU BF_SND + 8 ; PLAY A BEEP SOUND ON DEVICE ; ; BF_SNDQUERY SUBCOMMANDS BF_SNDQ_STATUS .EQU 0 diff --git a/Source/HBIOS/sn76489.asm b/Source/HBIOS/sn76489.asm index 6f31de33..2b5c2f6d 100644 --- a/Source/HBIOS/sn76489.asm +++ b/Source/HBIOS/sn76489.asm @@ -49,10 +49,6 @@ SN7_IDAT .EQU 0 SN7_TONECNT .EQU 3 ; COUNT NUMBER OF TONE CHANNELS SN7_NOISECNT .EQU 1 ; COUNT NUMBER OF NOISE CHANNELS SN7_CHCNT .EQU SN7_TONECNT + SN7_NOISECNT -CHANNEL_0_SILENT .EQU $9F -CHANNEL_1_SILENT .EQU $BF -CHANNEL_2_SILENT .EQU $DF -CHANNEL_3_SILENT .EQU $FF ; #INCLUDE "audio.inc" ; @@ -78,52 +74,67 @@ SN76489_INIT: LD A, SN76489_PORT_RIGHT CALL PRTHEXBYTE - CALL SN7_VOLUME_OFF + CALL SN7_RESET XOR A ; SIGNAL SUCCESS RET - +; ;====================================================================== -; SN76489 DRIVER - SOUND ADAPTER (SND) FUNCTIONS +; INITIALIZE DEVICE ;====================================================================== ; -SN7_RESET: - AUDTRACE(SNT_INIT) - CALL SN7_VOLUME_OFF - XOR A ; SIGNAL SUCCESS - RET - -SN7_VOLUME_OFF: - AUDTRACE(SNT_VOLOFF) - - +SN7_INIT: +; #IFDEF SBCV2004 LD A,(HB_RTCVAL) OR %00001000 ; SBC-V2-004+ CHANGE OUT (RTCIO),A ; TO HALF CLOCK SPEED #ENDIF - - LD A, CHANNEL_0_SILENT - OUT (SN76489_PORT_LEFT), A - OUT (SN76489_PORT_RIGHT), A - - LD A, CHANNEL_1_SILENT - OUT (SN76489_PORT_LEFT), A - OUT (SN76489_PORT_RIGHT), A - - LD A, CHANNEL_2_SILENT - OUT (SN76489_PORT_LEFT), A - OUT (SN76489_PORT_RIGHT), A - - LD A, CHANNEL_3_SILENT - OUT (SN76489_PORT_LEFT), A - OUT (SN76489_PORT_RIGHT), A - +; + LD HL,SN7_REG_INIT ; POINT TO REG INIT TBL + LD B,SN7_REG_CNT ; BYTES IN TABLE +SN7_INIT1 + LD A,(HL) + INC HL ; BUMP FOR NEXT TIME + OUT (SN76489_PORT_LEFT), A ; WRITE LEFT PORT + OUT (SN76489_PORT_RIGHT), A ; WRITE RIGHT PORT + DJNZ SN7_INIT1 ; LOOP TILL DONE +; #IFDEF SBCV2004 LD A,(HB_RTCVAL) AND %11110111 ; SBC-V2-004+ CHANGE TO OUT (RTCIO),A ; NORMAL CLOCK SPEED #ENDIF - +; + RET +; +SN7_REG_INIT: + .DB $80,$00 ; TONE 1 FREQ (2 BYTES) + .DB $9F ; TONE 1 ATTENTUATION + .DB $A0,$00 ; TONE 2 FREQ (2 BYTES) + .DB $BF ; TONE 2 ATTENTUATION + .DB $C0,$00 ; TONE 3 FREQ (2 BYTES) + .DB $DF ; TONE 3 ATTENTUATION + .DB $E0 ; NOISE CONTROL + .DB $FF ; NOISE ATTENTUATION +SN7_REG_CNT .EQU $ - SN7_REG_INIT +; +;====================================================================== +; SN76489 DRIVER - SOUND ADAPTER (SND) FUNCTIONS +;====================================================================== +; +SN7_RESET: + AUDTRACE(SNT_INIT) +; + CALL SN7_INIT ; HARDWARE INIT +; + ; RESET DEFAULTS IN CASE OF AN IN-PLACE HBIOS RESTART + LD HL,0 + LD (SP_PENDING_PERIOD),HL + LD (SP_PENDING_DURATION),HL + XOR A + LD (SP_PENDING_VOLUME),A +; + XOR A RET ; BIT MAPPING @@ -391,6 +402,9 @@ SN7_DEVICE: XOR A RET +SN7_BEEP: + JP SND_BEEP ; DEFER TO GENERIC CODE IN HBIOS + SN7_FNTBL: .DW SN7_RESET .DW SN7_VOLUME @@ -400,18 +414,16 @@ SN7_FNTBL: .DW SN7_QUERY .DW SN7_DURATION .DW SN7_DEVICE + .DW SN7_BEEP ; #IF (($ - SN7_FNTBL) != (SND_FNCNT * 2)) .ECHO "*** INVALID SND FUNCTION TABLE ***\n" !!!!! #ENDIF -SN7_PENDING_PERIOD - .DW 0 ; PENDING PERIOD (10 BITS) -SN7_PENDING_VOLUME - .DB 0 ; PENDING VOL (8 BITS -> DOWNCONVERTED TO 4 BITS AND INVERTED) -SN7_PENDING_DURATION - .DW 0 ; PENDING DURATION (16 BITS) +SN7_PENDING_PERIOD .DW 0 ; PENDING PERIOD (10 BITS) +SN7_PENDING_VOLUME .DB 0 ; PENDING VOL (8 BITS -> DOWNCONVERTED TO 4 BITS AND INVERTED) +SN7_PENDING_DURATION .DW 0 ; PENDING DURATION (16 BITS) STR_MESSAGELT .DB "\r\nSN76489: LEFT IO=0x$" STR_MESSAGERT .DB ", RIGHT IO=0x$" diff --git a/Source/HBIOS/spk.asm b/Source/HBIOS/spk.asm index 23ab2079..3ceb148c 100644 --- a/Source/HBIOS/spk.asm +++ b/Source/HBIOS/spk.asm @@ -13,14 +13,15 @@ ; DRIVER FUNCTION TABLE AND INSTANCE DATA ; SP_FNTBL: - .DW SP_STUB ; SP_RESET - .DW SP_STUB ; SP_VOLUME + .DW SP_RESET + .DW SP_VOLUME .DW SP_PERIOD .DW SP_NOTE .DW SP_PLAY .DW SP_QUERY .DW SP_DURATION .DW SP_DEVICE + .DW SP_BEEP ; #IF (($ - SP_FNTBL) != (SND_FNCNT * 2)) .ECHO "*** INVALID SND FUNCTION TABLE ***\n" @@ -37,8 +38,8 @@ SP_RTCIOMSK .EQU 00000100B ; FOR OTHER DRIVERS, THE PERIOD VALUE FOR THE TONE IS STORED AT PENDING_PERIOD ; FOR THE SPK DRIVER THE ADDRESS IN THE TONE TABLE IS STORED IN PENDING_PERIOD ; -SP_PENDING_PERIOD .DW SP_NOTE_C8 ; PENDING PERIOD (16 BITS) -SP_PENDING_VOLUME .DB $FF ; PENDING VOL (8 BITS) +SP_PENDING_PERIOD .DW 0 ; PENDING PERIOD (16 BITS) +SP_PENDING_VOLUME .DB 0 ; PENDING VOL (8 BITS) SP_PENDING_DURATION .DW 0 ; PENDING DURATION (16 BITS) SP_TBLRDY .DB 0 ; IF != 0, NOTE TABLE IS READY ; @@ -60,17 +61,9 @@ SP_INIT: PRTS("SPK: IO=0x$") LD A,RTCIO CALL PRTHEXBYTE -; - ; RESET DEFAULTS IN CASE OF AN IN-PLACE HBIOS RESTART - LD HL,SP_NOTE_C8 - LD (SP_PENDING_PERIOD),HL - LD A,$FF - LD (SP_PENDING_VOLUME),A - XOR A - LD (SP_PENDING_DURATION),A -; +; CALL SP_SETTBL ; SETUP TONE TABLE - CALL SP_PLAY ; PLAY DEFAULT NOTE + CALL SP_RESET ; RESET PARAMETERS ; XOR A RET @@ -79,17 +72,24 @@ SP_INIT: ; SOUND DRIVER FUNCTION - RESET ;====================================================================== ; -;SP_RESET: -; XOR A ; SUCCESSFULL RESET -; RET +SP_RESET: + ; RESET DEFAULTS IN CASE OF AN IN-PLACE HBIOS RESTART + LD HL,0 + LD (SP_PENDING_PERIOD),HL ; SET TONE PERIOD TO ZERO + LD (SP_PENDING_DURATION),HL; SET DURATION TO ZERO + XOR A ; SIGNAL SUCCESS + LD (SP_PENDING_VOLUME),A ; SET VOLUME TO ZERO +; + XOR A ; SUCCESSFULL RESET + RET ; ;====================================================================== ; SOUND DRIVER FUNCTION - VOLUME ;====================================================================== ; -;SP_VOLUME: -; XOR A ; SIGNAL SUCCESS -; RET +SP_VOLUME: + XOR A ; SIGNAL SUCCESS + RET ; ;====================================================================== ; SOUND DRIVER FUNCTION - PERIOD @@ -97,7 +97,6 @@ SP_INIT: ; SP_PERIOD: LD (SP_PENDING_PERIOD), HL ; SAVE AND RETURN SUCCESSFUL -SP_STUB: XOR A RET ; @@ -362,16 +361,40 @@ SP_DEVICE: RET ; ;====================================================================== +; SOUND DRIVER FUNCTION - BEEP +;====================================================================== +; +SP_BEEP: + LD HL,SP_NOTE_B5 ; B5 (CLOSE TO 1 KHZ) + LD (SP_PENDING_PERIOD),HL + ;LD A,$FF + ;LD (SP_PENDING_VOLUME),A + ;XOR A + ;LD (SP_PENDING_DURATION),A +; + CALL SP_PLAY ; PLAY DEFAULT NOTE + CALL SP_RESET ; RESET DRIVER +; + XOR A + RET +; +;====================================================================== ; ; STANDARD ONE SECOND TONE TABLES AT 1MHZ. ; FOR SP_BEEPER ROUTINE, FIRST WORD LOADED INTO DE, SECOND INTO HL +; THE PARAMETER TO SP_TONESET IS (FREQ * 100) +; DE: FREQUENCY IN HZ +; HL: T-STATES PER HALF-CYCL E / 4 AT 1 MHZ CPU SPEED +; EX. MIDDLE C IS 261.63 HZ, 523.26 HALF CYCLES PER SECOND +; 1,000,000 / 523.26 / 4 = 477 +; OR ALTERNATIVELY 12,500,000 / 26163 = 477 ; ;====================================================================== ; #DEFINE SP_TONESET(SP_FREQ) .DW SP_FREQ/100, 12500000/SP_FREQ ; SP_TUNTBL: - SP_TONESET(1635) ; C0 + SP_TONESET(1635) ; C0 ; DE=16, HL=7645 SP_TONESET(1732) ; C SP_TONESET(1835) ; D0 SP_TONESET(1945) ; D @@ -419,7 +442,7 @@ SP_TUNTBL: SP_TONESET(22000) ; A3 SP_TONESET(23308) ; A SP_TONESET(24694) ; B3 - SP_TONESET(26163) ; C4 + SP_TONESET(26163) ; C4 ; DE=261, HL=477 SP_TONESET(27718) ; C SP_TONESET(29366) ; D4 SP_TONESET(31113) ; D @@ -442,6 +465,7 @@ SP_TUNTBL: SP_TONESET(83061) ; G SP_TONESET(88000) ; A5 SP_TONESET(93233) ; A +SP_NOTE_B5: SP_TONESET(98777) ; B5 SP_TONESET(104650) ; C6 SP_TONESET(110873) ; C @@ -467,7 +491,6 @@ SP_TUNTBL: SP_TONESET(352000) ; A7 SP_TONESET(372931) ; A SP_TONESET(395107) ; B7 -SP_NOTE_C8: SP_TONESET(418601) ; C8 SP_TONESET(443492) ; C SP_TONESET(469863) ; D8 @@ -479,7 +502,7 @@ SP_NOTE_C8: SP_TONESET(664488) ; G SP_TONESET(704000) ; A8 SP_TONESET(745862) ; A - SP_TONESET(790213) ; B8 + SP_TONESET(790213) ; B8 ; DE=7902, HL=15 ; SP_NOTCNT .EQU ($-SP_TUNTBL) / 4 ; diff --git a/Source/HBIOS/ym2612.asm b/Source/HBIOS/ym2612.asm index a4818364..018729d6 100644 --- a/Source/HBIOS/ym2612.asm +++ b/Source/HBIOS/ym2612.asm @@ -55,6 +55,7 @@ YM_FNTBL: .DW YM_RESET .DW YM_QUERY .DW YM_DURATION .DW YM_DEVICE + .DW YM_BEEP ; #IF (($ - YM_FNTBL) != (SND_FNCNT * 2)) .ECHO "*** INVALID SND FUNCTION TABLE ***\n" @@ -197,6 +198,13 @@ YM_DEVICE: LD D,SNDDEV_YM2612 ; D := DEVICE TYPE RET ; ;------------------------------------------------------------------------------ +; Sound driver function - BEEP +;------------------------------------------------------------------------------ +; +YM_BEEP: + JP SND_BEEP ; DEFER TO GENERIC CODE IN HBIOS +; +;------------------------------------------------------------------------------ ; Sound driver function - RESET ; Initialize device. Set volume off. Reset volume and tone variables. ;------------------------------------------------------------------------------ diff --git a/Source/ver.inc b/Source/ver.inc index 1581133f..5679fdb6 100644 --- a/Source/ver.inc +++ b/Source/ver.inc @@ -2,7 +2,7 @@ #DEFINE RMN 5 #DEFINE RUP 0 #DEFINE RTP 0 -#DEFINE BIOSVER "3.5.0-dev.55" +#DEFINE BIOSVER "3.5.0-dev.56" #define rmj RMJ #define rmn RMN #define rup RUP diff --git a/Source/ver.lib b/Source/ver.lib index 7e98e689..ee4ff2c3 100644 --- a/Source/ver.lib +++ b/Source/ver.lib @@ -3,5 +3,5 @@ rmn equ 5 rup equ 0 rtp equ 0 biosver macro - db "3.5.0-dev.55" + db "3.5.0-dev.56" endm