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

511 lines
19 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.

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