1
0
mirror of https://github.com/PDP-10/its.git synced 2026-01-13 15:27:28 +00:00
PDP-10.its/doc/aplogo/apldoc.1
Lars Brinkhoff d536b228ac Apple II Logo.
Written by:
- Stephen L. Hain
- Patrick G. Sobalvarro
- Leigh L. Klotz.
2018-09-17 20:13:47 +02:00

791 lines
25 KiB
Plaintext
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

New documentation for Apple Logo:
Switches and modes and who uses them:
DEFFLG Defining a Ufun if nonzero. Set by TO when it
is called from an eval-buffer. When set, the
EVLBUF loop conses lines onto the procedure
definition DEFATM, unless the first token in
the line is END. Reset by EXTDEF and REINIT.
DEFATM Atom (name) of Ufun currently being defined. Reset to nil by EXTDEF.
Set by DEFSTP (called by TO). TO links DEFBOD to DEFATM, END tries
to create a packed body and link it to DEFATM.
DEFBOD Body of Ufun currently being defined. Reset to nil by EXTDEF, REINIT.
EDLINE appends ufun lines onto it. TO inits it to the arglist and links
it to the DEFATM. END calls STUFF to try and create a packed body from
it.
OTPFLG Type-outer-quotes if nonzero. Set during print-to-buffer mode,
and elsewhere. TYPE prints outer funny-pname quotes if set.
PONAME uses MAKE in place of IS if set. Reset by RSTIO, RSTIO1.
INPFLG Indicates eval-buffer mode if nonzero. POPLST won't print anything
if set; EVLBUF exits eval-buffer mode if reset. EDDONE, SREAD set
it. Various graphics and filing commands and END check it.
PRSFLG Indicates that the parser is running if nonzero. Used to lift node
allocation limit. Parser sets and resets it when done; RSTIO, RSTIO1
reset it. REQUEST sets it negative before calling the parser, so the
parser will parse input as a list.
Sort-of-shared variables:
ERRRET Error handler routine address. Set to default by REINIT, and ERROR
(which dispatches from prior setting). GARCOL sets to GCLERR at start,
then resets to ERROR1 when done.
ERRY (Really ANSN3) Error code temporary, used between ERROR and ERROR1,
so any ERRRET routines shouldn't bash it.
YSAV1 Very low-level temporary. Here's who uses it:
CRUNP, CRUNP1, EDOUT, COUT (all for Y-reg temp.), HLINE
(dot counter).
PLINE Index into parse-string. Used by the parser, PARSEL, EDIN (to set
the point to the next line), GETLN.
How to add new primitives:
Index entry
Primitive-table entry
Primitive address entry
How to add new error messages:
Index entry
Message-table entry
Message text entry
Subroutines which hack flags:
RSTIO Resets INPFLG, OTPFLG, I/O device drivers, PRSFLG.
Called by:
EVLBUF (when finished evalling buffer)
REINIT
SYSBUG, DERROR, ERROR
All Filing commands
SETUP (monitor re-entry)
GTPRV (line editor previous-line function)
RSTIO1 Resets OTPFLG, I/O device drivers, PRSFLG.
Called by:
PARSEL (parse a list, for RUN, REPEAT, and DEFINE).
EXTDEF Resets OTPFLG, DEFBOD, DEFATM.
Called by:
ERROR (except for XBRK)
END
Graphics structure (shared variables, etc.)
I/O Structure (Drivers, interfaces, etc.)
Special variable usage:
MARK1: Parser
PTFTXT
UNSTUF
CNSPDL
LPUT, LIST, SE, DEFINE, TEXT, TO, TS
MARK2: UNSTUF
WORD, LPUT, LIST, SE
MARK3: WORD, LPUT, SE
MARK4: WORD
NARG1: Parser
Number-parsing
Number-typing
Arithmetic
Number-passing
Numerical conversions
Arithmetic primitives
NARG2: Number-parsing
Number-typing
Arithmetic
Number-passing
Numerical conversions
Arithmetic primitives
NARGX: Number-parsing
Arctangent routine
A1L: Editor, Infix operations, Number-parsing
A2L: Editor, Infix operations
A3L: Editor, Infix operations
A4L: Editor, Infix operations
A5L: Graphics
Changes to make:
WORD should use MARK1-3 instead of MARK2-4
Graphics/editor/music-only vars can use same p.z. locations
(XSCR would be a real p.z. variable, then)
Old doc:
Reference Documentation for Apple-Logo Interpreter Source Code
Written by Stephen L. Hain, Patrick G. Sobalvarro, and Leigh L. Klotz
Massachusetts Institute of Technology
(Program structure developed by
the M.I.T. Logo Group)
List of Subroutines for Apple Logo interpreter:
DSPTYP Type in A, table in XY; dispatches off of type and table
EDLINE Add line ILINE to current procedure definition
MKSFUN Make system function entry A with pointer X
POPFRM Pops a frame, restoring bindings
RSTBND Restores bindings of procedure from PDL
PUSHP Push X on PDL
PUSH Push value/pointer XY on PDL
PUSHB Push byte A on PDL
VPUSH Push value/pointer XY on the VPDL
VPUSHP Push X on the VPDL
POP Pop X from PDL, don't change X
VPOP Pop X from the VPDL, don't change X
POPB Pop A from VPDL
STKTS1 Tests for stack collision, if so error
TSTPOL Tests for stack collision, if so error, else polls (POLL)
POLL Polls for interrupts/buffer characters (except Pause)
POLLZ Polls for interrupts/buffer characters, including Pause
GETVAL Get value from atom Y into X
PUTVAL Put value X in binding Y
GETFUN Get function A (NIL if not found) from object X, returning type in Y
GETCFN GETFUN(FUNCT,CURTOK)
GTCFN1 GETFUN(FUNCT,(X))
GETPRC Get precedence in A of function X
GETNGS Get number of args in A of function X
INFIXP Return Carry Set if FUNCT infix, with index in A
PTFTXT Put function text with text Y, atom X, and no. args A
UNFUNC Delete function X
UNFNC1 UNFUNC(ARG1)
ERNAMS Erase all value bindings.
ERPROS Erase all ufuns.
CONS Get new node pointer ANSN, with car Y, cdr X, and type A
PUTTYP Put type A in node X
GETTYP Get type of node X in A
TYPACS Return the type of node TEMPNH (from the typebase, i.e. no Q,D,LATOMs)
GETWDS Gets a pointer to a block of Y contiguous words in X (NIL if none)
GETULN Get uline X (NIL if comments) from body Y
GETALN GETULN(ARGLST,FBODY)
ULNADV Advance function line X
GLNADV ULNADV(GOPTR)
GTNXTK Get NEXTOK from TOKPTR
TTKADV Advance token pointer X (NIL if comments)
TOKADV TTKADV(TOKPTR)
TFKADV Advance token pointer X
SKPPTH Skips past a token or parenthesized expression
EXIFSC Skip an IF clause, returning with next token in X
DEFSTP Checks mode and argument token (error if not OK) for procedure definition
EXTDEF Cleans up from edit mode
STUFF Associates function body X with atom A
UNSTUF Unstuff Body of function X into Y
INTERN Intern string X, returning atom Y
INTRNX Intern string X (known to be unique), returning atom Y
GETLEN Get number of elements of list Y in X
GTLSTC Get last element of list X in X
PRTSTR Print string pointed to by XY
LTYPE Type X, with A zero if toplevel brackets to be typed (for lists)
TYPATM Types an atom for LTYPE
TPSATM Types an Satom for LTYPE
TYPFIX Type 2-byte fixnum X
TPBFIX Type 4-byte fixnum NARG1
TYPFLO Type flonum NARG1
PRTPDL Type the string on the PDL of length ANSN1
PONAMS Print out names
PONAME Print out name for PONAMS
POFUNS Print out procedures, titles only if A zero
POFUN Print out function A, title only if X zero
POFUNX Print out function A, title only if FULL zero
LODNUM Loads number pointed to by X into address X
GETNUM Gets number and type A from X, returning Carry Clear if successful.
GTNUM1 Gets number and type A from NARG1, returning Carry Clear if successful.
GTNUM2 Gets number and type A from ARGSAV into NARG2, Carry clear if successful.
GTNM2X Gets number and type A from NARG2, returning Carry Clear if successful.
GT1NUM Gets a number NARG1 from the VPDL, else error, returns Carry Set if flonum
GT1NMX Gets a number from NARG1, else error, returns Carry Set if flonum
GT2NUM Gets two numbers NARG1 and NARG2 from VPDL, else error, coercing to real
if not both integers, returns Carry Set if flonums
GT1FIX Gets an integer NARG1 from the VPDL, else error
GT2FIX Gets two integers NARG1, NARG2 from the VPDL, else error
CHKINT Returns Carry Set if integer X is larger than two bytes; sign of A is sign of no.
CHKPBN Returns Carry clear if integer is two bytes max. and positive, else carry set
CHKPIN Returns Carry clear if integer is one byte max. and positive, else carry set
ATMTNM Get number NARG1 from X
ATMTNX Get number NARG1 from ANSN1
GOBDIG Processes the next character for ATMTNM/NX.
GTBOOL Checks if X is boolean, error if not, returns Y zero if TRUE
MAKPNM Get pname Y from X
GETPNM Get pname Y from atom X
CNSPDL Makes String from PDL, given length ANSN1 and pointer in A
CNSPD1 Makes String from PDL, given length ANSN1 and pointer on proc. stack (so JMP to only)
CVFIX Converts four-byte fixnum NARG1 to characters on PDL
CVFIXX Used by CVFLO to get the exponent (like CVFIX)
CVBFIX Converts two-byte fixnum X to characters on PDL
CVFLO Converts flonum NARG1 to characters on PDL
GTDECH Gets the next decimal digit for CVFLO
GETINT Gets the next digit for GTDECH, CVFLO
OTFXS1 Output two-byte fixnum NARG1 to VPDL
OTPFXS Output two-byte fixnum Y to VPDL
OTPFL1 Output flonum NARG1 to VPDL
OTPFX1 Output fixnum NARG1 to VPDL
OTPFLO Output flonum Y to VPDL
OTPFIX Output fixnum Y to VPDL
IMULT Multiply fixnums NARG1 and NARG2 (bashed), result in TEMPN,1, sets carry if overflow
IDIVID Divide fixnum NARG1 by fixnum NARG2, result in NARG1
XDIVID Divide pos. fix. NARG1 by pos. fix. NARG2, res. in NARG1, rem. in NARG2, A (low byte)
OTPRG1 Output ARG1 to the PDL
PTRXOK Makes X suitable for ERROR (which should be called immediately)
PTRYOK Makes Y suitable for ERROR (which should be called immediately)
ERROR Error break of type A with optional args Y (first) and X (second)
SYSBUG System Bug error, breaks to monitor, calling point in $00,$01
GARCOL Does a garbage-collect
CLRMRK Clear all the mark bits in from Nodespace
MARKA Mark contiguous area of size X pointed to by Y
MARK Mark node X
MARKX Mark node TEMPN
SWAPT1 Swaps temporaries out for GARCOL
SWAPT2 Swaps temporaries in for GARCOL
GETLIN Read a line into the LINARY and set PLINE
PGTLIN Type the prompt in A, read a line into the LINARY and set PLINE
PARSTR Parse a line starting at Y, with list pointer X, Y nonzero if error
PRSLIN Parse a line starting at PLINE, with list pointer X, Y nonzero if error
ALLSTC Allocates a new list cell for the parser
POPLST Pops and discards the pushed list pointers for the parser
SELFDL Returns Carry Set if A (returned same) is self-delimiter
PARSEL Dump and reparse the list ARG1 to TOKPTR
Number utility routines:
CNUML0 Initializes pname-to-number processing
CNUML1 Processes a new digit A of a pname-to-number, returns Carry clear if illegal
CNUML2 Finishes processing a pname-to-number, returns Carry clear if overflow
XN1TOY Transfer NARG1 to Y.
XYTON1 Transfer Y to NARG1.
XN2TOY Transfer NARG2 to Y.
XYTON2 Transfer Y to NARG2.
DIGITP Returns Carry Set if A is a digit
NMROL1 Multiply NARG1 by 2.
NMROR1 Divide NARG1 by 2.
MULN10 Multiply flonum NARG1 by 10.
FDVD10 Divide flonum NARG1 by 10.
XDVDX Divide fixnum NARG1 by A.
ADDDIG Add ascii digit A to fixnum NARG1.
FADDIG Add ascii digit A to flonum NARG1, breaks out with Carry Clear if overflow.
FADDGX Add ascii digit A to flonum NARG1, returns Carry Set if overflow.
FADDGN Add numerical decimal (<1) digit A to flonum NARG1.
ADDNUM Add fixnum A1L to fixnum NARG1.
INCEXP Process an exponent character A.
Floating-point Arithmetic routines:
FLOTN1 Make integer NARG1 floating-point.
FLOTN2 Make integer NARG2 floating-point.
XFLOAT Make positive integer NARG1 floating-point.
INTN1 Make flonum NARG1 a fixnum, don't round
XINTN1 Round up positive flonum NARG1 to a fixnum.
RNDN1 Make flonum NARG1 a fixnum (rounds), error if overflow
RNDN2 Make flonum NARG2 a fixnum (rounds), error if overflow
SWAP Swap NARG1 and NARG2.
FADD Floating point add, NARG1 gets NARG1 + NARG2.
FSUB Floating point subtract, NARG1 gets NARG1 - NARG2
FSUBX Floating point subtract, NARG1 gets NARG2 - NARG1.
FMUL Floating point multiply, NARG1 gets NARG1 * NARG2.
FDIV Floating point divide, NARG1 gets NARG1/NARG2.
FDIVX Floating point divide, NARG1 gets NARG2/NARG1.
XDIVID Integer divide, NARG1 gets NARG1/NARG2.
COMPL Complements fixnum X.
FCOMPL Complements flonum NARG1.
Screen Editor/Filing routines:
CHGSTP Checks mode and argument for screen editor and dispatches to proper set-up
routine (error if not OK) CHGNON, CHGNEW, or CHGOLD.
CHGIN1 Initialize buffer-filling.
CHGIN2 Initialize screen and editor.
CHGIN3 Display buffer and call editor top-loop.
CHGOLD Starts screen editor with a procedure in the buffer.
CHGNEW Starts screen editor with TO definition line in buffer.
CHGNON Starts screen editor with an empty buffer.
INCPNT Increments the point
DECPNT Decrements the point
PNTBEG Sets the point to beginning of buffer
TOPSCR Sets cursor at top left of screen.
CHGLOP Top level screen editor loop.
EDOUT Set up to output character A to buffer.
EDSPBF Display page of buffer from point on.
EDDONE Evaluates edit buffer and returns to Logo.
CHGNYM Displays "Apple Logo Screen Editor" indicator.
DOSSTP Initializes DOS and tells it to listen to our output.
STDERR Tells DOS that error-return routine is DERROR.
SAPOUT Tells DOS to listen to our output.
DOSEAT Internal DOS subroutine which initializes output-listening.
DERROR Gives appropriate filing error.
DTPATM Type atom ARG1 coded for DOS.
DPRLEN Type buffer length as DOS-coded hexadecimal digits.
Temporary Variable Usage Table:
Routines which use no temporary variables:
CHKINT
COMPL
DIGITP
EXTDEF
GTNXTK
POLL
POLLZ
POP
POPB
PUSH
PUSHB
PUSHP
TSTPOL
TSTSTK
VPOP
VPUSH
VPUSHP
(All Monitor Routines)
First-level Routines:
GETLEN TNH TN
GETNGS TNH
GETPRC TNH
GETTYP TNH
GETULN TNH
GETVAL TNH
GTLSTC AN TNH
INFIXP TNH
PRTPDL CCOUNT
PRTSTR TNH
PUTTYP TNH
PUTVAL TNH
TFKADV TNH
TTKADV TNH
TYPACS TNH
ULNADV TNH
UNFUNC TNH
Second-level Routines:
CONS AN TNH
PUTTYP: TNH
DEFSTP RG1
GETTYP: TNH
TTKADV: TNH
GETFUN AN TN
GETTYP: TNH
PUTFUN AN AN1 TNH
GETTYP: TNH
Third-level Routines:
CNSPDL: AN1 TN MK1
CONS: AN TNH
CNSPD1: AN1 TN MK1
CONS: AN TNH
EDLINE TN TN1
CONS: AN TNH
UNSTUF AN1 TNH TN TN1 TN2 TN3 TN4
GETTYP: TNH
PUTTYP: TNH
CONS: AN TNH
Sixth-level Routines:
GTBOOL AN1 TX1
INTERN: AN AN1 AN2 TNH TN TN1 TN2 TN4 TN5
Seventh-level Routines:
POFUN AN1 AN4 TN6 TN7 TN8 TX1
GETFUN: AN TNH TN
PRTSTR: TNH
GETTYP: TNH
LTYPE: AN AN1 AN2 AN3 TNH TN TN1 TN4 TN5 NG1 NG2 A1L A2L MK1
POFUNX AN1 AN4 TN6 TN7 TN8 TX1
GETFUN: AN TNH TN
PRTSTR: TNH
GETTYP: TNH
LTYPE: AN AN1 AN2 AN3 TNH TN TN1 TN4 TN5 NG1 NG2 A1L A2L MK1
PONAME TN7
GETVAL: TNH
GETTYP: TNH
PRTSTR: TNH
LTYPE: AN AN1 AN2 AN3 TNH TN TN1 TN4 TN5 NG1 NG2 A1L A2L MK1
Eighth-level Routines:
GETNUM AN1 TNH NG1
GETTYP: TNH
ATMTNX: AN AN1 AN2 TNH TN TN1 TN4 TN5 TN6high TX1low NG1 NG2 NGX A1L A2L MK1
GTNUM1 AN1 TNH NG1
GETTYP: TNH
ATMTNX: AN AN1 AN2 TNH TN TN1 TN4 TN5 TN6high TX1low NG1 NG2 NGX A1L A2L MK1
POFUNS AN4 TX2
POFUNX: AN AN1 AN2 AN3 AN4 TNH TN TN1 TN4 TN5 TN6 TN7 TN8 TX1 NG1 NG2 A1L A2L MK1
PONAMS TN6 TN8
PONAME: AN AN1 AN2 AN3 TNH TN TN1 TN4 TN5 TN7 NG1 NG2 A1L A2L MK1
Ninth-level Routines:
GTNUM2 TX1 NG2 A3L A4L
GETNUM: AN AN1 AN2 TNH TN TN1 TN4 TN5 TN6high TX1low NG1 NG2 NGX A1L A2L MK1
GT1FIX GETNUM: AN AN1 AN2 TNH TN TN1 TN4 TN5 TN6high TX1low NG1 NG2 NGX A1L A2L MK1
RNDN1: AN TNH TN NG1 NG2
GT1NUM NG1
GTNUM1: AN AN1 AN2 TNH TN TN1 TN4 TN5 TN6high TX1low NG1 NG2 NGX A1L A2L MK1
GT1NMX GTNUM1: AN AN1 AN2 TNH TN TN1 TN4 TN5 TN6high TX1low NG1 NG2 NGX A1L A2L MK1
Tenth-level Routines:
GT2FIX TX1 NG1
RNDN1: AN TNH TN NG1 NG2
RNDN2: AN TNH TN NG1 NG2
GETNUM: AN AN1 AN2 TNH TN TN1 TN4 TN5 TN6high TX1low NG1 NG2 NGX A1L A2L MK1
GTNUM2: AN AN1 AN2 TNH TN TN1 TN4 TN5 TN6high TX1low NG1 NG2 NGX A1L A2L MK1
GT2NUM AN3 TX2 NG1
FLOTN1: NG1
FLOTN2: NG1 NG2
GETNUM: AN AN1 AN2 TNH TN TN1 TN4 TN5 TN6high TX1low NG1 NG2 NGX A1L A2L MK1
GTNUM2: AN AN1 AN2 TNH TN TN1 TN4 TN5 TN6high TX1low NG1 NG2 NGX A1L A2L MK1
Bottom-level Routines (not called as subroutines):
AL2 ANSN
ARGLOP ANSN
EVAL TEMPN (GETVAL: )
EVLINE TEMPN (GETTYP: ) (TTKADV: )
EVWRAP ANSN2 (TTKADV: )
INITLZ TEMPN (CLRMRK: )
SBOTH ANSN1 (GTBOOL: ANSN)
SBTFST ANSN1* TEMPN* TEMPN1* TEMPN2* (CONS: ANSN) (GETTYP: ) (INTERN: ANSN ANSN1 ANSN2 TEMPN
TEMPN1 TEMPN2 TEMPN3 TEMPN4 TEMPN5) (MAKPNM: ANSN ANSN1 ANSN2 ANSN3 TEMPN TEMPN1
TEMPN2 TEMPN3 TEMPN4)
SBTLST ANSN1* ANSN2* TEMPN* TEMPN1* TEMPN2* TEMPN5 (CONS: ANSN) (GETTYP: ) (INTERN: ANSN
ANSN1 ANSN2 TEMPN TEMPN1 TEMPN2 TEMPN3 TEMPN4 TEMPN5) (MAKPNM: ANSN ANSN1 ANSN2
ANSN3 TEMPN TEMPN1 TEMPN2 TEMPN3 TEMPN4)
SDEFIN TN1 TN2 TN3 TN5 RG1 RG2
GETTYP: TNH
CONS: AN TNH
UNFUNC: TNH
STUFF: AN AN1 AN2 AN3 AN4 TNH TN TN1 TN2 TN3 TN4 TN5 TN6 TN7 TN8 TX1 TX2
INTERN: AN AN1 AN2 TNH TN TN1 TN2 TN4 TN5
SDIF TEMPN1* (GT2NUM: ANSN ANSN1 ANSN2 TEMPN TEMPN1 TEMPN2 TEMPN3 TEMPN4 TEMPN5 TEMPN6)
(OTPNUM: ANSN TEMPN)
SDIVID ANSN* (GT2NUM: ANSN ANSN1 ANSN2 TEMPN TEMPN1 TEMPN2 TEMPN3 TEMPN4 TEMPN5
TEMPN6) (OTPNUM: ANSN TEMPN) (XDIVID: TEMPN TEMPN1)
SEDIT TEMPN1* TEMPN5* TEMPX1 (DEFSTP: ) (GETFUN: ANSN TEMPN) (GETLEN: TEMPN)
(PTFTXT: ANSN ANSN1 ANSN2 ANSN3 ANSNX TEMPN TEMPN1 TEMPN2 TEMPN3 TEMPN4 TEMPN5 TEMPN6
TEMPN7 TEMPN8) (UNSTUF: ANSN ANSN1 ANSN2 TEMPN TEMPN1 TEMPN2 TEMPN3 TEMPN4)
SEITHR ANSN1 (GTBOOL: ANSN)
SELSE TEMPN2 (EXIFSC: ANSN ANSN1 TEMPN TEMPN1)
SEQUAL ANSN* ANSN1* TEMPN7 TEMPN8 (GETNUM: ANSN ANSN1 ANSN2 TEMPN TEMPN1 TEMPN2 TEMPN3 TEMPN4
TEMPN5 TEMPN6) (GETTYP: )
SFIRST TEMPN5* TEMPN6 (CONS: ANSN) (GETTYP: ) (INTERN: ANSN ANSN1 ANSN2 TEMPN TEMPN1 TEMPN2
TEMPN3 TEMPN4 TEMPN5) (MAKPNM: ANSN ANSN1 ANSN2 ANSN3 TEMPN TEMPN1 TEMPN2 TEMPN3
TEMPN4)
SGO TEMPN TEMPN1 (GETTYP: ) (GTTULN: ) (PUTTYP: ) (TTKADV: ) (ULNADV: )
SLAST TEMPN* (CONS: ANSN) (GETTYP: ) (GTLSTC: ANSN) (INTERN: ANSN ANSN1 ANSN2 TEMPN TEMPN1
TEMPN2 TEMPN3 TEMPN4 TEMPN5) (MAKPNM: ANSN ANSN1 ANSN2 ANSN3 TEMPN TEMPN1 TEMPN2
TEMPN3 TEMPN4)
SLPUT TEMPN TEMPN1 TEMPN2 (CONS: ANSN) (GETTYP: )
SNODES TEMPN1 (OTPNUM: ANSN TEMPN)
SPO TEMPN1* (GETFUN: ANSN TEMPN) (GETTYP: ) (POFUNS: ANSN ANSN1 ANSN2 TEMPN TEMPN1 TEMPN2
TEMPN3 TEMPN4 TEMPN5 TEMPN6 TEMPN7 TEMPN8 TEX1 TEMPX2) (PONAMS: ANSN TEMPN TEMPN1
TEMPN2 TEMPN3 TEMPN4 TEMPN5 TEMPN6 TEMPN7 TEMPN8) (POTEXT: ANSN ANSN1 ANSN2 TEMPN
TEMPN1 TEMPN2 TEMPN3 TEMPN4 TEMPN5 TEMPN6 TEMPN7 TEMPN8 TEMPX1) (TTKADV: )
SPROD ANSN* TEMPN1* (GT2NUM: ANSN ANSN1 ANSN2 TEMPN TEMPN1 TEMPN2 TEMPN3 TEMPN4
TEMPN5 TEMPN6) (OTPNUM: ANSN TEMPN)
SREAD1 TEMPN (GETTYP: )
SSUM TEMPN1* (GT2NUM: ANSN ANSN1 ANSN2 TEMPN TEMPN1 TEMPN2 TEMPN3 TEMPN4 TEMPN5 TEMPN6)
(OTPNUM: ANSN TEMPN)
STEXT TEMPN1* TEMPN2* TEMPN5 TEMPN6 (CONS: ANSN) (GETFUN: ANSN TEMPN) (GETTYP: )
(UNSTUF: ANSN ANSN1 ANSN2 TEMPN TEMPN1 TEMPN2 TEMPN3 TEMPN4)
STITLE ANSN1* TEMPN* TEMPN1 TEMPN2 TEMPN3 (GETFUN: ANSN TEMPN) (GETTYP: ) (PUTFUN: ANSN ANSN1)
(UNFUNC: ANSN)
STO TEMPX1 TEMPX2 (CONS: ANSN) (EDTSTP: ) (EXTEDT: ) (GETFUN: ANSN TEMPN) (GETTYP: )
(PTFTXT: ANSN ANSN1 ANSN2 ANSN3 ANSNX TEMPN TEMPN1 TEMPN2 TEMPN3 TEMPN4 TEMPN5 TEMPN6
TEMPN7 TEMPN8) (TFKADV: )
STRCBK ANSN1 TEMPN6 TEMPN7 TEMPN8 TEMPX1 TEMPX2
(LTYPE: ANSN TEMPN TEMPN1 TEMPN2 TEMPN3 TEMPN4 TEMPN5)
SWORD ANSNX TEMPN6 (CONCAT: ANSN ANSN1 TEMPN TEMPN1 TEMPN2 TEMPN3 TEMPN4 TEMPN5)
(COPY: ANSN1 TEMPN TEMPN1 TEMPN2 (CONS: ANSN))
(CONCAT: ANSN1* TEMPN* TEMPN1* TEMPN3 TEMPN4 TEMPN5 (GTLSTC: ANSN)
(COPY: ANSN ANSN1 TEMPN TEMPN1 TEMPN2))
(INTERN: ANSN ANSN1 ANSN2 TEMPN TEMPN1 TEMPN2 TEMPN3 TEMPN4 TEMPN5)
(MAKPNM: ANSN ANSN1 ANSN2 ANSN3 TEMPN TEMPN1 TEMPN2 TEMPN3 TEMPN4)
TOPLOP TEMPN (GETTYP: )
XSFNCL TEMPN
XTAIL TEMPN2 TEMPN3 TEMPN4 TEMPN5 (GETVAL: ) (GTTULN: ) (INCVSP:) (PTRDEC: TEMPN5)
(INCVSP: )
(PTRDEC: TEMPN5)
(PTVTST: TEMPN5)
(STPTR1: TEMPN5)
(PTVTST: TEMPN5) (PUTVAL: ) (STPTR1: TEMPN5) (TTKADV: )
XUFNCL TEMPN TEMPN1 TEMPN2 TEMPN5 (GETVAL: ) (GETTYP: ) (GTTULN: ) (INCVSP:)
(PTRDEC: TEMPN5) (PTVTST: TEMPN5) (PUTVAL: )
(STPTR1: TEMPN5) (TTKADV: )
GARCOL ANSN1 TEMPN* TEMPN3 TEMPN4 (CLRMRK: ) (MARK: ANSN TEMPN TEMPN1 TEMPN2) (MARKA: TEMPN)
(TYPACS: ) (MARKX: ANSN TEMPN TEMPN1 TEMPN2)
MARK ANSN TEMPN TEMPN1 TEMPN2 (TYPACS: )
MARKX "
MARKA TEMPN (TYPACS: )
CLRMRK TNH
SOBST1 TEMPN (PUTTYP: )
REINIT ANSN* ANSN2* ANSN3 TEMPN* TEMPN1* TEMPN2* TEMPN3 (CONS: ANSN)
(INTRNX: ANSN ANSN1 ANSN2 TEMPN TEMPN1 TEMPN2) (MKSFUN: ANSN TEMPN1) (SOBST1: TEMPN)
(MKSFUN: TEMPN1 (CONS: ANSN))
(SOBST1: TEMPN)
Parser:
ALLSTC TN TX2 MK1
POPLST TN1 TN8
SELFDL AN3 TN4high TN7high TN8
GETLIN AN3 AN4 TN TN1 TN2 TN4high TN5 TN6 TN7high TN8 TX1 TX2 MK1
POPLST: TN1 TN8
ALLSTC: TN TX2 MK1
SELFDL: AN3 TN4high TN7high TN8
CONS: AN TNH
PRTSTR: TNH
CNUML0: TN5 TN6high TX1low NG1
CNUML1: AN TNH TN TN5 TN6high TX1low NG1 NG2 NGX A1L A2L
CNUML2: AN TNH TN TN5 TN6high TX1low NG1 NG2 NGX A1L A2L
INTERN: AN AN1 AN2 TNH TN TN1 TN2 TN4 TN5
PUTTYP: TNH
PARSTR AN3 AN4 TN TN1 TN2 TN4high TN5 TN6 TN7high TN8 TX1 TX2 MK1
POPLST: TN1 TN8
ALLSTC: TN TX2 MK1
SELFDL: AN3 TN4high TN7high TN8
CONS: AN TNH
PRTSTR: TNH
CNUML0: TN5 TN6high TX1low NG1
CNUML1: AN TNH TN TN5 TN6high TX1low NG1 NG2 NGX A1L A2L
CNUML2: AN TNH TN TN5 TN6high TX1low NG1 NG2 NGX A1L A2L
INTERN: AN AN1 AN2 TNH TN TN1 TN2 TN4 TN5
PUTTYP: TNH
PGTLIN AN3 AN4 TN TN1 TN2 TN4high TN5 TN6 TN7high TN8 TX1 TX2 MK1
POPLST: TN1 TN8
ALLSTC: TN TX2 MK1
SELFDL: AN3 TN4high TN7high TN8
CONS: AN TNH
PRTSTR: TNH
CNUML0: TN5 TN6high TX1low NG1
CNUML1: AN TNH TN TN5 TN6high TX1low NG1 NG2 NGX A1L A2L
CNUML2: AN TNH TN TN5 TN6high TX1low NG1 NG2 NGX A1L A2L
INTERN: AN AN1 AN2 TNH TN TN1 TN2 TN4 TN5
PUTTYP: TNH
PRSLIN AN3 AN4 TN TN1 TN2 TN4high TN5 TN6 TN7high TN8 TX1 TX2 MK1
POPLST: TN1 TN8
ALLSTC: TN TX2 MK1
SELFDL: AN3 TN4high TN7high TN8
CONS: AN TNH
PRTSTR: TNH
CNUML0: TN5 TN6high TX1low NG1
CNUML1: AN TNH TN TN5 TN6high TX1low NG1 NG2 NGX A1L A2L
CNUML2: AN TNH TN TN5 TN6high TX1low NG1 NG2 NGX A1L A2L
INTERN: AN AN1 AN2 TNH TN TN1 TN2 TN4 TN5
PUTTYP: TNH
Number-parsing routines:
SWAP NG1 NG2
MULN10 NG2
FMUL: AN TNH TN NG1 NG2
FDVD10: NG2
FDIV: AN TNH TN NG1 NG2
FADDGN NG1 NG2 NGX A1L A2L
MULN10: AN TNH TN NG1 NG2
FLOTN2: NG1 NG2
FDIVX: AN TNH TN NG1 NG2
FADDGX NG2
FLOTN2: NG1 NG2
FADD: AN TNH TN NG1 NG2
FADDIG FADDGX: AN TNH TN NG1 NG2
CNUML0 TN5 TN6high TX1low NG1
CNUML2 TN5 TN6high TX1low NG1 NGX A1L A2L
MULN10: AN TNH TN NG1 NG2
FDIVX: AN TNH TN NG1 NG2
FMUL: AN TNH TN NG1 NG2
CNUML1 TN5 TN6high TX1low A1L A2L
NMROL1: NG1
ADDNUM: NG1 A1L A2L
ADDDIG: NG1
NMROR1: NG1
FLOTN1: NG1
MULN10: AN TNH TN NG1 NG2
FADDIG: AN TNH TN NG1 NG2
FADDGN: AN TNH TN NG1 NG2 NGX A1L A2L
INCEXP: TX1low
FMDC1: NGX
Arithmetic routines:
XDIVID TN TN1 NG1 NG2 A1L A2L
XDVDX TN TN1 NG1 NG2 A1L A2L
FADD1 AN TNH TN NG1 NG2
FCOMPL NG1
FDIVD AN TNH TN NG1 NG2
FMULT AN TNH TN NG1 NG2
FSUB1 AN TNH TN NG1 NG2
FADD FADD1: AN TNH TN NG1 NG2
FDIV SWAP: NG1 NG2
FDIVD: AN TNH TN NG1 NG2
FDIVX FDIVD: AN TNH TN NG1 NG2
FLOTN1 NG1
FCOMPL: NG1
FLOTN2 SWAP: NG1 NG2
FLOTN1: NG1
FMUL FMULT: AN TNH TN NG1 NG2
FSUB SWAP: NG1 NG2
FSUB1: AN TNH TN NG1 NG2
FSUBX FSUB1: AN TNH TN NG1 NG2
INTN1 AN NG1
FCOMPL: NG1
XINTN1 NG2
FADD: AN TNH TN NG1 NG2
INTN1: AN NG1
RNDN1 NG1
FCOMPL: NG1
XINTN1: AN TNH TN NG1 NG2
RNDN2 SWAP: NG1 NG2
RNDN1: AN TNH TN NG1 NG2
Stuffing routines:
GETWDS AN AN1 AN2 TNH TN TN1 TN2 TN3 TN4
PTFTXT AN3 AN4 TNH TN5 TN6 TN7 TN8
GETTYP: TNH
GETWDS: AN AN1 AN2 TNH TN TN1 TN2 TN3 TN4
PUTTYP: TNH
STUFF AN3 AN4 TNH TN TN1 TN3 TN5 TN6 TN7 TX1 TX2
GETLEN: TNH TN
GETWDS: AN AN1 AN2 TNH TN TN1 TN2 TN3 TN4
PUTTYP: TNH
PTFTXT: AN AN1 AN2 AN3 AN4 TNH TN TN1 TN2 TN3 TN4 TN5 TN6 TN7 TN8
Number-printing routines:
CVFIX AN AN1 TN TN1 NG1 NG2 A1L A2L
CVFIXX AN AN1 TN TN1 NG1 NG2 A1L A2L
CVBFIX AN AN1 NG1
XDVDX: TN TN1 NG1 NG2 A1L A2L
GETINT TN1 NG1
GTDECH AN1 TN1 NG2
FSUB: AN TNH TN NG1 NG2
FLOTN2: NG1 NG2
MULN10: AN TNH TN NG1 NG2
CVFLO AN1 AN2 AN3 TN1 NG1
FCOMPL: NG1
FADD: AN TNH TN NG1 NG2
MULN10: AN TNH TN NG1 NG2
FDVD10: AN TNH TN NG1 NG2
GETINT: TN1 NG1
GTDECH: AN AN1 TNH TN TN1 NG1 NG2
CVFIXX: AN AN1 TN TN1 NG1 NG2 A1L A2L
TPBFIX CVBFIX: AN AN1 TN TN1 NG1 NG2 A1L A2L
PRTPDL: AN1
TYPFIX CVFIX: AN AN1 TN TN1 NG1 NG2 A1L A2L
PRTPDL: AN1
TYPFLO CVFLO: AN AN1 AN2 AN3 TNH TN TN1 NG1 NG2 A1L A2L
PRTPDL: AN1
General typeout routines:
TPSATM AN TN5
TYPATM AN TNH TN5
GETPNM: AN AN1 TNH TN TN1 MK1
LTYPE TN4 TN5 NG1
GETTYP: TNH
TYPATM: AN TNH TN TN1 TN5 MK1
TPSATM: AN TN5
TPBFIX: AN AN1 TN TN1 NG1 NG2 A1L A2L
TYPFLO: AN AN1 AN2 AN3 TNH TN TN1 NG1 NG2 A1L A2L
Semi-dedicated primitive routines:
ERNAMS TN TN1 TN2
PUTVAL: TNH
ERPROS TN TN1
UNFUNC: TNH
Pname routines:
GETPNM TNH TN TN1
GETTYP: TNH
CONS: AN TNH
CNSPDL: AN AN1 TNH TN MK1
MAKPNM AN1 AN2 TNH NG1
GETTYP: TNH
GETPNM: AN AN1 TNH TN TN1 MK1
CVBFIX: AN AN1 TN TN1 NG1 NG2 A1L A2L
CVFLO: AN AN1 AN2 AN3 TNH TN TN1 NG1 NG2 A1L A2L
CNSPD1: AN AN1 TNH TN MK1
Interning routines:
INTRNX AN2 TN1
CONS: AN TNH
INTERN AN1 AN2 TNH TN TN1 TN2 TN4 TN5
CONS: AN TNH
GETPNM: AN AN1 TNH TN TN1 MK1
INTRNX: AN2 TNH TN1
Frame-popping routines:
RSTBND AN TN TN1
PUTVAL: TNH
POPFRM RSTBND: AN TNH TN TN1
If-then routines:
EXIFSC AN1 TN1
TTKADV: TNH
SKPPTH AN TN
TTKADV: TNH
Atom-to-number routines:
GOBDIG CNUML1: AN TNH TN TN5 TN6high TX1low NG1 NG2 NGX A1L A2L
ATMTNM AN1 AN2 TN4 TN7 NG1
FCOMPL: NG1
GETPNM: AN AN1 TNH TN TN1 MK1
CNUML0: TN5 TN6high TX1low NG1
CNUML2: AN TNH TN TN5 TN6high TX1low NG1 NG2 NGX A1L A2L
GOBDIG: AN TNH TN TN5 TN6high TX1low NG1 NG2 NGX A1L A2L
ATMTNX AN1 AN2 TN4 TN7 NG1
FCOMPL: NG1
GETPNM: AN AN1 TNH TN TN1 MK1
CNUML0: TN5 TN6high TX1low NG1
CNUML2: AN TNH TN TN5 TN6high TX1low NG1 NG2 NGX A1L A2L
GOBDIG: AN TNH TN TN5 TN6high TX1low NG1 NG2 NGX A1L A2L