M EQU 59 D4 = (10500000000/88/117466+M/2)/M C4 = (10500000000/88/104650+M/2)/M H3 = (10500000000/88/93388+M/2)/M;93233+M/2)/M A3 = (10500000000/88/88000+M/2)/M G3 = (10500000000/88/78399+M/2)/M F3 = (10500000000/88/69846+M/2)/M E3 = (10500000000/88/65568+M/2)/M;65925+M/2)/M C3 = (10500000000/88/52325+M/2)/M ORG 256 ;--------------------------------------------------------------------- MOV AL,0B6H ; not necesary OUT 43H,AL ; just make it more compatible main: HLT INC BX ; BX=timer counter MOV AL,BL ; get timer counter MOV SI,table CMP AL,208+12 JC @F MOV SI,table+18;36 @@: AND AX,127 ; put zero in AH SUB AL,12 JC mute XCHG BP,AX ; get channel1 data SHR BP,1 MOV AL,[BP+SI] JNC @F SHR AL,4 @@: AND AL,15 JZ mute ADD AL,16 CMP AL,18 JNE @F MOV AL,C3 @@: MOV AH,M ; counter = data * Multiplier mute: MUL AH beep: OUT 42H,AL ; lowbyte of the counter MOV AL,AH OUT 42H,AL ; highbyte of the counter SALC ; if pause then speaker turn off OUT 61H,AL ; else turn on ;--------------------------------------------------------------------- CBW ; if speaker off then AH=0 IN AL,60H ; if ESC pressed then AL=1 DEC AX ; if AX=1 then EXIT JNZ main RETN ; exit to DOS ;--------------------------------------------------------------------- table: ; notes data, 0 -> pause DD 0x00000313;DB 03,01,03,00, 00,00,00,00 DD 0x00000777;DB 07,07,07,00, 00,00,00,00 DD 0x00660033;DB 03,03,00,00, 06,06,00,00 DD 0x00AA0077;DB 07,07,00,00, 10,10,00,00 DD 0x00003737;DB 07,03,07,03, 00,00,00,00 DD 0x0000DDDD;DB 13,13,13,13, 00,00,00,00 DD 0x0000AAAA;DB 10,10,10,10, 00,00,00,00 DD 0x00002222;DB 02,02,02,02, 00,00,00,00 DD 0x00AA00DD;DB 13,13,00,00, 10,10,00,00 DD 0x00660077;DB 07,07,00,00, 06,06,00,00 DD 0x00003333;DB 03,03,03,03, 00,00,00,00 DD 0x00110033;DB 03,03,00,00, 01,01,00,00 DD 0x13131313;DB 03,01,03,01, 03,01,03,01 DD 0x00131313;DB 03,01,03,01, 03,01,00,00 DD 0x77773333;DB 03,03,03,03, 07,07,07,07 DD 0xAAAA0000;DB 00,00,00,00, 10,10,10,10 DD 0xDDDD0000;DB 00,00,00,00, 13,13,13,13 DD 0x00DDDDDD;DB 13,13,13,13, 13,13,00,00 DD 0xDDDDFDA0;DB 00,10,13,15, 13,13,13,13