Standard Device Libraries¶
AmigaOS devices (timer, trackdisk, serial, parallel, console, audio, clipboard, input, gameport, keyboard) are accessed through the exec IO Request mechanism — OpenDevice() → DoIO()/SendIO() → CloseDevice(). Each device has a unit number and a set of io_Command values.
Common pattern for all devices¶
struct IORequest *io = CreateIORequest(replyPort, sizeof(struct IOStdReq));
OpenDevice("timer.device", UNIT_VBLANK, io, 0);
io->io_Command = TR_ADDREQUEST;
((struct timerequest *)io)->tr_time.tv_secs = 2;
DoIO(io); /* wait 2 seconds */
CloseDevice(io);
DeleteIORequest(io);
timer.device¶
The system timer. Provides timed events and system time queries.
Units: UNIT_VBLANK (vertical blank frequency, ~50/60 Hz), UNIT_MICROHZ (microsecond precision), UNIT_ECLOCK (E-Clock), UNIT_WAITUNTIL (V40+, wait until absolute time).
Commands:
- TR_ADDREQUEST — request a timer event (async, reply after delay).
- TR_GETSYSTIME — get current system time.
- TR_SETSYSTIME — set system time.
Helper functions (called directly, no IO needed): GetSysTime(), AddTime(), SubTime(), CmpTime(), ReadEClock().
struct timeval { ULONG tv_secs; ULONG tv_micro; } — micro must be normalized (0–999999).
trackdisk.device¶
Floppy disk access. Caches one track in a track buffer.
Commands: CMD_READ, CMD_WRITE, CMD_UPDATE (flush buffer), CMD_CLEAR (invalidate buffer), TD_FORMAT, TD_MOTOR, TD_SEEK, TD_RAWREAD/TD_RAWWRITE (raw sector access), TD_GETNUMTRACKS, TD_GETDRIVETYPE, TD_GETGEOMETRY, TD_ADDCHANGEINT/TD_REMCHANGEINT (media change notification), TD_CHANGESTATE, TD_EJECT, TD_PROTSTATUS.
Gotchas:
- Always CMD_UPDATE before ejecting media or the buffer may be stale.
- TD_RAWREAD/TD_RAWWRITE offsets are byte offsets from track 0, must be sector-aligned and within a single track.
- TD_GETDRIVETYPE returns DRIVE_35, DRIVE_525, DRIVE_35_150RPM, or DRIVE_NEWSTYLE (0x4E535459, 'NSTY') for new style devices.
serial.device¶
Serial port I/O.
Commands: CMD_READ, CMD_WRITE, CMD_CLEAR, CMD_RESET, CMD_START/CMD_STOP, CMD_FLUSH, SDCMD_BREAK, SDCMD_QUERY, SDCMD_SETPARAMS.
SDCMD_SETPARAMS sets baud rate, data bits, stop bits, parity, XON/XOFF flow control. Default buffer is 8192 bytes; set io_RLen in the IOExtSer during OpenDevice to change it.
parallel.device¶
Parallel port I/O. Commands: CMD_READ, CMD_WRITE, CMD_CLEAR, CMD_FLUSH, CMD_RESET, CMD_START/CMD_STOP, PDCMD_QUERY, PDCMD_SETPARAMS.
console.device¶
Console I/O with keymap management. Commands: CMD_READ, CMD_WRITE, CMD_CLEAR, CD_ASKKEYMAP/CD_SETKEYMAP, CD_ASKDEFAULTKEYMAP/CD_SETDEFAULTKEYMAP, RawKeyConvert (convert raw key events to ANSI), CDInputHandler.
audio.device¶
4-channel Paula audio. Commands: CMD_WRITE (play sample), ADCMD_ALLOCATE (reserve channels), ADCMD_FREE, ADCMD_PERVOL (set pitch + volume), ADCMD_FINISH, ADCMD_LOCK, ADCMD_SETPREC, ADCMD_WAITCYCLE.
Allocation: must ADCMD_ALLOCATE channels (0–3) before playing. Can specify which channels and whether to block waiting. One allocation key per set of channels.
clipboard.device¶
System clipboard (units 0+). Data is IFF formatted.
Commands: CMD_WRITE, CMD_READ, CMD_UPDATE, CBD_POST (post a read request), CBD_CHANGEHOOK (register a hook for clipboard changes), CBD_CURRENTREADID, CBD_CURRENTWRITEID.
Write pattern: PushChunk(ID_FORM, ID_CLIP) → WriteChunkBytes() → PopChunk() (via iffparse).
input.device¶
System input event distribution.
Commands: CMD_WRITE (inject input events), IND_ADDHANDLER/IND_REMHANDLER (install/remove input handler in the chain), IND_SETMTRIGGER, IND_SETTHRESH, IND_WRITEEVENT.
Input handlers form a chain — each handler receives events, can modify them, remove them, or re-inject new events. This is the mechanism commodities.library builds on.
gameport.device¶
Game controller (mouse, joystick) input.
Commands: CMD_READ, GPD_ASKCTYPE/GPD_SETCTYPE, GPD_ASKTRIGGER/GPD_SETTRIGGER, GPD_READEVENT.
Controller types: GPCT_NOCONTROLLER, GPCT_MOUSE, GPCT_RELATIVE, GPCT_ABSOLUTE.
keyboard.device¶
Commands: CMD_READ, KBD_READMATRIX, KBD_RESETHANDLER/KBD_ADDRESETHANDLER.
See Also¶
Sources: Commodore-Amiga / ESCOM AG, device Autodocs (1985-1996).
Raw: raw/devices/device-autodocs.md
Updated: 2026-08-04