mirror of
https://github.com/PDP-10/its.git
synced 2026-01-13 15:27:28 +00:00
511 lines
19 KiB
Plaintext
511 lines
19 KiB
Plaintext
Reference Documentation for Apple-Logo Assembly Code
|
||
|
||
Written by Stephen L. Hain and Patrick G. Sobalvarro
|
||
Massachusetts Institute of Technology
|
||
|
||
(Program structure developed by
|
||
the M.I.T. LOGO Group)
|
||
|
||
|
||
CORRECTIONS and ADDITIONS:
|
||
|
||
BUGS: Garbage collection with recursive WORDs
|
||
Filing system w/numbers, end of file.
|
||
(SAVE gives I/O error w/out spinning disk)
|
||
(READ shouldn't clear screen)
|
||
Overly large integers crash (9999999999999 etc.)
|
||
Boolean args of SETT don't work.
|
||
|
||
Fix unary minus parsing in lists.
|
||
|
||
Put in a line-oriented editor, and make the toplevel editor a subsection.
|
||
(Line editor bugs: ^D, insert with multiple screen lines)
|
||
|
||
Put in TTYP, XORMODE, pencolors.
|
||
|
||
Fix turtle out-of-bounds conditioning.
|
||
|
||
Put in OBLIST collection of garbage (no bindings, not pointed to). (??)
|
||
|
||
Improve color graphics lines.
|
||
|
||
Put in advanced arithmetic functions.
|
||
|
||
Get rid of line numbers, period! (Except dummy numbers for CHANGE.)
|
||
(Get rid of line numbers in error messages)
|
||
|
||
Make CARs, CDRs macros or subroutines.
|
||
|
||
STORAGE and INDEX PARAMETERS:
|
||
|
||
SYSTAB (Ptr. to first Systable entry)
|
||
ERRTBL (Ptr. to start of Error-table)
|
||
PRMTAB (Ptr. to first Primitive-table entry)
|
||
VPRMTB (Ptr. to first V-Primitive-table entry)
|
||
VPRMTE (Ptr. to byte after V-Primitive-table)
|
||
|
||
Primitive-table format: 16 bytes/entry maximum, each terminated by a space
|
||
SFINDEX NARGS PREC L0 L1 L2 L3 L4 L5 L6 L7 L8 L9 L10 L11
|
||
(Abbreviations use a separate entry)
|
||
|
||
V-Primitive-table format: 3 bytes/entry
|
||
INDEX VARNAM INSTANCE (VARNAM is a pointer to the Variable pointer)
|
||
|
||
Error-table format:
|
||
$FF terminates
|
||
$00 indicates "LTYPE (<Second argument to ERROR>)"
|
||
$01 indicates "LTYPE (<Third argument to ERROR>)"
|
||
Anything else is printed as an Ascii character
|
||
|
||
Type-table Format:
|
||
1 Node per byte:
|
||
Bits 0-6: Type code
|
||
Bits 7: Mark bit (assumed 0 before and after G.C.)
|
||
|
||
Argument passing table for APPLE LOGO:
|
||
|
||
(X,Y or A indicates that the page zero address of the argument is in
|
||
that register. XY indicates that registers X and Y hold a sixteen
|
||
bit address. "vN" indicates that register N holds an absolute
|
||
value, "vXY" indicates that registers X and Y hold a sixteen bit
|
||
absolute value. "vMMM" indicates that the variable MMM holds the
|
||
value, while "MMM" indicates that the variable MMM holds a pointer
|
||
to the value. For input-output designations of parameters, see the PLOGO
|
||
listing. Sixteen-bit values stored in XY have low-byte in X, high-byte
|
||
in Y.)
|
||
|
||
|
||
CHKLNN Returns typecode of TOKPTR
|
||
EDLINE Add line X to current procedure definition, Y nonzero for default line number
|
||
MKSFUN Make system function entry vA 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 vXY on PDL
|
||
VPUSH Push value/pointer vXY on the VPDL
|
||
VPUSHP Push X on the VPDL
|
||
POP Pop X from PDL
|
||
VPOP Pop X from the VPDL
|
||
POPB Pop vA from VPDL
|
||
STKTS1 Tests for stack collision, if so error
|
||
STKTST Tests for stack collision, if so error, else polls for interrupts/buffer
|
||
STPPEK Polls for interrupts/buffer
|
||
|
||
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 vA
|
||
PUTFUN Put function Y in atom X
|
||
GETPRC Get precedence in vA of function X (if Sfun), given type vY
|
||
GETNGS Get number of args in vA of function X, given type vA
|
||
INFIXP Given type in vA and function in X, return Carry Set if infix, with index in vA
|
||
PTFTXT Put function text with text Y, atom X, and no. args A
|
||
UNFUNC Delete function X
|
||
|
||
CONS Get new node pointer ANSN, with car Y, cdr X, and type vA
|
||
PUTTYP Put type vA in node X
|
||
GETTYP Get type of node X in vA
|
||
TYPACS Return the type of node TEMPNH (from the typebase, i.e. no Q,D,LATOMs)
|
||
PTSPNM Make atom X have a funny-pname
|
||
GETWDS Gets a pointer to a block of Y contiguous words in X (NIL if none)
|
||
|
||
FNDLIN Gets line with number Y in A, with Carry Set if found
|
||
LINPEK Get line-number X from body Y
|
||
GTFULN Get uline X from body Y
|
||
GTTULN Get uline X (NIL if comments) from body Y
|
||
ULNADV Advance function line X
|
||
|
||
TTKADV Advance token pointer X (NIL if comments)
|
||
TFKADV Advance token pointer X
|
||
SKPPTH Skips past a token or parenthesized expression
|
||
EXIFSC Skip an IF clause, returning with next token in X
|
||
|
||
EDTSTP Checks mode and argument token (error if not OK) for procedure definition
|
||
EXTEDT Cleans up from edit mode
|
||
|
||
STUFF Associates function body X with atom A
|
||
UNSTUF Unstuff Body Y of function X into text A
|
||
|
||
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 vA zero if toplevel brackets to be typed (for lists)
|
||
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 vANSN1
|
||
PONAMS Print out names
|
||
POFUNS Print out procedures, titles only if vA zero
|
||
POTEXT Print out function A, title only if vX zero
|
||
PTEXTX Print out function A, title only if ANSN2 zero
|
||
|
||
GTNUM2 Gets number and type vA from NARG2, returning Carry Clear if successful.
|
||
GTNUM1 Gets number and type vA from NARG1, returning Carry Clear if successful.
|
||
GTNXTK Get NEXTOK from TOKPTR
|
||
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
|
||
ATMTFX Get number NARG1 from X
|
||
ATMTXX Get number NARG1 from ANSN1
|
||
GTBOOL Checks if X is boolean, error if not, returns vY zero if TRUE
|
||
MAKPNM Get pname Y from X
|
||
CNSPDL Makes String from PDL, given length vANSN1 and return pointer on Proc. stack
|
||
GETPNM Get pname Y from atom X
|
||
CVFIX Converts four-byte fixnum NARG1 to characters on PDL
|
||
CVBFIX Converts two-byte fixnum X to characters on PDL
|
||
CVFLO Converts flonum NARG1 to characters on PDL
|
||
OTPFX1 Output two-byte fixnum Y to VPDL
|
||
OTPFL1 Output flonum NARG1 to VPDL
|
||
OTPFLO Output flonum Y to VPDL
|
||
OTPFIX Output fixnum X to VPDL
|
||
|
||
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 vA with optional args Y (first) and X (second)
|
||
ZAPMSG Types the error with code vANSN3
|
||
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
|
||
|
||
READLN Read and parse a line (no prompt) with pointer X, vY nonzero if error
|
||
PRDLIN Read and parse a line with pointer X, vY nonzero if error
|
||
DIGITP Returns Carry Set if vA is a digit
|
||
SLFDLP Returns Carry Set if vA (returned same) is self-delimiter; modifies char index vX
|
||
|
||
Number utility routines:
|
||
|
||
CNUML1 Parses a character vA of a number, returns Carry Clear if non-numeric.
|
||
CNUML2 Finishes parsing of a number, returns Carry Clear if non-numeric.
|
||
CLRNG1 Initializes parsing of a number.
|
||
XN1TOY Transfer NARG1 to Y.
|
||
XYTON1 Transfer Y to NARG1.
|
||
XN2TOY Transfer NARG2 to Y.
|
||
XYTON2 Transfer Y to NARG2.
|
||
NMROL1 Multiply NARG1 by 2.
|
||
NMROR1 Divide NARG1 by 2.
|
||
MULN10 Multiply flonum NARG1 by 10.
|
||
FDVD10 Divide flonum NARG1 by 10.
|
||
XDVD10 Divide fixnum NARG1 by 10.
|
||
ADDDIG Add ascii digit vA to fixnum NARG1.
|
||
FADDIG Add ascii digit vA to flonum NARG1, breaks out with Carry Clear if overflow.
|
||
FADDGX Add ascii digit vA to flonum NARG1, returns Carry Set if overflow.
|
||
FADDGN Add numerical decimal (<1) digit vA to flonum NARG1.
|
||
ADDNUM Add fixnum A1L to fixnum NARG1.
|
||
INCEXP Process an exponent character vA.
|
||
|
||
Floating-point Arithmetic routines:
|
||
FLOTN1 Make integer NARG1 floating-point.
|
||
FLOTN2 Make integer NARG2 floating-point.
|
||
XFLOAT Make positive integer NARG1 floating-point.
|
||
XINT1 Make flonum NARG1 a fixnum, error if overflow
|
||
XINT2 Make flonum NARG2 a fixnum, 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.
|
||
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 vA 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:
|
||
|
||
@ - indicates possible temporary-variable conflict
|
||
* - indicates apparent but nonexistent conflict
|
||
TEMPNH is the lowest-level temporary; there are no TEMPNH conflicts
|
||
GARCOL swaps temporary variables; there are no conflicts with GARCOL
|
||
() indicates dedicated subroutines; no temporary variable optimizations
|
||
|
||
First Level Routines:
|
||
|
||
BREAK1
|
||
CLRMRK
|
||
COMPL
|
||
DELETE ANSN TEMPN TEMPN1
|
||
DIGITP
|
||
EXTEDT
|
||
FNDLIN ANSN ANSN1 TEMPN TEMPN1
|
||
GETLEN TEMPN
|
||
GETNGS
|
||
GETPRC
|
||
GETVAL
|
||
GTFULN
|
||
GTLSTC ANSN
|
||
GTNXTK
|
||
INFIXP
|
||
LINPEK
|
||
POP
|
||
POPB
|
||
PTSPNM TEMPN
|
||
PUSH
|
||
PUSHP
|
||
PUTVAL
|
||
RESETT
|
||
STPPEK
|
||
TFKADV
|
||
TPCHR
|
||
TYPACS
|
||
XDIVID TEMPN TEMPN1
|
||
ULNADV
|
||
UNFUNC ANSN
|
||
VPOP
|
||
VPSTST
|
||
VPUSH
|
||
VPUSHP
|
||
|
||
Second-level Routines:
|
||
|
||
BREAK (BREAK1: )
|
||
ERNAMS TEMPN TEMPN1 TEMPN2 (PUTVAL: )
|
||
ERPROS TEMPN TEMPN1 (UNFUNC: ANSN)
|
||
GETTYP (TYPACS: )
|
||
|
||
(GW1: ANSN ANSN1 ANSN2 TEMPN TEMPN1 TEMPN2 TEMPN3 TEMPN4)
|
||
|
||
GETWDS ANSN* ANSN1* (GARCOL: ) (GW1: ANSN ANSN1 ANSN2 TEMPN TEMPN1 TEMPN2 TEMPN3 TEMPN4)
|
||
GTBOOL ANSN (VPOP: )
|
||
GTTULN (GTFULN: )
|
||
MARK ANSN TEMPN TEMPN1 TEMPN2 (POP: ) (PSHTST: ) (PUSH: ) (TYPACS: )
|
||
MARKX "
|
||
MARKA TEMPN (TYPACS: )
|
||
OTPRG1 (VPUSHP: )
|
||
PRTSTR (TPCHR: )
|
||
PSHTST (STPPEK: )
|
||
PUTTYP (TYPACS: )
|
||
RSTBND ANSN TEMPN TEMPN1 (POP: ) (PUTVAL: )
|
||
SOBST1 TEMPN (PUTTYP: )
|
||
TTKADV (TFKADV: )
|
||
TYPNUM ANSN TEMPN2 (POPB: ) (PUSH: ) (TPCHR: ) (XDIVID: TEMPN TEMPN1)
|
||
VPLFLS (VPUSHP: )
|
||
VPLTRU (VPUSHP: )
|
||
ZAPMSG ANSN3 (BREAK1: ) (PRTSTR: )
|
||
ZPC1 (BREAK1: ) (PRTSTR: )
|
||
|
||
Third-level Routines:
|
||
|
||
CONS ANSN (GARCOL: ) (PUTTYP: ) (VPUSHP: )
|
||
EDTSTP (GETTYP: ) (TFKADV: )
|
||
GARCOL ANSN1 TEMPN* TEMPN3 TEMPN4 (CLRMRK: ) (MARK: ANSN TEMPN TEMPN1 TEMPN2) (MARKA: TEMPN)
|
||
(TYPACS: ) (MARKX: ANSN TEMPN TEMPN1 TEMPN2)
|
||
GETFUN ANSN TEMPN (GETTYP: )
|
||
POPFRM (POP: ) (POPB: ) (RSTBND: ANSN TEMPN TEMPN1)
|
||
PTFTXT ANSN3 ANSNX TEMPN5 TEMPN6 TEMPN7 TEMPN8 (GETTYP: )
|
||
(GETWDS: ANSN ANSN1 ANSN2 TEMPN TEMPN1 TEMPN2 TEMPN3 TEMPN4) (PUTTYP: )
|
||
PUTFUN ANSN ANSN1 (GETTYP: )
|
||
SKPPTH ANSN TEMPN (TTKADV: )
|
||
|
||
Fourth-level Routines:
|
||
|
||
EXIFSC ANSN1 TEMPN1 (SKPPTH: ANSN TEMPN) (TTKADV: )
|
||
GETPNM TEMPN TEMPN1 TEMPN2 TEMPN3 (CONS: ANSN) (GETTYP: ) (POP: ) (PSHTST: ) (PUSH: )
|
||
INTRNX ANSN1 ANSN2 TEMPN TEMPN1 TEMPN2 (CONS: ANSN)
|
||
OTPNUM TEMPN (CONS: ANSN) (VPUSHP: )
|
||
STUFF ANSN3* ANSNX* TEMPN* TEMPN1* TEMPN2* TEMPN3* TEMPN5* TEMPN6* TEMPN7* TEMPX1 TEMPX2
|
||
(GETLEN: TEMPN) (GETWDS: ANSN ANSN1 ANSN2 TEMPN TEMPN1 TEMPN2 TEMPN3 TEMPN4)
|
||
(PTFTXT: ANSN ANSN1 ANSN2 ANSN3 ANSNX TEMPN TEMPN1 TEMPN2 TEMPN3 TEMPN4 TEMPN5
|
||
TEMPN6 TEMPN7 TEMPN8) (PUTTYP: )
|
||
PUTLIN ANSN2 TEMPN2 TEMPN3 (BREAK1: ) (CONS: ANSN) (FNDLIN: ANSN ANSN1 TEMPN TEMPN1) (ZPC1: )
|
||
UNSTUF ANSN1 ANSN2 TEMPN TEMPN1 TEMPN2 TEMPN3 TEMPN4 (CONS: ANSN) (GETTYP: ) (POP: )
|
||
(PSHTST: ) (PUSHP: ) (PUTTYP: )
|
||
|
||
Fifth-level Routines:
|
||
|
||
(GOBDIG: TEMPN6)
|
||
|
||
ATMTFX ANSN1 ANSN2 TEMPN4 TEMPN5 TEMPN6 (COMPL: ) (GETPNM: ANSN TEMPN TEMPN1 TEMPN2 TEMPN3)
|
||
(GOBDIG: TEMPN6)
|
||
ATMTXX "
|
||
DEFUN ANSN1* ANSN2* TEMPN1* TEMPN2* TEMPN3* TEMPN4* (CONS: ANSN) (GETTYP: )
|
||
(STUFF: ANSN ANSN1 ANSN2 ANSN3 ANSNX TEMPN TEMPN1 TEMPN2 TEMPN3 TEMPN4 TEMPN5
|
||
TEMPN6 TEMPN7 TEMPN8 TEMPX1 TEMPX2) (UNFUNC: ANSN) (VPOP: ) (VPUSHP: )
|
||
EDLINE ANSN1* TEMPN2* TEMPN3* TEMPN4 (PUTLIN: ANSN ANSN1 ANSN2 TEMPN TEMPN1 TEMPN2 TEMPN3)
|
||
(PUTTYP: )
|
||
INTERN ANSN1 ANSN2 TEMPN1* TEMPN4 TEMPN5 (CONS: ANSN)
|
||
(GETPNM: ANSN TEMPN TEMPN1 TEMPN2 TEMPN3) (VPUSHP: ) (VPOP: )
|
||
|
||
(MKPNAD: ANSN2 TEMPN3 TEMPN4 (CONS: ANSN))
|
||
|
||
MAKPNM ANSN* ANSN1 ANSN2 ANSN3 TEMPN2* TEMPN3* TEMPN4 (CONS: ANSN)
|
||
(GETPNM: ANSN TEMPN TEMPN1 TEMPN2 TEMPN3) (GETTYP: )
|
||
(MKPNAD: ANSN ANSN2 TEMPN3 TEMPN4) (VPOP: ) (VPUSHP: ) (XDIVID: TEMPN TEMPN1)
|
||
|
||
(MKSFUN: TEMPN1 (CONS: ANSN))
|
||
(SOBST1: TEMPN)
|
||
|
||
REINIT ANSN* ANSN2* ANSN3 TEMPN* TEMPN1* TEMPN2* TEMPN3 (CONS: ANSN)
|
||
(INTRNX: ANSN ANSN1 ANSN2 TEMPN TEMPN1 TEMPN2) (MKSFUN: ANSN TEMPN1) (SOBST1: TEMPN)
|
||
|
||
Sixth-level Routines:
|
||
|
||
GETNUM ANSN1* (ATMTXX: ANSN ANSN1 ANSN2 TEMPN TEMPN1 TEMPN2 TEMPN3 TEMPN4 TEMPN5 TEMPN6)
|
||
(GETTYP: )
|
||
|
||
(TPSATM: ANSN TEMPN5 (TPCHR: ))
|
||
(TYPATM: ANSN* TEMPN5 (GETPNM: ANSN TEMPN TEMPN1 TEMPN2 TEMPN3) (TPCHR: ))
|
||
|
||
LTYPE TEMPN4 TEMPN5 (BREAK: ) (PSHTST: ) (POP: ) (PUSH: ) (PUSHP: ) (TPCHR: )
|
||
(TPSATM: ANSN TEMPN5) (TYPATM: ANSN TEMPN TEMPN1 TEMPN2 TEMPN3 TEMPN5)
|
||
(TYPNUM: ANSN TEMPN TEMPN1 TEMPN2)
|
||
|
||
(ALLSTC: TEMPN TEMPX2 (CONS: ANSN))
|
||
(DIGITP: )
|
||
(GETLIN: )
|
||
(SLFDLP: ANSN3 TEMPN4.H TEMPN8.L)
|
||
|
||
PRDLIN ANSN3 ANSNX TEMPN1 TEMPN4.H TEMPN5 TEMPN6 TEMPN7 TEMPN8 TEMPX1 TEMPX2
|
||
(ALLSTC: ANSN TEMPN TEMPX2) (BREAK1: ) (CONS: ANSN) (DIGITP: ) (GETLIN: )
|
||
(INTERN: ANSN ANSN1 ANSN2 TEMPN TEMPN1 TEMPN2 TEMPN3 TEMPN4 TEMPN5)
|
||
(POP: ) (PRTSTR: ) (PTSPNM: TEMPN) (PUSH: ) (PUTTYP: )
|
||
(SLFDLP: ANSN3 TEMPN4.H TEMPN8.L) (TPCHR: )
|
||
READLN "
|
||
|
||
Seventh-level Routines:
|
||
|
||
ERROR ANSN1 ANSN2 ANSN3* TEMPN8 (BREAK1: ) (LTYPE: ANSN TEMPN TEMPN1 TEMPN2 TEMPN3 TEMPN4
|
||
TEMPN5) (PRTSTR: ) (TPCHR: ) (TYPNUM: ANSN TEMPN TEMPN1 TEMPN2) (ZAPMSG: ANSN3)
|
||
GT1NUM (GETNUM: ANSN ANSN1 ANSN2 TEMPN TEMPN1 TEMPN2 TEMPN3 TEMPN4 TEMPN5 TEMPN6) (VPOP: )
|
||
GT2NUM ANSN3 (GETNUM: ANSN ANSN1 ANSN2 TEMPN TEMPN1 TEMPN2 TEMPN3 TEMPN4 TEMPN5 TEMPN6)
|
||
(VPOP: ) (XFLOAT)
|
||
POTEXT ANSN1 ANSN2 TEMPN6 TEMPN7 TEMPN8 TEMPX1 (BREAK1: ) (GETFUN: ANSN TEMPN) (GETTYP: )
|
||
(LTYPE: ANSN TEMPN TEMPN1 TEMPN2 TEMPN3 TEMPN4 TEMPN5)
|
||
(PRTSTR: ) (TPCHR: ) (TYPNUM: ANSN TEMPN TEMPN1 TEMPN2)
|
||
PTEXTX "
|
||
|
||
Eighth-level Routines:
|
||
|
||
POFUNS ANSN2* TEMPX2 (PTEXTX: ANSN ANSN1 ANSN2 TEMPN TEMPN1 TEMPN2 TEMPN3 TEMPN4 TEMPN5
|
||
TEMPN6 TEMPN7 TEMPN8 TEMPX1)
|
||
|
||
(PON1: TEMPN6 TEMPN7 (BREAK1: ) (GETTYP: ) (GETVAL: )
|
||
(LTYPE: ANSN TEMPN TEMPN1 TEMPN2 TEMPN3 TEMPN4 TEMPN5) (PRTSTR: ) (TPCHR: ))
|
||
|
||
PONAMS TEMPN6 TEMPN8 (PON1: ANSN TEMPN TEMPN1 TEMPN2 TEMPN3 TEMPN4 TEMPN5 TEMPN6 TEMPN7)
|
||
|
||
Bottom-level Routines (not called as subroutines):
|
||
|
||
AL2 ANSN (POP: ) (POPB: )
|
||
ARGLOP ANSN (PUSH: ) (PUSHP: )
|
||
EVAL TEMPN (GETVAL: )
|
||
EVLINE TEMPN (GETTYP: ) (TTKADV: )
|
||
EVWRAP ANSN2 (GTNXTK: ) (PUSH: ) (PUSHP: ) (TTKADV: )
|
||
INITLZ TEMPN (CLRMRK: )
|
||
POPJ (POP: )
|
||
SBOTH ANSN1 (GTBOOL: ANSN) (VPLFLS: ) (VPLTRU: )
|
||
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) (OTPRG1: ) (VPOP: ) (VPUSHP: )
|
||
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) (POPJ: ) (VPOP: ) (VPUSHP: )
|
||
SDEFIN TEMPN* (DEFUN: ANSN ANSN1 ANSN2 ANSN3 ANSNX TEMPN TEMPN1 TEMPN2 TEMPN3 TEMPN4 TEMPN5
|
||
TEMPN6 TEMPN7 TEMPN8 TEMPX1 TEMPX2) (GETTYP: ) (VPOP: )
|
||
SDIF TEMPN1* (GT2NUM: ANSN ANSN1 ANSN2 TEMPN TEMPN1 TEMPN2 TEMPN3 TEMPN4 TEMPN5 TEMPN6)
|
||
(OTPNUM: ANSN TEMPN)
|
||
SDIVID ANSN* (COMPL: ) (GT2NUM: ANSN ANSN1 ANSN2 TEMPN TEMPN1 TEMPN2 TEMPN3 TEMPN4 TEMPN5
|
||
TEMPN6) (OTPNUM: ANSN TEMPN) (XDIVID: TEMPN TEMPN1)
|
||
SEDIT TEMPN1* TEMPN5* TEMPX1 (EDTSTP: ) (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) (VPLFLS: ) (VPLTRU: )
|
||
SELSE TEMPN2 (EXIFSC: ANSN ANSN1 TEMPN TEMPN1)
|
||
SEQUAL ANSN* ANSN1* TEMPN7 TEMPN8 (GETNUM: ANSN ANSN1 ANSN2 TEMPN TEMPN1 TEMPN2 TEMPN3 TEMPN4
|
||
TEMPN5 TEMPN6) (GETTYP: ) (POP: ) (PSHTST: ) (PUSH: ) (PUSHP: ) (VPOP: ) (VPUSHP: )
|
||
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) (OTPRG1: ) (VPOP: )
|
||
SGO TEMPN TEMPN1 (GETTYP: ) (GTTULN: ) (PUTTYP: ) (STPPEK: ) (TTKADV: ) (ULNADV: ) (VPOP: )
|
||
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) (OTPRG1: ) (VPOP: )
|
||
SLPUT TEMPN TEMPN1 TEMPN2 (CONS: ANSN) (GETTYP: ) (OTPRG1: ) (VPOP: ) (VPUSHP: )
|
||
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* (COMPL: ) (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) (VPOP: ) (VPUSHP: )
|
||
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 (BREAK1: )
|
||
(LTYPE: ANSN TEMPN TEMPN1 TEMPN2 TEMPN3 TEMPN4 TEMPN5) (PRTSTR: ) (TPCHR: )
|
||
|
||
(COPY: ANSN1 TEMPN TEMPN1 TEMPN2 (CONS: ANSN) (VPOP: ) (VPUSHP: ))
|
||
(CONCAT: ANSN1* TEMPN* TEMPN1* TEMPN3 TEMPN4 TEMPN5 (GTLSTC: ANSN)
|
||
(COPY: ANSN ANSN1 TEMPN TEMPN1 TEMPN2))
|
||
|
||
SWORD ANSNX TEMPN6 (CONCAT: ANSN ANSN1 TEMPN TEMPN1 TEMPN2 TEMPN3 TEMPN4 TEMPN5)
|
||
(INTERN: ANSN ANSN1 ANSN2 TEMPN TEMPN1 TEMPN2 TEMPN3 TEMPN4 TEMPN5)
|
||
(MAKPNM: ANSN ANSN1 ANSN2 ANSN3 TEMPN TEMPN1 TEMPN2 TEMPN3 TEMPN4) (OTPRG1: )
|
||
|
||
TOPLOP TEMPN (GETTYP: )
|
||
XSFNCL TEMPN
|
||
|
||
(INCVSP: )
|
||
(PTRDEC: TEMPN5)
|
||
(PTVTST: TEMPN5)
|
||
(STPTR1: TEMPN5)
|
||
|
||
XTAIL TEMPN2 TEMPN3 TEMPN4 TEMPN5 (GETVAL: ) (GTTULN: ) (INCVSP:) (PTRDEC: TEMPN5)
|
||
(PTVTST: TEMPN5) (PUSH: ) (PUSHP: ) (PUTVAL: ) (STPTR1: TEMPN5) (TTKADV: )
|
||
XUFNCL TEMPN TEMPN1 TEMPN2 TEMPN5 (GETVAL: ) (GETTYP: ) (GTTULN: ) (INCVSP:) (LINPEK: )
|
||
(PSHTST: ) (PTRDEC: TEMPN5) (PTVTST: TEMPN5) (PUSH: ) (PUSHP: ) (PUTVAL: )
|
||
(STPTR1: TEMPN5) (TTKADV: )
|
||
|
||
Other Routines (unwritten, etc.):
|
||
|
||
XFLOAT
|
||
XINT
|
||
XFCOMP
|