mirror of
https://github.com/ondra-novak/gates_of_skeldal.git
synced 2025-07-10 00:20:27 -04:00
game folder "just" compiles (not link)
This commit is contained in:
parent
13d3908273
commit
1b0f7fe0c2
135 changed files with 2161 additions and 2336 deletions
90
libs/tasker.asm
Normal file
90
libs/tasker.asm
Normal file
|
@ -0,0 +1,90 @@
|
|||
.model small
|
||||
.386
|
||||
|
||||
DGROUP group _DATA
|
||||
|
||||
|
||||
extrn _tasklist_sp:dword[]
|
||||
extrn _tasklist_low:dword[]
|
||||
extrn _tasklist_top:dword[]
|
||||
extrn _task_info:dword[]
|
||||
extrn _curtask:dword
|
||||
extrn _nexttask:dword
|
||||
extrn _taskcount:dword
|
||||
extrn __STACKLOW:dword
|
||||
extrn __STACKTOP:dword
|
||||
extrn _taskparam:dword
|
||||
extrn free_:proc
|
||||
|
||||
_TEXT segment byte public 'CODE' use32
|
||||
assume CS:_TEXT
|
||||
assume DS:DGROUP
|
||||
|
||||
|
||||
|
||||
public task_sleep_
|
||||
task_sleep_:
|
||||
mov _taskparam,eax
|
||||
pushfd
|
||||
pushad
|
||||
mov eax,_curtask
|
||||
mov esi,[_tasklist_sp]
|
||||
mov edi,[_tasklist_low]
|
||||
mov edx,[_tasklist_top]
|
||||
mov ecx,[_task_info]
|
||||
mov [esi+eax*4],esp
|
||||
mov ebx,_nexttask
|
||||
term_1: cmp eax,ebx
|
||||
mov eax,ebx
|
||||
jnz twake
|
||||
xor eax,eax
|
||||
taskloop:
|
||||
inc ebx
|
||||
cmp ebx,_taskcount
|
||||
jc tasktest
|
||||
xor ebx,ebx
|
||||
tasktest:
|
||||
cmp dword ptr [esi+ebx*4],0
|
||||
jz taskloop
|
||||
test byte ptr [ecx+ebx],2 ;test zda je task waiting
|
||||
jnz taskloop ;ano - pak ho preskoc (task 0 nesmi byt waiting)
|
||||
twake: mov _curtask,eax
|
||||
mov _nexttask,ebx
|
||||
mov esp,[esi+eax*4]
|
||||
mov ebx,[edi+eax*4]
|
||||
mov __STACKLOW,ebx
|
||||
mov ebx,[edx+eax*4]
|
||||
mov __STACKTOP,ebx
|
||||
popad
|
||||
popfd
|
||||
mov eax,_taskparam
|
||||
ret
|
||||
|
||||
public task_terminating_
|
||||
task_terminating_:
|
||||
;tato funkce je volana po kazdem ukonceni ulohy
|
||||
mov eax,[_tasklist_sp]
|
||||
mov esp,[eax]
|
||||
mov ebx,[_tasklist_low]
|
||||
mov ebx,[ebx]
|
||||
mov __STACKLOW,ebx
|
||||
mov ebx,[_tasklist_top]
|
||||
mov ebx,[ebx]
|
||||
mov __STACKTOP,ebx
|
||||
mov eax,_curtask
|
||||
mov esi,[_tasklist_low]
|
||||
mov eax,[esi+4*eax]
|
||||
call free_
|
||||
mov eax,_curtask
|
||||
xor ebx,ebx
|
||||
mov esi,[_tasklist_sp]
|
||||
mov [esi+4*eax],ebx
|
||||
mov esi,[_tasklist_sp]
|
||||
mov edi,[_tasklist_low]
|
||||
mov edx,[_tasklist_top]
|
||||
mov eax,_curtask
|
||||
mov ebx,_nexttask
|
||||
jmp term_1
|
||||
|
||||
_TEXT ends
|
||||
end
|
Loading…
Add table
Add a link
Reference in a new issue