Rev 485 | Go to most recent revision | Details | Compare with Previous | Last modification | View Log | RSS feed
Rev | Author | Line No. | Line |
---|---|---|---|
31 | halyavin | 1 | ; |
2 | ; Ok, this is the sceleton that MENUET 0.01 understands. |
||
3 | ; Do not change the header bits for now. Compile with nasm. |
||
4 | ; |
||
5 | |||
6 | include 'lang.inc' |
||
485 | heavyiron | 7 | include '..\..\..\macros.inc' |
31 | halyavin | 8 | |
9 | use32 |
||
485 | heavyiron | 10 | org 0x0 |
11 | db 'MENUET01' ; header |
||
12 | dd 0x01 ; header version |
||
13 | dd START ; entry point |
||
14 | dd I_END ; image size |
||
15 | dd 0x1000 ; required memory |
||
16 | dd 0x1000 ; esp |
||
17 | dd 0x0 , 0x0 ; I_Param , I_Path |
||
31 | halyavin | 18 | |
19 | |||
20 | START: |
||
21 | |||
485 | heavyiron | 22 | red: |
31 | halyavin | 23 | call draw_window |
24 | |||
25 | still: |
||
26 | |||
27 | mov eax,10 ; redraw ? |
||
485 | heavyiron | 28 | mcall |
31 | halyavin | 29 | |
30 | cmp eax,1 |
||
31 | jz red |
||
32 | cmp eax,3 |
||
33 | jz button |
||
34 | jmp still |
||
35 | |||
36 | button: |
||
37 | mov eax,17 |
||
485 | heavyiron | 38 | mcall |
31 | halyavin | 39 | |
40 | cmp al,byte 0 |
||
41 | jnz still |
||
42 | |||
43 | cmp ah,1 |
||
44 | jnz noexit |
||
45 | |||
46 | mov eax,0xffffffff |
||
485 | heavyiron | 47 | mcall |
31 | halyavin | 48 | |
49 | noexit: |
||
50 | |||
51 | cmp ah,2 |
||
52 | jz note1 |
||
53 | |||
54 | mov eax,20 ; reset midi device |
||
55 | mov ebx,1 |
||
56 | mov ecx,0 |
||
485 | heavyiron | 57 | mcall |
31 | halyavin | 58 | |
59 | cmp eax,0 |
||
60 | jz noe1 |
||
61 | |||
62 | call printerror |
||
63 | |||
64 | noe1: |
||
65 | |||
66 | jmp still |
||
67 | |||
68 | note1: |
||
69 | |||
70 | mov eax,50 |
||
71 | |||
72 | nn: |
||
73 | |||
74 | mov ebx,100 |
||
75 | call noteout |
||
76 | pusha |
||
77 | mov eax,5 |
||
78 | mov ebx,8 |
||
485 | heavyiron | 79 | mcall |
31 | halyavin | 80 | popa |
81 | mov ebx,0 |
||
82 | ; call noteout |
||
83 | |||
84 | add eax,3 |
||
85 | |||
86 | mov ebx,100 |
||
87 | call noteout |
||
88 | pusha |
||
89 | mov eax,5 |
||
90 | mov ebx,8 |
||
485 | heavyiron | 91 | mcall |
31 | halyavin | 92 | popa |
93 | mov ebx,0 |
||
94 | ; call noteout |
||
95 | |||
96 | add eax,4 |
||
97 | |||
98 | inc eax |
||
99 | cmp eax,90 |
||
100 | jbe nn |
||
101 | |||
102 | jmp still |
||
103 | |||
104 | |||
105 | draw_window: |
||
106 | |||
107 | pusha |
||
108 | |||
109 | mov eax,12 ; tell os about redraw |
||
110 | mov ebx,1 |
||
485 | heavyiron | 111 | mcall |
31 | halyavin | 112 | |
113 | mov eax,0 ; define and draw window |
||
114 | mov ebx,20*65536+250 |
||
115 | mov ecx,20*65536+120 |
||
551 | spraid | 116 | mov edx,0x14ffffff |
485 | heavyiron | 117 | mov edi,title |
118 | mcall |
||
31 | halyavin | 119 | |
120 | mov eax,8 |
||
121 | mov ebx,10*65536+200 ; button start x & size |
||
122 | mov ecx,40 *65536+17 ; button start y & size |
||
123 | mov edx,2 ; button number |
||
124 | mov esi,0x4060b0 ; button color |
||
485 | heavyiron | 125 | mcall |
31 | halyavin | 126 | |
127 | mov ecx,60 *65536+17 ; button start y & size |
||
128 | mov edx,3 ; button number |
||
485 | heavyiron | 129 | mcall |
31 | halyavin | 130 | |
485 | heavyiron | 131 | mov eax,4 |
31 | halyavin | 132 | mov ebx,25*65536+45 |
133 | mov ecx,dword 0xffffff |
||
134 | mov edx,buttont |
||
135 | mov esi,buttontlen-buttont |
||
485 | heavyiron | 136 | mcall |
31 | halyavin | 137 | |
138 | mov ebx,25*65536+65 |
||
139 | mov edx,buttont2 |
||
140 | mov esi,buttontlen2-buttont2 |
||
485 | heavyiron | 141 | mcall |
31 | halyavin | 142 | |
143 | mov eax,12 ; tell os about redraw end |
||
144 | mov ebx,2 |
||
485 | heavyiron | 145 | mcall |
31 | halyavin | 146 | |
147 | popa |
||
148 | ret |
||
149 | |||
150 | |||
151 | noteout: |
||
152 | |||
153 | pusha |
||
154 | |||
155 | push ebx |
||
156 | push eax |
||
157 | |||
158 | mov eax,20 |
||
159 | mov ebx,2 |
||
160 | mov ecx,0x9f |
||
485 | heavyiron | 161 | mcall |
31 | halyavin | 162 | mov eax,20 |
163 | mov ebx,2 |
||
164 | pop ecx |
||
485 | heavyiron | 165 | mcall |
31 | halyavin | 166 | mov eax,20 |
167 | mov ebx,2 |
||
168 | pop ecx |
||
485 | heavyiron | 169 | mcall |
31 | halyavin | 170 | |
171 | cmp eax,0 |
||
172 | jz noe2 |
||
173 | |||
174 | call printerror |
||
175 | |||
176 | noe2: |
||
177 | |||
178 | popa |
||
179 | ret |
||
180 | |||
181 | printerror: |
||
182 | |||
183 | mov eax,dword 4 |
||
184 | mov ebx,15*65536+85 |
||
185 | mov ecx,0x000000 |
||
186 | mov edx,error1 |
||
187 | mov esi,errorlen1-error1 |
||
485 | heavyiron | 188 | mcall |
31 | halyavin | 189 | |
190 | mov eax,dword 4 |
||
191 | mov ebx,15*65536+95 |
||
192 | mov ecx,0x000000 |
||
193 | mov edx,error2 |
||
194 | mov esi,errorlen2-error2 |
||
485 | heavyiron | 195 | mcall |
31 | halyavin | 196 | |
197 | ret |
||
198 | |||
199 | |||
200 | ; DATA AREA |
||
201 | |||
202 | |||
485 | heavyiron | 203 | title db 'MIDI TEST',0 |
31 | halyavin | 204 | |
205 | buttont: |
||
206 | db 'PLAY A FEW NOTES' |
||
207 | buttontlen: |
||
208 | buttont2: |
||
209 | db 'RESET MIDI DEVICE' |
||
210 | buttontlen2: |
||
211 | |||
212 | error1: |
||
213 | db 'NO BASE DEFINED FOR MPU-401' |
||
214 | errorlen1: |
||
215 | |||
216 | error2: |
||
217 | db 'USE SETUP AND RESET MIDI DEVICE.' |
||
218 | errorlen2: |
||
219 | |||
220 | base db 0x0 |
||
221 | |||
222 | I_END: |
||
223 |