# diff i1401_cpu.c ../I1401-simh/i1401_cpu.c 26,28d25 < 02-May-02 WVSnyder 7-character HALT is not a halt-and-branch. < 30-Jan-02 WVSnyder Moved bcd_to_ascii and ascii_to_bcd to i1401_dat.h, < Allowed 8-character NOP 112d108 < #include "i1401_dat.h" 273c269 < HNOP | L1 | L4 | L7 | L8, /* nop */ --- > HNOP | L1 | L4 | L7, /* nop */ 295c291 < HNOP | L1 | L4 | L5 | L7, /* halt */ --- > HNOP | L1 | L4, /* halt */ 340a337,368 > > /* ASCII to BCD conversion */ > > const char ascii_to_bcd[128] = { > 000, 000, 000, 000, 000, 000, 000, 000, /* 000 - 037 */ > 000, 000, 000, 000, 000, 000, 000, 000, > 000, 000, 000, 000, 000, 000, 000, 000, > 000, 000, 000, 000, 000, 000, 000, 000, > 000, 052, 077, 013, 053, 034, 060, 032, /* 040 - 077 */ > 017, 074, 054, 037, 033, 040, 073, 021, > 012, 001, 002, 003, 004, 005, 006, 007, > 010, 011, 015, 056, 076, 035, 016, 072, > 014, 061, 062, 063, 064, 065, 066, 067, /* 100 - 137 */ > 070, 071, 041, 042, 043, 044, 045, 046, > 047, 050, 051, 022, 023, 024, 025, 026, > 027, 030, 031, 075, 036, 055, 020, 057, > 000, 061, 062, 063, 064, 065, 066, 067, /* 140 - 177 */ > 070, 071, 041, 042, 043, 044, 045, 046, > 047, 050, 051, 022, 023, 024, 025, 026, > 027, 030, 031, 000, 000, 000, 000, 000 }; > > /* BCD to ASCII conversion - also the "full" print chain */ > > char bcd_to_ascii[64] = { > ' ', '1', '2', '3', '4', '5', '6', '7', > '8', '9', '0', '#', '@', ':', '>', '(', > '^', '/', 'S', 'T', 'U', 'V', 'W', 'X', > 'Y', 'Z', '\'', ',', '%', '=', '\\', '+', > '-', 'J', 'K', 'L', 'M', 'N', 'O', 'P', > 'Q', 'R', '!', '$', '*', ']', ';', '_', > '&', 'A', 'B', 'C', 'D', 'E', 'F', 'G', > 'H', 'I', '?', '.', ')', '[', '<', '"' }; 945c973 < if ((ilnt == 4) || (ilnt == 5)) { BRANCH; } /* branch if called */ --- > if (ilnt >= 4) { BRANCH; } /* branch if called */ # diff i1401_doc.txt ../I1401-simh/i1401_doc.txt 324,325d323 < -d display in rows of 50 ASCII characters, < followed by a row with 1's for word marks # diff i1401_sys.c ../I1401-simh/i1401_sys.c 26d25 < 02-May-02 WVSnyder Improved dump for NOP, added -D option for dump. 192,196d190 < if (sw & SWMASK ('D')) { /* dump? */ < for ( i=0; i<50; i++ ) fprintf(of, "%c", bcd_to_ascii[val[i]&CHAR]) ; < fprintf (of, "\n\t"); < for ( i=0; i<50; i++ ) fprintf(of, (val[i]&WM)? "1": " ") ; < return -(i - 1); } 209c203 < if ((flags & NOWM) && (ilnt > 7)) ilnt = 7; /* cs, swm? */ --- > if ((flags & (NOWM | HNOP)) && (ilnt > 7)) ilnt = 7; /* cs, swm, h, nop? */ 211c205 < else if ((ilnt > 8) && (op != OP_NOP)) ilnt = 8; /* cap length */ --- > else if (ilnt > 8) ilnt = 8; /* cap length */ 213c207 < ((op != OP_NOP) == 0)) return STOP_INVL; /* nop? */ --- > ((flags & HNOP) == 0)) return STOP_INVL; /* nop, h? */ 216,217c210,211 < if (((flags & IO) || (op == OP_NOP)) && (val[1] == BCD_PERCNT)) < fprintf (of, " %%%c%c", bcd_to_ascii[val[2]], bcd_to_ascii[val[3]]); --- > if ((flags & IO) && (val[1] == BCD_PERCNT)) fprintf (of, " %%%c%c", > bcd_to_ascii[val[2]], bcd_to_ascii[val[3]]);