#include <perms.h>
// Edinburgh IMP77 Compiler - Version 8.4
//
// 1 %begin
int main(int argc, char **argv) { /*%begin*/
_imp_initialise(argc, argv);
// 2 {--------------------------------}
// 3 { }
// 4 { Motorola M6809 Assembler. }
// 5 { }
// 6 { Copyright M.R.King, 26/3/1984. }
// 7 { All rights reserved. }
// 8 { }
// 9 {--------------------------------}
// 10
// 11 %own %string(255) copyright = %c
static _imp_string255 COPYRIGHT =
_imp_str_init("Motorola M6809 Assembler. Copyright M.R.King, 26/3/1984. All rights reserved.");
// 12+ "Motorola M6809 Assembler. Copyright M.R.King, 26/3/1984. All rights reserved."
// 13
// 14 %constant %integer names = 1023,
// 15+ line width = 78,
// 16+ lines on page = 66,
// 17+ max line = 512,
// 18+ insert limit = 10,
// 19+ xentries = 4096
// 20 %constinteger ihash = 59
// 21 %constant %byte %integer %array hilink(0:58) = %c
const unsigned char HILINK[59] = {46, 80, 28, 43, 71, 51, 11, 73, 106, 96, 22, 122, 2, 5, 97,
6, 33, 30, 19, 20, 138, 42, 3, 4, 75, 45, 124, 76, 77, 108,
7, 27, 8, 111, 32, 9, 10, 143, 57, 134, 153, 47, 158, 29, 59,
150, 0, 78, 119, 26, 36, 23, 21, 35, 12, 1, 49, 16, 31};
// 22+ 46, 80, 28, 43, 71, 51, 11, 73, 106, 96, 22, 122,
// 23+ 2, 5, 97, 6, 33, 30, 19, 20, 138, 42, 3, 4,
// 24+ 75, 45, 124, 76, 77, 108, 7, 27, 8, 111, 32, 9,
// 25+ 10, 143, 57, 134, 153, 47, 158, 29, 59, 150, 0, 78,
// 26+ 119, 26, 36, 23, 21, 35, 12, 1, 49, 16, 31
// 27 %constant %byte %integer %array ilink(1:198) = %c
const unsigned char ILINK[198] = {
15, 34, 13, 14, 17, 18, 114, 37, 40, 24, 82, 39, 74, 50, 68, 69, 38, 48, 25, 99, 61, 121,
115, 92, 54, 117, 66, 65, 44, 41, 63, 162, 88, 62, 0, 70, 0, 60, 67, 198, 94, 84, 58, 120,
147, 55, 52, 87, 56, 53, 72, 188, 110, 98, 64, 140, 133, 81, 85, 0, 116, 137, 100, 102, 90, 160,
186, 89, 154, 0, 112, 113, 83, 109, 126, 123, 79, 86, 0, 101, 91, 105, 170, 146, 151, 118, 128, 93,
139, 104, 0, 142, 193, 95, 164, 107, 127, 141, 166, 185, 103, 155, 0, 167, 0, 0, 0, 0, 144, 0,
0, 129, 0, 132, 163, 183, 131, 161, 130, 149, 175, 136, 125, 148, 184, 0, 177, 135, 156, 0, 0, 0,
157, 152, 159, 187, 145, 176, 169, 0, 165, 168, 179, 171, 181, 174, 0, 0, 0, 0, 197, 0, 172, 0,
0, 0, 0, 0, 0, 0, 194, 0, 196, 190, 0, 178, 0, 0, 192, 173, 0, 180, 189, 182, 0, 0,
0, 0, 0, 0, 0, 195, 0, 0, 0, 0, 0, 191, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
// 28+ 15, 34, 13, 14, 17, 18, 114, 37, 40, 24, 82, 39,
// 29+ 74, 50, 68, 69, 38, 48, 25, 99, 61, 121, 115, 92,
// 30+ 54, 117, 66, 65, 44, 41, 63, 162, 88, 62, 0, 70,
// 31+ 0, 60, 67, 198, 94, 84, 58, 120, 147, 55, 52, 87,
// 32+ 56, 53, 72, 188, 110, 98, 64, 140, 133, 81, 85, 0,
// 33+ 116, 137, 100, 102, 90, 160, 186, 89, 154, 0, 112, 113,
// 34+ 83, 109, 126, 123, 79, 86, 0, 101, 91, 105, 170, 146,
// 35+ 151, 118, 128, 93, 139, 104, 0, 142, 193, 95, 164, 107,
// 36+ 127, 141, 166, 185, 103, 155, 0, 167, 0, 0, 0, 0,
// 37+ 144, 0, 0, 129, 0, 132, 163, 183, 131, 161, 130, 149,
// 38+ 175, 136, 125, 148, 184, 0, 177, 135, 156, 0, 0, 0,
// 39+ 157, 152, 159, 187, 145, 176, 169, 0, 165, 168, 179, 171,
// 40+ 181, 174, 0, 0, 0, 0, 197, 0, 172, 0, 0, 0,
// 41+ 0, 0, 0, 0, 194, 0, 196, 190, 0, 178, 0, 0,
// 42+ 192, 173, 0, 180, 189, 182, 0, 0, 0, 0, 0, 0,
// 43+ 0, 195, 0, 0, 0, 0, 0, 191, 0, 0, 0, 0,
// 44+ 0, 0, 0, 0, 0, 0
// 45 %constant %string(5) %array instr(1:198) = %c
const _imp_string5 INSTR[198] = {
_imp_str_init("LD"), _imp_str_init("LDA"), _imp_str_init("LDAA"), _imp_str_init("LDAB"),
_imp_str_init("LDB"), _imp_str_init("LDD"), _imp_str_init("LDS"), _imp_str_init("LDU"),
_imp_str_init("LDX"), _imp_str_init("LDY"), _imp_str_init("ST"), _imp_str_init("STA"),
_imp_str_init("STAA"), _imp_str_init("STAB"), _imp_str_init("STB"), _imp_str_init("STD"),
_imp_str_init("STS"), _imp_str_init("STU"), _imp_str_init("STX"), _imp_str_init("STY"),
_imp_str_init("JSR"), _imp_str_init("BSR"), _imp_str_init("LBSR"), _imp_str_init("BRA"),
_imp_str_init("LBRA"), _imp_str_init("BRN"), _imp_str_init("LBRN"), _imp_str_init("BHI"),
_imp_str_init("LBHI"), _imp_str_init("BLS"), _imp_str_init("LBLS"), _imp_str_init("BCC"),
_imp_str_init("LBCC"), _imp_str_init("BHS"), _imp_str_init("LBHS"), _imp_str_init("BCS"),
_imp_str_init("LBCS"), _imp_str_init("BLO"), _imp_str_init("LBLO"), _imp_str_init("BNE"),
_imp_str_init("LBNE"), _imp_str_init("BEQ"), _imp_str_init("LBEQ"), _imp_str_init("BVC"),
_imp_str_init("LBVC"), _imp_str_init("BVS"), _imp_str_init("LBVS"), _imp_str_init("BPL"),
_imp_str_init("LBPL"), _imp_str_init("BMI"), _imp_str_init("LBMI"), _imp_str_init("BGE"),
_imp_str_init("LBGE"), _imp_str_init("BLT"), _imp_str_init("LBLT"), _imp_str_init("BGT"),
_imp_str_init("LBGT"), _imp_str_init("BLE"), _imp_str_init("LBLE"), _imp_str_init("JMP"),
_imp_str_init("RTS"), _imp_str_init("SUB"), _imp_str_init("SUBA"), _imp_str_init("SUBB"),
_imp_str_init("SUBD"), _imp_str_init("ADD"), _imp_str_init("ADDA"), _imp_str_init("ADDB"),
_imp_str_init("ADDD"), _imp_str_init("CMP"), _imp_str_init("CMPA"), _imp_str_init("CMPB"),
_imp_str_init("CMPD"), _imp_str_init("CMPS"), _imp_str_init("CMPU"), _imp_str_init("CMPX"),
_imp_str_init("CMPY"), _imp_str_init("CPX"), _imp_str_init("LEA"), _imp_str_init("LEAS"),
_imp_str_init("LEAU"), _imp_str_init("LEAX"), _imp_str_init("LEAY"), _imp_str_init("EXG"),
_imp_str_init("TFR"), _imp_str_init("DEC"), _imp_str_init("DECA"), _imp_str_init("DECB"),
_imp_str_init("INC"), _imp_str_init("INCA"), _imp_str_init("INCB"), _imp_str_init("CLR"),
_imp_str_init("CLRA"), _imp_str_init("CLRB"), _imp_str_init("INX"), _imp_str_init("DEX"),
_imp_str_init("AND"), _imp_str_init("ANDA"), _imp_str_init("ANDB"), _imp_str_init("OR"),
_imp_str_init("ORA"), _imp_str_init("ORAA"), _imp_str_init("ORAB"), _imp_str_init("ORB"),
_imp_str_init("EOR"), _imp_str_init("EORA"), _imp_str_init("EORB"), _imp_str_init("BIT"),
_imp_str_init("BITA"), _imp_str_init("BITB"), _imp_str_init("LSR"), _imp_str_init("LSRA"),
_imp_str_init("LSRB"), _imp_str_init("ROR"), _imp_str_init("RORA"), _imp_str_init("RORB"),
_imp_str_init("ASR"), _imp_str_init("ASRA"), _imp_str_init("ASRB"), _imp_str_init("ASL"),
_imp_str_init("ASLA"), _imp_str_init("ASLB"), _imp_str_init("LSL"), _imp_str_init("LSLA"),
_imp_str_init("LSLB"), _imp_str_init("ROL"), _imp_str_init("ROLA"), _imp_str_init("ROLB"),
_imp_str_init("SBC"), _imp_str_init("SBCA"), _imp_str_init("SBCB"), _imp_str_init("ADC"),
_imp_str_init("ADCA"), _imp_str_init("ADCB"), _imp_str_init("NEG"), _imp_str_init("NEGA"),
_imp_str_init("NEGB"), _imp_str_init("COM"), _imp_str_init("COMA"), _imp_str_init("COMB"),
_imp_str_init("TST"), _imp_str_init("TSTA"), _imp_str_init("TSTB"), _imp_str_init("TSX"),
_imp_str_init("INS"), _imp_str_init("PUL"), _imp_str_init("PULA"), _imp_str_init("PULB"),
_imp_str_init("PULS"), _imp_str_init("PULU"), _imp_str_init("PSH"), _imp_str_init("PSHA"),
_imp_str_init("PSHB"), _imp_str_init("PSHS"), _imp_str_init("PSHU"), _imp_str_init("DES"),
_imp_str_init("TXS"), _imp_str_init("RTI"), _imp_str_init("WAI"), _imp_str_init("CWAI"),
_imp_str_init("ANDCC"), _imp_str_init("ORCC"), _imp_str_init("SWI"), _imp_str_init("SWI1"),
_imp_str_init("SWI2"), _imp_str_init("SWI3"), _imp_str_init("SBA"), _imp_str_init("CBA"),
_imp_str_init("ABA"), _imp_str_init("TAB"), _imp_str_init("TBA"), _imp_str_init("DAA"),
_imp_str_init("NOP"), _imp_str_init("TAP"), _imp_str_init("TPA"), _imp_str_init("MUL"),
_imp_str_init("SEX"), _imp_str_init("ABX"), _imp_str_init("SYNC"), _imp_str_init("CLV"),
_imp_str_init("SEV"), _imp_str_init("CLC"), _imp_str_init("SEC"), _imp_str_init("CLI"),
_imp_str_init("SEI"), _imp_str_init("FCB"), _imp_str_init("FDB"), _imp_str_init("EQU"),
_imp_str_init("ORG"), _imp_str_init("SETDP"), _imp_str_init("RMB"), _imp_str_init("FCC"),
_imp_str_init("NAM"), _imp_str_init("OPT"), _imp_str_init("PAGE"), _imp_str_init("SPC"),
_imp_str_init("MON"), _imp_str_init("END")};
// 46+ "LD","LDA","LDAA","LDAB","LDB","LDD","LDS","LDU","LDX",
// 47+ "LDY","ST","STA","STAA","STAB","STB","STD","STS","STU",
// 48+ "STX","STY","JSR","BSR","LBSR","BRA","LBRA","BRN","LBRN",
// 49+ "BHI","LBHI","BLS","LBLS","BCC","LBCC","BHS","LBHS","BCS",
// 50+ "LBCS","BLO","LBLO","BNE","LBNE","BEQ","LBEQ","BVC","LBVC",
// 51+ "BVS","LBVS","BPL","LBPL","BMI","LBMI","BGE","LBGE","BLT",
// 52+ "LBLT","BGT","LBGT","BLE","LBLE","JMP","RTS","SUB","SUBA",
// 53+ "SUBB","SUBD","ADD","ADDA","ADDB","ADDD","CMP","CMPA","CMPB",
// 54+ "CMPD","CMPS","CMPU","CMPX","CMPY","CPX","LEA","LEAS","LEAU",
// 55+ "LEAX","LEAY","EXG","TFR","DEC","DECA","DECB","INC","INCA",
// 56+ "INCB","CLR","CLRA","CLRB","INX","DEX","AND","ANDA","ANDB",
// 57+ "OR","ORA","ORAA","ORAB","ORB","EOR","EORA","EORB","BIT",
// 58+ "BITA","BITB","LSR","LSRA","LSRB","ROR","RORA","RORB","ASR",
// 59+ "ASRA","ASRB","ASL","ASLA","ASLB","LSL","LSLA","LSLB","ROL",
// 60+ "ROLA","ROLB","SBC","SBCA","SBCB","ADC","ADCA","ADCB","NEG",
// 61+ "NEGA","NEGB","COM","COMA","COMB","TST","TSTA","TSTB","TSX",
// 62+ "INS","PUL","PULA","PULB","PULS","PULU","PSH","PSHA","PSHB",
// 63+ "PSHS","PSHU","DES","TXS","RTI","WAI","CWAI","ANDCC","ORCC",
// 64+ "SWI","SWI1","SWI2","SWI3","SBA","CBA","ABA","TAB","TBA",
// 65+ "DAA","NOP","TAP","TPA","MUL","SEX","ABX","SYNC","CLV",
// 66+ "SEV","CLC","SEC","CLI","SEI","FCB","FDB","EQU","ORG",
// 67+ "SETDP","RMB","FCC","NAM","OPT","PAGE","SPC","MON","END"
// 68
// 69 %constant %integer %array icode(1:198) = %c
const int ICODE[198] = {
134, 134, 134, 198, 198, 204, 4302, 206, 142, 4238, 135, 135, 135, 199, 199, 205, 4303, 207,
143, 4239, 141, 141, 141, 32, 32, 8448, 4129, 34, 34, 35, 35, 36, 36, 36, 36, 37,
37, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 44, 44, 45,
45, 46, 46, 47, 47, 14, 57, 128, 128, 192, 131, 139, 139, 203, 195, 129, 129, 193,
4227, 4492, 4483, 140, 4236, 140, 48, 50, 51, 48, 49, 30, 31, 10, 74, 90, 12, 76,
92, 15, 79, 95, 12289, 12319, 132, 132, 196, 138, 138, 138, 202, 202, 136, 136, 200, 133,
133, 197, 4, 68, 84, 6, 70, 86, 7, 71, 87, 8, 72, 88, 8, 72, 88, 9,
73, 89, 130, 130, 194, 137, 137, 201, 0, 64, 80, 3, 67, 83, 13, 77, 93, 8001,
12897, 53, 13570, 13572, 53, 55, 52, 13314, 13316, 52, 54, 12927, 7956, 59, 15615, 60, 28, 26,
63, 63, 4159, 4415, 41184, 41440, 44000, 35165, 38989, 25, 18, 8074, 8104, 61, 29, 58, 19, 7421,
6658, 7422, 6657, 7407, 6672, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
// 70+ 16_86,16_86,16_86,16_C6,16_C6,16_CC,16_10CE,16_CE,16_8E,
// 71+ 16_108E,16_87,16_87,16_87,16_C7,16_C7,16_CD,16_10CF,16_CF,
// 72+ 16_8F,16_108F,16_8D,16_8D,16_8D,16_20,16_20,16_2100,16_1021,
// 73+ 16_22,16_22,16_23,16_23,16_24,16_24,16_24,16_24,16_25,
// 74+ 16_25,16_25,16_25,16_26,16_26,16_27,16_27,16_28,16_28,
// 75+ 16_29,16_29,16_2A,16_2A,16_2B,16_2B,16_2C,16_2C,16_2D,
// 76+ 16_2D,16_2E,16_2E,16_2F,16_2F,16_0E,16_39,16_80,16_80,
// 77+ 16_C0,16_83,16_8B,16_8B,16_CB,16_C3,16_81,16_81,16_C1,
// 78+ 16_1083,16_118C,16_1183,16_8C,16_108C,16_8C,16_30,16_32,16_33,
// 79+ 16_30,16_31,16_1E,16_1F,16_0A,16_4A,16_5A,16_0C,16_4C,
// 80+ 16_5C,16_0F,16_4F,16_5F,16_3001,16_301F,16_84,16_84,16_C4,
// 81+ 16_8A,16_8A,16_8A,16_CA,16_CA,16_88,16_88,16_C8,16_85,
// 82+ 16_85,16_C5,16_04,16_44,16_54,16_06,16_46,16_56,16_07,
// 83+ 16_47,16_57,16_08,16_48,16_58,16_08,16_48,16_58,16_09,
// 84+ 16_49,16_59,16_82,16_82,16_C2,16_89,16_89,16_C9,16_00,
// 85+ 16_40,16_50,16_03,16_43,16_53,16_0D,16_4D,16_5D,16_1F41,
// 86+ 16_3261,16_35,16_3502,16_3504,16_35,16_37,16_34,16_3402,16_3404,
// 87+ 16_34,16_36,16_327F,16_1F14,16_3B,16_3CFF,16_3C,16_1C,16_1A,
// 88+ 16_3F,16_3F,16_103F,16_113F,16_A0E0,16_A1E0,16_ABE0,16_895D,16_984D,
// 89+ 16_19,16_12,16_1F8A,16_1FA8,16_3D,16_1D,16_3A,16_13,16_1CFD,
// 90+ 16_1A02,16_1CFE,16_1A01,16_1CEF,16_1A10,16_00,16_00,16_00,16_00,
// 91+ 16_00,16_00,16_00,16_00,16_00,16_00,16_00,16_00,16_00
// 92 %constant %byte %integer %array itype(1:198) = %c
const unsigned char ITYPE[198] = {
6, 4, 12, 12, 12, 9, 9, 9, 9, 9, 10, 5, 13, 13, 13, 13, 13, 13, 13, 13, 13, 3, 3, 3, 3, 2, 24, 3, 3,
3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
3, 14, 1, 8, 12, 12, 9, 8, 12, 12, 9, 7, 12, 12, 9, 9, 9, 9, 9, 9, 16, 17, 17, 17, 17, 18, 18, 15, 1,
1, 15, 1, 1, 15, 1, 1, 2, 2, 11, 12, 12, 11, 4, 12, 12, 12, 11, 12, 12, 11, 12, 12, 15, 1, 1, 15, 1, 1,
15, 1, 1, 15, 1, 1, 15, 1, 1, 15, 1, 1, 11, 12, 12, 11, 12, 12, 15, 1, 1, 15, 1, 1, 15, 1, 1, 2, 2,
19, 2, 2, 20, 20, 19, 2, 2, 20, 20, 2, 2, 1, 2, 21, 21, 21, 23, 1, 1, 1, 25, 25, 25, 22, 22, 1, 1, 2,
2, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 37};
// 93+ 6, 4, 12, 12, 12, 9, 9, 9, 9, 9, 10, 5, 13, 13, 13,
// 94+ 13, 13, 13, 13, 13, 13, 3, 3, 3, 3, 2, 24, 3, 3, 3,
// 95+ 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
// 96+ 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 14,
// 97+ 1, 8, 12, 12, 9, 8, 12, 12, 9, 7, 12, 12, 9, 9, 9,
// 98+ 9, 9, 9, 16, 17, 17, 17, 17, 18, 18, 15, 1, 1, 15, 1,
// 99+ 1, 15, 1, 1, 2, 2, 11, 12, 12, 11, 4, 12, 12, 12, 11,
// 100+ 12, 12, 11, 12, 12, 15, 1, 1, 15, 1, 1, 15, 1, 1, 15,
// 101+ 1, 1, 15, 1, 1, 15, 1, 1, 11, 12, 12, 11, 12, 12, 15,
// 102+ 1, 1, 15, 1, 1, 15, 1, 1, 2, 2, 19, 2, 2, 20, 20,
// 103+ 19, 2, 2, 20, 20, 2, 2, 1, 2, 21, 21, 21, 23, 1, 1,
// 104+ 1, 25, 25, 25, 22, 22, 1, 1, 2, 2, 1, 1, 1, 1, 2,
// 105+ 2, 2, 2, 2, 2, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35,
// 106+ 36, 37, 37
// 107 %constant %integer %array icycles(1:198) = %c
const int ICYCLES[198] = {
2, 2, 2, 2, 2, 3, 4, 3, 3, 4, 2, 2, 2, 2, 2, 3, 4, 3, 3, 4, 5, 7, 7, 3, 3, 3, 5, 3, 3, 3, 3, 3, 3,
3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 1, 5, 2, 2, 2, 4, 2,
2, 2, 4, 2, 2, 2, 5, 5, 5, 4, 5, 4, 2, 2, 2, 2, 2, 8, 7, 2, 2, 2, 2, 2, 2, 2, 2, 2, 5, 5, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 6, 5, 5, 6, 6, 5, 5, 5, 6, 6, 5, 5, 5, 6, 15, 21, 21, 3, 3, 19, 19, 20,
20, 11, 11, 11, 8, 8, 2, 2, 6, 6, 11, 2, 3, 2, 3, 3, 3, 3, 3, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
// 108+ 2, 2, 2, 2, 2, 3, 4, 3, 3, 4, 2, 2, 2, 2, 2,
// 109+ 3, 4, 3, 3, 4, 5, 7, 7, 3, 3, 3, 5, 3, 3, 3,
// 110+ 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
// 111+ 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 1,
// 112+ 5, 2, 2, 2, 4, 2, 2, 2, 4, 2, 2, 2, 5, 5, 5,
// 113+ 4, 5, 4, 2, 2, 2, 2, 2, 8, 7, 2, 2, 2, 2, 2,
// 114+ 2, 2, 2, 2, 5, 5, 2, 2, 2, 2, 2, 2, 2, 2, 2,
// 115+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
// 116+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
// 117+ 2, 2, 2, 2, 2, 2, 2, 2, 6, 5, 5, 6, 6, 5, 5,
// 118+ 5, 6, 6, 5, 5, 5, 6, 15, 21, 21, 3, 3, 19, 19, 20,
// 119+ 20, 11, 11, 11, 8, 8, 2, 2, 6, 6, 11, 2, 3, 2, 3,
// 120+ 3, 3, 3, 3, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
// 121+ 0, 0, 0
// 122 %constant %integer no options = 51
// 123 %constant %string(10) %array option text(1:no options) = %c
const _imp_string10 OPTIONTEXT[51] = {
_imp_str_init("BLANK"), _imp_str_init("B"), _imp_str_init("NOBLANK"), _imp_str_init("NOB"),
_imp_str_init("CYCLE"), _imp_str_init("C"), _imp_str_init("NOCYCLE"), _imp_str_init("NOC"),
_imp_str_init("DB8"), _imp_str_init("DB10"), _imp_str_init("DB16"), _imp_str_init("ERROR"),
_imp_str_init("E"), _imp_str_init("SERROR"), _imp_str_init("SER"), _imp_str_init("NOERROR"),
_imp_str_init("NOE"), _imp_str_init("FULL"), _imp_str_init("F"), _imp_str_init("NOFULL"),
_imp_str_init("NOF"), _imp_str_init("GENERATE"), _imp_str_init("G"), _imp_str_init("NOGENERATE"),
_imp_str_init("NOG"), _imp_str_init("LIST"), _imp_str_init("L"), _imp_str_init("SLIST"),
_imp_str_init("SLIS"), _imp_str_init("NOLIST"), _imp_str_init("NOL"), _imp_str_init("PAGE"),
_imp_str_init("P"), _imp_str_init("NOPAGE"), _imp_str_init("NOP"), _imp_str_init("SYMBOL"),
_imp_str_init("S"), _imp_str_init("NOSYMBOL"), _imp_str_init("NOS"), _imp_str_init("TAB"),
_imp_str_init("T"), _imp_str_init("NOTAB"), _imp_str_init("NOT"), _imp_str_init("WRAP"),
_imp_str_init("W"), _imp_str_init("NOWRAP"), _imp_str_init("NOW"), _imp_str_init("XREF"),
_imp_str_init("X"), _imp_str_init("NOXREF"), _imp_str_init("NOX")};
auto _imp_string255 LC(_imp_string255 SOURCE);
auto int MATCHES(_imp_string255 SOURCE, _imp_string255 PATTERN, int MIN, int *I);
auto int ISTYPED(_imp_string255 SOURCE, _imp_string255 * FILE);
auto void READLINE(void);
auto void NEXTCHAR(void);
auto void SKIPBLANKS(void);
auto int MOREITEMS(void);
auto int GETNAME(int *NID);
auto int GETOPTION(int *OPT);
auto int GETINSTR(int *IID);
auto int GETOPD(int *OPD);
auto int GETTERM(int *OPD);
auto int GETEXPRESSION(int *OPD);
auto void EVALUATE(int *A, int B, unsigned char OP);
auto int GETCONST(int *CVAL);
auto void ANALISEOPERAND(int ECA, int *POST, int *OPD, int *TYPE, int *CYCLES);
auto void OUTSYMBOL(unsigned char CHAR);
auto void OUTTAG(int *I, int *J, int COL);
auto void INSTROUT(int OP, int POST, int OPD, int B, int CYC);
auto void CLOSE(void);
auto void FAULT(_imp_string63 S);
auto void NLINE(int N);
auto void PRINTNUMBER(int N, int D);
auto int ACCUMULATOR(void);
auto int ACC(unsigned char ACCID);
auto int AUTOINDEXED(int *POST, int *CYCLES);
auto int CC(void);
auto int DP(void);
auto int PC(void);
auto int PCRELATIVE(void);
auto int INDEXREG(int *REG);
auto int TRANSFERREG(int *REG);
auto void SQS(int L, int R);
// 124+ "BLANK", "B", "NOBLANK", "NOB", "CYCLE", "C", "NOCYCLE", "NOC",
// 125+ "DB8", "DB10", "DB16", "ERROR", "E", "SERROR", "SER", "NOERROR",
// 126+ "NOE", "FULL", "F", "NOFULL", "NOF", "GENERATE", "G", "NOGENERATE",
// 127+ "NOG", "LIST", "L", "SLIST", "SLIS", "NOLIST", "NOL", "PAGE", "P",
// 128+ "NOPAGE", "NOP", "SYMBOL", "S", "NOSYMBOL", "NOS", "TAB", "T",
// 129+ "NOTAB", "NOT", "WRAP", "W", "NOWRAP", "NOW", "XREF", "X", "NOXREF",
// 130+ "NOX"
// 131 %string(255) %function %spec lc(%string(255) source)
// 132 %predicate %spec matches(%string(255) source, pattern,
// 133+ %integer min, %integer %name i)
// 134 %predicate %spec is typed(%string(255) source, %string(255) %name file)
// 135 %routine %spec read line
// 136 %routine %spec next char
// 137 %routine %spec skip blanks
// 138 %predicate %spec more items
// 139 %integerfn %spec get name(%integername nid)
// 140 %predicate %spec get option(%integer %name opt)
// 141 %predicate %spec get instr(%integername id)
// 142 %integerfn %spec get opd(%integername opd)
// 143 %integer %function %spec get term(%integer %name opd)
// 144 %integer %function %spec get expression(%integer %name opd)
// 145 %routine %spec evaluate(%integer %name a, %integer b, %byte %integer op)
// 146 %integerfn %spec get const(%integername cval)
// 147 %routine %spec analise operand(%integer eca,
// 148+ %integer %name post, opd, type, cycles)
// 149 %routine %spec out symbol(%byte %integer char)
// 150 %routine %spec out tag(%integer %name i, j, %integer col)
// 151 %routine %spec instr out(%integer op, post,opd,b, cyc)
// 152 %routine %spec close
// 153 %routine %spec fault(%string(63) s)
// 154 %routine %spec nline(%integer n)
// 155 %routine %spec print number(%integer n,d)
// 156 %predicate %spec accumulator
// 157 %predicate %spec acc(%byte %integer acc id)
// 158 %predicate %spec auto indexed(%integer %name post, cycles)
// 159 %predicate %spec cc
// 160 %predicate %spec dp
// 161 %predicate %spec pc
// 162 %predicate %spec pc relative
// 163 %predicate %spec index reg(%integer %name reg)
// 164 %predicate %spec transfer reg(%integer %name reg)
// 165 %routine %spec sqs(%integer l, r)
// 166 %byte %integer %array buffer(1:16)
unsigned char BUFFER[16];
// 167 %byteinteger %array line(1:max line+1)
unsigned char LINE[512 + 1 - 1 + 1];
// 168 %integer ca, pass, faults, lp, opd, iid, lid, ln, nnames, i, j, k, opt,
int CA;
int PASS;
int FAULTS;
int LP;
int OPD;
int IID;
int LID;
int LN;
int NNAMES;
int I;
int J;
int K;
int OPT;
int ORDER;
int CONSISTENT;
int LASTCONSISTENT;
int HEADSET;
int PRESCHAR;
int DELIM;
int DRAD;
int BCHAR;
int PFLAG;
int SFLAG;
int GFLAG;
int EFLAG;
int LFLAG;
int CFLAG;
int WFLAG;
int TFLAG;
int XFLAG;
int CONT;
int SP1;
int SP2;
int SP3;
int OLDCA;
int MCYCLES;
int NONDENSE;
int ACCOP;
int BUFFERCA;
int BP;
int L;
int XXENTRIES;
int POST;
int TYPE;
int ACCFAULT;
int DPCONTENTS;
int FFLAG;
int OSTARTED;
int ECA;
int LOOKAHEAD;
int DIFF;
int NOLONGS;
int LASTNOLONGS;
// 169+ order, consistent, last consistent, headset, pres char, delim, drad,
// 170+ bchar, pflag, sflag, gflag, eflag, lflag, cflag, wflag, tflag, xflag,
// 171+ cont, sp1, sp2, sp3, old ca, mcycles, non dense, accop, buffer ca, bp,
// 172+ l, xxentries, post, type, acc fault, dp contents, fflag, ostarted,
// 173+ eca, look ahead, diff, no longs, last no longs
// 174 %constant %integer nhash=67
// 175 %integer %array hnlink(0:nhash-1)
int HNLINK[67 - 1 + 1];
// 176 %string(6)%array name(1:names)
_imp_string6 NAME[1023];
// 177 %integer %array nval, xhead, ndiff, nlink(1:names)
int NVAL[1023];
int XHEAD[1023];
int NDIFF[1023];
int NLINK[1023];
// 178 %byteinteger%array nass(1:names)
unsigned char NASS[1023];
// 179 %integer %array xentry, xlink(1:xentries)
int XENTRY[4096];
int XLINK[4096];
// 180 %switch option action(-1:no options)
int OPTIONACTION_index;
int OPTIONACTION_line;
char *OPTIONACTION_file;
static const void *OPTIONACTION[53] = {
&&case_OPTIONACTION_M1, &&case_OPTIONACTION_0, &&case_OPTIONACTION_1, &&case_OPTIONACTION_2,
&&case_OPTIONACTION_3, &&case_OPTIONACTION_4, &&case_OPTIONACTION_5, &&case_OPTIONACTION_6,
&&case_OPTIONACTION_7, &&case_OPTIONACTION_8, &&case_OPTIONACTION_9, &&case_OPTIONACTION_10,
&&case_OPTIONACTION_11, &&case_OPTIONACTION_12, &&case_OPTIONACTION_13, &&case_OPTIONACTION_14,
&&case_OPTIONACTION_15, &&case_OPTIONACTION_16, &&case_OPTIONACTION_17, &&case_OPTIONACTION_18,
&&case_OPTIONACTION_19, &&case_OPTIONACTION_20, &&case_OPTIONACTION_21, &&case_OPTIONACTION_22,
&&case_OPTIONACTION_23, &&case_OPTIONACTION_24, &&case_OPTIONACTION_25, &&case_OPTIONACTION_26,
&&case_OPTIONACTION_27, &&case_OPTIONACTION_28, &&case_OPTIONACTION_29, &&case_OPTIONACTION_30,
&&case_OPTIONACTION_31, &&case_OPTIONACTION_32, &&case_OPTIONACTION_33, &&case_OPTIONACTION_34,
&&case_OPTIONACTION_35, &&case_OPTIONACTION_36, &&case_OPTIONACTION_37, &&case_OPTIONACTION_38,
&&case_OPTIONACTION_39, &&case_OPTIONACTION_40, &&case_OPTIONACTION_41, &&case_OPTIONACTION_42,
&&case_OPTIONACTION_43, &&case_OPTIONACTION_44, &&case_OPTIONACTION_45, &&case_OPTIONACTION_46,
&&case_OPTIONACTION_47, &&case_OPTIONACTION_48, &&case_OPTIONACTION_49, &&case_OPTIONACTION_50,
&&case_OPTIONACTION_51};
// 181 %switch itype1,itype3(1:37)
int ITYPE1_index;
int ITYPE1_line;
char *ITYPE1_file;
static const void *ITYPE1[37] = {
&&case_ITYPE1_1, &&case_ITYPE1_2, &&case_ITYPE1_3, &&case_ITYPE1_4, &&case_ITYPE1_5, &&case_ITYPE1_6,
&&case_ITYPE1_7, &&case_ITYPE1_8, &&case_ITYPE1_9, &&case_ITYPE1_10, &&case_ITYPE1_11, &&case_ITYPE1_12,
&&case_ITYPE1_13, &&case_ITYPE1_14, &&case_ITYPE1_15, &&case_ITYPE1_16, &&case_ITYPE1_17, &&case_ITYPE1_18,
&&case_ITYPE1_19, &&case_ITYPE1_20, &&case_ITYPE1_21, &&case_ITYPE1_22, &&case_ITYPE1_23, &&case_ITYPE1_24,
&&case_ITYPE1_25, &&case_ITYPE1_26, &&case_ITYPE1_27, &&case_ITYPE1_28, &&case_ITYPE1_29, &&case_ITYPE1_30,
&&case_ITYPE1_31, &&case_ITYPE1_32, &&case_ITYPE1_33, &&case_ITYPE1_34, &&case_ITYPE1_35, &&case_ITYPE1_36,
&&case_ITYPE1_37};
int ITYPE3_index;
int ITYPE3_line;
char *ITYPE3_file;
static const void *ITYPE3[37] = {
&&case_ITYPE3_1, &&case_ITYPE3_2, &&case_ITYPE3_3, &&case_ITYPE3_4, &&case_ITYPE3_5, &&case_ITYPE3_6,
&&case_ITYPE3_7, &&case_ITYPE3_8, &&case_ITYPE3_9, &&case_ITYPE3_10, &&case_ITYPE3_11, &&case_ITYPE3_12,
&&case_ITYPE3_13, &&case_ITYPE3_14, &&case_ITYPE3_15, &&case_ITYPE3_16, &&case_ITYPE3_17, &&case_ITYPE3_18,
&&case_ITYPE3_19, &&case_ITYPE3_20, &&case_ITYPE3_21, &&case_ITYPE3_22, &&case_ITYPE3_23, &&case_ITYPE3_24,
&&case_ITYPE3_25, &&case_ITYPE3_26, &&case_ITYPE3_27, &&case_ITYPE3_28, &&case_ITYPE3_29, &&case_ITYPE3_30,
&&case_ITYPE3_31, &&case_ITYPE3_32, &&case_ITYPE3_33, &&case_ITYPE3_34, &&case_ITYPE3_35, &&case_ITYPE3_36,
&&case_ITYPE3_37};
// 182 %string(line width-37) header
_imp_string41 HEADER;
// 183 %string(*) %name file
_imp_string *FILE;
// 184 %string(255) params, source, list, object, dummy
_imp_string255 PARAMS;
_imp_string255 SOURCE;
_imp_string255 LIST;
_imp_string255 OBJECT;
_imp_string255 DUMMY;
// 185
// 186 %on %event 9 %start
if (!_imp_on_event(9)) goto L_0001;
// 187 select output(0)
_imp_SELECTOUTPUT(0);
// 188 print string(event_message{source." does not exist."})
_imp_PRINTSTRING(
*({
__typeof__(_imp_string255) tmp = _imp_EVENT().MESSAGE /*q*/;
(_imp_string255 *)&tmp;
})
);
// 189 new line
_imp_NEWLINE();
// 190 %stop
_imp_stop(0);
// 191 %finish
L_0001:;
// 192
// 193 ! params = ""
// 194 ! select input(0)
// 195 ! read symbol(i)
// 196 ! params = params.to string(i) %and read symbol(i) %while i#nl
// 197 ! params = lc(params)
// 198 params = lc(cliparam)
_imp_strncpy(/*?*/ &PARAMS, ({
__typeof__(_imp_string255) tmp; /*B*/
tmp = LC(*({
__typeof__(_imp_string255) tmp = _imp_CLIPARAM() /*q*/;
(_imp_string255 *)&tmp;
}));
(void *)&tmp;
}),
/*max:*/ 255);
// 199 source = ""
_imp_strncpy(/*?*/ &SOURCE, ({
__typeof__(_imp_string255) tmp; /*B*/
tmp = _imp_str_literal("");
(void *)&tmp;
}),
/*max:*/ 255);
// 200 list = ".n"
_imp_strncpy(/*?*/ &LIST, ({
__typeof__(_imp_string255) tmp; /*B*/
tmp = _imp_str_literal(".n");
(void *)&tmp;
}),
/*max:*/ 255);
// 201 object = ""
_imp_strncpy(/*?*/ &OBJECT, ({
__typeof__(_imp_string255) tmp; /*B*/
tmp = _imp_str_literal("");
(void *)&tmp;
}),
/*max:*/ 255);
// 202 dummy = ""
_imp_strncpy(/*?*/ &DUMMY, ({
__typeof__(_imp_string255) tmp; /*B*/
tmp = _imp_str_literal("");
(void *)&tmp;
}),
/*max:*/ 255);
// 203 %cycle
L_0002:;
// 204 i = 1
I = 1;
// 205 i = i+1 %while i<=length(params) %and charno(params, i)=' '
L_0003:;
if (I > *_imp_LENGTH((_imp_string255 *)/*p*/ /*?*/ &PARAMS)) goto L_0004;
if (*_imp_CHARNO((_imp_string255 *)/*p*/ /*?*/ &PARAMS, I) != 32) goto L_0004;
I = I + 1;
goto L_0003;
L_0004:;
// 206 %exit %if i>length(params)
if (I <= *_imp_LENGTH((_imp_string255 *)/*p*/ /*?*/ &PARAMS)) goto L_0005;
goto L_0006;
L_0005:;
// 207 params = substring(params, i, length(params))
_imp_strncpy(/*?*/ &PARAMS, ({
__typeof__(_imp_string255) tmp; /*B*/
tmp = _imp_SUBSTRING((_imp_string255 *)/*p*/ /*?*/ &PARAMS, I,
*_imp_LENGTH((_imp_string255 *)/*p*/ /*?*/ &PARAMS));
(void *)&tmp;
}),
/*max:*/ 255);
// 208 %if charno(params, 1)='/' %start
if (*_imp_CHARNO((_imp_string255 *)/*p*/ /*?*/ &PARAMS, 1) != 47) goto L_0007;
// 209 params = substring(params, 2, length(params))
_imp_strncpy(/*?*/ &PARAMS, ({
__typeof__(_imp_string255) tmp; /*B*/
tmp = _imp_SUBSTRING((_imp_string255 *)/*p*/ /*?*/ &PARAMS, 2,
*_imp_LENGTH((_imp_string255 *)/*p*/ /*?*/ &PARAMS));
(void *)&tmp;
}),
/*max:*/ 255);
// 210 %if matches(params, "list", 1, i) %start
if (!(MATCHES(
*({
__typeof__(_imp_string255) tmp = PARAMS /*q*/;
(_imp_string255 *)&tmp;
})
,
_imp_str_literal("list"), 1, /*?*/ &I)))
goto L_0008;
// 211 list = ""
_imp_strncpy(/*?*/ &LIST, ({
__typeof__(_imp_string255) tmp; /*B*/
tmp = _imp_str_literal("");
(void *)&tmp;
}),
/*max:*/ 255);
// 212 file == list
FILE = (_imp_string *)/*?*/ &LIST;
// 213 %finish %else %if matches(params, "object", 1, i) %start
goto L_0009;
L_0008:;
if (!(MATCHES(
*({
__typeof__(_imp_string255) tmp = PARAMS /*q*/;
(_imp_string255 *)&tmp;
})
,
_imp_str_literal("object"), 1, /*?*/ &I)))
goto L_000A;
// 214 object = ""
_imp_strncpy(/*?*/ &OBJECT, ({
__typeof__(_imp_string255) tmp; /*B*/
tmp = _imp_str_literal("");
(void *)&tmp;
}),
/*max:*/ 255);
// 215 file == object
FILE = (_imp_string *)/*?*/ &OBJECT;
// 216 %finish %else %if matches(params, "nolist", 3, i) %start
goto L_0009;
L_000A:;
if (!(MATCHES(
*({
__typeof__(_imp_string255) tmp = PARAMS /*q*/;
(_imp_string255 *)&tmp;
})
,
_imp_str_literal("nolist"), 3, /*?*/ &I)))
goto L_000B;
// 217 list = ".n"
_imp_strncpy(/*?*/ &LIST, ({
__typeof__(_imp_string255) tmp; /*B*/
tmp = _imp_str_literal(".n");
(void *)&tmp;
}),
/*max:*/ 255);
// 218 file == dummy
FILE = (_imp_string *)/*?*/ &DUMMY;
// 219 %finish %else %if matches(params, "noobject", 3, i) %start
goto L_0009;
L_000B:;
if (!(MATCHES(
*({
__typeof__(_imp_string255) tmp = PARAMS /*q*/;
(_imp_string255 *)&tmp;
})
,
_imp_str_literal("noobject"), 3, /*?*/ &I)))
goto L_000C;
// 220 object = ".n"
_imp_strncpy(/*?*/ &OBJECT, ({
__typeof__(_imp_string255) tmp; /*B*/
tmp = _imp_str_literal(".n");
(void *)&tmp;
}),
/*max:*/ 255);
// 221 file == dummy
FILE = (_imp_string *)/*?*/ &DUMMY;
// 222 %else
goto L_0009;
L_000C:;
// 223 i = 1
I = 1;
// 224 file == dummy
FILE = (_imp_string *)/*?*/ &DUMMY;
// 225 %finish
L_0009:;
// 226 %exit %if i>length(params)
if (I <= *_imp_LENGTH((_imp_string255 *)/*p*/ /*?*/ &PARAMS)) goto L_000D;
goto L_0006;
L_000D:;
// 227 params = substring(params, i, length(params))
_imp_strncpy(/*?*/ &PARAMS, ({
__typeof__(_imp_string255) tmp; /*B*/
tmp = _imp_SUBSTRING((_imp_string255 *)/*p*/ /*?*/ &PARAMS, I,
*_imp_LENGTH((_imp_string255 *)/*p*/ /*?*/ &PARAMS));
(void *)&tmp;
}),
/*max:*/ 255);
// 228 %continue %unless charno(params, 1)='='
if (*_imp_CHARNO((_imp_string255 *)/*p*/ /*?*/ &PARAMS, 1) == 61) goto L_000E;
goto L_000F;
L_000E:;
// 229 %if length(params)>1 %start
if (*_imp_LENGTH((_imp_string255 *)/*p*/ /*?*/ &PARAMS) <= 1) goto L_0010;
// 230 params = substring(params, 2, length(params))
_imp_strncpy(/*?*/ &PARAMS, ({
__typeof__(_imp_string255) tmp; /*B*/
tmp = _imp_SUBSTRING((_imp_string255 *)/*p*/ /*?*/ &PARAMS, 2,
*_imp_LENGTH((_imp_string255 *)/*p*/ /*?*/ &PARAMS));
(void *)&tmp;
}),
/*max:*/ 255);
// 231 %else
goto L_0011;
L_0010:;
// 232 params = ""
_imp_strncpy(/*?*/ &PARAMS, ({
__typeof__(_imp_string255) tmp; /*B*/
tmp = _imp_str_literal("");
(void *)&tmp;
}),
/*max:*/ 255);
// 233 %finish
L_0011:;
// 234 %else
goto L_0012;
L_0007:;
// 235 file == source
FILE = (_imp_string *)/*?*/ &SOURCE;
// 236 %finish
L_0012:;
// 237 i = 1
I = 1;
// 238 i = i+1 %while i<=length(params) %and charno(params, i)#' ' %and %c
L_0013:;
if (I > *_imp_LENGTH((_imp_string255 *)/*p*/ /*?*/ &PARAMS)) goto L_0014;
if (*_imp_CHARNO((_imp_string255 *)/*p*/ /*?*/ &PARAMS, I) == 32) goto L_0014;
if (*_imp_CHARNO((_imp_string255 *)/*p*/ /*?*/ &PARAMS, I) == 47) goto L_0014;
I = I + 1;
goto L_0013;
L_0014:;
// 239+ charno(params, i)#'/'
// 240 file = substring(params, 1, i-1) %if i>1
if (I <= 1) goto L_0015;
*FILE = _imp_SUBSTRING((_imp_string255 *)/*p*/ /*?*/ &PARAMS, 1, I - 1);
L_0015:;
// 241 %exit %if i>length(params)
if (I <= *_imp_LENGTH((_imp_string255 *)/*p*/ /*?*/ &PARAMS)) goto L_0016;
goto L_0006;
L_0016:;
// 242 params = substring(params, i, length(params))
_imp_strncpy(/*?*/ &PARAMS, ({
__typeof__(_imp_string255) tmp; /*B*/
tmp = _imp_SUBSTRING((_imp_string255 *)/*p*/ /*?*/ &PARAMS, I,
*_imp_LENGTH((_imp_string255 *)/*p*/ /*?*/ &PARAMS));
(void *)&tmp;
}),
/*max:*/ 255);
// 243 %repeat
L_000F:;
goto L_0002;
L_0006:;
// 244
// 245 %if source="" %start
if (_imp_strcmp((_imp_string *)/*?*/ &SOURCE, (_imp_string *)/*?*/ _imp_str_literal_ptr("")) != 0) goto L_0017;
// 246 select output(0)
_imp_SELECTOUTPUT(0);
// 247 print string("No source file specified.")
_imp_PRINTSTRING(_imp_str_literal("No source file specified."));
// 248 new line
_imp_NEWLINE();
// 249 %stop
_imp_stop(0);
// 250 %finish
L_0017:;
// 251
// 252 source = source.".asm" %unless is typed(source, params)
if (ISTYPED(
*({
__typeof__(_imp_string255) tmp = SOURCE /*q*/;
(_imp_string255 *)&tmp;
})
,
(_imp_string255 *)/*p*/ /*?*/ &PARAMS))
goto L_0018;
_imp_strncpy(/*?*/ &SOURCE, ({
__typeof__(_imp_string255) tmp; /*B*/
tmp = *({
_imp_string255 tmp =
_imp_join((_imp_string *)/*?*/ &SOURCE, (_imp_string *)/*?*/ _imp_str_literal_ptr(".asm"));
(_imp_string255 *)&tmp;
});
(void *)&tmp;
}),
/*max:*/ 255);
L_0018:;
// 253
// 254 list = params %if list=""
if (_imp_strcmp((_imp_string *)/*?*/ &LIST, (_imp_string *)/*?*/ _imp_str_literal_ptr("")) != 0) goto L_0019;
_imp_strncpy(/*?*/ &LIST, ({
__typeof__(_imp_string255) tmp; /*B*/
tmp = PARAMS;
(void *)&tmp;
}),
/*max:*/ 255);
L_0019:;
// 255 object = params %if object=""
if (_imp_strcmp((_imp_string *)/*?*/ &OBJECT, (_imp_string *)/*?*/ _imp_str_literal_ptr("")) != 0) goto L_001A;
_imp_strncpy(/*?*/ &OBJECT, ({
__typeof__(_imp_string255) tmp; /*B*/
tmp = PARAMS;
(void *)&tmp;
}),
/*max:*/ 255);
L_001A:;
// 256 list = list.".lis" %unless is typed(list, dummy)
if (ISTYPED(
*({
__typeof__(_imp_string255) tmp = LIST /*q*/;
(_imp_string255 *)&tmp;
})
,
(_imp_string255 *)/*p*/ /*?*/ &DUMMY))
goto L_001B;
_imp_strncpy(/*?*/ &LIST, ({
__typeof__(_imp_string255) tmp; /*B*/
tmp = *({
_imp_string255 tmp =
_imp_join((_imp_string *)/*?*/ &LIST, (_imp_string *)/*?*/ _imp_str_literal_ptr(".lis"));
(_imp_string255 *)&tmp;
});
(void *)&tmp;
}),
/*max:*/ 255);
L_001B:;
// 257 object = object.".obj" %unless is typed(object, dummy)
if (ISTYPED(
*({
__typeof__(_imp_string255) tmp = OBJECT /*q*/;
(_imp_string255 *)&tmp;
})
,
(_imp_string255 *)/*p*/ /*?*/ &DUMMY))
goto L_001C;
_imp_strncpy(/*?*/ &OBJECT, ({
__typeof__(_imp_string255) tmp; /*B*/
tmp = *({
_imp_string255 tmp =
_imp_join((_imp_string *)/*?*/ &OBJECT, (_imp_string *)/*?*/ _imp_str_literal_ptr(".obj"));
(_imp_string255 *)&tmp;
});
(void *)&tmp;
}),
/*max:*/ 255);
L_001C:;
// 258
// 259 open input(1, source)
_imp_OPENINPUT(1,
*({
__typeof__(_imp_string255) tmp = SOURCE /*q*/;
(_imp_string255 *)&tmp;
})
);
// 260 open output(1, object)
_imp_OPENOUTPUT(1,
*({
__typeof__(_imp_string255) tmp = OBJECT /*q*/;
(_imp_string255 *)&tmp;
})
);
// 261 open output(2, list)
_imp_OPENOUTPUT(2,
*({
__typeof__(_imp_string255) tmp = LIST /*q*/;
(_imp_string255 *)&tmp;
})
);
// 262 select output(2)
_imp_SELECTOUTPUT(2);
// 263 headset = 0
HEADSET = 0;
// 264 header = ""
_imp_strncpy(/*?*/ &HEADER, ({
__typeof__(_imp_string255) tmp; /*B*/
tmp = _imp_str_literal("");
(void *)&tmp;
}),
/*max:*/ 41);
// 265 drad = 8
DRAD = 8;
// 266 sp1 = 2
SP1 = 2;
// 267 sp2 = 4
SP2 = 4;
// 268 pflag = 3
PFLAG = 3;
// 269 sflag = 0
SFLAG = 0;
// 270 eflag = 1
EFLAG = 1;
// 271 gflag = 1
GFLAG = 1;
// 272 lflag = 2
LFLAG = 2;
// 273 cflag = 0
CFLAG = 0;
// 274 wflag = 0
WFLAG = 0;
// 275 tflag = 1
TFLAG = 1;
// 276 xflag = 0
XFLAG = 0;
// 277 sp3 = line width-sp1-sp2*3-cflag*3-wflag-11
SP3 = 78 - SP1 - SP2 * 3 - CFLAG * 3 - WFLAG - 11;
// 278 cont = 0
CONT = 0;
// 279 faults=0
FAULTS = 0;
// 280 nnames=0
NNAMES = 0;
// 281 xxentries = 0
XXENTRIES = 0;
// 282 consistent = 0
CONSISTENT = 0;
// 283 last consistent = 0
LASTCONSISTENT = 0;
// 284 last no longs = 0
LASTNOLONGS = 0;
// 285 hnlink(i)=0 %for i = 0, 1, nhash-1
// %for I = 0, 1, 67 - 1 %cycle
{
int _final = 67 - 1;
if (invalid_for_loop(0, 1, _final)) _imp_signal(5, 1, 0, "Illegal cycle I = 0, 1, 67 - 1");
I = -1;
L_001D:
if (I == _final) goto L_001E;
I += 1;
HNLINK[I] = 0;
goto L_001D;
}
L_001E:;
// 286 ostarted = 0
OSTARTED = 0;
// 287 bp = 0
BP = 0;
// 288 look ahead = 0
LOOKAHEAD = 0;
// 289 !-----------------------------------------------------------------------
// 290 select input(1)
_imp_SELECTINPUT(1);
// 291 pass = 1
PASS = 1;
// 292 %cycle
L_0020:;
// 293 ln = 0
LN = 0;
// 294 dp contents = 0
DPCONTENTS = 0;
// 295 ca = 0
CA = 0;
// 296 bchar = -1
BCHAR = -1;
// 297 fflag = 0
FFLAG = 0;
// 298 no longs = 0
NOLONGS = 0;
// 299 %cycle
L_0021:;
// 300 read line
READLINE();
// 301 %continue %if pres char='*'
if (PRESCHAR != 42) goto L_0022;
goto L_0023;
L_0022:;
// 302 %if get name(lid)=0 %start
if (GETNAME(/*?*/ &LID) != 0) goto L_0024;
// 303 %if pass=1 %start
if (PASS != 1) goto L_0025;
// 304 %if nass(lid)=0 %start
if (NASS[LID - 1] != 0) goto L_0026;
// 305 nval(lid) = ca
NVAL[LID - 1] = CA;
// 306 nass(lid) = 1
NASS[LID - 1] = 1;
// 307 %else
goto L_0027;
L_0026:;
// 308 nval(lid) = 0
NVAL[LID - 1] = 0;
// 309 nass(lid) = 2
NASS[LID - 1] = 2;
// 310 %finish
L_0027:;
// 311 %finish %else %if nass(lid)=1 %and ca#nval(lid) %start
goto L_0028;
L_0025:;
if (NASS[LID - 1] != 1) goto L_0029;
if (CA == NVAL[LID - 1]) goto L_0029;
// 312 diff = nval(lid)-ca
DIFF = NVAL[LID - 1] - CA;
// 313 nval(lid) = ca
NVAL[LID - 1] = CA;
// 314 %if pass=3 %start
if (PASS != 3) goto L_002A;
// 315 %for i = 1, 1, consistent %cycle
// %for I = 1, 1, CONSISTENT %cycle
{
int _final = CONSISTENT;
if (invalid_for_loop(1, 1, _final)) _imp_signal(5, 1, 0, "Illegal cycle I = 1, 1, CONSISTENT");
I = 0;
L_002B:
if (I == _final) goto L_002C;
I += 1;
// 316 -> diff found %if ndiff(i)=diff
if (NDIFF[I - 1] != DIFF) goto L_002E;
goto U_1000;
L_002E:;
// 317 %repeat
goto L_002B;
}
L_002C:;
// 318 consistent = consistent+1
CONSISTENT = CONSISTENT + 1;
// 319 ndiff(consistent) = diff
NDIFF[CONSISTENT - 1] = DIFF;
// 320 diff found: %finish
U_1000:;
L_002A:;
// 321 %finish
L_0029:;
L_0028:;
// 322 %else
goto L_002F;
L_0024:;
// 323 lid = 0
LID = 0;
// 324 %finish
L_002F:;
// 325 next char %while pres char=' '
L_0030:;
if (PRESCHAR != 32) goto L_0031;
NEXTCHAR();
goto L_0030;
L_0031:;
// 326 %continue %unless get instr(iid)
if (GETINSTR(/*?*/ &IID)) goto L_0032;
goto L_0023;
L_0032:;
// 327 next char %while pres char=' '
L_0033:;
if (PRESCHAR != 32) goto L_0034;
NEXTCHAR();
goto L_0033;
L_0034:;
// 328 %if itype(iid)<=25 %start
if (ITYPE[IID - 1] > 25) goto L_0035;
// 329 %if 0<=icode(iid)<=255 %start
{
// Double-sided test on ICODE[IID - 1] (Part I)
int tmp;
if (0 > (tmp = ICODE[IID - 1])) goto L_0036;
// Double-sided test on ICODE[IID - 1] (Part II)
if (tmp > 255) goto L_0036;
}
// 330 ca = ca+1
CA = CA + 1;
// 331 %else
goto L_0037;
L_0036:;
// 332 ca = ca+2
CA = CA + 2;
// 333 %finish
L_0037:;
// 334 %finish
L_0035:;
// 335 ->itype1(itype(iid))
ITYPE1_line = __LINE__;
ITYPE1_file = __FILE__;
ITYPE1_index = ITYPE[IID - 1];
goto case_ITYPE1_dispatch;
// 336 !-----------------------------------------------------------------------
// 337 itype1(1):! implied
case_ITYPE1_1:;
// 338 itype1(2): ! 6800 special implied
case_ITYPE1_2:;
// 339 %continue
goto L_0023;
// 340 !-----------------------------------------------------------------------
// 341 itype1(3):! relative
case_ITYPE1_3:;
// 342 %if pass<3 %or get opd(opd)#0 %or -128<=opd-ca-1<=127 %start
if (PASS < 3) goto L_0039;
if (GETOPD(/*?*/ &OPD) != 0) goto L_0039;
{
// Double-sided test on OPD - CA - 1 (Part I)
int tmp;
if (-128 > (tmp = OPD - CA - 1)) goto L_003A;
// Double-sided test on OPD - CA - 1 (Part II)
if (tmp > 127) goto L_003A;
}
L_0039:;
// 343 ca = ca+1
CA = CA + 1;
// 344 %finish %else %if icode(iid)=16_20 %or icode(iid)=16_8D %start
goto L_003B;
L_003A:;
if (ICODE[IID - 1] == 32) goto L_003C;
if (ICODE[IID - 1] != 141) goto L_003D;
L_003C:;
// 345 ca = ca+2
CA = CA + 2;
// 346 no longs = no longs+1
NOLONGS = NOLONGS + 1;
// 347 %else
goto L_003B;
L_003D:;
// 348 ca = ca+3
CA = CA + 3;
// 349 no longs = no longs+1
NOLONGS = NOLONGS + 1;
// 350 %finish
L_003B:;
// 351 %continue
goto L_0023;
// 352 !-----------------------------------------------------------------------
// 353 itype1(4): ! lda, ora
case_ITYPE1_4:;
// 354 ca = ca+1 %and %continue %if pres char='#'
if (PRESCHAR != 35) goto L_003E;
CA = CA + 1;
goto L_0023;
L_003E:;
// 355 analise operand(ca, post, opd, type, mcycles)
ANALISEOPERAND(CA, /*?*/ &POST, /*?*/ &OPD, /*?*/ &TYPE, /*?*/ &MCYCLES);
// 356 %if 1<=type<=2 %start
{
// Double-sided test on TYPE (Part I)
int tmp;
if (1 > (tmp = TYPE)) goto L_003F;
// Double-sided test on TYPE (Part II)
if (tmp > 2) goto L_003F;
}
// 357 skip blanks
SKIPBLANKS();
// 358 -> itype1(12)
ITYPE1_line = __LINE__;
ITYPE1_file = __FILE__;
ITYPE1_index = 12;
goto case_ITYPE1_dispatch;
// 359 %finish
L_003F:;
// 360 -> analise double
goto U_1001;
// 361 !----------------------------------------------------------------------
// 362 itype1(5): ! sta
case_ITYPE1_5:;
// 363 analise operand(ca, post, opd, type, mcycles)
ANALISEOPERAND(CA, /*?*/ &POST, /*?*/ &OPD, /*?*/ &TYPE, /*?*/ &MCYCLES);
// 364 %if 1<=type<=2 %start
{
// Double-sided test on TYPE (Part I)
int tmp;
if (1 > (tmp = TYPE)) goto L_0040;
// Double-sided test on TYPE (Part II)
if (tmp > 2) goto L_0040;
}
// 365 skip blanks
SKIPBLANKS();
// 366 -> itype1(13)
ITYPE1_line = __LINE__;
ITYPE1_file = __FILE__;
ITYPE1_index = 13;
goto case_ITYPE1_dispatch;
// 367 %finish
L_0040:;
// 368 -> analise double
goto U_1001;
// 369 !-----------------------------------------------------------------------
// 370 itype1(6): ! ld
case_ITYPE1_6:;
// 371 %if accumulator %start
if (!(ACCUMULATOR())) goto L_0041;
// 372 skip blanks
SKIPBLANKS();
// 373 -> itype1(12)
ITYPE1_line = __LINE__;
ITYPE1_file = __FILE__;
ITYPE1_index = 12;
goto case_ITYPE1_dispatch;
// 374 %finish %else %if acc('S') %or acc('Y') %start
L_0041:;
if (ACC(83)) goto L_0042;
if (!(ACC(89))) goto L_0043;
L_0042:;
// 375 ca = ca+1
CA = CA + 1;
// 376 %finish %else %unless acc('D') %or acc('U') %or acc('X') %start
goto L_0044;
L_0043:;
if (ACC(68)) goto L_0045;
if (ACC(85)) goto L_0045;
if (ACC(88)) goto L_0045;
// 377 -> itype1(12)
ITYPE1_line = __LINE__;
ITYPE1_file = __FILE__;
ITYPE1_index = 12;
goto case_ITYPE1_dispatch;
// 378 %finish
L_0045:;
L_0044:;
// 379 skip blanks
SKIPBLANKS();
// 380 -> itype1(9)
ITYPE1_line = __LINE__;
ITYPE1_file = __FILE__;
ITYPE1_index = 9;
goto case_ITYPE1_dispatch;
// 381 !-----------------------------------------------------------------------
// 382 itype1(7): ! cmp
case_ITYPE1_7:;
// 383 %if accumulator %start
if (!(ACCUMULATOR())) goto L_0046;
// 384 skip blanks
SKIPBLANKS();
// 385 -> itype1(12)
ITYPE1_line = __LINE__;
ITYPE1_file = __FILE__;
ITYPE1_index = 12;
goto case_ITYPE1_dispatch;
// 386 %finish %else %if acc('D') %or acc('S') %or acc('U') %or %c
L_0046:;
if (ACC(68)) goto L_0047;
if (ACC(83)) goto L_0047;
if (ACC(85)) goto L_0047;
if (!(ACC(89))) goto L_0048;
L_0047:;
// 387+ acc('Y') %start
// 388 ca = ca+1
CA = CA + 1;
// 389 %finish %else %unless acc('X') %start
goto L_0049;
L_0048:;
if (ACC(88)) goto L_004A;
// 390 -> itype1(12)
ITYPE1_line = __LINE__;
ITYPE1_file = __FILE__;
ITYPE1_index = 12;
goto case_ITYPE1_dispatch;
// 391 %finish
L_004A:;
L_0049:;
// 392 skip blanks
SKIPBLANKS();
// 393 -> itype1(9)
ITYPE1_line = __LINE__;
ITYPE1_file = __FILE__;
ITYPE1_index = 9;
goto case_ITYPE1_dispatch;
// 394 !-----------------------------------------------------------------------
// 395 itype1(8): ! add, sub
case_ITYPE1_8:;
// 396 %if accumulator %start
if (!(ACCUMULATOR())) goto L_004B;
// 397 skip blanks
SKIPBLANKS();
// 398 -> itype1(12)
ITYPE1_line = __LINE__;
ITYPE1_file = __FILE__;
ITYPE1_index = 12;
goto case_ITYPE1_dispatch;
// 399 %finish %else %if acc('D') %start
L_004B:;
if (!(ACC(68))) goto L_004C;
// 400 skip blanks
SKIPBLANKS();
// 401 %else
goto L_004D;
L_004C:;
// 402 -> itype1(12)
ITYPE1_line = __LINE__;
ITYPE1_file = __FILE__;
ITYPE1_index = 12;
goto case_ITYPE1_dispatch;
// 403 %finish
L_004D:;
// 404 !-----------------------------------------------------------------------
// 405 itype1(9): ! immediate(3), direct, index, extend
case_ITYPE1_9:;
// 406 ca = ca+2 %and %continue %if pres char='#'
if (PRESCHAR != 35) goto L_004E;
CA = CA + 2;
goto L_0023;
L_004E:;
// 407 ->itype1(13)
ITYPE1_line = __LINE__;
ITYPE1_file = __FILE__;
ITYPE1_index = 13;
goto case_ITYPE1_dispatch;
// 408 !-----------------------------------------------------------------------
// 409 itype1(10): ! st
case_ITYPE1_10:;
// 410 %if acc('S') %or acc('Y') %start
if (ACC(83)) goto L_004F;
if (!(ACC(89))) goto L_0050;
L_004F:;
// 411 ca = ca+1
CA = CA + 1;
// 412 skip blanks
SKIPBLANKS();
// 413 %finish %else %if acc('D') %or acc('U') %or acc('X') %or %c
goto L_0051;
L_0050:;
if (ACC(68)) goto L_0052;
if (ACC(85)) goto L_0052;
if (ACC(88)) goto L_0052;
if (!(ACCUMULATOR())) goto L_0053;
L_0052:;
// 414+ accumulator %start
// 415 skip blanks
SKIPBLANKS();
// 416 %finish
L_0053:;
L_0051:;
// 417 -> itype1(13)
ITYPE1_line = __LINE__;
ITYPE1_file = __FILE__;
ITYPE1_index = 13;
goto case_ITYPE1_dispatch;
// 418 !-----------------------------------------------------------------------
// 419 itype1(11): ! inherent*(immediate(2), direct, index, extend)
case_ITYPE1_11:;
// 420 skip blanks %if accumulator
if (!(ACCUMULATOR())) goto L_0054;
SKIPBLANKS();
L_0054:;
// 421 !-----------------------------------------------------------------------
// 422 itype1(12):! immediate(2), direct, index, extend
case_ITYPE1_12:;
// 423 ca = ca+1 %and %continue %if pres char='#'
if (PRESCHAR != 35) goto L_0055;
CA = CA + 1;
goto L_0023;
L_0055:;
// 424 !-----------------------------------------------------------------------
// 425 itype1(13):! direct, index, extend
case_ITYPE1_13:;
// 426 itype1(14): ! jmp
case_ITYPE1_14:;
// 427 analise operand(ca, post, opd, type, mcycles)
ANALISEOPERAND(CA, /*?*/ &POST, /*?*/ &OPD, /*?*/ &TYPE, /*?*/ &MCYCLES);
// 428 analise double:
U_1001:;
// 429 %if type<=3 %start
if (TYPE > 3) goto L_0056;
// 430 ca = ca+1
CA = CA + 1;
// 431 %finish %else %if type=4 %start
goto L_0057;
L_0056:;
if (TYPE != 4) goto L_0058;
// 432 ca = ca+2
CA = CA + 2;
// 433 no longs = no longs+1
NOLONGS = NOLONGS + 1;
// 434 %else
goto L_0057;
L_0058:;
// 435 ca = ca+type-4
CA = CA + TYPE - 4;
// 436 no longs = no longs+type-5
NOLONGS = NOLONGS + TYPE - 5;
// 437 %finish
L_0057:;
// 438 %continue
goto L_0023;
// 439 !-----------------------------------------------------------------------
// 440 itype1(15): ! inherent, index, extend
case_ITYPE1_15:;
// 441 analise operand(ca, post, opd, type, mcycles)
ANALISEOPERAND(CA, /*?*/ &POST, /*?*/ &OPD, /*?*/ &TYPE, /*?*/ &MCYCLES);
// 442 %if 3<=type<=4 %start
{
// Double-sided test on TYPE (Part I)
int tmp;
if (3 > (tmp = TYPE)) goto L_0059;
// Double-sided test on TYPE (Part II)
if (tmp > 4) goto L_0059;
}
// 443 ca = ca+type-2
CA = CA + TYPE - 2;
// 444 no longs = no longs+type-3
NOLONGS = NOLONGS + TYPE - 3;
// 445 %finish %else %if type>=5 %start
goto L_005A;
L_0059:;
if (TYPE < 5) goto L_005B;
// 446 ca = ca+type-4
CA = CA + TYPE - 4;
// 447 no longs = no longs+type-5
NOLONGS = NOLONGS + TYPE - 5;
// 448 %finish
L_005B:;
L_005A:;
// 449 %continue
goto L_0023;
// 450 !-----------------------------------------------------------------------
// 451 itype1(16): ! lea
case_ITYPE1_16:;
// 452 skip blanks %if index reg(i)
if (!(INDEXREG(/*?*/ &I))) goto L_005C;
SKIPBLANKS();
L_005C:;
// 453 !-----------------------------------------------------------------------
// 454 itype1(17):! Load effective address
case_ITYPE1_17:;
// 455 analise operand(ca, post, opd, type, mcycles)
ANALISEOPERAND(CA, /*?*/ &POST, /*?*/ &OPD, /*?*/ &TYPE, /*?*/ &MCYCLES);
// 456 %if type<=5 %start
if (TYPE > 5) goto L_005D;
// 457 ca = ca+1
CA = CA + 1;
// 458 %else
goto L_005E;
L_005D:;
// 459 ca = ca+type-4
CA = CA + TYPE - 4;
// 460 no longs = no longs+type-5
NOLONGS = NOLONGS + TYPE - 5;
// 461 %finish
L_005E:;
// 462 %continue
goto L_0023;
// 463 !-----------------------------------------------------------------------
// 464 itype1(18): ! tfr, exg
case_ITYPE1_18:;
// 465 itype1(19): ! pul, psh
case_ITYPE1_19:;
// 466 itype1(20): ! pulu, puls, pshu, pshs
case_ITYPE1_20:;
// 467 itype1(21): ! cwai, andcc, orcc
case_ITYPE1_21:;
// 468 itype1(22): ! tab, tba
case_ITYPE1_22:;
// 469 ca = ca+1
CA = CA + 1;
// 470 %continue
goto L_0023;
// 471 !-----------------------------------------------------------------------
// 472 itype1(23): ! swi
case_ITYPE1_23:;
// 473 ca = ca+1 %if acc('2') %or acc('3')
if (ACC(50)) goto L_005F;
if (!(ACC(51))) goto L_0060;
L_005F:;
CA = CA + 1;
L_0060:;
// 474 %continue
goto L_0023;
// 475 !-----------------------------------------------------------------------
// 476 itype1(24): ! lbrn
case_ITYPE1_24:;
// 477 itype1(25): ! sba, cba, aba
case_ITYPE1_25:;
// 478 ca = ca+2
CA = CA + 2;
// 479 %continue
goto L_0023;
// 480 !-----------------------------------------------------------------------
// 481 itype1(26): ! fcb
case_ITYPE1_26:;
// 482 %cycle
L_0061:;
// 483 ca = ca+1
CA = CA + 1;
// 484 i = get opd(opd) %unless pres char=','
if (PRESCHAR == 44) goto L_0062;
I = GETOPD(/*?*/ &OPD);
L_0062:;
// 485 %repeat %until %not more items
if (!(MOREITEMS())) goto L_0063;
goto L_0061;
L_0063:;
// 486 %continue
goto L_0023;
// 487 !-----------------------------------------------------------------------
// 488 itype1(27): ! fdb
case_ITYPE1_27:;
// 489 %cycle
L_0064:;
// 490 ca = ca+2
CA = CA + 2;
// 491 i = get opd(opd) %unless pres char=','
if (PRESCHAR == 44) goto L_0065;
I = GETOPD(/*?*/ &OPD);
L_0065:;
// 492 %repeat %until %not more items
if (!(MOREITEMS())) goto L_0066;
goto L_0064;
L_0066:;
// 493 %continue
goto L_0023;
// 494 !-----------------------------------------------------------------------
// 495 itype1(28):! equ
case_ITYPE1_28:;
// 496 %unless lid=0 %start
if (LID == 0) goto L_0067;
// 497 %if get opd(opd)=0 %start
if (GETOPD(/*?*/ &OPD) != 0) goto L_0068;
// 498 %if pass=1 %start
if (PASS != 1) goto L_0069;
// 499 %if nass(lid)=1 %start
if (NASS[LID - 1] != 1) goto L_006A;
// 500 nval(lid) = opd
NVAL[LID - 1] = OPD;
// 501 nass(lid) = 3
NASS[LID - 1] = 3;
// 502 %finish
L_006A:;
// 503 %finish %else %if nass(lid)=3 %and opd#nval(lid) %start
goto L_006B;
L_0069:;
if (NASS[LID - 1] != 3) goto L_006C;
if (OPD == NVAL[LID - 1]) goto L_006C;
// 504 diff = nval(lid)-opd
DIFF = NVAL[LID - 1] - OPD;
// 505 nval(lid) = opd
NVAL[LID - 1] = OPD;
// 506 %if pass=3 %start
if (PASS != 3) goto L_006D;
// 507 %for i = 1, 1, consistent %cycle
// %for I = 1, 1, CONSISTENT %cycle
{
int _final = CONSISTENT;
if (invalid_for_loop(1, 1, _final)) _imp_signal(5, 1, 0, "Illegal cycle I = 1, 1, CONSISTENT");
I = 0;
L_006E:
if (I == _final) goto L_006F;
I += 1;
// 508 ->equ diff found %if ndiff(i)=diff
if (NDIFF[I - 1] != DIFF) goto L_0071;
goto U_1002;
L_0071:;
// 509 %repeat
goto L_006E;
}
L_006F:;
// 510 consistent = consistent+1
CONSISTENT = CONSISTENT + 1;
// 511 ndiff(consistent) = diff
NDIFF[CONSISTENT - 1] = DIFF;
// 512 equ diff found: %finish
U_1002:;
L_006D:;
// 513 %finish
L_006C:;
L_006B:;
// 514 %else
goto L_0072;
L_0068:;
// 515 %unless nass(lid)=2 %start
if (NASS[LID - 1] == 2) goto L_0073;
// 516 nval(lid) = 0
NVAL[LID - 1] = 0;
// 517 nass(lid) = 4
NASS[LID - 1] = 4;
// 518 %finish
L_0073:;
// 519 %finish
L_0072:;
// 520 %finish
L_0067:;
// 521 %continue
goto L_0023;
// 522 !-----------------------------------------------------------------------
// 523 itype1(29):! org
case_ITYPE1_29:;
// 524 %unless lid=0 %start
if (LID == 0) goto L_0074;
// 525 nval(lid) = 0
NVAL[LID - 1] = 0;
// 526 nass(lid) = 4
NASS[LID - 1] = 4;
// 527 %finish
L_0074:;
// 528 ca = opd %if get opd(opd)=0
if (GETOPD(/*?*/ &OPD) != 0) goto L_0075;
CA = OPD;
L_0075:;
// 529 %continue
goto L_0023;
// 530 !-----------------------------------------------------------------------
// 531 itype1(30): ! setdp
case_ITYPE1_30:;
// 532 %unless lid=0 %start
if (LID == 0) goto L_0076;
// 533 nval(lid) = 0
NVAL[LID - 1] = 0;
// 534 nass(lid) = 4
NASS[LID - 1] = 4;
// 535 %finish
L_0076:;
// 536 dp contents = opd<<8 %if get opd(opd)=0
if (GETOPD(/*?*/ &OPD) != 0) goto L_0077;
DPCONTENTS = OPD << 8;
L_0077:;
// 537 %continue
goto L_0023;
// 538 !-----------------------------------------------------------------------
// 539 itype1(31): ! rmb
case_ITYPE1_31:;
// 540 ca = ca+opd %if get opd(opd)=0
if (GETOPD(/*?*/ &OPD) != 0) goto L_0078;
CA = CA + OPD;
L_0078:;
// 541 %continue
goto L_0023;
// 542 !-----------------------------------------------------------------------
// 543 itype1(32):! fcc
case_ITYPE1_32:;
// 544 %if '0'<=pres char<='9' %start
{
// Double-sided test on PRESCHAR (Part I)
int tmp;
if (48 > (tmp = PRESCHAR)) goto L_0079;
// Double-sided test on PRESCHAR (Part II)
if (tmp > 57) goto L_0079;
}
// 545 i = lp
I = LP;
// 546 j = 0
J = 0;
// 547 %cycle
L_007A:;
// 548 j = j*10+pres char-'0'
J = J * 10 + PRESCHAR - 48;
// 549 next char
NEXTCHAR();
// 550 %repeat %until %not '0'<=pres char<='9'
{
// Double-sided test on PRESCHAR (Part I)
int tmp;
if (48 > (tmp = PRESCHAR)) goto L_007B;
// Double-sided test on PRESCHAR (Part II)
if (tmp > 57) goto L_007B;
}
goto L_007A;
L_007B:;
// 551 %if pres char=',' %start
if (PRESCHAR != 44) goto L_007C;
// 552 ca = ca+j
CA = CA + J;
// 553 %continue
goto L_0023;
// 554 %finish
L_007C:;
// 555 lp = i-1
LP = I - 1;
// 556 next char
NEXTCHAR();
// 557 %finish
L_0079:;
// 558 %continue %if pres char<' '
if (PRESCHAR >= 32) goto L_007D;
goto L_0023;
L_007D:;
// 559 delim = pres char
DELIM = PRESCHAR;
// 560 next char
NEXTCHAR();
// 561 %cycle
L_007E:;
// 562 %exit %if pres char=nl
if (PRESCHAR != 10) goto L_007F;
goto L_0080;
L_007F:;
// 563 %if pres char=delim %start
if (PRESCHAR != DELIM) goto L_0081;
// 564 next char
NEXTCHAR();
// 565 %exit %unless pres char=delim
if (PRESCHAR == DELIM) goto L_0082;
goto L_0080;
L_0082:;
// 566 %finish
L_0081:;
// 567 next char
NEXTCHAR();
// 568 ca=ca+1
CA = CA + 1;
// 569 %repeat
goto L_007E;
L_0080:;
// 570 %continue
goto L_0023;
// 571 !-----------------------------------------------------------------------
// 572 itype1(33): ! nam
case_ITYPE1_33:;
// 573 %unless lid=0 %start
if (LID == 0) goto L_0083;
// 574 nval(lid) = 0
NVAL[LID - 1] = 0;
// 575 nass(lid) = 4
NASS[LID - 1] = 4;
// 576 %finish
L_0083:;
// 577 %continue %unless headset=0
if (HEADSET == 0) goto L_0084;
goto L_0023;
L_0084:;
// 578 headset = 1
HEADSET = 1;
// 579 header = ""
_imp_strncpy(/*?*/ &HEADER, ({
__typeof__(_imp_string255) tmp; /*B*/
tmp = _imp_str_literal("");
(void *)&tmp;
}),
/*max:*/ 41);
// 580 %while pres char#nl %cycle
L_0085:;
if (PRESCHAR == 10) goto L_0086;
// 581 header <- header.to string(line(lp))
_imp_strncpy(/*?*/ &HEADER, ({
__typeof__(_imp_string255) tmp; /*C*/
tmp = *({
_imp_string255 tmp = _imp_join((_imp_string *)/*?*/ &HEADER, ({
__typeof__(_imp_string1) tmp; /*E*/
tmp = _imp_TOSTRING(LINE[LP - 1]);
(void *)&tmp;
}));
(_imp_string255 *)&tmp;
});
(void *)&tmp;
}),
/*max:*/ 41);
/* truncated copy of no more than 41 chars */
if (*_imp_LENGTH((_imp_string *)/*?*/ &HEADER) > 41) *_imp_LENGTH((_imp_string *)/*?*/ &HEADER) = 41;
// 582 next char
NEXTCHAR();
// 583 %repeat
goto L_0085;
L_0086:;
// 584 %continue
goto L_0023;
// 585 !-----------------------------------------------------------------------
// 586 itype1(34): ! opt
case_ITYPE1_34:;
// 587 %cycle
L_0087:;
// 588 %if get option(opt) %start
if (!(GETOPTION(/*?*/ &OPT))) goto L_0088;
// 589 %if 1<=opt<=2 %start
{
// Double-sided test on OPT (Part I)
int tmp;
if (1 > (tmp = OPT)) goto L_0089;
// Double-sided test on OPT (Part II)
if (tmp > 2) goto L_0089;
}
// 590 bchar = ' '
BCHAR = 32;
// 591 %finish %else %if 3<=opt<=4 %start
goto L_008A;
L_0089:;
{
// Double-sided test on OPT (Part I)
int tmp;
if (3 > (tmp = OPT)) goto L_008B;
// Double-sided test on OPT (Part II)
if (tmp > 4) goto L_008B;
}
// 592 bchar = -1
BCHAR = -1;
// 593 %finish %else %if 18<=opt<=19 %start
goto L_008A;
L_008B:;
{
// Double-sided test on OPT (Part I)
int tmp;
if (18 > (tmp = OPT)) goto L_008C;
// Double-sided test on OPT (Part II)
if (tmp > 19) goto L_008C;
}
// 594 fflag = 1
FFLAG = 1;
// 595 %finish %else %if 20<=opt<=21 %start
goto L_008A;
L_008C:;
{
// Double-sided test on OPT (Part I)
int tmp;
if (20 > (tmp = OPT)) goto L_008D;
// Double-sided test on OPT (Part II)
if (tmp > 21) goto L_008D;
}
// 596 fflag = 0
FFLAG = 0;
// 597 %finish
L_008D:;
L_008A:;
// 598 %finish
L_0088:;
// 599 %repeat %until %not more items
if (!(MOREITEMS())) goto L_008E;
goto L_0087;
L_008E:;
// 600 !-----------------------------------------------------------------------
// 601 itype1(35): ! page
case_ITYPE1_35:;
// 602 !-----------------------------------------------------------------------
// 603 itype1(36): ! spc
case_ITYPE1_36:;
// 604 %unless lid=0 %start
if (LID == 0) goto L_008F;
// 605 nval(lid) = 0
NVAL[LID - 1] = 0;
// 606 nass(lid) = 4
NASS[LID - 1] = 4;
// 607 %finish
L_008F:;
// 608 !-----------------------------------------------------------------------
// 609 %repeat
L_0023:;
goto L_0021;
// 610 !-----------------------------------------------------------------------
// 611 itype1(37):! end
case_ITYPE1_37:;
// 612 %unless lid=0 %start
if (LID == 0) goto L_0090;
// 613 nval(lid) = 0
NVAL[LID - 1] = 0;
// 614 nass(lid) = 2
NASS[LID - 1] = 2;
// 615 %finish
L_0090:;
// 616 %if pass<3 %start
if (PASS >= 3) goto L_0091;
// 617 pass = pass+1
PASS = PASS + 1;
// 618 %else
goto L_0092;
L_0091:;
// 619 %exit %if consistent=0 %or %c
if (CONSISTENT == 0) goto L_0093;
if (LASTCONSISTENT == 0) goto L_0094;
if (CONSISTENT < LASTCONSISTENT) goto L_0094;
if (NOLONGS < LASTNOLONGS) goto L_0094;
L_0093:;
goto L_0095;
L_0094:;
// 620+ (last consistent#0 %and consistent>=last consistent %and %c
// 621+ no longs>=last no longs)
// 622 last consistent = consistent
LASTCONSISTENT = CONSISTENT;
// 623 %finish
L_0092:;
// 624 last no longs = no longs
LASTNOLONGS = NOLONGS;
// 625 consistent = 0
CONSISTENT = 0;
// 626 reset input
_imp_RESETINPUT();
// 627 %repeat
goto L_0020;
L_0095:;
// 628 !-----------------------------------------------------------------------
// 629 nline(0)
NLINE(0);
// 630 reset input
_imp_RESETINPUT();
// 631 pass = 4
PASS = 4;
// 632 ln = 0
LN = 0;
// 633 ca = 0
CA = 0;
// 634 dp contents = 0
DPCONTENTS = 0;
// 635 old ca = 0
OLDCA = 0;
// 636 lid = 0
LID = 0;
// 637 bchar = -1
BCHAR = -1;
// 638 fflag = 0
FFLAG = 0;
// 639 %cycle
L_0096:;
// 640 %unless lid=0 %start
if (LID == 0) goto L_0097;
// 641 fault("Multiply defined label") %if nass(lid)=2
if (NASS[LID - 1] != 2) goto L_0098;
FAULT(_imp_str_literal_size(63, "Multiply defined label"));
L_0098:;
// 642 %if nass(lid)=1 %and nval(lid)#old ca %start
if (NASS[LID - 1] != 1) goto L_0099;
if (NVAL[LID - 1] == OLDCA) goto L_0099;
// 643 fault("Inconsistent label")
FAULT(_imp_str_literal_size(63, "Inconsistent label"));
// 644 nval(lid) = old ca
NVAL[LID - 1] = OLDCA;
// 645 %finish
L_0099:;
// 646 %finish
L_0097:;
// 647 old ca = ca
OLDCA = CA;
// 648 lid = 0
LID = 0;
// 649 read line
READLINE();
// 650 accop = 0
ACCOP = 0;
// 651 acc fault = 0
ACCFAULT = 0;
// 652 non dense = 0
NONDENSE = 0;
// 653 instr out(0, 0, 0, -7, 0) %and %continue %if pres char='*'
if (PRESCHAR != 42) goto L_009A;
INSTROUT(0, 0, 0, -7, 0);
goto L_001F;
L_009A:;
// 654 lid = 0 %unless get name(lid)=0
if (GETNAME(/*?*/ &LID) == 0) goto L_009B;
LID = 0;
L_009B:;
// 655 skip blanks
SKIPBLANKS();
// 656 %if pres char=nl %start
if (PRESCHAR != 10) goto L_009C;
// 657 instr out(0, 0, 0, -7, 0)
INSTROUT(0, 0, 0, -7, 0);
// 658 %finish %else %if get instr(iid) %start
goto L_009D;
L_009C:;
if (!(GETINSTR(/*?*/ &IID))) goto L_009E;
// 659 order = icode(iid)
ORDER = ICODE[IID - 1];
// 660 %if 0<=order<=255 %start
{
// Double-sided test on ORDER (Part I)
int tmp;
if (0 > (tmp = ORDER)) goto L_009F;
// Double-sided test on ORDER (Part II)
if (tmp > 255) goto L_009F;
}
// 661 eca = ca+1
ECA = CA + 1;
// 662 %else
goto L_00A0;
L_009F:;
// 663 eca = ca+2
ECA = CA + 2;
// 664 %finish
L_00A0:;
// 665 mcycles = icycles(iid)
MCYCLES = ICYCLES[IID - 1];
// 666 skip blanks
SKIPBLANKS();
// 667 ->itype3(itype(iid))
ITYPE3_line = __LINE__;
ITYPE3_file = __FILE__;
ITYPE3_index = ITYPE[IID - 1];
goto case_ITYPE3_dispatch;
// 668 %else
L_009E:;
// 669 instr out(0, 0, 0, -7, 0)
INSTROUT(0, 0, 0, -7, 0);
// 670 fault("Unknown operation")
FAULT(_imp_str_literal_size(63, "Unknown operation"));
// 671 %finish
L_009D:;
// 672 %continue
goto L_001F;
// 673 !-----------------------------------------------------------------------
// 674 itype3(1):! implied
case_ITYPE3_1:;
// 675 instr out(order, 0, 0, 1, mcycles)
INSTROUT(ORDER, 0, 0, 1, MCYCLES);
// 676 %continue
goto L_001F;
// 677 !-----------------------------------------------------------------------
// 678 itype3(2): ! 6800 special implied
case_ITYPE3_2:;
// 679 instr out((order>>8)&255, order&255, 0, 2, mcycles)
INSTROUT((unsigned int)ORDER >> 8 & 255, ORDER & 255, 0, 2, MCYCLES);
// 680 %continue
goto L_001F;
// 681 !-----------------------------------------------------------------------
// 682 itype3(3):! relative
case_ITYPE3_3:;
// 683 i=get opd(opd)
I = GETOPD(/*?*/ &OPD);
// 684 j=opd-eca-1
J = OPD - ECA - 1;
// 685 %if i#0 %or -128<=j<=127 %start
if (I != 0) goto L_00A2;
{
// Double-sided test on J (Part I)
int tmp;
if (-128 > (tmp = J)) goto L_00A3;
// Double-sided test on J (Part II)
if (tmp > 127) goto L_00A3;
}
L_00A2:;
// 686 instr out(order, j, 0, 2, mcycles)
INSTROUT(ORDER, J, 0, 2, MCYCLES);
// 687 fault("Cannot evaluate operand") %unless i=0
if (I == 0) goto L_00A4;
FAULT(_imp_str_literal_size(63, "Cannot evaluate operand"));
L_00A4:;
// 688 %finish %else %if order=16_20 %start
goto L_00A5;
L_00A3:;
if (ORDER != 32) goto L_00A6;
// 689 instr out(16_16, j-1, 0, 5, mcycles+2)
INSTROUT(22, J - 1, 0, 5, MCYCLES + 2);
// 690 %finish %else %if order=16_8D %start
goto L_00A5;
L_00A6:;
if (ORDER != 141) goto L_00A7;
// 691 instr out(16_17, j-1, 0, 5, mcycles+2)
INSTROUT(23, J - 1, 0, 5, MCYCLES + 2);
// 692 %else
goto L_00A5;
L_00A7:;
// 693 instr out(16_1000+order, j-2, 0, 5, mcycles+3)
INSTROUT(4096 + ORDER, J - 2, 0, 5, MCYCLES + 3);
// 694 %finish
L_00A5:;
// 695 %continue
goto L_001F;
// 696 !----------------------------------------------------------------------
// 697 itype3(4): ! lda, ora
case_ITYPE3_4:;
// 698 -> itype3(12) %if pres char='#'
if (PRESCHAR != 35) goto L_00A8;
ITYPE3_line = __LINE__;
ITYPE3_file = __FILE__;
ITYPE3_index = 12;
goto case_ITYPE3_dispatch;
L_00A8:;
// 699 analise operand(eca, post, opd, type, mcycles)
ANALISEOPERAND(ECA, /*?*/ &POST, /*?*/ &OPD, /*?*/ &TYPE, /*?*/ &MCYCLES);
// 700 %if 1<=type<=2 %start
{
// Double-sided test on TYPE (Part I)
int tmp;
if (1 > (tmp = TYPE)) goto L_00A9;
// Double-sided test on TYPE (Part II)
if (tmp > 2) goto L_00A9;
}
// 701 order = order+16_40 %if type=2
if (TYPE != 2) goto L_00AA;
ORDER = ORDER + 64;
L_00AA:;
// 702 accop = 1
ACCOP = 1;
// 703 skip blanks
SKIPBLANKS();
// 704 -> itype3(12)
ITYPE3_line = __LINE__;
ITYPE3_file = __FILE__;
ITYPE3_index = 12;
goto case_ITYPE3_dispatch;
// 705 %finish
L_00A9:;
// 706 -> generate double
goto U_1003;
// 707 !---------------------------------------------------------------------
// 708 itype3(5): ! sta
case_ITYPE3_5:;
// 709 analise operand(eca, post, opd, type, mcycles)
ANALISEOPERAND(ECA, /*?*/ &POST, /*?*/ &OPD, /*?*/ &TYPE, /*?*/ &MCYCLES);
// 710 %if 1<=type<=2 %start
{
// Double-sided test on TYPE (Part I)
int tmp;
if (1 > (tmp = TYPE)) goto L_00AB;
// Double-sided test on TYPE (Part II)
if (tmp > 2) goto L_00AB;
}
// 711 order = order+16_40 %if type=2
if (TYPE != 2) goto L_00AC;
ORDER = ORDER + 64;
L_00AC:;
// 712 accop = 1
ACCOP = 1;
// 713 skip blanks
SKIPBLANKS();
// 714 -> itype3(13)
ITYPE3_line = __LINE__;
ITYPE3_file = __FILE__;
ITYPE3_index = 13;
goto case_ITYPE3_dispatch;
// 715 %finish
L_00AB:;
// 716 -> generate double
goto U_1003;
// 717 !----------------------------------------------------------------------
// 718 itype3(6): ! ld
case_ITYPE3_6:;
// 719 accop = 1
ACCOP = 1;
// 720 %if acc('A') %start
if (!(ACC(65))) goto L_00AD;
// 721 skip blanks
SKIPBLANKS();
// 722 -> itype3(12)
ITYPE3_line = __LINE__;
ITYPE3_file = __FILE__;
ITYPE3_index = 12;
goto case_ITYPE3_dispatch;
// 723 %finish %else %if acc('B') %start
L_00AD:;
if (!(ACC(66))) goto L_00AE;
// 724 order = 16_C6
ORDER = 198;
// 725 skip blanks
SKIPBLANKS();
// 726 -> itype3(12)
ITYPE3_line = __LINE__;
ITYPE3_file = __FILE__;
ITYPE3_index = 12;
goto case_ITYPE3_dispatch;
// 727 %finish %else %if acc('D') %start
L_00AE:;
if (!(ACC(68))) goto L_00AF;
// 728 order = 16_CC
ORDER = 204;
// 729 %finish %else %if acc('U') %start
goto L_00B0;
L_00AF:;
if (!(ACC(85))) goto L_00B1;
// 730 order = 16_CE
ORDER = 206;
// 731 %finish %else %if acc('X') %start
goto L_00B0;
L_00B1:;
if (!(ACC(88))) goto L_00B2;
// 732 order = 16_8E
ORDER = 142;
// 733 %finish %else %if acc('S') %start
goto L_00B0;
L_00B2:;
if (!(ACC(83))) goto L_00B3;
// 734 order = 16_10CE
ORDER = 4302;
// 735 mcycles = mcycles+1
MCYCLES = MCYCLES + 1;
// 736 %finish %else %if acc('Y') %start
goto L_00B0;
L_00B3:;
if (!(ACC(89))) goto L_00B4;
// 737 order = 16_108E
ORDER = 4238;
// 738 mcycles = mcycles+1
MCYCLES = MCYCLES + 1;
// 739 %else
goto L_00B0;
L_00B4:;
// 740 acc fault = 2
ACCFAULT = 2;
// 741 accop = 0
ACCOP = 0;
// 742 -> itype3(12)
ITYPE3_line = __LINE__;
ITYPE3_file = __FILE__;
ITYPE3_index = 12;
goto case_ITYPE3_dispatch;
// 743 %finish
L_00B0:;
// 744 skip blanks
SKIPBLANKS();
// 745 mcycles = mcycles+1
MCYCLES = MCYCLES + 1;
// 746 -> itype3(9)
ITYPE3_line = __LINE__;
ITYPE3_file = __FILE__;
ITYPE3_index = 9;
goto case_ITYPE3_dispatch;
// 747 !----------------------------------------------------------------------
// 748 itype3(7): ! cmp
case_ITYPE3_7:;
// 749 accop = 1
ACCOP = 1;
// 750 %if acc('A') %start
if (!(ACC(65))) goto L_00B5;
// 751 skip blanks
SKIPBLANKS();
// 752 -> itype3(12)
ITYPE3_line = __LINE__;
ITYPE3_file = __FILE__;
ITYPE3_index = 12;
goto case_ITYPE3_dispatch;
// 753 %finish %else %if acc('B') %start
L_00B5:;
if (!(ACC(66))) goto L_00B6;
// 754 order = 16_C1
ORDER = 193;
// 755 skip blanks
SKIPBLANKS();
// 756 -> itype3(12)
ITYPE3_line = __LINE__;
ITYPE3_file = __FILE__;
ITYPE3_index = 12;
goto case_ITYPE3_dispatch;
// 757 %finish %else %if acc('D') %start
L_00B6:;
if (!(ACC(68))) goto L_00B7;
// 758 order = 16_1083
ORDER = 4227;
// 759 mcycles = mcycles+1
MCYCLES = MCYCLES + 1;
// 760 %finish %else %if acc('U') %start
goto L_00B8;
L_00B7:;
if (!(ACC(85))) goto L_00B9;
// 761 order = 16_1183
ORDER = 4483;
// 762 mcycles = mcycles+1
MCYCLES = MCYCLES + 1;
// 763 %finish %else %if acc('X') %start
goto L_00B8;
L_00B9:;
if (!(ACC(88))) goto L_00BA;
// 764 order = 16_8C
ORDER = 140;
// 765 %finish %else %if acc('S') %start
goto L_00B8;
L_00BA:;
if (!(ACC(83))) goto L_00BB;
// 766 order = 16_118C
ORDER = 4492;
// 767 mcycles = mcycles+1
MCYCLES = MCYCLES + 1;
// 768 %finish %else %if acc('Y') %start
goto L_00B8;
L_00BB:;
if (!(ACC(89))) goto L_00BC;
// 769 order = 16_108C
ORDER = 4236;
// 770 mcycles = mcycles+1
MCYCLES = MCYCLES + 1;
// 771 %else
goto L_00B8;
L_00BC:;
// 772 acc fault = 2
ACCFAULT = 2;
// 773 accop = 0
ACCOP = 0;
// 774 -> itype3(12)
ITYPE3_line = __LINE__;
ITYPE3_file = __FILE__;
ITYPE3_index = 12;
goto case_ITYPE3_dispatch;
// 775 %finish
L_00B8:;
// 776 skip blanks
SKIPBLANKS();
// 777 mcycles = mcycles+2
MCYCLES = MCYCLES + 2;
// 778 -> itype3(9)
ITYPE3_line = __LINE__;
ITYPE3_file = __FILE__;
ITYPE3_index = 9;
goto case_ITYPE3_dispatch;
// 779 !-----------------------------------------------------------------------
// 780 itype3(8): ! add, sub
case_ITYPE3_8:;
// 781 accop = 1
ACCOP = 1;
// 782 %if acc('A') %start
if (!(ACC(65))) goto L_00BD;
// 783 skip blanks
SKIPBLANKS();
// 784 -> itype3(12)
ITYPE3_line = __LINE__;
ITYPE3_file = __FILE__;
ITYPE3_index = 12;
goto case_ITYPE3_dispatch;
// 785 %finish %else %if acc('B') %start
L_00BD:;
if (!(ACC(66))) goto L_00BE;
// 786 order = order+16_40
ORDER = ORDER + 64;
// 787 skip blanks
SKIPBLANKS();
// 788 -> itype3(12)
ITYPE3_line = __LINE__;
ITYPE3_file = __FILE__;
ITYPE3_index = 12;
goto case_ITYPE3_dispatch;
// 789 %finish %else %if acc('D') %start
L_00BE:;
if (!(ACC(68))) goto L_00BF;
// 790 %if order=16_80 %start
if (ORDER != 128) goto L_00C0;
// 791 order = 16_83
ORDER = 131;
// 792 %else
goto L_00C1;
L_00C0:;
// 793 order = 16_C3
ORDER = 195;
// 794 %finish
L_00C1:;
// 795 %else
goto L_00C2;
L_00BF:;
// 796 acc fault = 1
ACCFAULT = 1;
// 797 accop = 0
ACCOP = 0;
// 798 -> itype3(12)
ITYPE3_line = __LINE__;
ITYPE3_file = __FILE__;
ITYPE3_index = 12;
goto case_ITYPE3_dispatch;
// 799 %finish
L_00C2:;
// 800 skip blanks
SKIPBLANKS();
// 801 mcycles = mcycles+2
MCYCLES = MCYCLES + 2;
// 802 !-----------------------------------------------------------------------
// 803 itype3(9):! immediate(3), direct, index, extend
case_ITYPE3_9:;
// 804 %if pres char='#' %start
if (PRESCHAR != 35) goto L_00C3;
// 805 next char %until pres char#bchar
L_00C4:;
NEXTCHAR();
if (PRESCHAR != BCHAR) goto L_00C5;
goto L_00C4;
L_00C5:;
// 806 i = get opd(opd)
I = GETOPD(/*?*/ &OPD);
// 807 instr out(order, opd, 0, 5, mcycles)
INSTROUT(ORDER, OPD, 0, 5, MCYCLES);
// 808 fault("Cannot evaluate operand") %unless i=0
if (I == 0) goto L_00C6;
FAULT(_imp_str_literal_size(63, "Cannot evaluate operand"));
L_00C6:;
// 809 %continue
goto L_001F;
// 810 %finish
L_00C3:;
// 811 ->itype3(13)
ITYPE3_line = __LINE__;
ITYPE3_file = __FILE__;
ITYPE3_index = 13;
goto case_ITYPE3_dispatch;
// 812 !-----------------------------------------------------------------------
// 813 itype3(10): ! st
case_ITYPE3_10:;
// 814 accop = 1
ACCOP = 1;
// 815 %if acc('B') %start
if (!(ACC(66))) goto L_00C7;
// 816 order = 16_C7
ORDER = 199;
// 817 %finish %else %if acc('D') %start
goto L_00C8;
L_00C7:;
if (!(ACC(68))) goto L_00C9;
// 818 order = 16_CD
ORDER = 205;
// 819 mcycles = mcycles+1
MCYCLES = MCYCLES + 1;
// 820 %finish %else %if acc('U') %start
goto L_00C8;
L_00C9:;
if (!(ACC(85))) goto L_00CA;
// 821 order = 16_CF
ORDER = 207;
// 822 mcycles = mcycles+1
MCYCLES = MCYCLES + 1;
// 823 %finish %else %if acc('X') %start
goto L_00C8;
L_00CA:;
if (!(ACC(88))) goto L_00CB;
// 824 order = 16_8F
ORDER = 143;
// 825 mcycles = mcycles+1
MCYCLES = MCYCLES + 1;
// 826 %finish %else %if acc('S') %start
goto L_00C8;
L_00CB:;
if (!(ACC(83))) goto L_00CC;
// 827 order = 16_10CF
ORDER = 4303;
// 828 mcycles = mcycles+2
MCYCLES = MCYCLES + 2;
// 829 %finish %else %if acc('Y') %start
goto L_00C8;
L_00CC:;
if (!(ACC(89))) goto L_00CD;
// 830 order = 16_108F
ORDER = 4239;
// 831 mcycles = mcycles+2
MCYCLES = MCYCLES + 2;
// 832 %finish %else %unless acc('A') %start
goto L_00C8;
L_00CD:;
if (ACC(65)) goto L_00CE;
// 833 acc fault = 2
ACCFAULT = 2;
// 834 accop = 0
ACCOP = 0;
// 835 %finish
L_00CE:;
L_00C8:;
// 836 skip blanks
SKIPBLANKS();
// 837 -> itype3(13)
ITYPE3_line = __LINE__;
ITYPE3_file = __FILE__;
ITYPE3_index = 13;
goto case_ITYPE3_dispatch;
// 838 !-----------------------------------------------------------------------
// 839 itype3(11): ! inherent*(immediate(2), direct, index, extend)
case_ITYPE3_11:;
// 840 accop = 1
ACCOP = 1;
// 841 %if acc('B') %start
if (!(ACC(66))) goto L_00CF;
// 842 order = order+16_40
ORDER = ORDER + 64;
// 843 %finish %else %unless acc('A') %start
goto L_00D0;
L_00CF:;
if (ACC(65)) goto L_00D1;
// 844 accop = 0
ACCOP = 0;
// 845 acc fault = 1
ACCFAULT = 1;
// 846 %finish
L_00D1:;
L_00D0:;
// 847 skip blanks
SKIPBLANKS();
// 848 !-----------------------------------------------------------------------
// 849 itype3(12): ! immediate(2), direct, index, extend
case_ITYPE3_12:;
// 850 %if pres char='#' %start
if (PRESCHAR != 35) goto L_00D2;
// 851 next char %until pres char#bchar
L_00D3:;
NEXTCHAR();
if (PRESCHAR != BCHAR) goto L_00D4;
goto L_00D3;
L_00D4:;
// 852 i = get opd(opd)
I = GETOPD(/*?*/ &OPD);
// 853 instr out(order, opd, 0, 2, mcycles)
INSTROUT(ORDER, OPD, 0, 2, MCYCLES);
// 854 %unless i=0 %start
if (I == 0) goto L_00D5;
// 855 fault("Cannot evaluate operand")
FAULT(_imp_str_literal_size(63, "Cannot evaluate operand"));
// 856 %finish %else %unless -128<=opd<=255 %start
goto L_00D6;
L_00D5:;
{
// Double-sided test on OPD (Part I)
int tmp;
if (-128 > (tmp = OPD)) goto L_00D7;
// Double-sided test on OPD (Part II)
if (tmp <= 255) goto L_00D8;
}
L_00D7:;
// 857 fault("Invalid constant")
FAULT(_imp_str_literal_size(63, "Invalid constant"));
// 858 %finish
L_00D8:;
L_00D6:;
// 859 %continue
goto L_001F;
// 860 %finish
L_00D2:;
// 861 !-----------------------------------------------------------------------
// 862 itype3(13):! direct,index,extend
case_ITYPE3_13:;
// 863 analise operand(eca, post, opd, type, mcycles)
ANALISEOPERAND(ECA, /*?*/ &POST, /*?*/ &OPD, /*?*/ &TYPE, /*?*/ &MCYCLES);
// 864 generate double:
U_1003:;
// 865 %if type<=3 %start
if (TYPE > 3) goto L_00D9;
// 866 instr out(order+16_10, opd, 0, 2, mcycles)
INSTROUT(ORDER + 16, OPD, 0, 2, MCYCLES);
// 867 %if type=0 %start
if (TYPE != 0) goto L_00DA;
// 868 fault("Cannot evaluate operand")
FAULT(_imp_str_literal_size(63, "Cannot evaluate operand"));
// 869 %finish %else %unless type=3 %start
goto L_00DB;
L_00DA:;
if (TYPE == 3) goto L_00DC;
// 870 fault("Illegal operand")
FAULT(_imp_str_literal_size(63, "Illegal operand"));
// 871 %finish
L_00DC:;
L_00DB:;
// 872 %finish %else %if type=4 %start
goto L_00DD;
L_00D9:;
if (TYPE != 4) goto L_00DE;
// 873 instr out(order+16_30, opd, 0, 5, mcycles)
INSTROUT(ORDER + 48, OPD, 0, 5, MCYCLES);
// 874 %else
goto L_00DD;
L_00DE:;
// 875 instr out(order+16_20, post, opd, type-3, mcycles)
INSTROUT(ORDER + 32, POST, OPD, TYPE - 3, MCYCLES);
// 876 %finish
L_00DD:;
// 877 fault("Accumulator not specified") %if acc fault=1
if (ACCFAULT != 1) goto L_00DF;
FAULT(_imp_str_literal_size(63, "Accumulator not specified"));
L_00DF:;
// 878 fault("Register not specified") %if acc fault=2
if (ACCFAULT != 2) goto L_00E0;
FAULT(_imp_str_literal_size(63, "Register not specified"));
L_00E0:;
// 879 %continue
goto L_001F;
// 880 !----------------------------------------------------------------------
// 881 itype3(14): ! jmp
case_ITYPE3_14:;
// 882 analise operand(eca, post, opd, type, mcycles)
ANALISEOPERAND(ECA, /*?*/ &POST, /*?*/ &OPD, /*?*/ &TYPE, /*?*/ &MCYCLES);
// 883 %if type<=3 %start
if (TYPE > 3) goto L_00E1;
// 884 instr out(order, opd, 0, 2, mcycles)
INSTROUT(ORDER, OPD, 0, 2, MCYCLES);
// 885 %if type=0 %start
if (TYPE != 0) goto L_00E2;
// 886 fault("Cannot evaluate operand")
FAULT(_imp_str_literal_size(63, "Cannot evaluate operand"));
// 887 %finish %else %unless type=3 %start
goto L_00E3;
L_00E2:;
if (TYPE == 3) goto L_00E4;
// 888 fault("Illegal operand")
FAULT(_imp_str_literal_size(63, "Illegal operand"));
// 889 %finish
L_00E4:;
L_00E3:;
// 890 %finish %else %if type=4 %start
goto L_00E5;
L_00E1:;
if (TYPE != 4) goto L_00E6;
// 891 instr out(order+16_70, opd, 0, 5, mcycles)
INSTROUT(ORDER + 112, OPD, 0, 5, MCYCLES);
// 892 %else
goto L_00E5;
L_00E6:;
// 893 instr out(order+16_60, post, opd, type-3, mcycles)
INSTROUT(ORDER + 96, POST, OPD, TYPE - 3, MCYCLES);
// 894 %finish
L_00E5:;
// 895 %continue
goto L_001F;
// 896 !----------------------------------------------------------------------
// 897 itype3(15): ! inherent, direct, indexed, extended
case_ITYPE3_15:;
// 898 analise operand(eca, post, opd, type, mcycles)
ANALISEOPERAND(ECA, /*?*/ &POST, /*?*/ &OPD, /*?*/ &TYPE, /*?*/ &MCYCLES);
// 899 %if type<=1 %start
if (TYPE > 1) goto L_00E7;
// 900 accop = 1 %if type=1
if (TYPE != 1) goto L_00E8;
ACCOP = 1;
L_00E8:;
// 901 instr out(order+16_40, 0, 0, 1, mcycles)
INSTROUT(ORDER + 64, 0, 0, 1, MCYCLES);
// 902 fault("Cannot evaluate operand") %if type=0
if (TYPE != 0) goto L_00E9;
FAULT(_imp_str_literal_size(63, "Cannot evaluate operand"));
L_00E9:;
// 903 %finish %else %if type=2 %start
goto L_00EA;
L_00E7:;
if (TYPE != 2) goto L_00EB;
// 904 accop = 1
ACCOP = 1;
// 905 instr out(order+16_50, 0, 0, 1, mcycles)
INSTROUT(ORDER + 80, 0, 0, 1, MCYCLES);
// 906 %finish %else %if type=3 %start
goto L_00EA;
L_00EB:;
if (TYPE != 3) goto L_00EC;
// 907 instr out(order, opd, 0, 2, mcycles+2)
INSTROUT(ORDER, OPD, 0, 2, MCYCLES + 2);
// 908 %finish %else %if type=4 %start
goto L_00EA;
L_00EC:;
if (TYPE != 4) goto L_00ED;
// 909 instr out(order+16_70, opd, 0, 5, mcycles+2)
INSTROUT(ORDER + 112, OPD, 0, 5, MCYCLES + 2);
// 910 %else
goto L_00EA;
L_00ED:;
// 911 instr out(order+16_60, post, opd, type-3, mcycles+2)
INSTROUT(ORDER + 96, POST, OPD, TYPE - 3, MCYCLES + 2);
// 912 %finish
L_00EA:;
// 913 %continue
goto L_001F;
// 914 !-----------------------------------------------------------------------
// 915 itype3(16): ! lea
case_ITYPE3_16:;
// 916 accop = 1
ACCOP = 1;
// 917 %if acc('X') %start
if (!(ACC(88))) goto L_00EE;
// 918 order = 16_30
ORDER = 48;
// 919 %finish %else %if acc('Y') %start
goto L_00EF;
L_00EE:;
if (!(ACC(89))) goto L_00F0;
// 920 order = 16_31
ORDER = 49;
// 921 %finish %else %if acc('S') %start
goto L_00EF;
L_00F0:;
if (!(ACC(83))) goto L_00F1;
// 922 order = 16_32
ORDER = 50;
// 923 %finish %else %if acc('U') %start
goto L_00EF;
L_00F1:;
if (!(ACC(85))) goto L_00F2;
// 924 order = 16_33
ORDER = 51;
// 925 %else
goto L_00EF;
L_00F2:;
// 926 acc fault = 2
ACCFAULT = 2;
// 927 accop = 0
ACCOP = 0;
// 928 %finish
L_00EF:;
// 929 skip blanks
SKIPBLANKS();
// 930 !-----------------------------------------------------------------------
// 931 itype3(17): ! load effective address
case_ITYPE3_17:;
// 932 analise operand(eca, post, opd, type, mcycles)
ANALISEOPERAND(ECA, /*?*/ &POST, /*?*/ &OPD, /*?*/ &TYPE, /*?*/ &MCYCLES);
// 933 %if type<=5 %start
if (TYPE > 5) goto L_00F3;
// 934 instr out(order, post, opd, 2, mcycles)
INSTROUT(ORDER, POST, OPD, 2, MCYCLES);
// 935 %if type=0 %start
if (TYPE != 0) goto L_00F4;
// 936 fault("Cannot evaluate operand")
FAULT(_imp_str_literal_size(63, "Cannot evaluate operand"));
// 937 %finish %else %unless type=5 %start
goto L_00F5;
L_00F4:;
if (TYPE == 5) goto L_00F6;
// 938 fault("Illegal operand")
FAULT(_imp_str_literal_size(63, "Illegal operand"));
// 939 %finish
L_00F6:;
L_00F5:;
// 940 %else
goto L_00F7;
L_00F3:;
// 941 instr out(order, post, opd, type-3, mcycles)
INSTROUT(ORDER, POST, OPD, TYPE - 3, MCYCLES);
// 942 %finish
L_00F7:;
// 943 fault("Index register not specified") %unless acc fault=0
if (ACCFAULT == 0) goto L_00F8;
FAULT(_imp_str_literal_size(63, "Index register not specified"));
L_00F8:;
// 944 %continue
goto L_001F;
// 945 !-----------------------------------------------------------------------
// 946 itype3(18): ! tfr,exg
case_ITYPE3_18:;
// 947 %if transfer reg(post) %start
if (!(TRANSFERREG(/*?*/ &POST))) goto L_00F9;
// 948 accop = 1 %unless more items
if (MOREITEMS()) goto L_00FA;
ACCOP = 1;
L_00FA:;
// 949 %if transfer reg(opd) %start
if (!(TRANSFERREG(/*?*/ &OPD))) goto L_00FB;
// 950 instr out(order, (post<<4)!opd, 0, 2, mcycles)
INSTROUT(ORDER, POST << 4 | OPD, 0, 2, MCYCLES);
// 951 %if (post<8 %and 8<=opd) %or (opd<8 %and 8<=post) %start
if (POST >= 8) goto L_00FC;
if (8 <= OPD) goto L_00FD;
L_00FC:;
if (OPD >= 8) goto L_00FE;
if (8 > POST) goto L_00FE;
L_00FD:;
// 952 fault("Different size registers")
FAULT(_imp_str_literal_size(63, "Different size registers"));
// 953 %finish
L_00FE:;
// 954 %else
goto L_00FF;
L_00FB:;
// 955 instr out(order, post<<4, 0, 2, mcycles)
INSTROUT(ORDER, POST << 4, 0, 2, MCYCLES);
// 956 fault("Second register not specified")
FAULT(_imp_str_literal_size(63, "Second register not specified"));
// 957 %finish
L_00FF:;
// 958 %else
goto L_0100;
L_00F9:;
// 959 instr out(order, 0, 0, 2, mcycles)
INSTROUT(ORDER, 0, 0, 2, MCYCLES);
// 960 fault("Registers not specified")
FAULT(_imp_str_literal_size(63, "Registers not specified"));
// 961 %finish
L_0100:;
// 962 %continue
goto L_001F;
// 963 !-----------------------------------------------------------------------
// 964 itype3(19): ! psh, pul
case_ITYPE3_19:;
// 965 accop = 1
ACCOP = 1;
// 966 %if acc('A') %start
if (!(ACC(65))) goto L_0101;
// 967 instr out(order, 2, 0, 2, mcycles+1)
INSTROUT(ORDER, 2, 0, 2, MCYCLES + 1);
// 968 %continue
goto L_001F;
// 969 %finish %else %if acc('B') %start
L_0101:;
if (!(ACC(66))) goto L_0102;
// 970 instr out(order, 4, 0, 2, mcycles+1)
INSTROUT(ORDER, 4, 0, 2, MCYCLES + 1);
// 971 %continue
goto L_001F;
// 972 %finish %else %if acc('U') %start
L_0102:;
if (!(ACC(85))) goto L_0103;
// 973 order = order+2
ORDER = ORDER + 2;
// 974 %finish %else %unless acc('S') %start
goto L_0104;
L_0103:;
if (ACC(83)) goto L_0105;
// 975 accop = 0
ACCOP = 0;
// 976 acc fault = 1
ACCFAULT = 1;
// 977 %finish
L_0105:;
L_0104:;
// 978 skip blanks
SKIPBLANKS();
// 979 !-----------------------------------------------------------------------
// 980 itype3(20): ! pshu, pshs, pulu, puls
case_ITYPE3_20:;
// 981 post = 0
POST = 0;
// 982 i = 0
I = 0;
// 983 j = 0
J = 0;
// 984 %cycle
L_0106:;
// 985 %if cc %start
if (!(CC())) goto L_0107;
// 986 mcycles = mcycles+1 %and post = post!1 %if post&1=0
if (POST & 1 != 0) goto L_0108;
MCYCLES = MCYCLES + 1;
POST = POST | 1;
L_0108:;
// 987 %finish %else %if acc('A') %start
goto L_0109;
L_0107:;
if (!(ACC(65))) goto L_010A;
// 988 mcycles = mcycles+1 %and post = post!2 %if post&2=0
if (POST & 2 != 0) goto L_010B;
MCYCLES = MCYCLES + 1;
POST = POST | 2;
L_010B:;
// 989 %finish %else %if acc('B') %start
goto L_0109;
L_010A:;
if (!(ACC(66))) goto L_010C;
// 990 mcycles = mcycles+1 %and post = post!4 %if post&4=0
if (POST & 4 != 0) goto L_010D;
MCYCLES = MCYCLES + 1;
POST = POST | 4;
L_010D:;
// 991 %finish %else %if acc('D') %start
goto L_0109;
L_010C:;
if (!(ACC(68))) goto L_010E;
// 992 mcycles = mcycles+1 %and post = post!2 %if post&2=0
if (POST & 2 != 0) goto L_010F;
MCYCLES = MCYCLES + 1;
POST = POST | 2;
L_010F:;
// 993 mcycles = mcycles+1 %and post = post!4 %if post&4=0
if (POST & 4 != 0) goto L_0110;
MCYCLES = MCYCLES + 1;
POST = POST | 4;
L_0110:;
// 994 %finish %else %if dp %start
goto L_0109;
L_010E:;
if (!(DP())) goto L_0111;
// 995 mcycles = mcycles+1 %and post = post!8 %if post&8=0
if (POST & 8 != 0) goto L_0112;
MCYCLES = MCYCLES + 1;
POST = POST | 8;
L_0112:;
// 996 %finish %else %if acc('X') %start
goto L_0109;
L_0111:;
if (!(ACC(88))) goto L_0113;
// 997 mcycles = mcycles+2 %and post = post!16 %if post&16=0
if (POST & 16 != 0) goto L_0114;
MCYCLES = MCYCLES + 2;
POST = POST | 16;
L_0114:;
// 998 %finish %else %if acc('Y') %start
goto L_0109;
L_0113:;
if (!(ACC(89))) goto L_0115;
// 999 mcycles = mcycles+2 %and post = post!32 %if post&32=0
if (POST & 32 != 0) goto L_0116;
MCYCLES = MCYCLES + 2;
POST = POST | 32;
L_0116:;
// 1000 %finish %else %if acc('S') %start
goto L_0109;
L_0115:;
if (!(ACC(83))) goto L_0117;
// 1001 %if 16_36<=order<=16_37 %start
{
// Double-sided test on ORDER (Part I)
int tmp;
if (54 > (tmp = ORDER)) goto L_0118;
// Double-sided test on ORDER (Part II)
if (tmp > 55) goto L_0118;
}
// 1002 mcycles = mcycles+2 %and post = post!64 %if post&64=0
if (POST & 64 != 0) goto L_0119;
MCYCLES = MCYCLES + 2;
POST = POST | 64;
L_0119:;
// 1003 %else
goto L_011A;
L_0118:;
// 1004 i = i+1
I = I + 1;
// 1005 %finish
L_011A:;
// 1006 %finish %else %if acc('U') %start
goto L_0109;
L_0117:;
if (!(ACC(85))) goto L_011B;
// 1007 %if 16_34<=order<=16_35 %start
{
// Double-sided test on ORDER (Part I)
int tmp;
if (52 > (tmp = ORDER)) goto L_011C;
// Double-sided test on ORDER (Part II)
if (tmp > 53) goto L_011C;
}
// 1008 mcycles = mcycles+2 %and post = post!64 %if post&64=0
if (POST & 64 != 0) goto L_011D;
MCYCLES = MCYCLES + 2;
POST = POST | 64;
L_011D:;
// 1009 %else
goto L_011E;
L_011C:;
// 1010 i = i+1
I = I + 1;
// 1011 %finish
L_011E:;
// 1012 %finish %else %if pc %start
goto L_0109;
L_011B:;
if (!(PC())) goto L_011F;
// 1013 mcycles = mcycles+2 %and post = post!128 %if post&128=0
if (POST & 128 != 0) goto L_0120;
MCYCLES = MCYCLES + 2;
POST = POST | 128;
L_0120:;
// 1014 %finish %else %if pres char=',' %start
goto L_0109;
L_011F:;
if (PRESCHAR != 44) goto L_0121;
// 1015 next char
NEXTCHAR();
// 1016 %else
goto L_0109;
L_0121:;
// 1017 j = 1
J = 1;
// 1018 %exit
goto L_0122;
// 1019 %finish
L_0109:;
// 1020 %repeat %until %not more items
if (!(MOREITEMS())) goto L_0122;
goto L_0106;
L_0122:;
// 1021 instr out(order, post, 0, 2, mcycles)
INSTROUT(ORDER, POST, 0, 2, MCYCLES);
// 1022 fault("Stack not specified") %unless acc fault=0
if (ACCFAULT == 0) goto L_0123;
FAULT(_imp_str_literal_size(63, "Stack not specified"));
L_0123:;
// 1023 fault("Cannot stack stack pointer") %for i = i, -1, 1
// %for I = I, -1, 1 %cycle
{
int _initial = I;
if (invalid_for_loop(_initial, -1, 1)) _imp_signal(5, 1, 0, "Illegal cycle I = I, -1, 1");
I = _initial - (-1);
L_0124:
if (I == 1) goto L_0125;
I -= 1;
FAULT(_imp_str_literal_size(63, "Cannot stack stack pointer"));
goto L_0124;
}
L_0125:;
// 1024 fault("Illegal operand") %unless j=0
if (J == 0) goto L_0127;
FAULT(_imp_str_literal_size(63, "Illegal operand"));
L_0127:;
// 1025 %continue
goto L_001F;
// 1026 !-----------------------------------------------------------------------
// 1027 itype3(21): ! cwai,andcc,orcc
case_ITYPE3_21:;
// 1028 %if pres char='#' %start
if (PRESCHAR != 35) goto L_0128;
// 1029 next char %until pres char#bchar
L_0129:;
NEXTCHAR();
if (PRESCHAR != BCHAR) goto L_012A;
goto L_0129;
L_012A:;
// 1030 %finish
L_0128:;
// 1031 i = get opd(opd)
I = GETOPD(/*?*/ &OPD);
// 1032 instr out(order, opd, 0, 2, mcycles)
INSTROUT(ORDER, OPD, 0, 2, MCYCLES);
// 1033 %unless i=0 %start
if (I == 0) goto L_012B;
// 1034 fault("Cannot evaluate operand")
FAULT(_imp_str_literal_size(63, "Cannot evaluate operand"));
// 1035 %finish %else %unless 0<=opd<=255 %start
goto L_012C;
L_012B:;
{
// Double-sided test on OPD (Part I)
int tmp;
if (0 > (tmp = OPD)) goto L_0126;
// Double-sided test on OPD (Part II)
if (tmp <= 255) goto L_012D;
}
L_0126:;
// 1036 fault("Illegal mask")
FAULT(_imp_str_literal_size(63, "Illegal mask"));
// 1037 %finish
L_012D:;
L_012C:;
// 1038 %continue
goto L_001F;
// 1039 !-----------------------------------------------------------------------
// 1040 itype3(22): ! tab, tba
case_ITYPE3_22:;
// 1041 instr out(16_1F, (order>>8)&255, order&255, 3, mcycles)
INSTROUT(31, (unsigned int)ORDER >> 8 & 255, ORDER & 255, 3, MCYCLES);
// 1042 %continue
goto L_001F;
// 1043 !-----------------------------------------------------------------------
// 1044 itype3(23): ! swi
case_ITYPE3_23:;
// 1045 %if acc('1') %start
if (!(ACC(49))) goto L_012E;
// 1046 accop = 1
ACCOP = 1;
// 1047 %finish %else %if acc('2') %start
goto L_012F;
L_012E:;
if (!(ACC(50))) goto L_0130;
// 1048 accop = 1
ACCOP = 1;
// 1049 order = order!16_1000
ORDER = ORDER | 4096;
// 1050 mcycles = mcycles+1
MCYCLES = MCYCLES + 1;
// 1051 %finish %else %if acc('3') %start
goto L_012F;
L_0130:;
if (!(ACC(51))) goto L_0131;
// 1052 accop = 1
ACCOP = 1;
// 1053 order = order!16_1100
ORDER = ORDER | 4352;
// 1054 mcycles = mcycles+1
MCYCLES = MCYCLES + 1;
// 1055 %finish
L_0131:;
L_012F:;
// 1056 instr out(order, 0, 0, 1, mcycles)
INSTROUT(ORDER, 0, 0, 1, MCYCLES);
// 1057 %continue
goto L_001F;
// 1058 !-----------------------------------------------------------------------
// 1059 itype3(24): ! lbrn
case_ITYPE3_24:;
// 1060 instr out(order, 0, 0, 5, mcycles)
INSTROUT(ORDER, 0, 0, 5, MCYCLES);
// 1061 %continue
goto L_001F;
// 1062 !-----------------------------------------------------------------------
// 1063 itype3(25): ! sba, cba, aba
case_ITYPE3_25:;
// 1064 instr out(16_34, 16_04, order, 4, mcycles)
INSTROUT(52, 4, ORDER, 4, MCYCLES);
// 1065 %continue
goto L_001F;
// 1066 !-----------------------------------------------------------------------
// 1067 itype3(26): ! fcb
case_ITYPE3_26:;
// 1068 %cycle
L_0132:;
// 1069 %if pres char=',' %start
if (PRESCHAR != 44) goto L_0133;
// 1070 opd = 0
OPD = 0;
// 1071 i = 0
I = 0;
// 1072 %else
goto L_0134;
L_0133:;
// 1073 i = get opd(opd)
I = GETOPD(/*?*/ &OPD);
// 1074 %finish
L_0134:;
// 1075 %if cont=0 %start
if (CONT != 0) goto L_0135;
// 1076 j = lp
J = LP;
// 1077 look ahead = 1
LOOKAHEAD = 1;
// 1078 %while more items %cycle
L_0136:;
if (!(MOREITEMS())) goto L_0137;
// 1079 k = get opd(k) %unless pres char=','
if (PRESCHAR == 44) goto L_0138;
K = GETOPD(/*?*/ &K);
L_0138:;
// 1080 %repeat
goto L_0136;
L_0137:;
// 1081 look ahead = 0
LOOKAHEAD = 0;
// 1082 instr out(0, opd&255, 0, -1, 0)
INSTROUT(0, OPD & 255, 0, -1, 0);
// 1083 lp = j-1
LP = J - 1;
// 1084 next char
NEXTCHAR();
// 1085 cont = 1
CONT = 1;
// 1086 %else
goto L_0139;
L_0135:;
// 1087 instr out(0, opd&255, 0, -1, 0)
INSTROUT(0, OPD & 255, 0, -1, 0);
// 1088 %finish
L_0139:;
// 1089 fault("Invalid constant") %unless i=0 %and -128<=opd<=255
if (I != 0) goto L_013A;
{
// Double-sided test on OPD (Part I)
int tmp;
if (-128 > (tmp = OPD)) goto L_013A;
// Double-sided test on OPD (Part II)
if (tmp <= 255) goto L_013B;
}
L_013A:;
FAULT(_imp_str_literal_size(63, "Invalid constant"));
L_013B:;
// 1090 %repeat %until %not more items
if (!(MOREITEMS())) goto L_013C;
goto L_0132;
L_013C:;
// 1091 cont = 0
CONT = 0;
// 1092 %continue
goto L_001F;
// 1093 !------------------------------------------------------------------------
// 1094 itype3(27): ! fdb
case_ITYPE3_27:;
// 1095 %cycle
L_013D:;
// 1096 %if pres char=',' %start
if (PRESCHAR != 44) goto L_013E;
// 1097 opd = 0
OPD = 0;
// 1098 i = 0
I = 0;
// 1099 %else
goto L_013F;
L_013E:;
// 1100 i = get opd(opd)
I = GETOPD(/*?*/ &OPD);
// 1101 %finish
L_013F:;
// 1102 %if cont=0 %start
if (CONT != 0) goto L_0140;
// 1103 j = lp
J = LP;
// 1104 look ahead = 1
LOOKAHEAD = 1;
// 1105 %while more items %cycle
L_0141:;
if (!(MOREITEMS())) goto L_0142;
// 1106 k = get opd(k) %unless pres char=','
if (PRESCHAR == 44) goto L_0143;
K = GETOPD(/*?*/ &K);
L_0143:;
// 1107 %repeat
goto L_0141;
L_0142:;
// 1108 look ahead = 0
LOOKAHEAD = 0;
// 1109 instr out(0, opd, 0, -2, 0)
INSTROUT(0, OPD, 0, -2, 0);
// 1110 lp = j-1
LP = J - 1;
// 1111 next char
NEXTCHAR();
// 1112 cont = 1
CONT = 1;
// 1113 %else
goto L_0144;
L_0140:;
// 1114 instr out(0, opd, 0, -2, 0)
INSTROUT(0, OPD, 0, -2, 0);
// 1115 %finish
L_0144:;
// 1116 fault("Invalid constant") %unless i=0
if (I == 0) goto L_0145;
FAULT(_imp_str_literal_size(63, "Invalid constant"));
L_0145:;
// 1117 %repeat %until %not more items
if (!(MOREITEMS())) goto L_0146;
goto L_013D;
L_0146:;
// 1118 cont = 0
CONT = 0;
// 1119 %continue
goto L_001F;
// 1120 !-----------------------------------------------------------------------
// 1121 itype3(28):! equ
case_ITYPE3_28:;
// 1122 i = get opd(opd)
I = GETOPD(/*?*/ &OPD);
// 1123 instr out(0, opd, 0, -6, 0)
INSTROUT(0, OPD, 0, -6, 0);
// 1124 fault("No name to equate") %if lid=0
if (LID != 0) goto L_0147;
FAULT(_imp_str_literal_size(63, "No name to equate"));
L_0147:;
// 1125 fault("Cannot evaluate operand") %unless i=0
if (I == 0) goto L_0148;
FAULT(_imp_str_literal_size(63, "Cannot evaluate operand"));
L_0148:;
// 1126 %if lid#0 %and i=0 %and nass(lid)=3 %and nval(lid)#opd %start
if (LID == 0) goto L_0149;
if (I != 0) goto L_0149;
if (NASS[LID - 1] != 3) goto L_0149;
if (NVAL[LID - 1] == OPD) goto L_0149;
// 1127 fault("Inconsistent label")
FAULT(_imp_str_literal_size(63, "Inconsistent label"));
// 1128 nval(lid) = opd
NVAL[LID - 1] = OPD;
// 1129 %finish
L_0149:;
// 1130 %continue
goto L_001F;
// 1131 !-----------------------------------------------------------------------
// 1132 itype3(29):! org
case_ITYPE3_29:;
// 1133 i = get opd(opd)
I = GETOPD(/*?*/ &OPD);
// 1134 ca = opd %if i=0
if (I != 0) goto L_014A;
CA = OPD;
L_014A:;
// 1135 instr out(0, 0, 0, 0, 0)
INSTROUT(0, 0, 0, 0, 0);
// 1136 fault("Illegal label") %unless lid=0
if (LID == 0) goto L_014B;
FAULT(_imp_str_literal_size(63, "Illegal label"));
L_014B:;
// 1137 fault("Cannot evaluate operand") %unless i=0
if (I == 0) goto L_014C;
FAULT(_imp_str_literal_size(63, "Cannot evaluate operand"));
L_014C:;
// 1138 %continue
goto L_001F;
// 1139 !-----------------------------------------------------------------------
// 1140 itype3(30): ! setdp
case_ITYPE3_30:;
// 1141 i = get opd(opd)
I = GETOPD(/*?*/ &OPD);
// 1142 dp contents = opd<<8 %if i=0 %and 0<=opd<=255
if (I != 0) goto L_014D;
{
// Double-sided test on OPD (Part I)
int tmp;
if (0 > (tmp = OPD)) goto L_014D;
// Double-sided test on OPD (Part II)
if (tmp > 255) goto L_014D;
}
DPCONTENTS = OPD << 8;
L_014D:;
// 1143 instr out(0, opd, 0, -3, 0)
INSTROUT(0, OPD, 0, -3, 0);
// 1144 fault("Illegal label") %unless lid=0
if (LID == 0) goto L_014E;
FAULT(_imp_str_literal_size(63, "Illegal label"));
L_014E:;
// 1145 %unless i=0 %start
if (I == 0) goto L_014F;
// 1146 fault("Cannot evaluate operand")
FAULT(_imp_str_literal_size(63, "Cannot evaluate operand"));
// 1147 %finish %else %unless 0<=opd<=255 %start
goto L_0150;
L_014F:;
{
// Double-sided test on OPD (Part I)
int tmp;
if (0 > (tmp = OPD)) goto L_0151;
// Double-sided test on OPD (Part II)
if (tmp <= 255) goto L_0152;
}
L_0151:;
// 1148 fault("Invalid direct page contents")
FAULT(_imp_str_literal_size(63, "Invalid direct page contents"));
// 1149 %finish
L_0152:;
L_0150:;
// 1150 %continue
goto L_001F;
// 1151 !-----------------------------------------------------------------------
// 1152 itype3(31): ! rmb
case_ITYPE3_31:;
// 1153 i = get opd(opd)
I = GETOPD(/*?*/ &OPD);
// 1154 instr out(0, opd, 0, -4, 0)
INSTROUT(0, OPD, 0, -4, 0);
// 1155 %if i=0 %start
if (I != 0) goto L_0153;
// 1156 ca = ca+opd
CA = CA + OPD;
// 1157 %else
goto L_0154;
L_0153:;
// 1158 fault("Cannot evaluate operand")
FAULT(_imp_str_literal_size(63, "Cannot evaluate operand"));
// 1159 %finish
L_0154:;
// 1160 %continue
goto L_001F;
// 1161 !-----------------------------------------------------------------------
// 1162 itype3(32):! fcc
case_ITYPE3_32:;
// 1163 non dense = 1
NONDENSE = 1;
// 1164 %if '0'<=pres char<='9' %start
{
// Double-sided test on PRESCHAR (Part I)
int tmp;
if (48 > (tmp = PRESCHAR)) goto L_0155;
// Double-sided test on PRESCHAR (Part II)
if (tmp > 57) goto L_0155;
}
// 1165 i = 0
I = 0;
// 1166 j = lp
J = LP;
// 1167 %cycle
L_0156:;
// 1168 i = i*10+pres char-'0'
I = I * 10 + PRESCHAR - 48;
// 1169 next char
NEXTCHAR();
// 1170 %repeat %until %not '0'<=pres char<='9'
{
// Double-sided test on PRESCHAR (Part I)
int tmp;
if (48 > (tmp = PRESCHAR)) goto L_0157;
// Double-sided test on PRESCHAR (Part II)
if (tmp > 57) goto L_0157;
}
goto L_0156;
L_0157:;
// 1171 %if pres char=',' %start
if (PRESCHAR != 44) goto L_0158;
// 1172 next char
NEXTCHAR();
// 1173 %if i=0 %start
if (I != 0) goto L_0159;
// 1174 instr out(0, 0, 0, 0, 0)
INSTROUT(0, 0, 0, 0, 0);
// 1175 fault("Invalid string")
FAULT(_imp_str_literal_size(63, "Invalid string"));
// 1176 %else
goto L_015A;
L_0159:;
// 1177 %while i>0 %cycle
L_015B:;
if (I <= 0) goto L_015C;
// 1178 %if pres char=nl %start
if (PRESCHAR != 10) goto L_015D;
// 1179 opd = ' '
OPD = 32;
// 1180 %else
goto L_015E;
L_015D:;
// 1181 opd = line(lp)
OPD = LINE[LP - 1];
// 1182 next char
NEXTCHAR();
// 1183 %finish
L_015E:;
// 1184 i = i-1
I = I - 1;
// 1185 %if cont=0 %start
if (CONT != 0) goto L_015F;
// 1186 j = lp
J = LP;
// 1187 %for k = 1, 1, i %cycle
// %for K = 1, 1, I %cycle
{
int _final = I;
if (invalid_for_loop(1, 1, _final)) _imp_signal(5, 1, 0, "Illegal cycle K = 1, 1, I");
K = 0;
L_0160:
if (K == _final) goto L_0161;
K += 1;
// 1188 %exit %if pres char=nl
if (PRESCHAR != 10) goto L_0162;
goto L_0161;
L_0162:;
// 1189 next char
NEXTCHAR();
// 1190 %repeat
goto L_0160;
}
L_0161:;
// 1191 instr out(0, opd, 0, -1, 0)
INSTROUT(0, OPD, 0, -1, 0);
// 1192 lp = j-1
LP = J - 1;
// 1193 next char
NEXTCHAR();
// 1194 cont = 1
CONT = 1;
// 1195 %else
goto L_0163;
L_015F:;
// 1196 instr out(0, opd, 0, -1, 0)
INSTROUT(0, OPD, 0, -1, 0);
// 1197 %finish
L_0163:;
// 1198 %repeat
goto L_015B;
L_015C:;
// 1199 cont = 0
CONT = 0;
// 1200 %finish
L_015A:;
// 1201 %continue
goto L_001F;
// 1202 %else
L_0158:;
// 1203 lp = j-1
LP = J - 1;
// 1204 next char
NEXTCHAR();
// 1205 %finish
// 1206 %finish
L_0155:;
// 1207 %if pres char<' ' %start
if (PRESCHAR >= 32) goto L_0164;
// 1208 next char %while pres char#nl
L_0165:;
if (PRESCHAR == 10) goto L_0166;
NEXTCHAR();
goto L_0165;
L_0166:;
// 1209 instr out(0, 0, 0, 0, 0)
INSTROUT(0, 0, 0, 0, 0);
// 1210 fault("Invalid string delimiter")
FAULT(_imp_str_literal_size(63, "Invalid string delimiter"));
// 1211 %else
goto L_0167;
L_0164:;
// 1212 delim = pres char
DELIM = PRESCHAR;
// 1213 next char
NEXTCHAR();
// 1214 %cycle
L_0168:;
// 1215 %if pres char=nl %start
if (PRESCHAR != 10) goto L_0169;
// 1216 %if cont=0 %start
if (CONT != 0) goto L_016A;
// 1217 instr out(0, 0, 0, 0, 0)
INSTROUT(0, 0, 0, 0, 0);
// 1218 fault("Invalid string")
FAULT(_imp_str_literal_size(63, "Invalid string"));
// 1219 %finish
L_016A:;
// 1220 %exit
goto L_016B;
// 1221 %finish
L_0169:;
// 1222 %if pres char=delim %start
if (PRESCHAR != DELIM) goto L_016C;
// 1223 next char
NEXTCHAR();
// 1224 %unless pres char=delim %start
if (PRESCHAR == DELIM) goto L_016D;
// 1225 %if cont=0 %start
if (CONT != 0) goto L_016E;
// 1226 instr out(0, 0, 0, 0, 0)
INSTROUT(0, 0, 0, 0, 0);
// 1227 fault("Invalid string")
FAULT(_imp_str_literal_size(63, "Invalid string"));
// 1228 %finish
L_016E:;
// 1229 %exit
goto L_016B;
// 1230 %finish
L_016D:;
// 1231 %finish
L_016C:;
// 1232 %if cont=0 %start
if (CONT != 0) goto L_016F;
// 1233 i = lp
I = LP;
// 1234 %cycle
L_0170:;
// 1235 next char %while pres char#delim %and pres char#nl
L_0171:;
if (PRESCHAR == DELIM) goto L_0172;
if (PRESCHAR == 10) goto L_0172;
NEXTCHAR();
goto L_0171;
L_0172:;
// 1236 %if pres char=delim %start
if (PRESCHAR != DELIM) goto L_0173;
// 1237 next char
NEXTCHAR();
// 1238 %finish
L_0173:;
// 1239 %exit %unless pres char=delim
if (PRESCHAR == DELIM) goto L_0174;
goto L_0175;
L_0174:;
// 1240 next char
NEXTCHAR();
// 1241 %repeat
goto L_0170;
L_0175:;
// 1242 instr out(0, line(i), 0, -1, 0)
INSTROUT(0, LINE[I - 1], 0, -1, 0);
// 1243 lp = i-1
LP = I - 1;
// 1244 next char
NEXTCHAR();
// 1245 cont = 1
CONT = 1;
// 1246 %else
goto L_0176;
L_016F:;
// 1247 instr out(0, line(lp), 0, -1, 0)
INSTROUT(0, LINE[LP - 1], 0, -1, 0);
// 1248 %finish
L_0176:;
// 1249 next char
NEXTCHAR();
// 1250 %repeat
goto L_0168;
L_016B:;
// 1251 cont = 0
CONT = 0;
// 1252 %finish
L_0167:;
// 1253 %continue
goto L_001F;
// 1254 !-----------------------------------------------------------------------
// 1255 itype3(33): ! nam
case_ITYPE3_33:;
// 1256 non dense = 1
NONDENSE = 1;
// 1257 header = ""
_imp_strncpy(/*?*/ &HEADER, ({
__typeof__(_imp_string255) tmp; /*B*/
tmp = _imp_str_literal("");
(void *)&tmp;
}),
/*max:*/ 41);
// 1258 %while pres char#nl %cycle
L_0177:;
if (PRESCHAR == 10) goto L_0178;
// 1259 header <- header.to string(line(lp))
_imp_strncpy(/*?*/ &HEADER, ({
__typeof__(_imp_string255) tmp; /*C*/
tmp = *({
_imp_string255 tmp = _imp_join((_imp_string *)/*?*/ &HEADER, ({
__typeof__(_imp_string1) tmp; /*E*/
tmp = _imp_TOSTRING(LINE[LP - 1]);
(void *)&tmp;
}));
(_imp_string255 *)&tmp;
});
(void *)&tmp;
}),
/*max:*/ 41);
/* truncated copy of no more than 41 chars */
if (*_imp_LENGTH((_imp_string *)/*?*/ &HEADER) > 41) *_imp_LENGTH((_imp_string *)/*?*/ &HEADER) = 41;
// 1260 next char
NEXTCHAR();
// 1261 %repeat
goto L_0177;
L_0178:;
// 1262 instr out(0, 0, 0, -7, 0)
INSTROUT(0, 0, 0, -7, 0);
// 1263 fault("Illegal label") %unless lid=0
if (LID == 0) goto L_0179;
FAULT(_imp_str_literal_size(63, "Illegal label"));
L_0179:;
// 1264 %continue
goto L_001F;
// 1265 !-----------------------------------------------------------------------
// 1266 itype3(34): ! opt
case_ITYPE3_34:;
// 1267 i = lp
I = LP;
// 1268 j = bchar
J = BCHAR;
// 1269 %cycle
L_017A:;
// 1270 %if get option(opt) %start
if (!(GETOPTION(/*?*/ &OPT))) goto L_017B;
// 1271 ->option action(opt)
OPTIONACTION_line = __LINE__;
OPTIONACTION_file = __FILE__;
OPTIONACTION_index = OPT;
goto case_OPTIONACTION_dispatch;
// 1272 option action(1):
case_OPTIONACTION_1:;
// 1273 option action(2):
case_OPTIONACTION_2:;
// 1274 bchar = ' '
BCHAR = 32;
// 1275 -> next option
goto U_1004;
// 1276 option action(3):
case_OPTIONACTION_3:;
// 1277 option action(4):
case_OPTIONACTION_4:;
// 1278 bchar = -1
BCHAR = -1;
// 1279 -> next option
goto U_1004;
// 1280 option action(5):
case_OPTIONACTION_5:;
// 1281 option action(6):
case_OPTIONACTION_6:;
// 1282 cflag = 1
CFLAG = 1;
// 1283 -> next option
goto U_1004;
// 1284 option action(7):
case_OPTIONACTION_7:;
// 1285 option action(8):
case_OPTIONACTION_8:;
// 1286 cflag = 0
CFLAG = 0;
// 1287 -> next option
goto U_1004;
// 1288 option action(9):
case_OPTIONACTION_9:;
// 1289 drad = 4
DRAD = 4;
// 1290 sp1 = 3
SP1 = 3;
// 1291 sp2 = 6
SP2 = 6;
// 1292 -> next option
goto U_1004;
// 1293 option action(10):
case_OPTIONACTION_10:;
// 1294 drad = 5
DRAD = 5;
// 1295 sp1 = 3
SP1 = 3;
// 1296 sp2 = 5
SP2 = 5;
// 1297 -> next option
goto U_1004;
// 1298 option action(11):
case_OPTIONACTION_11:;
// 1299 drad = 8
DRAD = 8;
// 1300 sp1 = 2
SP1 = 2;
// 1301 sp2 = 4
SP2 = 4;
// 1302 -> next option
goto U_1004;
// 1303 option action(12):
case_OPTIONACTION_12:;
// 1304 option action(13):
case_OPTIONACTION_13:;
// 1305 option action(14):
case_OPTIONACTION_14:;
// 1306 option action(15):
case_OPTIONACTION_15:;
// 1307 eflag = 1
EFLAG = 1;
// 1308 -> next option
goto U_1004;
// 1309 option action(16):
case_OPTIONACTION_16:;
// 1310 option action(17):
case_OPTIONACTION_17:;
// 1311 eflag = 0
EFLAG = 0;
// 1312 -> next option
goto U_1004;
// 1313 option action(18):
case_OPTIONACTION_18:;
// 1314 option action(19):
case_OPTIONACTION_19:;
// 1315 fflag = 1
FFLAG = 1;
// 1316 -> next option
goto U_1004;
// 1317 option action(20):
case_OPTIONACTION_20:;
// 1318 option action(21):
case_OPTIONACTION_21:;
// 1319 fflag = 0
FFLAG = 0;
// 1320 -> next option
goto U_1004;
// 1321 option action(22):
case_OPTIONACTION_22:;
// 1322 option action(23):
case_OPTIONACTION_23:;
// 1323 gflag = 1
GFLAG = 1;
// 1324 -> next option
goto U_1004;
// 1325 option action(24):
case_OPTIONACTION_24:;
// 1326 option action(25):
case_OPTIONACTION_25:;
// 1327 gflag = 0
GFLAG = 0;
// 1328 -> next option
goto U_1004;
// 1329 option action(26):
case_OPTIONACTION_26:;
// 1330 option action(27):
case_OPTIONACTION_27:;
// 1331 lflag = 2
LFLAG = 2;
// 1332 -> next option
goto U_1004;
// 1333 option action(28):
case_OPTIONACTION_28:;
// 1334 option action(29):
case_OPTIONACTION_29:;
// 1335 lflag = 1
LFLAG = 1;
// 1336 -> next option
goto U_1004;
// 1337 option action(30):
case_OPTIONACTION_30:;
// 1338 option action(31):
case_OPTIONACTION_31:;
// 1339 lflag = 0
LFLAG = 0;
// 1340 -> next option
goto U_1004;
// 1341 option action(32):
case_OPTIONACTION_32:;
// 1342 option action(33):
case_OPTIONACTION_33:;
// 1343 pflag = 3
PFLAG = 3;
// 1344 -> next option
goto U_1004;
// 1345 option action(34):
case_OPTIONACTION_34:;
// 1346 option action(35):
case_OPTIONACTION_35:;
// 1347 pflag = 0
PFLAG = 0;
// 1348 -> next option
goto U_1004;
// 1349 option action(36):
case_OPTIONACTION_36:;
// 1350 option action(37):
case_OPTIONACTION_37:;
// 1351 sflag = 1
SFLAG = 1;
// 1352 -> next option
goto U_1004;
// 1353 option action(38):
case_OPTIONACTION_38:;
// 1354 option action(39):
case_OPTIONACTION_39:;
// 1355 sflag = 0
SFLAG = 0;
// 1356 -> next option
goto U_1004;
// 1357 option action(40):
case_OPTIONACTION_40:;
// 1358 option action(41):
case_OPTIONACTION_41:;
// 1359 tflag = 1
TFLAG = 1;
// 1360 -> next option
goto U_1004;
// 1361 option action(42):
case_OPTIONACTION_42:;
// 1362 option action(43):
case_OPTIONACTION_43:;
// 1363 tflag = 0
TFLAG = 0;
// 1364 -> next option
goto U_1004;
// 1365 option action(44):
case_OPTIONACTION_44:;
// 1366 option action(45):
case_OPTIONACTION_45:;
// 1367 wflag = 1
WFLAG = 1;
// 1368 -> next option
goto U_1004;
// 1369 option action(46):
case_OPTIONACTION_46:;
// 1370 option action(47):
case_OPTIONACTION_47:;
// 1371 wflag = 0
WFLAG = 0;
// 1372 -> next option
goto U_1004;
// 1373 option action(48):
case_OPTIONACTION_48:;
// 1374 option action(49):
case_OPTIONACTION_49:;
// 1375 xflag = 1
XFLAG = 1;
// 1376 -> next option
goto U_1004;
// 1377 option action(50):
case_OPTIONACTION_50:;
// 1378 option action(51):
case_OPTIONACTION_51:;
// 1379 xflag = 0
XFLAG = 0;
// 1380 option action(-1):
case_OPTIONACTION_M1:;
// 1381 option action(0):
case_OPTIONACTION_0:;
// 1382 next option:
U_1004:;
// 1383 %finish
L_017B:;
// 1384 %repeat %until %not more items
if (!(MOREITEMS())) goto L_017D;
goto L_017A;
L_017D:;
// 1385 %if lflag=2 %start
if (LFLAG != 2) goto L_017E;
// 1386 sp3 = line width-sp1-sp2*3-cflag*3-wflag-11
SP3 = 78 - SP1 - SP2 * 3 - CFLAG * 3 - WFLAG - 11;
// 1387 %else
goto L_017F;
L_017E:;
// 1388 sp3 = line width-wflag-7
SP3 = 78 - WFLAG - 7;
// 1389 %finish
L_017F:;
// 1390 instr out(0, 0, 0, -7, 0)
INSTROUT(0, 0, 0, -7, 0);
// 1391 fault("Illegal label") %unless lid=0
if (LID == 0) goto L_0180;
FAULT(_imp_str_literal_size(63, "Illegal label"));
L_0180:;
// 1392 lp = i-1
LP = I - 1;
// 1393 next char
NEXTCHAR();
// 1394 bchar = j
BCHAR = J;
// 1395 %cycle
L_0181:;
// 1396 %if get option(opt) %start
if (!(GETOPTION(/*?*/ &OPT))) goto L_0182;
// 1397 %if opt=1 %or opt=2 %start
if (OPT == 1) goto L_0183;
if (OPT != 2) goto L_0184;
L_0183:;
// 1398 bchar = ' '
BCHAR = 32;
// 1399 %finish %else %if opt=3 %or opt=4 %start
goto L_0185;
L_0184:;
if (OPT == 3) goto L_0186;
if (OPT != 4) goto L_0187;
L_0186:;
// 1400 bchar = -1
BCHAR = -1;
// 1401 %finish %else %if opt<0 %start
goto L_0185;
L_0187:;
if (OPT >= 0) goto L_0188;
// 1402 fault("Unknown option")
FAULT(_imp_str_literal_size(63, "Unknown option"));
// 1403 %finish
L_0188:;
L_0185:;
// 1404 %else
goto L_0189;
L_0182:;
// 1405 fault("Cannot evaluate operand")
FAULT(_imp_str_literal_size(63, "Cannot evaluate operand"));
// 1406 %finish
L_0189:;
// 1407 %repeat %until %not more items
if (!(MOREITEMS())) goto L_018A;
goto L_0181;
L_018A:;
// 1408 %continue
goto L_001F;
// 1409 !-----------------------------------------------------------------------
// 1410 itype3(35): ! page
case_ITYPE3_35:;
// 1411 %unless lid=0 %start
if (LID == 0) goto L_018B;
// 1412 instr out(0, 0, 0, -7, 0)
INSTROUT(0, 0, 0, -7, 0);
// 1413 fault("Illegal label")
FAULT(_imp_str_literal_size(63, "Illegal label"));
// 1414 %finish
L_018B:;
// 1415 nline(lines on page) %unless lflag=0
if (LFLAG == 0) goto L_018C;
NLINE(66);
L_018C:;
// 1416 %continue
goto L_001F;
// 1417 !-----------------------------------------------------------------------
// 1418 itype3(36): ! spc
case_ITYPE3_36:;
// 1419 i = get opd(opd)
I = GETOPD(/*?*/ &OPD);
// 1420 %unless lid=0 %start
if (LID == 0) goto L_018D;
// 1421 instr out(0, 0, 0, -7, 0)
INSTROUT(0, 0, 0, -7, 0);
// 1422 fault("Illegal label")
FAULT(_imp_str_literal_size(63, "Illegal label"));
// 1423 %finish
L_018D:;
// 1424 %unless lflag=0 %start
if (LFLAG == 0) goto L_018E;
// 1425 %if i=0 %start
if (I != 0) goto L_018F;
// 1426 nline(opd)
NLINE(OPD);
// 1427 %else
goto L_0190;
L_018F:;
// 1428 nline(1)
NLINE(1);
// 1429 %finish
L_0190:;
// 1430 %finish
L_018E:;
// 1431 !-----------------------------------------------------------------------
// 1432 %repeat
L_001F:;
goto L_0096;
// 1433 !-----------------------------------------------------------------------
// 1434 itype3(37):! end
case_ITYPE3_37:;
// 1435 instr out(0, 0, 0, -7, 0)
INSTROUT(0, 0, 0, -7, 0);
// 1436 fault("Illegal label") %unless lid=0
if (LID == 0) goto L_0191;
FAULT(_imp_str_literal_size(63, "Illegal label"));
L_0191:;
// 1437 %for i = 1, 1, nnames %cycle
// %for I = 1, 1, NNAMES %cycle
{
int _final = NNAMES;
if (invalid_for_loop(1, 1, _final)) _imp_signal(5, 1, 0, "Illegal cycle I = 1, 1, NNAMES");
I = 0;
L_0192:
if (I == _final) goto L_0193;
I += 1;
// 1438 fault("Symbol ".name(i)." has no value") %if nass(i)=0
if (NASS[I - 1] != 0) goto L_0195;
FAULT(
*({
__typeof__(_imp_string255) tmp = *({
_imp_string255 tmp = _imp_join((_imp_string *)/*?*/ &*({
_imp_string255 tmp =
_imp_join((_imp_string *)/*?*/ _imp_str_literal_ptr("Symbol "),
(_imp_string *)/*?*/ &NAME[I - 1]);
(_imp_string255 *)&tmp;
}),
(_imp_string *)/*?*/ _imp_str_literal_ptr(" has no value"));
(_imp_string255 *)&tmp;
}) /*q*/;
(_imp_string63 *)&tmp;
})
);
L_0195:;
// 1439 %repeat
goto L_0192;
}
L_0193:;
// 1440 !-----------------------------------------------------------------------
// 1441 %unless xflag=0 %start
if (XFLAG == 0) goto L_0196;
// 1442 sqs(1, nnames)
SQS(1, NNAMES);
// 1443 nline(lines on page)
NLINE(66);
// 1444 print string(" Symbol Cross Reference Table")
_imp_PRINTSTRING(_imp_str_literal(" Symbol Cross Reference Table"));
// 1445 nline(2)
NLINE(2);
// 1446 sp3 = (linewidth-6-sp2)//6
SP3 = ((long)(78 - 6 - SP2) / (long)6);
// 1447 %for i = 1, 1, nnames %cycle
// %for I = 1, 1, NNAMES %cycle
{
int _final = NNAMES;
if (invalid_for_loop(1, 1, _final)) _imp_signal(5, 1, 0, "Illegal cycle I = 1, 1, NNAMES");
I = 0;
L_0197:
if (I == _final) goto L_0198;
I += 1;
// 1448 print string(name(i))
_imp_PRINTSTRING(
*({
__typeof__(_imp_string6) tmp = NAME[I - 1] /*q*/;
(_imp_string255 *)&tmp;
})
);
// 1449 spaces(7-length(name(i)))
_imp_SPACES(7 - *_imp_LENGTH((_imp_string255 *)/*p*/ /*?*/ &NAME[I - 1]));
// 1450 %if nass(i)=0 %or nass(i)=2 %or nass(i)=4 %start
if (NASS[I - 1] == 0) goto L_019A;
if (NASS[I - 1] == 2) goto L_019A;
if (NASS[I - 1] != 4) goto L_019B;
L_019A:;
// 1451 print symbol('*') %for j = 1, 1, sp2
// %for J = 1, 1, SP2 %cycle
{
int _final = SP2;
if (invalid_for_loop(1, 1, _final)) _imp_signal(5, 1, 0, "Illegal cycle J = 1, 1, SP2");
J = 0;
L_019C:
if (J == _final) goto L_019D;
J += 1;
_imp_PRINTSYMBOL(42);
goto L_019C;
}
L_019D:;
// 1452 %else
goto L_019F;
L_019B:;
// 1453 print number(nval(i), 2)
PRINTNUMBER(NVAL[I - 1], 2);
// 1454 %finish
L_019F:;
// 1455 j = xhead(i)
J = XHEAD[I - 1];
// 1456 k = 0
K = 0;
// 1457 %cycle
L_01A0:;
// 1458 l = xlink(j)
L = XLINK[J - 1];
// 1459 xlink(j) = k
XLINK[J - 1] = K;
// 1460 k = j
K = J;
// 1461 j = l
J = L;
// 1462 %repeat %until j=0
if (J == 0) goto L_01A1;
goto L_01A0;
L_01A1:;
// 1463 j = 0
J = 0;
// 1464 %cycle
L_01A2:;
// 1465 %if j=sp3 %start
if (J != SP3) goto L_01A3;
// 1466 nline(1)
NLINE(1);
// 1467 spaces(7+sp2)
_imp_SPACES(7 + SP2);
// 1468 j = 0
J = 0;
// 1469 %finish
L_01A3:;
// 1470 write(xentry(k), 5)
_imp_WRITE(XENTRY[K - 1], 5);
// 1471 j = j+1
J = J + 1;
// 1472 k = xlink(k)
K = XLINK[K - 1];
// 1473 %repeat %until k=0
if (K == 0) goto L_01A4;
goto L_01A2;
L_01A4:;
// 1474 nline(1)
NLINE(1);
// 1475 %repeat
goto L_0197;
}
L_0198:;
// 1476 %finish %else %unless sflag=0 %start
goto L_01A5;
L_0196:;
if (SFLAG == 0) goto L_01A6;
// 1477 sqs(1, nnames)
SQS(1, NNAMES);
// 1478 nline(lines on page)
NLINE(66);
// 1479 print string(" Symbol Table")
_imp_PRINTSTRING(_imp_str_literal(" Symbol Table"));
// 1480 nline(2)
NLINE(2);
// 1481 sp3 = (line width+8-sp2)//15
SP3 = ((long)(78 + 8 - SP2) / (long)15);
// 1482 sp1 = (linewidth-sp3*15+9-sp2)>>1
SP1 = (unsigned int)78 - SP3 * 15 + 9 - SP2 >> 1;
// 1483 %for j = 1, 1, nnames %cycle
// %for J = 1, 1, NNAMES %cycle
{
int _final = NNAMES;
if (invalid_for_loop(1, 1, _final)) _imp_signal(5, 1, 0, "Illegal cycle J = 1, 1, NNAMES");
J = 0;
L_01A7:
if (J == _final) goto L_01A8;
J += 1;
// 1484 %if (j-1)=(j-1)//sp3*sp3 %start
if (J - 1 != ((long)(J - 1) / (long)SP3) * SP3) goto L_01A9;
// 1485 nline(1)
NLINE(1);
// 1486 spaces(sp2)
_imp_SPACES(SP2);
// 1487 %else
goto L_01AA;
L_01A9:;
// 1488 spaces(8-sp2)
_imp_SPACES(8 - SP2);
// 1489 %finish
L_01AA:;
// 1490 print string(name(j))
_imp_PRINTSTRING(
*({
__typeof__(_imp_string6) tmp = NAME[J - 1] /*q*/;
(_imp_string255 *)&tmp;
})
);
// 1491 spaces(7-length(name(j)))
_imp_SPACES(7 - *_imp_LENGTH((_imp_string255 *)/*p*/ /*?*/ &NAME[J - 1]));
// 1492 %if nass(j)=0 %or nass(j)=2 %or nass(j)=4 %start
if (NASS[J - 1] == 0) goto L_01AB;
if (NASS[J - 1] == 2) goto L_01AB;
if (NASS[J - 1] != 4) goto L_01AC;
L_01AB:;
// 1493 print symbol('*') %for i = 1, 1, sp2
// %for I = 1, 1, SP2 %cycle
{
int _final = SP2;
if (invalid_for_loop(1, 1, _final)) _imp_signal(5, 1, 0, "Illegal cycle I = 1, 1, SP2");
I = 0;
L_01AD:
if (I == _final) goto L_01AE;
I += 1;
_imp_PRINTSYMBOL(42);
goto L_01AD;
}
L_01AE:;
// 1494 %else
goto L_01AF;
L_01AC:;
// 1495 print number(nval(j),2)
PRINTNUMBER(NVAL[J - 1], 2);
// 1496 %finish
L_01AF:;
// 1497 %repeat
goto L_01A7;
}
L_01A8:;
// 1498 nline(1)
NLINE(1);
// 1499 %finish
L_01A6:;
L_01A5:;
// 1500 nline(2)
NLINE(2);
// 1501 spaces(2)
_imp_SPACES(2);
// 1502 %if faults=0 %start
if (FAULTS != 0) goto L_01B0;
// 1503 print string("No")
_imp_PRINTSTRING(_imp_str_literal("No"));
// 1504 %else
goto L_01B1;
L_01B0:;
// 1505 write(faults, 0)
_imp_WRITE(FAULTS, 0);
// 1506 %finish
L_01B1:;
// 1507 print string(" fault")
_imp_PRINTSTRING(_imp_str_literal(" fault"));
// 1508 print symbol('s') %unless faults=1
if (FAULTS == 1) goto L_01B2;
_imp_PRINTSYMBOL(115);
L_01B2:;
// 1509 print string(" in this assembly.")
_imp_PRINTSTRING(_imp_str_literal(" in this assembly."));
// 1510 newline
_imp_NEWLINE();
// 1511 select output(0)
_imp_SELECTOUTPUT(0);
// 1512 spaces(2)
_imp_SPACES(2);
// 1513 %if faults=0 %start
if (FAULTS != 0) goto L_01B3;
// 1514 write(ln, 0)
_imp_WRITE(LN, 0);
// 1515 print string(" line")
_imp_PRINTSTRING(_imp_str_literal(" line"));
// 1516 print symbol('s') %unless ln=1
if (LN == 1) goto L_01B4;
_imp_PRINTSYMBOL(115);
L_01B4:;
// 1517 print string(" assembled.")
_imp_PRINTSTRING(_imp_str_literal(" assembled."));
// 1518 %else
goto L_01B5;
L_01B3:;
// 1519 write(faults, 0)
_imp_WRITE(FAULTS, 0);
// 1520 print string(" fault")
_imp_PRINTSTRING(_imp_str_literal(" fault"));
// 1521 print symbol('s') %unless faults=1
if (FAULTS == 1) goto L_01B6;
_imp_PRINTSYMBOL(115);
L_01B6:;
// 1522 print string(" in this assembly.")
_imp_PRINTSTRING(_imp_str_literal(" in this assembly."));
// 1523 %finish
L_01B5:;
// 1524 new line
_imp_NEWLINE();
// 1525 close
CLOSE();
// 1526 %stop
_imp_stop(0);
// 1527 !-------------------------------------------------------
// 1528 %predicate matches(%string(255) source, pattern,
int MATCHES(_imp_string255 SOURCE, _imp_string255 PATTERN, int MIN, int *I) {
// 1529+ %integer min, %integer %name i)
// 1530 %integer l
int L;
// 1531 l = length(pattern)
L = *_imp_LENGTH((_imp_string255 *)/*p*/ /*?*/ &PATTERN);
// 1532 %if length(pattern)>=length(source) %start
if (*_imp_LENGTH((_imp_string255 *)/*p*/ /*?*/ &PATTERN) < *_imp_LENGTH((_imp_string255 *)/*p*/ /*?*/ &SOURCE))
goto L_01B7;
// 1533 l = length(source)
L = *_imp_LENGTH((_imp_string255 *)/*p*/ /*?*/ &SOURCE);
// 1534 %else
goto L_01B8;
L_01B7:;
// 1535 l = length(pattern)
L = *_imp_LENGTH((_imp_string255 *)/*p*/ /*?*/ &PATTERN);
// 1536 %finish
L_01B8:;
// 1537 %for i = 1, 1, l %cycle
// %for *I = 1, 1, L %cycle
{
int _final = L;
if (invalid_for_loop(1, 1, _final)) _imp_signal(5, 1, 0, "Illegal cycle *I = 1, 1, L");
*I = 0;
L_01B9:
if (*I == _final) goto L_01BA;
*I += 1;
// 1538 %unless charno(source, i)=charno(pattern, i) %start
if (*_imp_CHARNO((_imp_string255 *)/*p*/ /*?*/ &SOURCE, *I) ==
*_imp_CHARNO((_imp_string255 *)/*p*/ /*?*/ &PATTERN, *I))
goto L_01BB;
// 1539 %if 'A'<=charno(source, i)<='Z' %start
{
// Double-sided test on _imp_CHARNO((_imp_string255 *)/*p*//*?*/&SOURCE, *I) (Part I)
unsigned char tmp;
if (65 > (tmp = *_imp_CHARNO((_imp_string255 *)/*p*/ /*?*/ &SOURCE, *I))) goto L_01BC;
// Double-sided test on _imp_CHARNO((_imp_string255 *)/*p*//*?*/&SOURCE, *I) (Part II)
if (tmp > 90) goto L_01BC;
}
// 1540 %false
return 0 /*FALSE*/;
// 1541 %finish %else %if i<=min %start
L_01BC:;
if (*I > MIN) goto L_01BD;
// 1542 %false
return 0 /*FALSE*/;
// 1543 %else
L_01BD:;
// 1544 %true
return 1 /*TRUE*/;
// 1545 %finish
// 1546 %finish
L_01BB:;
// 1547 %repeat
goto L_01B9;
}
L_01BA:;
// 1548 i = i+1
*I = *I + 1;
// 1549 %false %if i<=min
if (*I > MIN) goto L_01BE;
return 0 /*FALSE*/;
L_01BE:;
// 1550 %true
return 1 /*TRUE*/;
// 1551 %end
} /* end of MATCHES */
// 1552 !---------------------------------------------------------------------
// 1553 %string(255) %function lc(%string(255) source)
_imp_string255 LC(_imp_string255 SOURCE) {
// 1554 %string(255) result
_imp_string255 RESULT;
// 1555 %integer i
int I;
// 1556
// 1557 result = ""
_imp_strncpy(/*?*/ &RESULT, ({
__typeof__(_imp_string255) tmp; /*B*/
tmp = _imp_str_literal("");
(void *)&tmp;
}),
/*max:*/ 255);
// 1558 %for i = 1, 1, length(source) %cycle
// %for I = 1, 1, *_imp_LENGTH((_imp_string255 *)/*p*//*?*/&SOURCE) %cycle
{
int _final = *_imp_LENGTH((_imp_string255 *)/*p*/ /*?*/ &SOURCE);
if (invalid_for_loop(1, 1, _final))
_imp_signal(5, 1, 0, "Illegal cycle I = 1, 1, *_imp_LENGTH((_imp_string255 *)/*p*//*?*/&SOURCE)");
I = 0;
L_01BF:
if (I == _final) goto L_01C0;
I += 1;
// 1559 %if 'A'<=charno(source, i)&127<='Z' %start
{
// Double-sided test on *_imp_CHARNO((_imp_string255 *)/*p*//*?*/&SOURCE, I) & 127 (Part I)
unsigned char tmp;
if (65 > (tmp = *_imp_CHARNO((_imp_string255 *)/*p*/ /*?*/ &SOURCE, I) & 127)) goto L_01C1;
// Double-sided test on *_imp_CHARNO((_imp_string255 *)/*p*//*?*/&SOURCE, I) & 127 (Part II)
if (tmp > 90) goto L_01C1;
}
// 1560 result = result.tostring((charno(source, i)&127)+'a'-'A')
_imp_strncpy(/*?*/ &RESULT, ({
__typeof__(_imp_string255) tmp; /*B*/
tmp = *({
_imp_string255 tmp =
_imp_join((_imp_string *)/*?*/ &RESULT, ({
__typeof__(_imp_string1) tmp; /*E*/
tmp = _imp_TOSTRING(
(*_imp_CHARNO((_imp_string255 *)/*p*/ /*?*/ &SOURCE, I) & 127) + 97 - 65);
(void *)&tmp;
}));
(_imp_string255 *)&tmp;
});
(void *)&tmp;
}),
/*max:*/ 255);
// 1561 %else
goto L_01C2;
L_01C1:;
// 1562 result = result.tostring(charno(source, i)&127)
_imp_strncpy(/*?*/ &RESULT, ({
__typeof__(_imp_string255) tmp; /*B*/
tmp = *({
_imp_string255 tmp = _imp_join(
(_imp_string *)/*?*/ &RESULT, ({
__typeof__(_imp_string1) tmp; /*E*/
tmp = _imp_TOSTRING(*_imp_CHARNO((_imp_string255 *)/*p*/ /*?*/ &SOURCE, I) & 127);
(void *)&tmp;
}));
(_imp_string255 *)&tmp;
});
(void *)&tmp;
}),
/*max:*/ 255);
// 1563 %finish
L_01C2:;
// 1564 %repeat
goto L_01BF;
}
L_01C0:;
// 1565 %result = result
return *(_imp_string255 *)/*?*/ &RESULT;
// 1566 %end
} /* end of LC */
// 1567 !---------------------------------------------------------------------
// 1568 %predicate is typed(%string(255) source, %string(255)%name file)
int ISTYPED(_imp_string255 SOURCE, _imp_string255 * FILE) {
// 1569 %integer i
int I;
// 1570
// 1571 %for i = 1, 1, length(source) %cycle
// %for I = 1, 1, *_imp_LENGTH((_imp_string255 *)/*p*//*?*/&SOURCE) %cycle
{
int _final = *_imp_LENGTH((_imp_string255 *)/*p*/ /*?*/ &SOURCE);
if (invalid_for_loop(1, 1, _final))
_imp_signal(5, 1, 0, "Illegal cycle I = 1, 1, *_imp_LENGTH((_imp_string255 *)/*p*//*?*/&SOURCE)");
I = 0;
L_01C3:
if (I == _final) goto L_01C4;
I += 1;
// 1572 file = substring(source, 1, i-1) %and %true %if charno(source, i)='.'
if (*_imp_CHARNO((_imp_string255 *)/*p*/ /*?*/ &SOURCE, I) != 46) goto L_01C5;
*FILE = _imp_SUBSTRING((_imp_string255 *)/*p*/ /*?*/ &SOURCE, 1, I - 1);
return 1 /*TRUE*/;
L_01C5:;
// 1573 %repeat
goto L_01C3;
}
L_01C4:;
// 1574 file = source
*FILE = SOURCE;
// 1575 %false
return 0 /*FALSE*/;
// 1576 %end
} /* end of ISTYPED */
// 1577 !-----------------------------------------------------------------------
// 1578 %routine read line
void READLINE(void) {
// 1579 %integer ch
int CH;
// 1580 %integer i
int I;
// 1581 %on %event 9 %start
if (!_imp_on_event(9)) goto L_01C6;
// 1582 %if i=1 %start
if (I != 1) goto L_01C7;
// 1583 line(1) = ' '
LINE[0] = 32;
// 1584 line(2) = 'E'
LINE[1] = 69;
// 1585 line(3) = 'N'
LINE[2] = 78;
// 1586 line(4) = 'D'
LINE[3] = 68;
// 1587 line(5) = nl
LINE[4] = 10;
// 1588 %else
goto L_01C8;
L_01C7:;
// 1589 line(i) = nl
LINE[I - 1] = 10;
// 1590 %finish
L_01C8:;
// 1591 -> eof exit
goto U_1005;
// 1592 %finish
L_01C6:;
// 1593
// 1594 ln=ln+1
LN = LN + 1;
// 1595 %for i = 1, 1, max line+1 %cycle
// %for I = 1, 1, 512 + 1 %cycle
{
int _final = 512 + 1;
if (invalid_for_loop(1, 1, _final)) _imp_signal(5, 1, 0, "Illegal cycle I = 1, 1, 512 + 1");
I = 0;
L_01C9:
if (I == _final) goto L_01CA;
I += 1;
// 1596 read symbol(ch); line(i) = ch
_imp_READSYMBOL(/*?*/ &CH);
LINE[I - 1] = CH;
// 1597 %exit %if line(i)&127=nl %or line(i)&127=12
if (LINE[I - 1] & 127 == 10) goto L_0199;
if (LINE[I - 1] & 127 != 12) goto L_01CB;
L_0199:;
goto L_01CA;
L_01CB:;
// 1598 %repeat
goto L_01C9;
}
L_01CA:;
// 1599 read symbol(ch) %and line(i) = ch %while line(i)&127#nl %and line(i)&127#12
L_01CC:;
if (LINE[I - 1] & 127 == 10) goto L_01CD;
if (LINE[I - 1] & 127 == 12) goto L_01CD;
_imp_READSYMBOL(/*?*/ &CH);
LINE[I - 1] = CH;
goto L_01CC;
L_01CD:;
// 1600 eof exit:
U_1005:;
// 1601 lp = 0
LP = 0;
// 1602 next char
NEXTCHAR();
// 1603 %end
return;
} /* end of READLINE */
// 1604 !-----------------------------------------------------------------------
// 1605 %routine next char
void NEXTCHAR(void) {
// 1606
// 1607 lp = lp+1
LP = LP + 1;
// 1608 pres char = line(lp)&127
PRESCHAR = LINE[LP - 1] & 127;
// 1609 %if 'a'<=pres char<='z' %start
{
// Double-sided test on PRESCHAR (Part I)
int tmp;
if (97 > (tmp = PRESCHAR)) goto L_01CE;
// Double-sided test on PRESCHAR (Part II)
if (tmp > 122) goto L_01CE;
}
// 1610 pres char = pres char+'A'-'a'
PRESCHAR = PRESCHAR + 65 - 97;
// 1611 %finish %else %if pres char=12 %start
goto L_01CF;
L_01CE:;
if (PRESCHAR != 12) goto L_01D0;
// 1612 pres char = nl
PRESCHAR = 10;
// 1613 %finish %else %if pres char=9 %start
goto L_01CF;
L_01D0:;
if (PRESCHAR != 9) goto L_01D1;
// 1614 pres char = ' '
PRESCHAR = 32;
// 1615 %finish
L_01D1:;
L_01CF:;
// 1616 %end
return;
} /* end of NEXTCHAR */
// 1617 !-----------------------------------------------------------------------
// 1618 %routine skip blanks
void SKIPBLANKS(void) {
// 1619
// 1620 next char %while pres char=' '
L_01D2:;
if (PRESCHAR != 32) goto L_01D3;
NEXTCHAR();
goto L_01D2;
L_01D3:;
// 1621 %end
return;
} /* end of SKIPBLANKS */
// 1622 !-----------------------------------------------------------------------
// 1623 %predicate more items
int MOREITEMS(void) {
// 1624
// 1625 next char %while pres char=bchar
L_01D4:;
if (PRESCHAR != BCHAR) goto L_01D5;
NEXTCHAR();
goto L_01D4;
L_01D5:;
// 1626 %false %unless pres char=','
if (PRESCHAR == 44) goto L_01D6;
return 0 /*FALSE*/;
L_01D6:;
// 1627 next char %until pres char#bchar
L_01D7:;
NEXTCHAR();
if (PRESCHAR != BCHAR) goto L_01D8;
goto L_01D7;
L_01D8:;
// 1628 %true
return 1 /*TRUE*/;
// 1629 %end
} /* end of MOREITEMS */
// 1630 !-----------------------------------------------------------------------
// 1631 %predicate get option(%integer %name opt)
int GETOPTION(int *OPT) {
// 1632 %string(11) option
_imp_string11 OPTION;
// 1633
// 1634 %if 'A'<=pres char<='Z' %start
{
// Double-sided test on PRESCHAR (Part I)
int tmp;
if (65 > (tmp = PRESCHAR)) goto L_01D9;
// Double-sided test on PRESCHAR (Part II)
if (tmp > 90) goto L_01D9;
}
// 1635 option = to string(pres char)
_imp_strncpy(/*?*/ &OPTION, ({
__typeof__(_imp_string1) tmp; /*B*/
tmp = _imp_TOSTRING(PRESCHAR);
(void *)&tmp;
}),
/*max:*/ 11);
// 1636 %cycle
L_01DA:;
// 1637 next char
NEXTCHAR();
// 1638 %exit %unless 'A'<=pres char<='Z' %or '0'<=pres char<='9'
{
// Double-sided test on PRESCHAR (Part I)
int tmp;
if (65 > (tmp = PRESCHAR)) goto L_01DB;
// Double-sided test on PRESCHAR (Part II)
if (tmp <= 90) goto L_01DC;
}
L_01DB:;
{
// Double-sided test on PRESCHAR (Part I)
int tmp;
if (48 > (tmp = PRESCHAR)) goto L_01DD;
// Double-sided test on PRESCHAR (Part II)
if (tmp <= 57) goto L_01DC;
}
L_01DD:;
goto L_01DE;
L_01DC:;
// 1639 option <- option.to string(pres char)
_imp_strncpy(/*?*/ &OPTION, ({
__typeof__(_imp_string255) tmp; /*C*/
tmp = *({
_imp_string255 tmp = _imp_join((_imp_string *)/*?*/ &OPTION, ({
__typeof__(_imp_string1) tmp; /*E*/
tmp = _imp_TOSTRING(PRESCHAR);
(void *)&tmp;
}));
(_imp_string255 *)&tmp;
});
(void *)&tmp;
}),
/*max:*/ 11);
/* truncated copy of no more than 11 chars */
if (*_imp_LENGTH((_imp_string *)/*?*/ &OPTION) > 11) *_imp_LENGTH((_imp_string *)/*?*/ &OPTION) = 11;
// 1640 %repeat
goto L_01DA;
L_01DE:;
// 1641 %for opt = 1, 1, no options %cycle
// %for *OPT = 1, 1, 51 %cycle
{
*OPT = 0;
L_01DF:
if (*OPT == 51) goto L_01E0;
*OPT += 1;
// 1642 %true %if option text(opt)=option
if (_imp_strcmp((_imp_string *)/*?*/ &OPTIONTEXT[*OPT - 1], (_imp_string *)/*?*/ &OPTION) != 0) goto L_01E2;
return 1 /*TRUE*/;
L_01E2:;
// 1643 %repeat
goto L_01DF;
}
L_01E0:;
// 1644 opt = -1
*OPT = -1;
// 1645 %true
return 1 /*TRUE*/;
// 1646 %else
L_01D9:;
// 1647 opt = 0
*OPT = 0;
// 1648 %false %unless pres char=','
if (PRESCHAR == 44) goto L_01E3;
return 0 /*FALSE*/;
L_01E3:;
// 1649 next char
NEXTCHAR();
// 1650 %true
return 1 /*TRUE*/;
// 1651 %finish
// 1652 %end
} /* end of GETOPTION */
// 1653 !-----------------------------------------------------------------------
// 1654 %integerfn get name(%integername nid)
int GETNAME(int *NID) {
// 1655 %string(6) n
_imp_string6 N;
// 1656 %integer h,l
int H;
int L;
// 1657
// 1658 nid = 0 %and %result = 1 %unless 'A'<=pres char<='Z'
{
// Double-sided test on PRESCHAR (Part I)
int tmp;
if (65 > (tmp = PRESCHAR)) goto L_0194;
// Double-sided test on PRESCHAR (Part II)
if (tmp <= 90) goto L_01E4;
}
L_0194:;
*NID = 0;
return 1;
L_01E4:;
// 1659 h=pres char-'0'
H = PRESCHAR - 48;
// 1660 n=tostring(pres char)
_imp_strncpy(/*?*/ &N, ({
__typeof__(_imp_string1) tmp; /*B*/
tmp = _imp_TOSTRING(PRESCHAR);
(void *)&tmp;
}),
/*max:*/ 6);
// 1661 l = 1
L = 1;
// 1662 %cycle
L_01E5:;
// 1663 next char
NEXTCHAR();
// 1664 %exit %unless 'A'<=pres char<='Z' %or '0'<=pres char<='9'
{
// Double-sided test on PRESCHAR (Part I)
int tmp;
if (65 > (tmp = PRESCHAR)) goto L_01E1;
// Double-sided test on PRESCHAR (Part II)
if (tmp <= 90) goto L_01E6;
}
L_01E1:;
{
// Double-sided test on PRESCHAR (Part I)
int tmp;
if (48 > (tmp = PRESCHAR)) goto L_01E7;
// Double-sided test on PRESCHAR (Part II)
if (tmp <= 57) goto L_01E6;
}
L_01E7:;
goto L_01E8;
L_01E6:;
// 1665 l = l+1
L = L + 1;
// 1666 h=h<<4+pres char-'0' %and n=n.tostring(pres char) %unless l>6
if (L > 6) goto L_01E9;
H = (H << 4) + PRESCHAR - 48;
_imp_strncpy(/*?*/ &N, ({
__typeof__(_imp_string255) tmp; /*B*/
tmp = *({
_imp_string255 tmp = _imp_join((_imp_string *)/*?*/ &N, ({
__typeof__(_imp_string1) tmp; /*E*/
tmp = _imp_TOSTRING(PRESCHAR);
(void *)&tmp;
}));
(_imp_string255 *)&tmp;
});
(void *)&tmp;
}),
/*max:*/ 6);
L_01E9:;
// 1667 %repeat
goto L_01E5;
L_01E8:;
// 1668 h=h&32767
H = H & 32767;
// 1669 h=h-h//nhash*nhash
H = H - ((long)H / (long)67) * 67;
// 1670 l=hnlink(h)
L = HNLINK[H];
// 1671 %while l#0 %cycle
L_01EA:;
if (L == 0) goto L_01EB;
// 1672 %if name(l)=n %start
if (_imp_strcmp((_imp_string *)/*?*/ &NAME[L - 1], (_imp_string *)/*?*/ &N) != 0) goto L_01EC;
// 1673 nid = l
*NID = L;
// 1674 %if pass=4 %and xxentries<=xentries %and %c
if (PASS != 4) goto L_01ED;
if (XXENTRIES > 4096) goto L_01ED;
if (LOOKAHEAD != 0) goto L_01ED;
// 1675+ look ahead=0 %start
// 1676 xxentries = xxentries+1
XXENTRIES = XXENTRIES + 1;
// 1677 %if xxentries>xentries %start
if (XXENTRIES <= 4096) goto L_01EE;
// 1678 fault("Too many references")
FAULT(_imp_str_literal_size(63, "Too many references"));
// 1679 %else
goto L_01EF;
L_01EE:;
// 1680 xlink(xxentries) = xhead(l)
XLINK[XXENTRIES - 1] = XHEAD[L - 1];
// 1681 xentry(xxentries) = ln
XENTRY[XXENTRIES - 1] = LN;
// 1682 xhead(l) = xxentries
XHEAD[L - 1] = XXENTRIES;
// 1683 %finish
L_01EF:;
// 1684 %finish
L_01ED:;
// 1685 %result = 0
return 0;
// 1686 %finish
L_01EC:;
// 1687 l=nlink(l)
L = NLINK[L - 1];
// 1688 %repeat
goto L_01EA;
L_01EB:;
// 1689 fault("Too many names") %and %stop %if nnames=names
if (NNAMES != 1023) goto L_01F0;
FAULT(_imp_str_literal_size(63, "Too many names"));
_imp_stop(0);
L_01F0:;
// 1690 nnames = nnames+1
NNAMES = NNAMES + 1;
// 1691 name(nnames) = n
_imp_strncpy(/*?*/ &NAME[NNAMES - 1], ({
__typeof__(_imp_string6) tmp; /*B*/
tmp = N;
(void *)&tmp;
}),
/*max:*/ 6);
// 1692 nlink(nnames) = hnlink(h)
NLINK[NNAMES - 1] = HNLINK[H];
// 1693 %if n="A" %or n="B" %or n="CC" %or n="DP" %or n="X" %or %c
if (_imp_strcmp((_imp_string *)/*?*/ &N, (_imp_string *)/*?*/ _imp_str_literal_ptr("A")) == 0) goto L_01F1;
if (_imp_strcmp((_imp_string *)/*?*/ &N, (_imp_string *)/*?*/ _imp_str_literal_ptr("B")) == 0) goto L_01F1;
if (_imp_strcmp((_imp_string *)/*?*/ &N, (_imp_string *)/*?*/ _imp_str_literal_ptr("CC")) == 0) goto L_01F1;
if (_imp_strcmp((_imp_string *)/*?*/ &N, (_imp_string *)/*?*/ _imp_str_literal_ptr("DP")) == 0) goto L_01F1;
if (_imp_strcmp((_imp_string *)/*?*/ &N, (_imp_string *)/*?*/ _imp_str_literal_ptr("X")) == 0) goto L_01F1;
if (_imp_strcmp((_imp_string *)/*?*/ &N, (_imp_string *)/*?*/ _imp_str_literal_ptr("Y")) == 0) goto L_01F1;
if (_imp_strcmp((_imp_string *)/*?*/ &N, (_imp_string *)/*?*/ _imp_str_literal_ptr("U")) == 0) goto L_01F1;
if (_imp_strcmp((_imp_string *)/*?*/ &N, (_imp_string *)/*?*/ _imp_str_literal_ptr("S")) == 0) goto L_01F1;
if (_imp_strcmp((_imp_string *)/*?*/ &N, (_imp_string *)/*?*/ _imp_str_literal_ptr("PC")) == 0) goto L_01F1;
if (_imp_strcmp((_imp_string *)/*?*/ &N, (_imp_string *)/*?*/ _imp_str_literal_ptr("PCR")) != 0) goto L_01F2;
L_01F1:;
// 1694+ n="Y" %or n="U" %or n="S" %or n="PC" %or n="PCR" %start
// 1695 nass(nnames) = 2
NASS[NNAMES - 1] = 2;
// 1696 %else
goto L_01F3;
L_01F2:;
// 1697 nass(nnames) = 0
NASS[NNAMES - 1] = 0;
// 1698 %finish
L_01F3:;
// 1699 nval(nnames) = 0
NVAL[NNAMES - 1] = 0;
// 1700 %if pass=4 %and xxentries<=xentries %start
if (PASS != 4) goto L_01F4;
if (XXENTRIES > 4096) goto L_01F4;
// 1701 xxentries = xxentries+1
XXENTRIES = XXENTRIES + 1;
// 1702 %if xxentries>xentries %start
if (XXENTRIES <= 4096) goto L_01F5;
// 1703 fault("Too many references")
FAULT(_imp_str_literal_size(63, "Too many references"));
// 1704 %else
goto L_01F6;
L_01F5:;
// 1705 xlink(xxentries) = 0
XLINK[XXENTRIES - 1] = 0;
// 1706 xentry(xxentries) = ln
XENTRY[XXENTRIES - 1] = LN;
// 1707 xhead(nnames) = xxentries
XHEAD[NNAMES - 1] = XXENTRIES;
// 1708 %finish
L_01F6:;
// 1709 %else
goto L_01F7;
L_01F4:;
// 1710 xhead(nnames) = 0
XHEAD[NNAMES - 1] = 0;
// 1711 %finish
L_01F7:;
// 1712 hnlink(h) = nnames
HNLINK[H] = NNAMES;
// 1713 nid = nnames
*NID = NNAMES;
// 1714 %result=0
return 0;
// 1715 %end
} /* end of GETNAME */
// 1716 !-----------------------------------------------------------------------
// 1717 %predicate get instr(%integername iid)
int GETINSTR(int *IID) {
// 1718 %string(5) i
_imp_string5 I;
// 1719 %integer h,l
int H;
int L;
// 1720
// 1721 iid=0
*IID = 0;
// 1722 %false %unless 'A'<=pres char<='Z'
{
// Double-sided test on PRESCHAR (Part I)
int tmp;
if (65 > (tmp = PRESCHAR)) goto L_01F8;
// Double-sided test on PRESCHAR (Part II)
if (tmp <= 90) goto L_01F9;
}
L_01F8:;
return 0 /*FALSE*/;
L_01F9:;
// 1723 h=pres char-'0'
H = PRESCHAR - 48;
// 1724 i=tostring(pres char)
_imp_strncpy(/*?*/ &I, ({
__typeof__(_imp_string1) tmp; /*B*/
tmp = _imp_TOSTRING(PRESCHAR);
(void *)&tmp;
}),
/*max:*/ 5);
// 1725 %for l = 2, 1, 5 %cycle
// %for L = 2, 1, 5 %cycle
{
L = 1;
L_01FA:
if (L == 5) goto L_01FB;
L += 1;
// 1726 next char
NEXTCHAR();
// 1727 -> goti %unless 'A'<=pres char<='Z' %or '0'<=pres char<='9'
{
// Double-sided test on PRESCHAR (Part I)
int tmp;
if (65 > (tmp = PRESCHAR)) goto L_01FD;
// Double-sided test on PRESCHAR (Part II)
if (tmp <= 90) goto L_01FE;
}
L_01FD:;
{
// Double-sided test on PRESCHAR (Part I)
int tmp;
if (48 > (tmp = PRESCHAR)) goto L_01FF;
// Double-sided test on PRESCHAR (Part II)
if (tmp <= 57) goto L_01FE;
}
L_01FF:;
goto U_1006;
L_01FE:;
// 1728 h=h<<4+pres char-'0'
H = (H << 4) + PRESCHAR - 48;
// 1729 i=i.tostring(pres char)
_imp_strncpy(/*?*/ &I, ({
__typeof__(_imp_string255) tmp; /*B*/
tmp = *({
_imp_string255 tmp = _imp_join((_imp_string *)/*?*/ &I, ({
__typeof__(_imp_string1) tmp; /*E*/
tmp = _imp_TOSTRING(PRESCHAR);
(void *)&tmp;
}));
(_imp_string255 *)&tmp;
});
(void *)&tmp;
}),
/*max:*/ 5);
// 1730 %repeat
goto L_01FA;
}
L_01FB:;
// 1731 next char
NEXTCHAR();
// 1732 %false %if 'A'<=pres char<='Z'
{
// Double-sided test on PRESCHAR (Part I)
int tmp;
if (65 > (tmp = PRESCHAR)) goto L_0200;
// Double-sided test on PRESCHAR (Part II)
if (tmp > 90) goto L_0200;
}
return 0 /*FALSE*/;
L_0200:;
// 1733 goti: h=h&32767
U_1006:;
H = H & 32767;
// 1734 h=h-h//ihash*ihash
H = H - ((long)H / (long)59) * 59;
// 1735 l=hilink(h)
L = HILINK[H];
// 1736 %while l#0 %cycle
L_0201:;
if (L == 0) goto L_0202;
// 1737 iid=l %and %true %if instr(l)=i
if (_imp_strcmp((_imp_string *)/*?*/ &INSTR[L - 1], (_imp_string *)/*?*/ &I) != 0) goto L_0203;
*IID = L;
return 1 /*TRUE*/;
L_0203:;
// 1738 l=ilink(l)
L = ILINK[L - 1];
// 1739 %repeat
goto L_0201;
L_0202:;
// 1740 %false
return 0 /*FALSE*/;
// 1741 %end
} /* end of GETINSTR */
// 1742 !-----------------------------------------------------------------------
// 1743 %routine evaluate(%integer %name a, %integer b, %byte %integer op)
void EVALUATE(int *A, int B, unsigned char OP) {
// 1744
// 1745 %if op='+' %start
if (OP != 43) goto L_0204;
// 1746 a = a+b
*A = *A + B;
// 1747 %finish %else %if op='-' %start
goto L_0205;
L_0204:;
if (OP != 45) goto L_0206;
// 1748 a = a-b
*A = *A - B;
// 1749 %finish %else %if op='*' %start
goto L_0205;
L_0206:;
if (OP != 42) goto L_0207;
// 1750 a = a*b
*A = *A * B;
// 1751 %finish %else %if op='/' %start
goto L_0205;
L_0207:;
if (OP != 47) goto L_0208;
// 1752 a = a//b
*A = ((long)*A / (long)B);
// 1753 %finish %else %if op='|' %start
goto L_0205;
L_0208:;
if (OP != 124) goto L_0209;
// 1754 a = a-a//b*b
*A = *A - ((long)*A / (long)B) * B;
// 1755 %finish %else %if op='!' %start
goto L_0205;
L_0209:;
if (OP != 33) goto L_020A;
// 1756 a = a!b
*A = *A | B;
// 1757 %finish %else %if op='&' %start
goto L_0205;
L_020A:;
if (OP != 38) goto L_020B;
// 1758 a = a&b
*A = *A & B;
// 1759 %finish %else %if op='\' %start
goto L_0205;
L_020B:;
if (OP != 92) goto L_020C;
// 1760 a = a!!b
*A = *A ^ B;
// 1761 %finish %else %if op='<' %start
goto L_0205;
L_020C:;
if (OP != 60) goto L_020D;
// 1762 a = a<<b
*A = *A << B;
// 1763 %finish %else %if op='>' %start
goto L_0205;
L_020D:;
if (OP != 62) goto L_020E;
// 1764 a = a>>b
*A = (unsigned int)*A >> B;
// 1765 %finish
L_020E:;
L_0205:;
// 1766 %end
return;
} /* end of EVALUATE */
// 1767 !-----------------------------------------------------------------------
// 1768 %integer %function get term(%integer %name opd)
int GETTERM(int *OPD) {
// 1769 %integer i
int I;
// 1770
// 1771 %while pres char='+' %cycle
L_020F:;
if (PRESCHAR != 43) goto L_0210;
// 1772 next char %until pres char#bchar
L_0211:;
NEXTCHAR();
if (PRESCHAR != BCHAR) goto L_0212;
goto L_0211;
L_0212:;
// 1773 %repeat
goto L_020F;
L_0210:;
// 1774 %if pres char='-' %start
if (PRESCHAR != 45) goto L_0213;
// 1775 next char %until pres char#bchar
L_0214:;
NEXTCHAR();
if (PRESCHAR != BCHAR) goto L_0215;
goto L_0214;
L_0215:;
// 1776 i = get term(opd)
I = GETTERM(OPD);
// 1777 opd = -opd
*OPD = -*OPD;
// 1778 %finish %else %if pres char='\' %start
goto L_0216;
L_0213:;
if (PRESCHAR != 92) goto L_0217;
// 1779 next char %until pres char#bchar
L_0218:;
NEXTCHAR();
if (PRESCHAR != BCHAR) goto L_0219;
goto L_0218;
L_0219:;
// 1780 i = get term(opd)
I = GETTERM(OPD);
// 1781 opd = \opd
*OPD = (~*OPD);
// 1782 %finish %else %if pres char='(' %start
goto L_0216;
L_0217:;
if (PRESCHAR != 40) goto L_021A;
// 1783 next char %until pres char#bchar
L_021B:;
NEXTCHAR();
if (PRESCHAR != BCHAR) goto L_021C;
goto L_021B;
L_021C:;
// 1784 i = get expression(opd)
I = GETEXPRESSION(OPD);
// 1785 %if i=0 %start
if (I != 0) goto L_021D;
// 1786 next char %while pres char=bchar
L_021E:;
if (PRESCHAR != BCHAR) goto L_021F;
NEXTCHAR();
goto L_021E;
L_021F:;
// 1787 %if pres char=')' %start
if (PRESCHAR != 41) goto L_0220;
// 1788 next char
NEXTCHAR();
// 1789 %else
goto L_0221;
L_0220:;
// 1790 i = 1
I = 1;
// 1791 %finish
L_0221:;
// 1792 %finish
L_021D:;
// 1793 %finish %else %if get name(i)=0 %start
goto L_0216;
L_021A:;
if (GETNAME(/*?*/ &I) != 0) goto L_0222;
// 1794 %if pass=1 %or nass(i)=1 %or nass(i)=3 %start
if (PASS == 1) goto L_0223;
if (NASS[I - 1] == 1) goto L_0223;
if (NASS[I - 1] != 3) goto L_0224;
L_0223:;
// 1795 opd = nval(i)
*OPD = NVAL[I - 1];
// 1796 i = 0
I = 0;
// 1797 %else
goto L_0225;
L_0224:;
// 1798 i = 1
I = 1;
// 1799 %finish
L_0225:;
// 1800 %else
goto L_0216;
L_0222:;
// 1801 i = get const(opd)
I = GETCONST(OPD);
// 1802 %finish
L_0216:;
// 1803 %result = i
return I;
// 1804 %end
} /* end of GETTERM */
// 1805 !-----------------------------------------------------------------------
// 1806 %integer %function get expression(%integer %name opd)
int GETEXPRESSION(int *OPD) {
// 1807 %integer sp, prio, i
int SP;
int PRIO;
int I;
// 1808 %byte %integer %array op stk, prio stk(1:5)
unsigned char OPSTK[5];
unsigned char PRIOSTK[5];
// 1809 %integer %array opd stk(0:5)
int OPDSTK[6];
// 1810
// 1811 %result = 1 %unless get term(opd stk(0))=0
if (GETTERM(/*?*/ &OPDSTK[0]) == 0) goto L_0226;
return 1;
L_0226:;
// 1812 sp = 0
SP = 0;
// 1813 i = 0
I = 0;
// 1814 %cycle
L_0227:;
// 1815 next char %while pres char=bchar
L_0228:;
if (PRESCHAR != BCHAR) goto L_0229;
NEXTCHAR();
goto L_0228;
L_0229:;
// 1816 %if pres char='!' %or pres char='\' %start
if (PRESCHAR == 33) goto L_022A;
if (PRESCHAR != 92) goto L_022B;
L_022A:;
// 1817 prio = 0
PRIO = 0;
// 1818 %finish %else %if pres char='&' %start
goto L_022C;
L_022B:;
if (PRESCHAR != 38) goto L_022D;
// 1819 prio = 1
PRIO = 1;
// 1820 %finish %else %if pres char='+' %or pres char='-' %start
goto L_022C;
L_022D:;
if (PRESCHAR == 43) goto L_022E;
if (PRESCHAR != 45) goto L_022F;
L_022E:;
// 1821 prio = 2
PRIO = 2;
// 1822 %finish %else %if pres char='*' %or pres char='/' %or %c
goto L_022C;
L_022F:;
if (PRESCHAR == 42) goto L_0230;
if (PRESCHAR == 47) goto L_0230;
if (PRESCHAR != 124) goto L_0231;
L_0230:;
// 1823+ pres char='|' %start
// 1824 prio = 3
PRIO = 3;
// 1825 %finish %else %if pres char='<' %or pres char='>' %start
goto L_022C;
L_0231:;
if (PRESCHAR == 60) goto L_0232;
if (PRESCHAR != 62) goto L_0233;
L_0232:;
// 1826 prio = 4
PRIO = 4;
// 1827 %else
goto L_022C;
L_0233:;
// 1828 %exit
goto L_0234;
// 1829 %finish
L_022C:;
// 1830 %while sp>0 %and prio stk(sp)>=prio %cycle
L_0235:;
if (SP <= 0) goto L_0236;
if (PRIOSTK[SP - 1] < PRIO) goto L_0236;
// 1831 evaluate(opd stk(sp-1), opd stk(sp), op stk(sp))
EVALUATE(/*?*/ &OPDSTK[SP - 1], OPDSTK[SP], OPSTK[SP - 1]);
// 1832 sp = sp-1
SP = SP - 1;
// 1833 %repeat
goto L_0235;
L_0236:;
// 1834 sp = sp+1
SP = SP + 1;
// 1835 op stk(sp) = pres char
OPSTK[SP - 1] = PRESCHAR;
// 1836 prio stk(sp) = prio
PRIOSTK[SP - 1] = PRIO;
// 1837 next char %until pres char#bchar
L_0237:;
NEXTCHAR();
if (PRESCHAR != BCHAR) goto L_0238;
goto L_0237;
L_0238:;
// 1838 %unless get term(opd stk(sp))=0 %start
if (GETTERM(/*?*/ &OPDSTK[SP]) == 0) goto L_0239;
// 1839 sp = sp-1
SP = SP - 1;
// 1840 i = 1
I = 1;
// 1841 %exit
goto L_0234;
// 1842 %finish
L_0239:;
// 1843 %repeat
goto L_0227;
L_0234:;
// 1844 evaluate(opd stk(sp-1), opd stk(sp), op stk(sp)) %for sp = sp, -1, 1
// %for SP = SP, -1, 1 %cycle
{
int _initial = SP;
if (invalid_for_loop(_initial, -1, 1)) _imp_signal(5, 1, 0, "Illegal cycle SP = SP, -1, 1");
SP = _initial - (-1);
L_023A:
if (SP == 1) goto L_023B;
SP -= 1;
EVALUATE(/*?*/ &OPDSTK[SP - 1], OPDSTK[SP], OPSTK[SP - 1]);
goto L_023A;
}
L_023B:;
// 1845 opd = opd stk(0) %if i=0
if (I != 0) goto L_023C;
*OPD = OPDSTK[0];
L_023C:;
// 1846 %result = i
return I;
// 1847 %end
} /* end of GETEXPRESSION */
// 1848 !-----------------------------------------------------------------------
// 1849 %integer %function get opd(%integername opd)
int GETOPD(int *OPD) {
// 1850 %integer nid,op,cval
int NID;
int OP;
int CVAL;
// 1851
// 1852 %result = get expression(opd) %unless fflag=0
if (FFLAG == 0) goto L_023D;
return GETEXPRESSION(OPD);
L_023D:;
// 1853 opd=0
*OPD = 0;
// 1854 %if pres char='+' %or pres char='-' %start
if (PRESCHAR == 43) goto L_01FC;
if (PRESCHAR != 45) goto L_023E;
L_01FC:;
// 1855 op =pres char
OP = PRESCHAR;
// 1856 next char %until pres char#bchar
L_023F:;
NEXTCHAR();
if (PRESCHAR != BCHAR) goto L_0240;
goto L_023F;
L_0240:;
// 1857 %else
goto L_0241;
L_023E:;
// 1858 op = '+'
OP = 43;
// 1859 %finish
L_0241:;
// 1860 %cycle
L_0242:;
// 1861 %if get name(nid)=0 %start
if (GETNAME(/*?*/ &NID) != 0) goto L_0243;
// 1862 %result=1 %unless pass=1 %or nass(nid)=1 %or nass(nid)=3
if (PASS == 1) goto L_0244;
if (NASS[NID - 1] == 1) goto L_0244;
if (NASS[NID - 1] == 3) goto L_0244;
return 1;
L_0244:;
// 1863 cval=nval(nid)
CVAL = NVAL[NID - 1];
// 1864 %else
goto L_0245;
L_0243:;
// 1865 %result=1 %if get const(cval)#0
if (GETCONST(/*?*/ &CVAL) == 0) goto L_0246;
return 1;
L_0246:;
// 1866 %finish
L_0245:;
// 1867 evaluate(opd, cval, op)
EVALUATE(OPD, CVAL, OP);
// 1868 next char %while pres char=bchar
L_0247:;
if (PRESCHAR != BCHAR) goto L_0248;
NEXTCHAR();
goto L_0247;
L_0248:;
// 1869 op = pres char
OP = PRESCHAR;
// 1870 %result=0 %unless op='+' %or op='-' %or op='*' %or op='/'
if (OP == 43) goto L_0249;
if (OP == 45) goto L_0249;
if (OP == 42) goto L_0249;
if (OP == 47) goto L_0249;
return 0;
L_0249:;
// 1871 next char %until pres char#bchar
L_024A:;
NEXTCHAR();
if (PRESCHAR != BCHAR) goto L_024B;
goto L_024A;
L_024B:;
// 1872 %repeat
goto L_0242;
// 1873 %end
} /* end of GETOPD */
// 1874 !-----------------------------------------------------------------------
// 1875 %integerfn get const(%integername cval)
int GETCONST(int *CVAL) {
// 1876 %integer started, dig val, bin val, oct val, hex val,
int STARTED;
int DIGVAL;
int BINVAL;
int OCTVAL;
int HEXVAL;
int BINPOS;
int OCTPOS;
int DECPOS;
// 1877+ bin pos, oct pos, dec pos
// 1878
// 1879 started=1
STARTED = 1;
// 1880 %if pres char='*' %start
if (PRESCHAR != 42) goto L_024C;
// 1881 next char
NEXTCHAR();
// 1882 cval = ca
*CVAL = CA;
// 1883 %result = 0
return 0;
// 1884 %finish
L_024C:;
// 1885 cval=0
*CVAL = 0;
// 1886 %if '0'<=pres char<='9' %start ;! decimal
{
// Double-sided test on PRESCHAR (Part I)
int tmp;
if (48 > (tmp = PRESCHAR)) goto L_024D;
// Double-sided test on PRESCHAR (Part II)
if (tmp > 57) goto L_024D;
}
// 1887 bin pos = 0
BINPOS = 0;
// 1888 oct pos = 0
OCTPOS = 0;
// 1889 dec pos = 0
DECPOS = 0;
// 1890 bin val = 0
BINVAL = 0;
// 1891 oct val = 0
OCTVAL = 0;
// 1892 hex val = 0
HEXVAL = 0;
// 1893 %cycle
L_024E:;
// 1894 %if bin pos=0 %and pres char='B' %start
if (BINPOS != 0) goto L_024F;
if (PRESCHAR != 66) goto L_024F;
// 1895 next char
NEXTCHAR();
// 1896 %if '0'<=pres char<='9' %or 'A'<=pres char<='F' %or %c
{
// Double-sided test on PRESCHAR (Part I)
int tmp;
if (48 > (tmp = PRESCHAR)) goto L_0250;
// Double-sided test on PRESCHAR (Part II)
if (tmp <= 57) goto L_019E;
}
L_0250:;
{
// Double-sided test on PRESCHAR (Part I)
int tmp;
if (65 > (tmp = PRESCHAR)) goto L_0251;
// Double-sided test on PRESCHAR (Part II)
if (tmp <= 70) goto L_019E;
}
L_0251:;
if (PRESCHAR != 72) goto L_0252;
L_019E:;
// 1897+ pres char='H' %start
// 1898 bin pos = 1
BINPOS = 1;
// 1899 oct pos = 1
OCTPOS = 1;
// 1900 dec pos = 1
DECPOS = 1;
// 1901 hex val = (hex val<<4)+11
HEXVAL = (HEXVAL << 4) + 11;
// 1902 %else
goto L_0253;
L_0252:;
// 1903 cval = bin val
*CVAL = BINVAL;
// 1904 %result = 0
return 0;
// 1905 %finish
L_0253:;
// 1906 %finish
L_024F:;
// 1907 %if oct pos=0 %and (pres char='O' %or pres char='Q') %start
if (OCTPOS != 0) goto L_0254;
if (PRESCHAR == 79) goto L_0255;
if (PRESCHAR != 81) goto L_0254;
L_0255:;
// 1908 cval = oct val
*CVAL = OCTVAL;
// 1909 next char
NEXTCHAR();
// 1910 %result = 0
return 0;
// 1911 %finish %else %if pres char='H' %start
L_0254:;
if (PRESCHAR != 72) goto L_0256;
// 1912 cval = hex val
*CVAL = HEXVAL;
// 1913 next char
NEXTCHAR();
// 1914 %result = 0
return 0;
// 1915 %finish %else %if 'A'<=pres char<='F' %start
L_0256:;
{
// Double-sided test on PRESCHAR (Part I)
int tmp;
if (65 > (tmp = PRESCHAR)) goto L_0257;
// Double-sided test on PRESCHAR (Part II)
if (tmp > 70) goto L_0257;
}
// 1916 dig val = pres char-'A'+10
DIGVAL = PRESCHAR - 65 + 10;
// 1917 %finish %else %if '0'<=pres char<='9' %start
goto L_0258;
L_0257:;
{
// Double-sided test on PRESCHAR (Part I)
int tmp;
if (48 > (tmp = PRESCHAR)) goto L_0259;
// Double-sided test on PRESCHAR (Part II)
if (tmp > 57) goto L_0259;
}
// 1918 dig val = pres char-'0'
DIGVAL = PRESCHAR - 48;
// 1919 %else
goto L_0258;
L_0259:;
// 1920 %result = dec pos
return DECPOS;
// 1921 %finish
L_0258:;
// 1922 bin pos = 1 %if dig val>1
if (DIGVAL <= 1) goto L_025A;
BINPOS = 1;
L_025A:;
// 1923 oct pos = 1 %if dig val>7
if (DIGVAL <= 7) goto L_025B;
OCTPOS = 1;
L_025B:;
// 1924 dec pos = 1 %if dig val>9
if (DIGVAL <= 9) goto L_025C;
DECPOS = 1;
L_025C:;
// 1925 bin val = (bin val<<1)+dig val
BINVAL = (BINVAL << 1) + DIGVAL;
// 1926 oct val = (oct val<<3)+dig val
OCTVAL = (OCTVAL << 3) + DIGVAL;
// 1927 cval = cval*10+dig val
*CVAL = *CVAL * 10 + DIGVAL;
// 1928 hex val = (hex val<<4)+dig val
HEXVAL = (HEXVAL << 4) + DIGVAL;
// 1929 next char
NEXTCHAR();
// 1930 %repeat
goto L_024E;
// 1931 %finish
L_024D:;
// 1932 %if pres char='$' %start ;! hex
if (PRESCHAR != 36) goto L_025D;
// 1933 %cycle
L_025E:;
// 1934 next char
NEXTCHAR();
// 1935 %if '0'<=pres char<='9' %start
{
// Double-sided test on PRESCHAR (Part I)
int tmp;
if (48 > (tmp = PRESCHAR)) goto L_025F;
// Double-sided test on PRESCHAR (Part II)
if (tmp > 57) goto L_025F;
}
// 1936 cval = cval<<4!(pres char-'0')
*CVAL = *CVAL << 4 | PRESCHAR - 48;
// 1937 %finish %else %if 'A'<=pres char<='F' %start
goto L_0260;
L_025F:;
{
// Double-sided test on PRESCHAR (Part I)
int tmp;
if (65 > (tmp = PRESCHAR)) goto L_0261;
// Double-sided test on PRESCHAR (Part II)
if (tmp > 70) goto L_0261;
}
// 1938 cval = cval<<4!(pres char-'A'+10)
*CVAL = *CVAL << 4 | PRESCHAR - 65 + 10;
// 1939 %else
goto L_0260;
L_0261:;
// 1940 %result = started
return STARTED;
// 1941 %finish
L_0260:;
// 1942 started = 0
STARTED = 0;
// 1943 %repeat
goto L_025E;
// 1944 %finish
L_025D:;
// 1945 %if pres char='@' %start ;! octal
if (PRESCHAR != 64) goto L_0262;
// 1946 %cycle
L_0263:;
// 1947 next char
NEXTCHAR();
// 1948 %result = started %unless '0'<=pres char<='7'
{
// Double-sided test on PRESCHAR (Part I)
int tmp;
if (48 > (tmp = PRESCHAR)) goto L_0264;
// Double-sided test on PRESCHAR (Part II)
if (tmp <= 55) goto L_0265;
}
L_0264:;
return STARTED;
L_0265:;
// 1949 cval = (cval<<3)!(pres char-'0')
*CVAL = *CVAL << 3 | PRESCHAR - 48;
// 1950 started = 0
STARTED = 0;
// 1951 %repeat
goto L_0263;
// 1952 %finish
L_0262:;
// 1953 %if pres char='%' %start
if (PRESCHAR != 37) goto L_0266;
// 1954 %cycle
L_0267:;
// 1955 next char
NEXTCHAR();
// 1956 %result = started %unless '0'<=pres char<='1'
{
// Double-sided test on PRESCHAR (Part I)
int tmp;
if (48 > (tmp = PRESCHAR)) goto L_0268;
// Double-sided test on PRESCHAR (Part II)
if (tmp <= 49) goto L_0269;
}
L_0268:;
return STARTED;
L_0269:;
// 1957 cval = (cval<<1)!(pres char-'0')
*CVAL = *CVAL << 1 | PRESCHAR - 48;
// 1958 started = 0
STARTED = 0;
// 1959 %repeat
goto L_0267;
// 1960 %finish
L_0266:;
// 1961 %if pres char='''' %start
if (PRESCHAR != 39) goto L_026A;
// 1962 next char
NEXTCHAR();
// 1963 %result=1 %if lp=max line+1
if (LP != 512 + 1) goto L_026B;
return 1;
L_026B:;
// 1964 cval=line(lp)
*CVAL = LINE[LP - 1];
// 1965 next char
NEXTCHAR();
// 1966 %result=0
return 0;
// 1967 %finish
L_026A:;
// 1968 %result=1
return 1;
// 1969 %end
} /* end of GETCONST */
// 1970 !-----------------------------------------------------------------------
// 1971 %routine analise operand(%integer eca,
void ANALISEOPERAND(int ECA, int *POST, int *OPD, int *TYPE, int *CYCLES) {
// 1972+ %integer %name post, opd, type, cycles)
// 1973 %integer indirect, i
int INDIRECT;
int I;
// 1974
// 1975 type = 5
*TYPE = 5;
// 1976 %if pres char='[' %start
if (PRESCHAR != 91) goto L_026C;
// 1977 next char %until pres char#bchar
L_026D:;
NEXTCHAR();
if (PRESCHAR != BCHAR) goto L_026E;
goto L_026D;
L_026E:;
// 1978 indirect = 1
INDIRECT = 1;
// 1979 %else
goto L_026F;
L_026C:;
// 1980 indirect = 0
INDIRECT = 0;
// 1981 %finish
L_026F:;
// 1982 %if more items %start
if (!(MOREITEMS())) goto L_0270;
// 1983 %if pc %start
if (!(PC())) goto L_0271;
// 1984 opd = 0
*OPD = 0;
// 1985 post = 16_8C
*POST = 140;
// 1986 type = 6
*TYPE = 6;
// 1987 cycles = cycles+3
*CYCLES = *CYCLES + 3;
// 1988 %finish %else %if pc relative %start
goto L_0272;
L_0271:;
if (!(PCRELATIVE())) goto L_0273;
// 1989 opd = -2-eca
*OPD = (-2) - ECA;
// 1990 %if pass<3 %or -128<=opd<=127 %start
if (PASS < 3) goto L_0274;
{
// Double-sided test on OPD (Part I)
int tmp;
if (-128 > (tmp = *OPD)) goto L_0275;
// Double-sided test on OPD (Part II)
if (tmp > 127) goto L_0275;
}
L_0274:;
// 1991 post = 16_8C
*POST = 140;
// 1992 type = 6
*TYPE = 6;
// 1993 cycles = cycles+3
*CYCLES = *CYCLES + 3;
// 1994 %else
goto L_0276;
L_0275:;
// 1995 opd = opd-1
*OPD = *OPD - 1;
// 1996 post = 16_8D
*POST = 141;
// 1997 type = 7
*TYPE = 7;
// 1998 cycles = cycles+7
*CYCLES = *CYCLES + 7;
// 1999 %finish
L_0276:;
// 2000 %finish %else %unless auto indexed(post, cycles) %start
goto L_0272;
L_0273:;
if (AUTOINDEXED(POST, CYCLES)) goto L_0277;
// 2001 type = 0
*TYPE = 0;
// 2002 %finish
L_0277:;
L_0272:;
// 2003 %finish %else %if pc %start
goto L_0278;
L_0270:;
if (!(PC())) goto L_0279;
// 2004 opd = 0
*OPD = 0;
// 2005 post = 16_8C
*POST = 140;
// 2006 type = 6
*TYPE = 6;
// 2007 cycles = cycles+3
*CYCLES = *CYCLES + 3;
// 2008 %finish %else %if pc relative %start
goto L_0278;
L_0279:;
if (!(PCRELATIVE())) goto L_027A;
// 2009 opd = -2-eca
*OPD = (-2) - ECA;
// 2010 %if pass<3 %or -128<=opd<=127 %start
if (PASS < 3) goto L_027B;
{
// Double-sided test on OPD (Part I)
int tmp;
if (-128 > (tmp = *OPD)) goto L_027C;
// Double-sided test on OPD (Part II)
if (tmp > 127) goto L_027C;
}
L_027B:;
// 2011 post = 16_8C
*POST = 140;
// 2012 type = 6
*TYPE = 6;
// 2013 cycles = cycles+3
*CYCLES = *CYCLES + 3;
// 2014 %else
goto L_027D;
L_027C:;
// 2015 opd = opd-1
*OPD = *OPD - 1;
// 2016 post = 16_8D
*POST = 141;
// 2017 type = 7
*TYPE = 7;
// 2018 cycles = cycles+7
*CYCLES = *CYCLES + 7;
// 2019 %finish
L_027D:;
// 2020 %finish %else %unless auto indexed(post, cycles) %start
goto L_0278;
L_027A:;
if (AUTOINDEXED(POST, CYCLES)) goto L_027E;
// 2021 %if acc('A') %start
if (!(ACC(65))) goto L_027F;
// 2022 type = 1 %and -> check indirect %unless more items
if (MOREITEMS()) goto L_0280;
*TYPE = 1;
goto U_1007;
L_0280:;
// 2023 post = 16_86
*POST = 134;
// 2024 cycles = cycles+3
*CYCLES = *CYCLES + 3;
// 2025 %finish %else %if acc('B') %start
goto L_0281;
L_027F:;
if (!(ACC(66))) goto L_0282;
// 2026 type = 2 %and -> check indirect %unless more items
if (MOREITEMS()) goto L_0283;
*TYPE = 2;
goto U_1007;
L_0283:;
// 2027 post = 16_85
*POST = 133;
// 2028 cycles = cycles+3
*CYCLES = *CYCLES + 3;
// 2029 %finish %else %if acc('D') %start
goto L_0281;
L_0282:;
if (!(ACC(68))) goto L_0284;
// 2030 type = 0 %and -> check indirect %unless more items
if (MOREITEMS()) goto L_0285;
*TYPE = 0;
goto U_1007;
L_0285:;
// 2031 post = 16_8B
*POST = 139;
// 2032 cycles = cycles+6
*CYCLES = *CYCLES + 6;
// 2033 %finish %else %if pres char='<' %start
goto L_0281;
L_0284:;
if (PRESCHAR != 60) goto L_0286;
// 2034 next char %until pres char#b char
L_0287:;
NEXTCHAR();
if (PRESCHAR != BCHAR) goto L_0288;
goto L_0287;
L_0288:;
// 2035 %if get opd(opd)=0 %start
if (GETOPD(OPD) != 0) goto L_0289;
// 2036 type = 4
*TYPE = 4;
// 2037 %else
goto L_028A;
L_0289:;
// 2038 type = 0
*TYPE = 0;
// 2039 %finish
L_028A:;
// 2040 cycles = cycles+3
*CYCLES = *CYCLES + 3;
// 2041 -> check indirect
goto U_1007;
// 2042 %finish %else %if pres char='>' %start
L_0286:;
if (PRESCHAR != 62) goto L_028B;
// 2043 next char %until pres char#b char
L_028C:;
NEXTCHAR();
if (PRESCHAR != BCHAR) goto L_028D;
goto L_028C;
L_028D:;
// 2044 %if get opd(opd)=0 %start
if (GETOPD(OPD) != 0) goto L_028E;
// 2045 %if indirect=0 %start
if (INDIRECT != 0) goto L_028F;
// 2046 type = 3
*TYPE = 3;
// 2047 %else
goto L_0290;
L_028F:;
// 2048 type = 4
*TYPE = 4;
// 2049 cycles = cycles+1
*CYCLES = *CYCLES + 1;
// 2050 %finish
L_0290:;
// 2051 %else
goto L_0291;
L_028E:;
// 2052 type = 0
*TYPE = 0;
// 2053 %finish
L_0291:;
// 2054 cycles = cycles+2
*CYCLES = *CYCLES + 2;
// 2055 -> check indirect
goto U_1007;
// 2056 %else
L_028B:;
// 2057 %if get opd(opd)=0 %start
if (GETOPD(OPD) != 0) goto L_0292;
// 2058 %if more items %start
if (!(MOREITEMS())) goto L_0293;
// 2059 %if pc %start
if (!(PC())) goto L_0294;
// 2060 %if pass<3 %or -128<=opd<=127 %start
if (PASS < 3) goto L_002D;
{
// Double-sided test on OPD (Part I)
int tmp;
if (-128 > (tmp = *OPD)) goto L_0295;
// Double-sided test on OPD (Part II)
if (tmp > 127) goto L_0295;
}
L_002D:;
// 2061 post = 16_8C
*POST = 140;
// 2062 type = 6
*TYPE = 6;
// 2063 cycles = cycles+3
*CYCLES = *CYCLES + 3;
// 2064 %else
goto L_0296;
L_0295:;
// 2065 post = 16_8D
*POST = 141;
// 2066 type = 7
*TYPE = 7;
// 2067 cycles = cycles+7
*CYCLES = *CYCLES + 7;
// 2068 %finish
L_0296:;
// 2069 -> check indirect
goto U_1007;
// 2070 %finish %else %if pc relative %start
L_0294:;
if (!(PCRELATIVE())) goto L_0297;
// 2071 opd = opd-eca-2
*OPD = *OPD - ECA - 2;
// 2072 %if pass<3 %or -128<=opd<=127 %start
if (PASS < 3) goto L_0298;
{
// Double-sided test on OPD (Part I)
int tmp;
if (-128 > (tmp = *OPD)) goto L_0299;
// Double-sided test on OPD (Part II)
if (tmp > 127) goto L_0299;
}
L_0298:;
// 2073 post = 16_8C
*POST = 140;
// 2074 type = 6
*TYPE = 6;
// 2075 cycles = cycles+3
*CYCLES = *CYCLES + 3;
// 2076 %else
goto L_029A;
L_0299:;
// 2077 opd = opd-1
*OPD = *OPD - 1;
// 2078 post = 16_8D
*POST = 141;
// 2079 type = 7
*TYPE = 7;
// 2080 cycles = cycles+7
*CYCLES = *CYCLES + 7;
// 2081 %finish
L_029A:;
// 2082 ->check indirect
goto U_1007;
// 2083 %finish %else %if pass<3 %or opd=0 %start
L_0297:;
if (PASS < 3) goto L_029B;
if (*OPD != 0) goto L_029C;
L_029B:;
// 2084 type = 0 %unless auto indexed(post, cycles)
if (AUTOINDEXED(POST, CYCLES)) goto L_029D;
*TYPE = 0;
L_029D:;
// 2085 -> check indirect
goto U_1007;
// 2086 %finish %else %if indirect=0 %and -16<=opd<=15 %start
L_029C:;
if (INDIRECT != 0) goto L_029E;
{
// Double-sided test on OPD (Part I)
int tmp;
if (-16 > (tmp = *OPD)) goto L_029E;
// Double-sided test on OPD (Part II)
if (tmp > 15) goto L_029E;
}
// 2087 post = opd&31
*POST = *OPD & 31;
// 2088 cycles = cycles+3
*CYCLES = *CYCLES + 3;
// 2089 %finish %else %if -128<=opd<=127 %start
goto L_029F;
L_029E:;
{
// Double-sided test on OPD (Part I)
int tmp;
if (-128 > (tmp = *OPD)) goto L_02A0;
// Double-sided test on OPD (Part II)
if (tmp > 127) goto L_02A0;
}
// 2090 post = 16_88
*POST = 136;
// 2091 type = 6
*TYPE = 6;
// 2092 cycles = cycles+3
*CYCLES = *CYCLES + 3;
// 2093 %else
goto L_029F;
L_02A0:;
// 2094 post = 16_89
*POST = 137;
// 2095 type = 7
*TYPE = 7;
// 2096 cycles = cycles+6
*CYCLES = *CYCLES + 6;
// 2097 %finish
L_029F:;
// 2098 %else
goto L_02A1;
L_0293:;
// 2099 %if indirect=0 %and 0<=opd-dp contents<=255 %start
if (INDIRECT != 0) goto L_02A2;
{
// Double-sided test on *OPD - DPCONTENTS (Part I)
int tmp;
if (0 > (tmp = *OPD - DPCONTENTS)) goto L_02A2;
// Double-sided test on *OPD - DPCONTENTS (Part II)
if (tmp > 255) goto L_02A2;
}
// 2100 type = 3
*TYPE = 3;
// 2101 cycles = cycles+2
*CYCLES = *CYCLES + 2;
// 2102 %else
goto L_02A3;
L_02A2:;
// 2103 type = 4
*TYPE = 4;
// 2104 cycles = cycles+3
*CYCLES = *CYCLES + 3;
// 2105 %finish
L_02A3:;
// 2106 -> check indirect
goto U_1007;
// 2107 %finish
L_02A1:;
// 2108 %else
goto L_02A4;
L_0292:;
// 2109 type = 0
*TYPE = 0;
// 2110 %finish
L_02A4:;
// 2111 %finish
L_0281:;
// 2112 %if index reg(i) %start
if (!(INDEXREG(/*?*/ &I))) goto L_02A5;
// 2113 post = post!(i<<5)
*POST = *POST | I << 5;
// 2114 %else
goto L_02A6;
L_02A5:;
// 2115 type = 0
*TYPE = 0;
// 2116 %finish
L_02A6:;
// 2117 %finish
L_027E:;
L_0278:;
// 2118 check indirect:
U_1007:;
// 2119 %unless indirect=0 %start
if (INDIRECT == 0) goto L_02A7;
// 2120 type = 0 %if 1<=type<=2 %or %c
{
// Double-sided test on TYPE (Part I)
int tmp;
if (1 > (tmp = *TYPE)) goto L_02A8;
// Double-sided test on TYPE (Part II)
if (tmp <= 2) goto L_02A9;
}
L_02A8:;
if (*TYPE != 5) goto L_02AA;
if (*POST == 128) goto L_02A9;
if (*POST != 130) goto L_02AA;
L_02A9:;
*TYPE = 0;
L_02AA:;
// 2121+ (type=5 %and (post=16_80 %or post=16_82))
// 2122 next char %while pres char=b char
L_02AB:;
if (PRESCHAR != BCHAR) goto L_02AC;
NEXTCHAR();
goto L_02AB;
L_02AC:;
// 2123 %if pres char=']' %start
if (PRESCHAR != 93) goto L_02AD;
// 2124 next char
NEXTCHAR();
// 2125 cycles = cycles+3
*CYCLES = *CYCLES + 3;
// 2126 %if 3<=type<=4 %start
{
// Double-sided test on TYPE (Part I)
int tmp;
if (3 > (tmp = *TYPE)) goto L_02AE;
// Double-sided test on TYPE (Part II)
if (tmp > 4) goto L_02AE;
}
// 2127 post = 16_9F
*POST = 159;
// 2128 cycles = cycles+4-type
*CYCLES = *CYCLES + 4 - *TYPE;
// 2129 type = 7
*TYPE = 7;
// 2130 %else
goto L_02AF;
L_02AE:;
// 2131 post = post!16_10
*POST = *POST | 16;
// 2132 %finish
L_02AF:;
// 2133 %else
goto L_02B0;
L_02AD:;
// 2134 type = 0
*TYPE = 0;
// 2135 %finish
L_02B0:;
// 2136 %finish
L_02A7:;
// 2137 %end
return;
} /* end of ANALISEOPERAND */
// 2138 !-----------------------------------------------------------------------
// 2139 %predicate auto indexed(%integer %name post, cycles)
int AUTOINDEXED(int *POST, int *CYCLES) {
// 2140 %integer old lp, reg
int OLDLP;
int REG;
// 2141
// 2142 old lp = lp
OLDLP = LP;
// 2143 %if pres char='-' %start
if (PRESCHAR != 45) goto L_02B1;
// 2144 next char %until pres char#b char
L_02B2:;
NEXTCHAR();
if (PRESCHAR != BCHAR) goto L_02B3;
goto L_02B2;
L_02B3:;
// 2145 %if pres char='-' %start
if (PRESCHAR != 45) goto L_02B4;
// 2146 next char %until pres char#bchar
L_02B5:;
NEXTCHAR();
if (PRESCHAR != BCHAR) goto L_02B6;
goto L_02B5;
L_02B6:;
// 2147 post = 16_83
*POST = 131;
// 2148 %else
goto L_02B7;
L_02B4:;
// 2149 post = 16_82
*POST = 130;
// 2150 %finish
L_02B7:;
// 2151 %else
goto L_02B8;
L_02B1:;
// 2152 post = 16_84
*POST = 132;
// 2153 %finish
L_02B8:;
// 2154 %if index reg(reg) %start
if (!(INDEXREG(/*?*/ ®))) goto L_02B9;
// 2155 %if post = 16_84 %start
if (*POST != 132) goto L_02BA;
// 2156 next char %while pres char=b char
L_02BB:;
if (PRESCHAR != BCHAR) goto L_02BC;
NEXTCHAR();
goto L_02BB;
L_02BC:;
// 2157 %if pres char='+' %start
if (PRESCHAR != 43) goto L_02BD;
// 2158 next char %until pres char#b char
L_02BE:;
NEXTCHAR();
if (PRESCHAR != BCHAR) goto L_02BF;
goto L_02BE;
L_02BF:;
// 2159 %if pres char='+' %start
if (PRESCHAR != 43) goto L_02C0;
// 2160 next char
NEXTCHAR();
// 2161 post = 16_81
*POST = 129;
// 2162 cycles = cycles+5
*CYCLES = *CYCLES + 5;
// 2163 %else
goto L_02C1;
L_02C0:;
// 2164 post = 16_80
*POST = 128;
// 2165 cycles = cycles+4
*CYCLES = *CYCLES + 4;
// 2166 %finish
L_02C1:;
// 2167 %else
goto L_02C2;
L_02BD:;
// 2168 cycles = cycles+2
*CYCLES = *CYCLES + 2;
// 2169 %finish
L_02C2:;
// 2170 %else
goto L_02C3;
L_02BA:;
// 2171 cycles = cycles+4+(post&1)
*CYCLES = *CYCLES + 4 + (*POST & 1);
// 2172 %finish
L_02C3:;
// 2173 post = post!(reg<<5)
*POST = *POST | REG << 5;
// 2174 %true
return 1 /*TRUE*/;
// 2175 %finish
L_02B9:;
// 2176 lp = old lp-1
LP = OLDLP - 1;
// 2177 next char
NEXTCHAR();
// 2178 %false
return 0 /*FALSE*/;
// 2179 %end
} /* end of AUTOINDEXED */
// 2180 !-----------------------------------------------------------------------
// 2181 %predicate accumulator
int ACCUMULATOR(void) {
// 2182
// 2183 %true %if acc('A')
if (!(ACC(65))) goto L_02C4;
return 1 /*TRUE*/;
L_02C4:;
// 2184 %true %if acc('B')
if (!(ACC(66))) goto L_02C5;
return 1 /*TRUE*/;
L_02C5:;
// 2185 %false
return 0 /*FALSE*/;
// 2186 %end
} /* end of ACCUMULATOR */
// 2187 !-----------------------------------------------------------------------
// 2188 %predicate acc(%byte %integer acc id)
int ACC(unsigned char ACCID) {
// 2189
// 2190 %false %unless pres char=acc id
if (PRESCHAR == ACCID) goto L_02C6;
return 0 /*FALSE*/;
L_02C6:;
// 2191 next char
NEXTCHAR();
// 2192 %true %unless 'A'<=pres char<='Z' %or '0'<=pres char<='9'
{
// Double-sided test on PRESCHAR (Part I)
int tmp;
if (65 > (tmp = PRESCHAR)) goto L_02C7;
// Double-sided test on PRESCHAR (Part II)
if (tmp <= 90) goto L_02C8;
}
L_02C7:;
{
// Double-sided test on PRESCHAR (Part I)
int tmp;
if (48 > (tmp = PRESCHAR)) goto L_02C9;
// Double-sided test on PRESCHAR (Part II)
if (tmp <= 57) goto L_02C8;
}
L_02C9:;
return 1 /*TRUE*/;
L_02C8:;
// 2193 lp = lp-2
LP = LP - 2;
// 2194 next char
NEXTCHAR();
// 2195 %false
return 0 /*FALSE*/;
// 2196 %end
} /* end of ACC */
// 2197 !-----------------------------------------------------------------------
// 2198 %predicate index reg(%integer %name reg)
int INDEXREG(int *REG) {
// 2199
// 2200 reg = 0 %and %true %if acc('X')
if (!(ACC(88))) goto L_02CA;
*REG = 0;
return 1 /*TRUE*/;
L_02CA:;
// 2201 reg = 1 %and %true %if acc('Y')
if (!(ACC(89))) goto L_02CB;
*REG = 1;
return 1 /*TRUE*/;
L_02CB:;
// 2202 reg = 2 %and %true %if acc('U')
if (!(ACC(85))) goto L_02CC;
*REG = 2;
return 1 /*TRUE*/;
L_02CC:;
// 2203 reg = 3 %and %true %if acc('S')
if (!(ACC(83))) goto L_02CD;
*REG = 3;
return 1 /*TRUE*/;
L_02CD:;
// 2204 %false
return 0 /*FALSE*/;
// 2205 %end
} /* end of INDEXREG */
// 2206 !-----------------------------------------------------------------------
// 2207 %predicate transfer reg(%integer %name reg)
int TRANSFERREG(int *REG) {
// 2208
// 2209 reg = 0 %and %true %if acc('D')
if (!(ACC(68))) goto L_02CE;
*REG = 0;
return 1 /*TRUE*/;
L_02CE:;
// 2210 reg = 1 %and %true %if acc('X')
if (!(ACC(88))) goto L_02CF;
*REG = 1;
return 1 /*TRUE*/;
L_02CF:;
// 2211 reg = 2 %and %true %if acc('Y')
if (!(ACC(89))) goto L_02D0;
*REG = 2;
return 1 /*TRUE*/;
L_02D0:;
// 2212 reg = 3 %and %true %if acc('U')
if (!(ACC(85))) goto L_02D1;
*REG = 3;
return 1 /*TRUE*/;
L_02D1:;
// 2213 reg = 4 %and %true %if acc('S')
if (!(ACC(83))) goto L_02D2;
*REG = 4;
return 1 /*TRUE*/;
L_02D2:;
// 2214 reg = 5 %and %true %if pc
if (!(PC())) goto L_02D3;
*REG = 5;
return 1 /*TRUE*/;
L_02D3:;
// 2215 reg = 8 %and %true %if acc('A')
if (!(ACC(65))) goto L_02D4;
*REG = 8;
return 1 /*TRUE*/;
L_02D4:;
// 2216 reg = 9 %and %true %if acc('B')
if (!(ACC(66))) goto L_02D5;
*REG = 9;
return 1 /*TRUE*/;
L_02D5:;
// 2217 reg = 10 %and %true %if cc
if (!(CC())) goto L_02D6;
*REG = 10;
return 1 /*TRUE*/;
L_02D6:;
// 2218 reg = 11 %and %true %if dp
if (!(DP())) goto L_02D7;
*REG = 11;
return 1 /*TRUE*/;
L_02D7:;
// 2219 %false
return 0 /*FALSE*/;
// 2220 %end
} /* end of TRANSFERREG */
// 2221 !-----------------------------------------------------------------------
// 2222 %predicate cc
int CC(void) {
// 2223
// 2224 %false %unless pres char='C'
if (PRESCHAR == 67) goto L_02D8;
return 0 /*FALSE*/;
L_02D8:;
// 2225 next char
NEXTCHAR();
// 2226 %true %if acc('C')
if (!(ACC(67))) goto L_02D9;
return 1 /*TRUE*/;
L_02D9:;
// 2227 lp = lp-2
LP = LP - 2;
// 2228 next char
NEXTCHAR();
// 2229 %false
return 0 /*FALSE*/;
// 2230 %end
} /* end of CC */
// 2231 !-----------------------------------------------------------------------
// 2232 %predicate dp
int DP(void) {
// 2233
// 2234 %false %unless pres char='D'
if (PRESCHAR == 68) goto L_02DA;
return 0 /*FALSE*/;
L_02DA:;
// 2235 next char
NEXTCHAR();
// 2236 %true %if acc('P')
if (!(ACC(80))) goto L_02DB;
return 1 /*TRUE*/;
L_02DB:;
// 2237 lp = lp-2
LP = LP - 2;
// 2238 next char
NEXTCHAR();
// 2239 %false
return 0 /*FALSE*/;
// 2240 %end
} /* end of DP */
// 2241 !-----------------------------------------------------------------------
// 2242 %predicate pc
int PC(void) {
// 2243
// 2244 %false %unless pres char='P'
if (PRESCHAR == 80) goto L_02DC;
return 0 /*FALSE*/;
L_02DC:;
// 2245 next char
NEXTCHAR();
// 2246 %true %if acc('C')
if (!(ACC(67))) goto L_02DD;
return 1 /*TRUE*/;
L_02DD:;
// 2247 lp = lp-2
LP = LP - 2;
// 2248 next char
NEXTCHAR();
// 2249 %false
return 0 /*FALSE*/;
// 2250 %end
} /* end of PC */
// 2251 !-----------------------------------------------------------------------
// 2252 %predicate pc relative
int PCRELATIVE(void) {
// 2253
// 2254 %false %unless pres char='P'
if (PRESCHAR == 80) goto L_02DE;
return 0 /*FALSE*/;
L_02DE:;
// 2255 next char
NEXTCHAR();
// 2256 %if pres char='C' %start
if (PRESCHAR != 67) goto L_02DF;
// 2257 next char
NEXTCHAR();
// 2258 %true %if acc('R')
if (!(ACC(82))) goto L_02E0;
return 1 /*TRUE*/;
L_02E0:;
// 2259 lp = lp-1
LP = LP - 1;
// 2260 %finish
L_02DF:;
// 2261 lp = lp-2
LP = LP - 2;
// 2262 next char
NEXTCHAR();
// 2263 %false
return 0 /*FALSE*/;
// 2264 %end
} /* end of PCRELATIVE */
// 2265 !-----------------------------------------------------------------------
// 2266 %routine dump block
void DUMPBLOCK(void) {
// 2267 %integer checksum, old rad, i
int CHECKSUM;
int OLDRAD;
int I;
// 2268
// 2269 select output(1)
_imp_SELECTOUTPUT(1);
// 2270 old rad = drad
OLDRAD = DRAD;
// 2271 drad = 8
DRAD = 8;
// 2272 print string("S1")
_imp_PRINTSTRING(_imp_str_literal("S1"));
// 2273 print number(bp+3, 1)
PRINTNUMBER(BP + 3, 1);
// 2274 print number(buffer ca, 2)
PRINTNUMBER(BUFFERCA, 2);
// 2275 checksum = ((buffer ca>>8)&255)+(buffer ca&255)+bp+3
CHECKSUM = ((unsigned int)BUFFERCA >> 8 & 255) + (BUFFERCA & 255) + BP + 3;
// 2276 %for i = 1, 1, bp %cycle
// %for I = 1, 1, BP %cycle
{
int _final = BP;
if (invalid_for_loop(1, 1, _final)) _imp_signal(5, 1, 0, "Illegal cycle I = 1, 1, BP");
I = 0;
L_02E1:
if (I == _final) goto L_02E2;
I += 1;
// 2277 checksum = check sum+buffer(i)
CHECKSUM = CHECKSUM + BUFFER[I - 1];
// 2278 print number(buffer(i), 1)
PRINTNUMBER(BUFFER[I - 1], 1);
// 2279 %repeat
goto L_02E1;
}
L_02E2:;
// 2280 print number(\(checksum&255), 1)
PRINTNUMBER(~(CHECKSUM & 255), 1);
// 2281 print symbol(13)
_imp_PRINTSYMBOL(13);
// 2282 new line
_imp_NEWLINE();
// 2283 drad = old rad
DRAD = OLDRAD;
// 2284 select output(2)
_imp_SELECTOUTPUT(2);
// 2285 bp = 0
BP = 0;
// 2286 %end
return;
} /* end of DUMPBLOCK */
// 2287 !--------------------------------------------------------------------------
// 2288 %routine dump(%byte %integer byte)
void DUMP(unsigned char BYTE) {
// 2289 %if ostarted=0 %start
if (OSTARTED != 0) goto L_02E4;
// 2290 select output(1)
_imp_SELECTOUTPUT(1);
// 2291 print symbol(13)
_imp_PRINTSYMBOL(13);
// 2292 new line
_imp_NEWLINE();
// 2293 print string("S00600004844521B")
_imp_PRINTSTRING(_imp_str_literal("S00600004844521B"));
// 2294 print symbol(13)
_imp_PRINTSYMBOL(13);
// 2295 new line
_imp_NEWLINE();
// 2296 select output(2)
_imp_SELECTOUTPUT(2);
// 2297 ostarted = 1
OSTARTED = 1;
// 2298 %finish
L_02E4:;
// 2299 buffer ca = ca %if bp=0
if (BP != 0) goto L_02E5;
BUFFERCA = CA;
L_02E5:;
// 2300 dump block %and buffer ca = ca %unless buffer ca+bp=ca
if (BUFFERCA + BP == CA) goto L_02E6;
DUMPBLOCK();
BUFFERCA = CA;
L_02E6:;
// 2301 bp = bp+1
BP = BP + 1;
// 2302 buffer(bp) = byte
BUFFER[BP - 1] = BYTE;
// 2303 ca = ca+1
CA = CA + 1;
// 2304 dump block %if bp=16
if (BP != 16) goto L_02E7;
DUMPBLOCK();
L_02E7:;
// 2305 %end
return;
} /* end of DUMP */
// 2306 !---------------------------------------------------------------------------
// 2307 %routine close
void CLOSE(void) {
// 2308 %unless ostarted=0 %start
if (OSTARTED == 0) goto L_02E8;
// 2309 dump block %unless bp=0
if (BP == 0) goto L_02E9;
DUMPBLOCK();
L_02E9:;
// 2310 select output(1)
_imp_SELECTOUTPUT(1);
// 2311 print string("S9030000FC")
_imp_PRINTSTRING(_imp_str_literal("S9030000FC"));
// 2312 print symbol(13)
_imp_PRINTSYMBOL(13);
// 2313 new line
_imp_NEWLINE();
// 2314 select output(2)
_imp_SELECTOUTPUT(2);
// 2315 %finish
L_02E8:;
// 2316 %end
return;
} /* end of CLOSE */
// 2317 !-----------------------------------------------------------------------
// 2318 %routine instr out(%integer op, post, opd, b, cyc)
void INSTROUT(int OP, int POST, int OPD, int B, int CYC) {
// 2319 %integer i, j, k, lit
int I;
int J;
int K;
int LIT;
// 2320
// 2321 i = 1
I = 1;
// 2322 %unless lflag=0 %or ((gflag=0 %or lflag=1) %and cont=1) %start
if (LFLAG == 0) goto L_02EA;
if (GFLAG == 0) goto L_02EB;
if (LFLAG != 1) goto L_02E3;
L_02EB:;
if (CONT == 1) goto L_02EA;
L_02E3:;
// 2323 write(ln, 5)
_imp_WRITE(LN, 5);
// 2324 space %unless wflag=0
if (WFLAG == 0) goto L_02EC;
_imp_SPACE();
L_02EC:;
// 2325 %if lflag=2 %start
if (LFLAG != 2) goto L_02ED;
// 2326 space
_imp_SPACE();
// 2327 %if b<=-5 %start
if (B > -5) goto L_02EE;
// 2328 spaces(sp2)
_imp_SPACES(SP2);
// 2329 %else
goto L_02EF;
L_02EE:;
// 2330 print number(ca, 2)
PRINTNUMBER(CA, 2);
// 2331 %finish
L_02EF:;
// 2332 space
_imp_SPACE();
// 2333 %if -6<=b<=-1 %start
{
// Double-sided test on B (Part I)
int tmp;
if (-6 > (tmp = B)) goto L_02F0;
// Double-sided test on B (Part II)
if (tmp > -1) goto L_02F0;
}
// 2334 spaces(sp2+1)
_imp_SPACES(SP2 + 1);
// 2335 %if b&1=0 %start
if (B & 1 != 0) goto L_02F1;
// 2336 print number(post, 2)
PRINTNUMBER(POST, 2);
// 2337 %else
goto L_02F2;
L_02F1:;
// 2338 print number(post, 1)
PRINTNUMBER(POST, 1);
// 2339 spaces(sp2-sp1)
_imp_SPACES(SP2 - SP1);
// 2340 %finish
L_02F2:;
// 2341 spaces(sp1+1)
_imp_SPACES(SP1 + 1);
// 2342 %else
goto L_02F3;
L_02F0:;
// 2343 %if b<=0 %start
if (B > 0) goto L_02F4;
// 2344 spaces(sp2)
_imp_SPACES(SP2);
// 2345 %finish %else %if 0<=op<=255 %start
goto L_02F5;
L_02F4:;
{
// Double-sided test on OP (Part I)
int tmp;
if (0 > (tmp = OP)) goto L_02F6;
// Double-sided test on OP (Part II)
if (tmp > 255) goto L_02F6;
}
// 2346 print number(op, 1)
PRINTNUMBER(OP, 1);
// 2347 spaces(sp2-sp1)
_imp_SPACES(SP2 - SP1);
// 2348 %else
goto L_02F5;
L_02F6:;
// 2349 print number(op, 2)
PRINTNUMBER(OP, 2);
// 2350 %finish
L_02F5:;
// 2351 space
_imp_SPACE();
// 2352 %if b<=1 %start
if (B > 1) goto L_02F7;
// 2353 spaces(sp1+sp2+1)
_imp_SPACES(SP1 + SP2 + 1);
// 2354 %finish %else %if b<=4 %start
goto L_02F8;
L_02F7:;
if (B > 4) goto L_02F9;
// 2355 print number(post, 1)
PRINTNUMBER(POST, 1);
// 2356 space
_imp_SPACE();
// 2357 %if b<=2 %start
if (B > 2) goto L_02FA;
// 2358 spaces(sp2)
_imp_SPACES(SP2);
// 2359 %finish %else %if b=3 %start
goto L_02FB;
L_02FA:;
if (B != 3) goto L_02FC;
// 2360 print number(opd, 1)
PRINTNUMBER(OPD, 1);
// 2361 spaces(sp2-sp1)
_imp_SPACES(SP2 - SP1);
// 2362 %else
goto L_02FB;
L_02FC:;
// 2363 print number(opd, 2)
PRINTNUMBER(OPD, 2);
// 2364 %finish
L_02FB:;
// 2365 %else
goto L_02F8;
L_02F9:;
// 2366 print number(post, 2)
PRINTNUMBER(POST, 2);
// 2367 spaces(sp1+1)
_imp_SPACES(SP1 + 1);
// 2368 %finish
L_02F8:;
// 2369 %finish
L_02F3:;
// 2370 %unless cflag=0 %start
if (CFLAG == 0) goto L_02FD;
// 2371 %if cyc=0 %start
if (CYC != 0) goto L_02FE;
// 2372 spaces(3)
_imp_SPACES(3);
// 2373 %else
goto L_02FF;
L_02FE:;
// 2374 write(cyc, 2)
_imp_WRITE(CYC, 2);
// 2375 %finish
L_02FF:;
// 2376 %finish
L_02FD:;
// 2377 %finish
L_02ED:;
// 2378 %if cont=0 %start
if (CONT != 0) goto L_0300;
// 2379 space
_imp_SPACE();
// 2380 %if tflag=0 %start
if (TFLAG != 0) goto L_0301;
// 2381 %cycle
L_0302:;
// 2382 out symbol(line(i))
OUTSYMBOL(LINE[I - 1]);
// 2383 %exit %if line(i)&127=nl %or line(i)&127=12
if (LINE[I - 1] & 127 == 10) goto L_0303;
if (LINE[I - 1] & 127 != 12) goto L_0304;
L_0303:;
goto L_0305;
L_0304:;
// 2384 i = i+1
I = I + 1;
// 2385 %repeat
goto L_0302;
L_0305:;
// 2386 %else
goto L_0306;
L_0301:;
// 2387 j = 1
J = 1;
// 2388 out tag(i, j, 8)
OUTTAG(/*?*/ &I, /*?*/ &J, 8);
// 2389 out tag(i, j, 12) %if accop=1
if (ACCOP != 1) goto L_0307;
OUTTAG(/*?*/ &I, /*?*/ &J, 12);
L_0307:;
// 2390 out tag(i, j, 15)
OUTTAG(/*?*/ &I, /*?*/ &J, 15);
// 2391 k = 0
K = 0;
// 2392 lit = 0
LIT = 0;
// 2393 %while i#lp %cycle
L_0308:;
if (I == LP) goto L_0309;
// 2394 %if line(i)&127=' ' %start
if (LINE[I - 1] & 127 != 32) goto L_030A;
// 2395 k = k+1 %if non dense=1 %or lit=1
if (NONDENSE == 1) goto L_030B;
if (LIT != 1) goto L_030C;
L_030B:;
K = K + 1;
L_030C:;
// 2396 %else
goto L_030D;
L_030A:;
// 2397 j = j+k+1
J = J + K + 1;
// 2398 out symbol(' ') %and k = k-1 %while k>0
L_030E:;
if (K <= 0) goto L_030F;
OUTSYMBOL(32);
K = K - 1;
goto L_030E;
L_030F:;
// 2399 out symbol(line(i))
OUTSYMBOL(LINE[I - 1]);
// 2400 %finish
L_030D:;
// 2401 %if line(i)&127='''' %start
if (LINE[I - 1] & 127 != 39) goto L_0310;
// 2402 lit = 1
LIT = 1;
// 2403 %else
goto L_0311;
L_0310:;
// 2404 lit = 0
LIT = 0;
// 2405 %finish
L_0311:;
// 2406 i = i+1
I = I + 1;
// 2407 %repeat
goto L_0308;
L_0309:;
// 2408 i = i+1 %while line(i)&127=' '
L_0312:;
if (LINE[I - 1] & 127 != 32) goto L_0313;
I = I + 1;
goto L_0312;
L_0313:;
// 2409 %unless lp=1 %or line(i)&127=nl %or line(i)&127=12 %start
if (LP == 1) goto L_0314;
if (LINE[I - 1] & 127 == 10) goto L_0314;
if (LINE[I - 1] & 127 == 12) goto L_0314;
// 2410 out symbol(' ') %and j = j+1 %until j>=24
L_0315:;
OUTSYMBOL(32);
J = J + 1;
if (J >= 24) goto L_0316;
goto L_0315;
L_0316:;
// 2411 %finish
L_0314:;
// 2412 %cycle
L_0317:;
// 2413 out symbol(line(i))
OUTSYMBOL(LINE[I - 1]);
// 2414 %exit %if line(i)&127=nl %or line(i)&127=12
if (LINE[I - 1] & 127 == 10) goto L_0318;
if (LINE[I - 1] & 127 != 12) goto L_0319;
L_0318:;
goto L_031A;
L_0319:;
// 2415 i = i+1
I = I + 1;
// 2416 %repeat
goto L_0317;
L_031A:;
// 2417 %finish
L_0306:;
// 2418 %else
goto L_031B;
L_0300:;
// 2419 nline(1)
NLINE(1);
// 2420 %finish
L_031B:;
// 2421 %else
goto L_031C;
L_02EA:;
// 2422 i = i+1 %while line(i)&127#nl %and line(i)&127#12
L_031D:;
if (LINE[I - 1] & 127 == 10) goto L_031E;
if (LINE[I - 1] & 127 == 12) goto L_031E;
I = I + 1;
goto L_031D;
L_031E:;
// 2423 %finish
L_031C:;
// 2424 fault("Truncated line") %if i=max line+1
if (I != 512 + 1) goto L_031F;
FAULT(_imp_str_literal_size(63, "Truncated line"));
L_031F:;
// 2425
// 2426 %if b>=1 %start
if (B < 1) goto L_0320;
// 2427 dump((op>>8)&255) %unless 0<=op<=255
{
// Double-sided test on OP (Part I)
int tmp;
if (0 > (tmp = OP)) goto L_0321;
// Double-sided test on OP (Part II)
if (tmp <= 255) goto L_0322;
}
L_0321:;
DUMP((unsigned int)OP >> 8 & 255);
L_0322:;
// 2428 dump(op&255)
DUMP(OP & 255);
// 2429 dump((post>>8)&255) %if b=5
if (B != 5) goto L_0323;
DUMP((unsigned int)POST >> 8 & 255);
L_0323:;
// 2430 dump(post&255) %if b>=2
if (B < 2) goto L_0324;
DUMP(POST & 255);
L_0324:;
// 2431 dump((opd>>8)&255) %if b=4
if (B != 4) goto L_0325;
DUMP((unsigned int)OPD >> 8 & 255);
L_0325:;
// 2432 dump(opd&255) %if 3<=b<=4
{
// Double-sided test on B (Part I)
int tmp;
if (3 > (tmp = B)) goto L_0326;
// Double-sided test on B (Part II)
if (tmp > 4) goto L_0326;
}
DUMP(OPD & 255);
L_0326:;
// 2433 %finish %else %if -2<=b<=-1 %start
goto L_0327;
L_0320:;
{
// Double-sided test on B (Part I)
int tmp;
if (-2 > (tmp = B)) goto L_0328;
// Double-sided test on B (Part II)
if (tmp > -1) goto L_0328;
}
// 2434 dump((post>>8)&255) %if b=-2
if (B != -2) goto L_0329;
DUMP((unsigned int)POST >> 8 & 255);
L_0329:;
// 2435 dump((post&255))
DUMP(POST & 255);
// 2436 %finish
L_0328:;
L_0327:;
// 2437 %end
return;
} /* end of INSTROUT */
// 2438 !-----------------------------------------------------------------------
// 2439 %routine out tag(%integer %name i, j, %integer col)
void OUTTAG(int *I, int *J, int COL) {
// 2440
// 2441 %while line(i)&127#' ' %and i#lp %cycle
L_032A:;
if (LINE[*I - 1] & 127 == 32) goto L_032B;
if (*I == LP) goto L_032B;
// 2442 out symbol(line(i))
OUTSYMBOL(LINE[*I - 1]);
// 2443 i = i+1
*I = *I + 1;
// 2444 j = j+1
*J = *J + 1;
// 2445 %repeat
goto L_032A;
L_032B:;
// 2446 i = i+1 %while line(i)&127=' ' %and i#lp
L_032C:;
if (LINE[*I - 1] & 127 != 32) goto L_032D;
if (*I == LP) goto L_032D;
*I = *I + 1;
goto L_032C;
L_032D:;
// 2447 %unless i=lp %start
if (*I == LP) goto L_032E;
// 2448 out symbol(' ') %and j = j+1 %until j>=col
L_032F:;
OUTSYMBOL(32);
*J = *J + 1;
if (*J >= COL) goto L_0330;
goto L_032F;
L_0330:;
// 2449 %finish
L_032E:;
// 2450 %end
return;
} /* end of OUTTAG */
// 2451 !------------------------------------------------------------------------
// 2452 %routine out symbol(%byte %integer char)
void OUTSYMBOL(unsigned char CHAR) {
// 2453 %own %integer optr = 0
static int OPTR = 0;
// 2454
// 2455 %if char&127=nl %start
if (CHAR & 127 != 10) goto L_0331;
// 2456 optr = 0
OPTR = 0;
// 2457 nline(1)
NLINE(1);
// 2458 %finish %else %if char&127=12 %start
goto L_0332;
L_0331:;
if (CHAR & 127 != 12) goto L_0333;
// 2459 optr = 0
OPTR = 0;
// 2460 nline(lines on page)
NLINE(66);
// 2461 %else
goto L_0332;
L_0333:;
// 2462 %if optr=sp3 %start
if (OPTR != SP3) goto L_0334;
// 2463 %return %if wflag=0
if (WFLAG != 0) goto L_0335;
return;
L_0335:;
// 2464 nline(1)
NLINE(1);
// 2465 write(ln, 5)
_imp_WRITE(LN, 5);
// 2466 print symbol('+')
_imp_PRINTSYMBOL(43);
// 2467 spaces(line width-sp3-7)
_imp_SPACES(78 - SP3 - 7);
// 2468 optr = 0
OPTR = 0;
// 2469 %finish
L_0334:;
// 2470 print symbol(char)
_imp_PRINTSYMBOL(CHAR);
// 2471 optr = optr+1
OPTR = OPTR + 1;
// 2472 %finish
L_0332:;
// 2473 %end
return;
} /* end of OUTSYMBOL */
// 2474 !-----------------------------------------------------------------------
// 2475 %routine fault(%string(63) s)
void FAULT(_imp_string63 S) {
// 2476
// 2477 faults=faults+1
FAULTS = FAULTS + 1;
// 2478 %unless eflag=0 %start
if (EFLAG == 0) goto L_0336;
// 2479 print string("**** ".s.". ****")
_imp_PRINTSTRING(
*({
__typeof__(_imp_string255) tmp = *({
_imp_string255 tmp =
_imp_join((_imp_string *)/*?*/ &*({
_imp_string255 tmp =
_imp_join((_imp_string *)/*?*/ _imp_str_literal_ptr("**** "), (_imp_string *)/*?*/ &S);
(_imp_string255 *)&tmp;
}),
(_imp_string *)/*?*/ _imp_str_literal_ptr(". ****"));
(_imp_string255 *)&tmp;
}) /*q*/;
(_imp_string255 *)&tmp;
})
);
// 2480 nline(1)
NLINE(1);
// 2481 %finish
L_0336:;
// 2482 %end
return;
} /* end of FAULT */
// 2483 !-----------------------------------------------------------------------
// 2484 %routine nline(%integer n)
void NLINE(int N) {
// 2485 %own %integer line on page = lines on page+1, page no = 0
static int LINEONPAGE = 67;
static int PAGENO = 0;
// 2486
// 2487 %unless n<0 %start
if (N < 0) goto L_0337;
// 2488 %if line on page+pflag+n>lines on page %start
if (LINEONPAGE + PFLAG + N <= 66) goto L_0338;
// 2489 page no = page no+1
PAGENO = PAGENO + 1;
// 2490 %unless n=0 %start
if (N == 0) goto L_0339;
// 2491 %if line on page=lines on page %start
if (LINEONPAGE != 66) goto L_033A;
// 2492 new line
_imp_NEWLINE();
// 2493 %else
goto L_033B;
L_033A:;
// 2494 print symbol(12)
_imp_PRINTSYMBOL(12);
// 2495 %finish
L_033B:;
// 2496 %finish
L_0339:;
// 2497 %if pflag=0 %start
if (PFLAG != 0) goto L_033C;
// 2498 line on page = 1
LINEONPAGE = 1;
// 2499 %else
goto L_033D;
L_033C:;
// 2500 new line
_imp_NEWLINE();
// 2501 print string(" Motorola M6809 Assembler ")
_imp_PRINTSTRING(_imp_str_literal(" Motorola M6809 Assembler "));
// 2502 spaces((line width-37-length(header))//2)
_imp_SPACES(((long)(78 - 37 - *_imp_LENGTH((_imp_string255 *)/*p*/ /*?*/ &HEADER)) / (long)2));
// 2503 print string(header)
_imp_PRINTSTRING(
*({
__typeof__(_imp_string41) tmp = HEADER /*q*/;
(_imp_string255 *)&tmp;
})
);
// 2504 spaces((line width-36-length(header))//2)
_imp_SPACES(((long)(78 - 36 - *_imp_LENGTH((_imp_string255 *)/*p*/ /*?*/ &HEADER)) / (long)2));
// 2505 print string(" Page")
_imp_PRINTSTRING(_imp_str_literal(" Page"));
// 2506 write(page no, 2)
_imp_WRITE(PAGENO, 2);
// 2507 new lines(2)
_imp_NEWLINES(2);
// 2508 line on page = 4
LINEONPAGE = 4;
// 2509 %finish
L_033D:;
// 2510 %else
goto L_033E;
L_0338:;
// 2511 new lines(n)
_imp_NEWLINES(N);
// 2512 line on page = line on page+n
LINEONPAGE = LINEONPAGE + N;
// 2513 %finish
L_033E:;
// 2514 %finish
L_0337:;
// 2515 %end
return;
} /* end of NLINE */
// 2516 !-----------------------------------------------------------------------
// 2517 %routine print number(%integer n,d)
void PRINTNUMBER(int N, int D) {
// 2518 %conststring(1)%array h(0:15)="0","1","2","3","4","5","6","7","8","9",
const _imp_string1 H[16] = {_imp_str_init("0"), _imp_str_init("1"), _imp_str_init("2"), _imp_str_init("3"),
_imp_str_init("4"), _imp_str_init("5"), _imp_str_init("6"), _imp_str_init("7"),
_imp_str_init("8"), _imp_str_init("9"), _imp_str_init("A"), _imp_str_init("B"),
_imp_str_init("C"), _imp_str_init("D"), _imp_str_init("E"), _imp_str_init("F")};
// 2519+ "A","B","C","D","E","F"
// 2520 %integer model, nn
int MODEL;
int NN;
// 2521 %string(6) s
_imp_string6 S;
// 2522
// 2523 model = 1<<(d*8-1)
MODEL = 1 << D * 8 - 1;
// 2524 s=""
_imp_strncpy(/*?*/ &S, ({
__typeof__(_imp_string255) tmp; /*B*/
tmp = _imp_str_literal("");
(void *)&tmp;
}),
/*max:*/ 6);
// 2525 %cycle
L_033F:;
// 2526 model =(model>>1)//drad
MODEL = ((long)((unsigned int)MODEL >> 1) / (long)DRAD);
// 2527 nn = (n>>1)//drad
NN = ((long)((unsigned int)N >> 1) / (long)DRAD);
// 2528 s=h(n-((nn*drad)<<1)).s
_imp_strncpy(/*?*/ &S, ({
__typeof__(_imp_string255) tmp; /*B*/
tmp = *({
_imp_string255 tmp =
_imp_join((_imp_string *)/*?*/ &H[N - (NN * DRAD << 1)], (_imp_string *)/*?*/ &S);
(_imp_string255 *)&tmp;
});
(void *)&tmp;
}),
/*max:*/ 6);
// 2529 n = nn
N = NN;
// 2530 %repeat %until model=0
if (MODEL == 0) goto L_0340;
goto L_033F;
L_0340:;
// 2531 print string(s)
_imp_PRINTSTRING(
*({
__typeof__(_imp_string6) tmp = S /*q*/;
(_imp_string255 *)&tmp;
})
);
// 2532 %end
return;
} /* end of PRINTNUMBER */
// 2533 !-----------------------------------------------------------------------
// 2534 %routine sqs(%integer l, r)
void SQS(int L, int R) {
// 2535 %integer nass key, nval key, xhead key, lp, rp, i
int NASSKEY;
int NVALKEY;
int XHEADKEY;
int LP;
int RP;
int I;
// 2536 %string(6) name key
_imp_string6 NAMEKEY;
// 2537
// 2538 %return %unless l<r
if (L < R) goto L_0341;
return;
L_0341:;
// 2539 %while r-l>insert limit %cycle
L_0342:;
if (R - L <= 10) goto L_0343;
// 2540 lp = l
LP = L;
// 2541 rp = r+1
RP = R + 1;
// 2542 name key = name(l)
_imp_strncpy(/*?*/ &NAMEKEY, ({
__typeof__(_imp_string6) tmp; /*B*/
tmp = NAME[L - 1];
(void *)&tmp;
}),
/*max:*/ 6);
// 2543 nass key = nass(l)
NASSKEY = NASS[L - 1];
// 2544 nval key = nval(l)
NVALKEY = NVAL[L - 1];
// 2545 xhead key = xhead(l)
XHEADKEY = XHEAD[L - 1];
// 2546 %cycle
L_0344:;
// 2547 rp = rp-1 %until rp=lp %or name key>name(rp)
L_0345:;
RP = RP - 1;
if (RP == LP) goto L_0346;
if (_imp_strcmp((_imp_string *)/*?*/ &NAMEKEY, (_imp_string *)/*?*/ &NAME[RP - 1]) > 0) goto L_0346;
goto L_0345;
L_0346:;
// 2548 %exit %if lp=rp
if (LP != RP) goto L_0347;
goto L_0348;
L_0347:;
// 2549 name(lp) = name(rp)
_imp_strncpy(/*?*/ &NAME[LP - 1], ({
__typeof__(_imp_string6) tmp; /*B*/
tmp = NAME[RP - 1];
(void *)&tmp;
}),
/*max:*/ 6);
// 2550 nass(lp) = nass(rp)
NASS[LP - 1] = NASS[RP - 1];
// 2551 nval(lp) = nval(rp)
NVAL[LP - 1] = NVAL[RP - 1];
// 2552 xhead(lp) = xhead(rp)
XHEAD[LP - 1] = XHEAD[RP - 1];
// 2553 lp = lp+1 %until rp=lp %or name key<=name(lp)
L_0349:;
LP = LP + 1;
if (RP == LP) goto L_034A;
if (_imp_strcmp((_imp_string *)/*?*/ &NAMEKEY, (_imp_string *)/*?*/ &NAME[LP - 1]) <= 0) goto L_034A;
goto L_0349;
L_034A:;
// 2554 %exit %if lp=rp
if (LP != RP) goto L_034B;
goto L_0348;
L_034B:;
// 2555 name(rp) = name(lp)
_imp_strncpy(/*?*/ &NAME[RP - 1], ({
__typeof__(_imp_string6) tmp; /*B*/
tmp = NAME[LP - 1];
(void *)&tmp;
}),
/*max:*/ 6);
// 2556 nass(rp) = nass(lp)
NASS[RP - 1] = NASS[LP - 1];
// 2557 nval(rp) = nval(lp)
NVAL[RP - 1] = NVAL[LP - 1];
// 2558 xhead(rp) = xhead(lp)
XHEAD[RP - 1] = XHEAD[LP - 1];
// 2559 %repeat
goto L_0344;
L_0348:;
// 2560 name(lp) = name key
_imp_strncpy(/*?*/ &NAME[LP - 1], ({
__typeof__(_imp_string6) tmp; /*B*/
tmp = NAMEKEY;
(void *)&tmp;
}),
/*max:*/ 6);
// 2561 nass(lp) = nass key
NASS[LP - 1] = NASSKEY;
// 2562 nval(lp) = nval key
NVAL[LP - 1] = NVALKEY;
// 2563 xhead(lp) = xhead key
XHEAD[LP - 1] = XHEADKEY;
// 2564 %if lp-l>r-rp %start
if (LP - L <= R - RP) goto L_034C;
// 2565 sqs(rp+1, r)
SQS(RP + 1, R);
// 2566 r = lp-1
R = LP - 1;
// 2567 %else
goto L_034D;
L_034C:;
// 2568 sqs(l, lp-1)
SQS(L, LP - 1);
// 2569 l = rp+1
L = RP + 1;
// 2570 %finish
L_034D:;
// 2571 %repeat
goto L_0342;
L_0343:;
// 2572 %for rp = l+1, 1, r %cycle
// %for RP = L + 1, 1, R %cycle
{
int _initial = L + 1, _final = R;
if (invalid_for_loop(_initial, 1, _final)) _imp_signal(5, 1, 0, "Illegal cycle RP = L + 1, 1, R");
RP = _initial - (1);
L_034E:
if (RP == _final) goto L_034F;
RP += 1;
// 2573 name key = name(rp)
_imp_strncpy(/*?*/ &NAMEKEY, ({
__typeof__(_imp_string6) tmp; /*B*/
tmp = NAME[RP - 1];
(void *)&tmp;
}),
/*max:*/ 6);
// 2574 nass key = nass(rp)
NASSKEY = NASS[RP - 1];
// 2575 nval key = nval(rp)
NVALKEY = NVAL[RP - 1];
// 2576 xhead key = xhead(rp)
XHEADKEY = XHEAD[RP - 1];
// 2577 lp = l
LP = L;
// 2578 lp = lp+1 %while lp#rp %and name key>name(lp)
L_0351:;
if (LP == RP) goto L_0352;
if (_imp_strcmp((_imp_string *)/*?*/ &NAMEKEY, (_imp_string *)/*?*/ &NAME[LP - 1]) <= 0) goto L_0352;
LP = LP + 1;
goto L_0351;
L_0352:;
// 2579 %for i = rp-1, -1, lp %cycle
// %for I = RP - 1, -1, LP %cycle
{
int _initial = RP - 1, _final = LP;
if (invalid_for_loop(_initial, -1, _final)) _imp_signal(5, 1, 0, "Illegal cycle I = RP - 1, -1, LP");
I = _initial - (-1);
L_0353:
if (I == _final) goto L_0354;
I -= 1;
// 2580 name(i+1) = name(i)
_imp_strncpy(/*?*/ &NAME[I + 1 - 1], ({
__typeof__(_imp_string6) tmp; /*B*/
tmp = NAME[I - 1];
(void *)&tmp;
}),
/*max:*/ 6);
// 2581 nass(i+1) = nass(i)
NASS[I + 1 - 1] = NASS[I - 1];
// 2582 nval(i+1) = nval(i)
NVAL[I + 1 - 1] = NVAL[I - 1];
// 2583 xhead(i+1) = xhead(i)
XHEAD[I + 1 - 1] = XHEAD[I - 1];
// 2584 %repeat
goto L_0353;
}
L_0354:;
// 2585 name(lp) = name key
_imp_strncpy(/*?*/ &NAME[LP - 1], ({
__typeof__(_imp_string6) tmp; /*B*/
tmp = NAMEKEY;
(void *)&tmp;
}),
/*max:*/ 6);
// 2586 nass(lp) = nass key
NASS[LP - 1] = NASSKEY;
// 2587 nval(lp) = nval key
NVAL[LP - 1] = NVALKEY;
// 2588 xhead(lp) = xhead key
XHEAD[LP - 1] = XHEADKEY;
// 2589 %repeat
goto L_034E;
}
L_034F:;
// 2590 %end
return;
} /* end of SQS */
// 2591 !-----------------------------------------------------------------------
// 2592 %end %of %program
_imp_stop(0);
return 0;
case_OPTIONACTION_dispatch:
if (OPTIONACTION_index < -1 || OPTIONACTION_index > 51)
_imp_signalf(6, 3, OPTIONACTION_index, "->OPTIONACTION(%d) out of bounds at %s line %d", OPTIONACTION_index,
OPTIONACTION_file, OPTIONACTION_line);
goto *OPTIONACTION[OPTIONACTION_index - -1];
case_ITYPE1_dispatch:
if (ITYPE1_index < 1 || ITYPE1_index > 37)
_imp_signalf(6, 3, ITYPE1_index, "->ITYPE1(%d) out of bounds at %s line %d", ITYPE1_index, ITYPE1_file,
ITYPE1_line);
goto *ITYPE1[ITYPE1_index - 1];
case_ITYPE3_dispatch:
if (ITYPE3_index < 1 || ITYPE3_index > 37)
_imp_signalf(6, 3, ITYPE3_index, "->ITYPE3(%d) out of bounds at %s line %d", ITYPE3_index, ITYPE3_file,
ITYPE3_line);
goto *ITYPE3[ITYPE3_index - 1];
end_0:;
}