// Static variables for MICRO
// last edited March 12, 1981 10:37 AM
// Copyright Xerox Corporation 1979, 1980, 1981
get "micdecl.d"
static [
// Scalars
version = 30000b+1281 // Release version, 3-12-81
cversion = 20000b+0581 // Compatibility version, 2-5-81
xlistflag = 0 // Expanded listing flag
binflag = 0 // Binary output flag
ltoflag = 0 // List target only flag
ucflag = 0 // Force upper case flag
lincnt = 0 // Current line count
lbsym = 0 // Last label symbol
lblct = 0 // Lincnt at last label
stlct = 0 // Lincnt at last statement
lchan = 0 // Current listing channel
warncnt = 0 // Warning count
errcnt = 0 // Error count
errmax = 100 // Abort if this many errors
lllength = 0 // Expanded listing line length
@fstop = 0 // Top of free storage
@fslim = 0 // Bottom of free storage area
fsgap = 77777b // Minimum free space
// Scalars saved on .ST file ("environment values")
aevals = 1 // Address of saved scalars, init to (lv aevals)+1
dumpver = 0 // Version number
symtab = 0 // Symbol table pointer
symvec = 0 // Symbol packing vector
nstab = 0 // New symbol table pointer
slfl = 0 // Free storage list
srover = 0 // Roving free block pointer
fsbot = 0 // Bottom of used storage relative to fstop
ofbot = 0 // Old bottom of free storage
memno = 0 // Max used memory #
cmtchar = -1 // special * comment character
mbext = 0 // Pointer to extension for binary output
targsym = 0 // Relative ep of target address symbol
tracecalls = false // If true, trace macro calls
ignore = false // If true, ignore all statements not starting with :
tracesyms = false // If true, trace all lookups/putins
nevals = 15 // Number of saved scalars
// Table Pointers
typesizes
typenames
// Streams ("channels")
inchan
outchan
fakeoutchan
comchan
lstchan
erlchan
ettchan
fixchan
ttochan
symchan
sysdir
// BUFFERS
stbuf
stbend
// Renamed external procedures
getbits
setbits
]
let startmicro(blv, params, cfa) be
// INITIALIZATION ROUTINE
[ aevals = (lv aevals) + 1
// Set up renamed procedures
[ external [ GetBits; SetBits ]
getbits, setbits = GetBits, SetBits
]
// Type of symbol table
typesizes = table [
2; // Nul
1; // (Mac, not used)
2; // Fld: Fsbits
2; // Int: Isval
2; // (adr; not used)
2; // Bi: bsno
1; // Neu
13; // Mem: mswidth, mssize, msno, msdflt, mssource, mssink,
// mslist, msltag, (msbt), mspost, mstagmac, mslfields
2; // Und
3; // Bt: bttab, btsize
]
typenames = table [ 0; 0; 0; 0; 0; 0; 0; 0; 0; 0 ]
typenames!nultype = "null"
typenames!mactype = "macro"
typenames!fldtype = "field"
typenames!inttype = "integer"
typenames!adrtype = "address"
typenames!bitype = "builtin"
typenames!neutype = "neutral"
typenames!memtype = "memory"
typenames!undtype = "undefined"
typenames!bttype = "bittable"
micro(blv, params, cfa)
]