; MXPRA.ASM	tables for use with MXPRIN.BCPL

; The tables consist of a vector of displacements indexed by a field value
; in the microinstruction.  The strings are at (Table+Disp)+rv (Table+Disp)

.ent F1tab
.ent F2tab
.ent BStab
.ent BDtab
.ent ALUtab
.ent BCtab

.txtm B

.srel

F1tab:	.F1tab
F2tab:	.F2tab
BStab:	.BStab
BDtab:	.BDtab
ALUtab:	.ALUtab
BCtab:	.BCtab

.nrel

.F1tab:		0		; NOZ
		setsf-.
		ykptr-.
		signova-.
		sethovf-.
		setovpc01-.
		rcy0q-.
		rcynotaluq-.

		iref-.
		f111-.
		rref-.
		rrefdxk-.
		rmwref-.
		rmwrefdxk-.
		wref-.
		wrefdxk-.

		0
		0
		0
		incy-.
		decy-.
		negy-.
		arm-.
		0

		incx-.
		decx-.
		incac-.
		decac-.
		setf-.
		setfc-.
		clearf-.
		clearfc-.

		f140-.
		mdrld-.
		wrestart-.
		kmdrld-.
		kwrestart-.
		krdata-.
		kwdata-.
		xref-.

		0
		ldpaluh-.
		q35alug-.
		0
		bamask-.
		samask-.
		xmask-.
		amask-.

		0
		0
		armd-.
		setfb-.
		preiret-.
		iret-.
		frzbalubc-.
		pop-.

		bax-.
		sax-.
		f172-.
		ax-.
		f174-.
		f175-.
		f176-.
		f177-.

setsf:		.txt "SETSF"
ykptr:		.txt "YKPTR←"
signova:	.txt "SIGNOVA"
sethovf:	.txt "SETHOVF"
setovpc01:	.txt "SETOVPC01"
rcy0q:		.txt "RCY0Q"
rcynotaluq:	.txt "RCYNOTALUQ"
iref:		.txt "IREF"
f111:		.txt "F1[11]"
rref:		.txt "RREF"
rrefdxk:	.txt "RREFDXK"
rmwref:		.txt "RMWREF"
rmwrefdxk:	.txt "RMWREFDXK"
wref:		.txt "WREF"
wrefdxk:	.txt "WREFDXK"
incy:		.txt "INCY"
decy:		.txt "DECY"
negy:		.txt "NEGY"
arm:		.txt "ARM"
incx:		.txt "INCX"
decx:		.txt "DECX"
incac:		.txt "INCAC"
decac:		.txt "DECAC"
setf:		.txt "SETF"
setfc:		.txt "SETFC"
clearf:		.txt "CLEARF"
clearfc:	.txt "CLEARFC"
f140:		.txt "F1[40]"
mdrld:		.txt "MDRL←"
wrestart:	.txt "WRESTART"
kmdrld:		.txt "KMDRL←"
kwrestart:	.txt "KWRESTART"
krdata:		.txt "KRDATA"
kwdata:		.txt "KWDATA"
xref:		.txt "XREF"
ldpaluh:	.txt "LDPALUH"
q35alug:	.txt "Q35ALUG"
bamask:		.txt "BAMASK"
samask:		.txt "SAMASK"
xmask:		.txt "XMASK"
amask:		.txt "AMASK"
armd:		.txt "ARM←"
setfb:		.txt "SETFB"
preiret:	.txt "PREIRET"
iret:		.txt "IRET"
frzbalubc:	.txt "FRZBALUBC"
pop:		.txt "POP"
bax:		.txt "BAX"
sax:		.txt "SAX"
f172:		.txt "F1[72]"
ax:		.txt "AX"
f174:		.txt "F1[74]"
f175:		.txt "F1[75]"
f176:		.txt "F1[76]"
f177:		.txt "F1[77]"

.F2tab:		inhint-.
		npcd-.
		f22-.
		f23-.
		0
		0
		0
		wrestart-.

		0
		setsf-.
		0
		0
		ashovf-.
		0
		pop-.
		acfs-.

inhint:		.txt "INHINT"
npcd:		.txt "NPC←"
f22:		.txt "F2[2]"
f23:		.txt "F2[3]"
ashovf:		.txt "ASHOVF"
acfs:		.txt "ACFS"

.BStab:		null-.
		x-.
		y-.
		ac-.
		d1-.
		d-.
		0
		d2-.

		mdr-.
		mdrl-.
		mar-.
		mdrsettag-.
		kmdr-.
		kmdrl-.
		kmar-.
		bs17-.

		kunit-.
		kstat-.
		ereg-.
		xtop-.
		bq-.
		bs25-.
		stack-.
		npc-.

		bs30-.
		flags-.
		tenf-.
		map-.
		i-.
		bpc-.
		0
		bax-.

