mirror of
https://github.com/PDP-10/its.git
synced 2026-01-13 15:27:28 +00:00
791 lines
25 KiB
Plaintext
791 lines
25 KiB
Plaintext
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
|