458 lines
11 KiB
C
458 lines
11 KiB
C
/****************************************************************
|
|
* *
|
|
* Copyright 2001 Sanchez Computer Associates, Inc. *
|
|
* *
|
|
* This source code contains the intellectual property *
|
|
* of its copyright holder(s), and is made available *
|
|
* under a license. If you do not know the terms of *
|
|
* the license, please stop and do not read further. *
|
|
* *
|
|
****************************************************************/
|
|
|
|
/* Object record types: */
|
|
#define EOBJ$C_EMH 8
|
|
#define EOBJ$C_EEOM 9
|
|
#define EOBJ$C_EGSD 10
|
|
#define EOBJ$C_ETIR 11
|
|
#define EOBJ$C_EDBG 12
|
|
#define EOBJ$C_ETBT 13
|
|
#define EOBJ$C_MAXRECTYP 13
|
|
|
|
/* Byte offsets into object record and related constants: */
|
|
#define EOBJ$K_SUBTYP 4
|
|
#define EOBJ$C_SUBTYP 4
|
|
#define EOBJ$C_MAXRECSIZ 8192
|
|
#define EOBJ$C_STRLVL 2
|
|
#define EOBJ$C_SYMSIZ 31
|
|
#define EOBJ$C_STOREPLIM -1
|
|
#define EOBJ$C_PSCALILIM 16
|
|
#define EOBJ$S_EOBJRECDEF 10
|
|
#define EOBJ$W_RECTYP 0
|
|
#define EOBJ$W_SIZE 2
|
|
#define EOBJ$W_SUBTYP 4
|
|
#define EOBJ$B_MHD_STRLV 6
|
|
#define EOBJ$B_MHD_HOLD 7
|
|
#define EOBJ$W_MHD_RECSZ 8
|
|
#define EOBJ$T_MHD_NAME 10
|
|
|
|
/* Object header record (EOBJ$C_EMH) subtypes: */
|
|
#define EMH$C_MHD 0
|
|
#define EMH$C_LNM 1
|
|
#define EMH$C_SRC 2
|
|
#define EMH$C_TTL 3
|
|
#define EMH$C_CPR 4
|
|
#define EMH$C_MTC 5
|
|
#define EMH$C_GTX 6
|
|
#define EMH$C_MAXHDRTYP 6
|
|
|
|
/* Byte offsets of fields in object header record (EOBJ$C_EMH): */
|
|
#define EMH$S_EMHDEF 52
|
|
#define EMH$W_RECTYP 0
|
|
#define EMH$W_SIZE 2
|
|
#define EMH$W_HDRTYP 4
|
|
#define EMH$B_STRLVL 6
|
|
#define EMH$B_TEMP 7
|
|
#define EMH$L_ARCH1 8
|
|
#define EMH$L_ARCH2 12
|
|
#define EMH$L_RECSIZ 16
|
|
#define EMH$B_NAMLNG 20
|
|
#define EMH$S_NAME 31
|
|
#define EMH$T_NAME 21
|
|
|
|
#define EEOM$C_SUCCESS 0
|
|
#define EEOM$C_WARNING 1
|
|
#define EEOM$C_ERROR 2
|
|
#define EEOM$C_ABORT 3
|
|
#define EEOM$K_EOMMIN 10
|
|
#define EEOM$C_EOMMIN 10
|
|
#define EEOM$K_EOMMX1 10
|
|
#define EEOM$C_EOMMX1 10
|
|
#define EEOM$M_WKTFR 0X1
|
|
#define EEOM$K_EOMMAX 24
|
|
#define EEOM$C_EOMMAX 24
|
|
#define EEOM$S_EEOMDEF 24
|
|
#define EEOM$W_RECTYP 0
|
|
#define EEOM$W_SIZE 2
|
|
#define EEOM$L_TOTAL_LPS 4
|
|
#define EEOM$W_COMCOD 8
|
|
#define EEOM$B_TFRFLG 10
|
|
#define EEOM$V_WKTFR 0
|
|
#define EEOM$B_TEMP 11
|
|
#define EEOM$L_PSINDX 12
|
|
#define EEOM$S_TFRADR 8
|
|
#define EEOM$Q_TFRADR 16
|
|
#define EEOM$L_TFRADR 16
|
|
|
|
|
|
#define EGSD$K_ENTRIES 2
|
|
#define EGSD$C_ENTRIES 2
|
|
|
|
#define EGSD$C_PSC 0
|
|
#define EGSD$C_SYM 1
|
|
#define EGSD$C_IDC 2
|
|
#define EGSD$C_ENV 3
|
|
#define EGSD$C_LSY 4
|
|
#define EGSD$C_SPSC 5
|
|
#define EGSD$C_SYMV 6
|
|
#define EGSD$C_SYMM 7
|
|
#define EGSD$C_SYMG 8
|
|
#define EGSD$C_MAXRECTYP 8
|
|
|
|
#define EGSD$S_EGSDEF 12
|
|
#define EGSD$W_RECTYP 0
|
|
#define EGSD$W_RECSIZ 2
|
|
#define EGSD$L_ALIGNLW 4
|
|
#define EGSD$W_GSDTYP 8
|
|
#define EGSD$W_GSDSIZ 10
|
|
|
|
#define EGPS$M_PIC 0X1
|
|
#define EGPS$M_LIB 0X2
|
|
#define EGPS$M_OVR 0X4
|
|
#define EGPS$M_REL 0X8
|
|
#define EGPS$M_GBL 0X10
|
|
#define EGPS$M_SHR 0X20
|
|
#define EGPS$M_EXE 0X40
|
|
#define EGPS$M_RD 0X80
|
|
#define EGPS$M_WRT 0X100
|
|
#define EGPS$M_VEC 0X200
|
|
#define EGPS$M_NOMOD 0X400
|
|
#define EGPS$M_COM 0X800
|
|
#define EGPS$K_NAME 12
|
|
#define EGPS$C_NAME 12
|
|
#define EGPS$S_EGPSDEF 44
|
|
#define EGPS$W_GSDTYP 0
|
|
#define EGPS$T_START 0
|
|
#define EGPS$W_SIZE 2
|
|
#define EGPS$B_ALIGN 4
|
|
#define EGPS$B_TEMP 5
|
|
#define EGPS$W_FLAGS 6
|
|
#define EGPS$V_PIC 0
|
|
#define EGPS$V_LIB 1
|
|
#define EGPS$V_OVR 2
|
|
#define EGPS$V_REL 3
|
|
#define EGPS$V_GBL 4
|
|
#define EGPS$V_SHR 5
|
|
#define EGPS$V_EXE 6
|
|
#define EGPS$V_RD 7
|
|
#define EGPS$V_WRT 8
|
|
#define EGPS$V_VEC 9
|
|
#define EGPS$V_NOMOD 10
|
|
#define EGPS$V_COM 11
|
|
#define EGPS$L_ALLOC 8
|
|
#define EGPS$B_NAMLNG 12
|
|
#define EGPS$S_NAME 31
|
|
#define EGPS$T_NAME 13
|
|
|
|
#define ESGPS$M_PIC 0X1
|
|
#define ESGPS$M_LIB 0X2
|
|
#define ESGPS$M_OVR 0X4
|
|
#define ESGPS$M_REL 0X8
|
|
#define ESGPS$M_GBL 0X10
|
|
#define ESGPS$M_SHR 0X20
|
|
#define ESGPS$M_EXE 0X40
|
|
#define ESGPS$M_RD 0X80
|
|
#define ESGPS$M_WRT 0X100
|
|
#define ESGPS$M_VEC 0X200
|
|
#define ESGPS$M_NOMOD 0X400
|
|
#define ESGPS$M_COM 0X800
|
|
#define ESGPS$K_NAME 25
|
|
#define ESGPS$C_NAME 25
|
|
#define ESGPS$S_ESGPSDEF 56
|
|
#define ESGPS$W_GSDTYP 0
|
|
#define ESGPS$T_START 0
|
|
#define ESGPS$W_SIZE 2
|
|
#define ESGPS$B_ALIGN 4
|
|
#define ESGPS$B_TEMP 5
|
|
#define ESGPS$W_FLAGS 6
|
|
#define ESGPS$V_PIC 0
|
|
#define ESGPS$V_LIB 1
|
|
#define ESGPS$V_OVR 2
|
|
#define ESGPS$V_REL 3
|
|
#define ESGPS$V_GBL 4
|
|
#define ESGPS$V_SHR 5
|
|
#define ESGPS$V_EXE 6
|
|
#define ESGPS$V_RD 7
|
|
#define ESGPS$V_WRT 8
|
|
#define ESGPS$V_VEC 9
|
|
#define ESGPS$V_NOMOD 10
|
|
#define ESGPS$V_COM 11
|
|
#define ESGPS$L_ALLOC 8
|
|
#define ESGPS$L_BASE 12
|
|
#define ESGPS$S_VALUE 8
|
|
#define ESGPS$Q_VALUE 16
|
|
#define ESGPS$L_VALUE 16
|
|
#define ESGPS$B_NAMLNG 24
|
|
#define ESGPS$S_NAME 31
|
|
#define ESGPS$T_NAME 25
|
|
|
|
#define EGSY$M_WEAK 0X1
|
|
#define EGSY$M_DEF 0X2
|
|
#define EGSY$M_UNI 0X4
|
|
#define EGSY$M_REL 0X8
|
|
#define EGSY$M_COMM 0X10
|
|
#define EGSY$M_VECEP 0X20
|
|
#define EGSY$M_NORM 0X40
|
|
#define EGSY$S_EGSYDEF 8
|
|
#define EGSY$W_GSDTYP 0
|
|
#define EGSY$T_START 0
|
|
#define EGSY$W_SIZE 2
|
|
#define EGSY$B_DATYP 4
|
|
#define EGSY$B_TEMP 5
|
|
#define EGSY$W_FLAGS 6
|
|
#define EGSY$V_WEAK 0
|
|
#define EGSY$V_DEF 1
|
|
#define EGSY$V_UNI 2
|
|
#define EGSY$V_REL 3
|
|
#define EGSY$V_COMM 4
|
|
#define EGSY$V_VECEP 5
|
|
#define EGSY$V_NORM 6
|
|
|
|
#define EGST$K_NAME 37
|
|
#define EGST$C_NAME 37
|
|
#define EGST$S_EGSTDEF 68
|
|
#define EGST$W_GSDTYP 0
|
|
#define EGST$T_START 0
|
|
#define EGST$W_SIZE 2
|
|
#define EGST$B_DATYP 4
|
|
#define EGST$B_TEMP 5
|
|
#define EGST$W_FLAGS 6
|
|
#define EGST$S_VALUE 8
|
|
#define EGST$Q_VALUE 8
|
|
#define EGST$L_VALUE 8
|
|
#define EGST$S_LP_1 8
|
|
#define EGST$Q_LP_1 16
|
|
#define EGST$L_LP_1 16
|
|
#define EGST$S_LP_2 8
|
|
#define EGST$Q_LP_2 24
|
|
#define EGST$L_LP_2 24
|
|
#define EGST$L_PSINDX 32
|
|
#define EGST$B_NAMLNG 36
|
|
#define EGST$S_NAME 31
|
|
#define EGST$T_NAME 37
|
|
|
|
#define ESDF$K_NAME 33
|
|
#define ESDF$C_NAME 33
|
|
#define ESDF$S_ESDFDEF 64
|
|
#define ESDF$W_GSDTYP 0
|
|
#define ESDF$T_START 0
|
|
#define ESDF$W_SIZE 2
|
|
#define ESDF$B_DATYP 4
|
|
#define ESDF$B_TEMP 5
|
|
#define ESDF$W_FLAGS 6
|
|
#define ESDF$S_VALUE 8
|
|
#define ESDF$Q_VALUE 8
|
|
#define ESDF$L_VALUE 8
|
|
#define ESDF$S_CODE_ADDRESS 8
|
|
#define ESDF$Q_CODE_ADDRESS 16
|
|
#define ESDF$L_CODE_ADDRESS 16
|
|
#define ESDF$L_CA_PSINDX 24
|
|
#define ESDF$L_PSINDX 28
|
|
#define ESDF$B_NAMLNG 32
|
|
#define ESDF$S_NAME 31
|
|
#define ESDF$T_NAME 33
|
|
|
|
#define ESDFV$K_NAME 25
|
|
#define ESDFV$C_NAME 25
|
|
#define ESDFV$S_ESDFVDEF 56
|
|
#define ESDFV$W_GSDTYP 0
|
|
#define ESDFV$T_START 0
|
|
#define ESDFV$W_SIZE 2
|
|
#define ESDFV$B_DATYP 4
|
|
#define ESDFV$B_TEMP 5
|
|
#define ESDFV$W_FLAGS 6
|
|
#define ESDFV$S_VALUE 8
|
|
#define ESDFV$Q_VALUE 8
|
|
#define ESDFV$L_VALUE 8
|
|
#define ESDFV$L_PSINDX 16
|
|
#define ESDFV$L_VECTOR 20
|
|
#define ESDFV$B_NAMLNG 24
|
|
#define ESDFV$S_NAME 31
|
|
#define ESDFV$T_NAME 25
|
|
#define ESDFM$K_NAME 25
|
|
#define ESDFM$C_NAME 25
|
|
#define ESDFM$S_ESDFMDEF 56
|
|
#define ESDFM$W_GSDTYP 0
|
|
#define ESDFM$T_START 0
|
|
#define ESDFM$W_SIZE 2
|
|
#define ESDFM$B_DATYP 4
|
|
#define ESDFM$B_TEMP 5
|
|
#define ESDFM$W_FLAGS 6
|
|
#define ESDFM$S_VALUE 8
|
|
#define ESDFM$Q_VALUE 8
|
|
#define ESDFM$L_VALUE 8
|
|
#define ESDFM$L_PSINDX 16
|
|
#define ESDFM$L_VERSION_MASK 20
|
|
#define ESDFM$B_NAMLNG 24
|
|
#define ESDFM$S_NAME 31
|
|
#define ESDFM$T_NAME 25
|
|
#define ESRF$K_NAME 9
|
|
#define ESRF$C_NAME 9
|
|
#define ESRF$S_ESRFDEF 40
|
|
#define ESRF$W_GSDTYP 0
|
|
#define ESRF$T_START 0
|
|
#define ESRF$W_SIZE 2
|
|
#define ESRF$B_DATYP 4
|
|
#define ESRF$B_TEMP 5
|
|
#define ESRF$W_FLAGS 6
|
|
#define ESRF$B_NAMLNG 8
|
|
#define ESRF$S_NAME 31
|
|
#define ESRF$T_NAME 9
|
|
#define EIDC$C_LEQ 0
|
|
#define EIDC$C_EQUAL 1
|
|
#define EIDC$S_EIDCDEF 7
|
|
#define EIDC$W_GSDTYP 0
|
|
#define EIDC$W_SIZE 2
|
|
#define EIDC$B_NAMLNG 4
|
|
#define EIDC$T_NAME 5
|
|
#define EIDC$W_FLAGS 5
|
|
#define EIDC$V_BINIDENT 0
|
|
#define EIDC$S_IDMATCH 2
|
|
#define EIDC$V_IDMATCH 1
|
|
#define EIDC$S_ERRSEV 3
|
|
#define EIDC$V_ERRSEV 3
|
|
|
|
#define EENV$M_DEF 0X1
|
|
#define EENV$M_NESTED 0X2
|
|
#define EENV$S_EENVDEF 40
|
|
#define EENV$W_GSDTYP 0
|
|
#define EENV$W_SIZE 2
|
|
#define EENV$W_FLAGS 4
|
|
#define EENV$V_DEF 0
|
|
#define EENV$V_NESTED 1
|
|
#define EENV$W_ENVINDX 6
|
|
#define EENV$B_NAMLNG 8
|
|
#define EENV$S_NAME 31
|
|
#define EENV$T_NAME 9
|
|
|
|
#define ELSY$M_WEAK 0X1
|
|
#define ELSY$M_DEF 0X2
|
|
#define ELSY$M_UNI 0X4
|
|
#define ELSY$M_REL 0X8
|
|
#define ELSY$S_ELSYDEF 14
|
|
#define ELSY$W_GSDTYP 0
|
|
#define ELSY$T_START 0
|
|
#define ELSY$W_SIZE 2
|
|
#define ELSY$B_DATYP 4
|
|
#define ELSY$B_TEMP1 5
|
|
#define ELSY$W_FLAGS 6
|
|
#define ELSY$V_WEAK 0
|
|
#define ELSY$V_DEF 1
|
|
#define ELSY$V_UNI 2
|
|
#define ELSY$V_REL 3
|
|
#define ELSY$L_PSINDX 8
|
|
#define ELSY$W_ENVINDX 12
|
|
|
|
#define ELSRF$K_NAME 17
|
|
#define ELSRF$C_NAME 17
|
|
#define ELSRF$S_ELSRFDEF 48
|
|
#define ELSRF$W_GSDTYP 0
|
|
#define ELSRF$T_START 0
|
|
#define ELSRF$W_SIZE 2
|
|
#define ELSRF$B_DATYP 4
|
|
#define ELSRF$B_TEMP1 5
|
|
#define ELSRF$W_FLAGS 6
|
|
#define ELSRF$L_PSINDX 8
|
|
#define ELSRF$W_ENVINDX 12
|
|
#define ELSRF$W_TEMP2 14
|
|
#define ELSRF$B_NAMLNG 16
|
|
#define ELSRF$S_NAME 31
|
|
#define ELSRF$T_NAME 17
|
|
|
|
#define ELSDF$K_NAME 25
|
|
#define ELSDF$C_NAME 25
|
|
#define ELSDF$S_ELSDFDEF 56
|
|
#define ELSDF$W_GSDTYP 0
|
|
#define ELSDF$T_START 0
|
|
#define ELSDF$W_SIZE 2
|
|
#define ELSDF$B_DATYP 4
|
|
#define ELSDF$B_TEMP1 5
|
|
#define ELSDF$W_FLAGS 6
|
|
#define ELSDF$S_VALUE 8
|
|
#define ELSDF$Q_VALUE 8
|
|
#define ELSDF$L_VALUE 8
|
|
#define ELSDF$L_PSINDX 16
|
|
#define ELSDF$W_ENVINDX 20
|
|
#define ELSDF$W_TEMP2 22
|
|
#define ELSDF$B_NAMLNG 24
|
|
#define ELSDF$S_NAME 31
|
|
#define ELSDF$T_NAME 25
|
|
|
|
/* ETIR command types: */
|
|
/* ETIR stack commands: */
|
|
#define ETIR$C_MINSTACOD 0
|
|
#define ETIR$C_STA_GBL 0
|
|
#define ETIR$C_STA_LW 1
|
|
#define ETIR$C_STA_QW 2
|
|
#define ETIR$C_STA_PQ 3
|
|
#define ETIR$C_STA_LI 4
|
|
#define ETIR$C_STA_MOD 5
|
|
#define ETIR$C_STA_CKARG 6
|
|
#define ETIR$C_MAXSTACOD 6
|
|
|
|
#define ETIR$C_MINSTOCOD 50
|
|
#define ETIR$C_STO_B 50
|
|
#define ETIR$C_STO_W 51
|
|
#define ETIR$C_STO_LW 52
|
|
#define ETIR$C_STO_QW 53
|
|
#define ETIR$C_STO_IMMR 54
|
|
#define ETIR$C_STO_GBL 55
|
|
#define ETIR$C_STO_CA 56
|
|
#define ETIR$C_STO_RB 57
|
|
#define ETIR$C_STO_AB 58
|
|
#define ETIR$C_STO_OFF 59
|
|
#define ETIR$C_STO_IMM 61
|
|
#define ETIR$C_STO_GBL_LW 62
|
|
#define ETIR$C_STO_HINT_GBL 64
|
|
#define ETIR$C_STO_HINT_PS 65
|
|
#define ETIR$C_MAXSTOCOD 65
|
|
|
|
#define ETIR$C_MINOPRCOD 100
|
|
#define ETIR$C_OPR_NOP 100
|
|
#define ETIR$C_OPR_ADD 101
|
|
#define ETIR$C_OPR_SUB 102
|
|
#define ETIR$C_OPR_MUL 103
|
|
#define ETIR$C_OPR_DIV 104
|
|
#define ETIR$C_OPR_AND 105
|
|
#define ETIR$C_OPR_IOR 106
|
|
#define ETIR$C_OPR_EOR 107
|
|
#define ETIR$C_OPR_NEG 108
|
|
#define ETIR$C_OPR_COM 109
|
|
#define ETIR$C_OPR_INSV 110
|
|
#define ETIR$C_OPR_ASH 111
|
|
#define ETIR$C_OPR_USH 112
|
|
#define ETIR$C_OPR_ROT 113
|
|
#define ETIR$C_OPR_SEL 114
|
|
#define ETIR$C_OPR_REDEF 115
|
|
#define ETIR$C_OPR_DFLIT 116
|
|
#define ETIR$C_MAXOPRCOD 116
|
|
|
|
#define ETIR$C_MINCTLCOD 150
|
|
#define ETIR$C_CTL_SETRB 150
|
|
#define ETIR$C_CTL_AUGRB 151
|
|
#define ETIR$C_CTL_DFLOC 152
|
|
#define ETIR$C_CTL_STLOC 153
|
|
#define ETIR$C_CTL_STKDL 154
|
|
#define ETIR$C_MAXCTLCOD 154
|
|
|
|
#define ETIR$C_MINSTCCOD 200
|
|
#define ETIR$C_STC_LP 200
|
|
#define ETIR$C_STC_LP_PSB 201
|
|
#define ETIR$C_STC_GBL 202
|
|
#define ETIR$C_STC_GCA 203
|
|
#define ETIR$C_STC_PS 204
|
|
#define ETIR$C_STC_NOP_GBL 205
|
|
#define ETIR$C_STC_NOP_PS 206
|
|
#define ETIR$C_STC_BSR_GBL 207
|
|
#define ETIR$C_STC_BSR_PS 208
|
|
#define ETIR$C_STC_LDA_GBL 209
|
|
#define ETIR$C_STC_LDA_PS 210
|
|
#define ETIR$C_STC_BOH_GBL 211
|
|
#define ETIR$C_STC_BOH_PS 212
|
|
#define ETIR$C_STC_NBH_GBL 213
|
|
#define ETIR$C_STC_NBH_PS 214
|
|
#define ETIR$C_MAXSTCCOD 214
|
|
|
|
#define ETIR$S_ETIRDEF 4
|
|
#define ETIR$W_RECTYP 0
|
|
#define ETIR$W_SIZE 2
|