Subversion Repositories Kolibri OS

Compare Revisions

Regard whitespace Rev 51 → Rev 93

/programs/panel/trunk/@PANEL.ASM
1,6 → 1,6
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; ;
; MENUBAR for MenuetOS - Compile with fasm ;
; MENUBAR for KolibriOS - Compile with fasm ;
; ;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
 
7,10 → 7,10
use32
org 0x0
db 'MENUET01' ; 8 byte id
dd 0x01 ; required OS version
dd 0x01 ; header version
dd START ; program start
dd I_END ; program image size
dd 0xB000 ; reguired amount of memory - 64 Kb
dd 0xA000 ; reguired amount of memory - 10 Kb
dd 0xA000 ; esp
dd 0x0,0x0 ; param, icon
 
30,55 → 30,36
soften_middle dd 1 ; 0 no ; 1 yes
icons dd 1 ; 0 defaults ; 1 activate
 
dat db 'PANEL DAT'
 
PANEL_HEIGHT = 18
 
;mainalive db 1
handle_key:
 
;correct_display:
; mov eax,15
; mov ebx,3
; int 0x40
; mcall 5, 300
; jmp correct_display
 
chlangproc:
; mcall 18, 7
; mov [my_process],eax
begin_2:
mcall 40,0b ; 0
begin:
.begin:
mcall 5, eax
begin_3:
mcall 18, 7
mov [active_process],eax
; cmp [mainalive], 0
; je .exit
 
mcall 66, 3
mov ah,al
and al,100000b
cmp al,100000b
je change_start_end
mov al,ah
and al,10000b
cmp al,10000b
je change_start_end
mov al,ah
and al,1000b
cmp al,1000b
je change_key_lang_1
mov al,ah
and al,100b
cmp al,100b
je change_key_lang_1
mov al,ah
and al,1111b
cmp al,11b
jne begin
mcall 19, file_sys, syslang
mcall 2
cmp al, 2
jnz begin_1.ret
mov ebx, exec_fileinfo
shr eax, 8
cmp al, 88
jz start_end_application
cmp al, 91
jz start_menu_application
cmp al, 92
jz start_menu_application
cmp al, 62
jz kill_active_application
cmp al, 71
jz page_list_next
cmp al, 72
jz page_list_prev
; this is hotkey Ctrl+Shift or LShift+RShift
mov ebx, setup_exec
test ah, 001100b
jnz change_key_lang
mov dword [ebx+8], syslang
mcall 70
call syslang_music
; mcall 5, 25
begin_1:
85,60 → 66,21
mov ecx,[active_process]
mcall 18, 3
mcall 5, 25
jmp begin
change_key_lang_1:
mov al,ah
and al,11b
cmp al,01b
je change_key_lang
cmp al,10b
jne begin
.ret:
ret
 
change_key_lang:
mcall 19, file_sys, chlang
mov dword [ebx+8], chlang
mcall 70
call chlang_music
; mcall 5, 25
jmp begin_1
change_start_end:
mov al,ah
and al,1100b
cmp al,1000b
je start_end
cmp al,100b
jne start_menu
start_end:
; mov ecx,[my_process]
; mcall 18, 3
mcall 18,12
cmp al,1
je scan_codes
cmp ah,255
jne begin
 
start_end_application:
mcall 19,file_end,0
mov dword [ebx+21], end_name
mcall 70
mcall 5 ,50
jmp begin
scan_codes:
cmp ah,88
je start_end_application
jmp begin
start_menu:
mcall 18,12
mov [button_presssed_alt],eax
mov [draw_window_1],1
; mov ecx,eax
; mcall 47,0x40100, ,10 shl 16+5,0
; mov eax,ecx
cmp al,1
je scan_codes2
cmp ah,72 ;232
je start_menu_application
cmp ah,73 ;233
je start_menu_application
cmp ah,0x35 ;b6 ;53
je kill_active_application
cmp ah,0x9
jne begin
jmp begin
jmp begin_1.ret
 
kill_active_application:
mcall 18, 7
147,46 → 89,33
; mov eax,area9
; mov ecx,[eax+4]
mcall 18, 2
jmp begin
jmp begin_1.ret
 
