|
|
|
@ -80,34 +80,23 @@ SP_STUB: |
|
|
|
;====================================================================== |
|
|
|
; |
|
|
|
SP_NOTE: |
|
|
|
CALL PRTHEXWORDHL |
|
|
|
CALL PC_COLON |
|
|
|
; CALL PRTHEXWORDHL |
|
|
|
; CALL PC_COLON |
|
|
|
PUSH HL |
|
|
|
PUSH DE ; ON ENTRY HL IS A NOTE INDEX |
|
|
|
LD A,L |
|
|
|
AND 00000011B |
|
|
|
JR Z,SP_NOTE1 |
|
|
|
LD A,L ; CONVERT THIS NOTE INDEX |
|
|
|
AND 00000011B ; TO THE ASSOCIATED ENTRY |
|
|
|
JR Z,SP_NOTE1 ; IN THE TUNE TABLE. |
|
|
|
; |
|
|
|
LD HL,$FFFF ; QUARTER NOTES |
|
|
|
JR SP_NOTE2 ; NOT SUPPORTED |
|
|
|
; |
|
|
|
; LD A,L |
|
|
|
; AND 11111100B |
|
|
|
; LD L,A |
|
|
|
; |
|
|
|
SP_NOTE1: |
|
|
|
; LD H,0 ; CONVERT THIS NOTE INDEX |
|
|
|
; ADD HL,HL ; TO THE ASSOCIATED ENTRY |
|
|
|
; ADD HL,HL ; IN THE TUNE TABLE. |
|
|
|
; SRL H |
|
|
|
; RR L |
|
|
|
; SRL H |
|
|
|
; RR L |
|
|
|
LD DE,SP_TUNTBL ; SAVE THIS ADDRESS AS |
|
|
|
ADD HL,DE ; THE PERIOD |
|
|
|
SP_NOTE2: |
|
|
|
CALL PRTHEXWORDHL |
|
|
|
CALL NEWLINE |
|
|
|
; CALL PRTHEXWORDHL |
|
|
|
; CALL NEWLINE |
|
|
|
LD (SP_PENDING_PERIOD),HL |
|
|
|
POP DE |
|
|
|
POP HL |
|
|
|
@ -170,11 +159,8 @@ SP_SETTBL: |
|
|
|
INC C ; BECOMES 10MHZ |
|
|
|
; |
|
|
|
SP_SETTBL3: |
|
|
|
; LD A,C |
|
|
|
; CALL PRTHEXBYTE |
|
|
|
; |
|
|
|
LD B,SP_NOTCNT ; SET NUMBER OF NOTES TO |
|
|
|
LD HL,SP_TUNSTA+2 ; ADJUST AND START POINT |
|
|
|
LD HL,SP_TUNTBL+2 ; ADJUST AND START POINT |
|
|
|
; |
|
|
|
SP_SETTBL2: |
|
|
|
PUSH HL |
|
|
|
@ -194,7 +180,7 @@ SP_SETBL4: |
|
|
|
DJNZ SP_SETTBL1 |
|
|
|
POP BC |
|
|
|
; |
|
|
|
LD DE,30 ; ADD OVERHEAD |
|
|
|
LD DE,15 ; ADD OVERHEAD |
|
|
|
ADD HL,DE ; COMPENSATION |
|
|
|
; |
|
|
|
POP DE ; RECALL NOTE |
|
|
|
@ -222,25 +208,25 @@ SP_PLAY: |
|
|
|
JR NZ,SP_PLAY1 ; PERIOD ($FFFF) |
|
|
|
CP L |
|
|
|
RET Z |
|
|
|
; |
|
|
|
|
|
|
|
SP_PLAY1: |
|
|
|
LD E,(HL) ; LOAD 1ST ARG |
|
|
|
INC HL ; IN DE |
|
|
|
LD D,(HL) |
|
|
|
INC HL |
|
|
|
|
|
|
|
; LD A,$FF ; EXIT WITH ERROR |
|
|
|
CP D ; STATUS IF INVALID |
|
|
|
JR NZ,SP_PLAY2 ; NOTE ($FFFF) |
|
|
|
CP E |
|
|
|
RET Z |
|
|
|
; |
|
|
|
SP_PLAY2: |
|
|
|
LD C,(HL) ; LOAD 2ND ARG |
|
|
|
INC HL ; IN BC |
|
|
|
LD B,(HL) |
|
|
|
INC HL |
|
|
|
; |
|
|
|
; LD A,$FF ; EXIT WITH ERROR |
|
|
|
CP B ; STATUS IF INVALID |
|
|
|
JR NZ,SP_PLAY2 ; NOTE ($FFFF) |
|
|
|
CP C |
|
|
|
RET Z |
|
|
|
; |
|
|
|
SP_PLAY2: |
|
|
|
PUSH BC ; SETUP ARG IN HL |
|
|
|
POP HL |
|
|
|
; |
|
|
|
@ -315,28 +301,23 @@ BE_END: |
|
|
|
POP IX |
|
|
|
RET ; ALWAYS EXITS WITH SUCCESS STATUS (A=0) |
|
|
|
; |
|
|
|
; STANDARD ONE SECOND TONE TABLES AT 1MHZ (UNCOMPENSATED). FOR SP_BEEPER, FIRST WORD LOADED INTO DE, SECOND INTO HL |
|
|
|
; |
|
|
|
; EXCEL SPREADSHEET FOR CALCULATION CAN BE FOUND HERE: |
|
|
|
; |
|
|
|
; https://www.retrobrewcomputers.org/lib/exe/fetch.php?media=boards:sbc:sbc_v2:sbc_v2-004:spk_beep_tuntbl.xlsx |
|
|
|
; |
|
|
|
; STANDARD ONE SECOND TONE TABLES AT 1MHZ (UNCOMPENSATED). |
|
|
|
; FOR SP_BEEPER ROUTINE, FIRST WORD LOADED INTO DE, SECOND INTO HL |
|
|
|
; |
|
|
|
#DEFINE SP_TONESET(SP_FREQ) .DW SP_FREQ/100, 12500000/SP_FREQ |
|
|
|
; |
|
|
|
SP_TUNTBL: |
|
|
|
SP_TUNSTA: |
|
|
|
SP_TONESET(1635) ; C0 |
|
|
|
SP_TONESET(1732) ; C |
|
|
|
SP_TONESET(1835) ; D0 |
|
|
|
SP_TONESET(1945) ; E0 |
|
|
|
SP_TONESET(2060) ; F0 |
|
|
|
SP_TONESET(2183) ; F |
|
|
|
SP_TONESET(2312) ; G0 |
|
|
|
SP_TONESET(2450) ; G |
|
|
|
SP_TONESET(2596) ; A0 |
|
|
|
SP_TONESET(2750) ; A |
|
|
|
SP_TONESET(2914) ; |
|
|
|
SP_TONESET(1835) ; D0 |
|
|
|
SP_TONESET(1945) ; D |
|
|
|
SP_TONESET(2060) ; E0 |
|
|
|
SP_TONESET(2183) ; F0 |
|
|
|
SP_TONESET(2312) ; F |
|
|
|
SP_TONESET(2450) ; G0 |
|
|
|
SP_TONESET(2596) ; G |
|
|
|
SP_TONESET(2750) ; A0 |
|
|
|
SP_TONESET(2914) ; A |
|
|
|
SP_TONESET(3087) ; B0 |
|
|
|
SP_TONESET(3270) ; C1 |
|
|
|
SP_TONESET(3465) ; C |
|
|
|
@ -347,7 +328,7 @@ SP_TUNSTA: |
|
|
|
SP_TONESET(4625) ; F |
|
|
|
SP_TONESET(4900) ; G1 |
|
|
|
SP_TONESET(5191) ; G |
|
|
|
SP_TONESET(5500) ; A1 |
|
|
|
SP_TONESET(5500) ; A1 |
|
|
|
SP_TONESET(5827) ; A |
|
|
|
SP_TONESET(6174) ; B1 |
|
|
|
SP_TONESET(6541) ; C2 |
|
|
|
@ -374,17 +355,17 @@ SP_TUNSTA: |
|
|
|
SP_TONESET(22000) ; A3 |
|
|
|
SP_TONESET(23308) ; A |
|
|
|
SP_TONESET(24694) ; B3 |
|
|
|
SP_TONESET(26163) ; C4 |
|
|
|
SP_TONESET(27718) ; C |
|
|
|
SP_TONESET(29366) ; D4 |
|
|
|
SP_TONESET(31113) ; D |
|
|
|
SP_TONESET(32963) ; E4 |
|
|
|
SP_TONESET(34923) ; F4 |
|
|
|
SP_TONESET(36999) ; F |
|
|
|
SP_TONESET(39200) ; G4 |
|
|
|
SP_TONESET(41530) ; G |
|
|
|
SP_TONESET(44000) ; A4 |
|
|
|
SP_TONESET(46616) ; A |
|
|
|
SP_TONESET(26163) ; C4 |
|
|
|
SP_TONESET(27718) ; C |
|
|
|
SP_TONESET(29366) ; D4 |
|
|
|
SP_TONESET(31113) ; D |
|
|
|
SP_TONESET(32963) ; E4 |
|
|
|
SP_TONESET(34923) ; F4 |
|
|
|
SP_TONESET(36999) ; F |
|
|
|
SP_TONESET(39200) ; G4 |
|
|
|
SP_TONESET(41530) ; G |
|
|
|
SP_TONESET(44000) ; A4 |
|
|
|
SP_TONESET(46616) ; A |
|
|
|
SP_TONESET(49388) ; B4 |
|
|
|
SP_TONESET(52325) ; C5 |
|
|
|
SP_TONESET(55437) ; C |
|
|
|
@ -423,127 +404,18 @@ SP_TUNSTA: |
|
|
|
SP_TONESET(372931) ; A |
|
|
|
SP_TONESET(395107) ; B7 |
|
|
|
SP_NOTE_C8: |
|
|
|
SP_TONESET(418601) ; C8 |
|
|
|
SP_TONESET(443492) ; C |
|
|
|
SP_TONESET(469863) ; D8 |
|
|
|
SP_TONESET(497803) ; D |
|
|
|
SP_TONESET(527404) ; E8 |
|
|
|
SP_TONESET(558765) ; F8 |
|
|
|
SP_TONESET(591991) ; F |
|
|
|
SP_TONESET(627193) ; G8 |
|
|
|
SP_TONESET(664488) ; G |
|
|
|
SP_TONESET(704000) ; A8 |
|
|
|
SP_TONESET(745862) ; A |
|
|
|
SP_TONESET(418601) ; C8 |
|
|
|
SP_TONESET(443492) ; C |
|
|
|
SP_TONESET(469863) ; D8 |
|
|
|
SP_TONESET(497803) ; D |
|
|
|
SP_TONESET(527404) ; E8 |
|
|
|
SP_TONESET(558765) ; F8 |
|
|
|
SP_TONESET(591991) ; F |
|
|
|
SP_TONESET(627193) ; G8 |
|
|
|
SP_TONESET(664488) ; G |
|
|
|
SP_TONESET(704000) ; A8 |
|
|
|
SP_TONESET(745862) ; A |
|
|
|
SP_TONESET(790213) ; B8 |
|
|
|
; |
|
|
|
SP_NOTCNT .EQU ($-SP_TUNSTA) / 4 |
|
|
|
; |
|
|
|
.DW $10, $FFFF ; C0 ; WILL OVERFLOW AT 10MHZ |
|
|
|
.DW $11, $FFFF ; C ; WILL OVERFLOW AT 10MHZ |
|
|
|
.DW $12, $FFFF ; D0 ; WILL OVERFLOW AT 10MHZ |
|
|
|
.DW $14, $17B3 ; E0 |
|
|
|
.DW $15, $165E ; F0 |
|
|
|
.DW $17, $151E ; F |
|
|
|
.DW $18, $13EE ; G0 |
|
|
|
.DW $19, $12CF ; G |
|
|
|
.DW $1B, $11C1 ; A0 |
|
|
|
.DW $1D, $10C1 ; A |
|
|
|
.DW $1E, $FD1 ; B0 |
|
|
|
.DW $20, $EEE ; C1 |
|
|
|
.DW $22, $E17 ; C |
|
|
|
.DW $24, $D4D ; D1 |
|
|
|
.DW $26, $C8E ; D |
|
|
|
.DW $29, $BD9 ; E1 |
|
|
|
.DW $2B, $B2F ; F1 |
|
|
|
.DW $2E, $A8E ; F |
|
|
|
.DW $31, $9F7 ; G1 |
|
|
|
.DW $33, $968 ; G |
|
|
|
.DW $37, $8E0 ; A1 |
|
|
|
.DW $3A, $861 ; A |
|
|
|
.DW $3D, $7E8 ; B1 |
|
|
|
.DW $41, $777 ; C2 |
|
|
|
.DW $45, $70B ; C |
|
|
|
.DW $49, $6A6 ; D2 |
|
|
|
.DW $4D, $647 ; D |
|
|
|
.DW $52, $5EC ; E2 |
|
|
|
.DW $57, $597 ; F2 |
|
|
|
.DW $5C, $547 ; F |
|
|
|
.DW $62, $4FB ; G2 |
|
|
|
.DW $67, $4B3 ; G |
|
|
|
.DW $6E, $470 ; A2 |
|
|
|
.DW $74, $430 ; A |
|
|
|
.DW $7B, $3F4 ; B2 |
|
|
|
.DW $82, $3BB ; C3 |
|
|
|
.DW $8A, $385 ; C |
|
|
|
.DW $92, $353 ; D3 |
|
|
|
.DW $9B, $323 ; D |
|
|
|
.DW $A4, $2F6 ; E3 |
|
|
|
.DW $AE, $2CB ; F3 |
|
|
|
.DW $B9, $2A3 ; F |
|
|
|
.DW $C4, $27D ; G3 |
|
|
|
.DW $CF, $259 ; G |
|
|
|
.DW $DC, $238 ; A3 |
|
|
|
.DW $E9, $218 ; A |
|
|
|
.DW $F6, $1FA ; B3 |
|
|
|
.DW $105, $1DD ; C4 |
|
|
|
.DW $115, $1C2 ; C |
|
|
|
.DW $125, $1A9 ; D4 |
|
|
|
.DW $137, $191 ; D |
|
|
|
.DW $149, $17B ; E4 |
|
|
|
.DW $15D, $165 ; F4 |
|
|
|
.DW $171, $151 ; F |
|
|
|
.DW $188, $13E ; G4 |
|
|
|
.DW $19F, $12C ; G |
|
|
|
.DW $1B8, $11C ; A4 |
|
|
|
.DW $1D2, $10C ; A |
|
|
|
.DW $1ED, $FD ; B4 |
|
|
|
.DW $20B, $EE ; C5 |
|
|
|
.DW $22A, $E1 ; C |
|
|
|
.DW $24B, $D4 ; D5 |
|
|
|
.DW $26E, $C8 ; D |
|
|
|
.DW $293, $BD ; E5 |
|
|
|
.DW $2BA, $B2 ; F5 |
|
|
|
.DW $2E3, $A8 ; F |
|
|
|
.DW $30F, $9F ; G5 |
|
|
|
.DW $33E, $96 ; G |
|
|
|
.DW $370, $8E ; A5 |
|
|
|
.DW $3A4, $86 ; A |
|
|
|
.DW $3DB, $7E ; B5 |
|
|
|
.DW $416, $77 ; C6 |
|
|
|
.DW $454, $70 ; C |
|
|
|
.DW $496, $6A ; D6 |
|
|
|
.DW $4DC, $64 ; D |
|
|
|
.DW $526, $5E ; E6 |
|
|
|
.DW $574, $59 ; F6 |
|
|
|
.DW $5C7, $54 ; F |
|
|
|
.DW $61F, $4F ; G6 |
|
|
|
.DW $67D, $4B ; G |
|
|
|
.DW $6E0, $47 ; A6 |
|
|
|
.DW $748, $43 ; A |
|
|
|
.DW $7B7, $3F ; B6 |
|
|
|
.DW $82D, $3B ; C7 |
|
|
|
.DW $8A9, $38 ; C |
|
|
|
.DW $92D, $35 ; D7 |
|
|
|
.DW $9B9, $32 ; D |
|
|
|
.DW $A4D, $2F ; E7 |
|
|
|
.DW $AE9, $2C ; F7 |
|
|
|
.DW $B8F, $2A ; F |
|
|
|
.DW $C3F, $27 ; G7 |
|
|
|
.DW $CFA, $25 ; G |
|
|
|
.DW $DC0, $23 ; A7 |
|
|
|
.DW $E91, $21 ; A |
|
|
|
.DW $F6F, $1F ; B7 |
|
|
|
;SP_NOTE_C8: |
|
|
|
.DW $105A, $1D ; C8 |
|
|
|
.DW $1152, $1C ; C |
|
|
|
.DW $125A, $1A ; D8 |
|
|
|
.DW $1372, $19 ; D |
|
|
|
.DW $149A, $17 ; E8 |
|
|
|
.DW $15D3, $16 ; F8 |
|
|
|
.DW $171F, $15 ; F |
|
|
|
.DW $187F, $13 ; G8 |
|
|
|
.DW $19F4, $12 ; G |
|
|
|
.DW $1B80, $11 ; A8 |
|
|
|
.DW $1D22, $10 ; A |
|
|
|
.DW $1EDE, $F ; B8 |
|
|
|
|
|
|
|
SP_NOTCNT .EQU ($-SP_TUNTBL) / 4 |
|
|
|
; |
|
|
|
|