From c7b94163ee4a42f01a6afab4b4da327d019a7e4e Mon Sep 17 00:00:00 2001 From: b1ackmai1er Date: Sat, 23 May 2020 19:21:45 +0800 Subject: [PATCH] Update spk.asm --- Source/HBIOS/spk.asm | 234 ++++++++++--------------------------------- 1 file changed, 53 insertions(+), 181 deletions(-) diff --git a/Source/HBIOS/spk.asm b/Source/HBIOS/spk.asm index 7f27fa7f..6fe58a44 100644 --- a/Source/HBIOS/spk.asm +++ b/Source/HBIOS/spk.asm @@ -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 +;