Rev 5034 | Show entire file | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed
Rev 5034 | Rev 5041 | ||
---|---|---|---|
Line 41... | Line 41... | ||
41 | ends |
41 | ends |
Line 42... | Line 42... | ||
42 | 42 | ||
43 | BUTTONXSIZE = 60 |
43 | BUTTONXSIZE = 60 |
44 | BUTTONYSIZE = 60 |
44 | BUTTONYSIZE = 60 |
45 | BUTTONXSTART= 20 |
45 | BUTTONXSTART= 20 |
46 | BUTTONYSTART= 50 |
46 | BUTTONYSTART= 55 |
47 | BUTTONXSPACE= 10 |
47 | BUTTONXSPACE= 10 |
48 | BUTTONCOUNT = 8 |
48 | BUTTONCOUNT = 8 |
49 | ONCOLOR = 0x0018c015 |
49 | ONCOLOR = 0x0018c015 |
Line -... | Line 50... | ||
- | 50 | OFFCOLOR = 0x00db2521 |
|
- | 51 | ||
- | 52 | ;Flags |
|
50 | OFFCOLOR = 0x00db2521 |
53 | PIN_CONF_FLAG = 0 |
51 | 54 | ||
52 | INIT: |
55 | INIT: |
Line 53... | Line 56... | ||
53 | mov [btn_state], 0xFF |
56 | mov [btn_state], 0xFF |
Line 69... | Line 72... | ||
69 | mov [IOCTLs+IOCTL.output], eax |
72 | mov [IOCTLs+IOCTL.output], eax |
70 | mov eax, in_buf |
73 | mov eax, in_buf |
71 | mov [IOCTLs+IOCTL.input], eax |
74 | mov [IOCTLs+IOCTL.input], eax |
Line 72... | Line 75... | ||
72 | 75 | ||
- | 76 | call drivercomm.getlist |
|
- | 77 | test eax, eax |
|
- | 78 | jnz @f |
|
- | 79 | mcall 4, 5 shl 16 + 25, 1 shl 31 + 0xFF shl 16, noftdi_msg |
|
73 | call drivercomm.getlist |
80 | @@: |
- | 81 | call drivercomm.getlock |
|
- | 82 | mov eax, [pid] |
|
- | 83 | cmp eax, [out_buf] |
|
- | 84 | jz @f |
|
- | 85 | mcall 4, 5 shl 16 + 25, 1 shl 31 + 0xFF shl 16, devlkd_msg |
|
- | 86 | jmp event_wait |
|
- | 87 | @@: |
|
- | 88 | mcall 4, 5 shl 16 + 25, 1 shl 31, welcio_msg |
|
74 | call drivercomm.getlock |
89 | mov [flags], 1 shl PIN_CONF_FLAG |
- | 90 | call draw_window.no_redraw |
|
- | 91 | jmp event_wait |
|
75 | call drivercomm.bitmode |
92 | .init_cont: |
- | 93 | call draw_window |
|
Line 76... | Line 94... | ||
76 | call drivercomm.baud |
94 | mcall 4, 5 shl 16 + 25, 1 shl 31 + ONCOLOR, devrdy_msg |
77 | 95 | ||
78 | event_wait: |
96 | event_wait: |
Line 106... | Line 124... | ||
106 | button: |
124 | button: |
107 | mov eax,17 |
125 | mov eax,17 |
108 | mcall |
126 | mcall |
Line 109... | Line 127... | ||
109 | 127 | ||
110 | cmp ah, 1 |
128 | cmp ah, 1 |
111 | jle .noclose |
129 | jg .noclose |
112 | call drivercomm.unlock |
130 | call drivercomm.unlock |
113 | mov eax, -1 |
131 | mov eax, -1 |
Line 114... | Line 132... | ||
114 | mcall |
132 | mcall |
115 | 133 | ||
116 | .noclose: |
134 | .noclose: |
- | 135 | cmp ah, 10 |
|
- | 136 | jge .toggleb |
|
- | 137 | mov ebx, [flags] |
|
117 | cmp ah, 10 |
138 | and ebx, 1 shl PIN_CONF_FLAG |
118 | jge .toggleb |
139 | jnz event_wait |
119 | movzx edx, ah |
140 | movzx edx, ah |
120 | dec ah |
141 | dec ah |
121 | dec ah |
142 | dec ah |
122 | mov cl, ah |
143 | mov cl, ah |
- | 144 | mov ah ,1 |
|
- | 145 | shl ah, cl |
|
- | 146 | mov al, [btn_io] |
|
123 | mov ah ,1 |
147 | and al, ah |
124 | shl ah, cl |
148 | jz .input |
- | 149 | xor byte[btn_state], ah |
|
125 | xor byte[btn_state], ah |
150 | .input: |
126 | push edx |
151 | call draw_window.oloop_entry |
127 | call drivercomm.write |
- | |
128 | call drivercomm.read |
152 | call drivercomm.write |
129 | pop edx |
153 | call drivercomm.read |
Line 130... | Line 154... | ||
130 | call redraw_obutton |
154 | ;call drivercomm.pins |
131 | jmp event_wait |
155 | jmp event_wait |
132 | 156 | ||
133 | .toggleb: |
157 | .toggleb: |
134 | cmp ah, 18 |
158 | cmp ah, 19 |
135 | jg event_wait |
159 | jg .pinconf |
136 | movzx edx, ah |
160 | movzx edx, ah |
137 | mov cl, ah |
161 | mov cl, ah |
138 | sub cl, 10 |
162 | sub cl, 10 |
139 | mov ah, 1 |
163 | mov ah, 1 |
140 | shl ah, cl |
164 | shl ah, cl |
Line -... | Line 165... | ||
- | 165 | xor byte[btn_io], ah |
|
- | 166 | call draw_tbutton |
|
- | 167 | jmp event_wait |
|
- | 168 | ||
- | 169 | .pinconf: |
|
- | 170 | cmp ah, 20 |
|
- | 171 | mov eax, [flags] |
|
- | 172 | and eax, 1 shl PIN_CONF_FLAG |
|
- | 173 | jz .no_conf |
|
- | 174 | call drivercomm.bitmode |
|
- | 175 | call drivercomm.baud |
|
141 | xor byte[btn_io], ah |
176 | .no_conf: |
142 | call draw_tbutton |
177 | xor [flags], 1 shl PIN_CONF_FLAG |
143 | jmp event_wait |
178 | jmp INIT.init_cont |
144 | 179 | ||
145 | drivercomm: ;Driver communication procs |
180 | drivercomm: ;Driver communication procs |
Line 161... | Line 196... | ||
161 | mov [edi], eax |
196 | mov [edi], eax |
162 | mov eax, [dev] |
197 | mov eax, [dev] |
163 | mov [edi+4], eax |
198 | mov [edi+4], eax |
164 | mov [edi+8], dword 1 |
199 | mov [edi+8], dword 1 |
165 | mov al, [btn_state] |
200 | mov al, [btn_state] |
166 | mov byte[edi+12], al |
201 | mov ecx, 4 |
- | 202 | add edi, 12 |
|
- | 203 | rep stosb |
|
167 | mcall 68, 17, IOCTLs |
204 | mcall 68, 17, IOCTLs |
168 | ret |
205 | ret |
Line 169... | Line 206... | ||
169 | 206 | ||
170 | .read: |
207 | .read: |
171 | mov [IOCTLs+IOCTL.io_code], 9 |
208 | mov [IOCTLs+IOCTL.io_code], 9 |
172 | mov edi, in_buf |
209 | mov edi, in_buf |
173 | mov eax, [pid] |
210 | mov eax, [pid] |
174 | mov [edi], eax |
211 | mov [edi], eax |
175 | mov eax, [dev] |
212 | mov eax, [dev] |
176 | mov [edi+4], eax |
213 | mov [edi+4], eax |
177 | mov [edi+8], dword 1 |
214 | mov [edi+8], dword 3 |
178 | mcall 68, 17, IOCTLs |
215 | mcall 68, 17, IOCTLs |
179 | mov al, byte[out_buf] |
216 | test eax, eax |
- | 217 | jz .read_ok |
|
180 | mov [btn_state], al |
218 | debug_print 'Error' |
- | 219 | newline |
|
- | 220 | .read_ok: |
|
- | 221 | mov al, byte[out_buf+2] |
|
181 | newline |
222 | mov [btn_state], al |
Line 182... | Line 223... | ||
182 | ret |
223 | ret |
183 | 224 | ||
184 | .getlock: |
225 | .getlock: |
Line 201... | Line 242... | ||
201 | mov [IOCTLs+IOCTL.io_code], eax |
242 | mov [IOCTLs+IOCTL.io_code], eax |
202 | mcall 68, 17, IOCTLs |
243 | mcall 68, 17, IOCTLs |
203 | mov edi, out_buf |
244 | mov edi, out_buf |
204 | mov eax, [edi+12] |
245 | mov eax, [edi+12] |
205 | mov [dev], eax |
246 | mov [dev], eax |
- | 247 | mov eax, [edi] |
|
206 | ret |
248 | ret |
Line 207... | Line 249... | ||
207 | 249 | ||
208 | .bitmode: |
250 | .bitmode: |
209 | mov [IOCTLs+IOCTL.io_code], 11 |
251 | mov [IOCTLs+IOCTL.io_code], 11 |
210 | mov edi, in_buf |
252 | mov edi, in_buf |
211 | mov eax, [pid] |
253 | mov eax, [pid] |
212 | mov [edi], eax |
254 | mov [edi], eax |
213 | mov eax, [dev] |
255 | mov eax, [dev] |
214 | mov [edi+4], eax |
256 | mov [edi+4], eax |
215 | xor eax, eax |
257 | xor eax, eax |
216 | mov al, [btn_io] |
258 | mov ah, [btn_io] |
217 | mov ah, 0x04 |
259 | mov al, 0x01 |
218 | mov [edi+8], eax |
260 | mov [edi+8], eax |
219 | mcall 68, 17, IOCTLs |
261 | mcall 68, 17, IOCTLs |
Line -... | Line 262... | ||
- | 262 | ret |
|
- | 263 | ||
- | 264 | .pins: |
|
- | 265 | mov [IOCTLs+IOCTL.io_code], 22 |
|
- | 266 | mov edi, in_buf |
|
- | 267 | mov eax, [pid] |
|
- | 268 | mov [edi], eax |
|
- | 269 | mov eax, [dev] |
|
- | 270 | mov [edi+4], eax |
|
- | 271 | mcall 68, 17, IOCTLs |
|
- | 272 | mov al, byte[out_buf] |
|
- | 273 | mov [btn_state], al |
|
220 | ret |
274 | ret |
221 | 275 | ||
222 | .unlock: |
276 | .unlock: |
223 | mov eax, [pid] |
277 | mov eax, [pid] |
224 | mov edi, in_buf |
278 | mov edi, in_buf |
Line 247... | Line 301... | ||
247 | mov edx, 0x14E1E1E1 |
301 | mov edx, 0x14E1E1E1 |
248 | mov esi, 0x808899ff |
302 | mov esi, 0x808899ff |
249 | mov edi, title |
303 | mov edi, title |
250 | mcall |
304 | mcall |
Line 251... | Line -... | ||
251 | - | ||
252 | mov edx, BUTTONCOUNT+1 |
305 | |
- | 306 | .no_redraw: |
|
253 | .oloop: |
307 | mcall 8, ((BUTTONXSIZE+BUTTONXSPACE)*BUTTONCOUNT-30) shl 16 + 60, 25 shl 16 + 12, 20, 0x00E1E1E1 |
254 | push edx |
308 | mov eax, [flags] |
255 | call draw_obutton |
309 | and eax, 1 shl PIN_CONF_FLAG |
256 | pop edx |
- | |
257 | dec edx |
310 | jz .no_toggles |
258 | cmp edx, 1 |
- | |
259 | jnz .oloop |
- | |
260 | 311 | mcall 4, ((BUTTONXSIZE+BUTTONXSPACE)*BUTTONCOUNT-27) shl 16 + 28, 1 shl 31, fnsh_btn |
|
261 | mov edx, BUTTONCOUNT+9 |
312 | mov edx, BUTTONCOUNT+9 |
262 | .tloop: |
313 | .tloop: |
263 | push edx |
314 | push edx |
264 | call draw_tbutton |
315 | call draw_tbutton |
265 | pop edx |
316 | pop edx |
266 | dec edx |
317 | dec edx |
267 | cmp edx, 9 |
318 | cmp edx, 9 |
- | 319 | jnz .tloop |
|
- | 320 | jmp @f |
|
- | 321 | .no_toggles: |
|
- | 322 | mcall 4, ((BUTTONXSIZE+BUTTONXSPACE)*BUTTONCOUNT-27) shl 16 + 28, 1 shl 31, conf_btn |
|
- | 323 | @@: |
|
- | 324 | .oloop_entry: |
|
- | 325 | mov edx, BUTTONCOUNT+1 |
|
- | 326 | .oloop: |
|
- | 327 | push edx |
|
- | 328 | call draw_obutton |
|
- | 329 | pop edx |
|
- | 330 | dec edx |
|
- | 331 | cmp edx, 1 |
|
Line 268... | Line 332... | ||
268 | jnz .tloop |
332 | jnz .oloop |
269 | 333 | ||
270 | mov eax, 12 |
334 | mov eax, 12 |
271 | mov ebx, 2 |
335 | mov ebx, 2 |
Line 369... | Line 433... | ||
369 | 433 | ||
370 | btn_state db ? |
434 | btn_state db ? |
371 | btn_io db ? |
435 | btn_io db ? |
372 | dev dd ? |
436 | dev dd ? |
373 | pid dd ? |
437 | pid dd ? |
374 | counter dd ? |
438 | flags dd ? |
- | 439 | drv_name db 'usbother', 0 |
|
- | 440 | noftdi_msg db 'No FTDI connected', 0 |
|
- | 441 | devrdy_msg db 'First FTDI is ready', 0 |
|
- | 442 | devlkd_msg db 'First FTDI is locked', 0 |
|
- | 443 | welcio_msg db 'Please, choose pin state', 0 |
|
- | 444 | conf_btn db 'Configure', 0 |
|
375 | drv_name db 'usbother', 0 |
445 | fnsh_btn db 'Finish', 0 |
376 | off_text db 'OFF', 0 |
446 | off_text db 'OFF', 0 |
377 | on_text db 'ON', 0 |
447 | on_text db 'ON', 0 |
378 | i_text db 'I', 0 |
448 | i_text db 'I', 0 |
379 | o_text db 'O', 0 |
449 | o_text db 'O', 0 |