
Macro-flit 6-18-62=part 1

	ncn=4


	|macro-flit definitions

	define	clad A
		lda A
		terminate

	define	load A,B

		llr (B
		slr A
		terminate


	define	call A

		llr (tra .+2
		tra A
		terminate

	define	subr A,T

		llr (tra T
		tra A
		terminate

	define	type

		pnt
		pnt
		pna
		terminate

	define	print A

		add (A
		type
		terminate


	xx=hlt	npi=11	nmi=44	nds=24	nsy=144


14000|	tra flt

14006|		ep1=.
		ep2=ep1+1
		alh=ep2+1
		rsq=alh+1
		rs1=rsq+1
		opt=rs1+1
		rcm=opt+1
		rsl=rcm+2
		flt=rsl+1

6000|		mil,	|Macro-instruction and symbol storage
	mil+1416| low,	|Symbol table end
	low+1|	mai,	|Macro-instruction index
	mai+nsy+nsy+1| dsm,-char lr	|Dummy symbols
	dsm+nds|dsp,	|M-I parameter values
	dsp+nds|dsv,	|M-I argument values
	dsv+nds|dss, 1	|Argument translation indicators
	dss+nds|cor,	|List of constant origins
	cor+ncn+ncn+1| loc,	|Current location
	loc+1|	psi,	|Psuedo-instruction list
	psi+nmi+nmi+nmi+1|	tva,
10242|	tv,
	tra rm
	tra np2
	tra ps2
	tra aly
	tra alm
	tra evs
	tra rm3

dfs,	sto sym
	slr t3
	load rst, tra dfj
	tra q1+4

dfj,	load rst, cla
	tra rsl

evs,	slr esx
	sto sym
	load sgn, opr
	cla
	sto wrd
	add one
	sto def
	load ex, tra exx
	tra e2

exx,	llr wrd
	add def
esx,	xx

|Reset to convert next word

rnw,	cla
	sto wrd
	sto syl
	sto nsm
	sto amn
	sto asa
	clc
	sto cni
	sto dsi
	sto dsn
	add one
	sto def

sp,	cla
	add (opr
	sto sgn
	sto sga
	cla
	sto let
	sto liu
	sto num
	sto sym
	sto chc

|Read and condense one character

r,	call rch

cfc,	lal
	ala
	add (666660
	cry
	ala
	add (666660
	cry
	ala
	add (666740
	cry
	ala
	add (666000
	cry
	ala
	add (666000
	cry
	cll
	add (tra dtb

|Dispatch on character value

	sto rt
	clc
rt,	xx

|Character dispatch table

dtb,	trn i	|blank tape
	trn i	|not used
	trn l	|e
	trn n-8	|8
	trn i	|not used
bt,	xx	||
	trn l	|a
	trn n-3	|3
	trn p	|space
qt,	xx	|=
	trn l	|s
	trn n-4	|4
	trn l	|i
	trn p	|+
	trn l	|u
	trn n-2	|2
	trn r	|color
	trn d	|.
	trn l	|d
	trn n-5	|5
	trn l 	|r
	trn n-1	|1
	trn l	|j
	trn n-7	|7
	trn l	|n
	trn ca	|,
	trn l	|f
	trn n-6	|6
	trn l	|c
	trn m	|-
	trn l	|k
	trn i	|not used


	trn l	|t
	trn i	|nu
	trn l	|z
kt,	trn i	|backspace
	trn l	|l
tt,	xx	|tab
	trn l	|w
	trn i	|nu
	trn l	|h
	trn tt	|carriage ret.
	trn l	|y
	trn i	|nu
	trn l	|p
	trn i	|nu
	trn l	|q
	trn i	|nu
	trn l	|o
	trn r	|stop
	trn l	|b
	trn i	|nu
	trn l	|g
	trn i	|nu
	trn n-9	|9
	trn i	|nu
	trn l	|m
	trn rcu	|upper case
	trn l	|x
	trn i	|nu
	trn l	|v
	trn rcl	|lower case
	trn n	|0
rdt,	trn r	|nullify

rcu,	add one

rcl,	sto cas
	tra r

|Storage word termination characters (tab and carr ret)

tab,	add syl
	add chc
sv,	trn rnw
	call evl
	add pss
	trn tb3
	clad def
	trn ust

tb3,	clad aml
	add one
	sto aml

tb4,	llr loc
	lcc
	sto ts
	add one
	com
	sto loc
	cla
	add pss
	trn bs
	lac
	add fwd
	trn ptl

tb2,	clad wrd

ts,	xx
	tra bs-1

|Location assignment termination character

b1,	add def
	com
	trn bnp

b2,	llr (400000
	tra b3

b,	add syl
	add chc
	trn itt
	call evl
	add nsm
	com
	sto asi
	trn ba1
	add asa
	sto asm
	llr amn
	slr aml

ba1,	clad pss
	trn b1
	clad def
	trn usb

|Form origin for next block
hbnp,	llr wrd
	lcc
	amz
	com
	llr (17777
	anl

b3,	lcc
	sto loc
	clc
bs,	xx


ptl,	slr loc
	clad (flex ipl
	subr alm, alh

rch,	slr rcx
	call rcm
	slr fwd
	alr
	sto t
rcx,	xx
yllable separation characters (plus, minus, space)

p,	add chc
	add syl
	trn r
	cla
m,	sto t2
	call evl
	add one
	sto syl
	llr t2
	lcc
	trn sp
	add em
	tra sp+2

|Evaluate syllable and accumulate word value

evl,	slr ex
	clad mii
	trn wsp

ev2,	clad let
	trn el
	add num

sga,	xx
	add amn
	sto amn

en,	clad num
sgn,	xx
	add wrd
	sto wrd
	clc
ex,	xx

ndf,	sto def
	llr sym
	slr r2
	tra ex

el,	add sgn
	add (-opr
	com
	trn el1
	add nsm
	trn el2
	amz
	com
	trn e2
	add sym
	sto asa
	clc
	tra el3

el1,	cla
el2,	add one
el3,	sto nsm


|Evaluate symbol (logarithmic search)

e2,	load t1, 4000
	cla

e5,	add low
	sto ea
	sto ea1

e,	clad sym
	trn esm
	cla
ea,	xx
	trn et
	tra eup

esm,	cla
ea1,	xx
	trn edn
et,	add sym
	trn eqt

eup,	load e1, tra e1+1
	clad t1
	cyr
	sto t1
	add mon
	trn ndf
	add one

e1,	xx
	add ea
	sto ea
	sto ea1
em,	com
	add low
	com
	trn eup
	add low
	add (-add-low+1
	trn e

edn,	llr (com
	tra eup+1

eqt,	add one
	trn edn
	add ea
	sto e4
	cla

e4,	xx
	sto num
	tra en


|Relative address syllable (.)

rl,	add chc
	trn rl1
	llr (opr
	tra rl2

rl1,	llr sgn
rl2,	slr rl3
	llr loc
	lcc

rl3,	xx
	add wrd
	sto wrd
	llr one
	slr syl
	llr mii
	lcc
	trn r
	add rl3
	add (-opr
	trn rl4
	add (400000-40

rl4,	add one
	subr prs, r

|Process alphabetic or numeric character

l,	sto let
	add cas
	trn ln
	clc
	sto liu
	tra ln

l2,	clad sym
	cyr
	add t
	sto sym
	tra r

n-9,	add mon
	add mon
	add mon
	add mon
	add mon
	add mon
	add mon
	add mon
	add mon
n,	com
	ala

n2,	add num
	cyl
	sto num
	cyl
	cyl
n1,	xx
	lad
	sto num
	cla

ln,	add chc
	add one
	sto chc
	add (-3
	trn l2
	llr let
	lcc
	trn r
	sto num
	sto let
	sto chc
	add one
	sto syl
	llr sym
	slr api

|Read three more characters for P-I or M-I

	llr t
	slr syn
	load t1, 2
	subr rch, ln1

ln4,	add one
	trn ln3
	tra rch+1

ln1,	cyr
	add (775777
	trn ln2
	add (777575
	trn ln2
	add (762201
	trn ln4
	add (775575
	trn ln2
	add (621777
	trn ln2
	add (776177
	trn ln2

ln3,	clad t1
	trn rch+1
	add mon
	sto t1
	clad syn
	cyr
	add t
	sto syn
	tra rch+1

ln2,	add (1
	trn ln3

|Search for pseudo or macro instruction

spi,	clc
	sto spz
	add psi
	add (add-3
	sto sp1
sp0,	clad sym

sp1,	xx
	trn sp3

sp2,	clad (-3
	add sp1
	sto sp1
	com
	add (add psi
	trn sp0
	clc
	add mdi
	trn dmi
	clc
	add spz
	trn ipi
	tra sp4

sp3,	add one
	trn sp2
	sto spz
	add sp1
	sto sp5
	clad syn

sp5,	xx
	com
	trn sp2
	amz
	com
	trn sp2
	add mdi
	trn mdm

sp4,	add sp5
	sto sp6
	cla

sp6,	xx
	sto sp7
	com
	trn mac
	clc

sp7,	xx

|Parameter assignment routine (equal sign).

q,	add syl
	com
	trn ipa
	add let
	com
	trn ipa
	add sym
	sto t3
	clad (trn ilf
	sto bt
	sto qt
	sto ct
	add (qq-ilf
	sto tt
	tra rnw

qq,	add chc
	add syl
	trn rnw
	call evl
	add def
	trn usq

q1,	llr t3
	slr sym
	llr wrd
	slr t3
	clc
	sto let
	add one
	sto def
	call evl
	add def
	trn vsm

qu,	add e4
	add (-add-1
	sto v7
	tra vs6

|Address tag routine.

c,	call evl
	add syl
	com
	trn c2
	cla
	sto asi
	sto aml
	add sym
	sto asm

c2,	llr loc
	lcc
	sto t3
	trn rnw
	clc
	add def
	trn c1
	add wrd
	lad
	trn mdt
	add mon
	trn rnw
	tra mdt

c1,	add syl
	com
	trn rnw


|Enter new symbol and value in symbol table

vsm,	clad low
	add (-2
	sto low
	add one
	sto v3
	add hih
	trn sce
	llr sym

vs1,	clad v3
	add one
	sto v5
	sto v1
	add one
	sto v3
	add (-add-3
	sto v2
	sto v6
	add one
	sto v4
	sto v7
	add (-low+2
	trn vs2

vs3,	lcc
v6,	xx
vs6,	clad t3
v7,	xx


|Reset terminating character switches

rst,	clad mii
	load ct, trn c
	trn rsm
	sto mdi
	add (trn b-1
	sto bt
	add (q-b
	sto qt
	add (tab-q
	sto tt
	tra rnw

rsm,	add (trn df2
	sto bt
	add (da-df2
	sto qt
	add (sw-da
	sto tt
	tra rnw

vs2,	cla
v5,	xx
	lpd
	trn vs4
	lac
	trn vs3
vs5,	cla
v1,	xx
v2,	xx
	cla
v3,	xx
v4,	xx
	tra vs1

vs4,	cry
	trn vs3
	tra vs5

|Pseudo-instructions octal, decimal, and noinput

oct,	add (opr
	tra dec+1
dec,	add n2
	sto n1

noi,	cla
	sto syl
	llr t
	tra cfc

|Pseudo-instruction character

ch,	call rch
	cyr
	add (757577
	trn chr
	add (617777
	trn chl
	add (756177
	trn chm
	tra ilf

chr,	add one
	trn ilf
	add (cyr-1
	tra ch2

chm,	add one
	trn ilf
	add (opr-1
	tra ch2

chl,	add one
	trn ilf
	add (cyl-1

ch2,	sto ch4
	call rch
	cyr
ch4,	xx
	sto num
	tra r

|Pseudo instruction flexo

fx,	cla
	sto num
	load t1, 333333
	call rch
	lal
	add num
	cyr
	sto num
	llr t1
	lal
	sto t1
	trn rch+1
	tra r

|Restore

rm,	load low, add low
	load psi, sto psi+npi+npi+npi+1
	load rst, tra rma
	clad (llr ist
	tra rmb

rm1,	xx
	lcc
	sto sym
rm2,	xx
	slr t3
	tra vsm

rma,	clad rm2
	add one
rmb,	sto rm1
	add one
	sto rm2
	add (-llr-ist-nsy-nsy
	trn rm1
	load rst, cla
	load mai, sto mil+1
rm3,	clc
	sto pss
	tra np1

|Pseudo-instruction start

sta,	clad (trn ilf
	sto bt
	sto qt
	sto ct
	add (s-ilf
	sto tt
	llr t
	tra cfc

s,	add pss
	trn ep1
	call evl
	add def
	trn uss
s2,	llr wrd
	tra ep2

|Begin new pass

ps2,	llr one
	slr pss
	load psi, sto psi+npi+npi+npi+1
	clad (sto mil+1
	llr mai
	sto mai

np1,	lac		|begin pass
	add (add
	sto con
	com
	sto hih
	add one
	sto nco
	cla
	sto nca
	sto asm
	add one
	sto mii
	add (17
	com
	sto loc
	add (cor+20
	sto cn6
	add one
	sto cn7
	add (add-1
	sto co7+1
	load n1, opr
	clad pss
	trn rs1

np2,	cla
	sto api
	load bs, tra rnw
	clc
	sto cas
	tra rst

start