null:		.txt "NULL"
x:		.txt "X"
y:		.txt "Y"
ac:		.txt "AC"
d1:		.txt "D1"
d:		.txt "D"
d2:		.txt "D2"
mdr:		.txt "MDR"
mdrl:		.txt "MDRL"
mar:		.txt "MAR"
mdrsettag:	.txt "MDR&SETTAG"
kmdr:		.txt "KMDR"
kmdrl:		.txt "KMDRL"
kmar:		.txt "KMAR"
bs17:		.txt "BS[17]"
kunit:		.txt "KUNIT"
kstat:		.txt "KSTAT"
ereg:		.txt "EREG"
xtop:		.txt "XTOP"
bq:		.txt "BQ"
bs25:		.txt "BS[25]"
stack:		.txt "STACK"
npc:		.txt "NPC"
bs30:		.txt "BS[30]"
flags:		.txt "FLAGS"
tenf:		.txt "TENF"
map:		.txt "MAP"
i:		.txt "I"
bpc:		.txt "BPC"

.BDtab:		bd-.
		xd-.
		yd-.
		acd-.
		d1d-.
		dd-.
		0
		d2d-.

		mdrd-.
		readd-.
		rmwd-.
		writed-.
		kmdrd-.
		kreadd-.
		kwrited-.
		krmwd-.

		kunitd-.
		ksetd-.
		kcsetd-.
		isplitd-.
		fsplitd-.
		bsplitd-.
		stackd-.
		mapvad-.

		map4d-.
		xsplitd-.
		yshiftd-.
		mapd-.
		id-.
		bpcd-.
		0
		bd37-.

bd:		.txt "B←"
xd:		.txt "X←"
yd:		.txt "Y←"
acd:		.txt "AC←"
d1d:		.txt "D1←"
dd:		.txt "D←"
d2d:		.txt "D2←"
mdrd:		.txt "MDR←"
readd:		.txt "READ←"
rmwd:		.txt "RMW←"
writed:		.txt "WRITE←"
kmdrd:		.txt "KMDR←"
kreadd:		.txt "KREAD←"
kwrited:	.txt "KWRITE←"
krmwd:		.txt "KRMW←"
kunitd:		.txt "KUNID←"
ksetd:		.txt "KSET←"
kcsetd:		.txt "KCSET←"
isplitd:	.txt "ISPLIT←"
fsplitd:	.txt "FSPLIT←"
bsplitd:	.txt "BSPLIT←"
stackd:		.txt "STACK←"
mapvad:		.txt "MAPVA←"
map4d:		.txt "MAP4←"
xsplitd:	.txt "XSPLIT←"
yshiftd:	.txt "YSHIFT←"
mapd:		.txt "MAP←"
id:		.txt "I←"
bpcd:		.txt "BPC←"
bd37:		.txt "BD[37]←"

; Table only has non-arithmetic alu functions--others are special
; because of carry.  Hence, table is offset by 20B
.ALUtab:	notp-.
		notpandq-.
		notpandnotq-.
		a0-.
		notporq-.
		aq-.
		peq-.
		pandq-.

		notpornotq-.
		pxq-.
		notq-.
		pandnotq-.
		a1-.
		porq-.
		pornotq-.
		p-.

notp:		.txt "NOT P"
notpandq:	.txt "NOT P AND Q"
notpandnotq:	.txt "NOT P AND NOT Q"
a0:		.txt "A0"
notporq:	.txt "NOT P OR Q"
aq:		.txt "AQ"
peq:		.txt "P=Q"
pandq:		.txt "P AND Q"
notpornotq:	.txt "NOT P OR NOT Q"
pxq:		.txt "P#Q"
notq:		.txt "NOT Q"
pandnotq:	.txt "P AND NOT Q"
a1:		.txt "A1"
porq:		.txt "P OR Q"
pornotq:	.txt "P OR NOT Q"
p:		.txt "P"

.BCtab:		0
		aluzc-.
		alulc-.
		alulec-.
		alu8ec-.
		blc-.
		xlc-.
		ylc-.
		qoddc-.
		gec-.
		hec-.
		jec-.
		kec-.
		bc15-.
		oldword-.
		bc17-.

		0
		alunc-.
		alugec-.
		alugc-.
		alu8nc-.
		bgec-.
		xgec-.
		ygec-.
		qevenc-.
		gnc-.
		hnc-.
		jnc-.
		knc-.
		bc35-.
		newword-.
		bc37-.

aluzc:		.txt "ALU=0"
alulc:		.txt "ALU<0"
alulec:		.txt "ALU<=0"
alu8ec:		.txt "ALU8=0"
blc:		.txt "B<0"
xlc:		.txt "X<0"
ylc:		.txt "Y<0"
qoddc:		.txt "Q ODD"
gec:		.txt "G=0"
hec:		.txt "H=0"
jec:		.txt "J=0"
kec:		.txt "K=0"
bc15:		.txt "BC[15]"
oldword:	.txt "OLDWORD"
bc17:		.txt "BC[17]"
alunc:		.txt "ALU#0"
alugec:		.txt "ALU>=0"
alugc:		.txt "ALU>0"
alu8nc:		.txt "ALU8=1"
bgec:		.txt "B>=0"
xgec:		.txt "X>=0"
ygec:		.txt "Y>=0"
qevenc:		.txt "Q EVEN"
gnc:		.txt "G=1"
hnc:		.txt "H=1"
jnc:		.txt "J=1"
knc:		.txt "K=1"
bc35:		.txt "BC[35]"
newword:	.txt "NEWWORD"
bc37:		.txt "BC[37]"


.end