Subversion Repositories Kolibri OS

Compare Revisions

Regard whitespace Rev 1205 → Rev 1204

/programs/system/cpu/trunk/cpu.asm
3,7 → 3,6
;
; VTurjanmaa
; additions by M.Lisovin lisovin@26.ru
; integrated with load_lib.obj by <Lrz>
; Compile with FASM for Menuet
;
 
10,8 → 9,6
use32
org 0x0
STACK_SIZE=1024
offset_y=22
offset_x=5
db 'MENUET01' ; 8 byte id
dd 0x01 ; header version
dd START ; start of code
22,17 → 19,9
 
include 'lang.inc'
include '..\..\..\macros.inc'
include '..\..\..\develop\libraries\box_lib\asm\trunk\editbox_ex.mac'
include '..\..\..\develop\libraries\box_lib\load_lib.mac'
display_processes=32 ; number of processes to show
@use_library ;use load lib macros
align 4
START: ; start of execution
 
sys_load_library library_name, cur_dir_path, library_path, system_path, \
err_message_found_lib, head_f_l, myimport, err_message_import, head_f_i
inc eax
jz close
; calculate window position
; at the center of the screen
call calculate_window_pos
47,7 → 36,7
align 4
still:
mov eax,23 ; wait here for event
mov ebx,100 ; 2 sec.
mov ebx,200 ; 2 sec.
mcall
 
dec eax ; redraw request ?
56,10 → 45,6
jz key
dec eax ; button in buffer ?
jz button
 
push dword edit1
call [edit_box_mouse]
 
align 4
still_end:
xor ebp,ebp ; draw new state of processes
70,7 → 55,6
key: ; key
mov eax,2
mcall
 
cmp ah,184 ; PageUp
je pgdn
cmp ah,183
77,10 → 61,6
je pgup ; PageDown
cmp ah,27
je close ; Esc
 
push dword edit1
call [edit_box_key]
 
jmp still_end
align 4
button:
121,8 → 101,8
dec eax
jz pgup
dec eax
; jz read_string
; dec eax
jz read_string
dec eax
jz program_start
dec eax
jz reboot
178,7 → 158,7
.nodelete:
;create terminate process button
mov eax,8
mov ebx,(15-offset_x)*65536+100-offset_y
mov ebx,15*65536+100
mov ecx,[curposy]
shl ecx,16
mov cx,10
195,7 → 175,7
;draw background for proccess information
mov eax,13
mov ebx,(115-offset_x)*65536+395
mov ebx,115*65536+395
;ecx was already set
mov edx,0x88ff88
;contrast
242,7 → 222,7
jmp .find_loop
align 4
.no_processes:
or edi,-1
mov edi,-1
ret
align 4
.process_found:
295,7 → 275,7
;ecx haven't changed since .process_found
; mov ecx,edi
mov edx,[curposy]
add edx,(20-offset_x)*65536+1
add edx,20*65536+1
mov esi,[tcolor]
mcall
302,7 → 282,7
;show process name
mov eax,4
mov ebx,[curposy]
add ebx,(50-offset_x)*65536+1
add ebx,50*65536+1
mov ecx,[tcolor]
mov edx,process_info_buffer.process_name
mov esi,11
313,7 → 293,7
mov ebx,8*65536+1*256
mov ecx,[process_info_buffer.PID]
mov edx,[curposy]
add edx,(130-offset_x)*65536+1
add edx,130*65536+1
mov esi,[tcolor]
mcall
358,18 → 338,19
mov [tasklist+4*eax],edi
ret
align 4
;read_string:
read_string:
 
;clean string
; mov edi,start_application
; xor eax,eax
; mov ecx,60
; cld
; rep stosb
; call print_text
mov edi,start_application
xor eax,eax
mov ecx,60
cld
rep stosb
call print_text
 
; mov edi,start_application
mov edi,start_application
;edi now contains pointer to last symbol
; jmp still1
jmp still1
 
