RA:		XOR CX, CX
		XOR DX, DX
		MOV AL, 2BH
		MOV [OP], AL
		MOV AX, [SI]
		CMP AX, 6204H
		JZ RABP
		CMP AX, 7704H
		JZ RAWP
		CMP AX, 6405H
		JZ RADP
		CMP AX, 5B01H
		JZ RADIS
RALB:		CALL SCREG
		JNC RAPRS
		CALL RE
		OR CL, 2
		CMP CH, 2
		JNC RALBW
		MOV AX, [IMM]
		OR AH, AH
		JZ RALBB
RALBW:		CALL BITS
		JNC RALBB
		OR CL, 1
		MOV CH, 2
RALBB:		JMP WARG
RADIS:		JMP RADI
RAPRS:		JMP SHORT RAPR
RABP:		MOV DI, OFFSET _BYTE
		JMP SHORT RAPTR
RAWP:		MOV DI, OFFSET _WORD
		JMP SHORT RAPTR
RADP:		MOV DI, OFFSET _DWORD
RAPTR:		CALL SW
		JC RALB
		MOV CH, [DI]
		XOR DX, DX
		CALL WARG
		MOV DI, OFFSET _PTR
		CALL SW
RAPSP:		CALL SCREG
		JC RANSR
		CMP AL, 10H
		JC SRF
		CMP WORD PTR [SI], 3A01H
		JNZ SRF
RASP:		AND AL, 3
		SHL AL, 1
		SHL AL, 1
		SHL AL, 1
		ADD AL, 26H
		MOV [SEGPREF], AL
		OR CL, 40H
		INC SI
		INC SI
RANSR:		MOV AX, [SI]
		CMP AX, 5B01H
		JZ RADI
SRF:		MOV AL, 2
		JMP FAIL
RAPR:		CMP AL, 10H
		JC RAGPR
		CMP WORD PTR [SI], 3A01H
		JZ RASP
RASR:		MOV DL, 3
		AND AL, 3
		MOV DH, AL
		MOV CH, 2
		JMP SHORT WARG
RAGPR:		MOV DL, 1
		MOV DH, AL
		AND DH, 7
		CMP AL, 8
		JC REG8
		MOV CH, 2
		JMP SHORT WARG
REG8:		MOV CH, 1
WARG:		OR [FLAGS], CL
		TEST BYTE PTR [ARGS], 0FH
		JZ NARGS
		MOV CL, 4
		SHL CH, CL
		SHL DX, CL
		XOR CL, CL
NARGS:		OR [ARGS+2], CH
		OR [ARGS], DX
		RET
RDMINU:		INC SI
		INC SI
		CALL VAL
		JC SRF
		NEG AX
		JMP SHORT RDTPM
RDPS:		MOV [OP], AH
RADI:		INC SI
		INC SI
		MOV AX, [SI]
		CMP AL, 2
		JNZ RDELSE
		MOV AX, [SI+1]
		MOV DL, 1
		CMP AX, 6973H
		JZ SID
		CMP AX, 6964H
		JZ DID
		CMP AX, 7062H
		JZ BPD
		CMP AX, 7862H
		JZ BXD
RDELSE:		CMP AX, 2D01H
		JZ RDMINU
		CALL VAL
		JNC RDTPM
LBD:		CALL GL
		OR CL, 4
		JMP SHORT RDTPM
SID:		SHL DL, 1
DID:		SHL DL, 1
BPD:		SHL DL, 1
BXD:		TEST DH, DL
		JNZ RDFAIL
		ADD SI, 3
		OR DH, DL
		XOR AX, AX
RDTPM:		CMP BYTE PTR [OP], 2BH
		JZ RDP
		NEG AX
RDP:		ADD [DISP], AX
		MOV AX, [SI]
		CMP AX, 2D01H
		JZ RDPS
		CMP AX, 2B01H
		JZ RDPS
		CMP AX, 5D01H
		JNZ RDFAIL
		INC SI
		INC SI
		MOV AL, DH
		MOV BX, OFFSET RM
		XLATB
		TEST AL, 0F0H
		JNZ RDFAIL
		MOV DH, AL
		MOV DL, 2
		XOR CH, CH
		CMP AL, 0EH
		JZ RDD
		MOV AX, [DISP]
		OR AX, AX
		JNZ RDD
		JMP WARG
RDD:		OR CL, 8
		CALL BITS
		SALC
		AND AL, 4
		OR CL, AL
		JMP WARG
RDFAIL:		MOV AL, 2
		JMP FAIL
RECU:		INC SI
		INC SI
		MOV AX, [PC]
		ADD AX, [VORG]
		MOV CH, 2
		MOV DH, 2
		JMP SHORT RIAX
RE:		MOV AH, 2BH
		DEC SI
		DEC SI
RIPS:		INC SI
		INC SI
		MOV [OP], AH
		OR BYTE PTR [SI], 0
		JZ RE8
		MOV AX, [SI]
		CMP AX, 2D01H
		JZ REMI
		CMP AX, 2401H
		JZ RECU
		XCHG AL, AH
		CMP AL, 22H
		JZ REQU
		CMP AL, 27H
		JZ REQU
		CALL VAL
		JNC RIAX
		JMP SHORT RELB
RE0:		XOR AL, AL
		JMP FAIL
REMI:		INC SI
		INC SI
		MOV [OP], AH
		OR BYTE PTR [SI], 0
		JZ RE8
		CALL VAL
		JC RE0
RIAX:		CMP BYTE PTR [OP], 2BH
		JZ RIP
		NEG AX
RIP:		ADD [IMM], AX
		MOV AX, [SI]
		CMP AX, 2D01H
		JZ RIPS
		CMP AX, 2B01H
		JZ RIPS
		MOV DL, 4
		RET
RE8:		MOV AL, 8
		JMP FAIL
RELB:		MOV DI, OFFSET _OFFSET
		CALL SW
		CALL GL
		MOV DH, 1
		MOV CH, 2
		JMP SHORT RIAX
REQU:		XCHG AL, AH
		XOR AH, AH
		MOV BX, AX
		CMP AL, 3
		JC RE8
		CMP AL, 4
		JA RE7
		JC REQUB
		MOV CH, 2
		MOV AH, [SI+3]
REQUB:		MOV AL, [SI+2]
		INC BX
		ADD SI, BX
		OR DH, DH
		JNZ RIAX
		MOV DH, 3
		JMP SHORT RIAX
RE7:		MOV AL, 7
		JMP FAIL
GL:		CALL SCREG
		JNC GLFC
		OR BYTE PTR [SI], 0
		JZ RE8
		MOV AX, [PC]
		ADD AX, [VORG]
		CMP BYTE PTR [FUNC], 2
		JNZ GL1
		MOV DI, OFFSET SYMBS
		CALL SL
		JC GLF4
GL1:		PUSH AX
		XOR AH, AH
		LODSB
		ADD SI, AX
		POP AX
		RET
GLFC:		MOV AL, 0CH
		JMP FAIL
GLF4:		MOV AL, 4
		JMP FAIL
SCREG:		MOV AL, [SI]
		CMP AL, 2
		JNZ SCREG0
		MOV AX, [SI+1]
		MOV DI, OFFSET REGS
		CLD
		PUSH CX
		MOV CX, 14H
	REPNZ	SCASW
		POP CX
		JNZ SCREG0
		MOV AX, DI
		SUB AX, OFFSET REGS+2
		SHR AL, 1
		ADD SI, 3
		CLC
		RET
SCREG0:		STC
		RET
