! *** 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 DECLARE LONG CONSTANT OBJ$M_PSC_PIC = x'00000001' DECLARE LONG CONSTANT OBJ$M_PSC_LIB = x'00000002' DECLARE LONG CONSTANT OBJ$M_PSC_OVL = x'00000004' DECLARE LONG CONSTANT OBJ$M_PSC_REL = x'00000008' DECLARE LONG CONSTANT OBJ$M_PSC_GBL = x'00000010' DECLARE LONG CONSTANT OBJ$M_PSC_SHR = x'00000020' DECLARE LONG CONSTANT OBJ$M_PSC_EXE = x'00000040' DECLARE LONG CONSTANT OBJ$M_PSC_RD = x'00000080' DECLARE LONG CONSTANT OBJ$M_PSC_WRT = x'00000100' DECLARE LONG CONSTANT OBJ$M_SYM_WEAK = x'00000001' DECLARE LONG CONSTANT OBJ$M_SYM_DEF = x'00000002' DECLARE LONG CONSTANT OBJ$M_SYM_UNI = x'00000004' DECLARE LONG CONSTANT OBJ$M_SYM_REL = x'00000008' DECLARE LONG CONSTANT OBJ$M_SYMV_WEAK = x'00000001' DECLARE LONG CONSTANT OBJ$M_SYMV_DEF = x'00000002' DECLARE LONG CONSTANT OBJ$M_SYMV_UNI = x'00000004' DECLARE LONG CONSTANT OBJ$M_SYMV_REL = x'00000008' DECLARE LONG CONSTANT OBJ$M_SYMM_WEAK = x'00000001' DECLARE LONG CONSTANT OBJ$M_SYMM_DEF = x'00000002' DECLARE LONG CONSTANT OBJ$M_SYMM_UNI = x'00000004' DECLARE LONG CONSTANT OBJ$M_SYMM_REL = x'00000008' DECLARE LONG CONSTANT OBJ$S_SDADEFS = 16 record SDADEFS group OBJ$R_TYPE_OVERLAY variant case BYTE OBJ$B_TYPE ! Type of record case BYTE OBJ$B_GSD_TYPE ! Type of GSD record end variant end group OBJ$R_TYPE_OVERLAY group OBJ$R_RECORDS_OVERLAY variant case group OBJ$R_PSECT_RECORD BYTE OBJ$B_PSC_ALI ! PSECT alignment (2**n) group OBJ$R_FILL_0_ variant case WORD OBJ$W_PSC_FLAG ! PSECT flags: case group OBJ$R_FILL_1_ ! Position independent ! Defined from sharable image ! Overlaid psect ! Requires relocation ! PSECT is global ! Potentially sharable ! Executable ! Can be read ! Can be written WORD PSC_PIC_bits ! COMMENT ADDED BY SDL - PSC_PIC_bits contains bits PSC_PIC through FILL_8_ end group OBJ$R_FILL_1_ end variant end group OBJ$R_FILL_0_ LONG OBJ$L_PSC_LEN ! Length of PSECT STRING OBJ$T_PSC_NAME = 1 ! PSECT name (counted string) end group OBJ$R_PSECT_RECORD case group OBJ$R_GLOBAL_SYM_RECORD BYTE OBJ$B_SYM_DTYPE ! Data type (see Arch. Handbook, Ap. C) group OBJ$R_FILL_2_ variant case WORD OBJ$W_SYM_FLAGS ! Symbol flags: case group OBJ$R_FILL_3_ ! Weak resolution (0 = strong) ! Definition (0 = reference) ! Universal definition (0 = local) ! Relative symbol (0 = absolute) BYTE SYM_WEAK_bits ! COMMENT ADDED BY SDL - SYM_WEAK_bits contains bits SYM_WEAK through FILL_9_ end group OBJ$R_FILL_3_ end variant end group OBJ$R_FILL_2_ BYTE OBJ$B_SYM_PSIND ! PSECT index (only if def) LONG OBJ$L_SYM_VALUE ! Value of symbol (only if def) STRING OBJ$T_SYM_NAME = 1 ! Symbol name (counted string) end group OBJ$R_GLOBAL_SYM_RECORD case group OBJ$R_ENTRY_POINT_RECORD BYTE OBJ$B_EPM_DTYPE ! Data type (see Arch. Handbook, Ap. C) WORD OBJ$W_EPM_FLAGS ! Flags (same as SYM_FLAGS) BYTE OBJ$B_EPM_PSIND ! PSECT index (only if def) LONG OBJ$L_EPM_VALUE ! Value of symbol (only if def) WORD OBJ$W_EPM_MASK ! Entry mask STRING OBJ$T_EPM_NAME = 1 ! Symbol name (counted string) end group OBJ$R_ENTRY_POINT_RECORD case group OBJ$R_GLOBAL_SYMV_RECORD BYTE OBJ$B_SYMV_DTYPE ! Data type (see Arch. Handbook, Ap. C) group OBJ$R_FILL_4_ variant case WORD OBJ$W_SYMV_FLAGS ! Symbol flags: case group OBJ$R_FILL_5_ ! Weak resolution (0 = strong) ! Definition (0 = reference) ! Universal definition (0 = local) ! Relative symbol (0 = absolute) BYTE SYMV_WEAK_bits ! COMMENT ADDED BY SDL - SYMV_WEAK_bits contains bits SYMV_WEAK through & ! FILL_10_ end group OBJ$R_FILL_5_ end variant end group OBJ$R_FILL_4_ BYTE OBJ$B_SYMV_PSIND ! PSECT index (only if def) LONG OBJ$L_SYMV_VALUE ! Value of symbol (only if def) LONG OBJ$L_SYMV_VECTOR ! Vectored value of symbol (only if def) STRING OBJ$T_SYMV_NAME = 1 ! Symbol name (counted string) end group OBJ$R_GLOBAL_SYMV_RECORD case group OBJ$R_GLOBAL_EPMV_RECORD BYTE OBJ$B_EPMV_DTYPE ! Data type (see Arch. Handbook, Ap. C) WORD OBJ$W_EPMV_FLAGS ! Flags (same as SYM_FLAGS) BYTE OBJ$B_EPMV_PSIND ! PSECT index (only if def) LONG OBJ$L_EPMV_VALUE ! Value of symbol (only if def) LONG OBJ$L_EPMV_VECTOR ! Vectored value of symbol (only if def) WORD OBJ$W_EPMV_MASK ! Entry mask STRING OBJ$T_EPMV_NAME = 1 ! Symbol name (counted string) end group OBJ$R_GLOBAL_EPMV_RECORD case group OBJ$R_GLOBAL_SYMM_RECORD BYTE OBJ$B_SYMM_DTYPE ! Data type (see Arch. Handbook, Ap. C) group OBJ$R_FILL_6_ variant case WORD OBJ$W_SYMM_FLAGS ! Symbol flags: case group OBJ$R_FILL_7_ ! Weak resolution (0 = strong) ! Definition (0 = reference) ! Universal definition (0 = local) ! Relative symbol (0 = absolute) BYTE SYMM_WEAK_bits ! COMMENT ADDED BY SDL - SYMM_WEAK_bits contains bits SYMM_WEAK through & ! FILL_11_ end group OBJ$R_FILL_7_ end variant end group OBJ$R_FILL_6_ BYTE OBJ$B_SYMM_PSIND ! PSECT index (only if def) LONG OBJ$L_SYMM_VALUE ! Value of symbol (only if def) LONG OBJ$L_SYMM_VERSION_MASK ! Version mask of symbol (only if def) STRING OBJ$T_SYMM_NAME = 1 ! Symbol name (counted string) end group OBJ$R_GLOBAL_SYMM_RECORD case group OBJ$R_GLOBAL_EPMM_RECORD BYTE OBJ$B_EPMM_DTYPE ! Data type (see Arch. Handbook, Ap. C) WORD OBJ$W_EPMM_FLAGS ! Flags (same as SYM_FLAGS) BYTE OBJ$B_EPMM_PSIND ! PSECT index (only if def) LONG OBJ$L_EPMM_VALUE ! Value of symbol (only if def) LONG OBJ$L_EPMM_VERSION_MASK ! Version mask of symbol (only if def) WORD OBJ$W_EPMM_MASK ! Entry mask STRING OBJ$T_EPMM_NAME = 1 ! Symbol name (counted string) end group OBJ$R_GLOBAL_EPMM_RECORD case group OBJ$R_EOM_RECORD BYTE OBJ$B_EOM_SEV ! Error severity for module BYTE OBJ$B_EOM_PSIND ! PSECT index of transfer address LONG OBJ$L_EOM_TRANS ! Transfer address end group OBJ$R_EOM_RECORD end variant end group OBJ$R_RECORDS_OVERLAY end record SDADEFS DECLARE LONG CONSTANT OBJ$C_HDR = 0 ! Module header record DECLARE LONG CONSTANT OBJ$C_HDR_MHD = 0 ! Main header record DECLARE LONG CONSTANT OBJ$C_HDR_LNM = 1 ! Language processor record DECLARE LONG CONSTANT OBJ$C_HDR_SRC = 2 ! Source files description DECLARE LONG CONSTANT OBJ$C_HDR_TTL = 3 ! Title text DECLARE LONG CONSTANT OBJ$C_HDR_CPR = 4 ! Copyright text DECLARE LONG CONSTANT OBJ$C_HDR_MTC = 5 ! Maintenance text DECLARE LONG CONSTANT OBJ$C_HDR_GTX = 6 ! General text DECLARE LONG CONSTANT OBJ$C_GSD = 1 ! Global symbol definition record DECLARE LONG CONSTANT OBJ$C_GSD_PSC = 0 ! P-sect definition DECLARE LONG CONSTANT OBJ$C_GSD_SYM = 1 ! Symbol (simple) definition DECLARE LONG CONSTANT OBJ$C_GSD_EPM = 2 ! Entry point definition DECLARE LONG CONSTANT OBJ$C_GSD_PRO = 3 ! Procedure definition DECLARE LONG CONSTANT OBJ$C_GSD_SYMW = 4 ! Symbol definition with word psect DECLARE LONG CONSTANT OBJ$C_GSD_EPMW = 5 ! Entry point definition with word psect DECLARE LONG CONSTANT OBJ$C_GSD_PROW = 6 ! Procedure definition with word psect DECLARE LONG CONSTANT OBJ$C_GSD_IDC = 7 ! Random entity check DECLARE LONG CONSTANT OBJ$C_GSD_ENV = 8 ! Environment definition DECLARE LONG CONSTANT OBJ$C_GSD_LSY = 9 ! Local symbol definition/reference DECLARE LONG CONSTANT OBJ$C_GSD_LEPM = 10 ! Local symbol entry point def. DECLARE LONG CONSTANT OBJ$C_GSD_LPRO = 11 ! Local symbol procedure def. DECLARE LONG CONSTANT OBJ$C_GSD_SPSC = 12 ! Shareable image psect definition DECLARE LONG CONSTANT OBJ$C_GSD_SYMV = 13 ! Global symbol definition (vectored) DECLARE LONG CONSTANT OBJ$C_GSD_EPMV = 14 ! Entry point definition (vectored) DECLARE LONG CONSTANT OBJ$C_GSD_PROV = 15 ! Procedure definition (vectored) DECLARE LONG CONSTANT OBJ$C_GSD_SYMM = 16 ! Global symbol definition (special double valued) DECLARE LONG CONSTANT OBJ$C_GSD_EPMM = 17 ! Entry point definition (special double valued) DECLARE LONG CONSTANT OBJ$C_GSD_PROM = 18 ! Procedure definition (special double valued) DECLARE LONG CONSTANT OBJ$C_TIR = 2 ! Text information record DECLARE LONG CONSTANT OBJ$C_EOM = 3 ! End of module record DECLARE LONG CONSTANT OBJ$C_DBG = 4 ! Debugger information record DECLARE LONG CONSTANT OBJ$C_TBT = 5 ! Traceback information record DECLARE LONG CONSTANT OBJ$C_LNK = 6 ! Linker options record DECLARE LONG CONSTANT OBJ$C_EOMW = 7 ! End of module record with word psect DECLARE LONG CONSTANT OBJ$C_MAXRECTYP = 7 ! Last assigned record type DECLARE LONG CONSTANT OBJ$K_SUBTYP = 1 DECLARE LONG CONSTANT OBJ$C_SUBTYP = 1 DECLARE LONG CONSTANT OBJ$C_MAXRECSIZ = 2048 ! Maximum legal record size DECLARE LONG CONSTANT OBJ$C_STRLVL = 0 ! Structure level DECLARE LONG CONSTANT OBJ$C_SYMSIZ = 31 ! Maximum symbol length DECLARE LONG CONSTANT OBJ$C_STOREPLIM = -1 ! Maximum repeat count on store commands DECLARE LONG CONSTANT OBJ$C_PSCALILIM = 9 ! Maximum p-sect alignment DECLARE LONG CONSTANT OBJ$S_OBJRECDEF = 5 record OBJRECDEF BYTE OBJ$B_RECTYP ! First byte always record type ! Permissable record types BYTE OBJ$B_SUBTYP ! Record sub-type byte BYTE OBJ$B_MHD_STRLV ! Structure level group OBJ$R_MHD_RECSZ_OVERLAY variant case WORD OBJ$W_MHD_RECSZ ! Maximum record size case group OBJ$R_MHD_RECSZ_FIELDS BYTE OBJRECDEF$$_FILL_1 ( 1 to 2 ) STRING OBJ$T_MHD_NAME = 0 ! Module name field ! Misc. constants end group OBJ$R_MHD_RECSZ_FIELDS end variant end group OBJ$R_MHD_RECSZ_OVERLAY end record OBJRECDEF