; ; Ok, this is the sceleton that MENUET 0.01 understands. ; Do not change the header bits for now. Compile with nasm. ; include 'lang.inc' include '..\..\..\macros.inc' use32 org 0x0 db 'MENUET01' ; header dd 0x01 ; header version dd START ; entry point dd I_END ; image size dd 0x1000 ; required memory dd 0x1000 ; esp dd 0x0 , 0x0 ; I_Param , I_Path START: red: call draw_window still: mov eax,10 ; redraw ? mcall cmp eax,1 jz red cmp eax,3 jz button jmp still button: mov eax,17 mcall cmp al,byte 0 jnz still cmp ah,1 jnz noexit mov eax,0xffffffff mcall noexit: cmp ah,2 jz note1 mov eax,20 ; reset midi device mov ebx,1 mov ecx,0 mcall cmp eax,0 jz noe1 call printerror noe1: jmp still note1: mov eax,50 nn: mov ebx,100 call noteout pusha mov eax,5 mov ebx,8 mcall popa mov ebx,0 ; call noteout add eax,3 mov ebx,100 call noteout pusha mov eax,5 mov ebx,8 mcall popa mov ebx,0 ; call noteout add eax,4 inc eax cmp eax,90 jbe nn jmp still draw_window: pusha mov eax,12 ; tell os about redraw mov ebx,1 mcall mov eax,0 ; define and draw window mov ebx,20*65536+250 mov ecx,20*65536+120 mov edx,0x13ffffff mov edi,title mcall mov eax,8 mov ebx,10*65536+200 ; button start x & size mov ecx,40 *65536+17 ; button start y & size mov edx,2 ; button number mov esi,0x4060b0 ; button color mcall mov ecx,60 *65536+17 ; button start y & size mov edx,3 ; button number mcall mov eax,4 mov ebx,25*65536+45 mov ecx,dword 0xffffff mov edx,buttont mov esi,buttontlen-buttont mcall mov ebx,25*65536+65 mov edx,buttont2 mov esi,buttontlen2-buttont2 mcall mov eax,12 ; tell os about redraw end mov ebx,2 mcall popa ret noteout: pusha push ebx push eax mov eax,20 mov ebx,2 mov ecx,0x9f mcall mov eax,20 mov ebx,2 pop ecx mcall mov eax,20 mov ebx,2 pop ecx mcall cmp eax,0 jz noe2 call printerror noe2: popa ret printerror: mov eax,dword 4 mov ebx,15*65536+85 mov ecx,0x000000 mov edx,error1 mov esi,errorlen1-error1 mcall mov eax,dword 4 mov ebx,15*65536+95 mov ecx,0x000000 mov edx,error2 mov esi,errorlen2-error2 mcall ret ; DATA AREA title db 'MIDI TEST',0 buttont: db 'PLAY A FEW NOTES' buttontlen: buttont2: db 'RESET MIDI DEVICE' buttontlen2: error1: db 'NO BASE DEFINED FOR MPU-401' errorlen1: error2: db 'USE SETUP AND RESET MIDI DEVICE.' errorlen2: base db 0x0 I_END: