quit task is int 0x38 yield task is int 0x39 eax is cleared on yield syscall is int 0x30 system call number in eax args in ebx, ecx, edx, esi, edi result in eax note: do not assume eax is unmodified if there is no value to be returned modifies ecx, edx see table 1 file system calls have units of bytes unless otherwise specified functions returning handles or pointers use 0 to indicate error functions returning "success" use 1 for success and 0 for failure see keys.txt for the return type of the "get key" system call invalid system call numbers change eax to -1, and have no other effect. table 1: function | eax | eax out | ebx | ecx | edx | esi | edi ---------------|-----|---------------|---------------|-------------|-------|--------|----- open file | 0x0 | handle | drive number | path | | | close file | 0x1 | | handle | | | | file read | 0x2 | read | handle | file offset | count | buffer | get file size | 0x3 | size | handle | | | | start task | 0x4 | success | drive number | path | | | log string | 0x5 | | sz string | | | | get key | 0x6 | keycode | | | | | allocate ram | 0x7 | start pointer | pages | | | | memory info | 0x8 | see table 2 | see table 2 | | | | table 2: all values are in units of pages eax -1 indicates unrecognized ebx ebx | eax out -----|-------------------------- 0x0 | kernel dynamic area size 0x1 | kernel dynamic area left 0x2 | total userspace size 0x3 | total userspace left 0x4 | this process memory left