start_menu_application:
mcall 19,filename,0
mov [draw_window_1], 1
mov dword [ebx+21], menu_name
mcall 70
call menu_music
mcall 5,50
jmp begin
scan_codes2:
cmp ah,91
je start_menu_application
cmp ah,92
je start_menu_application
cmp ah,83 ;62
je kill_active_application
cmp ah,71 ;179
jne no_test_179
jmp begin_1.ret
 
page_list_next:
cmp [page_list],15
je @f
inc [page_list]
mov [draw_window_1],1
@@:
jmp begin
jmp begin_1.ret
 
no_test_179:
cmp ah,72 ;180
jne no_test_180
page_list_prev:
cmp [page_list],0
je @f
dec [page_list]
mov [draw_window_1],1
@@:
jmp begin
jmp begin_1.ret
 
no_test_180:
 
jmp begin
 
button_presssed_alt dd 0
 
active_process dd 0
my_process dd 0
 
calendar_music:
mcall 55, eax, , , calendarmusic
230,20 → 159,26
 
 
START:
mov eax, 6
mov ebx, dat
mov ecx, 0
mov edx, -1
mov esi, I_END
mcall 66,4,0,2 ; LShift+RShift
mcall 66, , ,11h ; Ctrl+Shift
mcall 66,,88,110h ; Alt+Ctrl+F12
mcall 66,,91,100h ; Alt+LWin
mcall 66,,92 ; Alt+RWin
mcall 66,,62 ; Alt+F4
mcall 66,,71 ; Alt+Home
mcall 66,,72 ; Alt+Up
mcall 18, 8, 1
test eax, eax
jne @f
mcall 18, 8, 2
@@:
mov eax, 70
mov ebx, dat_fileinfo
int 0x40
 
mov eax,40
mov ebx,0101b
int 0x40
 
mov edi,width
mov esi,I_END
mov eax,0
xor eax,eax
new_number:
cmp [esi],byte ';'
je number_ready
254,9 → 189,8
inc esi
jmp new_number
number_ready:
mov [edi],eax
mov eax,0
add edi,4
stosd
xor eax,eax
inc esi
cmp [esi],byte 'x'
jne new_number
271,10 → 205,6
 
call set_variables
 
mcall 51, 1, chlangproc, 0xB000
; mcall 5, 5
; mcall 51, 1, correct_display, 0xA800
 
start_after_minimize:
 
call draw_window
301,7 → 231,7
jz red
cmp eax,3 ; button ?
jz button
 
call handle_key
jmp still
 
red: ; redraw window
364,60 → 294,22
jmp still
noselect:
 
mov ebx, exec_fileinfo
cmp ah,byte 2 ; start calendar
jnz noid15 ;noclock
mov eax, 19
mov ebx, file6
xor ecx, ecx
mov dword [ebx+21], calendar_name
mov eax, 70
int 0x40
call calendar_music
jmp still
; noclock:
 
; cmp ah,byte 11 ; start file 1
; jnz nob1
; mov eax,19
; mov ebx,file1
; int 0x40
; jmp still
; nob1:
 
; cmp ah,byte 12 ; start file 2
; jnz nob2
; mov eax,19
; mov ebx,file2
; int 0x40
; jmp still
; nob2:
 
; cmp ah,byte 13 ; start file 3
; jnz nob3
; mov eax,19
; mov ebx,file3
; int 0x40
; jmp still
; nob3:
 
; cmp ah,14 ; start file 4
; jne noid14
; mov eax,19
; mov ebx,file4
; mov ecx,file4_par
; int 0x40
; jmp still
; noid14:
 
; cmp ah,15 ; start file 5
; jne noid15
; mov eax,19
; mov ebx,file5
; int 0x40
; jmp still
 
noid15:
cmp ah,16
jne noid16
mcall 19, file_sys, chlang
mov ebx, setup_exec
mov dword [ebx+8], chlang
mov eax, 70
int 0x40
call chlang_music
mcall 5, 25
jmp still
425,7 → 317,10
noid16:
cmp ah,17
jne noid17
mcall 19, file_sys, syslang
mov ebx, setup_exec
mov dword [ebx+8], syslang
mov eax, 70
int 0x40
call syslang_music
mcall 5, 25
jmp still
433,7 → 328,9
noid17:
cmp ah,18
jne noid18
mcall 19, sysmeter, 0
mov dword [ebx+21], sysmeter_name
mov eax, 70
int 0x40
call sysmeter_music
jmp still
 
