diff --git a/kernel/trunk/blkdev/rdsave.inc b/kernel/trunk/blkdev/rdsave.inc index 64314ec87c..2e9396e415 100644 --- a/kernel/trunk/blkdev/rdsave.inc +++ b/kernel/trunk/blkdev/rdsave.inc @@ -22,11 +22,11 @@ endg sysfn_saveramdisk: ; 18.6 = SAVE FLOPPY IMAGE (HD version only) call restorefatchain mov eax, saverd_fileinfo - mov [saverd_fileinfo.name], ebx + mov [saverd_fileinfo.name], ecx pushad push eax call file_system_lfn pop eax popad - mov [esp+36], eax + mov [esp+32], eax ret diff --git a/kernel/trunk/core/debug.inc b/kernel/trunk/core/debug.inc index cf053b0e40..86f27a1e7f 100644 --- a/kernel/trunk/core/debug.inc +++ b/kernel/trunk/core/debug.inc @@ -70,10 +70,10 @@ debug_terminate: ; in: ebx=pid call get_debuggee_slot jc debug_detach.ret - mov ebx, eax - shr ebx, 5 + mov ecx, eax + shr ecx, 5 push 2 - pop eax + pop ebx jmp sys_system debug_suspend: diff --git a/kernel/trunk/core/sys32.inc b/kernel/trunk/core/sys32.inc index 681bd4bbed..f7b86ab8d9 100644 --- a/kernel/trunk/core/sys32.inc +++ b/kernel/trunk/core/sys32.inc @@ -760,8 +760,8 @@ term9: jnz @f and dword [ecx], 0 pushad - xchg eax, ebx - mov eax, 2 + xchg eax, ecx + mov ebx, 2 call sys_system popad @@: diff --git a/kernel/trunk/core/syscall.inc b/kernel/trunk/core/syscall.inc index c33d7f6331..e004d74a93 100644 --- a/kernel/trunk/core/syscall.inc +++ b/kernel/trunk/core/syscall.inc @@ -103,25 +103,25 @@ iglobal align 4 servetable: - dd sys_drawwindow ; 0-DrawWindow - dd syscall_setpixel ; 1-SetPixel - dd 0 - dd 0 - dd syscall_writetext ; 4-WriteText - dd delay_hs ; 5-DelayHs - dd syscall_openramdiskfile ; 6-OpenRamdiskFile - dd 0 - dd sys_button ; 8-DefineButton - dd sys_cpuusage ; 9-GetProcessInfo dd 0 dd 0 dd 0 dd 0 dd 0 - dd sys_background ; 15-bgr dd 0 dd 0 - dd sys_system ; 18-System Services + 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 sys_midi ; 20-ResetMidi and OutputMidi dd sys_setup ; 21-SetMidiBase,SetKeymap,SetShiftKeymap,. @@ -183,25 +183,25 @@ iglobal align 4 servetable2: - dd cross_order ; 0-DrawWindow - dd cross_order ; 1-SetPixel + dd sys_drawwindow ; 0-DrawWindow + dd syscall_setpixel ; 1-SetPixel dd sys_getkey ; 2-GetKey dd sys_clock ; 3-GetTime - dd cross_order ; 4-WriteText - dd cross_order ; 5-DelayHs - dd cross_order ; 6-OpenRamdiskFile + dd syscall_writetext ; 4-WriteText + dd delay_hs ; 5-DelayHs + dd syscall_openramdiskfile ; 6-OpenRamdiskFile dd syscall_putimage ; 7-PutImage - dd cross_order ; 8-DefineButton - dd cross_order ; 9-GetProcessInfo + dd sys_button ; 8-DefineButton + dd sys_cpuusage ; 9-GetProcessInfo dd sys_waitforevent ; 10-WaitForEvent dd sys_getevent ; 11-CheckForEvent dd sys_redrawstat ; 12-BeginDraw and EndDraw dd syscall_drawrect ; 13-DrawRect dd syscall_getscreensize ; 14-GetScreenSize - dd cross_order ; 15-bgr + dd sys_background ; 15-bgr dd sys_cachetodiskette ; 16-FlushFloppyCache dd sys_getbutton ; 17-GetButton - dd cross_order ; 18-System Services + dd sys_system ; 18-System Services dd paleholder ; 19-reserved dd cross_order ; 20-ResetMidi and OutputMidi dd cross_order ; 21-SetMidiBase,SetKeymap,SetShiftKeymap,. diff --git a/kernel/trunk/gui/button.inc b/kernel/trunk/gui/button.inc index a6c2ce30f9..0d7e5ff661 100644 --- a/kernel/trunk/gui/button.inc +++ b/kernel/trunk/gui/button.inc @@ -76,34 +76,34 @@ drawbuttonframes: push ecx push edx - shr eax,16 shr ebx,16 - mov edx,[TASK_BASE] + shr ecx,16 + mov eax,[TASK_BASE] - add eax,[edx-twdw + WDATA.box.left] - add ebx,[edx-twdw + WDATA.box.top] - mov cx,ax - mov dx,bx - shl eax,16 - shl ebx,16 - mov ax,cx - mov bx,dx - add ax,word [esp+12] - mov esi,ebx - mov edi,0 - mov ecx,[esp+0] - call incecx - call [draw_line] + add ebx,[eax-twdw + WDATA.box.left] + add ecx,[eax-twdw + WDATA.box.top] + mov eax, ebx + shl eax, 16 + mov ax, bx + add ax, word [esp+8] + mov ebx, ecx + shl ebx, 16 + mov bx, cx + push ebx + xor edi, edi + mov ecx, esi + call incecx + call [draw_line] - movzx edx,word [esp+8] + movzx edx,word [esp+4+4] add ebx,edx shl edx,16 add ebx,edx - mov ecx,[esp+0] + mov ecx,esi call dececx call [draw_line] - mov ebx,esi + pop ebx push edx mov edx,eax shr edx,16 @@ -111,22 +111,19 @@ drawbuttonframes: mov edx,ebx shr edx,16 mov bx,dx - mov dx,[esp+8+4] + mov dx,[esp+4+4] add bx,dx pop edx - mov edi,0 - mov ecx,[esp+0] + mov ecx,esi call incecx call [draw_line] - mov esi,edx - mov dx,[esp+12] + mov dx,[esp+8] add ax,dx shl edx,16 add eax,edx add ebx,1*65536 - mov edx,esi - mov ecx,[esp+0] + mov ecx,esi call dececx call [draw_line] @@ -173,162 +170,129 @@ button_dececx: sys_button: - push edi - mov edi,[current_slot] - rol eax,16 - add ax,word[edi+APPDATA.wnd_clientbox.left] - rol eax,16 - rol ebx,16 - add bx,word[edi+APPDATA.wnd_clientbox.top] - rol ebx,16 - pop edi + mov eax, [current_slot] + rol ebx, 16 + add bx, word [eax+APPDATA.wnd_clientbox.left] + rol ebx, 16 + rol ecx, 16 + add cx, word [eax+APPDATA.wnd_clientbox.top] + rol ecx, 16 .forced: - test ecx,0x80000000 - jnz remove_button + test edx, 0x80000000 + jnz remove_button - push esi - push edi - push eax ; - push ebx ; - push ecx ; - push edx + or bx, bx + jle noaddbutt + or cx, cx + jle noaddbutt - or ax,ax - jle noaddbutt - or bx,bx - jle noaddbutt + test edx, 0x40000000 + jnz button_no_draw - test ecx,0x40000000 - jnz button_no_draw - - pushad ; button body - push ebx - shr eax,16 - shr ebx,16 - mov edx,[TASK_BASE] - mov esi,[edx-twdw + WDATA.box.left] - mov edi,[edx-twdw + WDATA.box.top] - add eax,esi - add ebx,edi - mov cx,ax - mov dx,bx - shl eax,16 - shl ebx,16 - mov ax,cx - mov bx,dx - movzx ecx,word [4+32+esp+12] - add eax,ecx - mov ecx,[4+32+esp+0] - cmp [buttontype],dword 0 - je @f - call incecx2 - @@: - movzx edi,word [esp] - - pop edx - and edx, 0xFFFF + pushad ; button body + movzx edi, cx + shr ebx, 16 + shr ecx, 16 + mov eax, [TASK_BASE] + add ebx, [eax-twdw + WDATA.box.left] + add ecx, [eax-twdw + WDATA.box.top] + mov eax, ebx + shl eax, 16 + mov ax, bx + add ax, word [esp+16] + mov ebx, ecx + shl ebx, 16 + mov bx, cx + mov ecx, esi + cmp [buttontype], 0 + je @f + call incecx2 +@@: + mov edx, edi .newline: - call button_dececx - push edi - xor edi, edi - call [draw_line] - pop edi - add ebx,1*65536+1 ; [ y start | y end ] - dec edx - jnz .newline - popad + call button_dececx + push edi + xor edi, edi + call [draw_line] + pop edi + add ebx, 1*65536+1 ; [ y start | y end ] + dec edx + jnz .newline + popad - call drawbuttonframes + call drawbuttonframes button_no_draw: - and ecx,0xffff + push edi + mov edi, [BTN_ADDR] + movzx eax, word [edi] + cmp eax, max_buttons + jge noaddbutt + inc eax + mov [edi], ax - mov edi,[BTN_ADDR] - movzx eax,word [edi] - cmp eax,max_buttons - jge noaddbutt - inc eax - mov [edi],ax + shl eax, 4 + add edi, eax - shl eax,4 - add eax,edi + mov ax, [CURRENT_TASK] + stosw + mov ax, dx + stosw ; button id number: bits 0-15 + mov eax, ebx + rol eax, 16 + stosd ; x start | x size + mov eax, ecx + rol eax, 16 + stosd ; y start | y size + mov eax, edx + shr eax, 16 + stosw ; button id number: bits 16-31 - mov bx,[CURRENT_TASK] - mov [eax],bx - - add eax,2 ; save button id number - mov ebx,[esp+4] - mov [eax],bx ; bits 0-15 - shr ebx,16 - mov [eax-2+0xc],bx; bits 16-31 - add eax,2 ; x start - mov bx,[esp+12+2] - mov [eax],bx - add eax,2 ; x size - mov bx,[esp+12+0] - mov [eax],bx - add eax,2 ; y start - mov bx,[esp+8+2] - mov [eax],bx - add eax,2 ; y size - mov bx,[esp+8+0] - mov [eax],bx + pop edi noaddbutt: - pop edx - pop ecx - pop ebx - pop eax - pop edi - pop esi - - ret + ret remove_button: - and ecx,0x7fffffff + and edx, 0x7fffffff rnewba2: - mov edi,[BTN_ADDR] - mov eax,edi - movzx ebx,word [edi] - inc bx + mov edi, [BTN_ADDR] + mov eax, edi + movzx ebx, word [edi] + inc ebx rnewba: - dec bx - jz rnmba + dec ebx + jz rnmba - add eax,0x10 + add eax, 0x10 - mov dx,[CURRENT_TASK] - cmp dx,[eax] - jnz rnewba + mov cx, [CURRENT_TASK] + cmp cx, [eax] + jnz rnewba + cmp dx, [eax+2] + jnz rnewba - cmp cx,[eax+2] - jnz rnewba - - pushad - mov ecx,ebx - inc ecx - shl ecx,4 - mov ebx,eax - add eax,0x10 - call memmove - dec dword [edi] - popad - - jmp rnewba2 + lea ecx, [ebx+1] + shl ecx, 4 + mov ebx, eax + add eax, 0x10 + call memmove + dec dword [edi] + jmp rnewba2 rnmba: - ret + ret find_pressed_button_frames: @@ -618,11 +582,11 @@ checkbuttons: mov [DONT_DRAW_MOUSE],byte 0 ; draw mouse ;..................................... start 5/5 : modified by vhanla ............................. ; check coordinates - jmp @f +iglobal mx dw 0x0 ; keeps the x mouse's position when it was clicked my dw 0x0 ; keeps the y mouse's position when it was clicked bPressedMouseXY_B db 0x0 - @@: +endg pusha ; mouse x >= button x ? diff --git a/kernel/trunk/gui/font.inc b/kernel/trunk/gui/font.inc index 1661d7adbe..b3495f14dd 100644 --- a/kernel/trunk/gui/font.inc +++ b/kernel/trunk/gui/font.inc @@ -10,41 +10,39 @@ $Revision$ align 4 dtext: ; Text String Output (rw by Johnny_B[john@kolibrios.org]) - ; eax x & y - ; ebx style ( 0xX0000000 ) & color ( 0x00RRGGBB ) + ; ebx x & y + ; ecx style ( 0xX0000000 ) & color ( 0x00RRGGBB ) ; X = ABnnb: ; nn = font - ; A = 0 <=> output edx characters; otherwise output ASCIIZ string - ; B = 1 <=> fill background with color esi - ; ecx start of text + ; A = 0 <=> output esi characters; otherwise output ASCIIZ string + ; B = 1 <=> fill background with color eax + ; edx start of text ; edi 1 force pushad call [disable_mouse] - mov ebp, ecx ; ebp=pointer to text - mov ecx, ebx ; ecx=color - movsx ebx, ax ; ebx=y - sar eax, 16 ; eax=x - cmp edx, 255 + movsx eax, bx ; eax=y + sar ebx, 16 ; ebx=x + xchg eax, ebx ; eax=x, ebx=y + cmp esi, 255 jb .loop - mov edx, 255 + mov esi, 255 .loop: test ecx, ecx js .test_asciiz - dec edx + dec esi js .end jmp @f .test_asciiz: - cmp byte [ebp], 0 + cmp byte [edx], 0 jz .end @@: - push edx - movzx edx, byte [ebp] - inc ebp + inc edx + pushad + movzx edx, byte [edx-1] test ecx, 0x10000000 jnz .font2 - pushad mov esi, 9 lea ebp, [FONT_I+8*edx+edx] .symloop1: @@ -60,7 +58,7 @@ dtext: ; Text String Output (rw by Johnny_B[john@kolibrios.org]) test ecx, 0x40000000 jz .pixloop1cont push ecx - mov ecx, [esp+4+4] + mov ecx, [esp+4+20h+1Ch] call [putpixel] pop ecx .pixloop1cont: @@ -74,10 +72,8 @@ dtext: ; Text String Output (rw by Johnny_B[john@kolibrios.org]) jnz .symloop1 popad add eax, 6 - pop edx jmp .loop .font2: - pushad add edx, edx lea ebp, [FONT_II+4*edx+edx+1] push 9 @@ -94,7 +90,7 @@ dtext: ; Text String Output (rw by Johnny_B[john@kolibrios.org]) test ecx, 0x40000000 jz .pixloop2cont push ecx - mov ecx, [esp+12+4] + mov ecx, [esp+12+20h+1Ch] call [putpixel] pop ecx .pixloop2cont: @@ -110,7 +106,6 @@ dtext: ; Text String Output (rw by Johnny_B[john@kolibrios.org]) pop eax add dword [esp+28], esi popad - pop edx jmp .loop .end: popad diff --git a/kernel/trunk/gui/window.inc b/kernel/trunk/gui/window.inc index 4dbc61bbc3..f9dac16c21 100644 --- a/kernel/trunk/gui/window.inc +++ b/kernel/trunk/gui/window.inc @@ -1333,7 +1333,7 @@ checkwindows: mov [WIN_TEMP_XY], esi pushad ; wait for putimages to finish -; mov eax,5 +; mov ebx,5 ; call delay_hs mov eax,[edi + WDATA.box.left] mov [npx],eax diff --git a/kernel/trunk/kernel.asm b/kernel/trunk/kernel.asm index b1fda24726..62896d0505 100644 --- a/kernel/trunk/kernel.asm +++ b/kernel/trunk/kernel.asm @@ -892,11 +892,11 @@ align 4 boot_log: pushad - mov eax,10*65536 - mov ax,word [boot_y] + mov ebx,10*65536 + mov bx,word [boot_y] add [boot_y],dword 10 - mov ebx,0x80ffffff ; ASCIIZ string with white color - mov ecx,esi + mov ecx,0x80ffffff ; ASCIIZ string with white color + mov edx,esi mov edi,1 call dtext @@ -1444,27 +1444,26 @@ division_64_bits: ret draw_num_text: - mov edx,eax - mov ecx,64+4 - sub ecx,eax - add ecx,esp - mov eax,[esp+64+32-8+4] - push edx ; add window start x & y - mov edx,[TASK_BASE] + mov esi,eax + mov edx,64+4 + sub edx,eax + add edx,esp + mov ebx,[esp+64+32-8+4] +; add window start x & y + mov ecx,[TASK_BASE] mov edi,[CURRENT_TASK] shl edi,8 - mov ebx,[edx-twdw+WDATA.box.left] - add ebx,[edi+SLOT_BASE+APPDATA.wnd_clientbox.left] - shl ebx,16 - add ebx,[edx-twdw+WDATA.box.top] - add ebx,[edi+SLOT_BASE+APPDATA.wnd_clientbox.top] - add eax,ebx - pop edx - mov ebx,[esp+64+32-12+4] - and ebx, not 0x80000000 ; force counted string - mov esi, [esp+64+4+4] + mov eax,[ecx-twdw+WDATA.box.left] + add eax,[edi+SLOT_BASE+APPDATA.wnd_clientbox.left] + shl eax,16 + add eax,[ecx-twdw+WDATA.box.top] + add eax,[edi+SLOT_BASE+APPDATA.wnd_clientbox.top] + add ebx,eax + mov ecx,[esp+64+32-12+4] + and ecx, not 0x80000000 ; force counted string + mov eax, [esp+64+8] ; background color (if given) mov edi, [esp+64+4] jmp dtext @@ -2012,7 +2011,7 @@ sys_end: mov [eax+TASKDATA.state], 3 ; terminate this program waitterm: ; wait here for termination - mov eax,5 + mov ebx,100 call delay_hs jmp waitterm @@ -2046,10 +2045,10 @@ sysfn_num = ($ - sys_system_table)/4 endg sys_system: - dec eax - cmp eax, sysfn_num + dec ebx + cmp ebx, sysfn_num jae @f - jmp dword [sys_system_table + eax*4] + jmp dword [sys_system_table + ebx*4] @@: ret @@ -2061,27 +2060,27 @@ sysfn_shutdown: ; 18.1 = BOOT add eax,2 mov [shutdown_processes],eax mov [SYS_SHUTDOWN],al - and dword [esp+36], 0 + and dword [esp+32], 0 ret uglobal shutdown_processes: dd 0x0 endg sysfn_terminate: ; 18.2 = TERMINATE - cmp ebx,2 + cmp ecx,2 jb noprocessterminate mov edx,[TASK_COUNT] - cmp ebx,edx + cmp ecx,edx ja noprocessterminate mov eax,[TASK_COUNT] - shl ebx,5 - mov edx,[ebx+CURRENT_TASK+TASKDATA.pid] - add ebx,CURRENT_TASK+TASKDATA.state - cmp byte [ebx], 9 + shl ecx,5 + mov edx,[ecx+CURRENT_TASK+TASKDATA.pid] + add ecx,CURRENT_TASK+TASKDATA.state + cmp byte [ecx], 9 jz noprocessterminate ;call MEM_Heap_Lock ;guarantee that process isn't working with heap - mov [ebx],byte 3 ; clear possible i40's + mov [ecx],byte 3 ; clear possible i40's ;call MEM_Heap_UnLock cmp edx,[application_table_status] ; clear app table stat @@ -2102,38 +2101,38 @@ sysfn_terminate2: jmp .table_status .stf: call set_application_table_status - mov eax,ebx + mov eax,ecx call pid_to_slot test eax,eax jz .not_found - mov ebx,eax + mov ecx,eax cli call sysfn_terminate mov [application_table_status],0 sti - and dword [esp+36],0 + and dword [esp+32],0 ret .not_found: mov [application_table_status],0 - or dword [esp+36],-1 + or dword [esp+32],-1 ret sysfn_activate: ; 18.3 = ACTIVATE WINDOW - cmp ebx,2 + cmp ecx,2 jb .nowindowactivate - cmp ebx,[TASK_COUNT] + cmp ecx,[TASK_COUNT] ja .nowindowactivate mov [window_minimize], 2 ; restore window if minimized - movzx esi, word [WIN_STACK + ebx*2] + movzx esi, word [WIN_STACK + ecx*2] cmp esi, [TASK_COUNT] je .nowindowactivate ; already active - mov edi, ebx + mov edi, ecx shl edi, 5 add edi, window_data - movzx esi, word [WIN_STACK + ebx * 2] + movzx esi, word [WIN_STACK + ecx * 2] lea esi, [WIN_POS + esi * 2] call waredraw .nowindowactivate: @@ -2141,12 +2140,12 @@ sysfn_activate: ; 18.3 = ACTIVATE WINDOW sysfn_getidletime: ; 18.4 = GET IDLETIME mov eax,[idleusesec] - mov [esp+36], eax + mov [esp+32], eax ret sysfn_getcpuclock: ; 18.5 = GET TSC/SEC mov eax,[CPU_FREQ] - mov [esp+36], eax + mov [esp+32], eax ret ; SAVE ramdisk to /hd/1/menuet.img @@ -2157,28 +2156,28 @@ sysfn_getcpuclock: ; 18.5 = GET TSC/SEC sysfn_getactive: ; 18.7 = get active window mov eax, [TASK_COUNT] movzx eax, word [WIN_POS + eax*2] - mov [esp+36],eax + mov [esp+32],eax ret sysfn_sound_flag: ; 18.8 = get/set sound_flag - cmp ebx,1 + cmp ecx,1 jne nogetsoundflag movzx eax,byte [sound_flag] ; get sound_flag - mov [esp+36],eax + mov [esp+32],eax ret nogetsoundflag: - cmp ebx,2 + cmp ecx,2 jnz nosoundflag xor byte [sound_flag], 1 nosoundflag: ret sysfn_shutdown_param: ; 18.9 = system shutdown with param - cmp ebx,1 + cmp ecx,1 jl exit_for_anyone - cmp ebx,4 + cmp ecx,4 jg exit_for_anyone - mov [BOOT_VAR+0x9030],bl + mov [BOOT_VAR+0x9030],cl jmp for_shutdown_parameter sysfn_minimize: ; 18.10 = minimize window @@ -2187,7 +2186,7 @@ sysfn_minimize: ; 18.10 = minimize window ret sysfn_getdiskinfo: ; 18.11 = get disk info table - cmp ebx,1 + cmp ecx,1 jnz full_table small_table: call for_all_tables @@ -2196,13 +2195,11 @@ sysfn_getdiskinfo: ; 18.11 = get disk info table rep movsb ret for_all_tables: - mov edi,[TASK_BASE] - mov edi,[edi+TASKDATA.mem_start] - add edi,ecx + mov edi,edx mov esi,DRIVE_DATA ret full_table: - cmp ebx,2 + cmp ecx,2 jnz exit_for_anyone call for_all_tables mov ecx,16384 @@ -2211,16 +2208,13 @@ sysfn_getdiskinfo: ; 18.11 = get disk info table ret sysfn_lastkey: ; 18.12 = return 0 (backward compatibility) - and dword [esp+36], 0 + and dword [esp+32], 0 ret sysfn_getversion: ; 18.13 = get kernel ID and version - mov edi,[TASK_BASE] - mov edi,[edi+TASKDATA.mem_start] - add edi,ebx + mov edi,ebx mov esi,version_inf mov ecx,version_end-version_inf - cld rep movsb ret @@ -2232,49 +2226,49 @@ sysfn_waitretrace: ; 18.14 = sys wait retrace in al,dx test al,1000b jz WaitRetrace_loop - mov [esp+36],dword 0 + and [esp+32],dword 0 ret sysfn_centermouse: ; 18.15 = mouse centered call mouse_centered - mov [esp+36],dword 0 + and [esp+32],dword 0 ret sysfn_mouse_acceleration: ; 18.19 = set/get mouse features - cmp ebx,0 ; get mouse speed factor + cmp ecx,0 ; get mouse speed factor jnz .set_mouse_acceleration xor eax,eax mov ax,[mouse_speed_factor] - mov [esp+36],eax + mov [esp+32],eax ret .set_mouse_acceleration: - cmp ebx,1 ; set mouse speed factor + cmp ecx,1 ; set mouse speed factor jnz .get_mouse_delay - mov [mouse_speed_factor],cx + mov [mouse_speed_factor],dx ret .get_mouse_delay: - cmp ebx,2 ; get mouse delay + cmp ecx,2 ; get mouse delay jnz .set_mouse_delay mov eax,[mouse_delay] - mov [esp+36],eax + mov [esp+32],eax ret .set_mouse_delay: - cmp ebx,3 ; set mouse delay + cmp ecx,3 ; set mouse delay jnz .set_pointer_position - mov [mouse_delay],ecx + mov [mouse_delay],edx ret .set_pointer_position: - cmp ebx,4 ; set mouse pointer position + cmp ecx,4 ; set mouse pointer position jnz .set_mouse_button - mov [MOUSE_Y],cx ;y - ror ecx,16 - mov [MOUSE_X],cx ;x - rol ecx,16 + mov [MOUSE_Y],dx ;y + ror edx,16 + mov [MOUSE_X],dx ;x + rol edx,16 ret .set_mouse_button: - cmp ebx,5 ; set mouse button features + cmp ecx,5 ; set mouse button features jnz .end - mov [BTN_DOWN],cl + mov [BTN_DOWN],dl mov [mouse_active],1 .end: ret @@ -2282,26 +2276,26 @@ sysfn_mouse_acceleration: ; 18.19 = set/get mouse features sysfn_getfreemem: mov eax, [pg_data.pages_free] shl eax, 2 - mov [esp+36],eax + mov [esp+32],eax ret sysfn_getallmem: mov eax,[MEM_AMOUNT] shr eax, 10 - mov [esp+36],eax + mov [esp+32],eax ret ; // Alver, 2007-22-08 // { sysfn_pid_to_slot: - mov eax, ebx + mov eax, ecx call pid_to_slot - mov [esp+36], eax + mov [esp+32], eax ret sysfn_min_rest_window: pushad - mov eax, ecx ; ebx - operating - shr ebx, 1 + mov eax, edx ; ebx - operating + shr ecx, 1 jnc @f call pid_to_slot @@: @@ -2309,10 +2303,8 @@ sysfn_min_rest_window: jz .error cmp eax, 255 ; varify maximal slot number ja .error - xor ecx, ecx - mov cx, [WIN_STACK + eax*2] ; ecx - window number - mov eax, ecx - shr ebx, 1 + movzx eax, word [WIN_STACK + eax*2] + shr ecx, 1 jc .restore ; .minimize: call minimize_window @@ -2322,13 +2314,13 @@ sysfn_min_rest_window: .exit: popad xor eax, eax - mov [esp+36], eax + mov [esp+32], eax ret .error: popad xor eax, eax dec eax - mov [esp+36], eax + mov [esp+32], eax ret ; } \\ Alver, 2007-22-08 \\ @@ -2379,12 +2371,12 @@ endg sys_background: - cmp eax,1 ; BACKGROUND SIZE + cmp ebx,1 ; BACKGROUND SIZE jnz nosb1 - cmp ebx,0 - je sbgrr cmp ecx,0 je sbgrr + cmp edx,0 + je sbgrr @@: mov al, 1 xchg [bgrlock], al @@ -2393,8 +2385,8 @@ sys_background: call change_task jmp @b @@: - mov [BgrDataWidth],ebx - mov [BgrDataHeight],ecx + mov [BgrDataWidth],ecx + mov [BgrDataHeight],edx ; mov [bgrchanged],1 pushad @@ -2429,25 +2421,21 @@ sys_background: nosb1: - cmp eax,2 ; SET PIXEL + cmp ebx,2 ; SET PIXEL jnz nosb2 - mov edx,[mem_BACKGROUND] - cmp edx,ebx - jbe nosb2 - mov edx,[ebx] - and edx,0xFF000000 ;255*256*256*256 - and ecx,0x00FFFFFF ;255*256*256+255*256+255 - add edx,ecx - ;mov [ebx+IMG_BACKGROUND],edx - push eax + cmp ecx,[mem_BACKGROUND] + jae nosb2 mov eax,[img_background] - mov [ebx+eax],edx - pop eax + mov ebx,[eax+ecx] + and ebx,0xFF000000 ;255*256*256*256 + and edx,0x00FFFFFF ;255*256*256+255*256+255 + add edx,ebx + mov [eax+ecx],edx ; mov [bgrchanged],1 ret nosb2: - cmp eax,3 ; DRAW BACKGROUND + cmp ebx,3 ; DRAW BACKGROUND jnz nosb3 draw_background_temp: ; cmp [bgrchanged],1 ;0 @@ -2460,29 +2448,29 @@ draw_background_temp: ret nosb3: - cmp eax,4 ; TILED / STRETCHED + cmp ebx,4 ; TILED / STRETCHED jnz nosb4 - cmp ebx,[BgrDrawMode] + cmp ecx,[BgrDrawMode] je nosb41 - mov [BgrDrawMode],ebx + mov [BgrDrawMode],ecx ; mov [bgrchanged],1 nosb41: ret nosb4: - cmp eax,5 ; BLOCK MOVE TO BGR + cmp ebx,5 ; BLOCK MOVE TO BGR jnz nosb5 ; bughere - mov eax, ebx - mov ebx, ecx + mov eax, ecx + mov ebx, edx add ebx, [img_background] ;IMG_BACKGROUND - mov ecx, edx + mov ecx, esi call memmove .fin: ret nosb5: - cmp eax, 6 + cmp ebx, 6 jnz nosb6 @@: mov al, 1 @@ -2495,7 +2483,7 @@ draw_background_temp: mov eax, [CURRENT_TASK] mov [bgrlockpid], eax stdcall user_alloc, [mem_BACKGROUND] - mov [esp+36], eax + mov [esp+32], eax test eax, eax jz .nomem mov ebx, eax @@ -2526,14 +2514,15 @@ draw_background_temp: and [bgrlockpid], 0 mov [bgrlock], 0 nosb6: - cmp eax, 7 + cmp ebx, 7 jnz nosb7 cmp [bgrlock], 0 jz .err mov eax, [CURRENT_TASK] cmp [bgrlockpid], eax jnz .err - mov eax, ebx + mov eax, ecx + mov ebx, ecx shr eax, 12 mov ecx, [page_tabs+(eax-1)*4] test cl, USED_BLOCK+DONT_FREE_BLOCK @@ -2551,12 +2540,12 @@ nosb6: pop eax and dword [page_tabs+(eax-1)*4], not DONT_FREE_BLOCK stdcall user_free, ebx - mov [esp+36], eax + mov [esp+32], eax and [bgrlockpid], 0 mov [bgrlock], 0 ret .err: - and dword [esp+36], 0 + and dword [esp+32], 0 ret nosb7: @@ -2679,112 +2668,84 @@ sys_cpuusage: ; +30 dword PID , process idenfification number ; - mov edi,[TASK_BASE] ; eax = return area - add eax,[edi + TASKDATA.mem_start] + cmp ecx,-1 ; who am I ? + jne .no_who_am_i + mov ecx,[CURRENT_TASK] + .no_who_am_i: + cmp ecx, max_processes + ja .nofillbuf - cmp ebx,-1 ; who am I ? - jne no_who_am_i - mov ebx,[CURRENT_TASK] - no_who_am_i: +; +4: word: position of the window of thread in the window stack + mov ax, [WIN_STACK + ecx * 2] + mov [ebx+4], ax +; +6: word: number of the thread slot, which window has in the window stack +; position ecx (has no relation to the specific thread) + mov ax, [WIN_POS + ecx * 2] + mov [ebx+6], ax - push eax ; return area - push ebx ; process number + shl ecx, 5 - push ebx - push ebx - push eax +; +0: dword: memory usage + mov eax, [ecx+CURRENT_TASK+TASKDATA.cpu_usage] + mov [ebx], eax +; +10: 11 bytes: name of the process + push ecx + lea eax, [ecx*8+SLOT_BASE+APPDATA.app_name] + add ebx, 10 + mov ecx, 11 + call memmove + pop ecx - ; return memory usage +; +22: address of the process in memory +; +26: size of used memory - 1 + push edi + lea edi, [ebx+12] + xor eax, eax + mov edx, 0x100000*16 + cmp ecx, 1 shl 5 + je .os_mem + mov edx, [SLOT_BASE+ecx*8+APPDATA.mem_size] + mov eax, std_application_base_address +.os_mem: + stosd + lea eax, [edx-1] + stosd - xor edx,edx - mov eax,0x20 - mul ebx - add eax,CURRENT_TASK+TASKDATA.cpu_usage - mov ebx,eax - pop eax - mov ecx,[ebx] - mov [eax],ecx - pop ebx - mov cx, [WIN_STACK + ebx * 2] - mov [eax+4],cx - mov cx, [WIN_POS + ebx * 2] - mov [eax+6],cx - push eax - mov eax,ebx - shl eax,8 - add eax,SLOT_BASE+APPDATA.app_name - pop ebx - add ebx,10 - mov ecx,11 - call memmove - - ; memory usage - - xor eax,eax - mov edx,0x100000*16 - pop ecx ; get gdt of tss - cmp ecx,1 - je os_mem - shl ecx,8 - mov edx,[SLOT_BASE+ecx+APPDATA.mem_size] ;0x8c - mov eax,std_application_base_address - ; eax run base -> edx used memory - os_mem: - dec edx - mov [ebx+12],eax - mov [ebx+16],edx - - ; PID (+30) - - mov eax,[esp] - shl eax,5 - add eax,CURRENT_TASK+TASKDATA.pid - mov eax,[eax] - mov [ebx+20],eax +; +30: PID/TID + mov eax, [ecx+CURRENT_TASK+TASKDATA.pid] + stosd ; window position and size - - mov esi,[esp] - shl esi,5 - add esi,window_data + WDATA.box - mov edi,[esp+4] - add edi,34 - mov ecx,4 - cld - rep movsd + push esi + lea esi, [ecx + window_data + WDATA.box] + movsd + movsd + movsd + movsd ; Process state (+50) - - mov eax,[esp] - shl eax,5 - add eax,CURRENT_TASK+TASKDATA.state - mov eax,[eax] - mov [ebx+40],ax + mov eax, dword [ecx+CURRENT_TASK+TASKDATA.state] + stosd ; Window client area box - - mov esi,[esp] - shl esi,8 - add esi,SLOT_BASE+APPDATA.wnd_clientbox - lea edi,[ebx+44] - mov ecx,4 - rep movsd + lea esi, [ecx*8 + SLOT_BASE + APPDATA.wnd_clientbox] + movsd + movsd + movsd + movsd ; Window state + mov al, [ecx+window_data+WDATA.fl_wstate] + stosb - mov esi,[esp] - shl esi,5 - add esi,window_data + WDATA.box - mov al,[esi+WDATA.fl_wstate] - mov [edi],al - - pop ebx - pop eax + pop esi + pop edi +.nofillbuf: ; return number of processes mov eax,[TASK_COUNT] - mov [esp+36],eax + mov [esp+32],eax ret align 4 @@ -2920,11 +2881,11 @@ sys_redrawstat: sys_drawwindow: - mov edi,ecx - shr edi,16+8 - and edi,15 + mov eax,edx + shr eax,16+8 + and eax,15 - cmp edi,0 ; type I - original style +; cmp eax,0 ; type I - original style jne nosyswI inc [mouse_pause] call [disable_mouse] @@ -2937,7 +2898,7 @@ sys_drawwindow: jmp draw_window_caption.2 nosyswI: - cmp edi,1 ; type II - only reserve area, no draw + cmp al,1 ; type II - only reserve area, no draw jne nosyswII inc [mouse_pause] call [disable_mouse] @@ -2949,7 +2910,7 @@ sys_drawwindow: ret nosyswII: - cmp edi,2 ; type III - new style + cmp al,2 ; type III - new style jne nosyswIII inc [mouse_pause] call [disable_mouse] @@ -2962,9 +2923,9 @@ sys_drawwindow: jmp draw_window_caption.2 nosyswIII: - cmp edi,3 ; type IV - skinned window + cmp al,3 ; type IV - skinned window je draw_skin_window - cmp edi,4 ; type V - skinned window not sized! {not_sized_skin_window} + cmp al,4 ; type V - skinned window not sized! {not_sized_skin_window} jne nosyswV draw_skin_window: @@ -2972,13 +2933,12 @@ sys_drawwindow: call [disable_mouse] call sys_set_window call [disable_mouse] - push 0 - mov edi, [TASK_COUNT] - movzx edi, word [WIN_POS + edi*2] - cmp edi, [CURRENT_TASK] - jne @f - inc dword [esp] - @@: + mov eax, [TASK_COUNT] + movzx eax, word [WIN_POS + eax*2] + cmp eax, [CURRENT_TASK] + setz al + movzx eax, al + push eax call drawwindow_IV ;dec [mouse_pause] ;call [draw_pointer] @@ -3036,10 +2996,9 @@ draw_window_caption: shl edi,5 test [edi+window_data+WDATA.fl_wstyle],WSTYLE_HASCAPTION jz @f - mov ecx,[edi*8+SLOT_BASE+APPDATA.wnd_caption] - or ecx,ecx + mov edx,[edi*8+SLOT_BASE+APPDATA.wnd_caption] + or edx,edx jz @f - add ecx,[edi+CURRENT_TASK+TASKDATA.mem_start] movzx eax,[edi+window_data+WDATA.fl_wstyle] and al,0x0F @@ -3055,22 +3014,24 @@ draw_window_caption: movzx eax,word[edi+window_data+WDATA.box.width] sub ax,[_skinmargins.left] sub ax,[_skinmargins.right] + push edx cwde cdq mov ebx,6 idiv ebx + pop edx or eax,eax js @f - mov edx,eax - mov eax,dword[_skinmargins.left-2] - mov ax,word[_skinh] - sub ax,[_skinmargins.bottom] - sub ax,[_skinmargins.top] - sar ax,1 - adc ax,0 - add ax,[_skinmargins.top] - add ax,-3 - add eax,ebp + mov esi,eax + mov ebx,dword[_skinmargins.left-2] + mov bx,word[_skinh] + sub bx,[_skinmargins.bottom] + sub bx,[_skinmargins.top] + sar bx,1 + adc bx,0 + add bx,[_skinmargins.top] + add bx,-3 + add ebx,ebp jmp .dodraw .not_skinned: @@ -3081,18 +3042,20 @@ draw_window_caption: mov bp,word[edi+window_data+WDATA.box.top] movzx eax,word[edi+window_data+WDATA.box.width] sub eax,16 + push edx cwde cdq mov ebx,6 idiv ebx + pop edx or eax,eax js @f - mov edx,eax - mov eax,0x00080007 - add eax,ebp + mov esi,eax + mov ebx,0x00080007 + add ebx,ebp .dodraw: - mov ebx,[common_colours+16];0x00FFFFFF - or ebx, 0x80000000 + mov ecx,[common_colours+16];0x00FFFFFF + or ecx, 0x80000000 xor edi,edi call dtext @@ -3161,31 +3124,31 @@ set_window_clientbox: sys_set_window: - mov edi,[CURRENT_TASK] - shl edi,5 - add edi,window_data + mov eax,[CURRENT_TASK] + shl eax,5 + add eax,window_data ; colors - mov [edi+WDATA.cl_workarea],ecx - mov [edi+WDATA.cl_titlebar],edx - mov [edi+WDATA.cl_frames],esi + mov [eax+WDATA.cl_workarea],edx + mov [eax+WDATA.cl_titlebar],esi + mov [eax+WDATA.cl_frames],edi + + mov edi, eax ; check flag (?) test [edi+WDATA.fl_wdrawn],1 jnz newd - push eax mov eax,[timer_ticks] ;[0xfdf0] add eax,100 mov [new_window_starting],eax - pop eax - mov word[edi+WDATA.box.width],ax - mov word[edi+WDATA.box.height],bx - sar eax,16 + mov word[edi+WDATA.box.width],bx + mov word[edi+WDATA.box.height],cx sar ebx,16 - mov word[edi+WDATA.box.left],ax - mov word[edi+WDATA.box.top],bx + sar ecx,16 + mov word[edi+WDATA.box.left],bx + mov word[edi+WDATA.box.top],cx call check_window_position @@ -3194,7 +3157,8 @@ sys_set_window: push ecx esi edi ; save for window fullscreen/resize ;mov esi,edi - mov cl,[edi+WDATA.fl_wstyle] + mov cl, [edi+WDATA.fl_wstyle] + mov eax, [edi+WDATA.cl_frames] sub edi,window_data shl edi,3 @@ -3209,7 +3173,7 @@ sys_set_window: jmp @f set_APPDATA_wnd_caption: - mov [edi+APPDATA.wnd_caption],esi + mov [edi+APPDATA.wnd_caption],eax @@: mov esi,[esp+0] add edi, APPDATA.saved_box @@ -3224,8 +3188,7 @@ sys_set_window: lea esi, [WIN_POS+esi*2] call waredraw - push eax ebx ecx edx -;;; mov eax, 1 +;;; mov ebx, 1 ;;; call delay_hs mov eax, [edi+WDATA.box.left] mov ebx, [edi+WDATA.box.top] @@ -3234,7 +3197,6 @@ sys_set_window: add ecx, eax add edx, ebx call calculatescreen - pop edx ecx ebx eax mov [KEY_COUNT],byte 0 ; empty keyboard buffer mov [BTN_COUNT],byte 0 ; empty button buffer @@ -3635,7 +3597,7 @@ redrawscreen: pushad push eax -;;; mov eax,2 +;;; mov ebx,2 ;;; call delay_hs ;mov ecx,0 ; redraw flags for apps @@ -3795,17 +3757,17 @@ set_app_param: delay_hs: ; delay in 1/100 secs - push eax +; ebx = delay time push ecx push edx mov edx,[timer_ticks] - add edx,eax newtic: mov ecx,[timer_ticks] - cmp edx,ecx - jbe zerodelay + sub ecx,edx + cmp ecx,ebx + jae zerodelay call change_task @@ -3814,7 +3776,6 @@ delay_hs: ; delay in 1/100 secs zerodelay: pop edx pop ecx - pop eax ret @@ -4855,33 +4816,35 @@ align 4 ; system functions syscall_setpixel: ; SetPixel - - mov edx,[TASK_BASE] - add eax,[edx-twdw+WDATA.box.left] - add ebx,[edx-twdw+WDATA.box.top] - mov edi,[current_slot] - add eax,[edi+APPDATA.wnd_clientbox.left] - add ebx,[edi+APPDATA.wnd_clientbox.top] - xor edi,edi ; no force -; mov edi,1 - call [disable_mouse] - jmp [putpixel] + mov eax, ebx + mov ebx, ecx + mov ecx, edx + mov edx, [TASK_BASE] + add eax, [edx-twdw+WDATA.box.left] + add ebx, [edx-twdw+WDATA.box.top] + mov edi, [current_slot] + add eax, [edi+APPDATA.wnd_clientbox.left] + add ebx, [edi+APPDATA.wnd_clientbox.top] + xor edi, edi ; no force +; mov edi, 1 + call [disable_mouse] + jmp [putpixel] align 4 syscall_writetext: ; WriteText - mov edi,[TASK_BASE] - mov ebp,[edi-twdw+WDATA.box.left] + mov eax,[TASK_BASE] + mov ebp,[eax-twdw+WDATA.box.left] push esi mov esi,[current_slot] add ebp,[esi+APPDATA.wnd_clientbox.left] shl ebp,16 - add ebp,[edi-twdw+WDATA.box.top] + add ebp,[eax-twdw+WDATA.box.top] add bp,word[esi+APPDATA.wnd_clientbox.top] pop esi - add ecx,[edi+TASKDATA.mem_start] - add eax,ebp + add ebx,ebp + mov eax,edi xor edi,edi jmp dtext @@ -4889,15 +4852,14 @@ align 4 syscall_openramdiskfile: ; OpenRamdiskFile - - mov edi,[TASK_BASE] - add edi,TASKDATA.mem_start - add eax,[edi] - add edx,[edi] - mov esi,12 - call fileread - mov [esp+36],ebx - ret + mov eax, ebx + mov ebx, ecx + mov ecx, edx + mov edx, esi + mov esi, 12 + call fileread + mov [esp+32], eax + ret align 4 diff --git a/kernel/trunk/network/eth_drv/drivers/pcnet32.inc b/kernel/trunk/network/eth_drv/drivers/pcnet32.inc index 4bc7d684da..eda682020f 100644 --- a/kernel/trunk/network/eth_drv/drivers/pcnet32.inc +++ b/kernel/trunk/network/eth_drv/drivers/pcnet32.inc @@ -32,10 +32,10 @@ $Revision$ ; push esi ; mov esi,.__xyz1 ; call sys_msg_board_str -; push eax -; mov eax,1 +; push ebx +; mov ebx,1 ; call delay_hs -; pop eax +; pop ebx ; jmp .__xyz2 ;.__xyz1: ; db X