diff --git a/Source/HBIOS/nascom.asm b/Source/HBIOS/nascom.asm index 318ce65d..df498552 100644 --- a/Source/HBIOS/nascom.asm +++ b/Source/HBIOS/nascom.asm @@ -4461,13 +4461,13 @@ PLAY: CALL GETINT ; GET OCTAVE LD A,(HL) ; LOAD 2ND ARG INC HL ; IN DE LD E,A ; WHICH IS THE - LD A,(HL) ; DURATION + LD A,(HL) ; PITCH LD D,A PUSH DE ; SETUP ARGS IN HL POP HL ; AND DE - POP DE - + POP DE ; DE = FREQUENCY + ; HL = PITCH LD A,8 ; DIVIDE THE SUB B ; FREQUENCY BASED JR Z,SPK_OCTOK ; ON THE OCTAVE @@ -4482,18 +4482,21 @@ SPK_OCTDIV: JR NC,SPK_OCTOK ; SET TO MAXIMUM LD HL,$FFFF ; IF OVERFLOW -SPK_OCTOK: +SPK_OCTOK: + + CALL DISP + POP BC ; MULTIPLY CHL X B - PUSH DE ; SAVE + PUSH HL ; SAVE - EX DE,HL LD C,0 LD H,C LD L,C + CCF MULSKP: ADD HL,DE - JR NC,MULDLP + JR NC,MULDLP INC C -MULDLP: DJNZ MULSKP +MULDLP: DJNZ MULSKP ; DIVIDE BY 8 SRL C ; 0>C>C ; BCHL = BCHL / 2 RR H ; C>H>C ; @@ -4506,7 +4509,10 @@ MULDLP: DJNZ MULSKP RR L ; C>L>C ; POP DE -; + EX DE,HL + + CALL DISP + ; The following SPK_BEEPER routine is a modification of code from ; "The Complete SPECTRUM ROM DISSASSEMBLY" by Dr Ian Logan & Dr Frank O’Hara ; https://www.esocop.org/docs/CompleteSpectrumROMDisassemblyThe.pdf @@ -4580,12 +4586,12 @@ RTCVAL .DB 0 SET_DUR_TBL: LD B,BF_SYSGET ; GET CPU SPEED LD C,BF_SYSGET_CPUINFO ; FROM HBIOS - RST 08 + RST 08 ; IN DE PUSH DE ; SAVE FOR CALCULATION POP BC ; - CPUKHZ - (2 * CPUKHZ) - LD H,E ; DEHL = HL * 256 + LD H,E ; DEHL = DE * 256 LD E,D LD D,0 LD L,D @@ -4602,7 +4608,12 @@ FRQ_AJ1:SLA C ; C