1)fixed wrong exported LFB address

2)replace 0x3000 0x3004 0x3010 0x3020 whith symbolic constants


git-svn-id: svn://kolibrios.org@379 a494cfbc-eb01-0410-851d-a64ba20cac60
This commit is contained in:
Sergey Semyonov (Serge) 2007-02-28 08:52:06 +00:00
parent 73c568fb03
commit 04929cf017
29 changed files with 555 additions and 555 deletions

View File

@ -18,7 +18,7 @@ sys_cd_audio:
cmp eax,2 cmp eax,2
jnz nocdtl jnz nocdtl
mov edi,[0x3010] mov edi,[TASK_BASE]
add edi,TASKDATA.mem_start add edi,TASKDATA.mem_start
add ebx,[edi] add ebx,[edi]
call sys_cdtracklist call sys_cdtracklist

View File

@ -5,7 +5,7 @@
; Àäàïòàöèÿ è äîðàáîòêà Mario79 ; Àäàïòàöèÿ è äîðàáîòêà Mario79
give_back_application_data: ; ïåðåñëàòü ïðèëîæåíèþ give_back_application_data: ; ïåðåñëàòü ïðèëîæåíèþ
mov edi,[0x3010] mov edi,[TASK_BASE]
mov edi,[edi+TASKDATA.mem_start] mov edi,[edi+TASKDATA.mem_start]
add edi,ecx add edi,ecx
give_back_application_data_1: give_back_application_data_1:
@ -16,8 +16,8 @@ give_back_application_data_1:
rep movsd rep movsd
ret ret
take_data_from_application: ; взять из приложения take_data_from_application: ; взять из приложени
mov esi,[0x3010] mov esi,[TASK_BASE]
mov esi,[esi+TASKDATA.mem_start] mov esi,[esi+TASKDATA.mem_start]
add esi,ecx add esi,ecx
take_data_from_application_1: take_data_from_application_1:
@ -66,7 +66,7 @@ FDC_C DB ?
FDC_H DB ? FDC_H DB ?
FDC_R DB ? FDC_R DB ?
FDC_N DB ? FDC_N DB ?
; Счетчик повторения операции чтения ; Счетчик повторения операции чтени
ReadRepCounter DB ? ReadRepCounter DB ?
; Ñ÷åò÷èê ïîâòîðåíèÿ îïåðàöèè ðåêàëèáðîâêè ; Ñ÷åò÷èê ïîâòîðåíèÿ îïåðàöèè ðåêàëèáðîâêè
RecalRepCounter DB ? RecalRepCounter DB ?
@ -174,7 +174,7 @@ FDCDataInput:
;* ÎÁÐÀÁÎÒ×ÈÊ ÏÐÅÐÛÂÀÍÈß ÎÒ ÊÎÍÒÐÎËËÅÐÀ ÍÃÌÄ * ;* ÎÁÐÀÁÎÒ×ÈÊ ÏÐÅÐÛÂÀÍÈß ÎÒ ÊÎÍÒÐÎËËÅÐÀ ÍÃÌÄ *
;********************************************* ;*********************************************
FDCInterrupt: FDCInterrupt:
; Установить флаг прерывания ; Установить флаг прерывани
mov [FDD_IntFlag],1 mov [FDD_IntFlag],1
ret ret
@ -194,7 +194,7 @@ WaitFDCInterrupt:
pusha pusha
; Ñáðîñèòü áàéò ñîñòîÿíèÿ îïåðàöèè ; Ñáðîñèòü áàéò ñîñòîÿíèÿ îïåðàöèè
mov [FDC_Status],FDC_Normal mov [FDC_Status],FDC_Normal
; Сбросить флаг прерывания ; Сбросить флаг прерывани
mov [FDD_IntFlag],0 mov [FDD_IntFlag],0
; Îáíóëèòü ñ÷åò÷èê òèêîâ ; Îáíóëèòü ñ÷åò÷èê òèêîâ
mov eax,[timer_ticks] mov eax,[timer_ticks]
@ -352,7 +352,7 @@ SeekTrack:
; Ïîäàòü êîìàíäó "Ïîèñê" ; Ïîäàòü êîìàíäó "Ïîèñê"
mov AL,0Fh mov AL,0Fh
call FDCDataOutput call FDCDataOutput
; Передать байт номера головки/накопителя ; Передать байт номера головки/накопител
mov AL,[FDD_Head] mov AL,[FDD_Head]
shl AL,2 shl AL,2
call FDCDataOutput call FDCDataOutput
@ -467,7 +467,7 @@ ReadSectWithRetr:
; Îáíóëèòü ñ÷åò÷èê ïîâòîðåíèÿ îïåðàöèè ðåêàëèáðîâêè ; Îáíóëèòü ñ÷åò÷èê ïîâòîðåíèÿ îïåðàöèè ðåêàëèáðîâêè
mov [RecalRepCounter],0 mov [RecalRepCounter],0
@@TryAgain: @@TryAgain:
; Обнулить счетчик повторения операции чтения ; Обнулить счетчик повторения операции чтени
mov [ReadRepCounter],0 mov [ReadRepCounter],0
@@ReadSector_1: @@ReadSector_1:
call ReadSector call ReadSector
@ -475,7 +475,7 @@ ReadSectWithRetr:
je @@Exit_2 je @@Exit_2
cmp [FDC_Status],1 cmp [FDC_Status],1
je @@Err_3 je @@Err_3
; Троекратное повторение чтения ; Троекратное повторение чтени
inc [ReadRepCounter] inc [ReadRepCounter]
cmp [ReadRepCounter],3 cmp [ReadRepCounter],3
jb @@ReadSector_1 jb @@ReadSector_1
@ -565,7 +565,7 @@ WriteSectWithRetr:
; Îáíóëèòü ñ÷åò÷èê ïîâòîðåíèÿ îïåðàöèè ðåêàëèáðîâêè ; Îáíóëèòü ñ÷åò÷èê ïîâòîðåíèÿ îïåðàöèè ðåêàëèáðîâêè
mov [RecalRepCounter],0 mov [RecalRepCounter],0
@@TryAgain_1: @@TryAgain_1:
; Обнулить счетчик повторения операции чтения ; Обнулить счетчик повторения операции чтени
mov [ReadRepCounter],0 mov [ReadRepCounter],0
@@WriteSector_1: @@WriteSector_1:
call WriteSector call WriteSector
@ -573,7 +573,7 @@ WriteSectWithRetr:
je @@Exit_4 je @@Exit_4
cmp [FDC_Status],1 cmp [FDC_Status],1
je @@Err_4 je @@Err_4
; Троекратное повторение чтения ; Троекратное повторение чтени
inc [ReadRepCounter] inc [ReadRepCounter]
cmp [ReadRepCounter],3 cmp [ReadRepCounter],3
jb @@WriteSector_1 jb @@WriteSector_1

View File

@ -19,7 +19,7 @@ sys_debug_services_table:
debug_set_event_data: debug_set_event_data:
; in: ebx = pointer ; in: ebx = pointer
; destroys eax ; destroys eax
mov eax, [0x3000] mov eax, [CURRENT_TASK]
shl eax, 8 shl eax, 8
mov [eax+0x80000+APPDATA.dbg_event_mem], ebx mov [eax+0x80000+APPDATA.dbg_event_mem], ebx
ret ret
@ -36,7 +36,7 @@ get_debuggee_slot:
jz .ret_bad jz .ret_bad
shl eax, 5 shl eax, 5
push ebx push ebx
mov ebx, [0x3000] mov ebx, [CURRENT_TASK]
cmp [0x80000+eax*8+APPDATA.debugger_slot], ebx cmp [0x80000+eax*8+APPDATA.debugger_slot], ebx
pop ebx pop ebx
jnz .ret_bad jnz .ret_bad
@ -72,13 +72,13 @@ debug_suspend:
; destroys eax,ebx ; destroys eax,ebx
call get_debuggee_slot call get_debuggee_slot
jc .ret jc .ret
mov bl, [0x3000+eax+TASKDATA.state] ; process state mov bl, [CURRENT_TASK+eax+TASKDATA.state] ; process state
test bl, bl test bl, bl
jz .1 jz .1
cmp bl, 5 cmp bl, 5
jnz .ret jnz .ret
mov bl, 2 mov bl, 2
.2: mov [0x3000+eax+TASKDATA.state], bl .2: mov [CURRENT_TASK+eax+TASKDATA.state], bl
.ret: .ret:
sti sti
ret ret
@ -87,13 +87,13 @@ debug_suspend:
jmp .2 jmp .2
do_resume: do_resume:
mov bl, [0x3000+eax+TASKDATA.state] mov bl, [CURRENT_TASK+eax+TASKDATA.state]
cmp bl, 1 cmp bl, 1
jz .1 jz .1
cmp bl, 2 cmp bl, 2
jnz .ret jnz .ret
mov bl, 5 mov bl, 5
.2: mov [0x3000+eax+TASKDATA.state], bl .2: mov [CURRENT_TASK+eax+TASKDATA.state], bl
.ret: ret .ret: ret
.1: dec ebx .1: dec ebx
jmp .2 jmp .2
@ -380,7 +380,7 @@ debugger_notify:
pop ecx pop ecx
pop ecx pop ecx
pop ecx pop ecx
cmp dword [0x3000], 1 cmp dword [CURRENT_TASK], 1
jnz .notos jnz .notos
cmp [timer_ticks], edi cmp [timer_ticks], edi
jae .ret jae .ret
@ -430,7 +430,7 @@ debug_exc:
jns @f jns @f
; this is exception from task switch ; this is exception from task switch
; set DRx registers for task and continue ; set DRx registers for task and continue
mov eax, [0x3000] mov eax, [CURRENT_TASK]
shl eax, 8 shl eax, 8
add eax, 0x80000+APPDATA.dbg_regs add eax, 0x80000+APPDATA.dbg_regs
mov ecx, [eax+0] mov ecx, [eax+0]
@ -453,7 +453,7 @@ debug_exc:
mov dr6, eax mov dr6, eax
; test if debugging ; test if debugging
cli cli
mov eax, [0x3000] mov eax, [CURRENT_TASK]
shl eax, 8 shl eax, 8
mov eax, [0x80000+eax+APPDATA.debugger_slot] mov eax, [0x80000+eax+APPDATA.debugger_slot]
test eax, eax test eax, eax
@ -463,7 +463,7 @@ debug_exc:
add esp, 28h+4 add esp, 28h+4
mov [error_interrupt], 1 mov [error_interrupt], 1
call show_error_parameters call show_error_parameters
mov edx, [0x3010] mov edx, [TASK_BASE]
mov byte [edx+TASKDATA.state], 4 mov byte [edx+TASKDATA.state], 4
jmp change_task jmp change_task
.debug: .debug:
@ -483,7 +483,7 @@ debug_exc:
cmp cl, not 10h cmp cl, not 10h
jnz .l1 jnz .l1
push edx ; DR6 image push edx ; DR6 image
mov ecx, [0x3010] mov ecx, [TASK_BASE]
push dword [ecx+TASKDATA.pid] ; PID push dword [ecx+TASKDATA.pid] ; PID
push 12 push 12
pop ecx pop ecx
@ -492,7 +492,7 @@ debug_exc:
pop ecx pop ecx
pop ecx pop ecx
pop ecx pop ecx
mov edx, [0x3010] mov edx, [TASK_BASE]
mov byte [edx+TASKDATA.state], 1 ; suspended mov byte [edx+TASKDATA.state], 1 ; suspended
call change_task call change_task
restore_ring3_context restore_ring3_context