;read string main loop
align 4
376,97 → 357,95
f11:
;full update
push edi
xor ebp,ebp
inc ebp
; mov ebp,1
mov ebp,1
call draw_window
pop edi
;align 4
; still1:
align 4
still1:
;wait for message
; mov eax,23
; mov ebx,100
; mcall
; cmp eax,1
; je f11
mov eax,23
mov ebx,100
mcall
cmp eax,1
je f11
;if no message - update process information
; cmp eax,0
; jnz .message_received
; push edi ;edi should be saved since draw_window
; xor ebp,ebp ;corrupt registers
; call draw_window
; pop edi
; jmp still1
;align 4
;.message_received:
; cmp eax,2
; jne read_done ;buttons message
cmp eax,0
jnz .message_received
push edi ;edi should be saved since draw_window
xor ebp,ebp ;corrupt registers
call draw_window
pop edi
jmp still1
align 4
.message_received:
cmp eax,2
jne read_done ;buttons message
;read char
; mov eax,2
; mcall
; shr eax,8
mov eax,2
mcall
shr eax,8
;if enter pressed, exit read string loop
; cmp eax,13
; je read_done
cmp eax,13
je read_done
;if backslash pressed?
; cmp eax,8
; jnz nobsl
cmp eax,8
jnz nobsl
;decrease pointer to last symbol
; cmp edi,start_application
; jz still1
; dec edi
cmp edi,start_application
jz still1
dec edi
;fill last symbol with space because
;print_text show all symbols
; mov [edi],byte 32
; call print_text
; jmp still1
;align 4
; nobsl:
mov [edi],byte 32
call print_text
jmp still1
align 4
nobsl:
;write new symbol
; mov [edi],al
mov [edi],al
;display new text
; call print_text
call print_text
;increment pointer to last symbol
; inc edi
inc edi
;compare with end of string
; mov esi,start_application
; add esi,60
; cmp esi,edi
; jnz still1
mov esi,start_application
add esi,60
cmp esi,edi
jnz still1
 
;exiting from read string loop
;align 4
; read_done:
align 4
read_done:
;terminate string for file functions
; mov [edi],byte 0
mov [edi],byte 0
 
; call print_text
; jmp still
call print_text
jmp still
 
;align 4
;print_text:
align 4
print_text:
;display start_application string
 
; pushad
pushad
;display text background
; mov eax,13
; mov ebx,64*65536+62*6
; mov ecx,400*65536+12
; mov edx,0xffffcc ;0xeeeeee
; mcall
mov eax,13
mov ebx,64*65536+62*6
mov ecx,400*65536+12
mov edx,0xffffcc ;0xeeeeee
mcall
;display text
; mov eax,4
; mov edx,start_application ;from start_application string
; mov ebx,70*65536+402 ;text center-aligned
; xor ecx,ecx ;black text
; mov esi,60 ;60 symbols
; mcall
mov eax,4
mov edx,start_application ;from start_application string
mov ebx,70*65536+402 ;text center-aligned
xor ecx,ecx ;black text
mov esi,60 ;60 symbols
mcall
 
; popad
; ret
popad
ret
 
window_x_size=524
window_y_size=430
521,27 → 500,23
xor eax,eax ; function 0 : define and draw window
mov ebx,[winxpos] ; [x start] *65536 + [x size]
mov ecx,[winypos] ; [y start] *65536 + [y size]
mov edx,0x34ddffdd ;ffffff ; color of work area RRGGBB,8->color
mov edx,0x14ddffdd ;ffffff ; color of work area RRGGBB,8->color
mov edi,title ; WINDOW CAPTION;
mcall
 
add eax,4 ; function 4 : write text to window
mov ebx,(22-offset_x)*65536+35-offset_y ; draw info text with function 4
mov eax,4 ; function 4 : write text to window
mov ebx,22*65536+35 ; draw info text with function 4
xor ecx,ecx
mov edx,text
mov esi,text_len
mcall
 
push dword edit1
call [edit_box_draw]
 
align 4
.show_process_info:
mov edi,[list_start]
mov [list_add],edi
mov dword [index],0
mov dword [curposy],54-offset_y
mov dword [curposy],54
align 4
.loop_draw:
call draw_next_process
556,24 → 531,24
mov esi,0xaabbcc
; previous page button
mov ebx,(30-offset_x)*65536+96
mov ecx,(380-offset_y)*65536+10
mov ebx,30*65536+96
mov ecx,380*65536+10
mov edx,51
mcall
; next page button
mov ebx,(130-offset_x)*65536+96
mov ebx,130*65536+96
inc edx
mcall
; ">" (text enter) button
; mov ebx,30*65536+20
mov ebx,30*65536+20
add ecx,20 shl 16
; inc edx
; mcall
inc edx
mcall
; run button
mov ebx,(456-offset_x)*65536+50
mov ebx,456*65536+50
inc edx
mcall
 
