! *** PREDECLARED TYPES %IF %DECLARED ( %BASIC$QUADWORD_DECLARED ) = 0 %THEN RECORD BASIC$QUADWORD LONG FILL ( 2 ) END RECORD %LET %BASIC$QUADWORD_DECLARED = 1 %END %IF %IF %DECLARED ( %BASIC$OCTAWORD_DECLARED ) = 0 %THEN RECORD BASIC$OCTAWORD LONG FILL ( 4 ) END RECORD %LET %BASIC$OCTAWORD_DECLARED = 1 %END %IF %IF %DECLARED ( %BASIC$HFLOAT_AXP_DECLARED ) = 0 %THEN RECORD BASIC$HFLOAT_AXP LONG FILL ( 4 ) END RECORD %LET %BASIC$HFLOAT_AXP_DECLARED = 1 %END %IF %IF %DECLARED ( %BASIC$F_FLOATING_COMPLEX_DECL ) = 0 %THEN RECORD BASIC$F_FLOATING_COMPLEX SINGLE REAL_PART SINGLE IMAGINARY_PART END RECORD %LET %BASIC$F_FLOATING_COMPLEX_DECL = 1 %END %IF %IF %DECLARED ( %BASIC$D_FLOATING_COMPLEX_DECL ) = 0 %THEN RECORD BASIC$D_FLOATING_COMPLEX DOUBLE REAL_PART DOUBLE IMAGINARY_PART END RECORD %LET %BASIC$D_FLOATING_COMPLEX_DECL = 1 %END %IF %IF %DECLARED ( %BASIC$G_FLOATING_COMPLEX_DECL ) = 0 %THEN RECORD BASIC$G_FLOATING_COMPLEX GFLOAT REAL_PART GFLOAT IMAGINARY_PART END RECORD %LET %BASIC$G_FLOATING_COMPLEX_DECL = 1 %END %IF %IF %DECLARED ( %BASIC$H_FLOAT_AXP_CMPLX_DCL ) = 0 %THEN RECORD BASIC$H_FLOATING_COMPLEX_AXP BASIC$HFLOAT_AXP REAL_PART BASIC$HFLOAT_AXP IMAGINARY_PART END RECORD %LET %BASIC$H_FLOAT_AXP_CMPLX_DCL = 1 %END %IF ! + ! Define I/O Status Area ! - DECLARE LONG CONSTANT IOSA$K_LENGTH = 32 ! Length of IOSA DECLARE LONG CONSTANT IOSA$C_LENGTH = 32 ! Length of IOSA DECLARE LONG CONSTANT IOSA$S_IOSADEF = 32 ! Size of IOSA DECLARE LONG CONSTANT IOSA$S_IOSA = 32 record IOSA group IOSA$R_IOSB_OVERLAY variant case group IOSA$R_IOSB WORD IOSA$W_IOSB_STATUS ! Final I/O status group IOSA$R_DEVDEPEND variant case group IOSA$R_BCNT_16 ! 16-bit byte count variant WORD IOSA$W_IOSB_BCNT ! 16-bit byte count group IOSA$r_l variant case LONG IOSA$L_IOSB_DEV_DEPEND ! 32-bit device dependent info case LONG IOSA$L_IOSB_PID ! 32-bit pid end variant end group IOSA$r_l end group IOSA$R_BCNT_16 case group IOSA$R_BCNT_32 ! 32-bit byte count variant LONG IOSA$L_IOSB_BCNT ! 32-bit byte count (unaligned) WORD IOSA$W_IOSB_DEV_DEPEND_HIGH ! 16-bit device dependent info end group IOSA$R_BCNT_32 end variant end group IOSA$R_DEVDEPEND end group IOSA$R_IOSB case group IOSA$R_STATUSQ LONG IOSA$L_STATUS ! Status LONG IOSA$L_RESD ! Reserved (driver) end group IOSA$R_STATUSQ end variant end group IOSA$R_IOSB_OVERLAY group IOSA$R_BYTECOUNT variant case BASIC$QUADWORD IOSA$Q_COUNT_Q ! Force size case BASIC$QUADWORD IOSA$IH_COUNT ! Number of bytes end variant end group IOSA$R_BYTECOUNT group IOSA$R_CTX variant case BASIC$QUADWORD IOSA$Q_CONTEXT_Q ! Force size case BASIC$QUADWORD IOSA$PH_CONTEXT_P ! User context area case BASIC$QUADWORD IOSA$IH_CONTEXT ! User context area case BASIC$QUADWORD IOSA$PH_UPDSEC_NOWRT_VA ! First VA not written by $UPDSEC_64 end variant end group IOSA$R_CTX group IOSA$R_RESERVED ! Just in case we need variant case LONG IOSA$L_RESL ( 1 to 2 ) ! in the future some case BASIC$QUADWORD IOSA$Q_RESQ ! additional space case BASIC$QUADWORD IOSA$Q_CONTEXT_ID ! User context ID end variant end group IOSA$R_RESERVED end record IOSA ! + ! $IO_SETUP flag bits ! - DECLARE LONG CONSTANT FIO$M_EXPEDITE = x'00000001' DECLARE LONG CONSTANT FIO$M_AST_NOFLOAT = x'00000002' DECLARE LONG CONSTANT FIO$M_CTX = x'00000004' DECLARE LONG CONSTANT FIO$S_SETUP_FLAGS = 4 record SETUP_FLAGS variant case LONG FIO$L_FLAGS_LONGWORD case group FIO$R_FLAG_BITS ! Make this a high-priority I/O ! The AST routine does not use f.p. regs ! Completion notification done via EFN$C_CTX BYTE EXPEDITE_bits ! COMMENT ADDED BY SDL - EXPEDITE_bits contains bits EXPEDITE through FILL_61_ end group FIO$R_FLAG_BITS end variant end record SETUP_FLAGS