Subversion Repositories Kolibri OS

Compare Revisions

Regard whitespace Rev 143 → Rev 142

/programs/system/ir/trunk/ir.asm
8,124 → 8,43
 
org 0x0
 
db 'MENUET01' ; 8 byte id
dd 1 ; required os
db 'MENUET00' ; 8 byte id
dd 56 ; required os
dd START ; program start
dd I_END ; program image size
dd 0x1000 ; required amount of memory
dd 0x1000 ; esp = 0x7FFF0
dd 0, 0
dd 0x00000000 ; reserved=no extended header
 
 
include 'lang.inc'
include 'macros.inc'
 
START: ; start of execution
 
set_variables:
call draw_window ; at first, draw the window
 
mov eax,46 ; reserve ports 0x3f0 - 0x3ff
mov ebx,0
mov ecx,0x3f0
mov edx,0x3ff
int 0x40
call set_variables
 
mov eax,45 ; reserve irq 4
mov ebx,0
mov ecx,4
int 0x40
 
mov eax,44 ; set read ports for irq 4
mov ebx,irqtable
; mov ecx,4
int 0x40
 
mov dh, 3 ; all ports have number 3xx hex
 
mov dl, 0xf3+8
mov al, 0x80
out dx, al
 
mov dl, 0xf1+8
mov al, 0
out dx, al
 
mov dl, 0xf0+8
mov al, 0x30 / 4
out dx, al
 
mov dl, 0xf3+8
mov al, 3
out dx, al
 
mov dl, 0xf4+8
mov al, 0xB
out dx, al
 
mov dl, 0xf1+8
mov al, 1
out dx, al
 
mov eax,5
mov ebx,100
int 0x40
 
mov dl, 0xf8
mov al, 'I'
out dx, al
 
mov eax,5
mov ebx,10
int 0x40
 
mov al, 'R'
out dx, al
 
mov eax,40 ; get com 1 data with irq 4
mov ebx,0000000000010000b shl 16 + 101b
int 0x40
 
red:
call draw_window
 
still:
 
mov eax,10 ; wait here for event
int 0x40
dec eax
jz red
dec eax
dec eax
jnz readir
 
button: ; button
mov al,17 ; get id
int 0x40
cmp eax,1 ; redraw request ?
je red
cmp eax,2 ; key in buffer ?
je key
cmp eax,3 ; button in buffer ?
je button
cmp eax,16+4
je readir
 
; we have only one button, close
jmp still
 
mov eax,45 ; free irq
mov ebx,1
mov ecx,4
int 0x40
 
mov eax,46 ; free ports 0x3f0-0x3ff
mov ebx,1
mov ecx,0x3f0
mov edx,0x3ff
int 0x40
 
or eax,-1 ; close this program
int 0x40
 
pos dd 0x0
 
cdplayer:
dd 7
dd 0
dd 0
dd 0
dd 0
db '/RD/1/CDP',0
cdplayer db 'CDPLAY '
 
readir:
mov eax,42
135,8 → 54,9
cmp ebx,80
jne nocd
 
mov eax,70
mov eax,19
mov ebx,cdplayer
mov ecx,0
int 0x40
 
 
165,9 → 85,41
call draw_data
jmp still
 
red: ; redraw
call draw_window
jmp still
 
key: ; key
mov eax,2 ; just read it and ignore
int 0x40
jmp still
 
button: ; button
mov eax,17 ; get id
int 0x40
 
cmp ah,1 ; button id=1 ?
jne noclose
 
mov eax,45 ; free irq
mov ebx,1
mov ecx,4
int 0x40
 
mov eax,46 ; free ports 0x3f0-0x3ff
mov ebx,1
mov ecx,0x3f0
mov edx,0x3ff
int 0x40
 
mov eax,-1 ; close this program
int 0x40
noclose:
 
jmp still
 
 
 
draw_data:
 
pusha
197,9 → 149,107
 
dd 0x3f8+0x01000000 ; + 01 = read byte, 02 read word
dd 0
dd 0
dd 0
dd 0
dd 0
dd 0
dd 0
dd 0
dd 0
dd 0
dd 0
dd 0
dd 0
dd 0
dd 0
 
 
 
set_variables:
 
 
pusha
 
mov eax,46 ; reserve ports 0x3f0 - 0x3ff
mov ebx,0
mov ecx,0x3f0
mov edx,0x3ff
int 0x40
 
mov eax,45 ; reserve irq 4
mov ebx,0
mov ecx,4
int 0x40
 
mov eax,46 ; reserve ports 0x3f0-0x3ff
mov ebx,0
mov ecx,0x3f0
mov edx,0x3ff
int 0x40
 
mov eax,44 ; set read ports for irq 4
mov ebx,irqtable
mov ecx,4
int 0x40
 
mov cx,0x3f3+8
mov bl,0x80
mov eax,43
int 0x40
 
mov cx,0x3f1+8
mov bl,0
mov eax,43
int 0x40
 
mov cx,0x3f0+8
mov bl,0x30 / 4
mov eax,43
int 0x40
 
mov cx,0x3f3+8
mov bl,3
mov eax,43
int 0x40
 
mov cx,0x3f4+8
mov bl,0xB
mov eax,43
int 0x40
 
mov cx,0x3f1+8
mov bl,1
mov eax,43
int 0x40
 
mov eax,5
mov ebx,100
int 0x40
 
mov cx,0x3f8
mov bl,'I'
mov eax,43
int 0x40
 
mov eax,5
mov ebx,10
int 0x40
 
mov cx,0x3f8
mov bl,'R'
mov eax,43
int 0x40
 
