!*** MODULE $IOSADEF *** !DEC$ OPTIONS/ALIGN=(RECORDS=PACKED,COMMONS=PACKED)/NOWARN ! + ! Define I/O Status Area ! - PARAMETER IOSA$K_LENGTH = '00000020'X ! Length of IOSA PARAMETER IOSA$C_LENGTH = '00000020'X ! Length of IOSA PARAMETER IOSA$S_IOSADEF = '00000020'X ! Size of IOSA STRUCTURE /IOSA/ UNION MAP INTEGER*2 IOSA$W_IOSB_STATUS ! Final I/O status UNION MAP INTEGER*2 IOSA$W_IOSB_BCNT ! 16-bit byte count UNION MAP INTEGER*4 IOSA$L_IOSB_DEV_DEPEND ! 32-bit device dependent info END MAP MAP INTEGER*4 IOSA$L_IOSB_PID ! 32-bit pid END MAP END UNION END MAP MAP INTEGER*4 IOSA$L_IOSB_BCNT ! 32-bit byte count (unaligned) INTEGER*2 IOSA$W_IOSB_DEV_DEPEND_HIGH ! 16-bit device dependent info END MAP END UNION END MAP MAP INTEGER*4 IOSA$L_STATUS ! Status INTEGER*4 IOSA$L_RESD ! Reserved (driver) END MAP END UNION UNION MAP INTEGER*4 IOSA$Q_COUNT_Q(2) ! Force size END MAP MAP INTEGER*8 IOSA$IH_COUNT ! Number of bytes END MAP END UNION UNION MAP INTEGER*4 IOSA$Q_CONTEXT_Q(2) ! Force size END MAP MAP INTEGER*8 IOSA$PH_CONTEXT_P ! User context area END MAP MAP INTEGER*8 IOSA$IH_CONTEXT ! User context area END MAP MAP INTEGER*8 IOSA$PH_UPDSEC_NOWRT_VA ! First VA not written by $UPDSEC_64 END MAP END UNION UNION MAP INTEGER*4 IOSA$L_RESL(1:2) ! in the future some END MAP MAP INTEGER*8 IOSA$Q_RESQ ! additional space END MAP MAP INTEGER*8 IOSA$Q_CONTEXT_ID ! User context ID END MAP END UNION END STRUCTURE ! IOSA ! + ! $IO_SETUP flag bits ! - PARAMETER FIO$M_EXPEDITE = '00000001'X PARAMETER FIO$M_AST_NOFLOAT = '00000002'X PARAMETER FIO$M_CTX = '00000004'X STRUCTURE /SETUP_FLAGS/ UNION MAP INTEGER*4 FIO$L_FLAGS_LONGWORD END MAP MAP PARAMETER FIO$S_EXPEDITE = 1 PARAMETER FIO$V_EXPEDITE = 0 ! Make this a high-priority I/O PARAMETER FIO$S_AST_NOFLOAT = 1 PARAMETER FIO$V_AST_NOFLOAT = 1 ! The AST routine does not use f.p. regs PARAMETER FIO$S_CTX = 1 PARAMETER FIO$V_CTX = 2 ! Completion notification done via EFN$C_CTX BYTE %FILL (1) END MAP END UNION END STRUCTURE ! SETUP_FLAGS !DEC$ END OPTIONS