recordformatspec dict cell fm
recordformat dict fm -
(record (dict fm)name alt,record (dict cell fm)name tree)
recordformat dict cell fm -
(record (dict cell fm)name parent,left,right,
integer token,string (255)s)
recordformat event fm -
(byte event,sub, half line,
integer extra,string (255-32)message,
integer pc,integerarray display(1:7),
integerarray r(0:15))
recordformat scb fm -
(integer p,l,bs,bl,fs,fl,fastpc,gla,serpc,mode,
record (scb fm)name next,record (*)name acb,
integer a,b,c,d,string (255)filename)
!File connection record.
!Keeps track of pre-loaded files (tentative)
recordformat fcr fm -
(record (fcr fm)name next,integer start,size,half count,flags)
recordformat trap fm (record (trap fm)name next,integer pc,gla,spare)
!Heap cells look like this when they're holes. When they're used,
!they look like (%byte level %or %integer size, <user portion>).
recordformat heap cell fm -
(byte level or integer size,
record (heap cell fm)name forward,backward)
recordformat heap header fm -
(byte level or integer size,
record (heap cell fm)name holes,integer front,limit,end)
!FE02 Object file header.
recordformat fe02 header fm -
(half tyver,flags,export,import,integer codesize,half reset,main,
integer ownsize,stackreq,short dlim,charlim,spare1,spare2)
!FE02 External object descriptor.
recordformat fe02 object fm -
(half flags,extra,integer type,offset,string (255)name)
!FE02 indirector (GLA entry).
!For data object it's just a 4-byte pointer.
!For %system procedures it's a 6-byte JMP.
!For %external procedures it's a 12-byte {Move.l #??,A4; Jmp ??}.
!For %dynamics it's also 12 bytes, which are like %externals after
!the first call, but initially different.
recordformat fe02 indir fm -
(integer address or -
half op1, integer opd1, half op2,integer opd2)
!(Loader's) Module activation record.
!Keeps track, within the current program activation, of which
!modules are loaded, and where their respective GLAs are.
recordformat mar fm -
(record (mar fm)name next,record (fe02 header fm)name header,integer gla)
!(Loader's) Loaded external object.
!Keeps track, within the current program activation, of which
!external objects are loaded, where their FE02 descriptors are,
!what module they're in, and where the objects themselves are.
recordformat leo fm -
(record (leo fm)name left,right,
record (fe02 object fm)name object,
record (mar fm)name module,integer address)
!(Loader's) Program activation record.
!Contains a link to the next (more global) program activation record
!in the same process, and the roots for the list of module activation
!records and the tree of object activatiuons records.
recordformat par fm -
(record (par fm)name next,
record (mar fm)name modules,record (leo fm)name objects)
!(Loader's) Undischarged dynamic reference record.
!Contains (a path to) all the information needed by the loader
!to satisfy a dynamic procedure reference.
recordformat dyn fm {undischarged dynamic reference} -
(record (fe02 object fm)name object,record (par fm)name program)
!Layout of a Process-Own-Area.
recordformat poa fm(bytearray b(1:1024) or -
record (trap fm)name trap or -
integer evlink,integerarray display(1:7),
byte event,eventsub,short eventline,integer eventextra,
string (255-32)eventmessage,
integer eventpc,integerarray eventdisplay(1:7),
integerarray eventr(0:15),
integer scratch1,scratch2,excepth,
record (par fm)name topprog,
(record (heap header fm)name heap or integer heapbase,stacklim),
record (scb fm)name curin,curout,integer instream,outstream,
record (scb fm)namearray in,out(0:7),string (255)cliparam,
record (dict fm)name masterdict,extdict,moddict,logdict,fildict,comdict,
integer membot,memtop)
systemroutinespec connectfile(string (255)file,integer mode,
integername start,size)
systemroutinespec resetinput
systemroutinespec resetoutput
systemintegerfnspec instream
systemintegerfnspec outstream
systemstring (255)fnspec cliparam
systempredicatespec split(string (255)name s,l,r)
systemroutinespec heapput(integer x)
systemroutinespec mark
systemroutinespec release
systemroutinespec preconnect(string (255)file,integer start,size)
systemroutinespec install(record (fe02 header fm)name h,string (255)file)
systemroutinespec preload(String (255) file)
externalroutinespec run process (string (255) file,
Integer space,priority)
systemintegerfnspec makeentry(string (255)name,record (dict fm)name dict)
systemintegerfnspec findentry(string (255)name,record (dict fm)name dict)
systemstring (255)fnspec translateentry(integer t)
systemroutinespec deleteentry(integer t,record (dict fm)name d)
systemintegerfnspec firstentry(record (dict fm)name d)
systemintegerfnspec nextentry(integer t)
systemrecord (dict fm)mapspec create dict(string (255)s)
systemrecord (dict fm)mapspec find dict(string (255)s)
systemrecord (scb fm)mapspec new scb(string (*)name s)
systemrecord (scb fm)mapspec open(integer mode,string (255)filename)
systemroutinespec toupper(string (*)name s)
systemstring (*)mapspec newstring(string (255)s)
systempredicatespec dynamicload(string (255)s,integername pc,gla)
systemroutinespec prompt(string (255)s)
systemroutinespec createlogicalname(string (255)log,equiv)
systemroutinespec deletelogicalname(string (255)s)
systempredicatespec translatelogicalname(string (*)name s)
constinteger inputmode=0,outputmode=1,appendmode=2,modifymode=3
constinteger {function codes for IO service} -
ser closin = 0,
ser closout = 1,
ser setin = 2,
ser setout = 3,
ser prompt = 4,
ser dropout = 5,
ser refresh = 6,
ser flush = 7
@0(a5) record (poa fm)poa