Created
October 5, 2012 15:19
-
-
Save jason2506/3840440 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
APORT3 EQU 03FD0H | |
BPORT3 EQU 03FD2H | |
CPORT3 EQU 03FD4H | |
CNT3 EQU 03FD6H | |
FND EQU 03FF0H | |
IR_WR EQU 0FFC1H | |
IR_RD EQU 0FFC3H | |
DR_WR EQU 0FFC5H | |
RAME EQU 0EFFFH | |
FLAG EQU RAME-0FFFH | |
DATA79 EQU 0FFE8H | |
CNTR79 EQU 0FFEAH | |
CODE SEGMENT | |
ASSUME CS:CODE, DS:CODE | |
ORG 0 | |
START: MOV SP, RAME ; initialize stack pointer | |
MOV AX, CS ; set DS = CS | |
MOV DS, AX | |
MOV CURRENT, 0 ; initialize current song | |
; =============== BEGIN / SONG SELECTION =============== | |
START_SELECTION: | |
MOV AL, CURRENT ; display current song in 7-segment display | |
MOV BX, OFFSET FONT | |
MOV DX, FND | |
XLAT | |
OUT DX, AL | |
MOV BX, OFFSET SELECT_MSG ; display music selection message | |
CALL DISPLAY_STATUS | |
CALL READY_TO_PRESS | |
CALL CHECK_SELECTION | |
CALL SOUNDLESS | |
JMP START_SELECTION | |
SELECT_NEXT: | |
CMP CURRENT, 9 | |
JZ SET_ZERO | |
INC CURRENT | |
RET | |
SET_ZERO: MOV CURRENT, 0 | |
RET | |
SELECT_PREVIOUS: | |
CMP CURRENT, 0 | |
JZ SET_NINE | |
DEC CURRENT | |
RET | |
SET_NINE: MOV CURRENT, 9 | |
RET | |
CHECK_SELECTION: | |
CMP AL, 0AH ; if press '0' to '9', then select song | |
JL SELECT_SONG | |
CMP AL, 0EH ; if press 'E', then exit | |
JZ CHANGE_TO_PIANO_MODE | |
CMP AL, 0FH ; if press 'F', then exit | |
JZ EXIT | |
CMP AL, 10H ; if press '.', then play selected song | |
JZ PLAY_SELECTED | |
CMP AL, 12H ; if press '-', then select previous song | |
JZ SELECT_PREVIOUS | |
CMP AL, 13H ; if press '+', then select next song | |
JZ SELECT_NEXT | |
RET ; return to song selection loop | |
SELECT_SONG: | |
MOV CURRENT, AL ; record current selected song | |
RET ; return to song selection loop | |
EXIT: MOV BX, OFFSET BYE_MSG ; display exit message | |
CALL LCD_OUT_LINE1 | |
MOV AH, 4CH | |
INT 21H | |
PLAY_SELECTED: | |
MOV BX, OFFSET PLAY_MSG ; display playing message | |
CALL DISPLAY_STATUS | |
MOV AL, 2 ; calculate address offset of song data | |
MUL CURRENT | |
MOV BX, OFFSET SONG_RHYPHM ; assign song rhyphm | |
ADD BX, AX | |
MOV SI, FLAG | |
MOV BX, [BX] | |
MOV [SI], BX | |
MOV BX, OFFSET SONG_DATA ; assign address of song scale | |
ADD BX, AX | |
MOV BX, [BX] | |
SUB BX, BP | |
CALL PLAY | |
RET | |
DISPLAY_CURRENT_SONG: | |
MOV BX, OFFSET SONG_NAME ; display name of current song in LCD | |
MOV AL, 17 | |
MUL CURRENT | |
ADD BX, AX | |
CALL NEXT_LINE | |
CALL STRINGL | |
RET | |
DISPLAY_STATUS: | |
CALL LCD_OUT_LINE1 ; output message that pointed by BX in LCD | |
CALL DISPLAY_CURRENT_SONG | |
MOV AH, 4CH | |
RET | |
; =============== SONG SELECTION / PIANO MODE =============== | |
CHANGE_TO_PIANO_MODE: | |
MOV BX, OFFSET PIANO_MSG ; display exit message | |
CALL LCD_OUT_LINE1 | |
MOV AH, 4CH | |
JMP START_PIANO_MODE | |
BREAK_PIANO_MODE: | |
RET ; return to song selection mode | |
START_PIANO_MODE: | |
MOV DX, CNTR79 | |
IN AL, DX | |
TEST AL, 7 ; if there has no key pressed, then return | |
JZ PIANO_MODE | |
MOV DX, DATA79 | |
IN AL, DX | |
CMP AL, 0EH ; if press 'E', then change to song selection mode | |
JZ BREAK_PIANO_MODE | |
CMP AL, 0FH ; if press 'F', then exit | |
JZ EXIT | |
PIANO_MODE: CALL SOUNDLESS | |
MOV DX, APORT3 | |
IN AL, DX | |
NOT AL | |
TEST AL, 80H ; check which button is pressed | |
JNZ PLAY_DO | |
TEST AL, 40H | |
JNZ PLAY_RE | |
TEST AL, 20H | |
JNZ PLAY_MI | |
TEST AL, 10H | |
JNZ PLAY_FA | |
TEST AL, 08H | |
JNZ PLAY_SOL | |
TEST AL, 04H | |
JNZ PLAY_RA | |
TEST AL, 02H | |
JNZ PLAY_SY | |
TEST AL, 01H | |
JNZ PLAY_DO_H | |
JMP START_PIANO_MODE | |
PLAY_DO: MOV BX, OFFSET DO | |
JMP PLAY_SCALE | |
PLAY_RE: MOV BX, OFFSET RE | |
JMP PLAY_SCALE | |
PLAY_MI: MOV BX, OFFSET MI | |
JMP PLAY_SCALE | |
PLAY_FA: MOV BX, OFFSET FA | |
JMP PLAY_SCALE | |
PLAY_SOL: MOV BX, OFFSET SOL | |
JMP PLAY_SCALE | |
PLAY_RA: MOV BX, OFFSET RA | |
JMP PLAY_SCALE | |
PLAY_SY: MOV BX, OFFSET SY | |
JMP PLAY_SCALE | |
PLAY_DO_H: MOV BX, OFFSET DO_H | |
JMP PLAY_SCALE | |
PLAY_SCALE: MOV SI, FLAG | |
MOV [SI], 400H | |
CALL PLAY | |
JMP START_PIANO_MODE | |
; =============== PIANO MODE / LCD DISPLAY =============== | |
LCD_OUT_LINE1: | |
CALL ALLCLR | |
CALL STRINGL | |
RET | |
ALLCLR: PUSH AX | |
MOV AH, 1 | |
JMP LCD_OUT | |
NEXT_LINE: PUSH AX | |
MOV AH, 0C0H | |
JMP LCD_OUT | |
LCD_OUT: PUSH DX | |
CALL BUSY | |
MOV DX, IR_WR | |
MOV AL, AH | |
OUT DX, AL | |
POP DX | |
POP AX | |
RET | |
STRINGL: PUSH BP | |
MOV BP, BX ; transfer address point to message to BP | |
JMP STRINGL0 | |
STRINGL0: CMP CS:BYTE PTR [BP], '$' ; if current character is '$', then return | |
JZ STRINGL1 | |
MOV AH, CS:[BP] | |
CALL OUTL | |
INC BP ; increase BP to get the address of next character | |
JMP STRINGL0 | |
STRINGL1: POP BP | |
RET | |
OUTL: PUSH DX | |
PUSH AX | |
CALL BUSY | |
MOV AL, AH | |
MOV DX, DR_WR | |
OUT DX, AL | |
POP AX | |
POP DX | |
RET | |
DEL2: PUSH CX | |
MOV CX, 0FFFH | |
LOOP $ | |
POP CX | |
RET | |
BUSY: PUSH DX | |
PUSH AX | |
MOV DX, IR_RD | |
BUSY1: IN AL, DX | |
AND AL, 80H | |
JNZ BUSY1 | |
POP AX | |
POP DX | |
RET | |
; =============== LCD DISPLAY / PRESS INTERRUPT =============== | |
READY_TO_PRESS: | |
MOV DX, CNTR79 | |
WAITING_FOR_PRESS: | |
IN AL, DX ; wait until some key be pressed | |
TEST AL, 7 | |
JZ WAITING_FOR_PRESS | |
MOV DX, DATA79 | |
IN AL, DX | |
RET | |
; =============== PRESS INTERRUPT / PLAY SONG =============== | |
PLAY: CALL CHECK_INT ; check whether there has some key be pressed | |
MOV AL, [BX] ; transfer musical scale data to AL | |
PUSH AX ; turn on the LED correspond to the musical scale | |
CALL GET_CODE | |
MOV DX, BPORT3 | |
OUT DX, AL | |
POP AX | |
INC BX | |
MOV CH, [BX] ; transfer rhythm data to CH | |
AND CH, CH ; if CH == 00H, then return | |
JZ RETURN | |
MOV CL, AL | |
INC AL | |
JZ J208 | |
PUSH BX ; store address of assigned data | |
CALL J202 | |
POP BX ; return address of assigned data | |
J201: INC BX | |
JMP PLAY | |
J202: MOV BX, [SI] ; transfer basic rhythm data to BX | |
J203: MOV AH, CL | |
MOV AL, 0FFH | |
MOV DX, CPORT3 | |
OUT DX, AL | |
J204: DEC BX | |
MOV AL, BH | |
AND AL, AL | |
JNZ J205 | |
MOV BX, [SI] ; transfer basic rhythm data to BX | |
DEC CH | |
JZ RETURN | |
J205: DEC AH | |
JNZ J204 | |
MOV AH, CL | |
MOV AL, 00H | |
OUT DX, AL | |
DEC BX | |
J206: MOV AL, BH | |
AND AL, AL | |
JNZ J207 | |
MOV BX, [SI] ; transfer basic rhythm data to BX | |
DEC CH | |
JZ RETURN | |
J207: DEC AH | |
JNZ J206 | |
JMP J203 | |
J208: PUSH BX ; store address of assigned data | |
MOV BX, [SI] ; transfer basic rhythm data to BX | |
J209: MOV AH, CL | |
J210: DEC BX | |
MOV AL, BH | |
AND AL, AL | |
JNZ J211 | |
MOV BX, [SI] ; transfer basic rhythm data to BX | |
DEC CH | |
JZ J212 | |
J211: DEC AH | |
JNZ J210 | |
JMP J209 | |
J212: POP BX ; return address of assigned data | |
JMP J201 | |
SOUNDLESS: MOV DX, CPORT3 | |
MOV AL, 00H | |
OUT DX, AL | |
RET | |
RETURN: RET | |
; =============== PLAY SONG / PLAYING CONTROL =============== | |
CHECK_INT: MOV DX, CNTR79 | |
IN AL, DX | |
TEST AL, 7 ; if there has no key pressed, then return | |
JZ RETURN | |
MOV DX, DATA79 | |
IN AL, DX | |
CMP AL, 10H ; if press '.', then pause | |
JZ PAUSE | |
CMP AL, 11H ; if press ',', then stop | |
JZ STOP | |
RET | |
PAUSE: CALL SOUNDLESS | |
PUSH BX | |
MOV BX, OFFSET PAUSE_MSG ; display pause message | |
CALL DISPLAY_STATUS | |
POP BX | |
PAUSE_LOOP: CALL READY_TO_PRESS | |
CMP AL, 10H ; if press '.', then continue playing | |
JZ CONTINUE | |
CMP AL, 11H ; if press ',', then stop | |
JZ STOP | |
JMP PAUSE_LOOP | |
CONTINUE: PUSH BX | |
MOV BX, OFFSET PLAY_MSG ; display playing message | |
CALL DISPLAY_STATUS | |
POP BX | |
RET | |
STOP: MOV BX, OFFSET SONG_END | |
RET | |
; =============== PLAYING CONTROL / GET LIGHT CODE =============== | |
GET_CODE: CMP AL, 0 ; map musical scale data to LCD light code | |
JZ RETURN | |
CMP AL, 15H | |
JLE RECORD_RE | |
CMP AL, 19H | |
JLE RECORD_DO | |
CMP AL, 1BH | |
JLE RECORD_SY | |
CMP AL, 1EH | |
JLE RECORD_RA | |
CMP AL, 22H | |
JLE RECORD_SOL | |
CMP AL, 26H | |
JLE RECORD_FA | |
CMP AL, 28H | |
JLE RECORD_MI | |
CMP AL, 2DH | |
JLE RECORD_RE | |
CMP AL, 33H | |
JLE RECORD_DO | |
CMP AL, 36H | |
JLE RECORD_SY | |
CMP AL, 3CH | |
JLE RECORD_RA | |
CMP AL, 44H | |
JLE RECORD_SOL | |
CMP AL, 4CH | |
JLE RECORD_FA | |
CMP AL, 50H | |
JLE RECORD_MI | |
CMP AL, 5AH | |
JLE RECORD_RE | |
CMP AL, 66H | |
JLE RECORD_DO | |
CMP AL, 6CH | |
JLE RECORD_SY | |
CMP AL, 78H | |
JLE RECORD_RA | |
CMP AL, 88H | |
JLE RECORD_SOL | |
RECORD_DO: MOV AL, 10000001B | |
RET | |
RECORD_RE: MOV AL, 01000000B | |
RET | |
RECORD_MI: MOV AL, 00100000B | |
RET | |
RECORD_FA: MOV AL, 00010000B | |
RET | |
RECORD_SOL: MOV AL, 00001000B | |
RET | |
RECORD_RA: MOV AL, 00000100B | |
RET | |
RECORD_SY: MOV AL, 00000010B | |
RET | |
; =============== GET LIGHT CODE / SONG DATA =============== | |
SONG_END DB 00H,00H | |
STAR DB 66H,08H,66H,08H,44H,08H,44H,08H | |
DB 3CH,08H,3CH,08H,44H,10H | |
DB 4CH,08H,4CH,08H,50H,08H,50H,08H | |
DB 5AH,08H,5AH,08H,66H,10H | |
DB 44H,08H,44H,08H,4CH,08H,4CH,08H | |
DB 50H,08H,50H,08H,5AH,10H | |
DB 44H,08H,44H,08H,4CH,08H,4CH,08H | |
DB 50H,08H,50H,08H,5AH,10H | |
DB 66H,08H,66H,08H,44H,08H,44H,08H | |
DB 3CH,08H,3CH,08H,44H,10H | |
DB 4CH,08H,4CH,08H,50H,08H,50H,08H | |
DB 5AH,08H,5AH,08H,66H,10H | |
DB 00H,00H | |
HANS DB 44H,08H,50H,08H,50H,10H | |
DB 4CH,08H,5AH,08H,5AH,10H | |
DB 66H,08H,5AH,08H,50H,08H,4CH,08H | |
DB 44H,08H,44H,08H,44H,10H | |
DB 44H,08H,50H,08H,50H,10H | |
DB 4CH,08H,5AH,08H,5AH,10H | |
DB 66H,08H,50H,08H,44H,08H,44H,08H | |
DB 50H,20H | |
DB 5AH,08H,5AH,08H,5AH,08H,5AH,08H | |
DB 5AH,08H,50H,08H,4CH,10H | |
DB 50H,08H,50H,08H,50H,08H,50H,08H | |
DB 50H,08H,4CH,08H,44H,10H | |
DB 44H,08H,50H,08H,50H,10H | |
DB 4CH,08H,5AH,08H,5AH,10H | |
DB 66H,08H,50H,08H,44H,08H,44H,08H | |
DB 66H,20H | |
DB 00H,00H | |
SUN DB 44H,06H,4CH,06H,50H,06H,5AH,0CH | |
DB 66H,0CH | |
DB 66H,06H,5AH,06H,50H,06H,66H,06H | |
DB 6CH,0CH,78H,13H | |
DB 6CH,06H,66H,06H,5AH,06H,6CH,06H | |
DB 78H,06H,78H,13H,6CH,06H,66H,06H | |
DB 5AH,06H,78H,06H,88H,06H,88H,13H | |
DB 44H,06H,4CH,06H,50H,06H,5AH,0CH | |
DB 66H,0CH | |
DB 66H,06H,5AH,06H,50H,06H,66H,06H | |
DB 6CH,0CH,78H,13H | |
DB 4CH,06H,50H,06H,5AH,06H,44H,06H | |
DB 50H,06H,5AH,06H,66H,06H,5AH,13H | |
DB 50H,06H,5AH,06H,66H,13H,33H,06H | |
DB 33H,06H,36H,06H | |
DB 44H,0CH,44H,13H,36H,06H,36H,06H | |
DB 3CH,06H,4CH,1EH,36H,06H,36H,06H | |
DB 3CH,06H,4CH,0CH,4CH,13H | |
DB 5AH,06H,50H,06H,4CH,06H,44H,1EH | |
DB 44H,06H,40H,1EH,4CH,06H,33H,06H | |
DB 40H,06H | |
DB 44H,0CH,44H,13H,50H,06H,5AH,06H | |
DB 66H,06H,44H,1EH,50H,06H,5AH,06H | |
DB 66H,06H,66H,20H | |
DB 00H,00H | |
BIRTHDAY DB 66H,06H,66H,06H,5AH,0CH,66H,0CH | |
DB 4CH,0CH,50H,18H | |
DB 66H,06H,66H,06H,5AH,0CH,66H,0CH | |
DB 44H,0CH,4CH,18H | |
DB 66H,06H,66H,06H,33H,0CH,3CH,0CH | |
DB 4CH,0CH,50H,0CH,5AH,18H | |
DB 39H,06H,39H,06H,3CH,0CH,4CH,0CH | |
DB 44H,0CH,4CH,18H | |
DB 00H,00H | |
WALTZ DB 40H,06H,44H,03H,40H,03H,33H,03H | |
DB 39H,03H,44H,03H,40H,03H,39H,03H | |
DB 40H,03H,33H,03H,39H,03H | |
DB 44H,03H,40H,03H,33H,03H,39H,03H | |
DB 44H,03H,40H,03H,33H,03H,39H,03H | |
DB 44H,03H,40H,03H,33H,03H,39H,03H | |
DB 0C0H,03H,40H,03H,33H,03H | |
DB 39H,03H,44H,03H,40H,03H,98H,03H | |
DB 39H,03H,44H,03H,40H,03H,33H,03H | |
DB 39H,03H,0C0H,03H,40H,03H,33H,03H | |
DB 39H,03H,44H,03H,40H,03H,98H,03H | |
DB 33H,03H,30H,03H,2AH,03H,26H,03H | |
DB 24H,03H,80H,03H,1CH,06H,20H,03H | |
DB 24H,03H,26H,03H,0ACH,03H,2AH,02H | |
DB 0FFH,01H,2AH,01H,26H,01H,2AH,01H | |
DB 2DH,03H,2AH,03H,80H,03H,1CH,06H | |
DB 20H,03H,24H,03H,26H,03H,80H,03H | |
DB 2AH,01H,26H,01H,2AH,01H,2DH,03H | |
DB 2AH,03H,26H,03H,39H,03H,0C0H,03H | |
DB 44H,03H,33H,03H,39H,03H,44H,03H | |
DB 40H,03H,98H,03H,39H,03H,44H,03H | |
DB 40H,03H,33H,03H,39H,03H,0C0H,03H | |
DB 40H,03H,33H,03H,39H,03H,44H,03H | |
DB 40H,03H,98H,03H,33H,03H,30H,03H | |
DB 2AH,03H,26H,03H,24H,03H,80H,03H | |
DB 1CH,06H,20H,03H,24H,03H,26H,03H | |
DB 0ACH,03H,2AH,02H,0FFH,01H,2AH,01H | |
DB 26H,01H,2AH,01H,2DH,03H,2AH,06H | |
DB 80H,03H,1CH,06H,20H,03H,24H,03H | |
DB 26H,03H,80H,03H,26H,03H,2AH,03H | |
DB 2DH,03H,2AH,03H,28H,03H | |
DB 0F0H,02H,24H,02H,26H,02H,28H,03H | |
DB 26H,03H,20H,03H,24H,03H,0E4H,03H | |
DB 24H,03H,26H,03H,28H,03H,26H,03H | |
DB 1CH,03H,0CCH,02H,1CH,02H,20H,02H | |
DB 22H,03H,20H,03H,19H,03H,1CH,03H | |
DB 0C0H,03H,1CH,03H,20H,03H,22H,03H | |
DB 20H,03H,18H,03H,90H,03H,1CH,03H | |
DB 20H,03H,24H,03H,26H,03H,2AH,03H | |
DB 80H,03H,33H,03H,39H,03H,40H,03H | |
DB 48H,03H,4CH,03H,56H,03H,60H,03H | |
DB 66H,03H,56H,03H,39H,03H,40H,03H | |
DB 0C0H,03H,40H,03H,39H,03H,33H,03H | |
DB 30H,03H,2AH,03H,66H,02H,24H,02H | |
DB 26H,02H,28H,03H,26H,03H,20H,03H | |
DB 24H,03H,72H,03H,24H,03H,26H,03H | |
DB 28H,03H,26H,03H,1CH,03H,66H,02H | |
DB 1CH,02H,20H,02H,22H,03H,20H,03H | |
DB 19H,03H,1CH,03H,60H,03H,1CH,03H | |
DB 20H,03H,22H,03H,20H,03H,13H,03H | |
DB 90H,03H,18H,03H,19H,03H,1CH,03H | |
DB 20H,03H,24H,03H,80H,03H,2AH,03H | |
DB 30H,03H,33H,03H,39H,03H,40H,03H | |
DB 3CH,03H,33H,03H,39H,03H,4CH,03H | |
DB 48H,03H,66H,03H,60H,0CH,0FFH,06H | |
DB 80H,03H,40H,09H,56H,06H,40H,0CH | |
DB 50H,06H,0C0H,03H,40H,09H,4CH,06H | |
DB 80H,03H,26H,08H,0FFH,01H,26H,03H | |
DB 0ACH,03H,26H,09H,39H,06H,80H,03H | |
DB 26H,09H,33H,06H,0C0H,03H,2AH,09H | |
DB 30H,03H,98H,02H,33H,04H,2AH,04H | |
DB 30H,04H,39H,04H,0CCH,03H,40H,09H | |
DB 56H,06H,80H,03H,40H,09H,50H,06H | |
DB 0C0H,03H,40H,09H,4CH,06H,0D8H,03H | |
DB 26H,0FH,0CCH,03H,33H,03H,36H,06H | |
DB 33H,06H,0CCH,03H,20H,03H,39H,06H | |
DB 22H,06H,98H,03H,3CH,03H,24H,06H | |
DB 40H,06H,26H,06H,4CH,06H,39H,06H | |
DB 0CCH,03H,40H,09H,56H,06H,80H,03H | |
DB 40H,09H,50H,06H,0C0H,03H,40H,09H | |
DB 4CH,06H,80H,03H,26H,08H,0FFH,01H | |
DB 26H,06H,0ACH,03H,26H,09H,39H,06H | |
DB 80H,03H,26H,09H,33H,06H,0C0H,03H | |
DB 2AH,03H,30H,06H,33H,06H,98H,03H | |
DB 2AH,03H,30H,09H,39H,03H,0CCH,03H | |
DB 40H,09H,56H,06H,80H,03H,40H,09H | |
DB 50H,06H,0D8H,03H,40H,09H,4CH,06H | |
DB 0E4H,03H,26H,0FH,0ACH,03H,26H,09H | |
DB 36H,06H,2AH,0CH,3CH,06H,0C0H,03H | |
DB 2AH,03H,40H,06H,2DH,06H,26H,06H | |
DB 2AH,06H,20H,06H | |
DB 40H,03H,39H,03H,40H,03H,39H,03H | |
DB 40H,03H,39H,03H,0FFH,12H,00H,00H | |
YESTERDAY DB 0FFH,08H,3CH,04H,36H,04H,30H,04H | |
DB 2DH,04H,28H,04H,26H,04H | |
DB 28H,08H,2DH,04H,2DH,14H | |
DB 0FFH,08H,2DH,04H,2DH,04H,33H,04H | |
DB 39H,04H,3CH,04H,44H,04H | |
DB 39H,08H,3CH,04H,3CH,0CH,44H,08H | |
DB 4CH,08H,3CH,04H,44H,0CH,5AH,08H | |
DB 4CH,08H,3CH,04H,3CH,0CH,0FFH,08H | |
DB 44H,04H,4CH,04H,4CH,18H | |
DB 0FFH,08H,3CH,04H,36H,04H,30H,04H | |
DB 2DH,04H,28H,04H,26H,04H | |
DB 28H,08H,2DH,04H,2DH,18H | |
DB 0FFH,08H,2DH,04H,2DH,04H,33H,04H | |
DB 39H,04H,3CH,04H,44H,04H | |
DB 39H,08H,3CH,04H,3CH,0CH,44H,08H | |
DB 4CH,08H,3CH,04H,44H,0CH,5AH,08H | |
DB 4CH,08H,3CH,04H,3CH,0CH,0FFH,08H | |
DB 3CH,10H,3CH,10H | |
DB 2DH,08H,28H,08H,26H,08H,28H,04H,2DH,04H | |
DB 28H,0CH,2DH,04H,33H,08H,2DH,08H | |
DB 3CH,18H,0FFH,08H | |
DB 28H,0CH,2DH,04H,33H,08H,28H,08H | |
DB 26H,18H,0FFH,08H | |
DB 44H,04H,4CH,04H,4CH,18H | |
DB 0FFH,08H,3CH,04H,36H,04H,30H,04H,2DH,04H | |
DB 28H,04H,26H,04H | |
DB 28H,08H,2DH,04H,2DH,18H | |
DB 0FFH,08H,2DH,04H,2DH,04H,33H,04H,39H,04H | |
DB 3CH,04H,44H,04H | |
DB 39H,08H,3CH,04H,3CH,0CH,44H,08H | |
DB 4CH,08H,3CH,04H,44H,0CH,5AH,08H | |
DB 4CH,08H,3CH,04H,3CH,0CH,0FFH,08H | |
DB 0FFH,12H,00H,00H | |
CLOCK DB 88H,08H,66H,08H,6CH,04H,66H,04H | |
DB 5AH,08H,66H,04H,5AH,04H,50H,04H | |
DB 50H,04H,4CH,04H,50H,04H,78H,08H | |
DB 5AH,04H,5AH,04H,66H,08H,66H,04H | |
DB 66H,04H,6CH,08H,78H,04H,6CH,04H | |
DB 66H,18H | |
DB 88H,08H,66H,08H,6CH,04H,66H,04H | |
DB 5AH,08H,66H,04H,5AH,04H,50H,04H | |
DB 50H,04H,4CH,04H,50H,04H,78H,08H | |
DB 5AH,04H,5AH,04H,66H,08H,66H,04H | |
DB 66H,04H,6CH,08H,78H,04H,6CH,04H | |
DB 66H,18H | |
DB 66H,04H,50H,04H,44H,08H,50H,04H | |
DB 5AH,04H,66H,08H,6CH,04H,66H,04H | |
DB 5AH,04H,66H,04H,6CH,04H,78H,04H | |
DB 88H,08H,66H,04H,50H,04H,44H,08H | |
DB 50H,04H,5AH,04H,66H,08H,6CH,04H | |
DB 66H,04H,5AH,18H | |
DB 88H,08H,66H,04H,66H,04H,00H,08H | |
DB 5AH,0CH,00H,04H,50H,04H,50H,04H | |
DB 4CH,04H,50H,04H,78H,08H,5AH,04H | |
DB 5AH,04H,66H,10H,6CH,08H,78H,04H | |
DB 6CH,04H,66H,18H | |
DB 00H,00H | |
DREAM_WEDDING: | |
DB 3CH,08H,3CH,08H,36H,08H,36H,08H | |
DB 33H,08H,33H,08H,36H,08H,36H,08H | |
DB 3CH,08H,3CH,08H,50H,08H,50H,08H | |
DB 66H,08H,66H,08H,78H,08H,78H,08H | |
DB 44H,08H,44H,08H,4CH,08H,4CH,08H | |
DB 50H,08H,4CH,08H,44H,08H,4CH,30H | |
DB 00H,08H,4CH,08H,4CH,08H,44H,08H | |
DB 44H,08H,3CH,08H,3CH,08H,36H,08H | |
DB 36H,08H,44H,08H,44H,08H,5AH,08H | |
DB 5AH,08H,4CH,08H,4CH,08H,50H,08H | |
DB 50H,08H,5AH,08H,50H,08H,4CH,08H | |
DB 50H,30H | |
DB 50H,10H,78H,08H,66H,08H,50H,08H | |
DB 5AH,08H,50H,10H,78H,08H,66H,08H | |
DB 50H,08H,5AH,08H,50H,10H,78H,08H | |
DB 66H,08H,4CH,08H,50H,08H,4CH,10H | |
DB 78H,08H,66H,08H,4CH,08H,50H,08H | |
DB 4CH,10H | |
DB 4CH,08H,50H,08H,4CH,08H,48H,08H | |
DB 44H,10H,44H,08H,3CH,08H,44H,08H | |
DB 3CH,08H,50H,30H | |
DB 28H,10H,3CH,08H,33H,08H,28H,08H | |
DB 2DH,08H,28H,10H,3CH,08H,33H,08H | |
DB 28H,08H,2DH,08H,28H,10H,3CH,08H | |
DB 33H,08H,26H,08H,28H,08H,26H,10H | |
DB 3CH,08H,33H,08H,26H,08H,28H,08H | |
DB 26H,10H | |
DB 26H,08H,28H,08H,26H,08H,24H,08H | |
DB 22H,10H,22H,08H,1EH,08H,22H,08H | |
DB 1EH,08H,28H,30H | |
DB 33H,14H,50H,08H,50H,08H,4CH,08H | |
DB 4CH,14H,5AH,08H,36H,08H,3CH,08H | |
DB 36H,14H,5AH,08H,5AH,08H,50H,08H | |
DB 50H,10H,66H,08H,66H,08H,3CH,08H | |
DB 44H,08H,3CH,14H,66H,08H,66H,08H | |
DB 5AH,08H,5AH,14H,6CH,08H,50H,08H | |
DB 5AH,08H,50H,30H | |
DB 33H,10H,33H,08H,33H,08H,33H,08H | |
DB 2DH,08H,2DH,14H,33H,08H,36H,08H | |
DB 3CH,08H,44H,14H,44H,08H,3CH,08H | |
DB 44H,08H,50H,30H | |
DB 33H,10H,33H,08H,33H,08H,33H,08H | |
DB 2DH,08H,2DH,14H,33H,08H,36H,08H | |
DB 3CH,08H,44H,14H,44H,08H,3CH,08H | |
DB 44H,08H,3CH,30H | |
DB 33H,10H,33H,08H,33H,08H,33H,08H | |
DB 2DH,08H,2DH,14H,33H,08H,36H,08H | |
DB 3CH,08H,44H,14H,44H,08H,3CH,08H | |
DB 44H,08H,50H,30H | |
DB 33H,10H,33H,08H,33H,08H,33H,08H | |
DB 2DH,08H,2DH,14H,33H,08H,36H,08H | |
DB 3CH,08H,44H,14H,44H,08H,3CH,08H | |
DB 44H,08H,3CH,50H | |
DB 00H,00H | |
BLUE_DANUBE DB 66H,08H,50H,08H,44H,08H,44H,38H | |
DB 00H,08H,66H,08H,66H,08H,50H,08H | |
DB 44H,08H,44H,38H,00H,08H | |
DB 6CH,08H,6CH,08H,5AH,08H,3CH,08H | |
DB 3CH,38H,00H,08H,6CH,08H,6CH,08H | |
DB 5AH,08H,3CH,08H,3CH,38H,00H,08H | |
DB 66H,08H,66H,08H,50H,08H,44H,08H | |
DB 33H,38H,00H,08H,66H,08H,50H,08H | |
DB 50H,08H,44H,08H,33H,38H,00H,08H | |
DB 5AH,08H,5AH,08H,4CH,08H,3CH,08H | |
DB 3CH,20H,48H,08H,44H,08H,28H,20H | |
DB 33H,08H,50H,08H,50H,10H,5AH,08H | |
DB 3CH,10H,44H,08H,66H,08H | |
DB 00H,00H | |
XMAS DB 88H,08H,50H,08H,5AH,08H,66H,08H | |
DB 88H,20H | |
DB 88H,08H,50H,08H,5AH,08H,66H,08H | |
DB 78H,20H | |
DB 78H,08H,4CH,08H,50H,08H,5AH,08H | |
DB 6CH,20H | |
DB 44H,08H,44H,08H,4CH,08H,5AH,08H | |
DB 50H,10H,66H,10H | |
DB 88H,08H,50H,08H,5AH,08H,66H,08H | |
DB 88H,20H | |
DB 88H,08H,50H,08H,5AH,08H,66H,08H | |
DB 78H,20H | |
DB 78H,08H,4CH,08H,50H,08H,5AH,08H | |
DB 44H,08H,44H,08H,44H,08H,44H,08H | |
DB 3CH,08H,44H,08H,4CH,08H,5AH,08H | |
DB 66H,20H | |
DB 50H,08H,50H,08H,50H,10H,50H,08H | |
DB 50H,08H,50H,10H | |
DB 50H,08H,44H,08H,66H,08H,5AH,08H | |
DB 50H,20H | |
DB 4CH,08H,4CH,08H,4CH,08H,4CH,08H | |
DB 4CH,08H,50H,08H,50H,08H,50H,08H | |
DB 50H,08H,5AH,08H,5AH,08H,50H,08H | |
DB 5AH,10H,44H,10H | |
DB 50H,08H,50H,08H,50H,10H,50H,08H | |
DB 50H,08H,50H,10H | |
DB 50H,08H,44H,08H,66H,08H,5AH,08H | |
DB 50H,20H | |
DB 4CH,08H,4CH,08H,4CH,08H,4CH,08H | |
DB 4CH,08H,50H,08H,50H,08H,50H,08H | |
DB 44H,08H,44H,08H,4CH,08H,5AH,08H | |
DB 66H,20H | |
DB 00H,00H | |
SONG_NAME DB 'Merry X`mas $' ; Song 0 | |
DB 'Little Star $' ; Song 1 | |
DB 'Little Hans $' ; Song 2 | |
DB 'O Sole Mio $' ; Song 3 | |
DB 'Happy Birthday $' ; Song 4 | |
DB 'Waltz $' ; Song 5 | |
DB 'Yesterday $' ; Song 6 | |
DB 'Grandpa`s Clock $' ; Song 7 | |
DB 'Dream Wedding $' ; Song 8 | |
DB 'Blue Danube $' ; Song 9 | |
SONG_RHYPHM DW 0400H ; Song 0 | |
DW 0400H ; Song 1 | |
DW 0400H ; Song 2 | |
DW 0600H ; Song 3 | |
DW 0400H ; Song 4 | |
DW 0350H ; Song 5 | |
DW 0590H ; Song 6 | |
DW 0600H ; Song 7 | |
DW 0250H ; Song 8 | |
DW 0300H ; Song 9 | |
SONG_DATA DW XMAS ; Song 0 | |
DW STAR ; Song 1 | |
DW HANS ; Song 2 | |
DW SUN ; Song 3 | |
DW BIRTHDAY ; Song 4 | |
DW WALTZ ; Song 5 | |
DW YESTERDAY ; Song 6 | |
DW CLOCK ; Song 7 | |
DW DREAM_WEDDING ; Song 8 | |
DW BLUE_DANUBE ; Song 9 | |
; =============== SONG DATA / OTHER DATA =============== | |
FONT DB 11000000B ; FND 0 | |
DB 11111001B ; FND 1 | |
DB 10100100B ; FND 2 | |
DB 10110000B ; FND 3 | |
DB 10011001B ; FND 4 | |
DB 10010010B ; FND 5 | |
DB 10000010B ; FND 6 | |
DB 11011000B ; FND 7 | |
DB 10000000B ; FND 8 | |
DB 10010000B ; FND 9 | |
DO DB 66H, 08H, 00H, 00H | |
RE DB 5AH, 08H, 00H, 00H | |
MI DB 50H, 08H, 00H, 00H | |
FA DB 4CH, 08H, 00H, 00H | |
SOL DB 44H, 08H, 00H, 00H | |
RA DB 3CH, 08H, 00H, 00H | |
SY DB 36H, 08H, 00H, 00H | |
DO_H DB 33H, 08H, 00H, 00H | |
CURRENT DB 0 | |
SELECT_MSG DB 'Selecting Music:$' | |
PLAY_MSG DB 'Playing... $' | |
PAUSE_MSG DB 'Paused... $' | |
PIANO_MSG DB '>> Piano Mode <<$' | |
BYE_MSG DB '>>> Goodbye! <<<$' | |
; =============== OTHER DATA / END =============== | |
CODE ENDS | |
END START |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment