1
0
mirror of https://github.com/PDP-10/its.git synced 2026-02-27 01:09:49 +00:00

Apple II Logo.

Written by:
- Stephen L. Hain
- Patrick G. Sobalvarro
- Leigh L. Klotz.
This commit is contained in:
Lars Brinkhoff
2018-09-16 20:04:10 +02:00
parent 29c3f217ea
commit d536b228ac
8 changed files with 14961 additions and 2 deletions

View File

@@ -25,11 +25,12 @@ SRC = system syseng sysen1 sysen2 sysen3 sysnet kshack dragon channa \
tensor transl wgd zz graphs lmlib pratt quux scheme gsb ejs mudsys \
draw wl taa tj6 budd sharem ucode rvb kldcp math as imsrc gls demo \
macsym lmcons dmcg hack hibou agb gt40 rug maeda ms kle aap common \
fonts zork 11logo kmp info
fonts zork 11logo kmp info aplogo
DOC = info _info_ sysdoc sysnet syshst kshack _teco_ emacs emacs1 c kcc \
chprog sail draw wl pc tj6 share _glpr_ _xgpr_ inquir mudman system \
xfont maxout ucode moon acount alan channa fonts games graphs humor \
kldcp libdoc lisp _mail_ midas quux scheme manual wp chess ms macdoc
kldcp libdoc lisp _mail_ midas quux scheme manual wp chess ms macdoc \
aplogo
BIN = sys1 sys2 emacs _teco_ lisp liblsp alan inquir sail comlap c decsys \
moon graphs draw datdrw fonts fonts1 fonts2 games macsym maint imlac \
_www_ hqm

View File

@@ -1160,6 +1160,13 @@ respond "*" ":plx143 /H/M/CL BIN,N CREF_SYSTEM,TYI,READ,EVAL,TURTLE,ZEND\r"
respond "ASSSW=" "0\r"
expect ":KILL"
# Apple II Logo
respond "*" ":cwd aplogo\r"
respond "*" ":cross\r"
respond "*" "logo,logo=logo\r"
respond "*" "\003"
respond "*" ":kill\r"
# TENTH, toy Forth for KS10.
respond "*" ":midas .; @ tenth_aap; tenth\r"
expect ":KILL"

790
doc/aplogo/apldoc.1 Normal file
View File

@@ -0,0 +1,790 @@
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

14
doc/aplogo/apple.help Normal file
View File

@@ -0,0 +1,14 @@
LOGO BOOT DISK:
1. Boot DOS 3.2.1 Master, as normally done
2. Enter monitor
3. do 9E42: 34<cr> (Should print out 06) to tell DOS to do BRUN instead of RUN on boot.
4. do 3D0G<cr> (Enters BASIC)
5. Type in 1 END or somesuch dummy program.
6. Type INIT LOGO with any otpions desired (Volume, Drive, etc.). Do not type <cr>.
7. Put in blank disk that you want to be LOGO Boot disk.
8. Press <cr> to initialize new disk.
9. Do DELETE LOGO to delete BASIC dummy program.
10. Do BSAVE LOGO with specified adresses.
Booting the Boot disk will now run LOGO automatically.

510
doc/aplogo/doc.187 Normal file
View File

@@ -0,0 +1,510 @@
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

186
doc/aplogo/usage.doc Normal file
View File

