Subversion Repositories Kolibri OS

Compare Revisions

Regard whitespace Rev 1204 → Rev 1205

/programs/system/cpu/trunk/cpu.asm
3,6 → 3,7
;
; VTurjanmaa
; additions by M.Lisovin lisovin@26.ru
; integrated with load_lib.obj by <Lrz>
; Compile with FASM for Menuet
;
 
9,6 → 10,8
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
19,9 → 22,17
 
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
36,7 → 47,7
align 4
still:
mov eax,23 ; wait here for event
mov ebx,200 ; 2 sec.
mov ebx,100 ; 2 sec.
mcall
 
dec eax ; redraw request ?
45,6 → 56,10
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
55,6 → 70,7
key: ; key
mov eax,2
mcall
 
cmp ah,184 ; PageUp
je pgdn
cmp ah,183
61,6 → 77,10
je pgup ; PageDown
cmp ah,27
je close ; Esc
 
push dword edit1
call [edit_box_key]
 
jmp still_end
align 4
button:
101,8 → 121,8
dec eax
jz pgup
dec eax
jz read_string
dec eax
; jz read_string
; dec eax
jz program_start
dec eax
jz reboot
158,7 → 178,7
.nodelete:
;create terminate process button
mov eax,8
mov ebx,15*65536+100
mov ebx,(15-offset_x)*65536+100-offset_y
mov ecx,[curposy]
shl ecx,16
mov cx,10
175,7 → 195,7
;draw background for proccess information
mov eax,13
mov ebx,115*65536+395
mov ebx,(115-offset_x)*65536+395
;ecx was already set
mov edx,0x88ff88
;contrast
222,7 → 242,7
jmp .find_loop
align 4
.no_processes:
mov edi,-1
or edi,-1
ret
align 4
.process_found:
275,7 → 295,7
;ecx haven't changed since .process_found
; mov ecx,edi
mov edx,[curposy]
add edx,20*65536+1
add edx,(20-offset_x)*65536+1
mov esi,[tcolor]
mcall
282,7 → 302,7
;show process name
mov eax,4
mov ebx,[curposy]
add ebx,50*65536+1
add ebx,(50-offset_x)*65536+1
mov ecx,[tcolor]
mov edx,process_info_buffer.process_name
mov esi,11
293,7 → 313,7
mov ebx,8*65536+1*256
mov ecx,[process_info_buffer.PID]
mov edx,[curposy]
add edx,130*65536+1
add edx,(130-offset_x)*65536+1
mov esi,[tcolor]
mcall
338,19 → 358,18
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
357,95 → 376,97
f11:
;full update
push edi
mov ebp,1
xor ebp,ebp
inc ebp
; 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
500,23 → 521,27
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,0x14ddffdd ;ffffff ; color of work area RRGGBB,8->color
mov edx,0x34ddffdd ;ffffff ; color of work area RRGGBB,8->color
mov edi,title ; WINDOW CAPTION;
mcall
 
mov eax,4 ; function 4 : write text to window
mov ebx,22*65536+35 ; draw info text with function 4
add eax,4 ; function 4 : write text to window
mov ebx,(22-offset_x)*65536+35-offset_y ; 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
mov dword [curposy],54-offset_y
align 4
.loop_draw:
call draw_next_process
531,24 → 556,24
mov esi,0xaabbcc
; previous page button
mov ebx,30*65536+96
mov ecx,380*65536+10
mov ebx,(30-offset_x)*65536+96
mov ecx,(380-offset_y)*65536+10
mov edx,51
mcall
; next page button
mov ebx,130*65536+96
mov ebx,(130-offset_x)*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*65536+50
mov ebx,(456-offset_x)*65536+50
inc edx
mcall
 
561,7 → 586,7
;"PREV PAGE", "NEXT PAGE" and "REBOOT" labels
mov eax,4
mov ebx,50*65536+382
mov ebx,(50-offset_x)*65536+382-offset_y
xor ecx,ecx
mov edx,tbts
mov esi,tbte-tbts
568,16 → 593,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*65536+402
; mov eax,4
mov ebx,(475-offset_x)*65536+402-offset_y
xor ecx,ecx
mov edx,tbts_3
mov esi,tbte_2-tbts_3
584,7 → 609,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
595,14 → 620,52
 
 
; 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
619,7 → 682,7
 
tbts: db 'SEITE ZURUECK SEITE VOR REBOOT SYSTEM'
tbte:
tbts_2 db '>'
;tbts_2 db '>'
tbts_3 db 'START'
tbte_2:
 
633,7 → 696,7
 
tbts: db 'EELMINE LEHT JÄRGMINE LEHT REBOODI SÜSTEEM'
tbte:
tbts_2 db '>'
;tbts_2 db '>'
tbts_3 db 'START'
tbte_2:
 
647,7 → 710,7
 
tbts: db 'PREV PAGE NEXT PAGE REBOOT SYSTEM'
tbte:
tbts_2 db '>'
;tbts_2 db '>'
tbts_3 db 'RUN'
tbte_2:
 
654,9 → 717,13
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
 
667,4 → 734,7
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: