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