From e779187e24891ca3b0d9fa19bce58bda91376188 Mon Sep 17 00:00:00 2001 From: "Sergey Semyonov (Serge)" Date: Fri, 23 Mar 2007 03:11:34 +0000 Subject: [PATCH] update read_file git-svn-id: svn://kolibrios.org@429 a494cfbc-eb01-0410-851d-a64ba20cac60 --- kernel/trunk/core/dll.inc | 11 +- kernel/trunk/core/sys32.inc | 8 +- kernel/trunk/kernel.asm | 2992 ++++++++++++++++++----------------- 3 files changed, 1508 insertions(+), 1503 deletions(-) diff --git a/kernel/trunk/core/dll.inc b/kernel/trunk/core/dll.inc index c3a1349a39..893ecb21e6 100644 --- a/kernel/trunk/core/dll.inc +++ b/kernel/trunk/core/dll.inc @@ -452,10 +452,13 @@ proc read_file stdcall,file_name:dword, buffer:dword, off:dword,\ mov byte [buff+4], al mov [name], ebx - mov eax, 70 - lea ebx, [cmd] - sub ebx, new_app_base - int 0x40 + pushad + push eax + lea eax, [cmd] + sub eax, new_app_base + call file_system_lfn + pop eax + popad ret endp diff --git a/kernel/trunk/core/sys32.inc b/kernel/trunk/core/sys32.inc index 3d17557486..1a193fb82b 100644 --- a/kernel/trunk/core/sys32.inc +++ b/kernel/trunk/core/sys32.inc @@ -838,12 +838,12 @@ endg build_scheduler: - mov esi,boot_sched_1 - call boot_log +; mov esi,boot_sched_1 +; call boot_log call build_process_gdt_tss_pointer - mov esi,boot_sched_2 - call boot_log +; mov esi,boot_sched_2 +; call boot_log call build_interrupt_table ret diff --git a/kernel/trunk/kernel.asm b/kernel/trunk/kernel.asm index 59ebba8732..ee422c22b2 100644 --- a/kernel/trunk/kernel.asm +++ b/kernel/trunk/kernel.asm @@ -24,11 +24,11 @@ include "const.inc" ;WinMapAddress equ 0x460000 ;display_data = 0x460000 -max_processes equ 255 +max_processes equ 255 ;window_data equ 0x0000 ;tss_data equ 0xD20000 -tss_step equ (128+8192) ; tss & i/o - 65535 ports, * 256=557056*4 +tss_step equ (128+8192) ; tss & i/o - 65535 ports, * 256=557056*4 ;draw_data equ 0xC00000 ;sysint_stack_data equ 0xC03000 @@ -65,33 +65,33 @@ tss_step equ (128+8192) ; tss & i/o - 65535 ports, * 256=557056*4 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; use16 - org 0x0 - jmp start_of_code + org 0x0 + jmp start_of_code ; mike.dld { - org $+0x10000 + org $+0x10000 db 0 dd servetable-0x10000 -draw_line dd __sys_draw_line -disable_mouse dd __sys_disable_mouse -draw_pointer dd __sys_draw_pointer +draw_line dd __sys_draw_line +disable_mouse dd __sys_disable_mouse +draw_pointer dd __sys_draw_pointer ;//mike.dld, 2006-08-02 [ ;drawbar dd __sys_drawbar -drawbar dd __sys_drawbar.forced +drawbar dd __sys_drawbar.forced ;//mike.dld, 2006-08-02 ] -putpixel dd __sys_putpixel +putpixel dd __sys_putpixel ; } mike.dld -version db 'Kolibri OS version 0.6.5.0 ',13,10,13,10,0 - ;dd endofcode-0x10000 +version db 'Kolibri OS version 0.6.5.0 ',13,10,13,10,0 + ;dd endofcode-0x10000 - ;db 'Boot02' + ;db 'Boot02' ;!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! include "boot/preboot.inc" ;!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! -preboot_lfb db 0 -preboot_bootlog db 0 +preboot_lfb db 0 +preboot_bootlog db 0 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; @@ -114,7 +114,7 @@ int_code equ int_code_l-gdts int_data equ int_data_l-gdts tss0sys equ tss0sys_l-gdts graph_data equ 3+graph_data_l-gdts -tss0 equ tss0_l-gdts +tss0 equ tss0_l-gdts app_code equ 3+app_code_l-gdts app_data equ 3+app_data_l-gdts @@ -122,47 +122,47 @@ app_data equ 3+app_data_l-gdts ; CR0 Flags - Protected mode and Paging - mov ecx, CR0_PE + mov ecx, CR0_PE ; Enabling 32 bit protected mode - sidt [cs:old_ints_h-0x10000] + sidt [cs:old_ints_h-0x10000] - cli ; disable all irqs - cld - mov al,255 ; mask all irqs - out 0xa1,al - out 0x21,al - l.5: in al, 0x64 ; Enable A20 - test al, 2 - jnz l.5 - mov al, 0xD1 - out 0x64, al - l.6: in al, 0x64 - test al, 2 - jnz l.6 - mov al, 0xDF - out 0x60, al - l.7: in al, 0x64 - test al, 2 - jnz l.7 - mov al, 0xFF - out 0x64, al - lgdt [cs:gdts-0x10000] ; Load GDT - mov eax, cr0 ; Turn on paging // protected mode - or eax, ecx - and eax, 10011111b *65536*256 + 0xffffff ; caching enabled - mov cr0, eax - jmp $+2 + cli ; disable all irqs + cld + mov al,255 ; mask all irqs + out 0xa1,al + out 0x21,al + l.5: in al, 0x64 ; Enable A20 + test al, 2 + jnz l.5 + mov al, 0xD1 + out 0x64, al + l.6: in al, 0x64 + test al, 2 + jnz l.6 + mov al, 0xDF + out 0x60, al + l.7: in al, 0x64 + test al, 2 + jnz l.7 + mov al, 0xFF + out 0x64, al + lgdt [cs:gdts-0x10000] ; Load GDT + mov eax, cr0 ; Turn on paging // protected mode + or eax, ecx + and eax, 10011111b *65536*256 + 0xffffff ; caching enabled + mov cr0, eax + jmp $+2 org $+0x10000 - mov ax,os_data ; Selector for os - mov ds,ax - mov es,ax - mov fs,ax - mov gs,ax - mov ss,ax - mov esp,0x3ec00 ; Set stack - jmp pword os_code:B32 ; jmp to enable 32 bit mode + mov ax,os_data ; Selector for os + mov ds,ax + mov es,ax + mov fs,ax + mov gs,ax + mov ss,ax + mov esp,0x3ec00 ; Set stack + jmp pword os_code:B32 ; jmp to enable 32 bit mode if gdte >= $ error 'GDT overlaps with used code!' @@ -177,25 +177,25 @@ __DEBUG_LEVEL__ fix 1 include 'fdo.inc' iglobal - boot_memdetect db 'Determining amount of memory',0 - boot_fonts db 'Fonts loaded',0 - boot_tss db 'Setting TSSs',0 - boot_cpuid db 'Reading CPUIDs',0 - boot_devices db 'Detecting devices',0 - boot_timer db 'Setting timer',0 - boot_irqs db 'Reprogramming IRQs',0 - boot_setmouse db 'Setting mouse',0 - boot_windefs db 'Setting window defaults',0 - boot_bgr db 'Calculating background',0 - boot_resirqports db 'Reserving IRQs & ports',0 - boot_setrports db 'Setting addresses for IRQs',0 - boot_setostask db 'Setting OS task',0 - boot_allirqs db 'Unmasking all IRQs',0 - boot_tsc db 'Reading TSC',0 - boot_pal_ega db 'Setting EGA/CGA 320x200 palette',0 - boot_pal_vga db 'Setting VGA 640x480 palette',0 - boot_mtrr db 'Setting MTRR',0 - boot_tasking db 'All set - press ESC to start',0 + boot_memdetect db 'Determining amount of memory',0 + boot_fonts db 'Fonts loaded',0 + boot_tss db 'Setting TSSs',0 + boot_cpuid db 'Reading CPUIDs',0 + boot_devices db 'Detecting devices',0 + boot_timer db 'Setting timer',0 + boot_irqs db 'Reprogramming IRQs',0 + boot_setmouse db 'Setting mouse',0 + boot_windefs db 'Setting window defaults',0 + boot_bgr db 'Calculating background',0 + boot_resirqports db 'Reserving IRQs & ports',0 + boot_setrports db 'Setting addresses for IRQs',0 + boot_setostask db 'Setting OS task',0 + boot_allirqs db 'Unmasking all IRQs',0 + boot_tsc db 'Reading TSC',0 + boot_pal_ega db 'Setting EGA/CGA 320x200 palette',0 + boot_pal_vga db 'Setting VGA 640x480 palette',0 + boot_mtrr db 'Setting MTRR',0 + boot_tasking db 'All set - press ESC to start',0 endg iglobal @@ -203,45 +203,45 @@ iglobal endg boot_log: - pushad + pushad - mov eax,10*65536 - mov ax,word [boot_y] - add [boot_y],dword 10 - mov ebx,0x80ffffff ; ASCIIZ string with white color - mov ecx,esi - mov edi,1 - call dtext + mov eax,10*65536 + mov ax,word [boot_y] + add [boot_y],dword 10 + mov ebx,0x80ffffff ; ASCIIZ string with white color + mov ecx,esi + mov edi,1 + call dtext - mov [novesachecksum],1000 - call checkVga_N13 + mov [novesachecksum],1000 + call checkVga_N13 - cmp [preboot_blogesc],byte 1 - je .bll2 + cmp [preboot_blogesc],byte 1 + je .bll2 - cmp esi,boot_tasking - jne .bll2 - ; begin ealex 04.08.05 + cmp esi,boot_tasking + jne .bll2 + ; begin ealex 04.08.05 ; in al,0x61 ; and al,01111111b ; out 0x61,al - ; end ealex 04.08.05 -.bll1: in al,0x60 ; wait for ESC key press - cmp al,129 - jne .bll1 + ; end ealex 04.08.05 +.bll1: in al,0x60 ; wait for ESC key press + cmp al,129 + jne .bll1 -.bll2: popad +.bll2: popad - ret + ret iglobal firstapp db '/rd/1/LAUNCHER',0 vrr_m db '/rd/1/VRR_M',0 - - char dd 0,0,0 - dd 2560 - dd 0x3F600 - std_application_base_address - db '/RD/1/FONTS/CHAR.MT',0 + + char dd 0,0,0 + dd 2560 + dd 0x3F600 - std_application_base_address + db '/RD/1/FONTS/CHAR.MT',0 char2 dd 0,0,0 dd 2560 dd 0x3EC00 - std_application_base_address @@ -270,40 +270,40 @@ align 4 B32: ; CLEAR 0x280000-0xF00000 - xor eax,eax - mov edi,0x280000 - mov ecx,(0x100000*0xF-0x280000) / 4 - cld - rep stosd + xor eax,eax + mov edi,0x280000 + mov ecx,(0x100000*0xF-0x280000) / 4 + cld + rep stosd ; CLEAR 0x80000-0x90000 ; xor eax,eax - mov edi,0x80000 - mov ecx,(0x90000-0x80000)/4 + mov edi,0x80000 + mov ecx,(0x90000-0x80000)/4 ; cld - rep stosd + rep stosd ; CLEAR KERNEL UNDEFINED GLOBALS - mov edi, endofcode - mov ecx, (uglobals_size/4)+4 - rep stosd + mov edi, endofcode + mov ecx, (uglobals_size/4)+4 + rep stosd ; SAVE & CLEAR 0-0xffff - mov esi,0x0000 - mov edi,0x2F0000 - mov ecx,0x10000 / 4 - cld - rep movsd - xor eax,eax - mov edi,0 - mov ecx,0x10000 / 4 - cld - rep stosd + mov esi,0x0000 + mov edi,0x2F0000 + mov ecx,0x10000 / 4 + cld + rep movsd + xor eax,eax + mov edi,0 + mov ecx,0x10000 / 4 + cld + rep stosd ; SAVE REAL MODE VARIABLES - mov ax, [0x2f0000 + 0x9031] - mov [IDEContrRegsBaseAddr], ax + mov ax, [0x2f0000 + 0x9031] + mov [IDEContrRegsBaseAddr], ax ; --------------- APM --------------------- mov eax, [0x2f0000 + 0x9040] ; entry point mov dword[apm_entry], eax @@ -314,109 +314,109 @@ B32: ; ----------------------------------------- ; movzx eax,byte [0x2f0000+0x9010] ; mouse port ; mov [0xF604],byte 1 ;al - mov al, [0x2F0000+0x901F] ; DMA writing - mov [allow_dma_write], al - mov al,[0x2f0000+0x9000] ; bpp - mov [ScreenBPP],al - movzx eax,word [0x2f0000+0x900A] ; X max - dec eax - mov [ScreenWidth],eax - mov [screen_workarea.right],eax - movzx eax,word [0x2f0000+0x900C] ; Y max - dec eax - mov [ScreenHeight],eax - mov [screen_workarea.bottom],eax - movzx eax,word [0x2f0000+0x9008] ; screen mode - mov [SCR_MODE],eax - mov eax,[0x2f0000+0x9014] ; Vesa 1.2 bnk sw add - mov [BANK_SWITCH],eax - mov [BytesPerScanLine],word 640*4 ; Bytes PerScanLine - cmp [SCR_MODE],word 0x13 ; 320x200 - je @f - cmp [SCR_MODE],word 0x12 ; VGA 640x480 - je @f - mov ax,[0x2f0000+0x9001] ; for other modes - mov [BytesPerScanLine],ax + mov al, [0x2F0000+0x901F] ; DMA writing + mov [allow_dma_write], al + mov al,[0x2f0000+0x9000] ; bpp + mov [ScreenBPP],al + movzx eax,word [0x2f0000+0x900A] ; X max + dec eax + mov [ScreenWidth],eax + mov [screen_workarea.right],eax + movzx eax,word [0x2f0000+0x900C] ; Y max + dec eax + mov [ScreenHeight],eax + mov [screen_workarea.bottom],eax + movzx eax,word [0x2f0000+0x9008] ; screen mode + mov [SCR_MODE],eax + mov eax,[0x2f0000+0x9014] ; Vesa 1.2 bnk sw add + mov [BANK_SWITCH],eax + mov [BytesPerScanLine],word 640*4 ; Bytes PerScanLine + cmp [SCR_MODE],word 0x13 ; 320x200 + je @f + cmp [SCR_MODE],word 0x12 ; VGA 640x480 + je @f + mov ax,[0x2f0000+0x9001] ; for other modes + mov [BytesPerScanLine],ax @@: ; GRAPHICS ADDRESSES - ;mov eax,0x100000*8 ; LFB address - ;cmp [0xfe0c],word 0x13 - ;je no_d_lfb - ;cmp [0xfe0c],word 0x12 - ;je no_d_lfb - ;cmp [0x2f0000+0x901e],byte 1 - ;jne no_d_lfb - mov byte [0x2f0000+0x901e],0x0 - mov eax,[0x2f0000+0x9018] + ;mov eax,0x100000*8 ; LFB address + ;cmp [0xfe0c],word 0x13 + ;je no_d_lfb + ;cmp [0xfe0c],word 0x12 + ;je no_d_lfb + ;cmp [0x2f0000+0x901e],byte 1 + ;jne no_d_lfb + mov byte [0x2f0000+0x901e],0x0 + mov eax,[0x2f0000+0x9018] ;no_d_lfb: - mov [LFBAddress],eax + mov [LFBAddress],eax - cmp [SCR_MODE],word 0100000000000000b - jge setvesa20 - cmp [SCR_MODE],word 0x13 - je v20ga32 - mov [PUTPIXEL],dword Vesa12_putpixel24 ; Vesa 1.2 - mov [0xe024],dword Vesa12_getpixel24 - cmp [ScreenBPP],byte 24 - jz ga24 - mov [PUTPIXEL],dword Vesa12_putpixel32 - mov [0xe024],dword Vesa12_getpixel32 + cmp [SCR_MODE],word 0100000000000000b + jge setvesa20 + cmp [SCR_MODE],word 0x13 + je v20ga32 + mov [PUTPIXEL],dword Vesa12_putpixel24 ; Vesa 1.2 + mov [0xe024],dword Vesa12_getpixel24 + cmp [ScreenBPP],byte 24 + jz ga24 + mov [PUTPIXEL],dword Vesa12_putpixel32 + mov [0xe024],dword Vesa12_getpixel32 ga24: - jmp v20ga24 + jmp v20ga24 setvesa20: - mov [PUTPIXEL],dword Vesa20_putpixel24 ; Vesa 2.0 - mov [0xe024],dword Vesa20_getpixel24 - cmp [ScreenBPP],byte 24 - jz v20ga24 + mov [PUTPIXEL],dword Vesa20_putpixel24 ; Vesa 2.0 + mov [0xe024],dword Vesa20_getpixel24 + cmp [ScreenBPP],byte 24 + jz v20ga24 v20ga32: - mov [PUTPIXEL],dword Vesa20_putpixel32 - mov [0xe024],dword Vesa20_getpixel32 + mov [PUTPIXEL],dword Vesa20_putpixel32 + mov [0xe024],dword Vesa20_getpixel32 v20ga24: - cmp [SCR_MODE],word 0x12 ; 16 C VGA 640x480 - jne no_mode_0x12 - mov [PUTPIXEL],dword VGA_putpixel - mov [0xe024],dword Vesa20_getpixel32 + cmp [SCR_MODE],word 0x12 ; 16 C VGA 640x480 + jne no_mode_0x12 + mov [PUTPIXEL],dword VGA_putpixel + mov [0xe024],dword Vesa20_getpixel32 no_mode_0x12: - call test_cpu + call test_cpu ; btr [cpu_caps], CAPS_SSE ;test: dont't use sse code ; btr [cpu_caps], CAPS_SSE2 ;test: don't use sse2 ; btr [cpu_caps], CAPS_FXSR ;test: disable sse support - ;all sse commands rise #UD exption + ;all sse commands rise #UD exption ; btr [cpu_caps], CAPS_PSE ;test: don't use large pages ; btr [cpu_caps], CAPS_PGE ;test: don't use global pages ; btr [cpu_caps], CAPS_MTRR ;test: don't use MTRR - bts [cpu_caps], CAPS_TSC ;force use rdtsc + bts [cpu_caps], CAPS_TSC ;force use rdtsc ; -------- Fast System Call init ---------- ; Intel SYSENTER/SYSEXIT (AMD CPU support it too) - bt [cpu_caps], CAPS_SEP - jnc .SEnP ; SysEnter not Present - xor edx, edx - mov ecx, MSR_SYSENTER_CS - mov eax, os_code - wrmsr - mov ecx, MSR_SYSENTER_ESP - mov eax, sysenter_stack ; Check it - wrmsr - mov ecx, MSR_SYSENTER_EIP - mov eax, sysenter_entry - wrmsr + bt [cpu_caps], CAPS_SEP + jnc .SEnP ; SysEnter not Present + xor edx, edx + mov ecx, MSR_SYSENTER_CS + mov eax, os_code + wrmsr + mov ecx, MSR_SYSENTER_ESP + mov eax, sysenter_stack ; Check it + wrmsr + mov ecx, MSR_SYSENTER_EIP + mov eax, sysenter_entry + wrmsr .SEnP: ; AMD SYSCALL/SYSRET - cmp byte[cpu_vendor], 'A' - jne .noSYSCALL - mov eax, 0x80000001 - cpuid - test edx, 0x800 ; bit_11 - SYSCALL/SYSRET support - jz .noSYSCALL - mov ecx, MSR_AMD_EFER - rdmsr - or eax, 1 ; bit_0 - System Call Extension (SCE) - wrmsr + cmp byte[cpu_vendor], 'A' + jne .noSYSCALL + mov eax, 0x80000001 + cpuid + test edx, 0x800 ; bit_11 - SYSCALL/SYSRET support + jz .noSYSCALL + mov ecx, MSR_AMD_EFER + rdmsr + or eax, 1 ; bit_0 - System Call Extension (SCE) + wrmsr ; !!!! It`s dirty hack, fix it !!! ; Bits of EDX : @@ -425,82 +425,91 @@ B32: ; Bit 15–0 During the SYSCALL instruction, this field is copied into the CS register ; and the contents of this field, plus 8, are copied into the SS register. - ; mov edx, (os_code + 16) * 65536 + os_code - mov edx, 0x1B0013 + ; mov edx, (os_code + 16) * 65536 + os_code + mov edx, 0x1B0013 - mov eax, syscall_entry - mov ecx, MSR_AMD_STAR - wrmsr + mov eax, syscall_entry + mov ecx, MSR_AMD_STAR + wrmsr .noSYSCALL: ; ----------------------------------------- ; MEMORY MODEL - call mem_test - call init_mtrr - call init_mem - call init_page_map + call mem_test + call init_mtrr + call init_mem + call init_page_map ; ENABLE PAGING - mov eax, sys_pgdir - mov cr3, eax + mov eax, sys_pgdir + mov cr3, eax - mov eax,cr0 - or eax,CR0_PG - mov cr0,eax + mov eax,cr0 + or eax,CR0_PG + mov cr0,eax - call init_kernel_heap - stdcall kernel_alloc, RING0_STACK_SIZE+512 - mov [os_stack], eax + call init_kernel_heap + stdcall kernel_alloc, RING0_STACK_SIZE+512 + mov [os_stack], eax - call init_LFB - call init_fpu + call init_LFB + call init_fpu - call init_malloc + call init_malloc - stdcall alloc_kernel_space, 0x4F000 - mov [ipc_tmp], eax - mov ebx, 0x1000 + stdcall alloc_kernel_space, 0x4F000 + mov [ipc_tmp], eax + mov ebx, 0x1000 - add eax, 0x40000 - mov [proc_mem_map], eax + add eax, 0x40000 + mov [proc_mem_map], eax - add eax, 0x8000 - mov [proc_mem_pdir], eax + add eax, 0x8000 + mov [proc_mem_pdir], eax - add eax, ebx - mov [proc_mem_tab], eax + add eax, ebx + mov [proc_mem_tab], eax - add eax, ebx - mov [tmp_task_pdir], eax + add eax, ebx + mov [tmp_task_pdir], eax - add eax, ebx - mov [tmp_task_ptab], eax + add eax, ebx + mov [tmp_task_ptab], eax - add eax, ebx - mov [ipc_pdir], eax + add eax, ebx + mov [ipc_pdir], eax - add eax, ebx - mov [ipc_ptab], eax + add eax, ebx + mov [ipc_ptab], eax - call init_events + call init_events - mov eax, srv.fd-SRV_FD_OFFSET - mov [srv.fd], eax - mov [srv.bk], eax + mov eax, srv.fd-SRV_FD_OFFSET + mov [srv.fd], eax + mov [srv.bk], eax - mov edi, irq_tab - xor eax, eax - mov ecx, 16 - rep stosd + mov edi, irq_tab + xor eax, eax + mov ecx, 16 + rep stosd ;Set base of graphic segment to linear address of LFB - mov eax,[LFBAddress] ; set for gs - mov [graph_data_l+2],ax - shr eax,16 - mov [graph_data_l+4],al - mov [graph_data_l+7],ah + mov eax,[LFBAddress] ; set for gs + mov [graph_data_l+2],ax + shr eax,16 + mov [graph_data_l+4],al + mov [graph_data_l+7],ah + + +; BUILD SCHEDULER + + call build_scheduler ; sys32.inc + +; LOAD IDT + lidt [cs:idtreg] + cli ;!!!!!!!!!!!!!!!!!!!!!!!!!! include 'detect/disks.inc' @@ -514,7 +523,7 @@ include 'boot/rdload.inc' ; mov [dma_hdd],1 ; CALCULATE FAT CHAIN FOR RAMDISK - call calculatefatchain + call calculatefatchain ; LOAD VMODE DRIVER @@ -524,9 +533,9 @@ include 'vmodeld.inc' ; LOAD FONTS I and II - mov [CURRENT_TASK],dword 1 - mov [TASK_COUNT],dword 1 - mov [TASK_BASE],dword TASK_DATA + mov [CURRENT_TASK],dword 1 + mov [TASK_COUNT],dword 1 + mov [TASK_BASE],dword TASK_DATA pushad push eax @@ -537,6 +546,7 @@ include 'vmodeld.inc' pop eax popad + ; mov esi,char ; xor ebx,ebx ; mov ecx,2560;26000 @@ -549,244 +559,236 @@ include 'vmodeld.inc' ; mov edx,FONT_II ; call fs_RamdiskRead - mov esi,boot_fonts - call boot_log + mov esi,boot_fonts + call boot_log ; PRINT AMOUNT OF MEMORY - mov esi, boot_memdetect - call boot_log + mov esi, boot_memdetect + call boot_log - movzx ecx, word [boot_y] - or ecx, (10+29*6) shl 16 ; "Determining amount of memory" - sub ecx, 10 - mov edx, 0xFFFFFF - mov ebx, [MEM_AMOUNT] - shr ebx, 20 - mov edi, 1 - mov eax, 0x00040000 - call display_number_force + movzx ecx, word [boot_y] + or ecx, (10+29*6) shl 16 ; "Determining amount of memory" + sub ecx, 10 + mov edx, 0xFFFFFF + mov ebx, [MEM_AMOUNT] + shr ebx, 20 + mov edi, 1 + mov eax, 0x00040000 + call display_number_force ; REDIRECT ALL IRQ'S TO INT'S 0x20-0x2f - mov esi,boot_irqs - call boot_log - call rerouteirqs + mov esi,boot_irqs + call boot_log + call rerouteirqs - mov esi,boot_tss - call boot_log + mov esi,boot_tss + call boot_log -; BUILD SCHEDULER - - call build_scheduler ; sys32.inc - -; LOAD IDT - lidt [cs:idtreg] - cli - - mov esi,boot_devices - call boot_log - call detect_devices + mov esi,boot_devices + call boot_log + call detect_devices ; TIMER SET TO 1/100 S - mov esi,boot_timer - call boot_log - mov al,0x34 ; set to 100Hz - out 0x43,al - mov al,0x9b ; lsb 1193180 / 1193 - out 0x40,al - mov al,0x2e ; msb - out 0x40,al + mov esi,boot_timer + call boot_log + mov al,0x34 ; set to 100Hz + out 0x43,al + mov al,0x9b ; lsb 1193180 / 1193 + out 0x40,al + mov al,0x2e ; msb + out 0x40,al ; SET MOUSE - mov esi,boot_setmouse - call boot_log - call setmouse + mov esi,boot_setmouse + call boot_log + call setmouse - mov [pci_access_enabled],1 + mov [pci_access_enabled],1 ; SET PRELIMINARY WINDOW STACK AND POSITIONS - mov esi,boot_windefs - call boot_log - call setwindowdefaults + mov esi,boot_windefs + call boot_log + call setwindowdefaults ; SET BACKGROUND DEFAULTS - mov esi,boot_bgr - call boot_log - call calculatebackground + mov esi,boot_bgr + call boot_log + call calculatebackground ; RESERVE SYSTEM IRQ'S JA PORT'S - mov esi,boot_resirqports - call boot_log - call reserve_irqs_ports + mov esi,boot_resirqports + call boot_log + call reserve_irqs_ports ; SET PORTS FOR IRQ HANDLERS - mov esi,boot_setrports - call boot_log - call setirqreadports + mov esi,boot_setrports + call boot_log + call setirqreadports ; SET UP OS TASK - mov esi,boot_setostask - call boot_log + mov esi,boot_setostask + call boot_log - mov eax, fpu_data - mov dword [SLOT_BASE+APPDATA.fpu_state], eax - mov dword [SLOT_BASE+APPDATA.fpu_handler], 0 - mov dword [SLOT_BASE+APPDATA.sse_handler], 0 + mov eax, fpu_data + mov dword [SLOT_BASE+APPDATA.fpu_state], eax + mov dword [SLOT_BASE+APPDATA.fpu_handler], 0 + mov dword [SLOT_BASE+APPDATA.sse_handler], 0 - ; name for OS/IDLE process + ; name for OS/IDLE process - mov dword [SLOT_BASE+256+APPDATA.app_name], dword 'OS/I' - mov dword [SLOT_BASE+256+APPDATA.app_name+4], dword 'DLE ' - mov edi, [os_stack] - mov dword [SLOT_BASE+256+APPDATA.pl0_stack], edi - add edi, RING0_STACK_SIZE - mov dword [SLOT_BASE+256+APPDATA.fpu_state], edi + mov dword [SLOT_BASE+256+APPDATA.app_name], dword 'OS/I' + mov dword [SLOT_BASE+256+APPDATA.app_name+4], dword 'DLE ' + mov edi, [os_stack] + mov dword [SLOT_BASE+256+APPDATA.pl0_stack], edi + add edi, RING0_STACK_SIZE + mov dword [SLOT_BASE+256+APPDATA.fpu_state], edi - mov esi, fpu_data - mov ecx, 512/4 - cld - rep movsd + mov esi, fpu_data + mov ecx, 512/4 + cld + rep movsd - mov dword [SLOT_BASE+256+APPDATA.fpu_handler], 0 - mov dword [SLOT_BASE+256+APPDATA.sse_handler], 0 + mov dword [SLOT_BASE+256+APPDATA.fpu_handler], 0 + mov dword [SLOT_BASE+256+APPDATA.sse_handler], 0 - mov ebx, [def_cursor] - mov dword [SLOT_BASE+256+APPDATA.cursor], ebx + mov ebx, [def_cursor] + mov dword [SLOT_BASE+256+APPDATA.cursor], ebx - mov ebx, SLOT_BASE+256+APP_OBJ_OFFSET - mov dword [SLOT_BASE+256+APPDATA.fd_obj], ebx - mov dword [SLOT_BASE+256+APPDATA.bk_obj], ebx + mov ebx, SLOT_BASE+256+APP_OBJ_OFFSET + mov dword [SLOT_BASE+256+APPDATA.fd_obj], ebx + mov dword [SLOT_BASE+256+APPDATA.bk_obj], ebx - ; task list - mov [TASK_DATA+TASKDATA.wnd_number], 1 ; on screen number - mov [TASK_DATA+TASKDATA.pid], 1 ; process id number - mov [TASK_DATA+TASKDATA.mem_start], 0 ; process base address + ; task list + mov [TASK_DATA+TASKDATA.wnd_number], 1 ; on screen number + mov [TASK_DATA+TASKDATA.pid], 1 ; process id number + mov [TASK_DATA+TASKDATA.mem_start], 0 ; process base address - mov edi,tss_data+tss_step - mov ecx, (tss_step)/4 - xor eax, eax - cld - rep stosd + mov edi,tss_data+tss_step + mov ecx, (tss_step)/4 + xor eax, eax + cld + rep stosd - mov edi,tss_data+tss_step - mov [edi+TSS._ss0], os_data - mov eax,cr3 - mov [edi+TSS._cr3],eax - mov [edi+TSS._eip],osloop - mov [edi+TSS._eflags],dword 0x11202 ; sti and resume - mov eax, [os_stack] - add eax, RING0_STACK_SIZE - mov [edi+TSS._esp], eax - mov [edi+TSS._cs],os_code - mov [edi+TSS._ss],os_data - mov [edi+TSS._ds],os_data - mov [edi+TSS._es],os_data - mov [edi+TSS._fs],os_data - mov [edi+TSS._gs],os_data + mov edi,tss_data+tss_step + mov [edi+TSS._ss0], os_data + mov eax,cr3 + mov [edi+TSS._cr3],eax + mov [edi+TSS._eip],osloop + mov [edi+TSS._eflags],dword 0x11202 ; sti and resume + mov eax, [os_stack] + add eax, RING0_STACK_SIZE + mov [edi+TSS._esp], eax + mov [edi+TSS._cs],os_code + mov [edi+TSS._ss],os_data + mov [edi+TSS._ds],os_data + mov [edi+TSS._es],os_data + mov [edi+TSS._fs],os_data + mov [edi+TSS._gs],os_data - mov ax,tss0 - ltr ax + mov ax,tss0 + ltr ax - call init_cursors + call init_cursors ; READ TSC / SECOND - mov esi,boot_tsc - call boot_log - call _rdtsc - mov ecx,eax - mov esi,250 ; wait 1/4 a second - call delay_ms - call _rdtsc - sub eax,ecx - shl eax,2 - mov [CPU_FREQ],eax ; save tsc / sec - mov ebx, 1000000 - div ebx - mov [stall_mcs], eax + mov esi,boot_tsc + call boot_log + call _rdtsc + mov ecx,eax + mov esi,250 ; wait 1/4 a second + call delay_ms + call _rdtsc + sub eax,ecx + shl eax,2 + mov [CPU_FREQ],eax ; save tsc / sec + mov ebx, 1000000 + div ebx + mov [stall_mcs], eax ; SET VARIABLES - call set_variables + call set_variables ; STACK AND FDC - call stack_init - call fdc_init + call stack_init + call fdc_init ; PALETTE FOR 320x200 and 640x480 16 col - cmp [SCR_MODE],word 0x12 - jne no_pal_vga - mov esi,boot_pal_vga - call boot_log - call paletteVGA + cmp [SCR_MODE],word 0x12 + jne no_pal_vga + mov esi,boot_pal_vga + call boot_log + call paletteVGA no_pal_vga: - cmp [SCR_MODE],word 0x13 - jne no_pal_ega - mov esi,boot_pal_ega - call boot_log - call palette320x200 + cmp [SCR_MODE],word 0x13 + jne no_pal_ega + mov esi,boot_pal_ega + call boot_log + call palette320x200 no_pal_ega: ; LOAD DEFAULT SKIN - mov esi,_skin_file_default - mov edi,_skin_file - movsd - movsd - movsd - call load_skin + mov esi,_skin_file_default + mov edi,_skin_file + movsd + movsd + movsd + call load_skin ; LOAD FIRST APPLICATION - mov [CURRENT_TASK],dword 1 - mov [TASK_COUNT],dword 1 - cli - cmp byte [0x2f0000+0x9030],1 - jne no_load_vrr_m + mov [CURRENT_TASK],dword 1 + mov [TASK_COUNT],dword 1 + cli + cmp byte [0x2f0000+0x9030],1 + jne no_load_vrr_m - mov ebp, vrr_m - xor ebx, ebx - xor edx, edx - call fs_execute - cmp eax,2 ; if vrr_m app found (PID=2) - je first_app_found + mov ebp, vrr_m + xor ebx, ebx + xor edx, edx + call fs_execute + cmp eax,2 ; if vrr_m app found (PID=2) + je first_app_found no_load_vrr_m: - mov ebp, firstapp - xor ebx, ebx - xor edx, edx - call fs_execute - cmp eax,2 ; continue if a process has been loaded - je first_app_found - mov eax, 0xDEADBEEF ; otherwise halt - hlt + mov ebp, firstapp + xor ebx, ebx + xor edx, edx + call fs_execute + cmp eax,2 ; continue if a process has been loaded + je first_app_found + mov eax, 0xDEADBEEF ; otherwise halt + hlt first_app_found: - cli + cli - ;mov [TASK_COUNT],dword 2 - mov [CURRENT_TASK],dword 1 ; set OS task fisrt + ;mov [TASK_COUNT],dword 2 + mov [CURRENT_TASK],dword 1 ; set OS task fisrt ; SET KEYBOARD PARAMETERS - mov al, 0xf6 ; reset keyboard, scan enabled - call kb_write + mov al, 0xf6 ; reset keyboard, scan enabled + call kb_write - ; wait until 8042 is ready - xor ecx,ecx + ; wait until 8042 is ready + xor ecx,ecx @@: - in al,64h - and al,00000010b - loopnz @b + in al,64h + and al,00000010b + loopnz @b ; mov al, 0xED ; svetodiody - only for testing! ; call kb_write @@ -795,53 +797,53 @@ first_app_found: ; call kb_write ; call kb_read - mov al, 0xF3 ; set repeat rate & delay - call kb_write + mov al, 0xF3 ; set repeat rate & delay + call kb_write ; call kb_read - mov al, 0 ; 30 250 ;00100010b ; 24 500 ;00100100b ; 20 500 - call kb_write + mov al, 0 ; 30 250 ;00100010b ; 24 500 ;00100100b ; 20 500 + call kb_write ; call kb_read ;// mike.dld [ - call set_lights + call set_lights ;// mike.dld ] ; START MULTITASKING - mov esi,boot_tasking - call boot_log + mov esi,boot_tasking + call boot_log ; mov [ENABLE_TASKSWITCH],byte 1 ; multitasking enabled ; UNMASK ALL IRQ'S - mov esi,boot_allirqs - call boot_log + mov esi,boot_allirqs + call boot_log - cli ;guarantee forbidance of interrupts. - mov al,0 ; unmask all irq's - out 0xA1,al - out 0x21,al + cli ;guarantee forbidance of interrupts. + mov al,0 ; unmask all irq's + out 0xA1,al + out 0x21,al - mov ecx,32 + mov ecx,32 ready_for_irqs: - mov al,0x20 ; ready for irqs - out 0x20,al - out 0xa0,al + mov al,0x20 ; ready for irqs + out 0x20,al + out 0xa0,al - loop ready_for_irqs ; flush the queue + loop ready_for_irqs ; flush the queue - stdcall attach_int_handler, dword 1, irq1 + stdcall attach_int_handler, dword 1, irq1 ; mov [dma_hdd],1 - cmp [IDEContrRegsBaseAddr], 0 - setnz [dma_hdd] + cmp [IDEContrRegsBaseAddr], 0 + setnz [dma_hdd] - sti - jmp $ ; wait here for timer to take control + sti + jmp $ ; wait here for timer to take control - ; Fly :) + ; Fly :) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ; ; @@ -850,16 +852,16 @@ first_app_found: ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; align 32 osloop: - call [draw_pointer] - call checkbuttons - call checkwindows + call [draw_pointer] + call checkbuttons + call checkwindows ; call check_window_move_request - call checkmisc - call checkVga_N13 - call stack_handler - call checkidle - call check_fdd_motor_status - jmp osloop + call checkmisc + call checkVga_N13 + call stack_handler + call checkidle + call check_fdd_motor_status + jmp osloop ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ; ; ; MAIN OS LOOP END ; @@ -867,61 +869,61 @@ osloop: ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; checkidle: - pushad + pushad - cmp [check_idle_semaphore],0 - jne no_idle_state + cmp [check_idle_semaphore],0 + jne no_idle_state - call change_task - mov eax,[idlemem] - mov ebx,[timer_ticks] ;[0xfdf0] - cmp eax,ebx - jnz idle_exit - call _rdtsc - mov ecx,eax + call change_task + mov eax,[idlemem] + mov ebx,[timer_ticks] ;[0xfdf0] + cmp eax,ebx + jnz idle_exit + call _rdtsc + mov ecx,eax idle_loop: - hlt - cmp [check_idle_semaphore],0 - jne idle_loop_exit - mov eax,[timer_ticks] ;[0xfdf0] - cmp ebx,eax - jz idle_loop + hlt + cmp [check_idle_semaphore],0 + jne idle_loop_exit + mov eax,[timer_ticks] ;[0xfdf0] + cmp ebx,eax + jz idle_loop idle_loop_exit: - mov [idlemem],eax - call _rdtsc - sub eax,ecx - mov ebx,[idleuse] - add ebx,eax - mov [idleuse],ebx + mov [idlemem],eax + call _rdtsc + sub eax,ecx + mov ebx,[idleuse] + add ebx,eax + mov [idleuse],ebx - popad - ret + popad + ret idle_exit: - mov ebx,[timer_ticks] ;[0xfdf0] - mov [idlemem],ebx - call change_task + mov ebx,[timer_ticks] ;[0xfdf0] + mov [idlemem],ebx + call change_task - popad - ret + popad + ret no_idle_state: - dec [check_idle_semaphore] + dec [check_idle_semaphore] - mov ebx,[timer_ticks] ;[0xfdf0] - mov [idlemem],ebx - call change_task + mov ebx,[timer_ticks] ;[0xfdf0] + mov [idlemem],ebx + call change_task - popad - ret + popad + ret uglobal - idlemem dd 0x0 - idleuse dd 0x0 - idleusesec dd 0x0 - check_idle_semaphore dd 0x0 + idlemem dd 0x0 + idleuse dd 0x0 + idleusesec dd 0x0 + check_idle_semaphore dd 0x0 endg @@ -944,15 +946,15 @@ include "kernel32.inc" reserve_irqs_ports: - pushad + pushad - mov [irq_owner+4*0],byte 1 ; timer - mov [irq_owner+4*1],byte 1 ; keyboard - mov [irq_owner+4*5],byte 1 ; sound blaster - mov [irq_owner+4*6],byte 1 ; floppy diskette - mov [irq_owner+4*13],byte 1 ; math co-pros - mov [irq_owner+4*14],byte 1 ; ide I - mov [irq_owner+4*15],byte 1 ; ide II + mov [irq_owner+4*0],byte 1 ; timer + mov [irq_owner+4*1],byte 1 ; keyboard + mov [irq_owner+4*5],byte 1 ; sound blaster + mov [irq_owner+4*6],byte 1 ; floppy diskette + mov [irq_owner+4*13],byte 1 ; math co-pros + mov [irq_owner+4*14],byte 1 ; ide I + mov [irq_owner+4*15],byte 1 ; ide II ; movzx eax,byte [0xf604] ; mouse irq ; dec eax ; add eax,mouseirqtable @@ -961,34 +963,34 @@ reserve_irqs_ports: ; mov [irq_owner+eax],byte 1 - ; RESERVE PORTS - mov edi,1 ; 0x00-0x2d - mov [RESERVED_PORTS],edi - shl edi,4 - mov [RESERVED_PORTS+edi+0],dword 1 - mov [RESERVED_PORTS+edi+4],dword 0x0 - mov [RESERVED_PORTS+edi+8],dword 0x2d + ; RESERVE PORTS + mov edi,1 ; 0x00-0x2d + mov [RESERVED_PORTS],edi + shl edi,4 + mov [RESERVED_PORTS+edi+0],dword 1 + mov [RESERVED_PORTS+edi+4],dword 0x0 + mov [RESERVED_PORTS+edi+8],dword 0x2d - inc dword [RESERVED_PORTS] ; 0x30-0x4d - mov edi,[RESERVED_PORTS] - shl edi,4 - mov [RESERVED_PORTS+edi+0],dword 1 - mov [RESERVED_PORTS+edi+4],dword 0x30 - mov [RESERVED_PORTS+edi+8],dword 0x4d + inc dword [RESERVED_PORTS] ; 0x30-0x4d + mov edi,[RESERVED_PORTS] + shl edi,4 + mov [RESERVED_PORTS+edi+0],dword 1 + mov [RESERVED_PORTS+edi+4],dword 0x30 + mov [RESERVED_PORTS+edi+8],dword 0x4d - inc dword [RESERVED_PORTS] ; 0x50-0xdf - mov edi,[RESERVED_PORTS] - shl edi,4 - mov [RESERVED_PORTS+edi+0],dword 1 - mov [RESERVED_PORTS+edi+4],dword 0x50 - mov [RESERVED_PORTS+edi+8],dword 0xdf + inc dword [RESERVED_PORTS] ; 0x50-0xdf + mov edi,[RESERVED_PORTS] + shl edi,4 + mov [RESERVED_PORTS+edi+0],dword 1 + mov [RESERVED_PORTS+edi+4],dword 0x50 + mov [RESERVED_PORTS+edi+8],dword 0xdf - inc dword [RESERVED_PORTS] ; 0xe5-0xff - mov edi,[RESERVED_PORTS] - shl edi,4 - mov [RESERVED_PORTS+edi+0],dword 1 - mov [RESERVED_PORTS+edi+4],dword 0xe5 - mov [RESERVED_PORTS+edi+8],dword 0xff + inc dword [RESERVED_PORTS] ; 0xe5-0xff + mov edi,[RESERVED_PORTS] + shl edi,4 + mov [RESERVED_PORTS+edi+0],dword 1 + mov [RESERVED_PORTS+edi+4],dword 0xe5 + mov [RESERVED_PORTS+edi+8],dword 0xff ; cmp [0xf604],byte 2 ; com1 mouse -> 0x3f0-0x3ff @@ -1010,25 +1012,25 @@ reserve_irqs_ports: ; mov [0x2d0000+edi+8],dword 0x2ff ; ripl2: - popad - ret + popad + ret iglobal -mouseirqtable db 12 ; ps2 - db 4 ; com1 - db 3 ; com2 +mouseirqtable db 12 ; ps2 + db 4 ; com1 + db 3 ; com2 endg setirqreadports: - mov [irq12read+0],dword 0x60 + 0x01000000 ; read port 0x60 , byte - mov [irq12read+4],dword 0 ; end of port list - mov [irq04read+0],dword 0x3f8 + 0x01000000 ; read port 0x3f8 , byte - mov [irq04read+4],dword 0 ; end of port list - mov [irq03read+0],dword 0x2f8 + 0x01000000 ; read port 0x2f8 , byte - mov [irq03read+4],dword 0 ; end of port list + mov [irq12read+0],dword 0x60 + 0x01000000 ; read port 0x60 , byte + mov [irq12read+4],dword 0 ; end of port list + mov [irq04read+0],dword 0x3f8 + 0x01000000 ; read port 0x3f8 , byte + mov [irq04read+4],dword 0 ; end of port list + mov [irq03read+0],dword 0x2f8 + 0x01000000 ; read port 0x2f8 , byte + mov [irq03read+4],dword 0 ; end of port list - ret + ret iglobal process_number dd 0x1 @@ -1036,51 +1038,51 @@ endg set_variables: - mov ecx,0x100 ; flush port 0x60 -.fl60: in al,0x60 - loop .fl60 - mov [MOUSE_BUFF_COUNT],byte 0 ; mouse buffer - mov [KEY_COUNT],byte 0 ; keyboard buffer - mov [BTN_COUNT],byte 0 ; button buffer + mov ecx,0x100 ; flush port 0x60 +.fl60: in al,0x60 + loop .fl60 + mov [MOUSE_BUFF_COUNT],byte 0 ; mouse buffer + mov [KEY_COUNT],byte 0 ; keyboard buffer + mov [BTN_COUNT],byte 0 ; button buffer ; mov [MOUSE_X],dword 100*65536+100 ; mouse x/y - push eax - mov ax,[0x2f0000+0x900c] - shr ax,1 - shl eax,16 - mov ax,[0x2f0000+0x900A] - shr ax,1 - mov [MOUSE_X],eax - pop eax + push eax + mov ax,[0x2f0000+0x900c] + shr ax,1 + shl eax,16 + mov ax,[0x2f0000+0x900A] + shr ax,1 + mov [MOUSE_X],eax + pop eax - mov byte [SB16_Status],0 ; Minazzi Paolo - mov [display_data-12],dword 1 ; tiled background - mov [BTN_ADDR],dword BUTTON_INFO ; address of button list + mov byte [SB16_Status],0 ; Minazzi Paolo + mov [display_data-12],dword 1 ; tiled background + mov [BTN_ADDR],dword BUTTON_INFO ; address of button list ;!! IP 04.02.2005: - mov [next_usage_update], 100 - mov byte [0xFFFF], 0 ; change task if possible + mov [next_usage_update], 100 + mov byte [0xFFFF], 0 ; change task if possible - ret + ret ;* mouse centered - start code- Mario79 mouse_centered: - push eax - mov eax,[ScreenWidth] - shr eax,1 - mov [MOUSE_X],ax - mov eax,[ScreenHeight] - shr eax,1 - mov [MOUSE_Y],ax - pop eax - ret + push eax + mov eax,[ScreenWidth] + shr eax,1 + mov [MOUSE_X],ax + mov eax,[ScreenHeight] + shr eax,1 + mov [MOUSE_Y],ax + pop eax + ret ;* mouse centered - end code- Mario79 align 4 sys_outport: - mov edi,ebx ; separate flag for read / write + mov edi,ebx ; separate flag for read / write and ebx,65535 mov ecx,[RESERVED_PORTS] @@ -1102,9 +1104,9 @@ sys_outport: cmp edx,[esi+0] jne sopl2 cmp ebx,[esi+4] - jb sopl2 + jb sopl2 cmp ebx,[esi+8] - jg sopl2 + jg sopl2 jmp sopl3 sopl2: @@ -1119,15 +1121,15 @@ sys_outport: test edi,0x80000000 ; read ? jnz sopl4 - mov dx,bx ; write + mov dx,bx ; write out dx,al mov [esp+36],dword 0 ret sopl4: - mov dx,bx ; read - in al,dx + mov dx,bx ; read + in al,dx and eax,0xff mov [esp+36],dword 0 mov [esp+24],eax @@ -1246,28 +1248,28 @@ display_number: ; ebx = number or pointer ; ecx = x shl 16 + y ; edx = color - xor edi, edi + xor edi, edi display_number_force: - cmp eax,0xffff ; length > 0 ? + cmp eax,0xffff ; length > 0 ? jge cont_displ ret cont_displ: - cmp eax,61*0x10000 ; length <= 60 ? + cmp eax,61*0x10000 ; length <= 60 ? jb cont_displ2 ret cont_displ2: pushad - cmp al,1 ; ecx is a pointer ? + cmp al,1 ; ecx is a pointer ? jne displnl1 mov ebx,[ebx+std_application_base_address] displnl1: sub esp,64 - cmp ah,0 ; DECIMAL + cmp ah,0 ; DECIMAL jne no_display_desnum shr eax,16 and eax,0x3f @@ -1291,7 +1293,7 @@ display_number_force: ret no_display_desnum: - cmp ah,0x01 ; HEXADECIMAL + cmp ah,0x01 ; HEXADECIMAL jne no_display_hexnum shr eax,16 and eax,0x3f @@ -1316,7 +1318,7 @@ display_number_force: ret no_display_hexnum: - cmp ah,0x02 ; BINARY + cmp ah,0x02 ; BINARY jne no_display_binnum shr eax,16 and eax,0x3f @@ -1367,7 +1369,7 @@ draw_num_text: sub ecx,eax add ecx,esp mov eax,[esp+64+32-8+4] - push edx ; add window start x & y + push edx ; add window start x & y mov edx,[TASK_BASE] mov ebx,[edx-twdw+WDATA.box.left] add ebx, [(edx-CURRENT_TASK)*8+SLOT_BASE+APPDATA.wnd_clientbox.left] @@ -1377,9 +1379,9 @@ draw_num_text: 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 edi, [esp+64+4] + and ebx, not 0x80000000 ; force counted string + mov esi, [esp+64+4+4] + mov edi, [esp+64+4] jmp dtext read_string: @@ -1411,7 +1413,7 @@ sys_setup: mov [esp+36],dword 0 - cmp eax,1 ; MIDI + cmp eax,1 ; MIDI jnz nsyse1 cmp ebx,0x100 jb nsyse1 @@ -1430,7 +1432,7 @@ endg nsyse1: - cmp eax,2 ; KEYBOARD + cmp eax,2 ; KEYBOARD jnz nsyse2 cmp ebx,1 jnz kbnobase @@ -1470,7 +1472,7 @@ endg mov [esp+36],dword 1 ret nsyse2: - cmp eax,3 ; CD + cmp eax,3 ; CD jnz nsyse3 test ebx,ebx jz nosesl @@ -1503,7 +1505,7 @@ cd_base db 0 nsyse3: - cmp eax,4 ; SB + cmp eax,4 ; SB jnz nsyse4 cmp ebx,0x100 jb nsyse4 @@ -1514,13 +1516,13 @@ cd_base db 0 ret nsyse4: - cmp eax,5 ; SYSTEM LANGUAGE + cmp eax,5 ; SYSTEM LANGUAGE jnz nsyse5 mov [syslang],ebx ret nsyse5: - cmp eax,7 ; HD BASE + cmp eax,7 ; HD BASE jne nsyse7 test ebx,ebx jz nosethd @@ -1558,7 +1560,7 @@ cd_base db 0 call reserve_hd1 call reserve_hd_channel call free_hd_channel - mov [hd1_status],0 ; free + mov [hd1_status],0 ; free nosethd: ret @@ -1568,7 +1570,7 @@ endg nsyse7: - cmp eax,8 ; HD PARTITION + cmp eax,8 ; HD PARTITION jne nsyse8 mov [fat32part],ebx ; call set_FAT32_variables @@ -1578,11 +1580,11 @@ endg pusha call choice_necessity_partition_1 popa - mov [hd1_status],0 ; free + mov [hd1_status],0 ; free ret nsyse8: - cmp eax,10 ; SOUND DMA CHANNEL + cmp eax,10 ; SOUND DMA CHANNEL jne no_set_sound_dma cmp ebx,3 ja sys_setup_err @@ -1590,14 +1592,14 @@ endg ret no_set_sound_dma: - cmp eax,11 ; ENABLE LBA READ + cmp eax,11 ; ENABLE LBA READ jne no_set_lba_read and ebx,1 mov [lba_read_enabled],ebx ret no_set_lba_read: - cmp eax,12 ; ENABLE PCI ACCESS + cmp eax,12 ; ENABLE PCI ACCESS jne no_set_pci_access and ebx,1 mov [pci_access_enabled],ebx @@ -1734,9 +1736,9 @@ sys_getsetup: iglobal align 4 mousefn dd msscreen, mswin, msbutton, msset - dd app_load_cursor - dd app_set_cursor - dd app_delete_cursor + dd app_load_cursor + dd app_set_cursor + dd app_delete_cursor endg readmousepos: @@ -1749,92 +1751,92 @@ readmousepos: ; eax=5 set cursor ; eax=6 delete cursor ; reserved - cmp eax, 6 - ja msset - jmp [mousefn+eax*4] + cmp eax, 6 + ja msset + jmp [mousefn+eax*4] msscreen: - mov eax,[MOUSE_X] - shl eax,16 - mov ax,[MOUSE_Y] - mov [esp+36],eax - ret + mov eax,[MOUSE_X] + shl eax,16 + mov ax,[MOUSE_Y] + mov [esp+36],eax + ret mswin: - mov eax,[MOUSE_X] - shl eax,16 - mov ax,[MOUSE_Y] - mov esi,[TASK_BASE] - mov bx, word [esi-twdw+WDATA.box.left] - shl ebx,16 - mov bx, word [esi-twdw+WDATA.box.top] - sub eax,ebx + mov eax,[MOUSE_X] + shl eax,16 + mov ax,[MOUSE_Y] + mov esi,[TASK_BASE] + mov bx, word [esi-twdw+WDATA.box.left] + shl ebx,16 + mov bx, word [esi-twdw+WDATA.box.top] + sub eax,ebx - mov edi,[CURRENT_TASK] - shl edi,8 - sub ax,word[edi+SLOT_BASE+APPDATA.wnd_clientbox.top] - rol eax,16 - sub ax,word[edi+SLOT_BASE+APPDATA.wnd_clientbox.left] - rol eax,16 - mov [esp+36],eax - ret + mov edi,[CURRENT_TASK] + shl edi,8 + sub ax,word[edi+SLOT_BASE+APPDATA.wnd_clientbox.top] + rol eax,16 + sub ax,word[edi+SLOT_BASE+APPDATA.wnd_clientbox.left] + rol eax,16 + mov [esp+36],eax + ret msbutton: - movzx eax,byte [BTN_DOWN] - mov [esp+36],eax - ret + movzx eax,byte [BTN_DOWN] + mov [esp+36],eax + ret msset: - ret + ret app_load_cursor: - add ebx, new_app_base - cmp ebx, new_app_base - jb msset - stdcall load_cursor, ebx, ecx - mov [esp+36], eax - ret + add ebx, new_app_base + cmp ebx, new_app_base + jb msset + stdcall load_cursor, ebx, ecx + mov [esp+36], eax + ret app_set_cursor: - stdcall set_cursor, ebx - mov [esp+36], eax - ret + stdcall set_cursor, ebx + mov [esp+36], eax + ret app_delete_cursor: - stdcall delete_cursor, ebx - mov [esp+36], eax - ret + stdcall delete_cursor, ebx + mov [esp+36], eax + ret is_input: push edx - mov dx,word [midisp] - in al,dx - and al,0x80 - pop edx + mov dx,word [midisp] + in al,dx + and al,0x80 + pop edx ret is_output: push edx - mov dx,word [midisp] - in al,dx - and al,0x40 - pop edx + mov dx,word [midisp] + in al,dx + and al,0x40 + pop edx ret get_mpu_in: push edx - mov dx,word [mididp] - in al,dx - pop edx + mov dx,word [mididp] + in al,dx + pop edx ret put_mpu_out: push edx - mov dx,word [mididp] - out dx,al - pop edx + mov dx,word [mididp] + out dx,al + pop edx ret @@ -1842,28 +1844,28 @@ setuart: su1: call is_output - cmp al,0 - jnz su1 - mov dx,word [midisp] - mov al,0xff - out dx,al + cmp al,0 + jnz su1 + mov dx,word [midisp] + mov al,0xff + out dx,al su2: - mov dx,word [midisp] - mov al,0xff - out dx,al + mov dx,word [midisp] + mov al,0xff + out dx,al call is_input - cmp al,0 - jnz su2 + cmp al,0 + jnz su2 call get_mpu_in - cmp al,0xfe - jnz su2 + cmp al,0xfe + jnz su2 su3: call is_output - cmp al,0 - jnz su3 - mov dx,word [midisp] - mov al,0x3f - out dx,al + cmp al,0 + jnz su3 + mov dx,word [midisp] + mov al,0x3f + out dx,al ret @@ -1916,7 +1918,7 @@ sys_end: mov eax,[TASK_BASE] mov [eax+TASKDATA.state], 3 ; terminate this program - waitterm: ; wait here for termination + waitterm: ; wait here for termination mov eax,5 call delay_hs jmp waitterm @@ -1924,39 +1926,39 @@ sys_end: iglobal align 4 sys_system_table: - dd sysfn_shutdown ; 1 = system shutdown - dd sysfn_terminate ; 2 = terminate thread - dd sysfn_activate ; 3 = activate window - dd sysfn_getidletime ; 4 = get idle time - dd sysfn_getcpuclock ; 5 = get cpu clock - dd sysfn_saveramdisk ; 6 = save ramdisk - dd sysfn_getactive ; 7 = get active window - dd sysfn_sound_flag ; 8 = get/set sound_flag - dd sysfn_shutdown_param ; 9 = shutdown with parameter - dd sysfn_minimize ; 10 = minimize window - dd sysfn_getdiskinfo ; 11 = get disk subsystem info - dd sysfn_lastkey ; 12 = get last pressed key - dd sysfn_getversion ; 13 = get kernel version - dd sysfn_waitretrace ; 14 = wait retrace - dd sysfn_centermouse ; 15 = center mouse cursor - dd sysfn_getfreemem ; 16 = get free memory size - dd sysfn_getallmem ; 17 = get total memory size - dd sysfn_terminate2 ; 18 = terminate thread using PID - ; instead of slot - dd sysfn_mouse_acceleration; 19 = set/get mouse acceleration - dd sysfn_meminfo ; 20 = get extended memory info + dd sysfn_shutdown ; 1 = system shutdown + dd sysfn_terminate ; 2 = terminate thread + dd sysfn_activate ; 3 = activate window + dd sysfn_getidletime ; 4 = get idle time + dd sysfn_getcpuclock ; 5 = get cpu clock + dd sysfn_saveramdisk ; 6 = save ramdisk + dd sysfn_getactive ; 7 = get active window + dd sysfn_sound_flag ; 8 = get/set sound_flag + dd sysfn_shutdown_param ; 9 = shutdown with parameter + dd sysfn_minimize ; 10 = minimize window + dd sysfn_getdiskinfo ; 11 = get disk subsystem info + dd sysfn_lastkey ; 12 = get last pressed key + dd sysfn_getversion ; 13 = get kernel version + dd sysfn_waitretrace ; 14 = wait retrace + dd sysfn_centermouse ; 15 = center mouse cursor + dd sysfn_getfreemem ; 16 = get free memory size + dd sysfn_getallmem ; 17 = get total memory size + dd sysfn_terminate2 ; 18 = terminate thread using PID + ; instead of slot + dd sysfn_mouse_acceleration; 19 = set/get mouse acceleration + dd sysfn_meminfo ; 20 = get extended memory info sysfn_num = ($ - sys_system_table)/4 endg sys_system: - dec eax - cmp eax, sysfn_num - jae @f - jmp dword [sys_system_table + eax*4] + dec eax + cmp eax, sysfn_num + jae @f + jmp dword [sys_system_table + eax*4] @@: - ret + ret -sysfn_shutdown: ; 18.1 = BOOT +sysfn_shutdown: ; 18.1 = BOOT mov [0x2f0000+0x9030],byte 0 for_shutdown_parameter: @@ -1970,7 +1972,7 @@ sysfn_shutdown: ; 18.1 = BOOT shutdown_processes: dd 0x0 endg -sysfn_terminate: ; 18.2 = TERMINATE +sysfn_terminate: ; 18.2 = TERMINATE cmp ebx,2 jb noprocessterminate mov edx,[TASK_COUNT] @@ -1984,7 +1986,7 @@ sysfn_terminate: ; 18.2 = TERMINATE jz noprocessterminate ;call MEM_Heap_Lock ;guarantee that process isn't working with heap - mov [ebx],byte 3 ; clear possible i40's + mov [ebx],byte 3 ; clear possible i40's ;call MEM_Heap_UnLock cmp edx,[application_table_status] ; clear app table stat @@ -1999,7 +2001,7 @@ sysfn_terminate2: .table_status: cli cmp [application_table_status],0 - je .stf + je .stf sti call change_task jmp .table_status @@ -2008,7 +2010,7 @@ sysfn_terminate2: mov eax,ebx call pid_to_slot test eax,eax - jz .not_found + jz .not_found mov ebx,eax cli call sysfn_terminate @@ -2018,10 +2020,10 @@ sysfn_terminate2: ret .not_found: mov [application_table_status],0 - or dword [esp+36],-1 + or dword [esp+36],-1 ret -sysfn_activate: ; 18.3 = ACTIVATE WINDOW +sysfn_activate: ; 18.3 = ACTIVATE WINDOW cmp ebx,2 jb .nowindowactivate cmp ebx,[TASK_COUNT] @@ -2042,12 +2044,12 @@ sysfn_activate: ; 18.3 = ACTIVATE WINDOW .nowindowactivate: ret -sysfn_getidletime: ; 18.4 = GET IDLETIME +sysfn_getidletime: ; 18.4 = GET IDLETIME mov eax,[idleusesec] mov [esp+36], eax ret -sysfn_getcpuclock: ; 18.5 = GET TSC/SEC +sysfn_getcpuclock: ; 18.5 = GET TSC/SEC mov eax,[CPU_FREQ] mov [esp+36], eax ret @@ -2057,13 +2059,13 @@ sysfn_getcpuclock: ; 18.5 = GET TSC/SEC include 'blkdev/rdsave.inc' ;!!!!!!!!!!!!!!!!!!!!!!!! -sysfn_getactive: ; 18.7 = get active window +sysfn_getactive: ; 18.7 = get active window mov eax, [TASK_COUNT] movzx eax, word [WIN_POS + eax*2] mov [esp+36],eax ret -sysfn_sound_flag: ; 18.8 = get/set sound_flag +sysfn_sound_flag: ; 18.8 = get/set sound_flag cmp ebx,1 jne nogetsoundflag movzx eax,byte [sound_flag] ; get sound_flag @@ -2076,7 +2078,7 @@ sysfn_sound_flag: ; 18.8 = get/set sound_flag nosoundflag: ret -sysfn_shutdown_param: ; 18.9 = system shutdown with param +sysfn_shutdown_param: ; 18.9 = system shutdown with param cmp ebx,1 jl exit_for_anyone cmp ebx,4 @@ -2084,12 +2086,12 @@ sysfn_shutdown_param: ; 18.9 = system shutdown with param mov [0x2f0000+0x9030],bl jmp for_shutdown_parameter -sysfn_minimize: ; 18.10 = minimize window +sysfn_minimize: ; 18.10 = minimize window mov [window_minimize],1 exit_for_anyone: ret -sysfn_getdiskinfo: ; 18.11 = get disk info table +sysfn_getdiskinfo: ; 18.11 = get disk info table cmp ebx,1 jnz full_table small_table: @@ -2113,11 +2115,11 @@ sysfn_getdiskinfo: ; 18.11 = get disk info table rep movsd ret -sysfn_lastkey: ; 18.12 = return 0 (backward compatibility) - and dword [esp+36], 0 - ret +sysfn_lastkey: ; 18.12 = return 0 (backward compatibility) + and dword [esp+36], 0 + ret -sysfn_getversion: ; 18.13 = get kernel ID and version +sysfn_getversion: ; 18.13 = get kernel ID and version mov edi,[TASK_BASE] mov edi,[edi+TASKDATA.mem_start] add edi,ebx @@ -2138,7 +2140,7 @@ sysfn_waitretrace: ; 18.14 = sys wait retrace mov [esp+36],dword 0 ret -sysfn_centermouse: ; 18.15 = mouse centered +sysfn_centermouse: ; 18.15 = mouse centered call mouse_centered mov [esp+36],dword 0 ret @@ -2193,7 +2195,7 @@ uglobal screen_workarea RECT ;// mike.dld, 2006-29-01 ] window_minimize db 0 -sound_flag db 0 +sound_flag db 0 endg iglobal @@ -2205,8 +2207,8 @@ version_end: endg UID_NONE=0 -UID_MENUETOS=1 ;official -UID_KOLIBRI=2 ;russian +UID_MENUETOS=1 ;official +UID_KOLIBRI=2 ;russian sys_cachetodiskette: ; pushad @@ -2249,7 +2251,7 @@ sys_cachetodiskette: call save_image mov [esp+36],dword 0 cmp [FDC_Status],0 - je yes_floppy_save + je yes_floppy_save no_floppy_b_save: mov [esp+36],dword 1 yes_floppy_save: @@ -2261,12 +2263,12 @@ endg sys_background: - cmp eax,1 ; BACKGROUND SIZE + cmp eax,1 ; BACKGROUND SIZE jnz nosb1 cmp ebx,0 - je sbgrr + je sbgrr cmp ecx,0 - je sbgrr + je sbgrr mov [display_data-8],ebx mov [display_data-4],ecx ; mov [bgrchanged],1 @@ -2274,7 +2276,7 @@ sys_background: ret nosb1: - cmp eax,2 ; SET PIXEL + cmp eax,2 ; SET PIXEL jnz nosb2 mov edx,0x160000-16 cmp edx,ebx @@ -2288,7 +2290,7 @@ sys_background: ret nosb2: - cmp eax,3 ; DRAW BACKGROUND + cmp eax,3 ; DRAW BACKGROUND jnz nosb3 draw_background_temp: ; cmp [bgrchanged],1 ;0 @@ -2301,17 +2303,17 @@ draw_background_temp: ret nosb3: - cmp eax,4 ; TILED / STRETCHED + cmp eax,4 ; TILED / STRETCHED jnz nosb4 cmp ebx,[display_data-12] - je nosb41 + je nosb41 mov [display_data-12],ebx ; mov [bgrchanged],1 nosb41: ret nosb4: - cmp eax,5 ; BLOCK MOVE TO BGR + cmp eax,5 ; BLOCK MOVE TO BGR jnz nosb5 ; bughere mov edi, [TASK_BASE] @@ -2322,12 +2324,12 @@ draw_background_temp: mov ebx, ecx add ecx, edx cmp ecx, 0x160000-16 - ja .fin + ja .fin ; add edi, 0x300000 add ebx, IMG_BACKGROUND mov ecx, edx cmp ecx, 0x160000-16 - ja .fin + ja .fin ; mov [bgrchanged],1 ; cld ; rep movsb @@ -2343,7 +2345,7 @@ align 4 sys_getbackground: - cmp eax,1 ; SIZE + cmp eax,1 ; SIZE jnz nogb1 mov eax,[display_data-8] shl eax,16 @@ -2352,7 +2354,7 @@ sys_getbackground: ret nogb1: - cmp eax,2 ; PIXEL + cmp eax,2 ; PIXEL jnz nogb2 mov edx,0x160000-16 cmp edx,ebx @@ -2363,7 +2365,7 @@ sys_getbackground: ret nogb2: - cmp eax,4 ; TILED / STRETCHED + cmp eax,4 ; TILED / STRETCHED jnz nogb4 mov eax,[display_data-12] nogb4: @@ -2376,13 +2378,13 @@ align 4 sys_getkey: mov [esp+36],dword 1 ; test main buffer - mov ebx, [CURRENT_TASK] ; TOP OF WINDOW STACK + mov ebx, [CURRENT_TASK] ; TOP OF WINDOW STACK movzx ecx,word [WIN_STACK + ebx * 2] mov edx,[TASK_COUNT] cmp ecx,edx jne .finish cmp [KEY_COUNT],byte 0 - je .finish + je .finish movzx eax,byte [KEY_BUFF] shl eax,8 push eax @@ -2403,28 +2405,28 @@ sys_getkey: ret .finish: ; test hotkeys buffer - mov ecx, hotkey_buffer + mov ecx, hotkey_buffer @@: - cmp [ecx], ebx - jz .found - add ecx, 8 - cmp ecx, hotkey_buffer+120*8 - jb @b - ret + cmp [ecx], ebx + jz .found + add ecx, 8 + cmp ecx, hotkey_buffer+120*8 + jb @b + ret .found: - mov ax, [ecx+6] - shl eax, 16 - mov ah, [ecx+4] - mov al, 2 - and dword [ecx+4], 0 - and dword [ecx], 0 - jmp .ret_eax + mov ax, [ecx+6] + shl eax, 16 + mov ah, [ecx+4] + mov al, 2 + and dword [ecx+4], 0 + and dword [ecx], 0 + jmp .ret_eax align 4 sys_getbutton: - mov ebx, [CURRENT_TASK] ; TOP OF WINDOW STACK + mov ebx, [CURRENT_TASK] ; TOP OF WINDOW STACK mov [esp+36],dword 1 movzx ecx, word [WIN_STACK + ebx * 2] mov edx, [TASK_COUNT] ; less than 256 processes @@ -2432,7 +2434,7 @@ sys_getbutton: jne .exit movzx eax,byte [BTN_COUNT] test eax,eax - jz .exit + jz .exit mov eax,[BTN_BUFF] shl eax,8 mov [BTN_COUNT],byte 0 @@ -2459,13 +2461,13 @@ sys_cpuusage: mov edi,[TASK_BASE] ; eax = return area add eax,[edi + TASKDATA.mem_start] - cmp ebx,-1 ; who am I ? + cmp ebx,-1 ; who am I ? jne no_who_am_i mov ebx,[CURRENT_TASK] no_who_am_i: - push eax ; return area - push ebx ; process number + push eax ; return area + push ebx ; process number push ebx push ebx @@ -2499,9 +2501,9 @@ sys_cpuusage: xor eax,eax mov edx,0x100000*16 - pop ecx ; get gdt of tss + pop ecx ; get gdt of tss cmp ecx,1 - je os_mem + je os_mem shl ecx,8 mov edx,[SLOT_BASE+ecx+APPDATA.mem_size] ;0x8c mov eax,std_application_base_address @@ -2569,73 +2571,73 @@ sys_cpuusage: align 4 sys_clock: - cli + cli ; Mikhail Lisovin xx Jan 2005 - @@: mov al, 10 - out 0x70, al - in al, 0x71 - test al, al - jns @f - mov esi, 1 - call delay_ms - jmp @b + @@: mov al, 10 + out 0x70, al + in al, 0x71 + test al, al + jns @f + mov esi, 1 + call delay_ms + jmp @b @@: ; end Lisovin's fix - xor al,al ; seconds - out 0x70,al - in al,0x71 - movzx ecx,al - mov al,02 ; minutes - shl ecx,16 - out 0x70,al - in al,0x71 - movzx edx,al - mov al,04 ; hours - shl edx,8 - out 0x70,al - in al,0x71 - add ecx,edx - movzx edx,al - add ecx,edx - sti - mov [esp+36],ecx - ret + xor al,al ; seconds + out 0x70,al + in al,0x71 + movzx ecx,al + mov al,02 ; minutes + shl ecx,16 + out 0x70,al + in al,0x71 + movzx edx,al + mov al,04 ; hours + shl edx,8 + out 0x70,al + in al,0x71 + add ecx,edx + movzx edx,al + add ecx,edx + sti + mov [esp+36],ecx + ret align 4 sys_date: - cli + cli - @@: mov al, 10 - out 0x70, al - in al, 0x71 - test al, al - jns @f - mov esi, 1 - call delay_ms - jmp @b + @@: mov al, 10 + out 0x70, al + in al, 0x71 + test al, al + jns @f + mov esi, 1 + call delay_ms + jmp @b @@: - mov ch,0 - mov al,7 ; date - out 0x70,al - in al,0x71 - mov cl,al - mov al,8 ; month - shl ecx,16 - out 0x70,al - in al,0x71 - mov ch,al - mov al,9 ; year - out 0x70,al - in al,0x71 - mov cl,al - sti - mov [esp+36],ecx - ret + mov ch,0 + mov al,7 ; date + out 0x70,al + in al,0x71 + mov cl,al + mov al,8 ; month + shl ecx,16 + out 0x70,al + in al,0x71 + mov ch,al + mov al,9 ; year + out 0x70,al + in al,0x71 + mov cl,al + sti + mov [esp+36],ecx + ret ; redraw status @@ -2653,7 +2655,7 @@ sys_redrawstat: mov edi,[BTN_ADDR] cmp [edi],dword 0 ; empty button list ? - je end_of_buttons_away + je end_of_buttons_away movzx ebx,word [edi] inc ebx @@ -2663,7 +2665,7 @@ sys_redrawstat: sys_newba: dec ebx - jz end_of_buttons_away + jz end_of_buttons_away add eax,0x10 cmp cx,[eax] @@ -2700,7 +2702,7 @@ sys_redrawstat: mov [edx+RECT.bottom],eax mov edi,[TASK_BASE] - or [edi-twdw+WDATA.fl_wdrawn], 1 ; no new position & buttons from app + or [edi-twdw+WDATA.fl_wdrawn], 1 ; no new position & buttons from app call sys_window_mouse @@ -2782,108 +2784,108 @@ sys_drawwindow: draw_window_caption: - inc [mouse_pause] - call [disable_mouse] + inc [mouse_pause] + call [disable_mouse] - xor eax,eax - mov edx,[TASK_COUNT] - movzx edx,word[WIN_POS+edx*2] - cmp edx,[CURRENT_TASK] - jne @f - inc eax - @@: mov edx,[CURRENT_TASK] - shl edx,5 - add edx,window_data - movzx ebx,[edx+WDATA.fl_wstyle] - and bl,0x0F - cmp bl,3 - jne .not_style_3 + xor eax,eax + mov edx,[TASK_COUNT] + movzx edx,word[WIN_POS+edx*2] + cmp edx,[CURRENT_TASK] + jne @f + inc eax + @@: mov edx,[CURRENT_TASK] + shl edx,5 + add edx,window_data + movzx ebx,[edx+WDATA.fl_wstyle] + and bl,0x0F + cmp bl,3 + jne .not_style_3 - push edx - call drawwindow_IV_caption - add esp,4 - jmp .2 + push edx + call drawwindow_IV_caption + add esp,4 + jmp .2 .not_style_3: - cmp bl,2 - jne .not_style_2 + cmp bl,2 + jne .not_style_2 - call drawwindow_III_caption - jmp .2 + call drawwindow_III_caption + jmp .2 .not_style_2: - cmp bl,0 - jne .2 + cmp bl,0 + jne .2 - call drawwindow_I_caption + call drawwindow_I_caption ;-------------------------------------------------------------- - .2: ;jmp @f - mov edi,[CURRENT_TASK] - 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 - jz @f - add ecx,[edi+twdw+TASKDATA.mem_start] + .2: ;jmp @f + mov edi,[CURRENT_TASK] + 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 + jz @f + add ecx,[edi+twdw+TASKDATA.mem_start] - movzx eax,[edi+window_data+WDATA.fl_wstyle] - and al,0x0F - cmp al,3 - jne .not_skinned + movzx eax,[edi+window_data+WDATA.fl_wstyle] + and al,0x0F + cmp al,3 + jne .not_skinned - mov ebp,[edi+window_data+WDATA.box.left-2] - mov bp,word[edi+window_data+WDATA.box.top] - movzx eax,word[edi+window_data+WDATA.box.width] - sub ax,[_skinmargins.left] - sub ax,[_skinmargins.right] - cwde - cdq - mov ebx,6 - idiv ebx - 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 - jmp .dodraw + mov ebp,[edi+window_data+WDATA.box.left-2] + mov bp,word[edi+window_data+WDATA.box.top] + movzx eax,word[edi+window_data+WDATA.box.width] + sub ax,[_skinmargins.left] + sub ax,[_skinmargins.right] + cwde + cdq + mov ebx,6 + idiv ebx + 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 + jmp .dodraw .not_skinned: - cmp al,1 - je @f + cmp al,1 + je @f - mov ebp,[edi+window_data+WDATA.box.left-2] - mov bp,word[edi+window_data+WDATA.box.top] - movzx eax,word[edi+window_data+WDATA.box.width] - sub eax,16 - cwde - cdq - mov ebx,6 - idiv ebx - or eax,eax - js @f - mov edx,eax - mov eax,0x00080007 - add eax,ebp + mov ebp,[edi+window_data+WDATA.box.left-2] + mov bp,word[edi+window_data+WDATA.box.top] + movzx eax,word[edi+window_data+WDATA.box.width] + sub eax,16 + cwde + cdq + mov ebx,6 + idiv ebx + or eax,eax + js @f + mov edx,eax + mov eax,0x00080007 + add eax,ebp .dodraw: - mov ebx,[common_colours+16];0x00FFFFFF - or ebx, 0x80000000 - xor edi,edi - call dtext + mov ebx,[common_colours+16];0x00FFFFFF + or ebx, 0x80000000 + xor edi,edi + call dtext @@: ;-------------------------------------------------------------- - dec [mouse_pause] - call [draw_pointer] - ret + dec [mouse_pause] + call [draw_pointer] + ret iglobal align 4 @@ -2895,50 +2897,50 @@ window_topleft dd \ endg set_window_clientbox: - push eax ecx edi + push eax ecx edi - mov eax,[_skinh] - mov [window_topleft+4*7],eax + mov eax,[_skinh] + mov [window_topleft+4*7],eax - mov ecx,edi - sub edi,window_data - shl edi,3 - test [ecx+WDATA.fl_wstyle],WSTYLE_CLIENTRELATIVE - jz @f + mov ecx,edi + sub edi,window_data + shl edi,3 + test [ecx+WDATA.fl_wstyle],WSTYLE_CLIENTRELATIVE + jz @f - movzx eax,[ecx+WDATA.fl_wstyle] - and eax,0x0F - mov eax,[eax*8+window_topleft+0] - mov [edi+SLOT_BASE+APPDATA.wnd_clientbox.left],eax - shl eax,1 - neg eax - add eax,[ecx+WDATA.box.width] - mov [edi+SLOT_BASE+APPDATA.wnd_clientbox.width],eax + movzx eax,[ecx+WDATA.fl_wstyle] + and eax,0x0F + mov eax,[eax*8+window_topleft+0] + mov [edi+SLOT_BASE+APPDATA.wnd_clientbox.left],eax + shl eax,1 + neg eax + add eax,[ecx+WDATA.box.width] + mov [edi+SLOT_BASE+APPDATA.wnd_clientbox.width],eax - movzx eax,[ecx+WDATA.fl_wstyle] - and eax,0x0F - push [eax*8+window_topleft+0] - mov eax,[eax*8+window_topleft+4] - mov [edi+SLOT_BASE+APPDATA.wnd_clientbox.top],eax - neg eax - sub eax,[esp] - add eax,[ecx+WDATA.box.height] - mov [edi+SLOT_BASE+APPDATA.wnd_clientbox.height],eax - add esp,4 + movzx eax,[ecx+WDATA.fl_wstyle] + and eax,0x0F + push [eax*8+window_topleft+0] + mov eax,[eax*8+window_topleft+4] + mov [edi+SLOT_BASE+APPDATA.wnd_clientbox.top],eax + neg eax + sub eax,[esp] + add eax,[ecx+WDATA.box.height] + mov [edi+SLOT_BASE+APPDATA.wnd_clientbox.height],eax + add esp,4 - pop edi ecx eax - ret + pop edi ecx eax + ret @@: - xor eax,eax - mov [edi+SLOT_BASE+APPDATA.wnd_clientbox.left],eax - mov [edi+SLOT_BASE+APPDATA.wnd_clientbox.top],eax - mov eax,[ecx+WDATA.box.width] - mov [edi+SLOT_BASE+APPDATA.wnd_clientbox.width],eax - mov eax,[ecx+WDATA.box.height] - mov [edi+SLOT_BASE+APPDATA.wnd_clientbox.height],eax + xor eax,eax + mov [edi+SLOT_BASE+APPDATA.wnd_clientbox.left],eax + mov [edi+SLOT_BASE+APPDATA.wnd_clientbox.top],eax + mov eax,[ecx+WDATA.box.width] + mov [edi+SLOT_BASE+APPDATA.wnd_clientbox.width],eax + mov eax,[ecx+WDATA.box.height] + mov [edi+SLOT_BASE+APPDATA.wnd_clientbox.height],eax - pop edi ecx eax - ret + pop edi ecx eax + ret sys_set_window: @@ -2972,27 +2974,27 @@ sys_set_window: call set_window_clientbox - push ecx esi edi ; save for window fullscreen/resize + push ecx esi edi ; save for window fullscreen/resize ;mov esi,edi - mov cl,[edi+WDATA.fl_wstyle] + mov cl,[edi+WDATA.fl_wstyle] sub edi,window_data shl edi,3 add edi,SLOT_BASE - and cl,0x0F - mov [edi+APPDATA.wnd_caption],0 - cmp cl,3 - jne @f - mov [edi+APPDATA.wnd_caption],esi - @@: mov esi,[esp+0] + and cl,0x0F + mov [edi+APPDATA.wnd_caption],0 + cmp cl,3 + jne @f + mov [edi+APPDATA.wnd_caption],esi + @@: mov esi,[esp+0] add edi, APPDATA.saved_box - movsd - movsd - movsd - movsd + movsd + movsd + movsd + movsd pop edi esi ecx push eax ebx ecx edx @@ -3007,11 +3009,11 @@ sys_set_window: call calculatescreen pop edx ecx ebx eax - mov [KEY_COUNT],byte 0 ; empty keyboard buffer - mov [BTN_COUNT],byte 0 ; empty button buffer + mov [KEY_COUNT],byte 0 ; empty keyboard buffer + mov [BTN_COUNT],byte 0 ; empty button buffer newd: - mov [edi+WDATA.fl_redraw],byte 0 ; no redraw + mov [edi+WDATA.fl_redraw],byte 0 ; no redraw mov edx,edi ret @@ -3019,18 +3021,18 @@ sys_set_window: syscall_windowsettings: .set_window_caption: - dec eax ; subfunction #1 - set window caption - jnz .get_window_caption + dec eax ; subfunction #1 - set window caption + jnz .get_window_caption - ; NOTE: only window owner thread can set its caption, - ; so there's no parameter for PID/TID + ; NOTE: only window owner thread can set its caption, + ; so there's no parameter for PID/TID - mov edi,[CURRENT_TASK] - shl edi,5 + mov edi,[CURRENT_TASK] + shl edi,5 - ; have to check if caption is within application memory limit - ; check is trivial, and if application resizes its memory, - ; caption still can become over bounds + ; have to check if caption is within application memory limit + ; check is trivial, and if application resizes its memory, + ; caption still can become over bounds ; diamond, 31.10.2006: check removed because with new memory manager ; there can be valid data after APPDATA.mem_size bound ; mov ecx,[edi*8+SLOT_BASE+APPDATA.mem_size] @@ -3038,120 +3040,120 @@ syscall_windowsettings: ; cmp ebx,ecx ; ja .exit_fail - mov [edi*8+SLOT_BASE+APPDATA.wnd_caption],ebx - or [edi+window_data+WDATA.fl_wstyle],WSTYLE_HASCAPTION + mov [edi*8+SLOT_BASE+APPDATA.wnd_caption],ebx + or [edi+window_data+WDATA.fl_wstyle],WSTYLE_HASCAPTION - call draw_window_caption + call draw_window_caption - xor eax,eax ; eax = 0 (success) - ret + xor eax,eax ; eax = 0 (success) + ret .get_window_caption: - dec eax ; subfunction #2 - get window caption - jnz .exit_fail + dec eax ; subfunction #2 - get window caption + jnz .exit_fail - ; not implemented yet + ; not implemented yet .exit_fail: - xor eax,eax - inc eax ; eax = 1 (fail) - ret + xor eax,eax + inc eax ; eax = 1 (fail) + ret sys_window_move: - mov edi,[CURRENT_TASK] - shl edi,5 - add edi,window_data + mov edi,[CURRENT_TASK] + shl edi,5 + add edi,window_data - test [edi+WDATA.fl_wstate],WSTATE_MAXIMIZED - jnz .window_move_return + test [edi+WDATA.fl_wstate],WSTATE_MAXIMIZED + jnz .window_move_return - push dword [edi + WDATA.box.left] ; save old coordinates - push dword [edi + WDATA.box.top] - push dword [edi + WDATA.box.width] - push dword [edi + WDATA.box.height] + push dword [edi + WDATA.box.left] ; save old coordinates + push dword [edi + WDATA.box.top] + push dword [edi + WDATA.box.width] + push dword [edi + WDATA.box.height] - cmp eax,-1 ; set new position and size - je .no_x_reposition - mov [edi + WDATA.box.left], eax + cmp eax,-1 ; set new position and size + je .no_x_reposition + mov [edi + WDATA.box.left], eax .no_x_reposition: - cmp ebx,-1 - je .no_y_reposition - mov [edi + WDATA.box.top], ebx + cmp ebx,-1 + je .no_y_reposition + mov [edi + WDATA.box.top], ebx .no_y_reposition: - test [edi+WDATA.fl_wstate],WSTATE_ROLLEDUP - jnz .no_y_resizing + test [edi+WDATA.fl_wstate],WSTATE_ROLLEDUP + jnz .no_y_resizing - cmp ecx,-1 - je .no_x_resizing - mov [edi + WDATA.box.width], ecx + cmp ecx,-1 + je .no_x_resizing + mov [edi + WDATA.box.width], ecx .no_x_resizing: - cmp edx,-1 - je .no_y_resizing - mov [edi + WDATA.box.height], edx + cmp edx,-1 + je .no_y_resizing + mov [edi + WDATA.box.height], edx .no_y_resizing: - call check_window_position - call set_window_clientbox + call check_window_position + call set_window_clientbox - pushad ; save for window fullscreen/resize - mov esi,edi - sub edi,window_data - shr edi,5 - shl edi,8 - add edi, SLOT_BASE + APPDATA.saved_box - mov ecx,4 - cld - rep movsd - popad + pushad ; save for window fullscreen/resize + mov esi,edi + sub edi,window_data + shr edi,5 + shl edi,8 + add edi, SLOT_BASE + APPDATA.saved_box + mov ecx,4 + cld + rep movsd + popad - pushad ; calculcate screen at new position - mov eax, [edi + WDATA.box.left] - mov ebx, [edi + WDATA.box.top] - mov ecx, [edi + WDATA.box.width] - mov edx, [edi + WDATA.box.height] - add ecx,eax - add edx,ebx + pushad ; calculcate screen at new position + mov eax, [edi + WDATA.box.left] + mov ebx, [edi + WDATA.box.top] + mov ecx, [edi + WDATA.box.width] + mov edx, [edi + WDATA.box.height] + add ecx,eax + add edx,ebx - call calculatescreen - popad + call calculatescreen + popad - pop edx ; calculcate screen at old position - pop ecx - pop ebx - pop eax - add ecx,eax - add edx,ebx - mov [dlx],eax ; save for drawlimits - mov [dly],ebx - mov [dlxe],ecx - mov [dlye],edx - call calculatescreen + pop edx ; calculcate screen at old position + pop ecx + pop ebx + pop eax + add ecx,eax + add edx,ebx + mov [dlx],eax ; save for drawlimits + mov [dly],ebx + mov [dlxe],ecx + mov [dlye],edx + call calculatescreen - mov [edi + WDATA.fl_redraw], 1 ; flag the process as redraw + mov [edi + WDATA.fl_redraw], 1 ; flag the process as redraw - mov eax,edi ; redraw screen at old position - xor esi,esi - call redrawscreen + mov eax,edi ; redraw screen at old position + xor esi,esi + call redrawscreen - mov [DONT_DRAW_MOUSE],byte 0 ; mouse pointer - mov [MOUSE_BACKGROUND],byte 0 ; no mouse under - mov [MOUSE_DOWN],byte 0 ; react to mouse up/down + mov [DONT_DRAW_MOUSE],byte 0 ; mouse pointer + mov [MOUSE_BACKGROUND],byte 0 ; no mouse under + mov [MOUSE_DOWN],byte 0 ; react to mouse up/down - mov ecx,10 ; wait 1/10 second + mov ecx,10 ; wait 1/10 second .wmrl3: - call [draw_pointer] - mov eax,1 - call delay_hs - loop .wmrl3 + call [draw_pointer] + mov eax,1 + call delay_hs + loop .wmrl3 - mov [window_move_pr],0 + mov [window_move_pr],0 .window_move_return: - ret + ret ;type_background_1: ; cmp [0xfff0],byte 0 ; background update ? @@ -3284,30 +3286,30 @@ ret ; check if pixel is allowed to be drawn checkpixel: - push eax edx + push eax edx - mov edx,[ScreenWidth] ; screen x size - inc edx - imul edx, ebx - mov dl, [eax+edx+display_data] ; lea eax, [...] + mov edx,[ScreenWidth] ; screen x size + inc edx + imul edx, ebx + mov dl, [eax+edx+display_data] ; lea eax, [...] - xor ecx, ecx - mov eax, [CURRENT_TASK] - cmp al, dl - setne cl + xor ecx, ecx + mov eax, [CURRENT_TASK] + cmp al, dl + setne cl - pop edx eax - ret + pop edx eax + ret uglobal - mouse_active db 0 + mouse_active db 0 endg iglobal cpustring db '/RD/1/CPU',0 endg uglobal -background_defined db 0 ; diamond, 11.04.2006 +background_defined db 0 ; diamond, 11.04.2006 endg align 4 @@ -3318,7 +3320,7 @@ checkmisc: cmp [ctrl_alt_del], 1 jne nocpustart mov ebp, cpustring - call fs_execute ; SPraid 8.03.2007 + call fs_execute ; SPraid 8.03.2007 ;lea esi,[ebp+6] ;xor ebx,ebx ; no parameters ;xor edx,edx ; no flags @@ -3332,15 +3334,15 @@ checkmisc: mov ecx, [TASK_COUNT] set_mouse_event: add edi, 256 - or [edi+SLOT_BASE+APPDATA.event_mask], dword 00100000b + or [edi+SLOT_BASE+APPDATA.event_mask], dword 00100000b loop set_mouse_event mouse_not_active: - cmp [REDRAW_BACKGROUND],byte 0 ; background update ? - jz nobackgr + cmp [REDRAW_BACKGROUND],byte 0 ; background update ? + jz nobackgr cmp [background_defined], 0 - jz nobackgr + jz nobackgr mov [REDRAW_BACKGROUND],byte 2 call change_task mov [draw_data+32 + RECT.left],dword 0 @@ -3359,7 +3361,7 @@ checkmisc: ; system shutdown request cmp [SYS_SHUTDOWN],byte 0 - je noshutdown + je noshutdown mov edx,[shutdown_processes] sub dl,2 @@ -3382,21 +3384,21 @@ checkmisc: dec byte [SYS_SHUTDOWN] cmp [SYS_SHUTDOWN],byte 0 - je system_shutdown + je system_shutdown noshutdown: - mov eax,[TASK_COUNT] ; termination + mov eax,[TASK_COUNT] ; termination mov ebx,TASK_DATA+TASKDATA.state mov esi,1 newct: mov cl,[ebx] cmp cl,byte 3 - jz terminate + jz terminate cmp cl,byte 4 - jz terminate + jz terminate add ebx,0x20 inc esi @@ -3414,129 +3416,129 @@ redrawscreen: ; eax , if process window_data base is eax, do not set flag/limits - pushad - push eax + pushad + push eax ;;; mov eax,2 ;;; call delay_hs - ;mov ecx,0 ; redraw flags for apps - xor ecx,ecx + ;mov ecx,0 ; redraw flags for apps + xor ecx,ecx newdw2: - inc ecx - push ecx + inc ecx + push ecx - mov eax,ecx - shl eax,5 - add eax,window_data + mov eax,ecx + shl eax,5 + add eax,window_data - cmp eax,[esp+4] - je not_this_task - ; check if window in redraw area - mov edi,eax + cmp eax,[esp+4] + je not_this_task + ; check if window in redraw area + mov edi,eax - cmp ecx,1 ; limit for background - jz bgli + cmp ecx,1 ; limit for background + jz bgli - mov eax, [edi + WDATA.box.left] - mov ebx, [edi + WDATA.box.top] - mov ecx, [edi + WDATA.box.width] - mov edx, [edi + WDATA.box.height] - add ecx,eax - add edx,ebx + mov eax, [edi + WDATA.box.left] + mov ebx, [edi + WDATA.box.top] + mov ecx, [edi + WDATA.box.width] + mov edx, [edi + WDATA.box.height] + add ecx,eax + add edx,ebx - mov ecx,[dlye] ; ecx = area y end ebx = window y start - cmp ecx,ebx - jb ricino + mov ecx,[dlye] ; ecx = area y end ebx = window y start + cmp ecx,ebx + jb ricino - mov ecx,[dlxe] ; ecx = area x end eax = window x start - cmp ecx,eax - jb ricino + mov ecx,[dlxe] ; ecx = area x end eax = window x start + cmp ecx,eax + jb ricino - mov eax, [edi + WDATA.box.left] - mov ebx, [edi + WDATA.box.top] - mov ecx, [edi + WDATA.box.width] - mov edx, [edi + WDATA.box.height] - add ecx, eax - add edx, ebx + mov eax, [edi + WDATA.box.left] + mov ebx, [edi + WDATA.box.top] + mov ecx, [edi + WDATA.box.width] + mov edx, [edi + WDATA.box.height] + add ecx, eax + add edx, ebx - mov eax,[dly] ; eax = area y start edx = window y end - cmp edx,eax - jb ricino + mov eax,[dly] ; eax = area y start edx = window y end + cmp edx,eax + jb ricino - mov eax,[dlx] ; eax = area x start ecx = window x end - cmp ecx,eax - jb ricino + mov eax,[dlx] ; eax = area x start ecx = window x end + cmp ecx,eax + jb ricino - bgli: + bgli: - cmp edi,esi - jz ricino + cmp edi,esi + jz ricino - mov eax,edi - add eax,draw_data-window_data + mov eax,edi + add eax,draw_data-window_data - mov ebx,[dlx] ; set limits - mov [eax + RECT.left], ebx - mov ebx,[dly] - mov [eax + RECT.top], ebx - mov ebx,[dlxe] - mov [eax + RECT.right], ebx - mov ebx,[dlye] - mov [eax + RECT.bottom], ebx + mov ebx,[dlx] ; set limits + mov [eax + RECT.left], ebx + mov ebx,[dly] + mov [eax + RECT.top], ebx + mov ebx,[dlxe] + mov [eax + RECT.right], ebx + mov ebx,[dlye] + mov [eax + RECT.bottom], ebx - sub eax,draw_data-window_data + sub eax,draw_data-window_data - cmp ecx,1 - jne nobgrd - cmp esi,1 - je newdw8 - call drawbackground + cmp ecx,1 + jne nobgrd + cmp esi,1 + je newdw8 + call drawbackground newdw8: nobgrd: - mov [eax + WDATA.fl_redraw],byte 1 ; mark as redraw + mov [eax + WDATA.fl_redraw],byte 1 ; mark as redraw ricino: not_this_task: - pop ecx + pop ecx - cmp ecx,[TASK_COUNT] - jle newdw2 + cmp ecx,[TASK_COUNT] + jle newdw2 - pop eax - popad + pop eax + popad - ret + ret calculatebackground: ; background - ; all black + ; all black - mov [display_data-8],dword 4 ; size x - mov [display_data-4],dword 2 ; size y + mov [display_data-8],dword 4 ; size x + mov [display_data-4],dword 2 ; size y - mov edi, IMG_BACKGROUND ; set background to black - xor eax, eax - mov ecx, 0x0fff00 / 4 - cld - rep stosd + mov edi, IMG_BACKGROUND ; set background to black + xor eax, eax + mov ecx, 0x0fff00 / 4 + cld + rep stosd - mov edi,display_data ; set os to use all pixels - mov eax,0x01010101 - mov ecx,0x15ff00 / 4 - rep stosd + mov edi,display_data ; set os to use all pixels + mov eax,0x01010101 + mov ecx,0x15ff00 / 4 + rep stosd - mov byte [REDRAW_BACKGROUND], 0 ; do not draw background! + mov byte [REDRAW_BACKGROUND], 0 ; do not draw background! - ret + ret uglobal - imax dd 0x0 + imax dd 0x0 endg @@ -3544,68 +3546,68 @@ endg delay_ms: ; delay in 1/1000 sec - push eax - push ecx + push eax + push ecx - mov ecx,esi - ; - imul ecx, 33941 - shr ecx, 9 - ; + mov ecx,esi + ; + imul ecx, 33941 + shr ecx, 9 + ; - in al,0x61 - and al,0x10 - mov ah,al - cld + in al,0x61 + and al,0x10 + mov ah,al + cld - cnt1: in al,0x61 - and al,0x10 - cmp al,ah - jz cnt1 + cnt1: in al,0x61 + and al,0x10 + cmp al,ah + jz cnt1 - mov ah,al - loop cnt1 + mov ah,al + loop cnt1 - pop ecx - pop eax + pop ecx + pop eax - ret + ret set_app_param: - push edi + push edi - mov edi,[TASK_BASE] - mov [edi+TASKDATA.event_mask],eax + mov edi,[TASK_BASE] + mov [edi+TASKDATA.event_mask],eax - pop edi - ret + pop edi + ret delay_hs: ; delay in 1/100 secs - push eax - push ecx - push edx + push eax + push ecx + push edx - mov edx,[timer_ticks] - add edx,eax + mov edx,[timer_ticks] + add edx,eax newtic: - mov ecx,[timer_ticks] - cmp edx,ecx - jbe zerodelay + mov ecx,[timer_ticks] + cmp edx,ecx + jbe zerodelay - call change_task + call change_task - jmp newtic + jmp newtic zerodelay: - pop edx - pop ecx - pop eax + pop edx + pop ecx + pop eax - ret + ret memmove: ; memory move in bytes @@ -3623,14 +3625,14 @@ memmove: ; memory move in bytes mov esi, eax test ecx, not 11b - jz @f + jz @f push ecx shr ecx, 2 rep movsd pop ecx and ecx, 11b - jz .finish + jz .finish @@: rep movsb @@ -3700,7 +3702,7 @@ sys_programirq: mov edi,[TASK_BASE] mov edi,[edi+TASKDATA.pid] cmp edi,[irq_owner+ebx*4] - je spril1 + je spril1 .not_owner: mov [esp+36],dword 1 ret @@ -3722,7 +3724,7 @@ align 4 get_irq_data: cmp eax,16 jae .not_owner - mov edx,eax ; check for correct owner + mov edx,eax ; check for correct owner shl edx,2 add edx,irq_owner mov edx,[edx] @@ -3731,7 +3733,7 @@ get_irq_data: cmp edx,edi je gidril1 .not_owner: - mov [esp+32],dword 2 ; ecx=2 + mov [esp+32],dword 2 ; ecx=2 ret gidril1: @@ -3780,7 +3782,7 @@ set_io_access_rights: mov ebx,1 shl ebx,cl - cmp ebp,0 ; enable access - ebp = 0 + cmp ebp,0 ; enable access - ebp = 0 jne siar1 not ebx @@ -3792,7 +3794,7 @@ set_io_access_rights: siar1: - or [edi],byte bl ; disable access - ebp = 1 + or [edi],byte bl ; disable access - ebp = 1 popad @@ -3809,14 +3811,14 @@ r_f_port_area: pushad - cmp ebx,ecx ; beginning > end ? + cmp ebx,ecx ; beginning > end ? ja rpal1 cmp ecx,65536 jae rpal1 mov esi,[RESERVED_PORTS] - test esi,esi ; no reserved areas ? + test esi,esi ; no reserved areas ? je rpal2 - cmp esi,255 ; max reserved + cmp esi,255 ; max reserved jae rpal1 rpal3: mov edi,esi @@ -3844,7 +3846,7 @@ r_f_port_area: ; enable port access at port IO map cli - pushad ; start enable io map + pushad ; start enable io map cmp ecx,65536 ;16384 jae no_unmask_io ; jge @@ -3855,7 +3857,7 @@ r_f_port_area: pushad - xor ebp,ebp ; enable - eax = port + xor ebp,ebp ; enable - eax = port call set_io_access_rights popad @@ -3866,7 +3868,7 @@ r_f_port_area: no_unmask_io: - popad ; end enable io map + popad ; end enable io map sti mov edi,[RESERVED_PORTS] @@ -3926,7 +3928,7 @@ free_port_area: ; disable port access at port IO map - pushad ; start disable io map + pushad ; start disable io map cmp ecx,65536 ;16384 jge no_mask_io @@ -3937,7 +3939,7 @@ free_port_area: pushad - mov ebp,1 ; disable - eax = port + mov ebp,1 ; disable - eax = port call set_io_access_rights popad @@ -3948,7 +3950,7 @@ free_port_area: no_mask_io: - popad ; end disable io map + popad ; end disable io map xor eax, eax ret @@ -4015,11 +4017,11 @@ drawbackground: align 4 -syscall_putimage: ; PutImage +syscall_putimage: ; PutImage mov edx,ecx mov ecx,ebx - lea ebx, [eax+std_application_base_address] + lea ebx, [eax+std_application_base_address] sys_putimage: test ecx,0x80008000 @@ -4031,41 +4033,41 @@ sys_putimage: .exit: ret @@: - mov edi,[CURRENT_TASK] - shl edi,8 - add dx,word[edi+SLOT_BASE+APPDATA.wnd_clientbox.top] - rol edx,16 - add dx,word[edi+SLOT_BASE+APPDATA.wnd_clientbox.left] - rol edx,16 + mov edi,[CURRENT_TASK] + shl edi,8 + add dx,word[edi+SLOT_BASE+APPDATA.wnd_clientbox.top] + rol edx,16 + add dx,word[edi+SLOT_BASE+APPDATA.wnd_clientbox.left] + rol edx,16 .forced: - push ebp esi 0 - mov ebp, putimage_get24bpp - mov esi, putimage_init24bpp + push ebp esi 0 + mov ebp, putimage_get24bpp + mov esi, putimage_init24bpp sys_putimage_bpp: ; call [disable_mouse] ; this will be done in xxx_putimage ; mov eax, vga_putimage - cmp [SCR_MODE], word 0x12 - jz @f ;.doit - mov eax, vesa12_putimage - cmp [SCR_MODE], word 0100000000000000b - jae @f - cmp [SCR_MODE], word 0x13 - jnz .doit + cmp [SCR_MODE], word 0x12 + jz @f ;.doit + mov eax, vesa12_putimage + cmp [SCR_MODE], word 0100000000000000b + jae @f + cmp [SCR_MODE], word 0x13 + jnz .doit @@: - mov eax, vesa20_putimage + mov eax, vesa20_putimage .doit: - inc [mouse_pause] - call eax - dec [mouse_pause] - pop ebp esi ebp - jmp [draw_pointer] + inc [mouse_pause] + call eax + dec [mouse_pause] + pop ebp esi ebp + jmp [draw_pointer] syscall_putimage_palette: - lea edi, [esi+std_application_base_address] - mov esi, edx - mov edx, ecx - mov ecx, ebx - lea ebx, [eax+std_application_base_address] + lea edi, [esi+std_application_base_address] + mov esi, edx + mov edx, ecx + mov ecx, ebx + lea ebx, [eax+std_application_base_address] sys_putimage_palette: ; ebx = pointer to image ; ecx = [xsize]*65536 + [ysize] @@ -4073,59 +4075,59 @@ sys_putimage_palette: ; esi = number of bits per pixel, must be 8, 24 or 32 ; edi = pointer to palette ; ebp = row delta - mov eax, [CURRENT_TASK] - shl eax, 8 - add dx, word [eax+SLOT_BASE+APPDATA.wnd_clientbox.top] - rol edx, 16 - add dx, word [eax+SLOT_BASE+APPDATA.wnd_clientbox.left] - rol edx, 16 + mov eax, [CURRENT_TASK] + shl eax, 8 + add dx, word [eax+SLOT_BASE+APPDATA.wnd_clientbox.top] + rol edx, 16 + add dx, word [eax+SLOT_BASE+APPDATA.wnd_clientbox.left] + rol edx, 16 .forced: - push ebp esi ebp - cmp esi, 8 - jnz @f - mov ebp, putimage_get8bpp - mov esi, putimage_init8bpp - jmp sys_putimage_bpp + push ebp esi ebp + cmp esi, 8 + jnz @f + mov ebp, putimage_get8bpp + mov esi, putimage_init8bpp + jmp sys_putimage_bpp @@: - cmp esi, 24 - jnz @f - mov ebp, putimage_get24bpp - mov esi, putimage_init24bpp - jmp sys_putimage_bpp + cmp esi, 24 + jnz @f + mov ebp, putimage_get24bpp + mov esi, putimage_init24bpp + jmp sys_putimage_bpp @@: - cmp esi, 32 - jnz @f - mov ebp, putimage_get32bpp - mov esi, putimage_init32bpp - jmp sys_putimage_bpp + cmp esi, 32 + jnz @f + mov ebp, putimage_get32bpp + mov esi, putimage_init32bpp + jmp sys_putimage_bpp @@: - pop ebp esi - ret + pop ebp esi + ret putimage_init24bpp: - lea eax, [eax*3] + lea eax, [eax*3] putimage_init8bpp: - ret + ret putimage_get24bpp: - mov eax, [esi] - add esi, 3 - ret 4 + mov eax, [esi] + add esi, 3 + ret 4 putimage_get8bpp: - movzx eax, byte [esi] - push edx - mov edx, [esp+8] - mov eax, [edx+eax*4] - pop edx - inc esi - ret 4 + movzx eax, byte [esi] + push edx + mov edx, [esp+8] + mov eax, [edx+eax*4] + pop edx + inc esi + ret 4 putimage_init32bpp: - shl eax, 2 - ret + shl eax, 2 + ret putimage_get32bpp: - lodsd - ret 4 + lodsd + ret 4 ; eax x beginning ; ebx y beginning @@ -4134,22 +4136,22 @@ putimage_get32bpp: ; edi color __sys_drawbar: - mov esi,[CURRENT_TASK] - shl esi,8 - add eax,[esi+SLOT_BASE+APPDATA.wnd_clientbox.left] - add ecx,[esi+SLOT_BASE+APPDATA.wnd_clientbox.left] - add ebx,[esi+SLOT_BASE+APPDATA.wnd_clientbox.top] - add edx,[esi+SLOT_BASE+APPDATA.wnd_clientbox.top] + mov esi,[CURRENT_TASK] + shl esi,8 + add eax,[esi+SLOT_BASE+APPDATA.wnd_clientbox.left] + add ecx,[esi+SLOT_BASE+APPDATA.wnd_clientbox.left] + add ebx,[esi+SLOT_BASE+APPDATA.wnd_clientbox.top] + add edx,[esi+SLOT_BASE+APPDATA.wnd_clientbox.top] .forced: inc [mouse_pause] ; call [disable_mouse] cmp [SCR_MODE],word 0x12 - je dbv20 + je dbv20 sdbv20: cmp [SCR_MODE],word 0100000000000000b jge dbv20 cmp [SCR_MODE],word 0x13 - je dbv20 + je dbv20 call vesa12_drawbar dec [mouse_pause] call [draw_pointer] @@ -4164,36 +4166,36 @@ __sys_drawbar: kb_read: - push ecx edx + push ecx edx - mov ecx,0x1ffff ; last 0xffff, new value in view of fast CPU's + mov ecx,0x1ffff ; last 0xffff, new value in view of fast CPU's kr_loop: - in al,0x64 - test al,1 - jnz kr_ready - loop kr_loop - mov ah,1 - jmp kr_exit + in al,0x64 + test al,1 + jnz kr_ready + loop kr_loop + mov ah,1 + jmp kr_exit kr_ready: - push ecx - mov ecx,32 + push ecx + mov ecx,32 kr_delay: - loop kr_delay - pop ecx - in al,0x60 - xor ah,ah + loop kr_delay + pop ecx + in al,0x60 + xor ah,ah kr_exit: - pop edx ecx + pop edx ecx - ret + ret kb_write: - push ecx edx + push ecx edx - mov dl,al + mov dl,al ; mov ecx,0x1ffff ; last 0xffff, new value in view of fast CPU's ; kw_loop1: ; in al,0x64 @@ -4203,75 +4205,75 @@ kb_write: ; mov ah,1 ; jmp kw_exit ; kw_ok1: - in al,0x60 - mov ecx,0x1ffff ; last 0xffff, new value in view of fast CPU's + in al,0x60 + mov ecx,0x1ffff ; last 0xffff, new value in view of fast CPU's kw_loop: - in al,0x64 - test al,2 - jz kw_ok - loop kw_loop - mov ah,1 - jmp kw_exit + in al,0x64 + test al,2 + jz kw_ok + loop kw_loop + mov ah,1 + jmp kw_exit kw_ok: - mov al,dl - out 0x60,al - mov ecx,0x1ffff ; last 0xffff, new value in view of fast CPU's + mov al,dl + out 0x60,al + mov ecx,0x1ffff ; last 0xffff, new value in view of fast CPU's kw_loop3: - in al,0x64 - test al,2 - jz kw_ok3 - loop kw_loop3 - mov ah,1 - jmp kw_exit + in al,0x64 + test al,2 + jz kw_ok3 + loop kw_loop3 + mov ah,1 + jmp kw_exit kw_ok3: - mov ah,8 + mov ah,8 kw_loop4: - mov ecx,0x1ffff ; last 0xffff, new value in view of fast CPU's + mov ecx,0x1ffff ; last 0xffff, new value in view of fast CPU's kw_loop5: - in al,0x64 - test al,1 - jnz kw_ok4 - loop kw_loop5 - dec ah - jnz kw_loop4 + in al,0x64 + test al,1 + jnz kw_ok4 + loop kw_loop5 + dec ah + jnz kw_loop4 kw_ok4: - xor ah,ah + xor ah,ah kw_exit: - pop edx ecx + pop edx ecx - ret + ret kb_cmd: - mov ecx,0x1ffff ; last 0xffff, new value in view of fast CPU's + mov ecx,0x1ffff ; last 0xffff, new value in view of fast CPU's c_wait: - in al,0x64 - test al,2 - jz c_send - loop c_wait - jmp c_error + in al,0x64 + test al,2 + jz c_send + loop c_wait + jmp c_error c_send: - mov al,bl - out 0x64,al - mov ecx,0x1ffff ; last 0xffff, new value in view of fast CPU's + mov al,bl + out 0x64,al + mov ecx,0x1ffff ; last 0xffff, new value in view of fast CPU's c_accept: - in al,0x64 - test al,2 - jz c_ok - loop c_accept + in al,0x64 + test al,2 + jz c_ok + loop c_accept c_error: - mov ah,1 - jmp c_exit + mov ah,1 + jmp c_exit c_ok: - xor ah,ah + xor ah,ah c_exit: - ret + ret setmouse: ; set mousepicture -pointer - ; ps2 mouse enable + ; ps2 mouse enable mov [MOUSE_PICTURE],dword mousepointer @@ -4310,12 +4312,12 @@ setmouse: ; set mousepicture -pointer mov dx,bx add dx,0 - mov al,0x30*2 ; 0x30 / 4 + mov al,0x30*2 ; 0x30 / 4 out dx,al mov dx,bx add dx,3 - mov al,2 ; 3 + mov al,2 ; 3 out dx,al mov dx,bx @@ -4378,60 +4380,60 @@ _rdtsc: rerouteirqs: - cli + cli - mov al,0x11 ; icw4, edge triggered - out 0x20,al - call pic_delay - out 0xA0,al - call pic_delay + mov al,0x11 ; icw4, edge triggered + out 0x20,al + call pic_delay + out 0xA0,al + call pic_delay - mov al,0x20 ; generate 0x20 + - out 0x21,al - call pic_delay - mov al,0x28 ; generate 0x28 + - out 0xA1,al - call pic_delay + mov al,0x20 ; generate 0x20 + + out 0x21,al + call pic_delay + mov al,0x28 ; generate 0x28 + + out 0xA1,al + call pic_delay - mov al,0x04 ; slave at irq2 - out 0x21,al - call pic_delay - mov al,0x02 ; at irq9 - out 0xA1,al - call pic_delay + mov al,0x04 ; slave at irq2 + out 0x21,al + call pic_delay + mov al,0x02 ; at irq9 + out 0xA1,al + call pic_delay - mov al,0x01 ; 8086 mode - out 0x21,al - call pic_delay - out 0xA1,al - call pic_delay + mov al,0x01 ; 8086 mode + out 0x21,al + call pic_delay + out 0xA1,al + call pic_delay - mov al,255 ; mask all irq's - out 0xA1,al - call pic_delay - out 0x21,al - call pic_delay + mov al,255 ; mask all irq's + out 0xA1,al + call pic_delay + out 0x21,al + call pic_delay - mov ecx,0x1000 - cld -picl1: call pic_delay - loop picl1 + mov ecx,0x1000 + cld +picl1: call pic_delay + loop picl1 - mov al,255 ; mask all irq's - out 0xA1,al - call pic_delay - out 0x21,al - call pic_delay + mov al,255 ; mask all irq's + out 0xA1,al + call pic_delay + out 0x21,al + call pic_delay - cli + cli - ret + ret pic_delay: - jmp pdl1 -pdl1: ret + jmp pdl1 +pdl1: ret sys_msg_board_str: @@ -4504,9 +4506,9 @@ sys_msg_board: sys_process_def: - mov edi, [CURRENT_TASK] + mov edi, [CURRENT_TASK] - dec eax ; 1 = set keyboard mode + dec eax ; 1 = set keyboard mode jne no_set_keyboard_setup shl edi,8 @@ -4516,7 +4518,7 @@ sys_process_def: no_set_keyboard_setup: - dec eax ; 2 = get keyboard mode + dec eax ; 2 = get keyboard mode jne no_get_keyboard_setup shl edi,8 @@ -4528,7 +4530,7 @@ sys_process_def: no_get_keyboard_setup: - dec eax ; 3 = get keyboard ctrl, alt, shift + dec eax ; 3 = get keyboard ctrl, alt, shift jne no_get_keyboard_cas ; xor eax,eax @@ -4550,70 +4552,70 @@ sys_process_def: no_get_keyboard_cas: - dec eax - jnz no_add_keyboard_hotkey + dec eax + jnz no_add_keyboard_hotkey - mov eax, hotkey_list + mov eax, hotkey_list @@: - cmp dword [eax+8], 0 - jz .found_free - add eax, 16 - cmp eax, hotkey_list+16*256 - jb @b - mov dword [esp+36], 1 - ret + cmp dword [eax+8], 0 + jz .found_free + add eax, 16 + cmp eax, hotkey_list+16*256 + jb @b + mov dword [esp+36], 1 + ret .found_free: - mov [eax+8], edi - mov [eax+4], ecx - movzx ebx, bl - lea ebx, [hotkey_scancodes+ebx*4] - mov ecx, [ebx] - mov [eax], ecx - mov [ebx], eax - mov [eax+12], ebx - jecxz @f - mov [ecx+12], eax + mov [eax+8], edi + mov [eax+4], ecx + movzx ebx, bl + lea ebx, [hotkey_scancodes+ebx*4] + mov ecx, [ebx] + mov [eax], ecx + mov [ebx], eax + mov [eax+12], ebx + jecxz @f + mov [ecx+12], eax @@: - and dword [esp+36], 0 - ret + and dword [esp+36], 0 + ret no_add_keyboard_hotkey: - dec eax - jnz no_del_keyboard_hotkey + dec eax + jnz no_del_keyboard_hotkey - movzx ebx, bl - lea ebx, [hotkey_scancodes+ebx*4] - mov eax, [ebx] + movzx ebx, bl + lea ebx, [hotkey_scancodes+ebx*4] + mov eax, [ebx] .scan: - test eax, eax - jz .notfound - cmp [eax+8], edi - jnz .next - cmp [eax+4], ecx - jz .found + test eax, eax + jz .notfound + cmp [eax+8], edi + jnz .next + cmp [eax+4], ecx + jz .found .next: - mov eax, [eax] - jmp .scan + mov eax, [eax] + jmp .scan .notfound: - mov dword [esp+36], 1 - ret + mov dword [esp+36], 1 + ret .found: - mov ecx, [eax] - jecxz @f - mov edx, [eax+12] - mov [ecx+12], edx + mov ecx, [eax] + jecxz @f + mov edx, [eax+12] + mov [ecx+12], edx @@: - mov ecx, [eax+12] - mov edx, [eax] - mov [ecx], edx - xor edx, edx - mov [eax+4], edx - mov [eax+8], edx - mov [eax+12], edx - mov [eax], edx - mov [esp+36], edx - ret + mov ecx, [eax+12] + mov edx, [eax] + mov [ecx], edx + xor edx, edx + mov [eax+4], edx + mov [eax+8], edx + mov [eax+12], edx + mov [eax], edx + mov [esp+36], edx + ret no_del_keyboard_hotkey: ret @@ -4621,9 +4623,9 @@ no_del_keyboard_hotkey: align 4 -sys_gs: ; direct screen access +sys_gs: ; direct screen access - cmp eax,1 ; resolution + cmp eax,1 ; resolution jne no_gs1 mov eax,[ScreenWidth] shl eax,16 @@ -4633,14 +4635,14 @@ sys_gs: ; direct screen access ret no_gs1: - cmp eax,2 ; bits per pixel + cmp eax,2 ; bits per pixel jne no_gs2 movzx eax,byte [ScreenBPP] mov [esp+36],eax ret no_gs2: - cmp eax,3 ; bytes per scanline + cmp eax,3 ; bytes per scanline jne no_gs3 mov eax,[BytesPerScanLine] mov [esp+36],eax @@ -4662,16 +4664,16 @@ sys_pci: align 4 ; system functions -syscall_setpixel: ; SetPixel +syscall_setpixel: ; SetPixel mov edx,[TASK_BASE] add eax,[edx-twdw+WDATA.box.left] add ebx,[edx-twdw+WDATA.box.top] - mov edi,[CURRENT_TASK] - shl edi,8 - add eax,[edi+SLOT_BASE+APPDATA.wnd_clientbox.left] - add ebx,[edi+SLOT_BASE+APPDATA.wnd_clientbox.top] + mov edi,[CURRENT_TASK] + shl edi,8 + add eax,[edi+SLOT_BASE+APPDATA.wnd_clientbox.left] + add ebx,[edi+SLOT_BASE+APPDATA.wnd_clientbox.top] xor edi,edi ; no force ; mov edi,1 call [disable_mouse] @@ -4679,18 +4681,18 @@ syscall_setpixel: ; SetPixel align 4 -syscall_writetext: ; WriteText +syscall_writetext: ; WriteText mov edi,[TASK_BASE] mov ebp,[edi-twdw+WDATA.box.left] - push esi - mov esi,[CURRENT_TASK] - shl esi,8 - add ebp,[esi+SLOT_BASE+APPDATA.wnd_clientbox.left] + push esi + mov esi,[CURRENT_TASK] + shl esi,8 + add ebp,[esi+SLOT_BASE+APPDATA.wnd_clientbox.left] shl ebp,16 add ebp,[edi-twdw+WDATA.box.top] - add bp,word[esi+SLOT_BASE+APPDATA.wnd_clientbox.top] - pop esi + add bp,word[esi+SLOT_BASE+APPDATA.wnd_clientbox.top] + pop esi add ecx,[edi+TASKDATA.mem_start] add eax,ebp xor edi,edi @@ -4698,7 +4700,7 @@ syscall_writetext: ; WriteText align 4 -syscall_openramdiskfile: ; OpenRamdiskFile +syscall_openramdiskfile: ; OpenRamdiskFile mov edi,[TASK_BASE] @@ -4712,7 +4714,7 @@ syscall_openramdiskfile: ; OpenRamdiskFile align 4 -syscall_drawrect: ; DrawRect +syscall_drawrect: ; DrawRect mov edi,ecx and edi,0x80FFFFFF @@ -4724,10 +4726,10 @@ syscall_drawrect: ; DrawRect shr eax,16 movzx edx,bx shr ebx,16 - mov esi,[CURRENT_TASK] - shl esi,8 - add eax,[esi+SLOT_BASE+APPDATA.wnd_clientbox.left] - add ebx,[esi+SLOT_BASE+APPDATA.wnd_clientbox.top] + mov esi,[CURRENT_TASK] + shl esi,8 + add eax,[esi+SLOT_BASE+APPDATA.wnd_clientbox.left] + add ebx,[esi+SLOT_BASE+APPDATA.wnd_clientbox.top] add ecx,eax add edx,ebx jmp [drawbar] @@ -4736,7 +4738,7 @@ syscall_drawrect: ; DrawRect align 4 -syscall_getscreensize: ; GetScreenSize +syscall_getscreensize: ; GetScreenSize movzx eax,word[ScreenWidth] shl eax,16 @@ -4746,7 +4748,7 @@ syscall_getscreensize: ; GetScreenSize align 4 -syscall_cdaudio: ; CD +syscall_cdaudio: ; CD call sys_cd_audio mov [esp+36],eax @@ -4754,7 +4756,7 @@ syscall_cdaudio: ; CD align 4 -syscall_delramdiskfile: ; DelRamdiskFile +syscall_delramdiskfile: ; DelRamdiskFile mov edi,[TASK_BASE] add edi,TASKDATA.mem_start @@ -4765,7 +4767,7 @@ syscall_delramdiskfile: ; DelRamdiskFile align 4 -syscall_writeramdiskfile: ; WriteRamdiskFile +syscall_writeramdiskfile: ; WriteRamdiskFile mov edi,[TASK_BASE] add edi,TASKDATA.mem_start @@ -4777,7 +4779,7 @@ syscall_writeramdiskfile: ; WriteRamdiskFile align 4 -syscall_getpixel: ; GetPixel +syscall_getpixel: ; GetPixel mov ecx,[ScreenWidth] inc ecx xor edx,edx @@ -4790,7 +4792,7 @@ syscall_getpixel: ; GetPixel align 4 -syscall_readstring: ; ReadString +syscall_readstring: ; ReadString mov edi,[TASK_BASE] add edi,TASKDATA.mem_start @@ -4801,22 +4803,22 @@ syscall_readstring: ; ReadString align 4 -syscall_drawline: ; DrawLine +syscall_drawline: ; DrawLine mov edi,[TASK_BASE] movzx edx,word[edi-twdw+WDATA.box.left] mov ebp,edx - mov esi,[CURRENT_TASK] - shl esi,8 - add ebp,[esi+SLOT_BASE+APPDATA.wnd_clientbox.left] - add dx,word[esi+SLOT_BASE+APPDATA.wnd_clientbox.left] + mov esi,[CURRENT_TASK] + shl esi,8 + add ebp,[esi+SLOT_BASE+APPDATA.wnd_clientbox.left] + add dx,word[esi+SLOT_BASE+APPDATA.wnd_clientbox.left] shl edx,16 add ebp,edx movzx edx,word[edi-twdw+WDATA.box.top] add eax,ebp mov ebp,edx - add ebp,[esi+SLOT_BASE+APPDATA.wnd_clientbox.top] - add dx,word[esi+SLOT_BASE+APPDATA.wnd_clientbox.top] + add ebp,[esi+SLOT_BASE+APPDATA.wnd_clientbox.top] + add dx,word[esi+SLOT_BASE+APPDATA.wnd_clientbox.top] shl edx,16 xor edi,edi add edx,ebp @@ -4825,7 +4827,7 @@ syscall_drawline: ; DrawLine align 4 -syscall_getirqowner: ; GetIrqOwner +syscall_getirqowner: ; GetIrqOwner cmp eax,16 jae .err shl eax,2 @@ -4839,7 +4841,7 @@ syscall_getirqowner: ; GetIrqOwner align 4 -syscall_reserveportarea: ; ReservePortArea and FreePortArea +syscall_reserveportarea: ; ReservePortArea and FreePortArea call r_f_port_area mov [esp+36],eax @@ -4847,7 +4849,7 @@ syscall_reserveportarea: ; ReservePortArea and FreePortArea align 4 -syscall_threads: ; CreateThreads +syscall_threads: ; CreateThreads call sys_threads mov [esp+36],eax @@ -4857,7 +4859,7 @@ align 4 stack_driver_stat: - call app_stack_handler ; Stack status + call app_stack_handler ; Stack status ; mov [check_idle_semaphore],5 ; enable these for zero delay ; call change_task ; between sent packet @@ -4867,7 +4869,7 @@ stack_driver_stat: align 4 -socket: ; Socket interface +socket: ; Socket interface call app_socket_handler ; mov [check_idle_semaphore],5 ; enable these for zero delay @@ -4879,7 +4881,7 @@ socket: ; Socket interface align 4 -user_events: ; User event times +user_events: ; User event times mov eax,0x12345678 mov [esp+36],eax @@ -4888,7 +4890,7 @@ user_events: ; User event times align 4 -read_from_hd: ; Read from hd - fn not in use +read_from_hd: ; Read from hd - fn not in use mov edi,[TASK_BASE] add edi,TASKDATA.mem_start @@ -4908,20 +4910,20 @@ paleholder: ; --------------- APM --------------------- apm_entry dp 0 -apm_vf dd 0 +apm_vf dd 0 align 4 sys_apm: cmp word [apm_vf], 0 ; Check APM BIOS enable jne @f - or [esp + 56], byte 1 ; error - mov [esp + 36], dword 8 ; 32-bit protected-mode interface not supported + or [esp + 56], byte 1 ; error + mov [esp + 36], dword 8 ; 32-bit protected-mode interface not supported ret @@: xchg eax, ecx xchg ebx, ecx cmp al, 3 - ja @f + ja @f and [esp + 56], byte 0xfe ; emulate func 0..3 as func 0 mov eax, [apm_vf] mov [esp + 36], eax @@ -4938,13 +4940,13 @@ sys_apm: mov [esp + 36], eax setc al and [esp + 56], byte 0xfe - or [esp + 56], al + or [esp + 56], al ret ; ----------------------------------------- align 4 -undefined_syscall: ; Undefined system call +undefined_syscall: ; Undefined system call mov [esp+36],dword -1 ret @@ -5007,7 +5009,7 @@ keymap_alt: ; device irq owners uglobal -irq_owner: ; process id +irq_owner: ; process id dd 0x0 dd 0x0 @@ -5050,7 +5052,7 @@ endg ; status uglobal - hd1_status dd 0x0 ; 0 - free : other - pid + hd1_status dd 0x0 ; 0 - free : other - pid application_table_status dd 0x0 ; 0 - free : other - pid endg @@ -5060,30 +5062,30 @@ uglobal midisp dd 0x0 cdbase dd 0x0 - cdid dd 0x0 + cdid dd 0x0 - hdbase dd 0x0 ; for boot 0x1f0 - hdid dd 0x0 - hdpos dd 0x0 ; for boot 0x1 - fat32part dd 0x0 ; for boot 0x1 + hdbase dd 0x0 ; for boot 0x1f0 + hdid dd 0x0 + hdpos dd 0x0 ; for boot 0x1 + fat32part dd 0x0 ; for boot 0x1 ;part2_ld dd 0x0 ;* start code - Mario79 -mouse_pause dd 0 -MouseTickCounter dd 0 -ps2_mouse_detected db 0 -com1_mouse_detected db 0 -com2_mouse_detected db 0 +mouse_pause dd 0 +MouseTickCounter dd 0 +ps2_mouse_detected db 0 +com1_mouse_detected db 0 +com2_mouse_detected db 0 ;* end code - Mario79 wraw_bacground_select db 0 - lba_read_enabled dd 0x0 ; 0 = disabled , 1 = enabled - pci_access_enabled dd 0x0 ; 0 = disabled , 1 = enabled + lba_read_enabled dd 0x0 ; 0 = disabled , 1 = enabled + pci_access_enabled dd 0x0 ; 0 = disabled , 1 = enabled - sb16 dd 0x0 + sb16 dd 0x0 - buttontype dd 0x0 + buttontype dd 0x0 windowtypechanged dd 0x0 align 4