mov eax,40 ; get com 1 data with irq 4
mov ebx,0000000000010000b shl 16 + 111b
int 0x40
 
popa
 
ret
 
 
; *********************************************
; ******* WINDOW DEFINITIONS AND DRAW ********
; *********************************************
216,27 → 266,38
mov ebx,100*65536+300 ; [x start] *65536 + [x size]
mov ecx,100*65536+250 ; [y start] *65536 + [y size]
mov edx,[wcolor] ; color of work area RRGGBB,8->color
mov edi,labelt ; caption string
mov esi,0x8099bbff ; color of grab bar RRGGBB,8->color glide
mov edi,0x00ffffff ; color of frames RRGGBB
int 0x40
 
; ; WINDOW LABEL
; mov eax,4 ; function 4 : write text to window
; mov ebx,8*65536+8 ; [x start] *65536 + [y start]
; mov ecx,0x00ffffff ; color of text RRGGBB
; mov edx,labelt ; pointer to text beginning
; mov esi,labellen-labelt ; text length
; int 0x40
; WINDOW LABEL
mov eax,4 ; function 4 : write text to window
mov ebx,8*65536+8 ; [x start] *65536 + [y start]
mov ecx,0x00ffffff ; color of text RRGGBB
mov edx,labelt ; pointer to text beginning
mov esi,labellen-labelt ; text length
int 0x40
 
; CLOSE BUTTON
; mov eax,8 ; function 8 : define and draw button
; mov ebx,(300-19)*65536+12 ; [x start] *65536 + [x size]
; mov ecx,5*65536+12 ; [y start] *65536 + [y size]
; mov edx,1 ; button id
; mov esi,0x5599cc ; button color RRGGBB
mov eax,8 ; function 8 : define and draw button
mov ebx,(300-19)*65536+12 ; [x start] *65536 + [x size]
mov ecx,5*65536+12 ; [y start] *65536 + [y size]
mov edx,1 ; button id
mov esi,0x5599cc ; button color RRGGBB
; int 0x40
 
call draw_text
 
mov eax,12
mov ebx,2
int 0x40
 
ret
 
draw_text:
 
pusha
 
mov ebx,25*65536+35 ; draw info text with function 4
mov ecx,0xffffff
mov edx,text
246,23 → 307,27
mov eax,4
int 0x40
add ebx,10
add edx,esi
add edx,40
dec edi
jne newline
 
mov eax,12
mov ebx,2
int 0x40
popa
 
ret
 
 
 
; DATA AREA
 
wcolor dd 0x13000000
wcolor dd 0x03000000
 
labelt db 'INFRARED RECEIVER FOR IRMAN IN COM 1',0
labelt db 'INFRARED RECEIVER FOR IRMAN IN COM 1'
labellen:
 
text:
 
I_END:
 
 
 
 
/programs/system/vrr_m/trunk/vrr_m.asm
23,7 → 23,8
dd 0x0 ;  ¤à¥á ¡ãä¥à  ¤«ï ¯ à ¬¥â஢ (­¥ ¨á¯®«ì§ã¥âáï)
dd 0x0 ; § à¥§¥à¢¨à®¢ ­®
 
include 'MACROS.INC' ; ¬ ªà®áë ®¡«¥£ç îâ ¦¨§­ì  áᥬ¡«¥à騪®¢!
include 'lang.inc'
include 'macros.inc' ; ¬ ªà®áë ®¡«¥£ç îâ ¦¨§­ì  áᥬ¡«¥à騪®¢!
 
;---------------------------------------------------------------------
;--- €—€‹Ž Žƒ€ŒŒ› ----------------------------------------------
31,21 → 32,11
 
START:
; mcall 5,10
mov ecx, 1
mov edx, drvinfo
push @f
jmp call_driver
@@:
mcall 21,13,1,drvinfo
; jmp run_launcher
 
mov ecx, 2
push @f
call_driver:
mcall 21,13
ret
@@:
; cmp eax,-1
inc eax
mcall 21,13,2
cmp eax,-1
je run_launcher
; cmp ecx,280
; je change_vrr
73,34 → 64,34
; mov dx,[_m1+ebx]
; rol edx,16
;mov eax,ecx
mov eax, 10
cmp cx,277+3
xor eax,eax
sub ecx,3
mov dx,cx
cmp cx,274
je yes_274
cmp cx,277
je yes_277
cmp cx,274+3
jne yes_280
jmp yes_280
yes_274:
add al,10
yes_277:
add al,10
yes_280:
mov edx, [_m1+eax-2]
lea dx, [ecx-3]
push run_launcher
mov ecx, 3
jmp call_driver
add al,10
ror edx,16
mov dx,[_m1+eax]
rol edx,16
; mov dx,bx
; shl edx,16
; mov dx,cx
mcall 21,13,3
; mcall 5,300
run_launcher:
mcall 70,launcher
mcall 19,launcher,0
; mcall 33,text,drvinfo,512,0
mcall -1
launcher:
dd 7
dd 0
dd 0
dd 0
dd 0
db '/RD/1/LAUNCHER'
I_END: ; ¬¥âª  ª®­æ  ¯à®£à ¬¬ë
db ? ; system loader will zero all memory after program end
; this byte will be terminating zero for launcher string
launcher db 'LAUNCHER '
;text db 'TEXT '
drvinfo: ; 512 bytes driver info area
; +0 - Full driver name
; +32 - Driver version
113,3 → 104,5
org $+64
_m1:
org drvinfo+200h
 
I_END: ; ¬¥âª  ª®­æ  ¯à®£à ¬¬ë