diff --git a/Source/HBIOS/nascom.asm b/Source/HBIOS/nascom.asm index acae4864..d4b308bf 100644 --- a/Source/HBIOS/nascom.asm +++ b/Source/HBIOS/nascom.asm @@ -4445,15 +4445,8 @@ PLAY: CALL GETINT ; GET OCTAVE EX (SP),HL ; GET OCTAVE IN HL. SYNTAX POINTER ON STACK EX DE,HL ; PUT NOTE PTR IN HL, OCTAVE IN DE - PUSH BC - LD B,D - CALL SPK_BEEP - POP BC - - POP HL ; RECALL SYNTAX POINTER - RET - -SPK_BEEP: + PUSH BC ; SAVE SYNTAX POINTER + LD B,D ; SAVE OCTAVE PUSH AF ; SAVE DURATION LD A,(HL) ; LOAD 1ST ARG @@ -4478,7 +4471,7 @@ SPK_BEEP: LD A,8 ; DIVIDE THE SUB B ; FREQENCY BASED JR Z,SPK_OCTOK ; ON THE OCTAVE - LD C,A ; REQUESTED + LD B,A SPK_OCTDIV: SRL D ; 0>D>C ; MULTIPLY THE RR E ; C>E>C ; DURATION EVERY @@ -4510,7 +4503,6 @@ SPK_OCTOK: ; DE Number of passes to make through the sound generation loop ; HL Loop delay parameter -SPK_BEEPER: PUSH IX DI ; Disable the interrupt for the duration of a 'beep'. LD A,L ; Save L temporarily. @@ -4561,6 +4553,8 @@ BE_AGAIN: ; The parameters for the second half-cycle are set up. BE_END: EI POP IX + POP BC ; RECALL SYNTAX POINTER + POP HL RET ; RTCVAL .DB 0 @@ -4573,12 +4567,6 @@ RTCVAL .DB 0 ; DURATION = (CPUKHZ * 256 / 2 - CPUKHZ - (2 * CPUKHZ) ) / FREQUENCY SET_DUR_TBL: -; PUSH IX -; PUSH IY -; PUSH HL -; PUSH DE -; PUSH BC - LD B,BF_SYSGET ; GET CPU SPEED LD C,BF_SYSGET_CPUINFO ; FROM HBIOS RST 08 @@ -4608,7 +4596,7 @@ FRQ_AJ2:PUSH HL ; DEHL = CPUKHZ / 8) / FREQUENCY EX DE,HL LD IY,FRQDURTBL ; POINT TO THE TABLE WE - LD C,12 ; WANT TO READ AND UPDATE + LD B,FDTBSIZ ; WANT TO READ AND UPDATE TBL_LP: PUSH BC LD C,(IY+0) ; READ THE FREQUENCY @@ -4647,26 +4635,22 @@ DIV_CANSUB: POP BC ; RETREIVE THE DJNZ TBL_LP ; LOOP COUNTER + RET -; POP BC -; POP DE -; POP HL -; POP IY -; POP IX +DISP: PUSH BC - RET +; PUSH DE +; POP BC +; CALL PRTHEXWORD +; +; PUSH DE +; POP BC +; CALL PRTHEXWORD - LD A,' ' + LD A,'*' CALL MONOUT - - LD HL,(FRQDURTBL+12) - PUSH HL POP BC - CALL PRTHEXWORD - LD HL,(FRQDURTBL+14) - PUSH HL - POP BC - CALL PRTHEXWORD + RET PRTHEXBYTE: PUSH AF @@ -4734,19 +4718,15 @@ HEXCONV: ; AND DURATIONS ARE CALCULATE BY MODIFYING THE VALUES READ FROM THIS TABLE. ; FRQDURTBL: - .DW $105A, $0 ; C - .DW $1152, $0 ; C# - .DW $125A, $0 ; D - .DW $1372, $0 ; D# - .DW $149A, $0 ; E - .DW $15D3, $0 ; F - .DW $171F, $0 ; F# - .DW $1875, $0 ; G - .DW $19F4, $0 ; G# - .DW $1B80, $0 ; A - .DW $1D22, $0 ; A# - .DW $1EDE, $0 ; B + .DW $105A, $0, $1152, $0 ; C, C# + .DW $125A, $0, $1372, $0 ; D, D# + .DW $149A, $0 ; E + .DW $15D3, $0, $171F, $0 ; F, F# + .DW $1875, $0, $19F4, $0 ; G, G# + .DW $1B80, $0, $1D22, $0 ; A, A# + .DW $1EDE, $0 ; B +FDTBSIZ .EQU ($-FRQDURTBL)/4 SLACK .EQU (BAS_END - $) .FILL SLACK,00H @@ -4755,5 +4735,4 @@ SLACK .EQU (BAS_END - $) .ECHO SLACK .ECHO " bytes.\n" -.end - +.END