586,7 → 561,7
;"PREV PAGE", "NEXT PAGE" and "REBOOT" labels
mov eax,4
mov ebx,(50-offset_x)*65536+382-offset_y
mov ebx,50*65536+382
xor ecx,ecx
mov edx,tbts
mov esi,tbte-tbts
593,16 → 568,16
mcall
 
;">" labels
; mov eax,4
; mov ebx,40*65536+402
; xor ecx,ecx
; mov edx,tbts_2
; mov esi,1
; mcall
mov eax,4
mov ebx,40*65536+402
xor ecx,ecx
mov edx,tbts_2
mov esi,1
mcall
 
;"RUN" labels
; mov eax,4
mov ebx,(475-offset_x)*65536+402-offset_y
mov eax,4
mov ebx,475*65536+402
xor ecx,ecx
mov edx,tbts_3
mov esi,tbte_2-tbts_3
609,7 → 584,7
mcall
 
;print application name in text box
; call print_text
call print_text
 
mov eax,12 ; function 12:tell os about windowdraw
mov ebx,2 ; 2, end of draw
620,52 → 595,14
 
 
; DATA AREA
system_path db '/sys/lib/'
library_name db 'box_lib.obj',0
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
 
err_message_found_lib db 'Sorry I cannot load library box_lib.obj',0
head_f_i:
head_f_l db 'System error',0
err_message_import db 'Error on load import library box_lib.obj',0
 
myimport:
 
edit_box_draw dd aEdit_box_draw
edit_box_key dd aEdit_box_key
edit_box_mouse dd aEdit_box_mouse
;version_ed dd aVersion_ed
 
;check_box_draw dd aCheck_box_draw
;check_box_mouse dd aCheck_box_mouse
;version_ch dd aVersion_ch
 
;option_box_draw dd aOption_box_draw
;option_box_mouse dd aOption_box_mouse
;version_op dd aVersion_op
 
dd 0
dd 0
 
aEdit_box_draw db 'edit_box',0
aEdit_box_key db 'edit_box_key',0
aEdit_box_mouse db 'edit_box_mouse',0
;aVersion_ed db 'version_ed',0
 
;aCheck_box_draw db 'check_box_draw',0
;aCheck_box_mouse db 'check_box_mouse',0
;aVersion_ch db 'version_ch',0
 
;aOption_box_draw db 'option_box_draw',0
;aOption_box_mouse db 'option_box_mouse',0
;aVersion_op db 'version_op',0
 
edit1 edit_box 350,(64-offset_x),(398-offset_y),0xffffff,0x6f9480,0,0xAABBCC,0,start_application_c,start_application,ed_focus,start_application_e,start_application_e
 
list_start dd 0
 
file_start: dd 7
dd 0,0,0,0
 
start_application: db '/sys/LAUNCHER',0
times 60 db 32
 
sys_reboot:
dd 7
dd 0
682,7 → 619,7
 
tbts: db 'SEITE ZURUECK SEITE VOR REBOOT SYSTEM'
tbte:
;tbts_2 db '>'
tbts_2 db '>'
tbts_3 db 'START'
tbte_2:
 
696,7 → 633,7
 
tbts: db 'EELMINE LEHT JÄRGMINE LEHT REBOODI SÜSTEEM'
tbte:
;tbts_2 db '>'
tbts_2 db '>'
tbts_3 db 'START'
tbte_2:
 
710,7 → 647,7
 
tbts: db 'PREV PAGE NEXT PAGE REBOOT SYSTEM'
tbte:
;tbts_2 db '>'
tbts_2 db '>'
tbts_3 db 'RUN'
tbte_2:
 
717,13 → 654,9
title db 'Processes - Ctrl/Alt/Del',0
 
end if
start_application: db '/sys/LAUNCHER',0
start_application_e=$-start_application-1
; times 60 db 0
rb 60
start_application_c=$-start_application-1
align 4
 
I_END:
 
winxpos rd 1
winypos rd 1
 
734,7 → 667,4
index rd 1
tasklist rd display_processes
process_info_buffer process_information
cur_dir_path rb 1024
library_path rb 1024
align 4
U_END: