amos-professional/includes/exec/io.i
2020-04-26 02:58:13 +02:00

122 lines
2.7 KiB
OpenEdge ABL

IFND EXEC_IO_I
EXEC_IO_I SET 1
**
** $Filename: exec/io.i $
** $Release: 1.3 $
**
**
**
** (C) Copyright 1985,1986,1987,1988 Commodore-Amiga, Inc.
** All Rights Reserved
**
IFND EXEC_PORTS_I
INCLUDE "exec/ports.i"
ENDC ; EXEC_PORTS_I
IFND EXEC_LIBRARIES_I
INCLUDE "exec/libraries.i"
ENDC ; EXEC_LIBRARIES_I
*----------------------------------------------------------------
*
* IO Request Structures
*
*----------------------------------------------------------------
*------ Required portion of IO request:
STRUCTURE IO,MN_SIZE
APTR IO_DEVICE * device node pointer
APTR IO_UNIT * unit (driver private)
UWORD IO_COMMAND * device command
UBYTE IO_FLAGS * special flags
BYTE IO_ERROR * error or warning code
LABEL IO_SIZE
*------ Standard IO request extension:
ULONG IO_ACTUAL * actual # of bytes transfered
ULONG IO_LENGTH * requested # of bytes transfered
APTR IO_DATA * pointer to data area
ULONG IO_OFFSET * offset for seeking devices
LABEL IOSTD_SIZE
*------ IO_FLAGS bit definitions:
BITDEF IO,QUICK,0 * complete IO quickly
*----------------------------------------------------------------
*
* Standard Device Library Functions
*
*----------------------------------------------------------------
LIBINIT
LIBDEF DEV_BEGINIO * process IO request
LIBDEF DEV_ABORTIO * abort IO request
*----------------------------------------------------------------
*
* IO Function Macros
*
*----------------------------------------------------------------
BEGINIO MACRO
LINKLIB DEV_BEGINIO,IO_DEVICE(A1)
ENDM
ABORTIO MACRO
LINKLIB DEV_ABORTIO,IO_DEVICE(A1)
ENDM
*----------------------------------------------------------------
*
* Standard Device Command Definitions
*
*----------------------------------------------------------------
*------ Command definition macro:
DEVINIT MACRO * [baseOffset]
IFC '\1',''
CMD_COUNT SET CMD_NONSTD
ENDC
IFNC '\1',''
CMD_COUNT SET \1
ENDC
ENDM
DEVCMD MACRO * cmdname
\1 EQU CMD_COUNT
CMD_COUNT SET CMD_COUNT+1
ENDM
*------ Standard device commands:
DEVINIT 0
DEVCMD CMD_INVALID * invalid command
DEVCMD CMD_RESET * reset as if just inited
DEVCMD CMD_READ * standard read
DEVCMD CMD_WRITE * standard write
DEVCMD CMD_UPDATE * write out all buffers
DEVCMD CMD_CLEAR * clear all buffers
DEVCMD CMD_STOP * hold current and queued
DEVCMD CMD_START * restart after stop
DEVCMD CMD_FLUSH * abort entire queue
*------ First non-standard device command value:
DEVCMD CMD_NONSTD
ENDC ; EXEC_IO_I