$SAVE
/* $NOLIST */
/* C86 MODULE */

/* 8086 SOURCE GENERATION TABLE FOR ZCON */
/* EACH CHARACTER IS OUTPUT AS PART OF THE CONVERSION  WITH THE
   EXCEPTION OF THE FOLLOWING KEYS:

IF CH & 80H	THE OPERANDS ARE
	TO BE ACCESSED IN THE REVERSE ORDER, I.E., Z80 OP1 BECOMES
	8086 OP2.
 
0 - STARTS A NUMBER TO BE OUTPUT.  THE 0 IS SKIPPED AND THE
    NEXT N HEX DIGITS ARE OUTPUT.
 
 CONTROL OF 8086 EXPRESSION TYPE
	1			IB
	2			IW
	3			MB
	4			MW
	5			MN
	6			RB
	7			RW
	8			RX
 
 OTHER KEYS
	.				GENERATE A CARRIAGE RETURN AND TERMINATE THE CONVERTED OUTPUT.
	*				PROCESS PSEUDO-OP BASED ON CASE (CASE$8086).
	@				ERROR...SET ERROR CODE FOR NON-CONVERTIBLE INSTRUCTION.
	&				1 BYTE BINARY ERROR CODE FOLLOWS.
	/				GENERATE A CARRIAGE RETURN.
	BLANK			SEPARATOR...CONVERT TO TAB
	_				SEPARATOR...CONVERT TO SPACE
	,				OPERAND SEPARATOR...INCREMENT THE OPERAND COUNTER.
	=				special ',': put ',' but dont inc operand counter.
	%				GENERATE '/8+5' FOR CONVERSION OF RST.
	#				GENERATE A LABEL 'LNNNN_:<TAB>'.
	$				GENERATE A LABEL FOR AN OPERAND (LNNNN_).
	BINARY 075H		SPECIAL CODE FOR JUMP RELATIVES TO STRIP OFF '-$'
	"				IB IS CONVERTED TO AN 'AND' MASK.
	!				IB IS CONVERTED TO AN 'OR' MASK.
*/
 
