Subversion Repositories Kolibri OS

Rev

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