// MICRO compile time definitions
// last edited February 5, 1981 9:56 AM
// Copyright Xerox Corporation 1979, 1980, 1981
external [
// NOVA I/O EMULATORS
close
endmic
// STORAGE
// MICGLOB -- not saved
version
cversion
xlistflag
binflag
ltoflag
ucflag
lincnt
lbsym
lblct
stlct
lchan
warncnt
errcnt
errmax
lllength
@fstop
@fslim
fsgap
// saved
aevals
dumpver
symtab
symvec
nstab
slfl
srover
fsbot
ofbot
memno
cmtchar
mbext
targsym
tracecalls
ignore
tracesyms
nevals
// not saved
typesizes
typenames
stbuf
stbend
// MICLIST
abortflag
// MICPROC
@stbot
@sttop
@tlbot
@tltop
// PROCEDURES
// MICGLOB
initglob
getbits; setbits
// MICSA
alloc; alloctemp; dalloc; dalloctemp
get1
bsize
sdump; srecover
// MICMU/MICASM
bcplpak; pak; unpak
@DoubleAdd1
length
num2blk
// MICSYM
initsym
dumpsym; recsym
lookup; fastlookup; putin; newdef
lenname
scinit; scnext; nsnext
// MICACC
initacc
assem
defaultbi; setlfbi; targset
aldef; auref; aused
gtfield; stfield
dosta
// MICIN
initin
inpop; inpush
initreadstat; readstat
printstat
// MICPROC
initscan
evarg
expandsize; expandval
expandlength; expand
pr1; process
// MICBIX
doaddr; dobi; dofld
adef
redeferr
// MICLIST
error; errx
lblk; lblnks; lchr; lcrlf; ldec; lloc; llstr; lstr; lsym; lval
lstword
// MICOUT
initout
wfixup; wmemdef; wsym; wword
endout
// MICMAC
initmac; initmac1
argstr; colargs; macdef; mcall
// MICRO
micro
copyfile; filext
putboth
// MICEND
filtsyms; sort
endlist
// MICINIT
micinit
// Streams ("channels")
@inchan // source input
@outchan // binary output [word]
fakeoutchan // initial setting of outchan
@comchan // command input
@lstchan // expanded listing output
@erlchan // error listing output
@ettchan // error listing with echo to terminal
@fixchan // fixup output (then input) [word]
@ttochan // terminal output
@symchan // symbol table output [word]
@sysdir // system directory [word]
]
// M A N I F E S T D E C L A R A T I O N S
manifest [
// Symbol Types
nultype = 0
mactype = 1 // Not used (Mac symbols have stype=fstop-Def ptr)
fldtype = 2
inttype = 3
adrtype = 4 // For values only (Adr symbols have stype=mem Ep-fstop)
bitype = 5
neutype = 6
memtype = 7
undtype = 8
bttype = 9
maxtype = 9 // Maximum type number
// Evaluation Modes
valmode = 1 // Return value
accmode = 2 // Accumulate word
fldmode = 3 // Field Store
// Lexical scan markers - must be control char.s
endc = $*N
sepc = $*S
Aend = 1
Aargn = 2
Aarg2 = 3
Aarg1 = 4
Anargs = 5
Askip = 6
symc = 21
numc = 22
num6c = 23
// Fields in symbol
slink = 0 // Offset of hash link
stype = -1 // Offset of type
sname = 1 // Offset of name
// Displacements
mcsp = -1
isval = -2
fsbits = -2
asmem = -1
asval = -2
mswidth = -2
mssize = -3
msno = -4
msdflt = -5
mssource = -6
mssink = -7
mslist = -8
msltag = -9
// msbt = -10 // no longer used
mspost = -11
mstagmac = -12
mslfields = -13
bsno = -2
bttab = -2
btsize = -3
// Block prefix displacement
bprefix = -1
// LIST flags
LFbinary = 1
LFfields = 2
LFnumeric = 4
LFalphabetic = #10
LF16bit = #20
LFany = LFbinary+LFfields+LF16bit // list stores if any of these is set
// Initial BUILTIN numbers
biBUILTIN = 1
biINSERT = 20
// Buffer lengths
stbl = 400
filenamelength = 40
// Binary block types
MBend = 0
MBdata = 1
MBseta = 2
MBfixup = 3
MBmemdef = 4
MBsymbol = 5
MBext = 6
]
// BCPL string
structure BS:
[ length byte
char↑1,255 byte
]
// Bytes in word
structure [ lh byte; rh byte ]
structure [ bytes↑0,77777b byte ]