Subversion Repositories Kolibri OS

Compare Revisions

Regard whitespace Rev 5034 → Rev 5041

/programs/other/ft232cc/ft232cc.asm
43,12 → 43,15
BUTTONXSIZE = 60
BUTTONYSIZE = 60
BUTTONXSTART= 20
BUTTONYSTART= 50
BUTTONYSTART= 55
BUTTONXSPACE= 10
BUTTONCOUNT = 8
ONCOLOR = 0x0018c015
OFFCOLOR = 0x00db2521
 
;Flags
PIN_CONF_FLAG = 0
 
INIT:
mov [btn_state], 0xFF
mov [btn_io], 0xFF
71,9 → 74,24
mov [IOCTLs+IOCTL.input], eax
 
call drivercomm.getlist
test eax, eax
jnz @f
mcall 4, 5 shl 16 + 25, 1 shl 31 + 0xFF shl 16, noftdi_msg
@@:
call drivercomm.getlock
call drivercomm.bitmode
call drivercomm.baud
mov eax, [pid]
cmp eax, [out_buf]
jz @f
mcall 4, 5 shl 16 + 25, 1 shl 31 + 0xFF shl 16, devlkd_msg
jmp event_wait
@@:
mcall 4, 5 shl 16 + 25, 1 shl 31, welcio_msg
mov [flags], 1 shl PIN_CONF_FLAG
call draw_window.no_redraw
jmp event_wait
.init_cont:
call draw_window
mcall 4, 5 shl 16 + 25, 1 shl 31 + ONCOLOR, devrdy_msg
 
event_wait:
mov eax, 10
108,7 → 126,7
mcall
 
cmp ah, 1
jle .noclose
jg .noclose
call drivercomm.unlock
mov eax, -1
mcall
116,6 → 134,9
.noclose:
cmp ah, 10
jge .toggleb
mov ebx, [flags]
and ebx, 1 shl PIN_CONF_FLAG
jnz event_wait
movzx edx, ah
dec ah
dec ah
122,17 → 143,20
mov cl, ah
mov ah ,1
shl ah, cl
mov al, [btn_io]
and al, ah
jz .input
xor byte[btn_state], ah
push edx
.input:
call draw_window.oloop_entry
call drivercomm.write
call drivercomm.read
pop edx
call redraw_obutton
;call drivercomm.pins
jmp event_wait
 
.toggleb:
cmp ah, 18
jg event_wait
cmp ah, 19
jg .pinconf
movzx edx, ah
mov cl, ah
sub cl, 10
142,6 → 166,17
call draw_tbutton
jmp event_wait
 
.pinconf:
cmp ah, 20
mov eax, [flags]
and eax, 1 shl PIN_CONF_FLAG
jz .no_conf
call drivercomm.bitmode
call drivercomm.baud
.no_conf:
xor [flags], 1 shl PIN_CONF_FLAG
jmp INIT.init_cont
 
drivercomm: ;Driver communication procs
.baud:
mov [IOCTLs+IOCTL.io_code], 10
163,7 → 198,9
mov [edi+4], eax
mov [edi+8], dword 1
mov al, [btn_state]
mov byte[edi+12], al
mov ecx, 4
add edi, 12
rep stosb
mcall 68, 17, IOCTLs
ret
 
174,11 → 211,15
mov [edi], eax
mov eax, [dev]
mov [edi+4], eax
mov [edi+8], dword 1
mov [edi+8], dword 3
mcall 68, 17, IOCTLs
mov al, byte[out_buf]
test eax, eax
jz .read_ok
debug_print 'Error'
newline
.read_ok:
mov al, byte[out_buf+2]
mov [btn_state], al
newline
ret
 
.getlock:
203,6 → 244,7
mov edi, out_buf
mov eax, [edi+12]
mov [dev], eax
mov eax, [edi]
ret
 
.bitmode:
213,12 → 255,24
mov eax, [dev]
mov [edi+4], eax
xor eax, eax
mov al, [btn_io]
mov ah, 0x04
mov ah, [btn_io]
mov al, 0x01
mov [edi+8], eax
mcall 68, 17, IOCTLs
ret
 
.pins:
mov [IOCTLs+IOCTL.io_code], 22
mov edi, in_buf
mov eax, [pid]
mov [edi], eax
mov eax, [dev]
mov [edi+4], eax
mcall 68, 17, IOCTLs
mov al, byte[out_buf]
mov [btn_state], al
ret
 
.unlock:
mov eax, [pid]
mov edi, in_buf
249,6 → 303,25
mov edi, title
mcall
 
.no_redraw:
mcall 8, ((BUTTONXSIZE+BUTTONXSPACE)*BUTTONCOUNT-30) shl 16 + 60, 25 shl 16 + 12, 20, 0x00E1E1E1
mov eax, [flags]
and eax, 1 shl PIN_CONF_FLAG
jz .no_toggles
mcall 4, ((BUTTONXSIZE+BUTTONXSPACE)*BUTTONCOUNT-27) shl 16 + 28, 1 shl 31, fnsh_btn
mov edx, BUTTONCOUNT+9
.tloop:
push edx
call draw_tbutton
pop edx
dec edx
cmp edx, 9
jnz .tloop
jmp @f
.no_toggles:
mcall 4, ((BUTTONXSIZE+BUTTONXSPACE)*BUTTONCOUNT-27) shl 16 + 28, 1 shl 31, conf_btn
@@:
.oloop_entry:
mov edx, BUTTONCOUNT+1
.oloop:
push edx
258,15 → 331,6
cmp edx, 1
jnz .oloop
 
mov edx, BUTTONCOUNT+9
.tloop:
push edx
call draw_tbutton
pop edx
dec edx
cmp edx, 9
jnz .tloop
 
mov eax, 12
mov ebx, 2
mcall
371,8 → 435,14
btn_io db ?
dev dd ?
pid dd ?
counter dd ?
flags dd ?
drv_name db 'usbother', 0
noftdi_msg db 'No FTDI connected', 0
devrdy_msg db 'First FTDI is ready', 0
devlkd_msg db 'First FTDI is locked', 0
welcio_msg db 'Please, choose pin state', 0
conf_btn db 'Configure', 0
fnsh_btn db 'Finish', 0
off_text db 'OFF', 0
on_text db 'ON', 0
i_text db 'I', 0