124 lines
2.8 KiB
OpenEdge ABL
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
|