|
|
|
@ -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 ; C<L<0 ; TIME WE DIVIDE |
|
|
|
RL H ; C<H<C ; THE FREQUENCY |
|
|
|
DJNZ SPK_OCTDIV |
|
|
|
|
|
|
|
JR NC,SPK_OCTOK ; SET TO MAXIMUM |
|
|
|
LD HL,$FFFF ; IF OVERFLOW |
|
|
|
|
|
|
|
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 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 |
|
|
|
|
|
|
|
|