|
|
|
@ -4445,15 +4445,8 @@ PLAY: CALL GETINT ; GET OCTAVE |
|
|
|
EX (SP),HL ; GET OCTAVE IN HL. SYNTAX POINTER ON STACK |
|
|
|
EX DE,HL ; PUT NOTE PTR IN HL, OCTAVE IN DE |
|
|
|
|
|
|
|
PUSH BC |
|
|
|
LD B,D |
|
|
|
CALL SPK_BEEP |
|
|
|
POP BC |
|
|
|
|
|
|
|
POP HL ; RECALL SYNTAX POINTER |
|
|
|
RET |
|
|
|
|
|
|
|
SPK_BEEP: |
|
|
|
PUSH BC ; SAVE SYNTAX POINTER |
|
|
|
LD B,D ; SAVE OCTAVE |
|
|
|
PUSH AF ; SAVE DURATION |
|
|
|
|
|
|
|
LD A,(HL) ; LOAD 1ST ARG |
|
|
|
@ -4478,7 +4471,7 @@ SPK_BEEP: |
|
|
|
LD A,8 ; DIVIDE THE |
|
|
|
SUB B ; FREQENCY BASED |
|
|
|
JR Z,SPK_OCTOK ; ON THE OCTAVE |
|
|
|
LD C,A ; REQUESTED |
|
|
|
LD B,A |
|
|
|
SPK_OCTDIV: |
|
|
|
SRL D ; 0>D>C ; MULTIPLY THE |
|
|
|
RR E ; C>E>C ; DURATION EVERY |
|
|
|
@ -4510,7 +4503,6 @@ SPK_OCTOK: |
|
|
|
; DE Number of passes to make through the sound generation loop |
|
|
|
; HL Loop delay parameter |
|
|
|
|
|
|
|
SPK_BEEPER: |
|
|
|
PUSH IX |
|
|
|
DI ; Disable the interrupt for the duration of a 'beep'. |
|
|
|
LD A,L ; Save L temporarily. |
|
|
|
@ -4561,6 +4553,8 @@ BE_AGAIN: ; The parameters for the second half-cycle are set up. |
|
|
|
|
|
|
|
BE_END: EI |
|
|
|
POP IX |
|
|
|
POP BC ; RECALL SYNTAX POINTER |
|
|
|
POP HL |
|
|
|
RET |
|
|
|
; |
|
|
|
RTCVAL .DB 0 |
|
|
|
@ -4573,12 +4567,6 @@ RTCVAL .DB 0 |
|
|
|
; DURATION = (CPUKHZ * 256 / 2 - CPUKHZ - (2 * CPUKHZ) ) / FREQUENCY |
|
|
|
|
|
|
|
SET_DUR_TBL: |
|
|
|
; PUSH IX |
|
|
|
; PUSH IY |
|
|
|
; PUSH HL |
|
|
|
; PUSH DE |
|
|
|
; PUSH BC |
|
|
|
|
|
|
|
LD B,BF_SYSGET ; GET CPU SPEED |
|
|
|
LD C,BF_SYSGET_CPUINFO ; FROM HBIOS |
|
|
|
RST 08 |
|
|
|
@ -4608,7 +4596,7 @@ FRQ_AJ2:PUSH HL ; DEHL = CPUKHZ / 8) / FREQUENCY |
|
|
|
EX DE,HL |
|
|
|
|
|
|
|
LD IY,FRQDURTBL ; POINT TO THE TABLE WE |
|
|
|
LD C,12 ; WANT TO READ AND UPDATE |
|
|
|
LD B,FDTBSIZ ; WANT TO READ AND UPDATE |
|
|
|
TBL_LP: PUSH BC |
|
|
|
|
|
|
|
LD C,(IY+0) ; READ THE FREQUENCY |
|
|
|
@ -4647,26 +4635,22 @@ DIV_CANSUB: |
|
|
|
|
|
|
|
POP BC ; RETREIVE THE |
|
|
|
DJNZ TBL_LP ; LOOP COUNTER |
|
|
|
RET |
|
|
|
|
|
|
|
; POP BC |
|
|
|
; POP DE |
|
|
|
; POP HL |
|
|
|
; POP IY |
|
|
|
; POP IX |
|
|
|
DISP: PUSH BC |
|
|
|
|
|
|
|
RET |
|
|
|
; PUSH DE |
|
|
|
; POP BC |
|
|
|
; CALL PRTHEXWORD |
|
|
|
; |
|
|
|
; PUSH DE |
|
|
|
; POP BC |
|
|
|
; CALL PRTHEXWORD |
|
|
|
|
|
|
|
LD A,' ' |
|
|
|
LD A,'*' |
|
|
|
CALL MONOUT |
|
|
|
|
|
|
|
LD HL,(FRQDURTBL+12) |
|
|
|
PUSH HL |
|
|
|
POP BC |
|
|
|
CALL PRTHEXWORD |
|
|
|
LD HL,(FRQDURTBL+14) |
|
|
|
PUSH HL |
|
|
|
POP BC |
|
|
|
CALL PRTHEXWORD |
|
|
|
RET |
|
|
|
|
|
|
|
PRTHEXBYTE: |
|
|
|
PUSH AF |
|
|
|
@ -4734,19 +4718,15 @@ HEXCONV: |
|
|
|
; AND DURATIONS ARE CALCULATE BY MODIFYING THE VALUES READ FROM THIS TABLE. |
|
|
|
; |
|
|
|
FRQDURTBL: |
|
|
|
.DW $105A, $0 ; C |
|
|
|
.DW $1152, $0 ; C# |
|
|
|
.DW $125A, $0 ; D |
|
|
|
.DW $1372, $0 ; D# |
|
|
|
.DW $149A, $0 ; E |
|
|
|
.DW $15D3, $0 ; F |
|
|
|
.DW $171F, $0 ; F# |
|
|
|
.DW $1875, $0 ; G |
|
|
|
.DW $19F4, $0 ; G# |
|
|
|
.DW $1B80, $0 ; A |
|
|
|
.DW $1D22, $0 ; A# |
|
|
|
.DW $1EDE, $0 ; B |
|
|
|
.DW $105A, $0, $1152, $0 ; C, C# |
|
|
|
.DW $125A, $0, $1372, $0 ; D, D# |
|
|
|
.DW $149A, $0 ; E |
|
|
|
.DW $15D3, $0, $171F, $0 ; F, F# |
|
|
|
.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 - $) |
|
|
|
.FILL SLACK,00H |
|
|
|
@ -4755,5 +4735,4 @@ SLACK .EQU (BAS_END - $) |
|
|
|
.ECHO SLACK |
|
|
|
.ECHO " bytes.\n" |
|
|
|
|
|
|
|
.end |
|
|
|
|
|
|
|
.END |
|
|
|
|