View File

@ -395,7 +395,7 @@ proc init_LFB
mov edx, LFB_BASE mov edx, LFB_BASE
mov esi, [LFBAddress] mov esi, [LFBAddress]
mov edi, [LFBSize] mov edi, [LFBSize]
mov dword [exp_lfb+4], esi mov dword [exp_lfb+4], edx
shr edi, 12 shr edi, 12
mov [pg_count], edi mov [pg_count], edi

View File

@ -67,11 +67,11 @@ change_task:
jne .find_next_task jne .find_next_task
mov [dma_task_switched], 0 mov [dma_task_switched], 0
mov ebx, [dma_process] mov ebx, [dma_process]
cmp [0x3000], ebx cmp [CURRENT_TASK], ebx
je .return je .return
mov edi, [dma_slot_ptr] mov edi, [dma_slot_ptr]
mov [0x3000], ebx mov [CURRENT_TASK], ebx
mov [0x3010], edi mov [TASK_BASE], edi
jmp @f jmp @f
.find_next_task: .find_next_task:
; \end{Mario79} ; \end{Mario79}
@ -103,7 +103,7 @@ endg
update_counters: update_counters:
mov edi, [0x3010] mov edi, [TASK_BASE]
mov ebx, [edi+TASKDATA.counter_add] ; time stamp counter add mov ebx, [edi+TASKDATA.counter_add] ; time stamp counter add
call _rdtsc call _rdtsc
sub eax, ebx sub eax, ebx
@ -119,17 +119,17 @@ ret
; [0x3000] = ebx and [0x3010] = edi ; [0x3000] = ebx and [0x3010] = edi
; corrupts other regs ; corrupts other regs
find_next_task: find_next_task:
mov ebx, [0x3000] mov ebx, [CURRENT_TASK]
mov edi, [0x3010] mov edi, [TASK_BASE]
mov [prev_slot], ebx mov [prev_slot], ebx
.waiting_for_termination: .waiting_for_termination:
.waiting_for_reuse: .waiting_for_reuse:
.waiting_for_event: .waiting_for_event:
.suspended: .suspended:
cmp ebx, [0x3004] cmp ebx, [TASK_COUNT]
jb @f jb @f
mov edi, 0x3000 mov edi, CURRENT_TASK
xor ebx, ebx xor ebx, ebx
@@: @@:
@ -150,8 +150,8 @@ find_next_task:
cmp al, 9 cmp al, 9
je .waiting_for_reuse je .waiting_for_reuse
mov [0x3000],ebx mov [CURRENT_TASK],ebx
mov [0x3010],edi mov [TASK_BASE],edi
cmp al, 5 cmp al, 5
jne .noevents jne .noevents
@ -162,8 +162,8 @@ find_next_task:
mov [edi+TASKDATA.state], byte 0 mov [edi+TASKDATA.state], byte 0
.noevents: .noevents:
.found: .found:
mov [0x3000],ebx mov [CURRENT_TASK],ebx
mov [0x3010],edi mov [TASK_BASE],edi
call _rdtsc call _rdtsc
mov [edi+TASKDATA.counter_add],eax mov [edi+TASKDATA.counter_add],eax
@ -191,8 +191,8 @@ updatecputimes:
mov eax,[idleuse] mov eax,[idleuse]
mov [idleusesec],eax mov [idleusesec],eax
mov [idleuse],dword 0 mov [idleuse],dword 0
mov ecx, [0x3004] mov ecx, [TASK_COUNT]
mov edi, 0x3020 mov edi, TASK_DATA
.newupdate: .newupdate:
mov ebx,[edi+TASKDATA.counter_sum] mov ebx,[edi+TASKDATA.counter_sum]
mov [edi+TASKDATA.cpu_usage],ebx mov [edi+TASKDATA.cpu_usage],ebx

View File

