Hamazing/source/includes/exec/io.i
2023-05-22 18:29:18 +02:00

124 lines
2.8 KiB
OpenEdge ABL

IFND EXEC_IO_I
EXEC_IO_I SET 1
**
** $Filename: exec/io.i $
** $Release: 2.04 Includes, V37.4 $
** $Revision: 36.4 $
** $Date: 90/05/10 $
**
** Message structures used for device communication
**
** (C) Copyright 1985-1991 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