453,11 → 350,12
noid19:
cmp ah,20 ; start system setup
jnz noid20
mov eax, 19
mov ebx, file_sys
xor ecx, ecx
mov ebx, setup_exec
and dword [ebx+8], 0
mov eax, 70
int 0x40
call setup_music
jmp still
 
noid20:
cmp ah,21
511,10 → 409,8
mov ecx,2
mov [contrast],0
mov eax,[max_applications]
mov ebx,[page_list]
xor edx,edx
mul ebx
cmp eax,0
mul [page_list]
test eax,eax
je @f
inc eax
@@:
641,10 → 537,8
calculate_applications:
 
mov eax,[max_applications]
mov ebx,[page_list]
xor edx,edx
mul ebx
cmp eax,0
mul [page_list]
test eax,eax
je @f
inc eax
@@:
759,9 → 653,9
 
 
menu_handler:
mov eax, 19
mov ebx, filename
xor ecx, ecx
mov eax, 70
mov ebx, exec_fileinfo
mov dword [ebx+21], menu_name
int 0x40
ret
 
896,10 → 790,6
 
call draw_small_right
 
mov eax, 23
mov ebx, 30
int 0x40
 
jmp small_wait
 
;-------------------------------------------------
918,10 → 808,6
 
call draw_small_left
 
mov eax, 23
mov ebx, 30
int 0x40
 
;-------------------------------------------------
 
small_wait:
934,6 → 820,11
call [small_draw]
jmp small_wait
no_win:
cmp eax,2
jne no_key
call handle_key
jmp small_wait
no_key:
 
mov eax,17
int 0x40
1339,12 → 1230,9
mov eax,[wcolor]
mov [m_icon+4],eax
 
mov eax,6 ; load file
mov ebx,m_bmp
mov ecx,0
mov edx,200000
mov esi,image
mov edi,0
; load & display menuet.bmp
mov eax, 70
mov ebx, m_bmp_fileinfo
int 0x40
 
mov eax,40
1356,14 → 1244,11
; movzx ecx,byte [edi]
; shr ecx,5
 
mov cl,[edi]
cmp cl,10
cmp byte [edi], 10
jb nopix
mov cl,[edi+1]
cmp cl,10
cmp byte [edi+1], 10
jb nopix
mov cl,[edi+2]
cmp cl,10
cmp byte [edi+2], 10
jb nopix
 
pusha
1435,11 → 1320,8
add ecx,48
mov [iconf+6],cl
 
mov eax,6 ; load file
mov ebx,iconf
mov ecx,0
mov edx,200000
mov esi,image
mov eax, 70
mov ebx, iconf_fileinfo
int 0x40
 
mov eax,0
2044,21 → 1926,8
 
checks dd -1
hidetext db 0x11,0x10,0x1e
iconf db 'MBAR_IX BMP'
m_bmp db 'MENUET BMP'
 
sysmeter db 'SYSMETER '
file_end db 'END '
file_sys db 'SETUP '
filename db 'MENU '
turn_text db '><'
;file1 db 'SB '
;file2 db 'TETRIS '
;file3 db 'PIC4 '
;file4 db 'TINYPAD '
;file4_par db 'COPYING.TXT',0
;file5 db 'MFASM '
file6 db 'CALENDAR '
gpl db 'GPL'
 
chlang db 'LANG',0
2092,6 → 1961,54
screenxy dd 0x0
stcount dd 0x0
 
setup_exec:
dd 7
dd 0
.cmdline dd ?
dd 0
dd 0
db '/RD/1/'
file_sys db 'SETUP',0
 
exec_fileinfo:
dd 7
dd 0
dd 0
dd 0
dd 0
db 0
.name dd ?
 
end_name db '/RD/1/END',0
menu_name db '/RD/1/MENU',0
calendar_name db '/RD/1/CALENDAR',0
sysmeter_name db '/RD/1/SYSMETER',0
 
dat_fileinfo:
dd 0
dd 0
dd 0
dd 1024
dd I_END
db '/RD/1/PANEL.DAT',0
 
m_bmp_fileinfo:
dd 0
dd 0
dd 0
dd 8192
dd image
db '/RD/1/MENUET.BMP',0
 
iconf_fileinfo:
dd 0
dd 0
dd 0
dd 8192
dd image
db '/RD/1/'
iconf db 'MBAR_IX.BMP',0
 
I_END:
 
screen_size: