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+36 @@: AND AX,127 ; put zero in AH SUB AL,12 JC mute XCHG BP,AX ; get channel1 data MOV AL,[BP+SI] 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 ;DB 00,00,00,00,00,00,00,00,00,00,00,00 ; part A DB C4,D4,C4,00, 00,00,00,00 DB A3,A3,A3,00, 00,00,00,00 DB C4,C4,00,00, H3,H3,00,00 DB A3,A3,00,00, G3,G3,00,00 DB A3,C4,A3,C4, 00,00,00,00 DB F3,F3,F3,F3, 00,00,00,00 DB G3,G3,G3,G3, 00,00,00,00 DB C3,C3,C3,C3, 00,00,00,00 ; part B DB F3,F3,00,00, G3,G3,00,00 DB A3,A3,00,00, H3,H3,00,00 DB C4,C4,C4,C4, 00,00,00,00 DB C4,C4,00,00, D4,D4,00,00 DB C4,D4,C4,D4, C4,D4,C4,D4 DB C4,D4,C4,D4, C4,D4,00,00 DB C4,C4,C4,C4; 00,00,00,00 ;DB 00,00,00,00, 00,00,00,00 ; part A ;DB C4,D4,C4,00, 00,00,00,00 ;DB A3,A3,A3,00, 00,00,00,00 ;DB C4,C4,00,00, H3,H3,00,00 ;DB A3,A3,00,00, G3,G3,00,00 ;DB A3,C4,A3,C4, 00,00,00,00 ;DB F3,F3,F3,F3, 00,00,00,00 ;DB G3,G3,G3,G3, 00,00,00,00 ;DB C3,C3,C3,C3, 00,00,00,00 ; part C ;DB F3,F3,00,00, G3,G3,00,00 ;DB A3,A3,00,00, H3,H3,00,00 DB A3,A3,A3,A3, 00,00,00,00 DB G3,G3,G3,G3, 00,00,00,00 DB F3,F3,F3,F3, F3,F3,F3,F3 DB F3,F3,00,00, 00,G3,F3,E3 DB F3,F3,F3,F3; 00,00,00,00 ;DB 00,00,00,00, 00,00,00,00