122 lines
2.7 KiB
OpenEdge ABL
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
|