API docs / Open libraries / dos.library
API · Librariesdos.library jump table
Our open dos.library: 161 calls with the same LVOs and registers as AmigaOS 3.2's, checked against the NDK 3.2 .fd file.
dos.library's jump table, as OpenDOS will build it: LVO, call, registers. Checked on 13 October 2026: build-amiga.sh (with ../common/check_fd.py) compares it with the NDK 3.2 dos_lib.fd (47.1) in the stove and stops on any difference, and it matches: -30 to -996 as written first (the 8 private slots -162, -168, -486, -852, -864, -924, -960 and -978 are the fd's too), then OS 3.2's V47 slots to -1158, 189 in all. The V47 slots were added from the fd's names, registers and order. "D1 core" marks the calls whose work slice D1's core does (libraries/ opendos/dos_*.cpp); the face (jump table, registers, the library base) is D2. LoadSeg, NewLoadSeg and InternalLoadSeg open or take the file and hand it to the core's hunk parser; DateStamp reads the timer through the env. Core class (OPEN_LIBRARIES.md, section 5): the D1 calls are pure (or pure on the caller's own handles); every lock, file, packet, process, CLI, assign, DosList, notification and variable call is anchored (dos's process and filesystem state), reached from other cores as a message to CPU0.
| LVO | Call | Registers | Notes |
|---|---|---|---|
| -30 | Open | d1, d2 | |
| -36 | Close | d1 | |
| -42 | Read | d1, d2, d3 | |
| -48 | Write | d1, d2, d3 | |
| -54 | Input | none | |
| -60 | Output | none | |
| -66 | Seek | d1, d2, d3 | |
| -72 | DeleteFile | d1 | |
| -78 | Rename | d1, d2 | |
| -84 | Lock | d1, d2 | |
| -90 | UnLock | d1 | |
| -96 | DupLock | d1 | |
| -102 | Examine | d1, d2 | |
| -108 | ExNext | d1, d2 | |
| -114 | Info | d1, d2 | |
| -120 | CreateDir | d1 | |
| -126 | CurrentDir | d1 | |
| -132 | IoErr | none | |
| -138 | CreateProc | d1, d2, d3, d4 | |
| -144 | Exit | d1 | |
| -150 | LoadSeg | d1 | D1 core |
| -156 | UnLoadSeg | d1 | D1 core |
| -162 | private | none | |
| -168 | private | none | |
| -174 | DeviceProc | d1 | |
| -180 | SetComment | d1, d2 | |
| -186 | SetProtection | d1, d2 | |
| -192 | DateStamp | d1 | D1 core |
| -198 | Delay | d1 | |
| -204 | WaitForChar | d1, d2 | |
| -210 | ParentDir | d1 | |
| -216 | IsInteractive | d1 | |
| -222 | Execute | d1, d2, d3 | |
| -228 | AllocDosObject | d1, d2 | |
| -234 | FreeDosObject | d1, d2 | |
| -240 | DoPkt | d1, d2, d3, d4, d5, d6, d7 | |
| -246 | SendPkt | d1, d2, d3 | |
| -252 | WaitPkt | none | |
| -258 | ReplyPkt | d1, d2, d3 | |
| -264 | AbortPkt | d1, d2 | |
| -270 | LockRecord | d1, d2, d3, d4, d5 | |
| -276 | LockRecords | d1, d2 | |
| -282 | UnLockRecord | d1, d2, d3 | |
| -288 | UnLockRecords | d1 | |
| -294 | SelectInput | d1 | |
| -300 | SelectOutput | d1 | |
| -306 | FGetC | d1 | |
| -312 | FPutC | d1, d2 | |
| -318 | UnGetC | d1, d2 | |
| -324 | FRead | d1, d2, d3, d4 | |
| -330 | FWrite | d1, d2, d3, d4 | |
| -336 | FGets | d1, d2, d3 | |
| -342 | FPuts | d1, d2 | |
| -348 | VFWritef | d1, d2, d3 | D1 core |
| -354 | VFPrintf | d1, d2, d3 | D1 core |
| -360 | Flush | d1 | |
| -366 | SetVBuf | d1, d2, d3, d4 | |
| -372 | DupLockFromFH | d1 | |
| -378 | OpenFromLock | d1 | |
| -384 | ParentOfFH | d1 | |
| -390 | ExamineFH | d1, d2 | |
| -396 | SetFileDate | d1, d2 | |
| -402 | NameFromLock | d1, d2, d3 | |
| -408 | NameFromFH | d1, d2, d3 | |
| -414 | SplitName | d1, d2, d3, d4, d5 | D1 core |
| -420 | SameLock | d1, d2 | |
| -426 | SetMode | d1, d2 | |
| -432 | ExAll | d1, d2, d3, d4, d5 | |
| -438 | ReadLink | d1, d2, d3, d4, d5 | |
| -444 | MakeLink | d1, d2, d3 | |
| -450 | ChangeMode | d1, d2, d3 | |
| -456 | SetFileSize | d1, d2, d3 | |
| -462 | SetIoErr | d1 | |
| -468 | Fault | d1, d2, d3, d4 | |
| -474 | PrintFault | d1, d2 | |
| -480 | ErrorReport | d1, d2, d3, d4 | |
| -486 | private | none | |
| -492 | Cli | none | |
| -498 | CreateNewProc | d1 | |
| -504 | RunCommand | d1, d2, d3, d4 | |
| -510 | GetConsoleTask | none | |
| -516 | SetConsoleTask | d1 | |
| -522 | GetFileSysTask | none | |
| -528 | SetFileSysTask | d1 | |
| -534 | GetArgStr | none | |
| -540 | SetArgStr | d1 | |
| -546 | FindCliProc | d1 | |
| -552 | MaxCli | none | |
| -558 | SetCurrentDirName | d1 | |
| -564 | GetCurrentDirName | d1, d2 | |
| -570 | SetProgramName | d1 | |
| -576 | GetProgramName | d1, d2 | |
| -582 | SetPrompt | d1 | |
| -588 | GetPrompt | d1, d2 | |
| -594 | SetProgramDir | d1 | |
| -600 | GetProgramDir | none | |
| -606 | SystemTagList | d1, d2 | |
| -612 | AssignLock | d1, d2 | |
| -618 | AssignLate | d1, d2 | |
| -624 | AssignPath | d1, d2 | |
| -630 | AssignAdd | d1, d2 | |
| -636 | RemAssignList | d1, d2 | |
| -642 | GetDeviceProc | d1, d2 | |
| -648 | FreeDeviceProc | d1 | |
| -654 | LockDosList | d1 | |
| -660 | UnLockDosList | d1 | |
| -666 | AttemptLockDosList | d1 | |
| -672 | RemDosEntry | d1 | |
| -678 | AddDosEntry | d1 | |
| -684 | FindDosEntry | d1, d2, d3 | |
| -690 | NextDosEntry | d1, d2 | |
| -696 | MakeDosEntry | d1, d2 | |
| -702 | FreeDosEntry | d1 | |
| -708 | IsFileSystem | d1 | |
| -714 | Format | d1, d2, d3 | |
| -720 | Relabel | d1, d2 | |
| -726 | Inhibit | d1, d2 | |
| -732 | AddBuffers | d1, d2 | |
| -738 | CompareDates | d1, d2 | D1 core |
| -744 | DateToStr | d1 | D1 core |
| -750 | StrToDate | d1 | D1 core |
| -756 | InternalLoadSeg | d0, a0, a1, a2 | D1 core |
| -762 | InternalUnLoadSeg | d1, a1 | D1 core |
| -768 | NewLoadSeg | d1, d2 | D1 core |
| -774 | AddSegment | d1, d2, d3 | |
| -780 | FindSegment | d1, d2, d3 | |
| -786 | RemSegment | d1 | |
| -792 | CheckSignal | d1 | |
| -798 | ReadArgs | d1, d2, d3 | D1 core |
| -804 | FindArg | d1, d2 | D1 core |
| -810 | ReadItem | d1, d2, d3 | D1 core |
| -816 | StrToLong | d1, d2 | D1 core |
| -822 | MatchFirst | d1, d2 | |
| -828 | MatchNext | d1 | |
| -834 | MatchEnd | d1 | |
| -840 | ParsePattern | d1, d2, d3 | D1 core |
| -846 | MatchPattern | d1, d2 | D1 core |
| -852 | private | none | |
| -858 | FreeArgs | d1 | D1 core |
| -864 | private | none | |
| -870 | FilePart | d1 | D1 core |
| -876 | PathPart | d1 | D1 core |
| -882 | AddPart | d1, d2, d3 | D1 core |
| -888 | StartNotify | d1 | |
| -894 | EndNotify | d1 | |
| -900 | SetVar | d1, d2, d3, d4 | |
| -906 | GetVar | d1, d2, d3, d4 | |
| -912 | DeleteVar | d1, d2 | |
| -918 | FindVar | d1, d2 | |
| -924 | private | none | |
| -930 | CliInitNewcli | a0 | |
| -936 | CliInitRun | a0 | |
| -942 | WriteChars | d1, d2 | |
| -948 | PutStr | d1 | |
| -954 | VPrintf | d1, d2 | |
| -960 | private | none | |
| -966 | ParsePatternNoCase | d1, d2, d3 | D1 core |
| -972 | MatchPatternNoCase | d1, d2 | D1 core |
| -978 | private | none | |
| -984 | SameDevice | d1, d2 | |
| -990 | ExAllEnd | d1, d2, d3, d4, d5 | |
| -996 | SetOwner | d1, d2 | |
| -1002 | private | none | |
| -1008 | private | none | |
| -1014 | VolumeRequestHook | d1 | the default hook: -1 |
| -1020 | private | none | |
| -1026 | GetCurrentDir | none | |
| -1032 | private | none | |
| -1038 | private | none | |
| -1044 | private | none | |
| -1050 | private | none | |
| -1056 | private | none | |
| -1062 | private | none | |
| -1068 | private | none | |
| -1074 | private | none | |
| -1080 | private | none | |
| -1086 | private | none | |
| -1092 | private | none | |
| -1098 | private | none | |
| -1104 | private | none | |
| -1110 | private | none | |
| -1116 | private | none | |
| -1122 | private | none | |
| -1128 | PutErrStr | d1 | |
| -1134 | ErrorOutput | none | |
| -1140 | SelectError | d1 | |
| -1146 | private | none | |
| -1152 | DoShellMethodTagList | d0, a0 | D5 (the Shell): 0, ERROR_NOT_IMPLEMENTED |
| -1158 | ScanStackToken | d1, d2 |