diff --git a/Source/HBIOS/ansi.asm b/Source/HBIOS/ansi.asm index 1f2d5f8a..4b4612c1 100644 --- a/Source/HBIOS/ansi.asm +++ b/Source/HBIOS/ansi.asm @@ -280,6 +280,8 @@ ANSI_STSTR: ; STATE == STRING DATA ;================================================================================================== ; ANSI_C0DISP: + CP $07 ; BEL + JP Z,ANSI_BEL CP $08 ; BS: BACKSPACE JP Z,ANSI_BS CP $09 ; HT: TAB @@ -615,6 +617,9 @@ ANSI_FF: CALL ANSI_VDADISP ; PERFORM FILL JP ANSI_XY ; HOME CURSOR AND RETURN ; +ANSI_BEL: + JP SND_BEEP ; BEEP THE SPEAKER +; ANSI_BS: LD A,(ANSI_COL) ; GET CURRENT COLUMN DEC A ; BACK IT UP BY ONE diff --git a/Source/HBIOS/hbios.asm b/Source/HBIOS/hbios.asm index 47cfe5bf..e729f5c2 100644 --- a/Source/HBIOS/hbios.asm +++ b/Source/HBIOS/hbios.asm @@ -2827,42 +2827,7 @@ INITSYS4: #ENDIF ; #IFDEF TESTING -; -; ROUTINE TO BEEP THE DEAULT SOUND UNIT (NOT FINISHED) -; NEED TO CHECK FOR EXISTENCE OF SOUND UNIT 0 -; NEED TO TEST AGAINST ALL SOUND DRIVERS -; CAN SPEAKER DRIVER BE MODIFIED TO PLAY ARBITRARY DURATION? -; WHICH CHANNEL SHOULD BE USED? IS THERE A GOOD DEFAULT CHANNEL? -; -SNDUNIT .EQU 0 -; -HB_BEEP: - LD B,$50 ; SOUND RESET FUNCTION - LD C,SNDUNIT ; SOUND UNIT NUMBER - CALL SND_DISPATCH ; DO IT - LD B,$51 ; VOLUME - LD C,SNDUNIT ; SOUND UNIT NUMBER - LD L,$FF ; MAX - CALL SND_DISPATCH ; DO IT - LD B,$53 ; SELECT NOTE - LD C,SNDUNIT ; SOUND UNIT NUMBER - ;LD HL,0 ; A0# - LD HL,200 ; C4 - CALL SND_DISPATCH ; DO IT - ;LD B,$56 ; DURATION - ;LD C,SNDUNIT ; SOUND UNIT NUMBER - ;LD HL,500 ; 1/2 SECOND - ;CALL SND_DISPATCH ; DO IT - LD B,$54 ; PLAY SOUND - LD C,SNDUNIT ; SOUND UNIT NUMBER - LD D,1 ; CHANNEL 0 - CALL SND_DISPATCH ; DO IT - LD DE,15625 ; PLAY FOR 1/4 SECOND - CALL VDELAY - LD B,$50 ; SOUND RESET FUNCTION - LD C,SNDUNIT ; SOUND UNIT NUMBER - CALL SND_DISPATCH ; DO IT -; + CALL SND_BEEP #ENDIF ; #IFNDEF ROMBOOT @@ -3749,7 +3714,7 @@ SND_ADDENT: ; WORD UNIT SPECIFIC DATA (TYPICALLY A DEVICE INSTANCE DATA ADDRESS) ; SND_FNCNT .EQU 8 ; NUMBER OF SND FUNCS (FOR RANGE CHECK) -SND_MAX .EQU 4 ; UP TO 3 UNITS +SND_MAX .EQU 4 ; UP TO 4 UNITS SND_SIZ .EQU SND_MAX * 4 ; EACH ENTRY IS 4 BYTES ; .DB SND_FNCNT ; SND FUNCTION COUNT (FOR RANGE CHECK) @@ -3758,6 +3723,49 @@ SND_CNT .DB 0 ; ENTRY COUNT PREFIX SND_TBL .FILL SND_SIZ,0 ; SPACE FOR ENTRIES ; ;================================================================================================== +; SPEAKER BEEP ROUTINE +;================================================================================================== +; +; ROUTINE TO BEEP THE DEAULT SOUND UNIT +; NEED TO CHECK FOR EXISTENCE OF 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 + LD B,$50 ; SOUND RESET FUNCTION + LD C,0 ; SOUND UNIT NUMBER + CALL SND_DISPATCH ; DO IT + LD B,$51 ; VOLUME + LD C,0 ; SOUND UNIT NUMBER + LD L,$FF ; MAX + CALL SND_DISPATCH ; DO IT + 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 + 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 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 + RET ; DONE +; +;================================================================================================== ; SYSTEM FUNCTION DISPATCHER ;================================================================================================== ; diff --git a/Source/HBIOS/sn76489.asm b/Source/HBIOS/sn76489.asm index 60cb1ca8..b05bba74 100644 --- a/Source/HBIOS/sn76489.asm +++ b/Source/HBIOS/sn76489.asm @@ -409,58 +409,57 @@ SNT_PLAY .DB "\r\nSN7_PLAY CH: $" SNT_REGWR .DB "\r\nOUT SN76489, $" #ENDIF -; THE FREQUENCY BY QUARTER TONE STARTING AT A0# OCTAVE 0 +; THE FREQUENCY BY QUARTER TONE STARTING AT A0# ; 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 +; ASSUMING A CLOCK OF 3575950 HZ, THE FIRST PLAYABLE +; NOTE WILL BE A2 (HBIOS NOTE CODE 92). SN7NOTETBL: - .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 + .DW SN7RATIO / 2913 ; A0#/B0b + .DW SN7RATIO / 2956 ; + .DW SN7RATIO / 2999 ; + .DW SN7RATIO / 3042 ; + .DW SN7RATIO / 3086 ; B0 + .DW SN7RATIO / 3131 ; + .DW SN7RATIO / 3177 ; + .DW SN7RATIO / 3223 ; + .DW SN7RATIO / 3270 ; C1 + .DW SN7RATIO / 3318 ; + .DW SN7RATIO / 3366 ; + .DW SN7RATIO / 3415 ; + .DW SN7RATIO / 3464 ; C1#/D1b + .DW SN7RATIO / 3515 ; + .DW SN7RATIO / 3566 ; + .DW SN7RATIO / 3618 ; + .DW SN7RATIO / 3670 ; D1 + .DW SN7RATIO / 3724 ; + .DW SN7RATIO / 3778 ; + .DW SN7RATIO / 3833 ; + .DW SN7RATIO / 3889 ; D1#/E1b + .DW SN7RATIO / 3945 ; + .DW SN7RATIO / 4003 ; + .DW SN7RATIO / 4061 ; + .DW SN7RATIO / 4120 ; E1 + .DW SN7RATIO / 4180 ; + .DW SN7RATIO / 4241 ; + .DW SN7RATIO / 4302 ; + .DW SN7RATIO / 4365 ; F1 + .DW SN7RATIO / 4428 ; + .DW SN7RATIO / 4493 ; + .DW SN7RATIO / 4558 ; + .DW SN7RATIO / 4624 ; F1#/G1b + .DW SN7RATIO / 4692 ; + .DW SN7RATIO / 4760 ; + .DW SN7RATIO / 4829 ; + .DW SN7RATIO / 4899 ; G1 + .DW SN7RATIO / 4971 ; + .DW SN7RATIO / 5043 ; + .DW SN7RATIO / 5116 ; + .DW SN7RATIO / 5191 ; G1#/A1b + .DW SN7RATIO / 5266 ; + .DW SN7RATIO / 5343 ; + .DW SN7RATIO / 5421 ; + .DW SN7RATIO / 5499 ; A1 + .DW SN7RATIO / 5579 ; + .DW SN7RATIO / 5661 ; + .DW SN7RATIO / 5743 ; diff --git a/Source/HBIOS/tty.asm b/Source/HBIOS/tty.asm index 8571af88..5c78e0e6 100644 --- a/Source/HBIOS/tty.asm +++ b/Source/HBIOS/tty.asm @@ -131,6 +131,8 @@ TTY_DEVICE: ; TTY_DOCHAR: LD A,E ; CHARACTER TO PROCESS + CP 7 ; BEL + JP Z,SND_BEEP CP 8 ; BACKSPACE JR Z,TTY_BS CP 12 ; FORMFEED diff --git a/Source/ver.inc b/Source/ver.inc index 9124b396..f92228a4 100644 --- a/Source/ver.inc +++ b/Source/ver.inc @@ -2,4 +2,4 @@ #DEFINE RMN 1 #DEFINE RUP 1 #DEFINE RTP 0 -#DEFINE BIOSVER "3.1.1-pre.176" +#DEFINE BIOSVER "3.1.1-pre.177" diff --git a/Source/ver.lib b/Source/ver.lib index 817ec6ea..e720a560 100644 --- a/Source/ver.lib +++ b/Source/ver.lib @@ -3,5 +3,5 @@ rmn equ 1 rup equ 1 rtp equ 0 biosver macro - db "3.1.1-pre.176" + db "3.1.1-pre.177" endm