mirror of
https://github.com/wwarthen/RomWBW.git
synced 2026-02-06 14:11:48 -06:00
Update nascom.asm
This commit is contained in:
@@ -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:
|
||||
POP BC ; MULTIPLY CHL X B
|
||||
PUSH DE ; SAVE
|
||||
SPK_OCTOK:
|
||||
|
||||
CALL DISP
|
||||
|
||||
POP BC ; MULTIPLY CHL X B
|
||||
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 - $)
|
||||
|
||||
Reference in New Issue
Block a user