1 #ifndef TYPES_H_ 2 #define TYPES_H_ 3 4 typedef enum { LIST_ON, LIST_CODE, LIST_OFF, LIST_PREV } listing_mode; 5 typedef enum { WARNING, ERROR } warnerr; 6 7 typedef enum 8 { 9 REC_INVALID = 0, 10 REC_LIST_MODE, 11 REC_ERROR, 12 REC_LIST_LINE, 13 REC_SET_EQU, 14 REC_COMMENT, 15 REC_USER_COMMENT, 16 REC_LOC_SET, 17 REC_RESERVE_RANGE, 18 REC_MARK_RANGE, 19 REC_DATA_BLOCK, 20 REC_FILE_START, 21 REC_FILE_EXIT, 22 REC_CFGVAR_INT, 23 REC_CFGVAR_STR, 24 REC_SRCFILE_OVER, 25 REC_AS1600_CFG, 26 REC_LISTING_COLUMN, 27 REC_OVERWRITE 28 } irec_type; 29 30 typedef enum 31 { 32 ACFG_INVALID = 0, 33 ACFG_LIST_SRC_COLUMN, /* Column to print source code in in listing */ 34 ACFG_LIST_HEX_SOURCE, /* Numb. of hex vals to list next to source */ 35 ACFG_LIST_HEX_PER_LINE, /* Numb. of hex vals to list per line otheriwse */ 36 } as1600_cfg_item; 37 38 typedef struct intermed_rec intermed_rec; 39 40 struct intermed_rec 41 { 42 int line : 24; 43 irec_type type : 8; 44 }; 45 46 typedef struct irec_string 47 { 48 intermed_rec irec; 49 const char *string; 50 } irec_string; 51 52 typedef struct irec_list_mode 53 { 54 intermed_rec irec; 55 listing_mode mode; 56 } irec_list_mode; 57 58 typedef struct irec_set_equ 59 { 60 intermed_rec irec; 61 unsigned int value; 62 } irec_set_equ; 63 64 typedef struct irec_loc_set 65 { 66 intermed_rec irec; 67 int type; 68 int seg; 69 int pag; 70 int loc; 71 const char *mode; 72 } irec_loc_set; 73 74 typedef struct irec_mark_range 75 { 76 intermed_rec irec; 77 const char *mode; 78 int lo; 79 int hi; 80 int pag; 81 } irec_mark_range; 82 83 typedef struct irec_reserve_range 84 { 85 intermed_rec irec; 86 int endaddr; 87 } irec_reserve_range; 88 89 typedef struct irec_cfgvar_int 90 { 91 intermed_rec irec; 92 const char *var; 93 int value; 94 } irec_cfgvar_int; 95 96 typedef struct irec_cfgvar_str 97 { 98 intermed_rec irec; 99 const char *var; 100 const char *value; 101 } irec_cfgvar_str; 102 103 typedef struct irec_srcfile_over 104 { 105 intermed_rec irec; 106 const char *file; 107 int line; 108 } irec_srcfile_over; 109 110 typedef struct irec_as1600_cfg 111 { 112 intermed_rec irec; 113 as1600_cfg_item item; 114 int int_value; 115 } irec_as1600_cfg; 116 117 typedef struct irec_listing_column 118 { 119 intermed_rec irec; 120 int hex_source; 121 int hex_no_src; 122 int source_col; 123 } irec_listing_column; 124 125 typedef struct irec_overwrite 126 { 127 intermed_rec irec; 128 int err_if_overwritten; /* -1 means "no change" */ 129 int force_overwrite; /* -1 means "no change" */ 130 } irec_overwrite; 131 132 typedef union irec_union 133 { 134 intermed_rec irec; 135 irec_string string; 136 irec_set_equ set_equ; 137 irec_list_mode list_mode; 138 irec_loc_set loc_set; 139 irec_mark_range mark_range; 140 irec_reserve_range reserve_range; 141 irec_cfgvar_int cfgvar_int; 142 irec_cfgvar_str cfgvar_str; 143 irec_srcfile_over srcfile_over; 144 irec_as1600_cfg as1600_cfg; 145 irec_listing_column listing_column; 146 irec_overwrite overwrite; 147 } irec_union; 148 149 #endif 150