Browse Source

Update nascom.asm

pull/49/head
b1ackmai1er 6 years ago
parent
commit
f77072fbd2
  1. 81
      Source/HBIOS/nascom.asm

81
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 PLAY: CALL GETINT ; GET OCTAVE
PUSH AF ; AND SAVE PUSH AF ; AND SAVE
@ -4453,7 +4453,7 @@ PLAY: CALL GETINT ; GET OCTAVE
INC HL ; IN DE INC HL ; IN DE
LD E,A ; WHICH IS THE LD E,A ; WHICH IS THE
LD A,(HL) ; FREQUENCY FOR LD A,(HL) ; FREQUENCY FOR
INC HL ; THE EIGTH
INC HL ; THE EIGHTH
LD D,A ; OCTAVE LD D,A ; OCTAVE
PUSH DE PUSH DE
@ -4469,7 +4469,7 @@ PLAY: CALL GETINT ; GET OCTAVE
POP DE POP DE
LD A,8 ; DIVIDE THE LD A,8 ; DIVIDE THE
SUB B ; FREQENCY BASED
SUB B ; FREQUENCY BASED
JR Z,SPK_OCTOK ; ON THE OCTAVE JR Z,SPK_OCTOK ; ON THE OCTAVE
LD B,A LD B,A
SPK_OCTDIV: SPK_OCTDIV:
@ -4478,23 +4478,34 @@ SPK_OCTDIV:
SLA L ; C<L<0 ; TIME WE DIVIDE SLA L ; C<L<0 ; TIME WE DIVIDE
RL H ; C<H<C ; THE FREQUENCY RL H ; C<H<C ; THE FREQUENCY
DJNZ SPK_OCTDIV DJNZ SPK_OCTDIV
JR NC,SPK_OCTOK ; SET TO MAXIMUM
LD HL,$FFFF ; IF OVERFLOW
SPK_OCTOK: SPK_OCTOK:
POP BC ; RECALL DURATION
LD C,B
LD B,16 ; DIVIDE BY DURATION
XOR A
ADD HL,HL
RLA
CP C
JR C,$+4
INC L
SUB C
DJNZ $-7
ADD A,A
CP C
JR C,$+3
INC HL
POP BC ; MULTIPLY CHL X B
PUSH DE ; SAVE
EX DE,HL
LD C,0
LD H,C
LD L,C
MULSKP: ADD HL,DE
JR NC,MULDLP
INC C
MULDLP: DJNZ MULSKP
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 ;
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 following SPK_BEEPER routine is a modification of code from
; "The Complete SPECTRUM ROM DISSASSEMBLY" by Dr Ian Logan & Dr Frank O’Hara ; "The Complete SPECTRUM ROM DISSASSEMBLY" by Dr Ian Logan & Dr Frank O’Hara
@ -4622,9 +4633,15 @@ DIV_CANSUB:
DEC A DEC A
JR NZ, DIV_LP ; IX = RESULT 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 PUSH IX ; SAVE RESULT IN TABLE
POP DE POP DE
LD (IY+2),E
DUROVF: LD (IY+2),E
LD (IY+3),D LD (IY+3),D
LD DE,4 ; POINT TO NEXT TABLE LD DE,4 ; POINT TO NEXT TABLE
@ -4637,18 +4654,24 @@ DIV_CANSUB:
DJNZ TBL_LP ; LOOP COUNTER DJNZ TBL_LP ; LOOP COUNTER
RET 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 CALL MONOUT
POP HL
POP DE
POP BC POP BC
RET RET

Loading…
Cancel
Save