amiga-bootcamp/07_dos/error_handling.md
Ilia Sharin 21751c0025 docs(amiga): complete AmigaOS 3.1/3.2 developer reference — 172 files across 17 sections
Comprehensive technical documentation covering:
- Hardware: OCS/ECS/AGA custom chip registers, Copper & Blitter deep dives
- Boot sequence: cold boot through startup-sequence
- Binary format: HUNK executable spec, relocation, debug info
- Linking & ABI: .fd files, LVO tables, register calling conventions
- Exec kernel: tasks, interrupts, memory, signals, semaphores
- AmigaDOS: file I/O, FFS/OFS layout, CLI/Shell scripting
- Graphics: planar bitmaps, Copper programming, HAM/EHB modes
- Intuition: screens, windows, IDCMP, BOOPSI
- Devices: trackdisk, SCSI, serial, timer, audio, keyboard
- Libraries: utility, expansion, IFFParse, locale, ARexx
- Networking: bsdsocket API, SANA-II, TCP/IP stack comparison
- Toolchain: GCC, vasm/vlink, SAS/C, NDK, debugging
- Reverse engineering: IDA/Ghidra setup, compiler fingerprints, case studies
- CPU & MMU: 68040/060 emulation libs, PMMU, cache management
- Driver development: SANA-II, Picasso96/RTG, AHI audio

All files include breadcrumb navigation. No local paths or proprietary content.
2026-04-23 12:17:35 -04:00

3.3 KiB
Raw Blame History

← Home · AmigaDOS

Error Handling — IoErr, Fault, PrintFault, Error Codes

Overview

Every DOS function that can fail sets an error code retrievable via IoErr(). The error code is stored in pr_Result2 of the calling process.


API

LVO Function Description
−132 IoErr() Return last error code
−138 SetIoErr(code) Set error code manually
−468 Fault(code, header, buf, len) Format error message into buffer
−474 PrintFault(code, header) Print error message to stderr

Complete Error Code Table

Code Constant Meaning
103 ERROR_NO_FREE_STORE Out of memory
104 ERROR_TASK_TABLE_FULL Process table full
114 ERROR_BAD_TEMPLATE Bad template for ReadArgs
115 ERROR_BAD_NUMBER Bad number in argument
116 ERROR_REQUIRED_ARG_MISSING Required argument missing
117 ERROR_KEY_NEEDS_ARG Keyword requires an argument
118 ERROR_TOO_MANY_ARGS Too many arguments
119 ERROR_UNMATCHED_QUOTES Unmatched quotes
120 ERROR_LINE_TOO_LONG Argument line too long
121 ERROR_FILE_NOT_OBJECT Not a valid executable
122 ERROR_INVALID_RESIDENT_LIBRARY Invalid resident library
202 ERROR_OBJECT_IN_USE Object is in use
203 ERROR_OBJECT_EXISTS Object already exists
204 ERROR_DIR_NOT_FOUND Directory not found
205 ERROR_OBJECT_NOT_FOUND Object not found
206 ERROR_BAD_STREAM_NAME Invalid stream name
207 ERROR_OBJECT_TOO_LARGE Object too large
209 ERROR_ACTION_NOT_KNOWN Action not known (by handler)
210 ERROR_INVALID_COMPONENT_NAME Invalid filename component
211 ERROR_INVALID_LOCK Invalid lock
212 ERROR_OBJECT_WRONG_TYPE Object wrong type
213 ERROR_DISK_NOT_VALIDATED Disk not validated
214 ERROR_DISK_WRITE_PROTECTED Disk is write-protected
215 ERROR_RENAME_ACROSS_DEVICES Rename across devices
216 ERROR_DIRECTORY_NOT_EMPTY Directory not empty
217 ERROR_TOO_MANY_LEVELS Too many directory levels
218 ERROR_DEVICE_NOT_MOUNTED Device not mounted
219 ERROR_SEEK_ERROR Seek error
220 ERROR_COMMENT_TOO_BIG Comment too big
221 ERROR_DISK_FULL Disk full
222 ERROR_DELETE_PROTECTED Delete protected
223 ERROR_WRITE_PROTECTED Write protected
224 ERROR_READ_PROTECTED Read protected
225 ERROR_NOT_A_DOS_DISK Not a DOS disk
226 ERROR_NO_DISK No disk in drive
232 ERROR_NO_MORE_ENTRIES No more directory entries
233 ERROR_IS_SOFT_LINK Object is a soft link
234 ERROR_OBJECT_LINKED Object is hard-linked
235 ERROR_BAD_HUNK Bad hunk in executable
236 ERROR_NOT_IMPLEMENTED Function not implemented
240 ERROR_RECORD_NOT_LOCKED Record not locked
241 ERROR_LOCK_COLLISION Record lock collision
242 ERROR_LOCK_TIMEOUT Record lock timeout
243 ERROR_UNLOCK_ERROR Unlock error

Usage Pattern

BPTR fh = Open("nonexistent", MODE_OLDFILE);
if (!fh) {
    LONG err = IoErr();
    PrintFault(err, "myapp");
    /* prints: "myapp: Object not found" */
}

References

  • NDK39: dos/dos.h, dos/dosasl.h
  • ADCD 2.1: IoErr, Fault, PrintFault