422 lines
11 KiB
NASM
422 lines
11 KiB
NASM
|
;
|
|||
|
; DESKTOP CONTEXT MENU
|
|||
|
; written by Ivan Poddubny
|
|||
|
;
|
|||
|
; <20><><EFBFBD><EFBFBD><EFBFBD> - <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>㡭<EFBFBD><E3A1AD>
|
|||
|
; e-mail: ivan-yar@bk.ru
|
|||
|
;
|
|||
|
; Compile with flat assembler
|
|||
|
;
|
|||
|
include 'lang.inc'
|
|||
|
include 'macros.inc'
|
|||
|
|
|||
|
meos_app_start
|
|||
|
code
|
|||
|
|
|||
|
mov [start_info.mode], 16
|
|||
|
mov [start_info.params], 0
|
|||
|
mov [start_info.workarea], work_area
|
|||
|
|
|||
|
mov eax,40 ; <20><>⠭<EFBFBD><E2A0AD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> ᮡ<>⨩
|
|||
|
mov ebx,100000b ; <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ⮫쪮 <20><><EFBFBD><EFBFBD>
|
|||
|
int 0x40
|
|||
|
|
|||
|
still: ; <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 横<> <20>᭮<EFBFBD><E1ADAE><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
|||
|
mov eax,10 ; <20><><EFBFBD><EFBFBD> ᮡ<><E1AEA1><EFBFBD><EFBFBD>
|
|||
|
int 0x40
|
|||
|
|
|||
|
cmp eax,6 ; <20><><EFBFBD><EFBFBD>?
|
|||
|
jne still
|
|||
|
|
|||
|
mov eax,37 ; <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>?
|
|||
|
mov ebx,2
|
|||
|
int 0x40
|
|||
|
|
|||
|
cmp eax,2 ; <20> <20><> <20>ࠢ<EFBFBD><E0A0A2>, <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
jne still
|
|||
|
|
|||
|
;---<2D><><EFBFBD>堫<EFBFBD>!---
|
|||
|
|
|||
|
; mov eax,37 ; <20><><EFBFBD> <20><><EFBFBD> <20>⫠<EFBFBD><E2ABA0><EFBFBD> - <20> <20><><EFBFBD><EFBFBD> <20> <20><>窥 (0;0), <20><><EFBFBD><EFBFBD><E0AEA5><EFBFBD>
|
|||
|
; xor ebx,ebx
|
|||
|
; int 0x40
|
|||
|
; test eax,eax ; <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><>窥 (0;0), <20>.<2E>. eax = 0
|
|||
|
; je exit
|
|||
|
|
|||
|
|
|||
|
mov eax,9 ; <20><><EFBFBD><EFBFBD>稬 <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ᮢ <20> <20><><EFBFBD>⥬<EFBFBD>
|
|||
|
mov ebx,procinfo
|
|||
|
xor ecx,ecx
|
|||
|
int 0x40
|
|||
|
|
|||
|
inc eax ; ⥯<><E2A5AF><EFBFBD> <20> eax ᮤ<>ন<EFBFBD><E0A6A8><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ᮢ + 1
|
|||
|
mov [processes],eax
|
|||
|
mov ecx,1
|
|||
|
|
|||
|
new_process:
|
|||
|
pushad
|
|||
|
mov eax,9 ; <20><><EFBFBD><EFBFBD>稬 <20><><EFBFBD><EFBFBD>ଠ<EFBFBD><E0ACA0><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>; <20><><EFBFBD><EFBFBD><EFBFBD> - <20> ecx
|
|||
|
mov ebx,procinfo
|
|||
|
int 0x40
|
|||
|
mov eax,37 ; <20><><EFBFBD>न<EFBFBD><E0A4A8><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
xor ebx,ebx
|
|||
|
int 0x40
|
|||
|
mov ebx,eax ; eax = cursor_x
|
|||
|
shr eax,16 ; ebx = cursor_y
|
|||
|
and ebx,0xffff
|
|||
|
mov [curx1],eax ; curx1 = cursor_x
|
|||
|
mov [cury1],ebx ; cury1 = cursor_y
|
|||
|
mov eax,[procinfo.x_start] ; eax = wnd_x_start
|
|||
|
mov ebx,[procinfo.y_start] ; ebx = wnd_y_start
|
|||
|
|
|||
|
mov ecx,[procinfo.x_size]
|
|||
|
add ecx,eax ; ecx = wnd_x_end
|
|||
|
mov edx,[procinfo.y_size]
|
|||
|
add edx,ebx ; ecx = wnd_y_end
|
|||
|
|
|||
|
cmp eax,[curx1] ; wnd_x_start > cursor_x => <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
|||
|
jg ne_goden
|
|||
|
cmp ecx,[curx1] ; wnd_x_end < cursor_x => <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ࠢ<EFBFBD><E0A0A2> <20><><EFBFBD><EFBFBD>
|
|||
|
jl ne_goden
|
|||
|
cmp ebx,[cury1] ; wnd_y_start > cursor_y => <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
|||
|
jg ne_goden
|
|||
|
cmp edx,[cury1] ; wnd_y_end < cursor_y => <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
|||
|
jl ne_goden
|
|||
|
|
|||
|
goden: ; <20><><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>-<2D><> <20><><EFBFBD><EFBFBD>, <20><><EFBFBD>⮬<EFBFBD> <20><>祣<EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
popad
|
|||
|
jmp still
|
|||
|
|
|||
|
ne_goden: ; <20><><EFBFBD><EFBFBD> <20><><EFBFBD> ᭠<>㦨 <20><><EFBFBD>ᬠ<EFBFBD>ਢ<EFBFBD><E0A8A2><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>, <20><><EFBFBD>⮬<EFBFBD>
|
|||
|
popad
|
|||
|
inc ecx
|
|||
|
cmp ecx,[processes]
|
|||
|
jl new_process ; <20><><EFBFBD><EFBFBD> ᬮਬ <><E1ABA5><EFBFBD>饥 <20><><EFBFBD><EFBFBD>, <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>᪠<EFBFBD><E1AAA0> <20><><EFBFBD><EFBFBD>
|
|||
|
|
|||
|
|
|||
|
@@: ; <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><><EFBFBD><EFBFBD> <20><><EFBFBD>짮<EFBFBD><ECA7AE>⥫<EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD>⨫ <20>ࠢ<EFBFBD><E0A0A2> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
|||
|
mov eax,37
|
|||
|
mov ebx,2 ; <20>㭪<EFBFBD><E3ADAA><EFBFBD> 37-2:
|
|||
|
int 0x40 ; <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>?
|
|||
|
cmp eax,ebx ; <20> <20><><EFBFBD><EFBFBD><EFBFBD>⨫, (eax != 2)
|
|||
|
jnz @f ; <20><><EFBFBD><EFBFBD> <20> <20><>砫<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 横<><E6A8AA>
|
|||
|
|
|||
|
mov eax,5 ; <20><><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
mov ebx,2 ; <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 2 <20><>
|
|||
|
int 0x40
|
|||
|
|
|||
|
jmp @b ; <20> <20><EFBFBD>ਬ <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
@@:
|
|||
|
|
|||
|
; <20> 㦥 <20>뫮 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>, <20>㦭<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><E0AEA5><EFBFBD>:
|
|||
|
@@:
|
|||
|
cmp [menu_opened],0
|
|||
|
je @f
|
|||
|
mov eax,5
|
|||
|
mov ebx,3 ; <20><><EFBFBD><EFBFBD> 3 <20><>
|
|||
|
int 0x40
|
|||
|
jmp @b
|
|||
|
@@:
|
|||
|
|
|||
|
mov eax,51 ; <20> ⥯<><E2A5AF><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> ᬥ<><E1ACA5> <20><><EFBFBD><EFBFBD>᪠<EFBFBD><E1AAA0> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (<28><>⮪) <20><><EFBFBD><EFBFBD>
|
|||
|
mov ebx,1 ; ᮧ<><E1AEA7><EFBFBD><EFBFBD> <20><>⮪ (thread)
|
|||
|
mov ecx,start_wnd ; <20><>窠 <20>室<EFBFBD> <20><>⮪<EFBFBD>
|
|||
|
mov edx,stack_wnd ; <20><><EFBFBD>設<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><>⮪<EFBFBD>
|
|||
|
int 0x40
|
|||
|
|
|||
|
jmp still
|
|||
|
|
|||
|
|
|||
|
|
|||
|
exit_menu: ; <20> <20><>室<EFBFBD><E5AEA4> <20><> <20><><EFBFBD><EFBFBD>, <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> [menu_opened] 0
|
|||
|
mov [menu_opened],0
|
|||
|
exit: ; <20> <20><> <20><><EFBFBD><EFBFBD>, <20><><EFBFBD><EFBFBD><EFBFBD> <20><>室<EFBFBD><E5AEA4> <20><> <20>᭮<EFBFBD><E1ADAE><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
or eax,-1 ; eax = -1
|
|||
|
int 0x40
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
; <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
|||
|
start_wnd:
|
|||
|
mov [menu_opened],1
|
|||
|
call draw_window
|
|||
|
|
|||
|
mov eax,40 ; <20><>⠭<EFBFBD><E2A0AD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ᮡ<>⨩ <20><><EFBFBD> <20>⮣<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
mov ebx,100101b ; <20><><EFBFBD><EFBFBD> + <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> + <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ᮢ<EFBFBD><E1AEA2>
|
|||
|
int 0x40
|
|||
|
|
|||
|
still2: ; <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 横<> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
|||
|
|
|||
|
mov eax,10 ; <20><><EFBFBD><EFBFBD> ᮡ<><E1AEA1><EFBFBD><EFBFBD>
|
|||
|
int 0x40
|
|||
|
|
|||
|
cmp eax,1 ; <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ᮢ<EFBFBD><E1AEA2>?
|
|||
|
je red
|
|||
|
cmp eax,3 ; <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>?
|
|||
|
je button
|
|||
|
cmp eax,6 ; <20><><EFBFBD><EFBFBD>?
|
|||
|
je mouse
|
|||
|
|
|||
|
jmp still2 ; <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><>砫<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 横<><E6A8AA>
|
|||
|
|
|||
|
|
|||
|
; <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
|||
|
mouse: ; <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>짮<EFBFBD><ECA7AE>⥫<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>, <20><><EFBFBD><EFBFBD><E0AEA5><EFBFBD>
|
|||
|
mov eax,37
|
|||
|
mov ebx,2 ; <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>?
|
|||
|
int 0x40
|
|||
|
test eax,eax ; <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>? - ⮣<><E2AEA3> <20>४<EFBFBD><E0A5AA>᭮! <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 横<>
|
|||
|
jz still2
|
|||
|
jmp exit_menu ; <20> <20> <20><><EFBFBD>-⠪<> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> - <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
|||
|
|
|||
|
|
|||
|
; <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
|||
|
red:
|
|||
|
call draw_window
|
|||
|
jmp still2
|
|||
|
|
|||
|
|
|||
|
; <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
button:
|
|||
|
mov eax,17 ; <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>䨪<EFBFBD><E4A8AA><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>⮩ <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
int 0x40
|
|||
|
|
|||
|
cmp ah,10 ; <20>ࠢ<EFBFBD><E0A0A2><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> 10
|
|||
|
jl nofuncbtns ; <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> - <20><><EFBFBD><EFBFBD>뢠<EFBFBD><EBA2A0> <20><><EFBFBD><EFBFBD>
|
|||
|
|
|||
|
add ah,-10 ; <20><><EFBFBD>⥬ <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>䨪<EFBFBD><E4A8AA><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 10
|
|||
|
movzx ebx,ah ; <20><><EFBFBD><EFBFBD>稫<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20>ணࠬ<E0AEA3><E0A0AC> <20> ᯨ᪥ <20> ebx
|
|||
|
lea esi, [startapps + ebx*4]
|
|||
|
lea edi, [start_info.path]
|
|||
|
mov esi, [esi]
|
|||
|
cld
|
|||
|
@@:
|
|||
|
lodsb
|
|||
|
stosb
|
|||
|
test al, al
|
|||
|
jnz @b
|
|||
|
mcall 58, start_info
|
|||
|
|
|||
|
; mov eax,5 ; <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><><EFBFBD><EFBFBD> <20>ணࠬ<E0AEA3><E0A0AC> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
; mov ebx,1 ; <20> <20><> <20><> <20><><EFBFBD><EFBFBD> <20><> <20>㤥<EFBFBD> <20><><EFBFBD><EFBFBD>ᮢ<EFBFBD><E1AEA2><EFBFBD> (<28><><EFBFBD> <20> <20><><EFBFBD><EFBFBD>???)
|
|||
|
; int 0x40 ; <20><><EFBFBD><E1AAAE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><>ப<EFBFBD>, <20> <20> <20><><EFBFBD> <20><EFBFBD><E0AEA1><EFBFBD><EFBFBD>
|
|||
|
; <20> <20><><EFBFBD><EFBFBD>ᮢ<EFBFBD><E1AEA2><EFBFBD>
|
|||
|
|
|||
|
nofuncbtns: ; <20><><EFBFBD><EFBFBD>뢠<EFBFBD><EBA2A0> <20><><EFBFBD><EFBFBD>
|
|||
|
jmp exit_menu
|
|||
|
|
|||
|
|
|||
|
|
|||
|
_BTNS_ = 8 ; <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>⢮ <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ("<22>㭪⮢ <20><><EFBFBD><EFBFBD>")
|
|||
|
|
|||
|
if lang eq ru
|
|||
|
font = 0x00000000
|
|||
|
string_length = 20 ; <20><><EFBFBD><EFBFBD><EFBFBD> <20><>ப<EFBFBD>
|
|||
|
wnd_x_size = 133 ; <20><>ਭ<EFBFBD> <20><><EFBFBD><EFBFBD>
|
|||
|
header_pos = 36 shl 16 + 7
|
|||
|
else
|
|||
|
font = 0x10000000
|
|||
|
string_length = 12 ; <20><><EFBFBD><EFBFBD><EFBFBD> <20><>ப<EFBFBD>
|
|||
|
wnd_x_size = 105 ; <20><>ਭ<EFBFBD> <20><><EFBFBD><EFBFBD>
|
|||
|
header_pos = 23 shl 16 + 7
|
|||
|
end if
|
|||
|
|
|||
|
;*******************************
|
|||
|
;******** <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> ********
|
|||
|
;*******************************
|
|||
|
|
|||
|
draw_window:
|
|||
|
|
|||
|
mov eax,12 ; <20><>稭<EFBFBD><E7A8AD><EFBFBD> "<22><>ᮢ<EFBFBD><E1AEA2><EFBFBD>"
|
|||
|
mov ebx,1
|
|||
|
int 0x40
|
|||
|
|
|||
|
mov eax,[curx1] ; ⥪<>騥 <20><><EFBFBD>न<EFBFBD><E0A4A8><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
mov [curx],eax ; <20><><EFBFBD><EFBFBD>襬 <20> <20><><EFBFBD>न<EFBFBD><E0A4A8><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
|||
|
mov eax,[cury1]
|
|||
|
mov [cury],eax
|
|||
|
|
|||
|
; ⥯<><E2A5AF><EFBFBD> <20>㤥<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>न<EFBFBD><E0A4A8><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>, <20>⮡<EFBFBD> <20><><EFBFBD> <20><> <20>ࠩ <20><>࠭<EFBFBD> <20><> <20>뫥<EFBFBD><EBABA5><EFBFBD>
|
|||
|
mov eax,14 ; <20><><EFBFBD><EFBFBD>稬 ࠧ<><E0A0A7><EFBFBD> <20><>࠭<EFBFBD>
|
|||
|
int 0x40
|
|||
|
mov ebx,eax
|
|||
|
shr eax,16 ; <20> eax - x_screen
|
|||
|
and ebx,0xffff ; <20> ebx - y_screen
|
|||
|
add eax,-wnd_x_size ; eax = [x_screen - <20><>ਭ<EFBFBD> <20><><EFBFBD><EFBFBD>]
|
|||
|
add ebx,-_BTNS_*15-21 ; ebx = [y_screen - <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>]
|
|||
|
|
|||
|
cmp eax,[curx]
|
|||
|
jg .okx ; <20> <20><><EFBFBD><EFBFBD> 誮<E1ABA8> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20>ࠢ<EFBFBD><E0A0A2><EFBFBD> <20><><EFBFBD><EFBFBD>,
|
|||
|
add [curx],-wnd_x_size ; ᤢ<><E1A4A2><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><> 100
|
|||
|
.okx:
|
|||
|
|
|||
|
cmp ebx, [cury]
|
|||
|
jg .oky ; <20><> <20><><EFBFBD>⨪<EFBFBD><E2A8AA><EFBFBD> <20><>筮 ⠪<><E2A0AA>
|
|||
|
add [cury], -_BTNS_*15-21
|
|||
|
.oky:
|
|||
|
|
|||
|
mov eax, 48 ; <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>⥬<EFBFBD><E2A5AC><EFBFBD> 梥<><E6A2A5>
|
|||
|
mov ebx, 3
|
|||
|
mov ecx, sc ; <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
mov edx, sizeof.system_colors ; <20> <20><> ࠧ<><E0A0A7><EFBFBD>
|
|||
|
int 0x40
|
|||
|
|
|||
|
xor eax, eax ; <20>㭪<EFBFBD><E3ADAA><EFBFBD> 0 - ᮧ<><E1AEA7><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
|||
|
mov ebx, [curx] ; ebx = [<5B><><EFBFBD>न<EFBFBD><E0A4A8><EFBFBD><EFBFBD> <20><> x] shl 16 + [<5B><>ਭ<EFBFBD>]
|
|||
|
shl ebx, 16
|
|||
|
add ebx, wnd_x_size
|
|||
|
mov ecx, [cury] ; ecx = [<5B><><EFBFBD>न<EFBFBD><E0A4A8><EFBFBD><EFBFBD> <20><> y] shl 16 + [<5B><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>]
|
|||
|
shl ecx, 16
|
|||
|
add ecx, _BTNS_*15+21
|
|||
|
mov edx, [sc.work] ; 梥<> ࠡ<>祩 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
mov esi, [sc.grab] ; 梥<> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
or esi, 0x81000000
|
|||
|
mov edi, [sc.frame] ; 梥<> ࠬ<><E0A0AC>
|
|||
|
int 0x40
|
|||
|
|
|||
|
mov eax, 4 ; <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
mov ebx, header_pos ; [x] shl 16 + [y]
|
|||
|
mov ecx, [sc.grab_text]; <20><><EFBFBD><EFBFBD><EFBFBD> <20> 梥<> (<28><><EFBFBD><EFBFBD><EFBFBD>)
|
|||
|
add ecx, -0x333333
|
|||
|
or ecx, 0x10000000
|
|||
|
mov edx, header ; <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
mov esi, header.size ; <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ("M E N U")
|
|||
|
int 0x40
|
|||
|
add ecx, 0x333333 ; 梥<> <20><><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
add ebx, 1 shl 16 ; ᤢ<><E1A4A2><EFBFBD><EFBFBD> <20><>ࠢ<EFBFBD> <20><> 1
|
|||
|
int 0x40
|
|||
|
|
|||
|
mov ebx, 1*65536+wnd_x_size-2 ; <20><>稭<EFBFBD><E7A8AD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
mov ecx, 20*65536+15
|
|||
|
mov edx, 10 or 0x40000000 ; <20><><EFBFBD> 30 <20><>⠭<EFBFBD><E2A0AD><EFBFBD><EFBFBD><EFBFBD> => <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
|||
|
mov edi,_BTNS_ ; <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>⢮ <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (<28><><EFBFBD><EFBFBD>稪)
|
|||
|
|
|||
|
newbtn: ; <20><>砫<EFBFBD> 横<><E6A8AA>
|
|||
|
mov eax,8 ; ᮧ<><E1AEA7><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
int 0x40
|
|||
|
|
|||
|
; <20><>襬 ⥪<><E2A5AA> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
pushad ; ᯠᠥ<E1AFA0> ॣ<><E0A5A3><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
shr ecx, 16
|
|||
|
and ebx, 0xffff0000
|
|||
|
add ebx, ecx ; ebx = [x] shl 16 + [y];
|
|||
|
add ebx, 10*65536+4 ; ebx += ᬥ饭<E1ACA5><E9A5AD> <20>⭮<EFBFBD><E2ADAE>⥫쭮 <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>;
|
|||
|
mov ecx, [sc.work_text] ; <20><><EFBFBD><EFBFBD><EFBFBD> <20> 梥<>
|
|||
|
or ecx, font
|
|||
|
add edx, -10 ; edx = <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>;
|
|||
|
imul edx, string_length ; edx *= <20><><EFBFBD><EFBFBD><EFBFBD> <20><>ப<EFBFBD>;
|
|||
|
add edx, text ; edx += text; ⥯<><E2A5AF><EFBFBD> <20> edx <20><><EFBFBD><EFBFBD><EFBFBD> <20><>ப<EFBFBD>
|
|||
|
mov esi, string_length ; <20> esi - <20><><EFBFBD><EFBFBD><EFBFBD> <20><>ப<EFBFBD>
|
|||
|
mov eax, 4 ; <20>㭪<EFBFBD><E3ADAA><EFBFBD> 4 - <20>뢮<EFBFBD> ⥪<><E2A5AA><EFBFBD>
|
|||
|
int 0x40
|
|||
|
popad
|
|||
|
|
|||
|
inc edx ; <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>++;
|
|||
|
add ecx,15*65536 ; 㢥<><E3A2A5>稬 ᬥ饭<E1ACA5><E9A5AD> <20><> y
|
|||
|
dec edi ; 㬥<><E3ACA5>訬 <20><><EFBFBD><EFBFBD>稪
|
|||
|
jnz newbtn ; <20> <20><> <20><><EFBFBD><EFBFBD>, <20><><EFBFBD><EFBFBD><EFBFBD>ਬ <20><><EFBFBD> <20><><EFBFBD> ࠧ
|
|||
|
|
|||
|
mov eax,12 ; <20><><EFBFBD><EFBFBD><EFBFBD>稫<EFBFBD> "<22><>ᮢ<EFBFBD><E1AEA2><EFBFBD>"
|
|||
|
mov ebx,2
|
|||
|
int 0x40
|
|||
|
|
|||
|
ret ; <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
|||
|
|
|||
|
|
|||
|
; <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
DATA
|
|||
|
|
|||
|
macro strtbl name, [string]
|
|||
|
{
|
|||
|
common
|
|||
|
label name dword
|
|||
|
forward
|
|||
|
local str
|
|||
|
dd str
|
|||
|
forward
|
|||
|
str db string
|
|||
|
}
|
|||
|
|
|||
|
strtbl startapps ,\
|
|||
|
<"/RD/1/PIC4",0> ,\
|
|||
|
<"/RD/1/DESKTOP",0> ,\
|
|||
|
<"/RD/1/MV",0> ,\
|
|||
|
<"/RD/1/JPEGVIEW",0> ,\
|
|||
|
<"/RD/1/CPU",0> ,\
|
|||
|
<"/RD/1/SPANEL",0> ,\
|
|||
|
<"/RD/1/ICONMNGR",0> ,\
|
|||
|
<"/RD/1/VRR",0>
|
|||
|
|
|||
|
; header: ; <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
; db 'M E N U'
|
|||
|
; header_len = $ - header
|
|||
|
|
|||
|
; text: ; ⥪<><E2A5AA> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
; db 'Background '; 12
|
|||
|
; db 'Colors '
|
|||
|
; db 'MeView '
|
|||
|
; db 'Processes '
|
|||
|
; db 'Panel setup '
|
|||
|
; db 'Icon manager'
|
|||
|
|
|||
|
sz header, "MenuetOS"
|
|||
|
|
|||
|
lsz text,\
|
|||
|
en, 'Background ',\
|
|||
|
en, 'Colors ',\
|
|||
|
en, 'MeView ',\
|
|||
|
en, 'JpegView ',\
|
|||
|
en, 'Processes ',\
|
|||
|
en, 'Panel setup ',\
|
|||
|
en, 'Icon manager',\
|
|||
|
en, 'VRR ',\
|
|||
|
\
|
|||
|
ru, '<27><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> ',\
|
|||
|
ru, '<27><><EFBFBD>⥬<EFBFBD><E2A5AC><EFBFBD> 梥<><E6A2A5> ',\
|
|||
|
ru, '<27><><EFBFBD>ᬮ<EFBFBD><E1ACAE> BMP ',\
|
|||
|
ru, '<27><><EFBFBD>ᬮ<EFBFBD><E1ACAE> JPEG ',\
|
|||
|
ru, '<27><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ',\
|
|||
|
ru, '<27><><EFBFBD><EFBFBD>ன<EFBFBD><E0AEA9> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ',\
|
|||
|
ru, '<27><>ࠢ<EFBFBD><E0A0A2><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ',\
|
|||
|
ru, '<27><><EFBFBD><EFBFBD>ன<EFBFBD><E0AEA9> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> '
|
|||
|
|
|||
|
|
|||
|
|
|||
|
; <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
UDATA
|
|||
|
processes dd ? ; <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>⢮ <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ᮢ <20> <20><><EFBFBD>⥬<EFBFBD>
|
|||
|
curx1 dd ? ; <20><><EFBFBD>न<EFBFBD><E0A4A8><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
cury1 dd ?
|
|||
|
curx dd ? ; <20><><EFBFBD>न<EFBFBD><E0A4A8><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
|||
|
cury dd ?
|
|||
|
|
|||
|
menu_opened db ? ; <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD>? (1-<2D><>, 0-<2D><><EFBFBD>)
|
|||
|
|
|||
|
align 32
|
|||
|
start_info:
|
|||
|
.mode dd ?
|
|||
|
dd ?
|
|||
|
.params dd ?
|
|||
|
dd ?
|
|||
|
.workarea dd ?
|
|||
|
.path:
|
|||
|
rb 256
|
|||
|
|
|||
|
|
|||
|
sc system_colors ; <20><><EFBFBD>⥬<EFBFBD><E2A5AC><EFBFBD> 梥<><E6A2A5>
|
|||
|
procinfo process_information ; <20><><EFBFBD><EFBFBD>ଠ<EFBFBD><E0ACA0><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
|||
|
work_area:
|
|||
|
rb 0x1000
|
|||
|
|
|||
|
rb 1024 ; <20><><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> - 墠<><E5A2A0><EFBFBD> <20> 1 <20><>
|
|||
|
align 32
|
|||
|
stack_wnd:
|
|||
|
|
|||
|
|
|||
|
MEOS_APP_END
|
|||
|
; <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|