Browse Source

Update nascom.asm

patch
b1ackmai1er 6 years ago
parent
commit
dc0411746e
  1. 49
      Source/HBIOS/nascom.asm

49
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<C<0 ; DEHL = DEHL - (2 * CPUKHZ)
SBC HL,BC
JR NC,FRQ_AJ2
DEC DE
FRQ_AJ2:PUSH HL ; DEHL = CPUKHZ / 8) / FREQUENCY
FRQ_AJ2: ; AT THIS POINT DEHL = CPUKHZ * 125 E.G. 9982 KHZ * 125 = 0012:DE14
; CALL DISP
PUSH HL ; DEHL = CPUKHZ / 8) / FREQUENCY
POP IX ; HLIX = DENOMINATOR
EX DE,HL
@ -4633,17 +4644,13 @@ 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
DUROVF: LD (IY+2),E
LD (IY+3),D
; CALL DISP
LD DE,4 ; POINT TO NEXT TABLE
ADD IY,DE ; ENTRY TO UPDATE
@ -4652,6 +4659,7 @@ DUROVF: LD (IY+2),E
POP BC ; RETREIVE THE
DJNZ TBL_LP ; LOOP COUNTER
RET
DISP:
@ -4663,6 +4671,9 @@ DISP:
POP BC
CALL PRTHEXWORD
LD A,' '
CALL MONOUT
PUSH HL
POP BC
CALL PRTHEXWORD
@ -4748,7 +4759,7 @@ FRQDURTBL:
.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 - $)

Loading…
Cancel
Save