DECLARE C86 (*) BYTE DATA (
'DB*',
'DB*',
'DW*',
'DB*',
'&G',
'*',
'&G',
'*',
'*',
'&G',
'*',
'&G',
'*',
'ORG*',
'*',
'*',
'*',
'*',
'*',
'*',
'NAME*',
'@',
'*',
'*',
'*',
'*',
'*',
'*',
'*',
'*',
'*',
'*',
'*',
'&]',
'*',
'@',
'&Y',
'*',

/* ?'CMC.',
*/
'XOR AH,01H/',
'AND AH,NOT(_02H_).',

/* ?'NOT AL.',
*/
'NOT AL/',
'OR AH,010H_OR_02H.',

/* ?'NEG AL.',
*/
'NEG AL/',
'CMC/',
'LAHF/',
'JO $/',
'AND AH,NOT(_04H_)/',
'JMP $/',
'#/',
'OR AH,04H/',
'#.',

/* ?'DAA&R.',
*/
'TEST AH,02H/',
'JZ $/',
'SAHF/',
'DAS/',
'LAHF/',
'JMP $/',
'#/',
'SAHF/',
'DAA/',
'LAHF/',
'AND AH,NOT(_02H_)/',
'#.',

'CLI.',

'STI.',

'XCHG BX,??HLPRIM/',
'XCHG DX,??DEPRIM/',
'XCHG CX,??BCPRIM.',

'HLT.',

'NOP.',

/* ?'RCL AL,01.', 								
*/
'SHR AH,01/',					/* RLA */
'RCL AL,01/',
'RCL AH,01/',
'AND AH,NOT(_02H_OR_010H_).',

/* ?'ROL AL,01.',								
*/
'SHR AH,01/',					/* RLCA */
'ROL AL,01/',
'RCL AH,01/',
'AND AH,NOT(_02H_OR_010H_).',

/* ?'RCR AL,01.',								
*/
'SHR AH,01/',					/* RRA */
'RCR AL,01/',
'RCL AH,01/',
'AND AH,NOT(_02H_OR_010H_).',

/* ?'ROR AL,01.',								
*/
'SHR AH,01/',					/* RRCA */
'ROR AL,01/',
'RCL AH,01/',
'AND AH,NOT(_02H_OR_010H_).',

'STC.',											/* SCF */

'MOV 6,6.',										/* LD */

'MOV 6,1.',

'MOV 6,[BX].',

'MOV 6,[81].',

'MOV [BX],6.',

'MOV [81],6.',

'MOV BYTE_PTR_[BX],1.',

'MOV BYTE_PTR_[81],1.',

/* ?'XCHG BX,CX/',
'MOV AL,DS:[BX]/',
'XCHG BX,CX.',
*/
'MOV BP,CX/',
'MOV AL,DS:[BP].',

/* ?'XCHG BX,DX/',
'MOV AL,DS:[BX]/',
'XCHG BX,DX.',
*/
'MOV BP,DX/',
'MOV AL,DS:[BP].',

'MOV AL,3.',

/* ?'XCHG BX,CX/',
'MOV DS:[BX],AL/',
'XCHG BX,CX.',
*/
'MOV BP,CX/',
'MOV DS:[BP],AL.',

/* ?'XCHG BX,DX/',
'MOV DS:[BX],AL/',
'XCHG BX,DX.',
*/
'MOV BP,DX/',
'MOV DS:[BP],AL.',

'MOV 3,AL.',

'@',
'@',
'@',
'@',

'MOV 7,2.',						/* RW, IW */

'MOV 8,2.',						/* RX, IW */

'MOV 7,4.',						/* RW, MW */

'MOV 8,4.',						/* RX, MW */

'MOV 4,7.',

'MOV 4,8.',

'MOV SP,BX.',

'MOV SP,8.',

/* ?'LAHF/',					
'PUSH AX.',
*/
'XCHG AL,AH/',					/* PUSH AF */
'PUSH AX/',
'XCHG AL,AH.',

'PUSH 7.',

'PUSH 8.',

/* ?'POP AX/',
'SAHF.',
*/
'POP AX/',
'XCHG AL,AH.',

'POP 7.',

'POP 8.',

'XCHG BX,DX.',

/* ?'LAHF/',
'XCHG AX,??AFPRIM/',
'SAHF.',
*/
'XCHG AX,??AFPRIM.',

'MOV BP,SP/',
'XCHG BX,[BP].',

'MOV BP,SP/',
'XCHG [BP],8.',

/* ?'MOV AH,DS:[BX]/',				
'XCHG BX,DX/',
'MOV DS:[BX],AH/',
'XCHG BX,DX/',
'LAHF/',
'AND AH,00E9H/',
'INC BX/',
'INC DX/',
'DEC CX/',
'JE $/',
'OR AH,04/',
'#SAHF.',
*/
'SAHF/',					/* LDI */
'MOV AH,[BX]/',
'MOV BP,DX/',
'MOV [BP],AH/',
'LAHF/',
'AND AH,080H_OR_040H_OR_01H/',
'INC BX/',
'INC DX/',
'DEC CX/',
'JZ $/',
'OR AH,04H/',
'#.',

/* ?'XCHG DI,DX/',					
'XCHG SI,BX/',
'CLD/',
'REP MOVSB/',
'XCHG DI,DX/',
'XCHG SI,BX/',
'LAHF/',
'AND AH,00E9H/',
'SAHF.',
*/
'XCHG DI,DX/',					/* LDIR */
'XCHG SI,BX/',
'CLD/',
'REP MOVSB/',
'XCHG DI,DX/',
'XCHG SI,BX/',
'AND AH,NOT(_010H_OR_04H_OR_02H_).',

/* ?'MOV AH,DS:[BX]/',						
'XCHG BX,DX/',
'MOV DS:[BX],AH/',
'XCHG BX,DX/',
'LAHF/',
'AND AH,00E9H/',
'DEC BX/',
'DEC DX/',
'DEC CX/',
'JE $/',
'OR AH,04/',
'#SAHF.',
*/
'SAHF/',					/* LDD */
'MOV AH,[BX]/',
'MOV BP,DX/',
'MOV [BP],AH/',
'LAHF/',
'AND AH,NOT(_010H_OR_02H_OR_04H_)/',
'DEC BX/',
'DEC DX/',
'DEC CX/',
'JZ $/',
'OR AH,04H/',
'#.',

/* ?'XCHG DI,DX/', 							
'XCHG SI,BX/',
'STD/',
'REP MOVSB/',
'XCHG DI,DX/',
'XCHG SI,BX/',
'LAHF/',
'AND AH,00E9H/',
'SAHF.',
*/
'XCHG DI,DX/',					/* LDDR */
'XCHG SI,BX/',
'STD/',
'REP MOVSB/',
'XCHG DI,DX/',
'XCHG SI,BX/',
'AND AH,NOT(_010H_OR_04H_OR_02H_).',

/* ?'RCR AH,01/',
'PUSH AX/',
'CMP AL,DS:[BX]/',
'LAHF/',
'AND AH,00FBH/',
'INC BX/',
'DEC CX/',
'JE $/',
'OR AH,04/',
'#SAHF/',
'POP AX/',
'RCL AH,01.',
*/
'CMP AL,[BX]/',					/* CPI      PRESERVE CARRY */
'ROR AH,01/',
'LAHF/',
'AND AH,NOT(_04H_)/',
'INC BX/',
'DEC CX/',
'JZ $/',
'OR AH,04H/',
'#.',

/* ?'CLD/', 									
'RCR AH,01/',
'PUSH AX/',
'XCHG DI,BX/',
'REPNZ SCASB/',
'XCHG DI,BX/',
'LAHF/',
'AND AH,00FBH/',
'JCXZ $/',
'OR AH,04/',
'#SAHF/',
'POP AX/',
'RCL AH,01.',
*/
'SHR AH,01/',					/* CPIR */
'RCL BP,01/',
'XCHG DI,BX/',
'CLD/',
'REPNE SCASB/',
'XCHG DI,BX/',
'ROR BP,01/',
'LAHF/',
'AND AH,NOT(_04H_)/',
'JCXZ $/',
'OR AH,04H/',
'#.',

/* ?'RCR AH,01/',									
'PUSH AX/',
'CMP AL,DS:[BX]/',
'LAHF/',
'AND AH,00FBH/',
'DEC BX/',
'DEC CX/',
'JE $/',
'OR AH,04/',
'#SAHF/',
'POP AX/',
'RCL AH,01.',
*/
'CMP AL,[BX]/',					/* CPD */
'ROR AH,01/',
'LAHF/',
'AND AH,NOT(_04H_)/',
'DEC BX/',
'DEC CX/',
'JZ $/',
'OR AH,04H/',
'#.',

/* ?'RCR AH,01/',									
'PUSH AX/',
'STD/',
'XCHG DI,BX/',
'REPNZ SCASB/',
'XCHG DI,BX/',
'LAHF/',
'AND AH,00FBH/',
'JCXZ $/',
'OR AH,04/',
'#SAHF/',
'POP AX/',
'RCL AH,01.',
*/
'SHR AH,01/',					/* CPDR */
'RCL BP,01/',
'XCHG DI,BX/',
'STD/',
'REPNE SCASB/',
'XCHG DI,BX/',
'ROR BP,01/',
'LAHF/',
'AND AH,NOT(_04H_)/',
'JCXZ $/',
'OR AH,04H/',
'#.',

/* ?'ADD AL,6.',								
*/
'ADD AL,6/',					/* ADD AL,RB */
'LAHF/',
'JO $/',
'AND AH,NOT(_04H_OR_02H_)/',
'JMP $/',
'#/',
'OR AH,04H/',
'AND AH,NOT(_02H_)/',
'#.',

/* ?'ADD AL,1.',
*/
'ADD AL,1/',
'LAHF/',
'JO $/',
'AND AH,NOT(_04H_OR_02H_)/',
'JMP $/',
'#/',
'OR AH,04H/',
'AND AH,NOT(_02H_)/',
'#.',

/* ?'ADD AL,DS:[BX].',
*/
'ADD AL,[BX]/',
'LAHF/',
'JO $/',
'AND AH,NOT(_04H_OR_02H_)/',
'JMP $/',
'#/',
'OR AH,04H/',
'AND AH,NOT(_02H_)/',
'#.',

/* ?'ADD AL,DS:[81].',
*/
'ADD AL,[81]/',
'LAHF/',
'JO $/',
'AND AH,NOT(_04H_OR_02H_)/',
'JMP $/',
'#/',
'OR AH,04H/',
'AND AH,NOT(_02H_)/',
'#.',

/* ?'LAHF/',									
'RCR AH,01/',
'ADD BX,7/',
'RCL AH,01/',
'SAHF.',
*/
'AND AH,NOT(_02H_)/',					/* ADD HL,RW */
'SHR AH,01/',
'ADD BX,7/',
'RCL AH,01.',

/* ?'LAHF/',									
'RCR AH,01/',
'ADD SI,SI/',
'RCL AH,01/',
'SAHF.',
*/
'AND AH,NOT(_02H_)/',					/* ADD IX,IX */
'SHR AH,01/',
'ADD SI,SI/',
'RCL AH,01.',

/* ?'LAHF/',									
'RCR AH,01/',
'ADD DI,DI/',
'RCL AH,01/',
'SAHF.',
*/
'AND AH,NOT(_02H_)/',					/* ADD IY,IY */
'SHR AH,01/',
'ADD DI,DI/',
'RCL AH,01.',

/* ?'LAHF/',									
'RCR AH,01/',
'ADD 8,7/',
'RCL AH,01/',
'SAHF.',
*/
'AND AH,NOT(_02H_)/',					/* ADD RX,RW */
'SHR AH,01/',
'ADD 8,7/',
'RCL AH,01.',

/* ?'ADC AL,6.',								
*/
'SHR AH,01/',					/* ADC */
'ADC AL,6/',
'LAHF/',
'JO $/',
'AND AH,NOT(_04H_OR_02H_)/',
'JMP $/',
'#/',
'OR AH,04H/',
'AND AH,NOT(_02H_)/',
'#.',

/* ?'ADC AL,1.',
*/
'SHR AH,01/',
'ADC AL,1/',
'LAHF/',
'JO $/',
'AND AH,NOT(_04H_OR_02H_)/',
'JMP $/',
'#/',
'OR AH,04H/',
'AND AH,NOT(_02H_)/',
'#.',

/* ?'ADC AL,DS:[BX].',
*/
'SHR AH,01/',
'ADC AL,[BX]/',
'LAHF/',
'JO $/',
'AND AH,NOT(_04H_OR_02H_)/',
'JMP $/',
'#/',
'OR AH,04H/',
'AND AH,NOT(_02H_)/',
'#.',

/* ?'ADC AL,DS:[81].',
*/
'SHR AH,01/',
'ADC AL,[81]/',
'LAHF/',
'JO $/',
'AND AH,NOT(_04H_OR_02H_)/',
'JMP $/',
'#/',
'OR AH,04H/',
'AND AH,NOT(_02H_)/',
'#.',

/* ?'ADC BX,7.',
*/
'SHR AH,01/',
'ADC BX,7/',
'LAHF/',
'JO $/',
'AND AH,NOT(_04H_)/',
'JMP $/',
'#/',
'OR AH,04H/',
'#.',

/* ?'SUB AL,',0B6H,'.',
*/
'SUB AL,',0B6H,'/',
'LAHF/',
'JO $/',
'AND AH,NOT(_04H_)/',
'JMP $/',
'#/',
'OR AH,04H/',
'#.',

/* ?'SUB AL,',0B1H,'.',
*/
'SUB AL,',0B1H,'/',
'LAHF/',
'JO $/',
'AND AH,NOT(_04H_)/',
'JMP $/',
'#/',
'OR AH,04H/',
'#.',

/* ?'SUB AL,DS:[BX].',
*/
'SUB AL,[BX]/',
'LAHF/',
'JO $/',
'AND AH,NOT(_04H_)/',
'JMP $/',
'#/',
'OR AH,04H/',
'#.',

/* ?'SUB AL,DS:[',0B8H,0B1H,'].',
*/
'SUB AL,[', 0B8H, 0B1H, ']/',
'LAHF/',
'JO $/',
'AND AH,NOT(_04H_)/',
'JMP $/',
'#/',
'OR AH,04H/',
'#.',

/* ?'SBB AL,6.',
*/
'SHR AH,01/',
'SBB AL,6/',
'LAHF/',
'JO $/',
'AND AH,NOT(_04H_)/',
'JMP $/',
'#/',
'OR AH,04H/',
'#.',

/* ?'SBB AL,1.',
*/
'SHR AH,01/',
'SBB AL,1/',
'LAHF/',
'JO $/',
'AND AH,NOT(_04H_)/',
'JMP $/',
'#/',
'OR AH,04H/',
'#.',

/* ?'SBB AL,DS:[BX].',
*/
'SHR AH,01/',
'SBB AL,[BX]/',
'LAHF/',
'JO $/',
'AND AH,NOT(_04H_)/',
'JMP $/',
'#/',
'OR AH,04H/',
'#.',

/* ?'SBB AL,DS:[81].',
*/
'SHR AH,01/',
'SBB AL,[81]/',
'LAHF/',
'JO $/',
'AND AH,NOT(_04H_)/',
'JMP $/',
'#/',
'OR AH,04H/',
'#.',

/* ?'SBB BX,7.',
*/
'SHR AH,01/',
'SBB BX,7/',
'LAHF/',
'JO $/',
'AND AH,NOT(_04H_)/',
'JMP $/',
'#/',
'OR AH,04H/',
'#.',

/* ?'AND AL,',0B6H,'.',
*/
'AND AL,',0B6H,'/',
'LAHF/',
'OR AH,010H/',
'AND AH,NOT(_02H_).',

/* ?'AND AL,',0B1H,'.',
*/
'AND AL,',0B1H,'/',
'LAHF/',
'OR AH,010H/',
'AND AH,NOT(_02H_).',

/* ?'AND AL,DS:[BX].',
*/
'AND AL,[BX]/',
'LAHF/',
'OR AH,010H/',
'AND AH,NOT(_02H_).',

/* ?'AND AL,DS:[',0B8H,0B1H,'].',
*/
'AND AL,[', 0B8H, 0B1H, ']/',
'LAHF/',
'OR AH,010H/',
'AND AH,NOT(_02H_).',

/* ?'OR AL,',0B6H,'.',
*/
'OR AL,',0B6H,'/',
'LAHF/',
'AND AH,NOT(_010H_OR_02H_).',

/* ?'OR AL,',0B1H,'.',
*/
'OR AL,',0B1H,'/',
'LAHF/',
'AND AH,NOT(_02H_OR_010H_).',

/* ?'OR AL,DS:[BX].',
*/
'OR AL,[BX]/',
'LAHF/',
'AND AH,NOT(_010H_OR_02H_).',

/* ?'OR AL,DS:[',0B8H,0B1H,'].',
*/
'OR AL,[', 0B8H, 0B1H, ']/',
'LAHF/',
'AND AH,NOT(_02H_OR_010H_).',

/* ?'XOR AL,',0B6H,'.',
*/
'XOR AL,',0B6H,'/',
'LAHF/',
'AND AH,NOT(_010H_OR_02H_).',

/* ?'XOR AL,',0B1H,'.',
*/
'XOR AL,',0B1H,'/',
'LAHF/',
'AND AH,NOT(_010H_OR_02H_).',

/* ?'XOR AL,DS:[BX].',
*/
'XOR AL,[BX]/',
'LAHF/',
'AND AH,NOT(_010H_OR_02H_).',

/* ?'XOR AL,DS:[',0B8H,0B1H,'].',
*/
'XOR AL,[', 0B8H, 0B1H, ']/',
'LAHF/',
'AND AH,NOT(_010H_OR_02H_).',

/* ?'CMP AL,',0B6H,'.',
*/
'CMP AL,',0B6H,'/',
'LAHF/',
'JO $/',
'AND AH,NOT(_04H_)/',
'JMP $/',
'#/',
'OR AH,04H/',
'#.',

/* ?'CMP AL,',0B1H,'.',
*/
'CMP AL,',0B1H,'/',
'LAHF/',
'JO $/',
'AND AH,NOT(_04H_)/',
'JMP $/',
'#/',
'OR AH,04H/',
'#.',

/* ?'CMP AL,DS:[BX].',
*/
'CMP AL,[BX]/',
'LAHF/',
'JO $/',
'AND AH,NOT(_04H_)/',
'JMP $/',
'#/',
'OR AH,04H/',
'#.',

/* ?'CMP AL,DS:[',0B8H,0B1H,'].',
*/
'CMP AL,[', 0B8H, 0B1H, ']/',
'LAHF/',
'JO $/',
'AND AH,NOT(_04H_)/',
'JMP $/',
'#/',
'OR AH,04H/',
'#.',

/* ?'RCR AH,01/', 								
'INC 6/',
'RCL AH,01.',
*/
'SHR AH,01/',					/* INC RB */
'INC 6/',
'LAHF/',
'JO $/',
'AND AH,NOT(_04H_OR_02H_)/',
'JMP $/',
'#/',
'OR AH,04H/',
'AND AH,NOT(_02H_)/',
'#.',

/* ?'RCR AH,01/',								
'INC BYTE_PTR_DS:[BX]/',
'RCL AH,01.',
*/
'SHR AH,01/',					/* INC RX+B */
'INC BYTE_PTR_[BX]/',
'LAHF/',
'JO $/',
'AND AH,NOT(_04H_OR_02H_)/',
'JMP $/',
'#/',
'OR AH,04H/',
'AND AH,NOT(_02H_)/',
'#.',

/* ?'RCR AH,01/',								
'INC BYTE_PTR_DS:[81]/',
'RCL AH,01.',
*/
'SHR AH,01/',					/* INC RX+B */
'INC BYTE_PTR_[81]/',
'LAHF/',
'JO $/',
'AND AH,NOT(_04H_OR_02H_)/',
'JMP $/',
'#/',
'OR AH,04H/',
'AND AH,NOT(_02H_)/',
'#.',

/* ?'LAHF/',									
'INC 7/',
'SAHF.',
*/
'INC 7.',					/* INC RW */

/* ?'LAHF/',									
'INC 8/',
'SAHF.',
*/
'INC 8.',					/* INC RX */

/* ?'RCR AH,01/',								
'DEC 6/',
'RCL AH,01.',
*/
'SHR AH,01/',					/* DEC RB */
'DEC 6/',
'LAHF/',
'JO $/',
'AND AH,NOT(_04H_)/',
'JMP $/',
'#/',
'OR AH,04H/',
'#.',

/* ?'RCR AH,01/',
'DEC BYTE_PTR_DS:[BX]/',
'RCL AH,01.',
*/
'SHR AH,01/',
'DEC BYTE_PTR_[BX]/',
'LAHF/',
'JO $/',
'AND AH,NOT(_04H_)/',
'JMP $/',
'#/',
'OR AH,04H/',
'#.',

/* ?'RCR AH,01/',
'DEC BYTE_PTR_DS:[81]/',
'RCL AH,01.',
*/
'SHR AH,01/',
'DEC BYTE_PTR_[81]/',
'LAHF/',
'JO $/',
'AND AH,NOT(_04H_)/',
'JMP $/',
'#/',
'OR AH,04H/',
'#.',

/* ?'LAHF/',
'DEC 7/',
'SAHF.',
*/
'DEC 7.',

/* ?'LAHF/',
'DEC 8/',
'SAHF.',
*/
'DEC 8.',

'@',							/* IM */

/* ?'ROL 6,01.',								
*/
'ROL 6,01/',					/* RLC */
'RCL BP,01/',
'OR 6=6/',
'ROR BP,01/',
'LAHF/',
'AND AH,NOT(_02H_OR_010H_).',

/* ?'ROL BYTE_PTR_DS:[BX],01.',
*/
'MOV AH,[BX]/',
'ROL AH,01/',
'MOV [BX],AH/',
'RCL BP,01/',
'OR AH,AH/',
'ROR BP,01/',
'LAHF/',
'AND AH,NOT(_02H_OR_010H_).',

/* ?'ROL BYTE_PTR_DS:[81],01.',
*/
'MOV AH=[81]/',
'ROL AH,01/',
'MOV [81],AH/',
'RCL BP,01/',
'OR AH,AH/',
'ROR BP,01/',
'LAHF/',
'AND AH,NOT(_02H_OR_010H_).',

/* ?'RCL 6,01.',								
*/
'SHR AH,01/',					/* RL */
'RCL 6,01/',
'RCL BP,01/',
'OR 6=6/',
'ROR BP,01/',
'LAHF/',
'AND AH,NOT(_02H_OR_010H_).',

/* ?'RCL BYTE_PTR_DS:[BX],01.',
*/
'SHR AH,01/',
'MOV AH,[BX]/',
'RCL AH,01/',
'MOV [BX],AH/',
'RCL BP,01/',
'OR AH,AH/',
'ROR BP,01/',
'LAHF/',
'AND AH,NOT(_02H_OR_010H_).',

/* ?'RCL BYTE_PTR_DS:[81],01.',
*/
'SHR AH,01/',
'MOV AH=[81]/',
'RCL AH,01/',
'MOV [81],AH/',
'RCL BP,01/',
'OR AH,AH/',
'ROR BP,01/',
'LAHF/',
'AND AH,NOT(_02H_OR_010H_).',

/* ?'ROR 6,01.',								
*/
'SHR AH,01/',					/* RCR */
'RCR 6,01/',
'RCL BP,01/',
'OR 6=6/',
'ROR BP,01/',
'LAHF/',
'AND AH,NOT(_02H_OR_010H_).',

/* ?'ROR BYTE_PTR_DS:[BX],01.',
*/
'SHR AH,01/',
'MOV AH,[BX]/',
'RCR AH,01/',
'MOV [BX],AH/',
'RCL BP,01/',
'OR AH,AH/',
'ROR BP,01/',
'LAHF/',
'AND AH,NOT(_02H_OR_010H_).',

/* ?'ROR BYTE_PTR_DS:[81],01.',
*/
'SHR AH,01/',
'MOV AH=[81]/',
'RCR AH,01/',
'MOV [81],AH/',
'RCL BP,01/',
'OR AH,AH/',
'ROR BP,01/',
'LAHF/',
'AND AH,NOT(_02H_OR_010H_).',

/* ?'RCR 6,01.',								
*/
'ROR 6,01/',					/* RR */
'RCL BP,01/',
'OR 6=6/',
'ROR BP,01/',
'LAHF/',
'AND AH,NOT(_02H_OR_010H_).',

/* ?'RCR BYTE_PTR_DS:[BX],01.',
*/
'MOV AH,[BX]/',
'ROR AH,01/',
'MOV [BX],AH/',
'RCL BP,01/',
'OR AH,AH/',
'ROR BP,01/',
'LAHF/',
'AND AH,NOT(_02H_OR_010H_).',

/* ?'RCR BYTE_PTR_DS:[81],01.',
*/
'MOV AH=[81]/',
'ROR AH,01/',
'MOV [81],AH/',
'RCL BP,01/',
'OR AH,AH/',
'ROR BP,01/',
'LAHF/',
'AND AH,NOT(_02H_OR_010H_).',

/* ?'SAL 6,01.',								
*/
'SAL 6,01/',					/* SLA */
'LAHF/',
'AND AH,NOT(_02H_OR_010H_).',

/* ?'SAL BYTE_PTR_DS:[BX],01.',
*/
'SAL BYTE_PTR_[BX],01/',
'LAHF/',
'AND AH,NOT(_02H_OR_010H_).',

/* ?'SAL BYTE_PTR_DS:[81],01.',
*/
'SAL BYTE_PTR_[81],01/',
'LAHF/',
'AND AH,NOT(_010H_OR_02H_).',

/* ?'SAR 6,01.',								
*/
'SAR 6,01/',					/* SRA */
'LAHF/',
'AND AH,NOT(_02H_OR_010H_).',

/* ?'SAR BYTE_PTR_DS:[BX],01.',
*/
'SAR BYTE_PTR_[BX],01/',
'LAHF/',
'AND AH,NOT(_02H_OR_010H_).',

/* ?'SAR BYTE_PTR_DS:[81],01.',
*/
'SAR BYTE_PTR_[81],01/',
'LAHF/',
'AND AH,NOT(_010H_OR_02H_).',

/* ?'SHR 6,01.',								
*/
'SHR 6,01/',					/* SRL */
'LAHF/',
'AND AH,NOT(_02H_OR_010H_).',

/* ?'SHR BYTE_PTR_DS:[BX],01.',
*/
'SHR BYTE_PTR_[BX],01/',
'LAHF/',
'AND AH,NOT(_02H_OR_010H_).',

/* ?'SHR BYTE_PTR_DS:[81],01.',
*/
'SHR BYTE_PTR_[81],01/',
'LAHF/',
'AND AH,NOT(_010H_OR_02H_).',

/* ?'RCR BP,01/',								
'PUSH CX/',
'MOV AH,[BX]/',
'MOV CL,04/',
'ROR AL,CL/',
'ROL AX,CL/',
'MOV DS:[BX],AH/',
'POP CX/',
'ADD AL,00/',
'RCL BP,01.',
*/
'MOV BP,AX/',					/* RLD */
'AND BP,001F0H/',
'MOV AH,AL/',
'SHL AH,01/',
'SHL AH,01/',
'SHL AH,01/',
'SHL AH,01/',
'MOV AL,[BX]/',
'ROL AX,01/',
'ROL AX,01/',
'ROL AX,01/',
'ROL AX,01/',
'MOV [BX],AL/',
'MOV AL,AH/',
'SHL AH,01/',
'OR AX,BP/',
'OR AL,AL/',
'ROR AH,01/',
'LAHF/',
'AND AH,NOT(_010H_OR_02H_).',

/* ?'RCR BP,01/',								
'PUSH CX/',
'MOV AH,DS:[BX]/',
'MOV CL,04/',
'ROR AX,CL/',
'ROL AL,CL/',
'MOV DS:[BX],AH/',
'POP CX/',
'ADD AL,00/',
'RCL BP,01.',
*/
'MOV BP,AX/',					/* RRD */
'AND BP,001F0H/',
'MOV AH,AL/',
'MOV AL,[BX]/',
'ROR AX,01/',
'ROR AX,01/',
'ROR AX,01/',
'ROR AX,01/',
'MOV [BX],AL/',
'MOV AL,AH/',
'SHR AL,01/',
'SHR AL,01/',
'SHR AL,01/',
'SHR AL,01/',
'SHL AH,01/',
'OR AX,BP/',
'OR AL,AL/',
'ROR AH,01/',
'LAHF/',
'AND AH,NOT(_010H_OR_02H_).',

/* ?'RCR AH,01/',								
'TEST ',0B6H,',',0A1H,'/',
'RCL AH,01.',
*/
'TEST ', 0B6H, ',', 0A1H, '/',
'ROR AH,01/',									/* BIT */
'LAHF/',
'OR AH,010H/',
'AND AH,NOT(_02H_).',

/* ?'RCR AH,01/',
'TEST BYTE_PTR_DS:[BX],',0A1H,'/',
'RCL AH,01.',
*/
'TEST BYTE_PTR_[BX],',0A1H,'/',
'ROR AH,01/',
'LAHF/',
'OR AH,010H/',
'AND AH,NOT(_02H_).',

/* ?'RCR AH,01/',
'TEST BYTE_PTR_DS:[',0B8H,0B1H,'],',0A1H,'/',
'RCL AH,01.',
*/
'TEST BYTE_PTR_[',0B8H,0B1H,'],',0A1H,'/',
'ROR AH,01/',
'LAHF/',
'OR AH,010H/',
'AND AH,NOT(_02H_).',

/* ?'LAHF/',									
'OR ',0B6H,',',0A1H,'/',
'SAHF.',
*/
/* AL,1 SHL (0)/', */
'OR ',0B6H,',',0A1H,'.',					/* SET */

/* ?'LAHF/',
'OR BYTE_PTR_DS:[BX],',0A1H,'/',
'SAHF.',
*/
'OR BYTE_PTR_[BX],',0A1H,'.',

/* ?'LAHF/',
'OR BYTE_PTR_DS:[',0B8H,0B1H,'],',0A1H,'/',
'SAHF.',
*/
'OR BYTE_PTR_[',0B8H,0B1H,'],',0A1H,'.',

/* ?'LAHF/',									
'AND ',0B6H,',',0A2H,'/',
'SAHF.',
*/
/* AL,NOT (1 SHL (0)).', */
'AND ',0B6H,',',0A2H,'.',					/* RESET */

/* ?'LAHF/',
'AND BYTE_PTR_DS:[BX],',0A2H,'/',
'SAHF.',
*/
'AND BYTE_PTR_[BX],',0A2H,'.',

/* ?'LAHF/',
'AND BYTE_PTR_DS:[',0B8H,0B1H,'],',0A2H,'/',
'SAHF.',
*/
'AND BYTE_PTR_[',0B8H,0B1H,'],',0A2H,'.',

'JMP 5.',

'SAHF/',
'JZ $/',
'JMP ',0B5H,'/',
'#.',

'SAHF/',
'JNZ $/',
'JMP ',0B5H,'/',
'#.',

'SAHF/',
'JB $/',
'JMP ',0B5H,'/',
'#.',

'SAHF/',
'JAE $/',
'JMP ',0B5H,'/',
'#.',

'SAHF/',
'JPE $/',
'JMP ',0B5H,'/',
'#.',

'SAHF/',
'JPO $/',
'JMP ',0B5H,'/',
'#.',

'SAHF/',
'JS $/',
'JMP ',0B5H,'/',
'#.',

'SAHF/',
'JNS $/',
'JMP ',0B5H,'/',
'#.',

'JMP BX.',
'JMP SI.',
'JMP DI.',
'JMP SHORT_u&L.',
'SAHF/',
'JB ',0F5H,'&L.',
'SAHF/',
'JAE ',0F5H,'&L.',
'SAHF/',
'JZ ',0F5H,'&L.',
'SAHF/',
'JNZ ',0F5H,'&L.',

/* ?'DEC CH/',
'JNZ u&L.',
*/
'DEC CH/',
'JZ $/',
'JMP u&L/',
'#.',

'CALL 5.',

'SAHF/',
'JZ $/',
'CALL ',0B5H,'/',
'#.',

'SAHF/',
'JNZ $/',
'CALL ',0B5H,'/',
'#.',

'SAHF/',
'JB $/',
'CALL ',0B5H,'/',
'#.',

'SAHF/',
'JAE $/',
'CALL ',0B5H,'/',
'#.',

'SAHF/',
'JPE $/',
'CALL ',0B5H,'/',
'#.',

'SAHF/',
'JPO $/',
'CALL ',0B5H,'/',
'#.',

'SAHF/',
'JS $/',
'CALL ',0B5H,'/',
'#.',

'SAHF/',
'JNS $/',
'CALL ',0B5H,'/',
'#.',

'RET.',

'SAHF/',
'JZ $/',
'RET/',
'#.',

'SAHF/',
'JNZ $/',
'RET/',
'#.',

'SAHF/',
'JB $/',
'RET/',
'#.',

'SAHF/',
'JAE $/',
'RET/',
'#.',

'SAHF/',
'JPE $/',
'RET/',
'#.',

'SAHF/',
'JPO $/',
'RET/',
'#.',

'SAHF/',
'JS $/',
'RET/',
'#.',

'SAHF/',
'JNS $/',
'RET/',
'#.',

'IRET&H.',								/* RETI */

'IRET&H.',								/* RETN IFF1 := IFF2 */

/* ?'INT 1%&H.',								
*/
'CALL NEAR_PTR_1&H.',					/* RST */

'IN AL,1.',								/* IN */

/* ?'PUSH DX/',								
'MOV DL,CL/',
'MOV DH,00/',
'IN AL,DX/',
'POP DX.',
*/
'MOV BP,DX/',					/* IN A,(C) */
'MOV DL,CL/',
'XOR DH,DH/',
'IN AL,DX/',
'SHR AH,01/',
'INC AL/',
'DEC AL/',
'LAHF/',
'MOV DX,BP.',

/* ?'PUSH AX/',
'PUSH DX/',
'MOV DL,CL/',
'MOV DH,00/',
'IN AL,DX/',
'AND AL,AL&R/',
'POP DX/',
'POP AX.',
*/
'MOV BP,DX/',				/* IN F,(C) */
'MOV DL,CL/',
'XOR DH,DH/',
'MOV CL,AL/',
'IN AL,DX/',
'SHR AH,01/',
'INC AL/',
'DEC AL/',
'LAHF/',
'MOV AL,CL/',
'MOV CL,DL/',
'MOV DX,BP.',


/* ?'PUSH AX/',								
'PUSH DX/',
'MOV DL,CL/',
'MOV DH,00/',
'IN AL,DX/',
'POP DX/',
'MOV 6,AL/',
'POP AX.',
*/
'MOV BP,DX/',					/* IN RB,(C) */
'MOV 6,AL/',
'MOV DL,CL/',
'XOR DH,DH/',
'IN AL,DX/',
'SHR AH,01/',
'INC AL/',
'DEC AL/',
'LAHF/',
'XCHG 6,AL/',
'MOV DX,BP.',

/* ?'PUSH AX/',									
'PUSH DX/',
'MOV DL,CL/',
'MOV DH,00/',
'IN AL,DX/',
'MOV DS:[BX],AL/',
'INC BX/',
'DEC CH/',
'POP DX/',
'POP AX.',
*/
'SAHF/',					/* INI */
'MOV AH,AL/',
'MOV BP,DX/',
'MOV DH,00/',
'MOV DL,CL/',
'IN AL,DX/',
'MOV [BX],AL/',
'MOV DX,BP/',
'MOV AL,AH/',
'LAHF/',
'AND AH,02H_OR_01H/',
'INC BX/',
'DEC CH/',
'JNZ $/',
'OR AH,040H/',
'#.',

/* ?'PUSH AX/',
'PUSH DX/',
'MOV DL,CL/',
'MOV DH,00/',
'#IN AL,DX/',
'MOV [BX],AL/',
'INC BX/',
'DEC CH/',
'JNZ $/',
'POP DX/',
'POP AX.',
*/
'SAHF/',					/* INIR */
'MOV AH,AL/',
'MOV BP,DX/',
'MOV DH,00/',
'MOV DL,CL/',
'#/',
'IN AL,DX/',
'MOV [BX],AL/',
'INC BX/',
'DEC CH/',
'JNZ $/',
'MOV DX,BP/',
'MOV AL,AH/',
'LAHF/',
'OR AH,040H_OR_02H.',

/* ?'PUSH AX/',	 								
'PUSH DX/',
'MOV DL,CL/',
'MOV DH,00/',
'IN AL,DX/',
'MOV DS:[BX],AL/',
'DEC BX/',
'DEC CH/',
'POP DX/',
'POP AX.',
*/
'SAHF/',					/* IND */
'MOV AH,AL/',
'MOV BP,DX/',
'MOV DH,00/',
'MOV DL,CL/',
'IN AL,DX/',
'MOV [BX],AL/',
'MOV DX,BP/',
'MOV AL,AH/',
'LAHF/',
'AND AH,02H_OR_01H/',
'DEC BX/',
'DEC CH/',
'JNZ $/',
'OR AH,040H/',
'#.',

/* ?'PUSH AX/',	 								
'PUSH DX/',
'MOV DL,CL/',
'MOV DH,00/',
'#IN AL,DX/',
'MOV DS:[BX],AL/',
'DEC BX/',
'DEC CH/',
'JNZ $/',
'POP DX/',
'POP AX.',
*/
'SAHF/',					/* INDR */
'MOV AH,AL/',
'MOV BP,DX/',
'MOV DH,00/',
'MOV DL,CL/',
'#/',
'IN AL,DX/',
'MOV [BX],AL/',
'DEC BX/',
'DEC CH/',
'JNZ $/',
'MOV DX,BP/',
'MOV AL,AH/',
'LAHF/',
'OR AH,040H_OR_02H.',

'OUT 1,AL.',									/* OUT */

/* ?'PUSH DX/',								
'MOV DL,CL/',
'MOV DH,00/',
'OUT DX,AL/',
'POP DX.',
*/
'MOV BP,DX/',					/* OUT (C),A */
'MOV DL,CL/',
'XOR DH,DH/',
'OUT DX,AL/',
'MOV DX,BP.',

/* ?'PUSH AX/',								
'PUSH DX/',
'MOV AL,6/',
'MOV DL,CL/',
'MOV DH,00/',
'OUT DX,AL/',
'POP DX/',
'POP AX.',
*/
'MOV BP,DX/',					/* OUT (C),RB */
'XCHG AL,6/',					/* PREB/26 quk */
'MOV DL,CL/',
'XOR DH,DH/',
'OUT DX,AL/',
'XCHG AL,6/',
'MOV DX,BP.',

/* ?'PUSH AX/',								
'PUSH DX/',
'MOV DL,CL/',
'MOV DH,00/',
'MOV AL,DS:[BX]/',
'OUT DX,AL/',
'INC BX/',
'DEC CH/',
'POP DX/',
'POP AX.',
*/
'SAHF/',					/* OUTI */
'MOV AH,AL/',
'MOV BP,DX/',
'MOV DL,CL/',
'MOV DH,00/',
'MOV AL,[BX]/',
'OUT DX,AL/',
'MOV DX,BP/',
'MOV AL,AH/',
'LAHF/',
'AND AH,02H_OR_01H/',
'INC BX/',
'DEC CH/',
'JNZ $/',
'OR AH,040H/',
'#.',

/* ?'PUSH AX/',									
'PUSH DX/',
'MOV DL,CL/',
'MOV DH,00/',
'#MOV AL,DS:[BX]/',
'OUT DX,AL/',
'INC BX/',
'DEC CH/',
'JNZ $/',
'POP DX/',
'POP AX.',
*/
'SAHF/',					/* OTIR */
'MOV AH,AL/',
'MOV BP,DX/',
'MOV DL,CL/',
'MOV DH,00/',
'#/',
'MOV AL,[BX]/',
'OUT DX,AL/',
'INC BX/',
'DEC CH/',
'JNZ $/',
'MOV DX,BP/',
'MOV AL,AH/',
'LAHF/',
'OR AH,040H_OR_02H.',

/* ?'PUSH AX/',									
'PUSH DX/',
'MOV DL,CL/',
'MOV DH,00/',
'MOV AL,DS:[BX]/',
'OUT DX,AL/',
'DEC BX/',
'DEC CH/',
'POP DX/',
'POP AX.',
*/
'SAHF/',					/* OUTD */
'MOV AH,AL/',
'MOV BP,DX/',
'MOV DL,CL/',
'MOV DH,00/',
'MOV AL,[BX]/',
'OUT DX,AL/',
'MOV DX,BP/',
'MOV AL,AH/',
'LAHF/',
'AND AH,02H_OR_01H/',
'DEC BX/',
'DEC CH/',
'JNZ $/',
'OR AH,040H/',
'#.',

/* ?'PUSH AX/',	 								
'PUSH DX/',
'MOV DL,CL/',
'MOV DH,00/',
'#MOV AL,DS:[BX]/',
'OUT DX,AL/',
'DEC BX/',
'DEC CH/',
'JNZ $/',
'POP DX/',
'POP AX.',
*/
'SAHF/',					/* OTDR */
'MOV AH,AL/',
'MOV BP,DX/',
'MOV DL,CL/',
'MOV DH,00/',
'#/',
'MOV AL,[BX]/',
'OUT DX,AL/',
'DEC BX/',
'DEC CH/',
'JNZ $/',
'MOV DX,BP/',
'MOV AL,AH/',
'LAHF/',
'OR AH,040H_OR_02H.',

0FFH);									/* END OF TABLE */

$RESTORE