@ -26,7 +26,7 @@ start_wait=$
jmp start_wait jmp start_wait
ok=$ ok=$
push eax push eax
mov eax,dword [0x3010+second_base_address] mov eax,dword [TASK_BASE+second_base_address]
mov eax,[eax+TASKDATA.pid] mov eax,[eax+TASKDATA.pid]
mov [name],eax mov [name],eax
pop eax pop eax
@ -60,7 +60,7 @@ macro WaitSimpleCriticalSection name
{ {
local start_wait,first_wait,inc_counter,end_wait local start_wait,first_wait,inc_counter,end_wait
push eax push eax
mov eax,[0x3010+second_base_address] mov eax,[TASK_BASE+second_base_address]
mov eax,[eax+TASKDATA.pid] mov eax,[eax+TASKDATA.pid]
start_wait=$ start_wait=$
cli cli
@ -92,7 +92,7 @@ release_end=$
macro TryWaitSimpleCriticalSection name ;result in eax and in flags macro TryWaitSimpleCriticalSection name ;result in eax and in flags
{ {
local ok,try_end local ok,try_end
mov eax,[0x3000+second_base_address] mov eax,[CURRENT_TASK+second_base_address]
mov eax,[eax+TASKDATA.pid] mov eax,[eax+TASKDATA.pid]
cmp [name],eax cmp [name],eax
jz ok jz ok

View File

@ -120,7 +120,7 @@ exc_c:
; test if debugging ; test if debugging
cli cli
mov eax, [0x3000] mov eax, [CURRENT_TASK]
shl eax, 8 shl eax, 8
mov eax, [0x80000+eax+APPDATA.debugger_slot] mov eax, [0x80000+eax+APPDATA.debugger_slot]
test eax, eax test eax, eax
@ -132,7 +132,7 @@ exc_c:
mov [error_interrupt], eax mov [error_interrupt], eax
call show_error_parameters call show_error_parameters
mov edx, [0x3010] mov edx, [TASK_BASE]
mov [edx + TASKDATA.state], byte 4 mov [edx + TASKDATA.state], byte 4
jmp change_task jmp change_task
@ -143,7 +143,7 @@ exc_c:
cld cld
movzx ecx, bl movzx ecx, bl
push ecx push ecx
mov ecx, [0x3010] mov ecx, [TASK_BASE]
push dword [ecx+TASKDATA.pid] ; PID of current process push dword [ecx+TASKDATA.pid] ; PID of current process
push 12 push 12
pop ecx pop ecx
@ -152,7 +152,7 @@ exc_c:
pop ecx pop ecx
pop ecx pop ecx
pop ecx pop ecx
mov edx, [0x3010] mov edx, [TASK_BASE]
mov byte [edx+TASKDATA.state], 1 ; suspended mov byte [edx+TASKDATA.state], 1 ; suspended
call change_task call change_task
restore_ring3_context restore_ring3_context
@ -196,9 +196,9 @@ endg
show_error_parameters: show_error_parameters:
mov [write_error_to],process_pid+43 mov [write_error_to],process_pid+43
mov eax,[0x3000] mov eax,[CURRENT_TASK]
shl eax, 5 shl eax, 5
mov eax,[0x3000+TASKDATA.pid+eax] mov eax,[CURRENT_TASK+TASKDATA.pid+eax]
call writehex call writehex
mov [write_error_to],process_error+43 mov [write_error_to],process_error+43
@ -433,9 +433,9 @@ irqhandler:
set_application_table_status: set_application_table_status:
push eax push eax
mov eax,[0x3000] mov eax,[CURRENT_TASK]
shl eax, 5 shl eax, 5
add eax,0x3000+TASKDATA.pid add eax,CURRENT_TASK+TASKDATA.pid
mov eax,[eax] mov eax,[eax]
mov [application_table_status],eax mov [application_table_status],eax
@ -448,9 +448,9 @@ set_application_table_status:
clear_application_table_status: clear_application_table_status:
push eax push eax
mov eax,[0x3000] mov eax,[CURRENT_TASK]
shl eax, 5 shl eax, 5
add eax,0x3000+TASKDATA.pid add eax,CURRENT_TASK+TASKDATA.pid
mov eax,[eax] mov eax,[eax]
cmp eax,[application_table_status] cmp eax,[application_table_status]
@ -737,7 +737,7 @@ term9:
jz .nodebug jz .nodebug
push 8 push 8
pop ecx pop ecx
push dword [0x3000+edi+TASKDATA.pid] ; PID push dword [CURRENT_TASK+edi+TASKDATA.pid] ; PID
push 2 push 2
call debugger_notify call debugger_notify
pop ecx pop ecx
@ -764,7 +764,7 @@ term9:
; activate window ; activate window
movzx eax, word [0xC000 + esi*2] movzx eax, word [0xC000 + esi*2]
cmp eax, [0x3004] cmp eax, [TASK_COUNT]
jne .dont_activate jne .dont_activate
pushad pushad
.check_next_window: .check_next_window:
@ -774,7 +774,7 @@ term9:
lea esi, [0xc400+eax*2] lea esi, [0xc400+eax*2]
movzx edi, word [esi] ; edi = process movzx edi, word [esi] ; edi = process
shl edi, 5 shl edi, 5
cmp [0x3000 + edi + TASKDATA.state], byte 9 ; skip dead slots cmp [CURRENT_TASK + edi + TASKDATA.state], byte 9 ; skip dead slots
je .check_next_window je .check_next_window
add edi, window_data add edi, window_data
; \begin{diamond}[19.09.2006] ; \begin{diamond}[19.09.2006]
@ -789,7 +789,7 @@ term9:
push esi ; remove hd1 & cd & flp reservation push esi ; remove hd1 & cd & flp reservation
shl esi, 5 shl esi, 5
mov esi, [esi+0x3000+TASKDATA.pid] mov esi, [esi+CURRENT_TASK+TASKDATA.pid]
cmp [hd1_status], esi cmp [hd1_status], esi
jnz @f jnz @f
call free_hd_channel call free_hd_channel
@ -809,7 +809,7 @@ term9:
pusha ; remove all irq reservations pusha ; remove all irq reservations
mov eax,esi mov eax,esi
shl eax, 5 shl eax, 5
mov eax,[eax+0x3000+TASKDATA.pid] mov eax,[eax+CURRENT_TASK+TASKDATA.pid]
mov edi,irq_owner mov edi,irq_owner
mov ecx,16 mov ecx,16
newirqfree: newirqfree:
@ -823,7 +823,7 @@ term9:
pusha ; remove all port reservations pusha ; remove all port reservations
mov edx,esi mov edx,esi
shl edx, 5 shl edx, 5
add edx,0x3000 add edx,CURRENT_TASK
mov edx,[edx+TASKDATA.pid] mov edx,[edx+TASKDATA.pid]
rmpr0: rmpr0:
@ -867,12 +867,12 @@ term9:
popa popa
mov edi,esi ; do not run this process slot mov edi,esi ; do not run this process slot
shl edi, 5 shl edi, 5
mov [edi+0x3000 + TASKDATA.state],byte 9 mov [edi+CURRENT_TASK + TASKDATA.state],byte 9
; debugger test - terminate all debuggees ; debugger test - terminate all debuggees
mov eax, 2 mov eax, 2
mov ecx, 0x80000+2*0x100+APPDATA.debugger_slot mov ecx, 0x80000+2*0x100+APPDATA.debugger_slot
.xd0: .xd0:
cmp eax, [0x3004] cmp eax, [TASK_COUNT]
ja .xd1 ja .xd1
cmp dword [ecx], esi cmp dword [ecx], esi
jnz @f jnz @f

View File

@ -342,7 +342,7 @@ proc CreateBuffer stdcall, format:dword, size:dword
.test_ok: .test_ok:
mov ebx, [CURRENT_TASK] ;hack: direct accsess mov ebx, [CURRENT_TASK] ;hack: direct accsess
shl ebx, 5 ;to kernel data shl ebx, 5 ;to kernel data
mov ebx, [0x3000+ebx+4] mov ebx, [CURRENT_TASK+ebx+4]
mov eax, STREAM_SIZE mov eax, STREAM_SIZE
call CreateObject call CreateObject

View File

@ -31,9 +31,9 @@ reserve_flp:
reserve_flp_ok: reserve_flp_ok:
push eax push eax
mov eax,[0x3000] mov eax,[CURRENT_TASK]
shl eax,5 shl eax,5
mov eax,[eax+0x3000+TASKDATA.pid] mov eax,[eax+CURRENT_TASK+TASKDATA.pid]
mov [flp_status],eax mov [flp_status],eax
pop eax pop eax
sti sti

View File

@ -124,9 +124,9 @@ reserve_hd1:
reserve_ok1: reserve_ok1:
push eax push eax
mov eax,[0x3000] mov eax,[CURRENT_TASK]
shl eax,5 shl eax,5
mov eax,[eax+0x3000+TASKDATA.pid] mov eax,[eax+CURRENT_TASK+TASKDATA.pid]
mov [hd1_status],eax mov [hd1_status],eax
pop eax pop eax
sti sti

View File

@ -85,7 +85,7 @@ file_system:
cmp dword [eax+0],15 ; GET_DISK_INFO cmp dword [eax+0],15 ; GET_DISK_INFO
je fs_info je fs_info
cmp dword [0x3000],1 ; no memory checks for kernel requests cmp dword [CURRENT_TASK],1 ; no memory checks for kernel requests
jz no_checks_for_kernel jz no_checks_for_kernel
mov edx,eax mov edx,eax
cmp dword [eax+0],1 cmp dword [eax+0],1

View File

@ -23,9 +23,9 @@ reserve_cd:
reserve_ok2: reserve_ok2:
push eax push eax
mov eax,[0x3000] mov eax,[CURRENT_TASK]
shl eax,5 shl eax,5
mov eax,[eax+0x3000+TASKDATA.pid] mov eax,[eax+CURRENT_TASK+TASKDATA.pid]
mov [cd_status],eax mov [cd_status],eax
pop eax pop eax
sti sti
@ -377,7 +377,7 @@ cd_get_parameters_of_file:
cd_get_parameters_of_file_1: cd_get_parameters_of_file_1:
; ïîëó÷àåì àòðèáóòû ôàéëà ; ïîëó÷àåì àòðèáóòû ôàéëà
xor eax,eax xor eax,eax
; файл не архивировался ; ôàéë íå àðõèâèðîâàëñ
inc al inc al
shl eax,1 shl eax,1
; ýòî êàòàëîã? ; ýòî êàòàëîã?

View File

@ -68,7 +68,7 @@ drawbuttonframes:
shr eax,16 shr eax,16
shr ebx,16 shr ebx,16
mov edx,[0x3010] mov edx,[TASK_BASE]
add eax,[edx-twdw + WDATA.box.left] add eax,[edx-twdw + WDATA.box.left]
add ebx,[edx-twdw + WDATA.box.top] add ebx,[edx-twdw + WDATA.box.top]
@ -164,7 +164,7 @@ button_dececx:
sys_button: sys_button:
push edi push edi
mov edi,[0x3000] mov edi,[CURRENT_TASK]
shl edi,8 shl edi,8
rol eax,16 rol eax,16
add ax,word[edi+0x80000+APPDATA.wnd_clientbox.left] add ax,word[edi+0x80000+APPDATA.wnd_clientbox.left]
@ -197,7 +197,7 @@ sys_button:
push ebx push ebx
shr eax,16 shr eax,16
shr ebx,16 shr ebx,16
mov edx,[0x3010] mov edx,[TASK_BASE]
mov esi,[edx-twdw + WDATA.box.left] mov esi,[edx-twdw + WDATA.box.left]
mov edi,[edx-twdw + WDATA.box.top] mov edi,[edx-twdw + WDATA.box.top]
add eax,esi add eax,esi
@ -247,7 +247,7 @@ sys_button:
shl eax,4 shl eax,4
add eax,edi add eax,edi
mov bx,[0x3000] mov bx,[CURRENT_TASK]
mov [eax],bx mov [eax],bx
add eax,2 ; save button id number add eax,2 ; save button id number
@ -298,7 +298,7 @@ remove_button:
add eax,0x10 add eax,0x10
mov dx,[0x3000] mov dx,[CURRENT_TASK]
cmp dx,[eax] cmp dx,[eax]
jnz rnewba jnz rnewba
@ -504,7 +504,7 @@ checkbuttons:
movzx ebx,word [eax] movzx ebx,word [eax]
movzx ecx,word [0xC000 + ebx * 2] movzx ecx,word [0xC000 + ebx * 2]
cmp ecx,[0x3004] cmp ecx,[TASK_COUNT]
jne buttonnewcheck jne buttonnewcheck
; check that button start is inside window x/y end ; check that button start is inside window x/y end

View File

@ -101,7 +101,7 @@ create_event:
mov ebx, [CURRENT_TASK] mov ebx, [CURRENT_TASK]
shl ebx, 5 shl ebx, 5
mov ebx, [0x3000+ebx+4] mov ebx, [CURRENT_TASK+ebx+4]
mov [eax+APPOBJ.pid], ebx mov [eax+APPOBJ.pid], ebx
mov edx, [.flags] mov edx, [.flags]
mov [eax+EVENT.state], edx mov [eax+EVENT.state], edx
@ -274,7 +274,7 @@ proc get_event_ex stdcall, p_ev:dword, timeout:dword
call destroy_event.force call destroy_event.force
ret ret
.switch: .switch:
mov eax, [0x3010] mov eax, [TASK_BASE]
mov [eax+TASKDATA.state], byte 5 mov [eax+TASKDATA.state], byte 5
call change_task call change_task
jmp .wait jmp .wait
@ -339,7 +339,7 @@ wait_event:
ret ret
.switch: .switch:
or [eax+EVENT.state], EVENT_WATCHED or [eax+EVENT.state], EVENT_WATCHED
mov eax, [0x3010] mov eax, [TASK_BASE]
mov [eax+TASKDATA.state], byte 5 mov [eax+TASKDATA.state], byte 5
call change_task call change_task
mov eax, [.event] mov eax, [.event]
@ -497,7 +497,7 @@ sys_waitforevent:
jne eventoccur jne eventoccur
newwait: newwait:
mov eax, [0x3010] mov eax, [TASK_BASE]
mov [eax+TASKDATA.state], byte 5 mov [eax+TASKDATA.state], byte 5
call change_task call change_task
@ -511,10 +511,10 @@ get_event_for_app:
pushad pushad
mov edi,[0x3010] ; WINDOW REDRAW mov edi,[TASK_BASE] ; WINDOW REDRAW
test [edi+TASKDATA.event_mask],dword 1 test [edi+TASKDATA.event_mask],dword 1
jz no_eventoccur1 jz no_eventoccur1
;mov edi,[0x3010] ;mov edi,[TASK_BASE]
cmp [edi-twdw+WDATA.fl_redraw],byte 0 cmp [edi-twdw+WDATA.fl_redraw],byte 0
je no_eventoccur1 je no_eventoccur1
popad popad
@ -522,12 +522,12 @@ get_event_for_app:
ret ret
no_eventoccur1: no_eventoccur1:
;mov edi,[0x3010] ; KEY IN BUFFER ;mov edi,[TASK_BASE] ; KEY IN BUFFER
test [edi+TASKDATA.event_mask],dword 2 test [edi+TASKDATA.event_mask],dword 2
jz no_eventoccur2 jz no_eventoccur2
mov ecx, [0x3000] mov ecx, [CURRENT_TASK]
movzx edx,word [0xC000+ecx*2] movzx edx,word [0xC000+ecx*2]
mov eax, [0x3004] mov eax, [TASK_COUNT]
cmp eax,edx cmp eax,edx
jne no_eventoccur2x jne no_eventoccur2x
cmp [0xf400],byte 0 cmp [0xf400],byte 0
@ -546,14 +546,14 @@ get_event_for_app:
jb @b jb @b
no_eventoccur2: no_eventoccur2:
;mov edi,[0x3010] ; BUTTON IN BUFFER ;mov edi,[TASK_BASE] ; BUTTON IN BUFFER
test [edi+TASKDATA.event_mask],dword 4 test [edi+TASKDATA.event_mask],dword 4
jz no_eventoccur3 jz no_eventoccur3
cmp [0xf500],byte 0 cmp [0xf500],byte 0
je no_eventoccur3 je no_eventoccur3
mov ecx, [0x3000] mov ecx, [CURRENT_TASK]
movzx edx, word [0xC000+ecx*2] movzx edx, word [0xC000+ecx*2]
mov eax, [0x3004] mov eax, [TASK_COUNT]
cmp eax,edx cmp eax,edx
jnz no_eventoccur3 jnz no_eventoccur3
popad popad
@ -572,10 +572,10 @@ get_event_for_app:
no_eventoccur3: no_eventoccur3:
;mov edi,[0x3010] ; mouse event ;mov edi,[TASK_BASE] ; mouse event
test [edi+TASKDATA.event_mask],dword 00100000b test [edi+TASKDATA.event_mask],dword 00100000b
jz no_mouse_event jz no_mouse_event
mov eax,[0x3000] mov eax,[CURRENT_TASK]
shl eax,8 shl eax,8
test [eax+0x80000+APPDATA.event_mask],dword 00100000b test [eax+0x80000+APPDATA.event_mask],dword 00100000b
jz no_mouse_event jz no_mouse_event
@ -586,7 +586,7 @@ get_event_for_app:
no_mouse_event: no_mouse_event:
;mov edi,[0x3010] ; DESKTOP BACKGROUND REDRAW ;mov edi,[TASK_BASE] ; DESKTOP BACKGROUND REDRAW
test [edi+TASKDATA.event_mask],dword 16 test [edi+TASKDATA.event_mask],dword 16
jz no_eventoccur5 jz no_eventoccur5
cmp [0xfff0],byte 2 cmp [0xfff0],byte 2
@ -596,10 +596,10 @@ get_event_for_app:
ret ret
no_eventoccur5: no_eventoccur5:
;mov edi,[0x3010] ; IPC ;mov edi,[TASK_BASE] ; IPC
test [edi+TASKDATA.event_mask],dword 01000000b test [edi+TASKDATA.event_mask],dword 01000000b
jz no_ipc jz no_ipc
mov eax,[0x3000] mov eax,[CURRENT_TASK]
shl eax,8 shl eax,8
test [eax+0x80000+APPDATA.event_mask],dword 01000000b test [eax+0x80000+APPDATA.event_mask],dword 01000000b
jz no_ipc jz no_ipc
@ -610,10 +610,10 @@ get_event_for_app:
no_ipc: no_ipc:
;mov edi,[0x3010] ; STACK ;mov edi,[TASK_BASE] ; STACK
test [edi+TASKDATA.event_mask],dword 10000000b test [edi+TASKDATA.event_mask],dword 10000000b
jz no_stack_event jz no_stack_event
mov eax,[0x3000] mov eax,[CURRENT_TASK]
shl eax,8 shl eax,8
test [eax+0x80000+APPDATA.event_mask],dword 10000000b test [eax+0x80000+APPDATA.event_mask],dword 10000000b
jz no_stack_event jz no_stack_event
@ -625,7 +625,7 @@ get_event_for_app:
test byte [edi+TASKDATA.event_mask+1], 1 ; DEBUG test byte [edi+TASKDATA.event_mask+1], 1 ; DEBUG
jz .test_IRQ jz .test_IRQ
mov eax, [0x3000] mov eax, [CURRENT_TASK]
shl eax, 8 shl eax, 8
test byte [eax+0x80000+APPDATA.event_mask+1], byte 1 test byte [eax+0x80000+APPDATA.event_mask+1], byte 1
jz .test_IRQ jz .test_IRQ
@ -635,7 +635,7 @@ get_event_for_app:
ret ret
;.test_ext: ;.test_ext:
; mov eax, [0x3000] ; mov eax, [CURRENT_TASK]
; shl eax, 8 ; shl eax, 8
; test dword [eax+0x80000+APPDATA.event_mask], EVENT_EXTENDED ; test dword [eax+0x80000+APPDATA.event_mask], EVENT_EXTENDED
; jz .test_IRQ ; jz .test_IRQ
@ -651,14 +651,14 @@ get_event_for_app:
mov ebx,0x00010000 mov ebx,0x00010000
xor ecx, ecx xor ecx, ecx
irq_event_test: irq_event_test:
mov edi,[0x3010] mov edi,[TASK_BASE]
test [edi+TASKDATA.event_mask],ebx test [edi+TASKDATA.event_mask],ebx
jz no_irq_event jz no_irq_event
mov edi,ecx mov edi,ecx
shl edi,2 shl edi,2
add edi,irq_owner add edi,irq_owner
mov edx,[edi] mov edx,[edi]
mov eax,[0x3010] mov eax,[TASK_BASE]
mov eax,[eax+TASKDATA.pid] mov eax,[eax+TASKDATA.pid]
cmp edx,eax cmp edx,eax
jne no_irq_event jne no_irq_event

View File

@ -365,7 +365,7 @@ drawwindow_IV:
shl eax,4 shl eax,4
add eax,edi add eax,edi
mov bx,[0x3000] mov bx,[CURRENT_TASK]
mov [eax],bx mov [eax],bx
add eax,2 ; save button id number add eax,2 ; save button id number
@ -404,7 +404,7 @@ drawwindow_IV:
shl eax,4 shl eax,4
add eax,edi add eax,edi
mov bx,[0x3000] mov bx,[CURRENT_TASK]
mov [eax],bx mov [eax],bx
add eax,2 ; save button id number add eax,2 ; save button id number

View File

@ -60,7 +60,7 @@ calculatescreen:
mov esi, 1 mov esi, 1
call setscreen call setscreen
mov ebp, [0x3004] ; number of processes mov ebp, [TASK_COUNT] ; number of processes
cmp ebp, 1 cmp ebp, 1
jbe .finish jbe .finish
align 4 align 4
@ -68,7 +68,7 @@ calculatescreen:
movzx edi, word [0xC400 + esi * 2] movzx edi, word [0xC400 + esi * 2]
shl edi, 5 shl edi, 5
cmp [0x3000+edi+TASKDATA.state], byte 9 cmp [CURRENT_TASK+edi+TASKDATA.state], byte 9
je .not_wnd je .not_wnd
add edi, window_data add edi, window_data
@ -375,7 +375,7 @@ display_settings:
cmp eax,2 ; set common window colours cmp eax,2 ; set common window colours
jne no_com_colours jne no_com_colours
mov [windowtypechanged],dword 1 mov [windowtypechanged],dword 1
mov esi,[0x3010] mov esi,[TASK_BASE]
add esi,TASKDATA.mem_start add esi,TASKDATA.mem_start
add ebx,[esi] add ebx,[esi]
mov esi,ebx mov esi,ebx
@ -389,7 +389,7 @@ display_settings:
cmp eax,3 ; get common window colours cmp eax,3 ; get common window colours
jne no_get_com jne no_get_com
mov esi,[0x3010] mov esi,[TASK_BASE]
add esi,TASKDATA.mem_start add esi,TASKDATA.mem_start
add ebx,[esi] add ebx,[esi]
mov edi,ebx mov edi,ebx
@ -468,7 +468,7 @@ display_settings:
cmp eax,8 ; set window skin cmp eax,8 ; set window skin
jne no_set_skin jne no_set_skin
mov eax,ebx mov eax,ebx
mov edi,[0x3010] mov edi,[TASK_BASE]
add ebx,[edi+TASKDATA.mem_start] ; abs start of info block add ebx,[edi+TASKDATA.mem_start] ; abs start of info block
pushd [ebx+0] [ebx+4] [ebx+8] [ebx+12] pushd [ebx+0] [ebx+4] [ebx+8] [ebx+12]
mov dword[ebx+0],0 ; read mov dword[ebx+0],0 ; read
@ -515,7 +515,7 @@ display_settings:
repos_windows: repos_windows:
mov ecx,[0x3004] mov ecx,[TASK_COUNT]
mov edi,0x20*2 mov edi,0x20*2
mov byte[0x0000fff0],1 mov byte[0x0000fff0],1
dec ecx dec ecx
@ -911,7 +911,7 @@ windowactivate:
; if type of current active window is 3, ; if type of current active window is 3,
; it must be redrawn ; it must be redrawn
mov eax, [0x3004] mov eax, [TASK_COUNT]
movzx eax, word [0xC400 + eax*2] movzx eax, word [0xC400 + eax*2]
shl eax, 5 shl eax, 5
add eax, window_data add eax, window_data
@ -928,7 +928,7 @@ windowactivate:
xor esi, esi ; drop others xor esi, esi ; drop others
waloop: waloop:
cmp esi, dword [0x3004] cmp esi, dword [TASK_COUNT]
jae wacont jae wacont
inc esi inc esi
lea edi, [0xC000 + esi*2] lea edi, [0xC000 + esi*2]
@ -944,13 +944,13 @@ windowactivate:
pop esi ; esi = pointer at 0xC400 pop esi ; esi = pointer at 0xC400
movzx eax, word [esi] movzx eax, word [esi]
mov bx, [0x3004] ; number of processes mov bx, [TASK_COUNT] ; number of processes
mov [0xC000+eax*2], bx ; this is the last (and the upper) mov [0xC000+eax*2], bx ; this is the last (and the upper)
; update on screen -window stack ; update on screen -window stack
xor esi, esi xor esi, esi
waloop2: waloop2:
mov edi, [0x3004] mov edi, [TASK_COUNT]
cmp esi, edi cmp esi, edi
jae wacont2 jae wacont2
inc esi inc esi
@ -992,7 +992,7 @@ checkwindowdraw:
add esi, 2 add esi, 2
push esi push esi
mov eax, [0x3004] mov eax, [TASK_COUNT]
lea eax, word [0xC400 + eax * 2] ; number of the upper window lea eax, word [0xC400 + eax * 2] ; number of the upper window
cmp esi, eax cmp esi, eax
@ -1000,7 +1000,7 @@ checkwindowdraw:
movzx eax, word [esi] movzx eax, word [esi]
shl eax, 5 shl eax, 5
cmp [0x3000 + eax + TASKDATA.state], byte 9 cmp [CURRENT_TASK + eax + TASKDATA.state], byte 9
je .new_check ; skip dead windows je .new_check ; skip dead windows
lea esi, [eax+window_data] lea esi, [eax+window_data]
@ -1058,7 +1058,7 @@ waredraw: ; if redraw necessary at activate
; update screen info ; update screen info
pushad pushad
mov edi, [0x3004] ; the last process (number) mov edi, [TASK_COUNT] ; the last process (number)
movzx esi, word [0xC400 + edi * 2] movzx esi, word [0xC400 + edi * 2]
shl esi, 5 shl esi, 5
add esi, window_data add esi, window_data
@ -1072,7 +1072,7 @@ waredraw: ; if redraw necessary at activate
add ecx, eax ; ecx = x_end add ecx, eax ; ecx = x_end
add edx, ebx ; edx = y_end add edx, ebx ; edx = y_end
mov edi, [0x3004] mov edi, [TASK_COUNT]
movzx esi, word [0xC400 + edi * 2] movzx esi, word [0xC400 + edi * 2]
call setscreen call setscreen
popad popad
@ -1137,7 +1137,7 @@ restore_minimized_window:
jz .skip_redrawings jz .skip_redrawings
mov [edi+WDATA.fl_redraw], 1 mov [edi+WDATA.fl_redraw], 1
and [edi+WDATA.fl_wstate], not WSTATE_MINIMIZED and [edi+WDATA.fl_wstate], not WSTATE_MINIMIZED
cmp eax, [0x3004] ; the uppermost window cmp eax, [TASK_COUNT] ; the uppermost window
jnz .no_uppermost jnz .no_uppermost
mov eax, [edi+WDATA.box.left] mov eax, [edi+WDATA.box.left]
mov ebx, [edi+WDATA.box.top] mov ebx, [edi+WDATA.box.top]
@ -1174,7 +1174,7 @@ checkwindows:
cmp [window_minimize], 0 cmp [window_minimize], 0
je .no_minimizing je .no_minimizing
mov eax, [0x3004] ; the uppermost window mov eax, [TASK_COUNT] ; the uppermost window
mov bl, 0 mov bl, 0
xchg [window_minimize], bl xchg [window_minimize], bl
cmp bl, 1 cmp bl, 1
@ -1192,7 +1192,7 @@ checkwindows:
ret ret
.mouse_buttons_pressed: .mouse_buttons_pressed:
mov esi,[0x3004] mov esi,[TASK_COUNT]
inc esi inc esi
cwloop: cwloop:
@ -1228,7 +1228,7 @@ checkwindows:
pushad pushad
mov eax, esi mov eax, esi
mov ebx, [0x3004] mov ebx, [TASK_COUNT]
cmp eax, ebx ; is this window active? cmp eax, ebx ; is this window active?
jz .move_resize_window jz .move_resize_window
@ -1751,7 +1751,7 @@ random_shaped_window:
test eax, eax test eax, eax
jne rsw_no_address jne rsw_no_address
mov eax,[0x3000] mov eax,[CURRENT_TASK]
shl eax,8 shl eax,8
mov [eax+0x80000+APPDATA.wnd_shape],ebx mov [eax+0x80000+APPDATA.wnd_shape],ebx
@ -1759,7 +1759,7 @@ random_shaped_window:
cmp eax,1 cmp eax,1
jne rsw_no_scale jne rsw_no_scale
mov eax,[0x3000] mov eax,[CURRENT_TASK]
shl eax,8 shl eax,8
mov byte [eax+0x80000+APPDATA.wnd_shape_scale], bl mov byte [eax+0x80000+APPDATA.wnd_shape_scale], bl
rsw_no_scale: rsw_no_scale:

View File

@ -91,7 +91,7 @@ irq1:
; mov ds, ax ; mov ds, ax
; mov es, ax ; mov es, ax
movzx eax,word[0x3004] ; top window process movzx eax,word[TASK_COUNT] ; top window process
movzx eax,word[0xC400+eax*2] movzx eax,word[0xC400+eax*2]
shl eax,8 shl eax,8
mov al,[0x80000+eax+APPDATA.keyboard_mode] mov al,[0x80000+eax+APPDATA.keyboard_mode]

View File

@ -265,9 +265,9 @@ __sys_disable_mouse:
ret ret
@@: @@:
pushad pushad
cmp [0x3000],dword 1 cmp [CURRENT_TASK],dword 1
je disable_m je disable_m
mov edx,[0x3000] mov edx,[CURRENT_TASK]
shl edx,5 shl edx,5
add edx,window_data add edx,window_data
movzx eax, word [0xfb0a] movzx eax, word [0xfb0a]
@ -277,7 +277,7 @@ __sys_disable_mouse:
imul ecx,ebx imul ecx,ebx
add ecx,eax add ecx,eax
add ecx, display_data add ecx, display_data
mov eax, [0x3000] mov eax, [CURRENT_TASK]
movzx ebx, byte [ecx] movzx ebx, byte [ecx]
cmp eax,ebx cmp eax,ebx
je yes_mouse_disable je yes_mouse_disable
@ -296,7 +296,7 @@ __sys_disable_mouse:
je yes_mouse_disable je yes_mouse_disable
jmp no_mouse_disable jmp no_mouse_disable
yes_mouse_disable: yes_mouse_disable:
mov edx,[0x3000] mov edx,[CURRENT_TASK]
shl edx,5 shl edx,5
add edx,window_data add edx,window_data
movzx eax, word [0xfb0a] movzx eax, word [0xfb0a]

View File

@ -504,9 +504,9 @@ include 'vmodeld.inc'
; LOAD FONTS I and II ; LOAD FONTS I and II
mov [0x3000],dword 1 mov [CURRENT_TASK],dword 1
mov [0x3004],dword 1 mov [TASK_COUNT],dword 1
mov [0x3010],dword 0x3020 mov [TASK_BASE],dword TASK_DATA
mov esi,char mov esi,char
xor ebx,ebx xor ebx,ebx
@ -636,9 +636,9 @@ include 'vmodeld.inc'
mov dword [0x80000+256+APPDATA.bk_obj], ebx mov dword [0x80000+256+APPDATA.bk_obj], ebx
; task list ; task list
mov [0x3020+TASKDATA.wnd_number], 1 ; on screen number mov [TASK_DATA+TASKDATA.wnd_number], 1 ; on screen number
mov [0x3020+TASKDATA.pid], 1 ; process id number mov [TASK_DATA+TASKDATA.pid], 1 ; process id number
mov [0x3020+TASKDATA.mem_start], 0 ; process base address mov [TASK_DATA+TASKDATA.mem_start], 0 ; process base address
mov edi,tss_data+tss_step mov edi,tss_data+tss_step
mov ecx, (tss_step)/4 mov ecx, (tss_step)/4
@ -719,8 +719,8 @@ include 'vmodeld.inc'
call load_skin call load_skin
; LOAD FIRST APPLICATION ; LOAD FIRST APPLICATION
mov [0x3000],dword 1 mov [CURRENT_TASK],dword 1
mov [0x3004],dword 1 mov [TASK_COUNT],dword 1
cli cli
cmp byte [0x2f0000+0x9030],1 cmp byte [0x2f0000+0x9030],1
jne no_load_vrr_m jne no_load_vrr_m
@ -744,8 +744,8 @@ no_load_vrr_m:
first_app_found: first_app_found:
cli cli
;mov [0x3004],dword 2 ;mov [TASK_COUNT],dword 2
mov [0x3000],dword 1 ; set OS task fisrt mov [CURRENT_TASK],dword 1 ; set OS task fisrt
; SET KEYBOARD PARAMETERS ; SET KEYBOARD PARAMETERS
@ -1061,7 +1061,7 @@ sys_outport:
ret ret
sopl8: sopl8:
mov edx,[0x3010] mov edx,[TASK_BASE]
mov edx,[edx+0x4] mov edx,[edx+0x4]
and ebx,65535 and ebx,65535
cld cld
@ -1326,7 +1326,7 @@ draw_num_text:
; edx length ; edx length
; edi 1 force ; edi 1 force
; mov edi,[0x3000] ; mov edi,[CURRENT_TASK]
; shl edi,8 ; shl edi,8
; add ax,word[edi+0x80000+APPDATA.wnd_clientbox.top] ; add ax,word[edi+0x80000+APPDATA.wnd_clientbox.top]
; rol eax,16 ; rol eax,16
@ -1339,12 +1339,12 @@ draw_num_text:
add ecx,esp add ecx,esp
mov eax,[esp+64+32-8+4] mov eax,[esp+64+32-8+4]
push edx ; add window start x & y push edx ; add window start x & y
mov edx,[0x3010] mov edx,[TASK_BASE]
mov ebx,[edx-twdw+WDATA.box.left] mov ebx,[edx-twdw+WDATA.box.left]
add ebx, [(edx-0x3000)*8+0x80000+APPDATA.wnd_clientbox.left] add ebx, [(edx-CURRENT_TASK)*8+0x80000+APPDATA.wnd_clientbox.left]
shl ebx,16 shl ebx,16
add ebx,[edx-twdw+WDATA.box.top] add ebx,[edx-twdw+WDATA.box.top]
add ebx, [(edx-0x3000)*8+0x80000+APPDATA.wnd_clientbox.top] add ebx, [(edx-CURRENT_TASK)*8+0x80000+APPDATA.wnd_clientbox.top]
add eax,ebx add eax,ebx
pop edx pop edx
mov ebx,[esp+64+32-12+4] mov ebx,[esp+64+32-12+4]
@ -1405,7 +1405,7 @@ endg
jnz nsyse2 jnz nsyse2
cmp ebx,1 cmp ebx,1
jnz kbnobase jnz kbnobase
mov edi,[0x3010] mov edi,[TASK_BASE]
add ecx,[edi+TASKDATA.mem_start] add ecx,[edi+TASKDATA.mem_start]
mov eax,ecx mov eax,ecx
mov ebx,keymap mov ebx,keymap
@ -1415,7 +1415,7 @@ endg
kbnobase: kbnobase:
cmp ebx,2 cmp ebx,2
jnz kbnoshift jnz kbnoshift
mov edi,[0x3010] mov edi,[TASK_BASE]
add ecx,[edi+TASKDATA.mem_start] add ecx,[edi+TASKDATA.mem_start]
mov eax,ecx mov eax,ecx
mov ebx,keymap_shift mov ebx,keymap_shift
@ -1425,7 +1425,7 @@ endg
kbnoshift: kbnoshift:
cmp ebx,3 cmp ebx,3
jne kbnoalt jne kbnoalt
mov edi,[0x3010] mov edi,[TASK_BASE]
add ecx,[edi+TASKDATA.mem_start] add ecx,[edi+TASKDATA.mem_start]
mov eax,ecx mov eax,ecx
mov ebx,keymap_alt mov ebx,keymap_alt
@ -1608,7 +1608,7 @@ sys_getsetup:
jne ngsyse2 jne ngsyse2
cmp ebx,1 cmp ebx,1
jnz kbnobaseret jnz kbnobaseret
mov edi,[0x3010] mov edi,[TASK_BASE]
add ecx,[edi+TASKDATA.mem_start] add ecx,[edi+TASKDATA.mem_start]
mov ebx,ecx mov ebx,ecx
mov eax,keymap mov eax,keymap
@ -1618,7 +1618,7 @@ sys_getsetup:
kbnobaseret: kbnobaseret:
cmp ebx,2 cmp ebx,2
jnz kbnoshiftret jnz kbnoshiftret
mov edi,[0x3010] mov edi,[TASK_BASE]
add ecx,[edi+TASKDATA.mem_start] add ecx,[edi+TASKDATA.mem_start]
mov ebx,ecx mov ebx,ecx
mov eax,keymap_shift mov eax,keymap_shift
@ -1628,7 +1628,7 @@ sys_getsetup:
kbnoshiftret: kbnoshiftret:
cmp ebx,3 cmp ebx,3
jne kbnoaltret jne kbnoaltret
mov edi,[0x3010] mov edi,[TASK_BASE]
add ecx,[edi+TASKDATA.mem_start] add ecx,[edi+TASKDATA.mem_start]
mov ebx,ecx mov ebx,ecx
mov eax,keymap_alt mov eax,keymap_alt
@ -1733,7 +1733,7 @@ mswin:
mov eax,[0xfb0a] mov eax,[0xfb0a]
shl eax,16 shl eax,16
mov ax,[0xfb0c] mov ax,[0xfb0c]
mov esi,[0x3010] mov esi,[TASK_BASE]
mov bx, word [esi-twdw+WDATA.box.left] mov bx, word [esi-twdw+WDATA.box.left]
shl ebx,16 shl ebx,16
mov bx, word [esi-twdw+WDATA.box.top] mov bx, word [esi-twdw+WDATA.box.top]
@ -1884,7 +1884,7 @@ include 'detect/ps2mouse.inc'
sys_end: sys_end:
mov eax,[0x3010] mov eax,[TASK_BASE]
mov [eax+TASKDATA.state], 3 ; terminate this program mov [eax+TASKDATA.state], 3 ; terminate this program
waitterm: ; wait here for termination waitterm: ; wait here for termination
@ -1931,7 +1931,7 @@ sysfn_shutdown: ; 18.1 = BOOT
mov [0x2f0000+0x9030],byte 0 mov [0x2f0000+0x9030],byte 0
for_shutdown_parameter: for_shutdown_parameter:
mov eax,[0x3004] mov eax,[TASK_COUNT]
add eax,2 add eax,2
mov [shutdown_processes],eax mov [shutdown_processes],eax
mov [0xFF00],al mov [0xFF00],al
@ -1944,13 +1944,13 @@ sysfn_shutdown: ; 18.1 = BOOT
sysfn_terminate: ; 18.2 = TERMINATE sysfn_terminate: ; 18.2 = TERMINATE
cmp ebx,2 cmp ebx,2
jb noprocessterminate jb noprocessterminate
mov edx,[0x3004] mov edx,[TASK_COUNT]
cmp ebx,edx cmp ebx,edx
ja noprocessterminate ja noprocessterminate
mov eax,[0x3004] mov eax,[TASK_COUNT]
shl ebx,5 shl ebx,5
mov edx,[ebx+0x3000+TASKDATA.pid] mov edx,[ebx+CURRENT_TASK+TASKDATA.pid]
add ebx,0x3000+TASKDATA.state add ebx,CURRENT_TASK+TASKDATA.state
cmp byte [ebx], 9 cmp byte [ebx], 9
jz noprocessterminate jz noprocessterminate
@ -1995,13 +1995,13 @@ sysfn_terminate2:
sysfn_activate: ; 18.3 = ACTIVATE WINDOW sysfn_activate: ; 18.3 = ACTIVATE WINDOW
cmp ebx,2 cmp ebx,2
jb .nowindowactivate jb .nowindowactivate
cmp ebx,[0x3004] cmp ebx,[TASK_COUNT]
ja .nowindowactivate ja .nowindowactivate
mov [window_minimize], 2 ; restore window if minimized mov [window_minimize], 2 ; restore window if minimized
movzx esi, word [0xC000 + ebx*2] movzx esi, word [0xC000 + ebx*2]
cmp esi, [0x3004] cmp esi, [TASK_COUNT]
je .nowindowactivate ; already active je .nowindowactivate ; already active
mov edi, ebx mov edi, ebx
@ -2029,7 +2029,7 @@ sysfn_getcpuclock: ; 18.5 = GET TSC/SEC
;!!!!!!!!!!!!!!!!!!!!!!!! ;!!!!!!!!!!!!!!!!!!!!!!!!
sysfn_getactive: ; 18.7 = get active window sysfn_getactive: ; 18.7 = get active window
mov eax, [0x3004] mov eax, [TASK_COUNT]
movzx eax, word [0xC400 + eax*2] movzx eax, word [0xC400 + eax*2]
mov [esp+36],eax mov [esp+36],eax
ret ret
@ -2070,7 +2070,7 @@ sysfn_getdiskinfo: ; 18.11 = get disk info table
rep movsb rep movsb
ret ret
for_all_tables: for_all_tables:
mov edi,[0x3010] mov edi,[TASK_BASE]
mov edi,[edi+TASKDATA.mem_start] mov edi,[edi+TASKDATA.mem_start]
add edi,ecx add edi,ecx
mov esi,0x40000 mov esi,0x40000
@ -2089,7 +2089,7 @@ sysfn_lastkey: ; 18.12 = return 0 (backward compatibility)
ret ret
sysfn_getversion: ; 18.13 = get kernel ID and version sysfn_getversion: ; 18.13 = get kernel ID and version
mov edi,[0x3010] mov edi,[TASK_BASE]
mov edi,[edi+TASKDATA.mem_start] mov edi,[edi+TASKDATA.mem_start]
add edi,ebx add edi,ebx
mov esi,version_inf mov esi,version_inf
@ -2285,7 +2285,7 @@ draw_background_temp:
cmp eax,5 ; BLOCK MOVE TO BGR cmp eax,5 ; BLOCK MOVE TO BGR
jnz nosb5 jnz nosb5
; bughere ; bughere
mov edi, [0x3010] mov edi, [TASK_BASE]
add ebx, [edi+TASKDATA.mem_start] add ebx, [edi+TASKDATA.mem_start]
; mov esi, ebx ; mov esi, ebx
; mov edi, ecx ; mov edi, ecx
@ -2347,9 +2347,9 @@ align 4
sys_getkey: sys_getkey:
mov [esp+36],dword 1 mov [esp+36],dword 1
; test main buffer ; test main buffer
mov ebx, [0x3000] ; TOP OF WINDOW STACK mov ebx, [CURRENT_TASK] ; TOP OF WINDOW STACK
movzx ecx,word [0xC000 + ebx * 2] movzx ecx,word [0xC000 + ebx * 2]
mov edx,[0x3004] mov edx,[TASK_COUNT]
cmp ecx,edx cmp ecx,edx
jne .finish jne .finish
cmp [0xf400],byte 0 cmp [0xf400],byte 0
@ -2395,10 +2395,10 @@ align 4
sys_getbutton: sys_getbutton:
mov ebx, [0x3000] ; TOP OF WINDOW STACK mov ebx, [CURRENT_TASK] ; TOP OF WINDOW STACK
mov [esp+36],dword 1 mov [esp+36],dword 1
movzx ecx, word [0xC000 + ebx * 2] movzx ecx, word [0xC000 + ebx * 2]
mov edx, [0x3004] ; less than 256 processes mov edx, [TASK_COUNT] ; less than 256 processes
cmp ecx,edx cmp ecx,edx
jne .exit jne .exit
movzx eax,byte [0xf500] movzx eax,byte [0xf500]
@ -2427,12 +2427,12 @@ sys_cpuusage:
; +30 dword PID , process idenfification number ; +30 dword PID , process idenfification number
; ;
mov edi,[0x3010] ; eax = return area mov edi,[TASK_BASE] ; eax = return area
add eax,[edi + TASKDATA.mem_start] add eax,[edi + TASKDATA.mem_start]
cmp ebx,-1 ; who am I ? cmp ebx,-1 ; who am I ?
jne no_who_am_i jne no_who_am_i
mov ebx,[0x3000] mov ebx,[CURRENT_TASK]
no_who_am_i: no_who_am_i:
push eax ; return area push eax ; return area
@ -2447,7 +2447,7 @@ sys_cpuusage:
xor edx,edx xor edx,edx
mov eax,0x20 mov eax,0x20
mul ebx mul ebx
add eax,0x3000+TASKDATA.cpu_usage add eax,CURRENT_TASK+TASKDATA.cpu_usage
mov ebx,eax mov ebx,eax
pop eax pop eax
mov ecx,[ebx] mov ecx,[ebx]
@ -2486,7 +2486,7 @@ sys_cpuusage:
mov eax,[esp] mov eax,[esp]
shl eax,5 shl eax,5
add eax,0x3000+TASKDATA.pid add eax,CURRENT_TASK+TASKDATA.pid
mov eax,[eax] mov eax,[eax]
mov [ebx+20],eax mov [ebx+20],eax
@ -2505,7 +2505,7 @@ sys_cpuusage:
mov eax,[esp] mov eax,[esp]
shl eax,5 shl eax,5
add eax,0x3000+TASKDATA.state add eax,CURRENT_TASK+TASKDATA.state
mov eax,[eax] mov eax,[eax]
mov [ebx+40],ax mov [ebx+40],ax
@ -2531,7 +2531,7 @@ sys_cpuusage:
; return number of processes ; return number of processes
mov eax,[0x3004] mov eax,[TASK_COUNT]
mov [esp+36],eax mov [esp+36],eax
ret ret
@ -2618,7 +2618,7 @@ sys_redrawstat:
; buttons away ; buttons away
mov ecx,[0x3000] mov ecx,[CURRENT_TASK]
sys_newba2: sys_newba2:
@ -2661,8 +2661,8 @@ sys_redrawstat:
cmp eax,2 cmp eax,2
jnz srl1 jnz srl1
mov edx,[0x3010] ; return whole screen draw area for this app mov edx,[TASK_BASE] ; return whole screen draw area for this app
add edx,draw_data-0x3000 add edx,draw_data-CURRENT_TASK
mov [edx+RECT.left], 0 mov [edx+RECT.left], 0
mov [edx+RECT.top], 0 mov [edx+RECT.top], 0
mov eax,[0xfe00] mov eax,[0xfe00]
@ -2670,7 +2670,7 @@ sys_redrawstat:
mov eax,[0xfe04] mov eax,[0xfe04]
mov [edx+RECT.bottom],eax mov [edx+RECT.bottom],eax
mov edi,[0x3010] 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 call sys_window_mouse
@ -2731,9 +2731,9 @@ sys_drawwindow:
; parameter for drawwindow_IV ; parameter for drawwindow_IV
push 0 push 0
mov edi, [0x3004] mov edi, [TASK_COUNT]
movzx edi, word [0xC400 + edi*2] movzx edi, word [0xC400 + edi*2]
cmp edi, [0x3000] cmp edi, [CURRENT_TASK]
jne @f jne @f
inc dword [esp] inc dword [esp]
@@: @@:
@ -2757,12 +2757,12 @@ draw_window_caption:
call [disable_mouse] call [disable_mouse]
xor eax,eax xor eax,eax
mov edx,[0x3004] mov edx,[TASK_COUNT]
movzx edx,word[0xC400+edx*2] movzx edx,word[0xC400+edx*2]
cmp edx,[0x3000] cmp edx,[CURRENT_TASK]
jne @f jne @f
inc eax inc eax
@@: mov edx,[0x3000] @@: mov edx,[CURRENT_TASK]
shl edx,5 shl edx,5
add edx,window_data add edx,window_data
movzx ebx,[edx+WDATA.fl_wstyle] movzx ebx,[edx+WDATA.fl_wstyle]
@ -2790,7 +2790,7 @@ draw_window_caption:
;-------------------------------------------------------------- ;--------------------------------------------------------------
.2: ;jmp @f .2: ;jmp @f
mov edi,[0x3000] mov edi,[CURRENT_TASK]
shl edi,5 shl edi,5
test [edi+window_data+WDATA.fl_wstyle],WSTYLE_HASCAPTION test [edi+window_data+WDATA.fl_wstyle],WSTYLE_HASCAPTION
jz @f jz @f
@ -2913,7 +2913,7 @@ set_window_clientbox:
sys_set_window: sys_set_window:
mov edi,[0x3000] mov edi,[CURRENT_TASK]
shl edi,5 shl edi,5
add edi,window_data add edi,window_data
@ -2996,7 +2996,7 @@ syscall_windowsettings:
; NOTE: only window owner thread can set its caption, ; NOTE: only window owner thread can set its caption,
; so there's no parameter for PID/TID ; so there's no parameter for PID/TID
mov edi,[0x3000] mov edi,[CURRENT_TASK]
shl edi,5 shl edi,5
; have to check if caption is within application memory limit ; have to check if caption is within application memory limit
@ -3031,7 +3031,7 @@ syscall_windowsettings:
sys_window_move: sys_window_move:
mov edi,[0x3000] mov edi,[CURRENT_TASK]
shl edi,5 shl edi,5
add edi,window_data add edi,window_data
@ -3299,7 +3299,7 @@ checkmisc:
jne mouse_not_active jne mouse_not_active
mov [mouse_active], 0 mov [mouse_active], 0
xor edi, edi xor edi, edi
mov ecx, [0x3004] mov ecx, [TASK_COUNT]
set_mouse_event: set_mouse_event:
add edi, 256 add edi, 256
or [edi+0x80000+APPDATA.event_mask], dword 00100000b or [edi+0x80000+APPDATA.event_mask], dword 00100000b
@ -3357,8 +3357,8 @@ checkmisc:
noshutdown: noshutdown:
mov eax,[0x3004] ; termination mov eax,[TASK_COUNT] ; termination
mov ebx,0x3020+TASKDATA.state mov ebx,TASK_DATA+TASKDATA.state
mov esi,1 mov esi,1
newct: newct:
@ -3475,7 +3475,7 @@ redrawscreen:
pop ecx pop ecx
cmp ecx,[0x3004] cmp ecx,[TASK_COUNT]
jle newdw2 jle newdw2
pop eax pop eax
@ -3545,7 +3545,7 @@ delay_ms: ; delay in 1/1000 sec
set_app_param: set_app_param:
push edi push edi
mov edi,[0x3010] mov edi,[TASK_BASE]
mov [edi+TASKDATA.event_mask],eax mov [edi+TASKDATA.event_mask],eax
pop edi pop edi
@ -3634,7 +3634,7 @@ memmove: ; memory move in bytes
;; 5 file not found ;; 5 file not found
;; ebx = size of file ;; ebx = size of file
; ;
; mov edi,[0x3010] ; mov edi,[TASK_BASE]
; add edi,0x10 ; add edi,0x10
; add esi,[edi] ; add esi,[edi]
; add eax,[edi] ; add eax,[edi]
@ -3662,12 +3662,12 @@ align 4
sys_programirq: sys_programirq:
mov edi,[0x3010] mov edi,[TASK_BASE]
add eax,[edi+TASKDATA.mem_start] add eax,[edi+TASKDATA.mem_start]
cmp ebx,16 cmp ebx,16
jae .not_owner jae .not_owner
mov edi,[0x3010] mov edi,[TASK_BASE]
mov edi,[edi+TASKDATA.pid] mov edi,[edi+TASKDATA.pid]
cmp edi,[irq_owner+ebx*4] cmp edi,[irq_owner+ebx*4]
je spril1 je spril1
@ -3696,7 +3696,7 @@ get_irq_data:
shl edx,2 shl edx,2
add edx,irq_owner add edx,irq_owner
mov edx,[edx] mov edx,[edx]
mov edi,[0x3010] mov edi,[TASK_BASE]
mov edi,[edi+TASKDATA.pid] mov edi,[edi+TASKDATA.pid]
cmp edx,edi cmp edx,edi
je gidril1 je gidril1
@ -3736,7 +3736,7 @@ set_io_access_rights:
pushad pushad
mov edi,[0x3000] mov edi,[CURRENT_TASK]
imul edi,tss_step imul edi,tss_step
add edi,tss_data+128 add edi,tss_data+128
; add edi,128 ; add edi,128
@ -3844,7 +3844,7 @@ r_f_port_area:
mov [0x2d0000],edi mov [0x2d0000],edi
shl edi,4 shl edi,4
add edi,0x2d0000 add edi,0x2d0000
mov esi,[0x3010] mov esi,[TASK_BASE]
mov esi,[esi+TASKDATA.pid] mov esi,[esi+TASKDATA.pid]
mov [edi],esi mov [edi],esi
mov [edi+4],ebx mov [edi+4],ebx
@ -3860,7 +3860,7 @@ free_port_area:
mov esi,[0x2d0000] ; no reserved areas ? mov esi,[0x2d0000] ; no reserved areas ?
test esi,esi test esi,esi
je frpal2 je frpal2
mov edx,[0x3010] mov edx,[TASK_BASE]
mov edx,[edx+TASKDATA.pid] mov edx,[edx+TASKDATA.pid]
frpal3: frpal3:
mov edi,esi mov edi,esi
@ -3934,7 +3934,7 @@ reserve_free_irq:
lea edi,[irq_owner+ebx*4] lea edi,[irq_owner+ebx*4]
mov edx,[edi] mov edx,[edi]
mov eax,[0x3010] mov eax,[TASK_BASE]
cmp edx,[eax+TASKDATA.pid] cmp edx,[eax+TASKDATA.pid]
jne fril1 jne fril1
dec ecx dec ecx
@ -3949,7 +3949,7 @@ reserve_free_irq:
cmp dword [edi], 0 cmp dword [edi], 0
jnz ril1 jnz ril1
mov edx,[0x3010] mov edx,[TASK_BASE]
mov edx,[edx+TASKDATA.pid] mov edx,[edx+TASKDATA.pid]
mov [edi],edx mov [edi],edx
dec ecx dec ecx
@ -4001,7 +4001,7 @@ sys_putimage:
.exit: .exit:
ret ret
@@: @@:
mov edi,[0x3000] mov edi,[CURRENT_TASK]
shl edi,8 shl edi,8
add dx,word[edi+0x80000+APPDATA.wnd_clientbox.top] add dx,word[edi+0x80000+APPDATA.wnd_clientbox.top]
rol edx,16 rol edx,16
@ -4043,7 +4043,7 @@ sys_putimage_palette:
; esi = number of bits per pixel, must be 8, 24 or 32 ; esi = number of bits per pixel, must be 8, 24 or 32
; edi = pointer to palette ; edi = pointer to palette
; ebp = row delta ; ebp = row delta
mov eax, [0x3000] mov eax, [CURRENT_TASK]
shl eax, 8 shl eax, 8
add dx, word [eax+0x80000+APPDATA.wnd_clientbox.top] add dx, word [eax+0x80000+APPDATA.wnd_clientbox.top]
rol edx, 16 rol edx, 16
@ -4104,7 +4104,7 @@ putimage_get32bpp:
; edi color ; edi color
__sys_drawbar: __sys_drawbar:
mov esi,[0x3000] mov esi,[CURRENT_TASK]
shl esi,8 shl esi,8
add eax,[esi+0x80000+APPDATA.wnd_clientbox.left] add eax,[esi+0x80000+APPDATA.wnd_clientbox.left]
add ecx,[esi+0x80000+APPDATA.wnd_clientbox.left] add ecx,[esi+0x80000+APPDATA.wnd_clientbox.left]
@ -4474,7 +4474,7 @@ sys_msg_board:
sys_process_def: sys_process_def:
mov edi, [0x3000] mov edi, [CURRENT_TASK]
dec eax ; 1 = set keyboard mode dec eax ; 1 = set keyboard mode
jne no_set_keyboard_setup jne no_set_keyboard_setup
@ -4635,10 +4635,10 @@ align 4 ; system functions
syscall_setpixel: ; SetPixel syscall_setpixel: ; SetPixel
mov edx,[0x3010] mov edx,[TASK_BASE]
add eax,[edx-twdw+WDATA.box.left] add eax,[edx-twdw+WDATA.box.left]
add ebx,[edx-twdw+WDATA.box.top] add ebx,[edx-twdw+WDATA.box.top]
mov edi,[0x3000] mov edi,[CURRENT_TASK]
shl edi,8 shl edi,8
add eax,[edi+0x80000+APPDATA.wnd_clientbox.left] add eax,[edi+0x80000+APPDATA.wnd_clientbox.left]
add ebx,[edi+0x80000+APPDATA.wnd_clientbox.top] add ebx,[edi+0x80000+APPDATA.wnd_clientbox.top]
@ -4651,10 +4651,10 @@ align 4
syscall_writetext: ; WriteText syscall_writetext: ; WriteText
mov edi,[0x3010] mov edi,[TASK_BASE]
mov ebp,[edi-twdw+WDATA.box.left] mov ebp,[edi-twdw+WDATA.box.left]
push esi push esi
mov esi,[0x3000] mov esi,[CURRENT_TASK]
shl esi,8 shl esi,8
add ebp,[esi+0x80000+APPDATA.wnd_clientbox.left] add ebp,[esi+0x80000+APPDATA.wnd_clientbox.left]
shl ebp,16 shl ebp,16
@ -4671,7 +4671,7 @@ align 4
syscall_openramdiskfile: ; OpenRamdiskFile syscall_openramdiskfile: ; OpenRamdiskFile
mov edi,[0x3010] mov edi,[TASK_BASE]
add edi,TASKDATA.mem_start add edi,TASKDATA.mem_start
add eax,[edi] add eax,[edi]
add edx,[edi] add edx,[edi]
@ -4694,7 +4694,7 @@ syscall_drawrect: ; DrawRect
shr eax,16 shr eax,16
movzx edx,bx movzx edx,bx
shr ebx,16 shr ebx,16
mov esi,[0x3000] mov esi,[CURRENT_TASK]
shl esi,8 shl esi,8
add eax,[esi+0x80000+APPDATA.wnd_clientbox.left] add eax,[esi+0x80000+APPDATA.wnd_clientbox.left]
add ebx,[esi+0x80000+APPDATA.wnd_clientbox.top] add ebx,[esi+0x80000+APPDATA.wnd_clientbox.top]
@ -4726,7 +4726,7 @@ align 4
syscall_delramdiskfile: ; DelRamdiskFile syscall_delramdiskfile: ; DelRamdiskFile
mov edi,[0x3010] mov edi,[TASK_BASE]
add edi,TASKDATA.mem_start add edi,TASKDATA.mem_start
add eax,[edi] add eax,[edi]
call filedelete call filedelete
@ -4737,7 +4737,7 @@ align 4
syscall_writeramdiskfile: ; WriteRamdiskFile syscall_writeramdiskfile: ; WriteRamdiskFile
mov edi,[0x3010] mov edi,[TASK_BASE]
add edi,TASKDATA.mem_start add edi,TASKDATA.mem_start
add eax,[edi] add eax,[edi]
add ebx,[edi] add ebx,[edi]
@ -4762,7 +4762,7 @@ align 4
syscall_readstring: ; ReadString syscall_readstring: ; ReadString
mov edi,[0x3010] mov edi,[TASK_BASE]
add edi,TASKDATA.mem_start add edi,TASKDATA.mem_start
add eax,[edi] add eax,[edi]
call read_string call read_string
@ -4773,10 +4773,10 @@ align 4
syscall_drawline: ; DrawLine syscall_drawline: ; DrawLine
mov edi,[0x3010] mov edi,[TASK_BASE]
movzx edx,word[edi-twdw+WDATA.box.left] movzx edx,word[edi-twdw+WDATA.box.left]
mov ebp,edx mov ebp,edx
mov esi,[0x3000] mov esi,[CURRENT_TASK]
shl esi,8 shl esi,8
add ebp,[esi+0x80000+APPDATA.wnd_clientbox.left] add ebp,[esi+0x80000+APPDATA.wnd_clientbox.left]
add dx,word[esi+0x80000+APPDATA.wnd_clientbox.left] add dx,word[esi+0x80000+APPDATA.wnd_clientbox.left]
@ -4860,7 +4860,7 @@ align 4
read_from_hd: ; Read from hd - fn not in use read_from_hd: ; Read from hd - fn not in use
mov edi,[0x3010] mov edi,[TASK_BASE]
add edi,TASKDATA.mem_start add edi,TASKDATA.mem_start
add eax,[edi] add eax,[edi]
add ecx,[edi] add ecx,[edi]
@ -4924,7 +4924,7 @@ undefined_syscall: ; Undefined system call
; push edi ; push edi
; mov edi,[0x3000] ; restore processes tss pointer in gdt, busyfl? ; mov edi,[CURRENT_TASK] ; restore processes tss pointer in gdt, busyfl?
; imul edi,8 ; imul edi,8
; mov [edi+gdts+ tss0 +5], word 01010000b *256 +11101001b ; mov [edi+gdts+ tss0 +5], word 01010000b *256 +11101001b

View File

@ -212,7 +212,7 @@
; ;
; 0x0098B000 -> kernel heap ; 0x0098B000 -> kernel heap
; ;
; 0x01FFFFFF heam min limit ; 0x01FFFFFF heap min limit
; 0x7DBFFFFF heap max limit ; 0x7DBFFFFF heap max limit
; 0x7DC00000 -> 0x7FBFFFFF LFB 32Mb ; 0x7DC00000 -> 0x7FBFFFFF LFB 32Mb
; 0x7DC00000 -> 0x7E3FFFFF application available LFB 8Mb ; 0x7DC00000 -> 0x7E3FFFFF application available LFB 8Mb

View File

@ -215,7 +215,7 @@ socket_open:
mov [eax + SOCKET.RemoteIP], edx mov [eax + SOCKET.RemoteIP], edx
mov [eax + SOCKET.rxDataCount], dword 0 ; recieved data count mov [eax + SOCKET.rxDataCount], dword 0 ; recieved data count
mov esi, [0x3010] mov esi, [TASK_BASE]
mov ebx, [esi+TASKDATA.pid] mov ebx, [esi+TASKDATA.pid]
mov [eax + SOCKET.PID], ebx ; save the process ID mov [eax + SOCKET.PID], ebx ; save the process ID
pop eax ; Get the socket number back, so we can return it pop eax ; Get the socket number back, so we can return it
@ -279,7 +279,7 @@ socket_open_tcp:
sot_001: sot_001:
mov [eax + SOCKET.TCBState], ebx ; Indicate the state of the TCB mov [eax + SOCKET.TCBState], ebx ; Indicate the state of the TCB
mov esi, [0x3010] mov esi, [TASK_BASE]
mov ecx, [esi+TASKDATA.pid] mov ecx, [esi+TASKDATA.pid]
mov [eax + SOCKET.PID], ecx ; save the process ID mov [eax + SOCKET.PID], ecx ; save the process ID
@ -709,7 +709,7 @@ socket_write:
pop eax ; get callers ptr to data to send pop eax ; get callers ptr to data to send
; Get the address of the callers data ; Get the address of the callers data
mov edi, [0x3010] mov edi, [TASK_BASE]
add edi, TASKDATA.mem_start add edi, TASKDATA.mem_start
add eax, [edi] add eax, [edi]
mov esi, eax mov esi, eax
@ -824,7 +824,7 @@ socket_write_tcp:
mov bl, 0x10 ; ACK mov bl, 0x10 ; ACK
; Get the address of the callers data ; Get the address of the callers data
mov edi, [0x3010] mov edi, [TASK_BASE]
add edi, TASKDATA.mem_start add edi, TASKDATA.mem_start
add edx, [edi] add edx, [edi]
mov esi, edx mov esi, edx

View File

@ -929,7 +929,7 @@ stack_get_packet:
push eax ; save address of IP data push eax ; save address of IP data
; Get the address of the callers data ; Get the address of the callers data
mov edi,[0x3010] mov edi,[TASK_BASE]
add edi,TASKDATA.mem_start add edi,TASKDATA.mem_start
add edx,[edi] add edx,[edi]
mov edi, edx mov edi, edx
@ -992,7 +992,7 @@ stack_insert_packet:
pop eax ; get callers ptr to data to send pop eax ; get callers ptr to data to send
; Get the address of the callers data ; Get the address of the callers data
mov edi,[0x3010] mov edi,[TASK_BASE]
add edi,TASKDATA.mem_start add edi,TASKDATA.mem_start
add eax,[edi] add eax,[edi]
mov esi, eax mov esi, eax

View File

@ -1057,14 +1057,14 @@ ste_data:
; flag an event to the application ; flag an event to the application
pop eax pop eax
mov ecx,1 mov ecx,1
mov esi,0x3020+TASKDATA.pid mov esi,TASK_DATA+TASKDATA.pid
news: news:
cmp [esi],eax cmp [esi],eax
je foundPID1 je foundPID1
inc ecx inc ecx
add esi,0x20 add esi,0x20
cmp ecx,[0x3004] cmp ecx,[TASK_COUNT]
jbe news jbe news
foundPID1: foundPID1:

View File

@ -141,14 +141,14 @@ udprx_002:
; flag an event to the application ; flag an event to the application
pop eax pop eax
mov ecx,1 mov ecx,1
mov esi,0x3020+TASKDATA.pid mov esi,TASK_DATA+TASKDATA.pid
newsearch: newsearch:
cmp [esi],eax cmp [esi],eax
je foundPID je foundPID
inc ecx inc ecx
add esi,0x20 add esi,0x20
cmp ecx,[0x3004] cmp ecx,[TASK_COUNT]
jbe newsearch jbe newsearch
foundPID: foundPID:

View File

@ -30,7 +30,7 @@ sound_interface:
cmp eax,0 ; Load data cmp eax,0 ; Load data
jne no_SB16_load_music jne no_SB16_load_music
mov edi,[0x3010] mov edi,[TASK_BASE]
add edi,TASKDATA.mem_start add edi,TASKDATA.mem_start
add ebx,[edi] add ebx,[edi]
call code_SB16_load_music call code_SB16_load_music
@ -72,12 +72,12 @@ sound_interface:
movzx eax, byte [countDelayNote] movzx eax, byte [countDelayNote]
or al, al ; player is busy ? or al, al ; player is busy ?
jnz retFunc55 ; return counter delay Note jnz retFunc55 ; return counter delay Note
; mov eax, [0x3010] ; mov eax, [TASK_BASE]
; mov eax, [eax+0x10] ; address application im memory ; mov eax, [eax+0x10] ; address application im memory
; add eax, edx ; add offset Delay-Note string ; add eax, edx ; add offset Delay-Note string
; mov [memAdrNote], eax ; mov [memAdrNote], eax
mov [memAdrNote],edx mov [memAdrNote],edx
mov eax,[0x3010] mov eax,[TASK_BASE]
mov eax,[eax+TASKDATA.pid] mov eax,[eax+TASKDATA.pid]
mov [pidProcessNote],eax mov [pidProcessNote],eax
xor eax, eax ; Ok! EAX = 0 xor eax, eax ; Ok! EAX = 0

View File

@ -361,7 +361,7 @@ proc load_cursor stdcall, src:dword, flags:dword
@@: @@:
mov eax, [CURRENT_TASK] mov eax, [CURRENT_TASK]
shl eax, 5 shl eax, 5
mov eax, [0x3000+eax+4] mov eax, [CURRENT_TASK+eax+4]
mov ebx, [src] mov ebx, [src]
mov ecx, [flags] mov ecx, [flags]
call [create_cursor] ;eax, ebx, ecx call [create_cursor] ;eax, ebx, ecx
@ -394,7 +394,7 @@ proc delete_cursor stdcall, hcursor:dword
mov ebx, [CURRENT_TASK] mov ebx, [CURRENT_TASK]
shl ebx, 5 shl ebx, 5
mov ebx, [0x3000+ebx+4] mov ebx, [CURRENT_TASK+ebx+4]
cmp ebx, [esi+CURSOR.pid] cmp ebx, [esi+CURSOR.pid]
jne .fail jne .fail

View File

@ -364,7 +364,7 @@ vesa12_drawbar:
push ebx push ebx
push ecx push ecx
push edx push edx
mov ecx,[0x3010] mov ecx,[TASK_BASE]
add eax,[ecx-twdw+WDATA.box.left] add eax,[ecx-twdw+WDATA.box.left]
add ebx,[ecx-twdw+WDATA.box.top] add ebx,[ecx-twdw+WDATA.box.top]
push eax push eax
@ -402,17 +402,17 @@ vesa12_drawbar:
push eax push eax
push ecx push ecx
mov eax,[0x3010] mov eax,[TASK_BASE]
mov ecx,[eax+draw_data-0x3000+RECT.left] mov ecx,[eax+draw_data-CURRENT_TASK+RECT.left]
cmp ecx,0 cmp ecx,0
jnz dbcblimitlset12 jnz dbcblimitlset12
mov ecx,[eax+draw_data-0x3000+RECT.top] mov ecx,[eax+draw_data-CURRENT_TASK+RECT.top]
cmp ecx,0 cmp ecx,0
jnz dbcblimitlset12 jnz dbcblimitlset12
mov ecx,[eax+draw_data-0x3000+RECT.right] mov ecx,[eax+draw_data-CURRENT_TASK+RECT.right]
cmp ecx,[0xfe00] cmp ecx,[0xfe00]
jnz dbcblimitlset12 jnz dbcblimitlset12
mov ecx,[eax+draw_data-0x3000+RECT.bottom] mov ecx,[eax+draw_data-CURRENT_TASK+RECT.bottom]
cmp ecx,[0xfe04] cmp ecx,[0xfe04]
jnz dbcblimitlset12 jnz dbcblimitlset12
pop ecx pop ecx
@ -462,7 +462,7 @@ dbpi24bit12:
mov ebx,3 mov ebx,3
div ebx div ebx
add eax,WinMapAddress add eax,WinMapAddress
mov ebx,[0x3000] mov ebx,[CURRENT_TASK]
cld cld
dbnp2412: dbnp2412:
@ -553,7 +553,7 @@ dbpi24bit12:
sub eax,[0xfe80] sub eax,[0xfe80]
shr eax,2 shr eax,2
add eax,WinMapAddress add eax,WinMapAddress
mov ebx,[0x3000] mov ebx,[CURRENT_TASK]
cld cld
dbnp3212: dbnp3212:
@ -731,7 +731,7 @@ vesa12_putimage:
push edx push edx
movzx eax,word [esp+2] movzx eax,word [esp+2]
movzx ebx,word [esp+0] movzx ebx,word [esp+0]
mov ecx,[0x3010] mov ecx,[TASK_BASE]
add eax,[ecx-twdw+WDATA.box.left] add eax,[ecx-twdw+WDATA.box.left]
add ebx,[ecx-twdw+WDATA.box.top] add ebx,[ecx-twdw+WDATA.box.top]
push eax push eax
@ -760,15 +760,15 @@ vesa12_putimage:
; check limits while draw ? ; check limits while draw ?
push ecx push ecx
mov eax,[0x3010] mov eax,[TASK_BASE]
cmp dword [eax+draw_data-0x3000+RECT.left], 0 cmp dword [eax+draw_data-CURRENT_TASK+RECT.left], 0
jnz dbcblimitlset212 jnz dbcblimitlset212
cmp dword [eax+draw_data-0x3000+RECT.top], 0 cmp dword [eax+draw_data-CURRENT_TASK+RECT.top], 0
jnz dbcblimitlset212 jnz dbcblimitlset212
mov ecx,[eax+draw_data-0x3000+RECT.right] mov ecx,[eax+draw_data-CURRENT_TASK+RECT.right]
cmp ecx,[0xfe00] cmp ecx,[0xfe00]
jnz dbcblimitlset212 jnz dbcblimitlset212
mov ecx,[eax+draw_data-0x3000+RECT.bottom] mov ecx,[eax+draw_data-CURRENT_TASK+RECT.bottom]
cmp ecx,[0xfe04] cmp ecx,[0xfe04]
jnz dbcblimitlset212 jnz dbcblimitlset212
pop ecx pop ecx
@ -798,7 +798,7 @@ vesa12_putimage:
mov ebx,3 mov ebx,3
div ebx div ebx
add edx,WinMapAddress add edx,WinMapAddress
mov ebx,[0x3000] mov ebx,[CURRENT_TASK]
mov bh,[esp+4*3] mov bh,[esp+4*3]
np2412: np2412:
@ -867,7 +867,7 @@ vesa12_putimage:
sub edx,[0xfe80] sub edx,[0xfe80]
shr edx,2 shr edx,2
add edx,WinMapAddress add edx,WinMapAddress
mov ebx,[0x3000] mov ebx,[CURRENT_TASK]
mov bh,[esp+4*3] mov bh,[esp+4*3]
np3212: np3212:

View File

@ -122,7 +122,7 @@ vesa20_putimage:
mov [putimg.image_cy], edx mov [putimg.image_cy], edx
; calculate absolute (i.e. screen) coordinates ; calculate absolute (i.e. screen) coordinates
mov eax, [0x3010] mov eax, [TASK_BASE]
mov ebx, [eax-twdw + WDATA.box.left] mov ebx, [eax-twdw + WDATA.box.left]
add ebx, [putimg.image_cx] add ebx, [putimg.image_cx]
mov [putimg.abs_cx], ebx mov [putimg.abs_cx], ebx
@ -211,7 +211,7 @@ vesa20_putimage:
xchg eax, ebp xchg eax, ebp
; get process number ; get process number
mov ebx, [0x3000] mov ebx, [CURRENT_TASK]
cmp byte [ScreenBPP], 32 cmp byte [ScreenBPP], 32
je put_image_end_32 je put_image_end_32
@ -619,7 +619,7 @@ vesa20_drawbar:
mov [drbar.bar_cx], eax mov [drbar.bar_cx], eax
mov [drbar.bar_cy], ebx mov [drbar.bar_cy], ebx
mov edi, [0x3010] mov edi, [TASK_BASE]
add eax, [edi-twdw + WDATA.box.left] ; win_cx add eax, [edi-twdw + WDATA.box.left] ; win_cx
add ebx, [edi-twdw + WDATA.box.top] ; win_cy add ebx, [edi-twdw + WDATA.box.top] ; win_cy
mov [drbar.abs_cx], eax mov [drbar.abs_cx], eax
@ -701,7 +701,7 @@ vesa20_drawbar:
xchg eax, ebp xchg eax, ebp
; get process number ; get process number
mov ebx, [0x3000] mov ebx, [CURRENT_TASK]
cmp byte [ScreenBPP], 24 cmp byte [ScreenBPP], 24
jne draw_bar_end_32 jne draw_bar_end_32

View File

@ -409,7 +409,7 @@ VGA_draw_bar:
VGA_draw_bar_1: VGA_draw_bar_1:
mov [temp.cx],eax mov [temp.cx],eax
mov eax, [0x3010] mov eax, [TASK_BASE]
add ebx, [eax-twdw + 4] add ebx, [eax-twdw + 4]
mov eax, [eax-twdw + 0] mov eax, [eax-twdw + 0]
add eax, [temp.cx] add eax, [temp.cx]