@@ -0,0 +1,186 @@
APPLE LOGO Usage documentation:
Arguments:
{word} must evaluate to a (quoted) word or a number
{list} must evaluate to a list
{word/list} must evaluate to either a {word} or a {list} as defined above
{number} must evaluate to a number or a word which is a legal number
{boolean} must evaluate to "TRUE or "FALSE
Categories:
Quantifier Graphics Editor Screen Editor
Word/List Control System Workspace
Comment Input Output Boolean
Infix Boolean Filing Exit Arithmetic
Infix Arithmetic Prefix Arithmetic
Command/Abbreviation/Inputs/Type:
ALL Quantifier
BACK BK {number} Graphics
BOTH {boolean} {boolean} Boolean
BUTFIRST BF {word/list} Word/List
BUTLAST BL {word/list} Word/List
CHANGE CHG Editor
This is the original procedure editor. It gives the ">" prompt
and requires END to terminate. Commands such as PO and ER are
executed immediately, unless they are on numbered lines.
CLEAR Output
Clears the text screen and homes the input cursor.
CLEARINPUT Input
Clears the input character buffer. Useful for programs which use
real-time keyboard input.
CLEARSCREEN CS Graphics
Clears the graphics screen, homes and shows the turtle. Inititates
graphics mode if necessary (mixed text/graphics).
CONTINUE CO Control
CURSOR {number} {number} Output
Takes column, row as input and positions the input cursor there.
Columns are 0-39, rows are 0-23.
DEFINE DE {word} {list} Workspace
DELETE {word} Filing
Deletes a file from the disk.
DIFFERENCE {number} {number} Arithmetic
EDIT ED Screen Editor
Enters the screen editor with a given procedure.
EITHER {boolean} {boolean} Boolean
ELSE Control
EMPTY? {word/list} Boolean
END Editor
EQUAL? {word/list} {word/list} Boolean
ERASE ER Workspace
FIRST {word/list} Word/List
FORWARD FD {number} Graphics
FPUT Word/List
FULL Graphics
In graphics mode, gives full graphics screen. Complementary to MIX.
Equivalent to interrupt character Control-F.
GO {word} Control
GOODBYE Exit
GREATER? {number} {number} Boolean
HEADING Graphics
HIDETURTLE HT Graphics
HOME Graphics
IF Control
INTEGER INT {number} Arithmetic
LAST {word/list} Word/List
LEFT LT {number} Graphics
LESS? {number} {number} Boolean
LIST Variable number of {word/list}'s - 2 default Word/List
LIST? {word/list} Boolean
LPUT {word/list} {list} Word/List
MAKE {word} {word/list} Workspace
MIX Graphics
In graphics mode, gives mixed text/graphics screen. Complementary to
FULL. Equivalent to interrupt character Control-L.
NAMES Quantifier
NODISPLAY ND Graphics
Exits graphics mode, giving a clear text page with the cursor homed.
NOT {boolean} Boolean
NUMBER? {word/list} Boolean
OUTPUT OP {word/list} Control
PAUSE Control
Stops execution and allows input to be evaluated. Equivalent to interrupt
character Control-Z. Execution is resumed with CONTINUE, provided no errors
have occured.
PENDOWN PD Graphics
PENUP PU Graphics
POTS Workspace
PRINT PR Variable number of {word/list}'s - 1 default Output
PRINT1 Variable number of {word/list}'s - 1 default Output
Like PRINT, but does not terminate the output line.
PRINTOUT PO Workspace
PROCEDURES Quantifier
PRODUCT {number} {number} Arithmetic
QUOTIENT {number} {number} Arithmetic
RANDOM Arithmetic
Returns a random number 0-9. Identical seeds will give repeatable
sequences of random numbers. See RANDOMIZE.
RANDOMIZE Arithmetic
Randomizes the seed for RANDOM. The seed can also be initialized
in certain cases by depositing into the RNDL and RNDH memory locations.
READ {word} Filing
Reads a file from disk. See the Filing comments. Destroys any graphics
display.
READCHARACTER RC Input
Outputs the least recent character in the character buffer, or if empty,
waits for an input character.
REPEAT {number} {list} Control
REQUEST RQ Input
RETRIEVE Screen Editor
Re-enters the editor with the previous buffer's contents if they are still
retrievable (i.e., no graphics or filing has been done since the last
screen editor session, provided there was a previous one). Useful if
an error occurred while the contents of the edit buffer were being evaluated.
RIGHT RT {number} Graphics
RUN {list} Control
SAVE {word} Filing
Saves the contents of the workspace on disk. See the Filing comments. Destroys
any graphics display.
SENTENCE SE Variable number of {word/list}'s - 2 default Word/List
SETHEADING SETH {number} Graphics
SETTURTLE SETT {list} Graphics
Sets the turtle according to a variable-length list of elements. First
element is XCOR, then YCOR, then HEADING, then "TRUE or "FALSE for
show or hide turtle, then "TRUE or "FALSE for pen down or pen up.
Complementary to TURTLESTATE.
SETX {number} Graphics
SETXY {number} {number} Graphics
SETY {number} Graphics
SHOWTURTLE ST Graphics
STOP Control
SUM {number} {number} Arithmetic
TEXT {word} Workspace
THEN Control
THING {word} Workspace
THING? {word} Boolean
TITLE TI Editor
TITLES Quantifier
TO Screen Editor
Procedure definition primitive. Enters the Screen Editor. Destroys
any graphics display.
TRACEBACK TB Debugging
TURTLESTATE TS Graphics
Returns a list of five elements. First is XCOR, then YCOR, then HEADING,
then "TRUE or "FALSE for shown or hidden turtle, then "TRUE or "FALSE for
pen down or pen up. Complementary to SETTURTLE.
WORD Variable number of {word}'s - 2 default Word/List
WORD? {word/list} Boolean
XCOR Graphics
YCOR Graphics
( Syntax
) Syntax
* {number} * {number} Infix Arithmetic
+ {number} + {number} Infix Arithmetic
+ {number} Prefix Arithmetic
- {number} - {number} Infix Arithmetic
- {number} Prefix Arithmetic
.BPT System
Breaks out of LOGO into the LOGO monitor. See the LOGO Monitor comments.
Control-B breaks from LOGO monitor into ROM Monitor, and then another
Control-B will enter BASIC. The RESET key should be pressed upon entering
BASIC after using LOGO, to reinitialize certain BASIC parameters.
.CALL {number} System
Calls a machine language subroutine anyplace in memory, which is expected
to do an RTS or a JMP to the POPJ label.
.DEPOSIT {number} {number} System
Deposits byte of data at a memory location.
.EXAMINE {number} System
Returns the value of the byte at the specified address.
.GCOLL System
.NODES System
/ {number} / {number} Infix Arithmetic
; Comment
< {number} < {number} Infix Boolean
= {word/list} = {word/list} Infix Boolean
> {number} > {number} Infix Boolean
Interrupt characters:
Control-G Stops execution and returns control to toplevel.
Control-Z Stops execution and allows input to be evaluated (see PAUSE).
Control-S Stops screen output - typing any character will resume output.
Control-F In graphics mode, displays a full screen of graphics (see FULL).
Control-L In graphics mode, displays a mixed text/graphics screen (see MIX).

View File

@@ -13,6 +13,7 @@
- ADV350, 350-point Adventure.
- ADV448, 448-point Adventure.
- ANIMAL, an animal guessing game.
- APLOGO, Apple II Logo.
- AR, PDP-11 debugger.
- ARCCPY, copies an old-format archive, converting to new format.
- ARCDEV, transparent file system access to archive files.

13450
src/aplogo/logo.958 Normal file

File diff suppressed because it is too large Load Diff