// 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 ]