From 52c7b7f25c6cc61d815d9bd2fe762fab4af4d126 Mon Sep 17 00:00:00 2001 From: b1ackmai1er Date: Tue, 3 Sep 2019 20:40:54 +0800 Subject: [PATCH] Enhance spk.asm to be able to play note --- Source/HBIOS/spk.asm | 698 +++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 678 insertions(+), 20 deletions(-) diff --git a/Source/HBIOS/spk.asm b/Source/HBIOS/spk.asm index 438b0404..7799ff9f 100644 --- a/Source/HBIOS/spk.asm +++ b/Source/HBIOS/spk.asm @@ -8,30 +8,688 @@ SPK_INIT: PRTS("SPK: IO=0x$") LD A,RTCIO CALL PRTHEXBYTE - CALL SPK_BEEP + CALL SPK_BEEP ; PLAY A NOTE XOR A RET ; +;SPK_BEEP: +; PUSH DE +; PUSH HL +; LD HL,400 ; CYCLES OF TONE +; ;LD B,%00000100 ; D2 MAPPED TO Q0 +; ;LD A,DSRTC_RESET +; LD A,(RTCVAL) ; GET RTC PORT VALUE FROM SHADOW +; OR %00000100 ; D2 MAPPED TO Q0 +; LD B,A +;SPK_BEEP1: +; LD A,B +; OUT (RTCIO),A +; XOR %00000100 +; LD B,A +; LD DE,17 +; CALL VDELAY +; DEC HL +; LD A,H +; OR L +; JR NZ,SPK_BEEP1 +; POP HL +; POP DE +; RET + SPK_BEEP: - PUSH DE - PUSH HL - LD HL,400 ; CYCLES OF TONE - ;LD B,%00000100 ; D2 MAPPED TO Q0 - ;LD A,DSRTC_RESET - LD A,(RTCVAL) ; GET RTC PORT VALUE FROM SHADOW - OR %00000100 ; D2 MAPPED TO Q0 + LD HL,SPK_NOTE_C8 ; SELECT NOTE + + LD A,(HL) ; LOAD 1ST ARG + INC HL ; IN DE + LD E,A + LD A,(HL) + INC HL + LD D,A + + LD A,(HL) ; LOAD 2ND ARG + INC HL ; IN BC + LD C,A + LD A,(HL) + INC HL LD B,A -SPK_BEEP1: - LD A,B - OUT (RTCIO),A - XOR %00000100 - LD B,A - LD DE,17 - CALL VDELAY - DEC HL - LD A,H - OR L - JR NZ,SPK_BEEP1 + PUSH BC ; SETUP ARG IN HL POP HL - POP DE + + CALL SPK_BEEPER ; PLAY + RET +; +; The following SPK_BEEPER routine is a modification of code from +; "The Complete SPECTRUM ROM DISSASSEMBLY" by Dr Ian Logan & Dr Frank O’Hara +; +; https://www.esocop.org/docs/CompleteSpectrumROMDisassemblyThe.pdf +; +; 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. + SRL L ; Each '1' in the L register is to count 4 T states, but take INT (L/4) and count 16 T states instead. + SRL L + CPL ; Go back to the original value in L and find how many were lost by taking 3-(A mod 4). + AND $03 + LD C,A + LD B,$00 + LD IX,SPK_DLYADJ ; The base address of the timing loop. + ADD IX,BC ; Alter the length of the timing loop. Use an earlier starting point for each '1' lost by taking INT (L/4). + LD A,(RTCVAL) ; Fetch the present border colour from BORDCR and move it to bits 2, 1 and 0 of the A register. +; +; The HL register holds the 'length of the timing loop' with 16 T states being used for each '1' in the L register and 1024 T states for each '1' in the H register. +; +SPK_DLYADJ: + NOP ; Add 4 T states for each earlier entry point that is used. + NOP + NOP + INC B ; The values in the B and C registers will come from the H and L registers - see below. + INC C +BE_H_L_LP: + DEC C ; The 'timing loop', i.e. BC*4 T states. (But note that at the half-cycle point, C will be equal to L+1.) + JR NZ,BE_H_L_LP + LD C,$3F + DEC B + JP NZ,BE_H_L_LP +; +; The loudspeaker is now alternately activated and deactivated. +; + XOR %00000100 ; Flip bit 2. + OUT (RTCIO),A ; Perform the 'OUT' operation, leaving other bits unchanged. + LD B,H ; Reset the B register. + LD C,A ; Save the A register. + BIT 4,A ; Jump if at the half-cycle point. + JR NZ,BE_AGAIN +; +; After a full cycle the DE register pair is tested. +; + LD A,D ; Jump forward if the last complete pass has been made already. + OR E + JR Z,BE_END + LD A,C ; Fetch the saved value. + LD C,L ; Reset the C register. + DEC DE ; Decrease the pass counter. + JP (IX) ; Jump back to the required starting location of the loop. +; +; The parameters for the second half-cycle are set up. +; +BE_AGAIN: + LD C,L ; Reset the C register. + INC C ; Add 16 T states as this path is shorter. + JP (IX) ; Jump back. +BE_END: + EI + POP IX + RET +; +; STANDARD ONE SECOND TONE TABLES. FOR SPK_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 +; +SPK_TUNTBL: + +#IF (CPUOSC=2000000) + .DW $10, $6868 ; C0 + .DW $11, $628D ; C + .DW $12, $5D03 ; D0 + .DW $13, $57BF ; D + .DW $14, $52D7 ; E0 + .DW $15, $4E2B ; F0 + .DW $17, $49CD ; F + .DW $18, $45A3 ; G0 + .DW $19, $41B6 ; G + .DW $1B, $3E07 ; A0 + .DW $1D, $3A87 ; A + .DW $1E, $373E ; B0 + .DW $20, $3425 ; C1 + .DW $22, $3134 ; C + .DW $24, $2E6F ; D1 + .DW $26, $2BD3 ; D + .DW $29, $295C ; E1 + .DW $2B, $2708 ; F1 + .DW $2E, $24D5 ; F + .DW $31, $22C2 ; G1 + .DW $33, $20CE ; G + .DW $37, $1EF4 ; A1 + .DW $3A, $1D36 ; A + .DW $3D, $1B90 ; B1 + .DW $41, $1A02 ; C2 + .DW $45, $188B ; C + .DW $49, $1728 ; D2 + .DW $4D, $15DA ; D + .DW $52, $149E ; E2 + .DW $57, $1374 ; F2 + .DW $5C, $125B ; F + .DW $62, $1152 ; G2 + .DW $67, $1057 ; G + .DW $6E, $F6B ; A2 + .DW $74, $E8C ; A + .DW $7B, $DB9 ; B2 + .DW $82, $CF2 ; C3 + .DW $8A, $C36 ; C + .DW $92, $B85 ; D3 + .DW $9B, $ADE ; D + .DW $A4, $A40 ; E3 + .DW $AE, $9AB ; F3 + .DW $B9, $91E ; F + .DW $C4, $89A ; G3 + .DW $CF, $81C ; G + .DW $DC, $7A6 ; A3 + .DW $E9, $737 ; A + .DW $F6, $6CD ; B3 + .DW $105, $66A ; C4 + .DW $115, $60C ; C + .DW $125, $5B3 ; D4 + .DW $137, $560 ; D + .DW $149, $511 ; E4 + .DW $15D, $4C6 ; F4 + .DW $171, $480 ; F + .DW $188, $43E ; G4 + .DW $19F, $3FF ; G + .DW $1B8, $3C4 ; A4 + .DW $1D2, $38C ; A + .DW $1ED, $357 ; B4 + .DW $20B, $326 ; C5 + .DW $22A, $2F7 ; C + .DW $24B, $2CA ; D5 + .DW $26E, $2A1 ; D + .DW $293, $279 ; E5 + .DW $2BA, $254 ; F5 + .DW $2E3, $231 ; F + .DW $30F, $210 ; G5 + .DW $33E, $1F0 ; G + .DW $370, $1D3 ; A5 + .DW $3A4, $1B7 ; A + .DW $3DB, $19C ; B5 + .DW $416, $184 ; C6 + .DW $454, $16C ; C + .DW $496, $156 ; D6 + .DW $4DC, $141 ; D + .DW $526, $12D ; E6 + .DW $574, $11B ; F6 + .DW $5C7, $109 ; F + .DW $61F, $F9 ; G6 + .DW $67D, $E9 ; G + .DW $6E0, $DA ; A6 + .DW $748, $CC ; A + .DW $7B7, $BF ; B6 + .DW $82D, $B3 ; C7 + .DW $8A9, $A7 ; C + .DW $92D, $9C ; D7 + .DW $9B9, $91 ; D + .DW $A4D, $87 ; E7 + .DW $AE9, $7E ; F7 + .DW $B8F, $75 ; F + .DW $C3F, $6D ; G7 + .DW $CFA, $65 ; G + .DW $DC0, $5E ; A7 + .DW $E91, $57 ; A + .DW $F6F, $50 ; B7 +SPK_NOTE_C8: + .DW $105A, $4A ; C8 + .DW $1152, $44 ; C + .DW $125A, $3F ; D8 + .DW $1372, $39 ; D + .DW $149A, $34 ; E8 + .DW $15D3, $30 ; F8 + .DW $171F, $2B ; F + .DW $187F, $27 ; G8 + .DW $19F4, $23 ; G + .DW $1B80, $20 ; A8 + .DW $1D22, $1C ; A + .DW $1EDE, $19 ; B8 +#ENDIF +; +#IF (CPUOSC=4000000) + .DW $10, $7757 ; C0 + .DW $11, $70A6 ; C + .DW $12, $6A51 ; D0 + .DW $13, $644C ; D + .DW $14, $5EB1 ; E0 + .DW $15, $595A ; F0 + .DW $17, $545C ; F + .DW $18, $4F9A ; G0 + .DW $19, $4B1E ; G + .DW $1B, $46E7 ; A0 + .DW $1D, $42E8 ; A + .DW $1E, $3F26 ; B0 + .DW $20, $3B9C ; C1 + .DW $22, $3840 ; C + .DW $24, $3516 ; D1 + .DW $26, $321A ; D + .DW $29, $2F49 ; E1 + .DW $2B, $2CA0 ; F1 + .DW $2E, $2A1C ; F + .DW $31, $27BE ; G1 + .DW $33, $2582 ; G + .DW $37, $2364 ; A1 + .DW $3A, $2166 ; A + .DW $3D, $1F84 ; B1 + .DW $41, $1DBE ; C2 + .DW $45, $1C11 ; C + .DW $49, $1A7C ; D2 + .DW $4D, $18FE ; D + .DW $52, $1795 ; E2 + .DW $57, $1640 ; F2 + .DW $5C, $14FF ; F + .DW $62, $13D0 ; G2 + .DW $67, $12B1 ; G + .DW $6E, $11A3 ; A2 + .DW $74, $10A4 ; A + .DW $7B, $FB3 ; B2 + .DW $82, $ED0 ; C3 + .DW $8A, $DF9 ; C + .DW $92, $D2F ; D3 + .DW $9B, $C70 ; D + .DW $A4, $BBB ; E3 + .DW $AE, $B11 ; F3 + .DW $B9, $A70 ; F + .DW $C4, $9D9 ; G3 + .DW $CF, $949 ; G + .DW $DC, $8C2 ; A3 + .DW $E9, $843 ; A + .DW $F6, $7CA ; B3 + .DW $105, $759 ; C4 + .DW $115, $6ED ; C + .DW $125, $688 ; D4 + .DW $137, $629 ; D + .DW $149, $5CE ; E4 + .DW $15D, $579 ; F4 + .DW $171, $529 ; F + .DW $188, $4DD ; G4 + .DW $19F, $495 ; G + .DW $1B8, $452 ; A4 + .DW $1D2, $412 ; A + .DW $1ED, $3D6 ; B4 + .DW $20B, $39D ; C5 + .DW $22A, $367 ; C + .DW $24B, $335 ; D5 + .DW $26E, $305 ; D + .DW $293, $2D8 ; E5 + .DW $2BA, $2AD ; F5 + .DW $2E3, $285 ; F + .DW $30F, $25F ; G5 + .DW $33E, $23B ; G + .DW $370, $21A ; A5 + .DW $3A4, $1FA ; A + .DW $3DB, $1DC ; B5 + .DW $416, $1BF ; C6 + .DW $454, $1A4 ; C + .DW $496, $18B ; D6 + .DW $4DC, $173 ; D + .DW $526, $15D ; E6 + .DW $574, $147 ; F6 + .DW $5C7, $133 ; F + .DW $61F, $120 ; G6 + .DW $67D, $10E ; G + .DW $6E0, $FE ; A6 + .DW $748, $EE ; A + .DW $7B7, $DF ; B6 + .DW $82D, $D0 ; C7 + .DW $8A9, $C3 ; C + .DW $92D, $B6 ; D7 + .DW $9B9, $AA ; D + .DW $A4D, $9F ; E7 + .DW $AE9, $94 ; F7 + .DW $B8F, $8A ; F + .DW $C3F, $81 ; G7 + .DW $CFA, $78 ; G + .DW $DC0, $70 ; A7 + .DW $E91, $68 ; A + .DW $F6F, $60 ; B7 +SPK_NOTE_C8: + .DW $105A, $59 ; C8 + .DW $1152, $52 ; C + .DW $125A, $4C ; D8 + .DW $1372, $46 ; D + .DW $149A, $40 ; E8 + .DW $15D3, $3B ; F8 + .DW $171F, $36 ; F + .DW $187F, $31 ; G8 + .DW $19F4, $2D ; G + .DW $1B80, $29 ; A8 + .DW $1D22, $25 ; A + .DW $1EDE, $21 ; B8 +#ENDIF +; +#IF (CPUOSC=6000000) + .DW $10, $B311 ; C0 + .DW $11, $A908 ; C + .DW $12, $9F89 ; D0 + .DW $13, $9682 ; D + .DW $14, $8E19 ; E0 + .DW $15, $8616 ; F0 + .DW $17, $7E99 ; F + .DW $18, $7776 ; G0 + .DW $19, $70BC ; G + .DW $1B, $6A6A ; A0 + .DW $1D, $646B ; A + .DW $1E, $5EC9 ; B0 + .DW $20, $5979 ; C1 + .DW $22, $546F ; C + .DW $24, $4FB0 ; D1 + .DW $26, $4B37 ; D + .DW $29, $46FD ; E1 + .DW $2B, $4300 ; F1 + .DW $2E, $3F3A ; F + .DW $31, $3BAC ; G1 + .DW $33, $3852 ; G + .DW $37, $3526 ; A1 + .DW $3A, $3229 ; A + .DW $3D, $2F55 ; B1 + .DW $41, $2CAC ; C2 + .DW $45, $2A28 ; C + .DW $49, $27C9 ; D2 + .DW $4D, $258C ; D + .DW $52, $236E ; E2 + .DW $57, $2170 ; F2 + .DW $5C, $1F8E ; F + .DW $62, $1DC7 ; G2 + .DW $67, $1C19 ; G + .DW $6E, $1A84 ; A2 + .DW $74, $1905 ; A + .DW $7B, $179C ; B2 + .DW $82, $1647 ; C3 + .DW $8A, $1505 ; C + .DW $92, $13D5 ; D3 + .DW $9B, $12B7 ; D + .DW $A4, $11A8 ; E3 + .DW $AE, $10A9 ; F3 + .DW $B9, $FB8 ; F + .DW $C4, $ED4 ; G3 + .DW $CF, $DFD ; G + .DW $DC, $D33 ; A3 + .DW $E9, $C73 ; A + .DW $F6, $BBF ; B3 + .DW $105, $B14 ; C4 + .DW $115, $A73 ; C + .DW $125, $9DB ; D4 + .DW $137, $94C ; D + .DW $149, $8C5 ; E4 + .DW $15D, $845 ; F4 + .DW $171, $7CD ; F + .DW $188, $75B ; G4 + .DW $19F, $6EF ; G + .DW $1B8, $68A ; A4 + .DW $1D2, $62A ; A + .DW $1ED, $5D0 ; B4 + .DW $20B, $57B ; C5 + .DW $22A, $52A ; C + .DW $24B, $4DE ; D5 + .DW $26E, $497 ; D + .DW $293, $453 ; E5 + .DW $2BA, $413 ; F5 + .DW $2E3, $3D7 ; F + .DW $30F, $39E ; G5 + .DW $33E, $368 ; G + .DW $370, $336 ; A5 + .DW $3A4, $306 ; A + .DW $3DB, $2D9 ; B5 + .DW $416, $2AE ; C6 + .DW $454, $286 ; C + .DW $496, $260 ; D6 + .DW $4DC, $23C ; D + .DW $526, $21A ; E6 + .DW $574, $1FA ; F6 + .DW $5C7, $1DC ; F + .DW $61F, $1C0 ; G6 + .DW $67D, $1A5 ; G + .DW $6E0, $18C ; A6 + .DW $748, $174 ; A + .DW $7B7, $15D ; B6 + .DW $82D, $148 ; C7 + .DW $8A9, $134 ; C + .DW $92D, $121 ; D7 + .DW $9B9, $10F ; D + .DW $A4D, $FE ; E7 + .DW $AE9, $EE ; F7 + .DW $B8F, $DF ; F + .DW $C3F, $D1 ; G7 + .DW $CFA, $C3 ; G + .DW $DC0, $B7 ; A7 + .DW $E91, $AB ; A + .DW $F6F, $9F ; B7 +SPK_NOTE_C8: + .DW $105A, $95 ; C8 + .DW $1152, $8B ; C + .DW $125A, $81 ; D8 + .DW $1372, $78 ; D + .DW $149A, $70 ; E8 + .DW $15D3, $68 ; F8 + .DW $171F, $60 ; F + .DW $187F, $59 ; G8 + .DW $19F4, $52 ; G + .DW $1B80, $4C ; A8 + .DW $1D22, $46 ; A + .DW $1EDE, $40 ; B8 +#ENDIF +; +#IF (CPUOSC=8000000) + .DW $10, $EECC ; C0 + .DW $11, $E16A ; C + .DW $12, $D4C1 ; D0 + .DW $13, $C8B7 ; D + .DW $14, $BD81 ; E0 + .DW $15, $B2D2 ; F0 + .DW $17, $A8D6 ; F + .DW $18, $9F52 ; G0 + .DW $19, $965A ; G + .DW $1B, $8DED ; A0 + .DW $1D, $85EF ; A + .DW $1E, $7E6B ; B0 + .DW $20, $7757 ; C1 + .DW $22, $709E ; C + .DW $24, $6A4A ; D1 + .DW $26, $6453 ; D + .DW $29, $5EB1 ; E1 + .DW $2B, $595F ; F1 + .DW $2E, $5457 ; F + .DW $31, $4F9A ; G1 + .DW $33, $4B22 ; G + .DW $37, $46E7 ; A1 + .DW $3A, $42EB ; A + .DW $3D, $3F26 ; B1 + .DW $41, $3B9A ; C2 + .DW $45, $3840 ; C + .DW $49, $3516 ; D2 + .DW $4D, $321A ; D + .DW $52, $2F48 ; E2 + .DW $57, $2C9F ; F2 + .DW $5C, $2A1C ; F + .DW $62, $27BE ; G2 + .DW $67, $2581 ; G + .DW $6E, $2364 ; A2 + .DW $74, $2166 ; A + .DW $7B, $1F85 ; B2 + .DW $82, $1DBE ; C3 + .DW $8A, $1C11 ; C + .DW $92, $1A7C ; D3 + .DW $9B, $18FE ; D + .DW $A4, $1795 ; E3 + .DW $AE, $1641 ; F3 + .DW $B9, $14FF ; F + .DW $C4, $13D0 ; G3 + .DW $CF, $12B1 ; G + .DW $DC, $11A3 ; A3 + .DW $E9, $10A4 ; A + .DW $F6, $FB3 ; B3 + .DW $105, $ED0 ; C4 + .DW $115, $DF9 ; C + .DW $125, $D2F ; D4 + .DW $137, $C70 ; D + .DW $149, $BBB ; E4 + .DW $15D, $B11 ; F4 + .DW $171, $A70 ; F + .DW $188, $9D9 ; G4 + .DW $19F, $949 ; G + .DW $1B8, $8C2 ; A4 + .DW $1D2, $843 ; A + .DW $1ED, $7CA ; B4 + .DW $20B, $759 ; C5 + .DW $22A, $6ED ; C + .DW $24B, $688 ; D5 + .DW $26E, $629 ; D + .DW $293, $5CE ; E5 + .DW $2BA, $579 ; F5 + .DW $2E3, $529 ; F + .DW $30F, $4DD ; G5 + .DW $33E, $495 ; G + .DW $370, $452 ; A5 + .DW $3A4, $412 ; A + .DW $3DB, $3D6 ; B5 + .DW $416, $39D ; C6 + .DW $454, $367 ; C + .DW $496, $335 ; D6 + .DW $4DC, $305 ; D + .DW $526, $2D8 ; E6 + .DW $574, $2AD ; F6 + .DW $5C7, $285 ; F + .DW $61F, $25F ; G6 + .DW $67D, $23B ; G + .DW $6E0, $21A ; A6 + .DW $748, $1FA ; A + .DW $7B7, $1DC ; B6 + .DW $82D, $1BF ; C7 + .DW $8A9, $1A4 ; C + .DW $92D, $18B ; D7 + .DW $9B9, $173 ; D + .DW $A4D, $15D ; E7 + .DW $AE9, $147 ; F7 + .DW $B8F, $133 ; F + .DW $C3F, $120 ; G7 + .DW $CFA, $10E ; G + .DW $DC0, $FE ; A7 + .DW $E91, $EE ; A + .DW $F6F, $DF ; B7 +SPK_NOTE_C8: + .DW $105A, $D0 ; C8 + .DW $1152, $C3 ; C + .DW $125A, $B6 ; D8 + .DW $1372, $AA ; D + .DW $149A, $9F ; E8 + .DW $15D3, $94 ; F8 + .DW $171F, $8A ; F + .DW $187F, $81 ; G8 + .DW $19F4, $78 ; G + .DW $1B80, $70 ; A8 + .DW $1D22, $68 ; A + .DW $1EDE, $60 ; B8 +#ENDIF +; +#IF (CPUOSC=10000000) + ;.DW $10, $12A86 ; C0 + ;.DW $11, $119CC ; C + ;.DW $12, $109F9 ; D0 + .DW $13, $FAED ; D + .DW $14, $ECE9 ; E0 + .DW $15, $DF8E ; F0 + .DW $17, $D313 ; F + .DW $18, $C72E ; G0 + .DW $19, $BBF9 ; G + .DW $1B, $B170 ; A0 + .DW $1D, $A772 ; A + .DW $1E, $9E0E ; B0 + .DW $20, $9534 ; C1 + .DW $22, $8CCD ; C + .DW $24, $84E4 ; D1 + .DW $26, $7D6F ; D + .DW $29, $7665 ; E1 + .DW $2B, $6FBE ; F1 + .DW $2E, $6975 ; F + .DW $31, $6388 ; G1 + .DW $33, $5DF2 ; G + .DW $37, $58A9 ; A1 + .DW $3A, $53AD ; A + .DW $3D, $4EF8 ; B1 + .DW $41, $4A88 ; C2 + .DW $45, $4657 ; C + .DW $49, $4263 ; D2 + .DW $4D, $3EA8 ; D + .DW $52, $3B22 ; E2 + .DW $57, $37CE ; F2 + .DW $5C, $34AB ; F + .DW $62, $31B5 ; G2 + .DW $67, $2EE8 ; G + .DW $6E, $2C45 ; A2 + .DW $74, $29C7 ; A + .DW $7B, $276D ; B2 + .DW $82, $2535 ; C3 + .DW $8A, $231D ; C + .DW $92, $2123 ; D3 + .DW $9B, $1F45 ; D + .DW $A4, $1D82 ; E3 + .DW $AE, $1BD8 ; F3 + .DW $B9, $1A46 ; F + .DW $C4, $18CB ; G3 + .DW $CF, $1765 ; G + .DW $DC, $1613 ; A3 + .DW $E9, $14D4 ; A + .DW $F6, $13A7 ; B3 + .DW $105, $128B ; C4 + .DW $115, $117F ; C + .DW $125, $1082 ; D4 + .DW $137, $F93 ; D + .DW $149, $EB2 ; E4 + .DW $15D, $DDD ; F4 + .DW $171, $D14 ; F + .DW $188, $C56 ; G4 + .DW $19F, $BA3 ; G + .DW $1B8, $AFA ; A4 + .DW $1D2, $A5B ; A + .DW $1ED, $9C4 ; B4 + .DW $20B, $936 ; C5 + .DW $22A, $8B0 ; C + .DW $24B, $832 ; D5 + .DW $26E, $7BA ; D + .DW $293, $74A ; E5 + .DW $2BA, $6DF ; F5 + .DW $2E3, $67B ; F + .DW $30F, $61C ; G5 + .DW $33E, $5C2 ; G + .DW $370, $56E ; A5 + .DW $3A4, $51E ; A + .DW $3DB, $4D3 ; B5 + .DW $416, $48C ; C6 + .DW $454, $449 ; C + .DW $496, $40A ; D6 + .DW $4DC, $3CE ; D + .DW $526, $396 ; E6 + .DW $574, $360 ; F6 + .DW $5C7, $32E ; F + .DW $61F, $2FF ; G6 + .DW $67D, $2D2 ; G + .DW $6E0, $2A8 ; A6 + .DW $748, $280 ; A + .DW $7B7, $25A ; B6 + .DW $82D, $237 ; C7 + .DW $8A9, $215 ; C + .DW $92D, $1F6 ; D7 + .DW $9B9, $1D8 ; D + .DW $A4D, $1BC ; E7 + .DW $AE9, $1A1 ; F7 + .DW $B8F, $188 ; F + .DW $C3F, $170 ; G7 + .DW $CFA, $15A ; G + .DW $DC0, $145 ; A7 + .DW $E91, $131 ; A + .DW $F6F, $11E ; B7 +SPK_NOTE_C8: + .DW $105A, $10C ; C8 + .DW $1152, $FB ; C + .DW $125A, $EC ; D8 + .DW $1372, $DD ; D + .DW $149A, $CF ; E8 + .DW $15D3, $C1 ; F8 + .DW $171F, $B5 ; F + .DW $187F, $A9 ; G8 + .DW $19F4, $9E ; G + .DW $1B80, $93 ; A8 + .DW $1D22, $89 ; A + .DW $1EDE, $80 ; B8 +#ENDIF