diff --git a/Source/HBIOS/nascom.asm b/Source/HBIOS/nascom.asm index d4b308bf..318ce65d 100644 --- a/Source/HBIOS/nascom.asm +++ b/Source/HBIOS/nascom.asm @@ -4417,7 +4417,7 @@ OUTNCR: CALL OUTC ; Output character in A ; --------------------------------------------------------------------------------------- -; PLAY O,N,D ; PLAY OCTAVE 0-8, NOTE N (0-11), DURATION (1-8) +; PLAY O,N,D ; PLAY OCTAVE 0-8, NOTE N (0-11), DURATION (1-8) [1/8 - 8/8 SECONDS] PLAY: CALL GETINT ; GET OCTAVE PUSH AF ; AND SAVE @@ -4453,7 +4453,7 @@ PLAY: CALL GETINT ; GET OCTAVE INC HL ; IN DE LD E,A ; WHICH IS THE LD A,(HL) ; FREQUENCY FOR - INC HL ; THE EIGTH + INC HL ; THE EIGHTH LD D,A ; OCTAVE PUSH DE @@ -4469,7 +4469,7 @@ PLAY: CALL GETINT ; GET OCTAVE POP DE LD A,8 ; DIVIDE THE - SUB B ; FREQENCY BASED + SUB B ; FREQUENCY BASED JR Z,SPK_OCTOK ; ON THE OCTAVE LD B,A SPK_OCTDIV: @@ -4478,23 +4478,34 @@ SPK_OCTDIV: SLA L ; CC>C ; BCHL = BCHL / 2 + RR H ; C>H>C ; + RR L ; C>L>C ; + SRL C ; 0>C>C ; BCHL = BCHL / 2 + RR H ; C>H>C ; + RR L ; C>L>C ; + SRL C ; 0>C>C ; BCHL = BCHL / 2 + RR H ; C>H>C ; + RR L ; C>L>C ; + + POP DE ; ; The following SPK_BEEPER routine is a modification of code from ; "The Complete SPECTRUM ROM DISSASSEMBLY" by Dr Ian Logan & Dr Frank O’Hara @@ -4622,9 +4633,15 @@ DIV_CANSUB: DEC A JR NZ, DIV_LP ; IX = RESULT +; LD DE,$FFFF ; IF OVERFLOW SET TO +; LD A,H +; OR L ; MAXIMUM. OCCURS +; CALL NZ,DISP +; JR NZ,DUROVF ; FOR 10MHZ+ + PUSH IX ; SAVE RESULT IN TABLE POP DE - LD (IY+2),E +DUROVF: LD (IY+2),E LD (IY+3),D LD DE,4 ; POINT TO NEXT TABLE @@ -4637,18 +4654,24 @@ DIV_CANSUB: DJNZ TBL_LP ; LOOP COUNTER RET -DISP: PUSH BC +DISP: + PUSH BC + PUSH DE + PUSH HL -; PUSH DE -; POP BC -; CALL PRTHEXWORD -; -; PUSH DE -; POP BC -; CALL PRTHEXWORD + PUSH DE + POP BC + CALL PRTHEXWORD - LD A,'*' + PUSH HL + POP BC + CALL PRTHEXWORD + + LD A,' ' CALL MONOUT + + POP HL + POP DE POP BC RET