# 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]]);
