diff --git a/books/bookvol5.pamphlet b/books/bookvol5.pamphlet
index 01a67c6..d8aa17e 100644
--- a/books/bookvol5.pamphlet
+++ b/books/bookvol5.pamphlet
@@ -9351,7 +9351,6 @@ returning the token-dq and the rest of the line-stream
\calls{scanToken}{scanWord}
\calls{scanToken}{scanSpace}
\calls{scanToken}{scanString}
-\calls{scanToken}{digit?}
\calls{scanToken}{scanNumber}
\calls{scanToken}{scanEscape}
\calls{scanToken}{scanError}
@@ -9616,7 +9615,6 @@ To pair badge and badgee
\end{chunk}
\defun{scanPossFloat}{scanPossFloat}
-\calls{scanPossFloat}{digit?}
\calls{scanPossFloat}{lfkey}
\calls{scanPossFloat}{spleI}
\calls{scanPossFloat}{scanExponent}
@@ -10542,6 +10540,7 @@ where head is either an id or (id . alist)
\defun{npEqKey}{Advance over a keyword}
Test for the keyword, if found advance the token stream
+
\calls{npEqKey}{npNext}
\usesdollar{npEqKey}{ttok}
\usesdollar{npEqKey}{stok}
@@ -13561,6 +13560,7 @@ carrier[ptree,...] -> carrier[ptree, ptreePremacro,...]
\defun{mac0MLambdaApply}{mac0MLambdaApply}
\tpdhere{The pform function has a leading percent sign. fix this}
+
\calls{mac0MLambdaApply}{pf0MLambdaArgs}
\calls{mac0MLambdaApply}{pfMLambdaBody}
\calls{mac0MLambdaApply}{pfSourcePosition}
@@ -13630,6 +13630,7 @@ carrier[ptree,...] -> carrier[ptree, ptreePremacro,...]
\defun{mac0InfiniteExpansion}{mac0InfiniteExpansion}
\tpdhere{The pform function has a leading percent sign. fix this}
+
\calls{mac0InfiniteExpansion}{mac0InfiniteExpansion,name}
\calls{mac0InfiniteExpansion}{ncSoftError}
\calls{mac0InfiniteExpansion}{pform}
@@ -13670,6 +13671,7 @@ carrier[ptree,...] -> carrier[ptree, ptreePremacro,...]
\defun{mac0GetName}{mac0GetName}
Returns [state, body] or NIL.
Returns [sy, state] or NIL.
+
\calls{mac0GetName}{pfMLambdaBody}
\usesdollar{mac0GetName}{pfMacros}
\begin{chunk}{defun mac0GetName}
@@ -16058,7 +16060,7 @@ output is an old-parser-style s-expression.
\defun{pf2Sex1}{Pftree to s-expression translation inner function}
\calls{pf2Sex1}{pfNothing?}
-\calls{pf2Sex1}{pfSymbol?}
+\calls{pf2Sex1}{pfSymbol?}
\calls{pf2Sex1}{pfSymbolSymbol}
\calls{pf2Sex1}{pfLiteral?}
\calls{pf2Sex1}{pfLiteral2Sex}
@@ -17562,6 +17564,7 @@ column t is the number of spaces before the first non-space in line t
\defun{pileCforest}{pileCforest}
Only enpiles forests with $>=2$ trees
+
\calls{pileCforest}{tokPart}
\calls{pileCforest}{enPile}
\calls{pileCforest}{separatePiles}
@@ -17641,6 +17644,7 @@ The dqUnit makes a unit dq i.e. a dq with one item, from the item
\defun{dqConcat}{dqConcat}
The dqConcat function concatenates a list of dq's, destroying all but the last
+
\calls{dqConcat}{dqAppend}
\calls{dqConcat}{dqConcat}
\begin{chunk}{defun dqConcat}
@@ -17756,16 +17760,17 @@ This is called in only one place, the incLine1 function.
\defun{msgCreate}{msgCreate}
\begin{verbatim}
-msgObject tag -- catagory of msg
- -- attributes as a-list
- 'imPr => dont save for list processing
- toWhere, screen or file
- 'norep => only display once in list
- pos -- position with possible FROM/TO tag
- key -- key for message database
- argL -- arguments to be placed in the msg test
- prefix -- things like "Error: "
- text -- the actual text
+msgObject
+ tag -- catagory of msg
+ -- attributes as a-list
+ 'imPr => dont save for list processing
+ toWhere, screen or file
+ 'norep => only display once in list
+ pos -- position with possible FROM/TO tag
+ key -- key for message database
+ argL -- arguments to be placed in the msg test
+ prefix -- things like "Error: "
+ text -- the actual text
\end{verbatim}
\calls{msgCreate}{setMsgForcedAttrList}
\calls{msgCreate}{putDatabaseStuff}
@@ -17784,95 +17789,106 @@ msgObject tag -- catagory of msg
\end{chunk}
-\defun{getMsgPosTagOb}{getMsgPosTagOb}
-\begin{chunk}{defun getMsgPosTagOb 0}
-(defun |getMsgPosTagOb| (msg) (elt msg 1))
+\defmacro{getMsgPosTagOb}
+\begin{chunk}{defmacro getMsgPosTagOb 0}
+(defmacro |getMsgPosTagOb| (msg)
+ `(elt ,msg 1))
\end{chunk}
-\defun{getMsgKey}{getMsgKey}
-\begin{chunk}{defun getMsgKey 0}
-(defun |getMsgKey| (msg) (elt msg 2))
+\defmacro{getMsgKey}
+\begin{chunk}{defmacro getMsgKey 0}
+(defmacro |getMsgKey| (msg)
+ `(elt ,msg 2))
\end{chunk}
-\defun{getMsgArgL}{getMsgArgL}
-\begin{chunk}{defun getMsgArgL 0}
-(defun |getMsgArgL| (msg) (elt msg 3))
+\defmacro{getMsgArgL}
+\begin{chunk}{defmacro getMsgArgL 0}
+(defmacro |getMsgArgL| (msg)
+ `(elt ,msg 3))
\end{chunk}
-\defun{getMsgPrefix}{getMsgPrefix}
-\begin{chunk}{defun getMsgPrefix 0}
-(defun |getMsgPrefix| (msg) (elt msg 4))
+\defmacro{getMsgPrefix}
+\begin{chunk}{defmacro getMsgPrefix 0}
+(defmacro |getMsgPrefix| (msg)
+ `(elt ,msg 4))
\end{chunk}
-\defun{setMsgPrefix}{setMsgPrefix}
-\begin{chunk}{defun setMsgPrefix 0}
-(defun |setMsgPrefix| (msg val) (setf (elt msg 4) val))
+\defmacro{setMsgPrefix}
+\begin{chunk}{defmacro setMsgPrefix 0}
+(defmacro |setMsgPrefix| (msg val)
+ `(setf (elt ,msg 4) ,val))
\end{chunk}
-\defun{getMsgText}{getMsgText}
-\begin{chunk}{defun getMsgText 0}
-(defun |getMsgText| (msg) (elt msg 5))
+\defmacro{getMsgText}
+\begin{chunk}{defmacro getMsgText 0}
+(defmacro |getMsgText| (msg)
+ `(elt ,msg 5))
\end{chunk}
-\defun{setMsgText}{setMsgText}
-\begin{chunk}{defun setMsgText 0}
-(defun |setMsgText| (msg val)
- (setf (elt msg 5) val))
+\defmacro{setMsgText}
+\begin{chunk}{defmacro setMsgText 0}
+(defmacro |setMsgText| (msg val)
+ `(setf (elt ,msg 5) ,val))
\end{chunk}
-\defun{getMsgPrefix?}{getMsgPrefix?}
-\begin{chunk}{defun getMsgPrefix? 0}
-(defun |getMsgPrefix?| (msg)
- (let ((pre (|getMsgPrefix| msg)))
- (unless (eq pre '|noPre|) pre)))
+\defmacro{getMsgPrefix?}
+\begin{chunk}{defmacro getMsgPrefix? 0}
+(defmacro |getMsgPrefix?| (msg)
+ `(let ((pre (|getMsgPrefix| ,msg)))
+ (unless (eq pre '|noPre|) pre)))
\end{chunk}
-\defun{getMsgTag}{getMsgTag}
+\defmacro{getMsgTag}
The valid message tags are:
line, old, error, warn, bug, unimple, remark, stat, say, debug
+
\calls{getMsgTag}{ncTag}
-\begin{chunk}{defun getMsgTag 0}
-(defun |getMsgTag| (msg) (|ncTag| msg))
+\begin{chunk}{defmacro getMsgTag 0}
+(defmacro |getMsgTag| (msg)
+ `(|ncTag| ,msg))
\end{chunk}
-\defun{getMsgTag?}{getMsgTag?}
+\defmacro{getMsgTag?}
\calls{getMsgTag?}{IFCAR}
\calls{getMsgTag?}{getMsgTag}
-\begin{chunk}{defun getMsgTag? 0}
-(defun |getMsgTag?| (|msg|)
- (ifcar (member (|getMsgTag| |msg|)
+\begin{chunk}{defmacro getMsgTag? 0}
+(defmacro |getMsgTag?| (msg)
+ `(ifcar (member (|getMsgTag| ,msg)
(list '|line| '|old| '|error| '|warn| '|bug|
'|unimple| '|remark| '|stat| '|say| '|debug|))))
\end{chunk}
-\defun{line?}{line?}
+\defmacro{line?}
\calls{line?}{getMsgTag}
-\begin{chunk}{defun line?}
-(defun |line?| (msg) (eq (|getMsgTag| msg) '|line|))
+\begin{chunk}{defmacro line?}
+(defmacro |line?| (msg)
+ `(eq (|getMsgTag| ,msg) '|line|))
\end{chunk}
-\defun{leader?}{leader?}
+\defmacro{leader?}
\calls{leader?}{getMsgTag}
-\begin{chunk}{defun leader?}
-(defun |leader?| (msg) (eq (|getMsgTag| msg) '|leader|))
+\begin{chunk}{defmacro leader?}
+(defmacro |leader?| (msg)
+ `(eq (|getMsgTag| ,msg) '|leader|))
\end{chunk}
-\defun{toScreen?}{toScreen?}
+\defmacro{toScreen?}
\calls{toScreen?}{getMsgToWhere}
-\begin{chunk}{defun toScreen?}
-(defun |toScreen?| (msg) (not (eq (|getMsgToWhere| msg) '|fileOnly|)))
+\begin{chunk}{defmacro toScreen?}
+(defmacro |toScreen?| (msg)
+ `(not (eq (|getMsgToWhere| ,msg) '|fileOnly|)))
\end{chunk}
@@ -17880,6 +17896,7 @@ line, old, error, warn, bug, unimple, remark, stat, say, debug
Messages for the USERS of the compiler.
The program being compiled has a minor error.
Give a message and continue processing.
+
\calls{ncSoftError}{desiredMsg}
\calls{ncSoftError}{processKeyedError}
\calls{ncSoftError}{msgCreate}
@@ -17898,6 +17915,7 @@ Give a message and continue processing.
\defun{ncHardError}{ncHardError}
The program being compiled is seriously incorrect.
Give message and throw to a recovery point.
+
\calls{ncHardError}{desiredMsg}
\calls{ncHardError}{processKeyedError}
\calls{ncHardError}{msgCreate}
@@ -18369,6 +18387,7 @@ org prints out the word noposition or console
\defun{setMsgCatlessAttr}{setMsgCatlessAttr}
\tpdhere{Changed from |catless| to '|catless|}
+
\calls{setMsgCatlessAttr}{ncPutQ}
\calls{setMsgCatlessAttr}{ifcdr}
\calls{setMsgCatlessAttr}{qassq}
@@ -18476,8 +18495,9 @@ org prints out the word noposition or console
\end{chunk}
-\defun{ncBug}{ncBug}
+\defun{ncBug}{Report a bug in the compiler}
Bug in the compiler: something which shouldn't have happened did.
+
\calls{ncBug}{processKeyedError}
\calls{ncBug}{msgCreate}
\calls{ncBug}{enable-backtrace}
@@ -18856,6 +18876,7 @@ makeLeaderMsg chPosList ==
\defun{posPointers}{posPointers}
\tpdhere{getMsgFTTag is nonsense}
+
\calls{posPointers}{poCharPosn}
\calls{posPointers}{getMsgPos}
\calls{posPointers}{IFCAR}
@@ -20401,6 +20422,7 @@ Pick off the property list
\defun{ncEltQ}{ncEltQ}
Get the entry for key k on x's association list
+
\calls{ncEltQ}{qassq}
\calls{ncEltQ}{ncAlist}
\calls{ncEltQ}{ncBug}
@@ -20719,6 +20741,7 @@ The isPartialMode function tests whether m contains \verb|$EmptyMode|. The
constant \verb|$EmptyMode| evaluates to \verb?|$EmptyMode|?. This constant
is inserted in a modemap during compile time if the modemap is not yet
complete.
+
\calls{isPartialMode}{contained}
\refsdollar{isPartialMode}{EmptyMode}
\begin{chunk}{defun isPartialMode}
@@ -21001,6 +21024,7 @@ needs s0 similar to hasSig.
\defun{hasAttSig}{hasAttSig}
The argument d is domain, x is a list of attributes and signatures.
The result is an augmented SL, if d has x, 'failed otherwise.
+
\calls{hasAttSig}{hasAtt}
\calls{hasAttSig}{hasSig}
\calls{hasAttSig}{keyedSystemError}
@@ -21182,6 +21206,7 @@ The first argument is a pattern variable, which is not substituted by sl
\defun{containsVars}{containsVars}
The function containsVars tests whether term t contains a * variable.
+
\calls{containsVars}{isPatternVar}
\calls{containsVars}{containsVars1}
\begin{chunk}{defun containsVars}
@@ -21206,6 +21231,7 @@ The function containsVars tests whether term t contains a * variable.
\defun{containsVars1}{containsVars1}
The function containsVars1 tests whether term t contains a * variable.
This is a recursive version, which works on a list.
+
\calls{containsVars1}{isPatternVar}
\calls{containsVars1}{containsVars1}
\begin{chunk}{defun containsVars1}
@@ -21222,6 +21248,7 @@ This is a recursive version, which works on a list.
\defun{hasCaty1}{hasCaty1}
The cond is either a (has a b) or an OR clause of such conditions.
SL is augmented, if cond is true, otherwise the result is 'failed
+
\calls{hasCaty1}{hasCate}
\calls{hasCaty1}{hasCaty1}
\calls{hasCaty1}{keyedSystemError}
@@ -21347,6 +21374,7 @@ SL is augmented, if cond is true, otherwise the result is 'failed
The variable v is a pattern variable, dom is its binding under \verb|$Subst|.
We try to change dom so that it has category cat under sl.
The result is a substitution list or 'failed.
+
\calls{hasCateSpecial}{eqcar}
\calls{hasCateSpecial}{isSubDomain}
\calls{hasCateSpecial}{canCoerceFrom}
@@ -21798,6 +21826,7 @@ new system commands provided you handle the argument parsing.
\defun{systemCommand}{Handle system commands}
You can type ``)?'' and see trivial help information.
You can type ``)? compile'' and see compiler related information
+
\calls{systemCommand}{selectOptionLC}
\calls{systemCommand}{helpSpad2Cmd}
\calls{systemCommand}{selectOption}
@@ -21977,6 +22006,7 @@ valid for this level.
\defun{getParserMacroNames}{getParserMacroNames}
The \verb|$pfMacros| is a list of all of the user-defined macros.
+
\usesdollar{getParserMacroNames}{pfMacros}
\begin{chunk}{defun getParserMacroNames 0}
(defun |getParserMacroNames| ()
@@ -22807,6 +22837,7 @@ The \verb|$msgdbPrims| variable is set to:
Note that unAbbreviateKeyword returns the word ``system'' for unknown words
so we have to search for this case. This complication may never arrive
in practice.
+
\calls{npsystem}{sayKeyedMsg}
\begin{chunk}{defun npsystem}
(defun |npsystem| (unab str)
@@ -22878,6 +22909,7 @@ in practice.
\defun{printLabelledList}{Print a list of each matching synonym}
The prefix goes before each element on each side of the list, eg, ")"
+
\calls{printLabelledList}{sayMessage}
\calls{printLabelledList}{blankList}
\calls{printLabelledList}{substring}
@@ -23059,6 +23091,7 @@ Thus, when a system command is entered this function is called.
The only exception is the \verb|)include| function which inserts
the contents of a file inline in the input stream. This is useful
for processing \verb|)read| of input files.
+
\calls{ncloopCommand}{ncloopPrefix?}
\calls{ncloopCommand}{ncloopInclude1}
\callsdollar{ncloopCommand}{systemCommandFunction}
@@ -24083,6 +24116,7 @@ o )pquit
\defun{queryClients}{queryClients}
Returns the number of active scratchpad clients
+
\calls{queryClients}{sockSendInt}
\calls{queryClients}{sockGetInt}
\usesdollar{queryClients}{SessionManager}
@@ -24646,6 +24680,7 @@ The describeInternal function will either call the ``dc'' function
to describe the internal representation of the argument or it will
print a cleaned up version of the text for the "Description" keyword
in the Category, Domain, or Package source code.
+
\calls{describeSpad2Cmd}{selectOptionLC}
\calls{describeSpad2Cmd}{flatten}
\calls{describeSpad2Cmd}{cleanline}
@@ -24954,6 +24989,7 @@ and tell the user what options are available.
This function takes a list of operation names. If the list is null
we query the user to see if they want all operations printed. Otherwise
we print the information for the requested symbols.
+
\calls{displayOperations}{reportOpSymbol}
\calls{displayOperations}{yesanswer}
\calls{displayOperations}{sayKeyedMsg}
@@ -24971,6 +25007,7 @@ This is a trivial function to simplify the logic of displaySpad2Cmd.
If the user didn't supply an argument to the )display op command
we ask if they wish to have all information about all Axiom operations
displayed. If the answer is either Y or YES we return true else nil.
+
\calls{yesanswer}{string2id-n}
\calls{yesanswer}{upcase}
\calls{yesanswer}{queryUserKeyedMsg}
@@ -25083,6 +25120,7 @@ then it implies multiple example lines and we loop over them,
splitting them up at the delimiter.
If there is only one then we clean it up and print it.
+
\calls{sayexample}{cleanupline}
\calls{sayexample}{sayNewLine}
\begin{chunk}{defun sayExample}
@@ -25534,65 +25572,84 @@ The parts of a frame and their initial, default values are:
\subsection{Accessor Functions}
These could be macros but we wish to export them to the API code
in the algebra so we keep them as functions.
-\subsection{0th Frame Component -- frameName}
-\defun{frameName}{frameName}
-\begin{chunk}{defun frameName 0}
-(defun frameName (frame)
- (car frame))
+
+0th Frame Component -- frameName
+\defmacro{frameName}
+\begin{chunk}{defmacro frameName 0}
+(defmacro frameName (frame)
+ `(car ,frame))
\end{chunk}
-\subsection{1st Frame Component -- frameInteractive}
-\begin{chunk}{defun frameInteractive 0}
-(defun frameInteractive (frame)
- (nth 1 frame))
+
+1st Frame Component -- frameInteractive
+\defmacro{frameInteractive}
+\begin{chunk}{defmacro frameInteractive 0}
+(defmacro frameInteractive (frame)
+ `(nth 1 ,frame))
\end{chunk}
-\subsection{2nd Frame Component -- frameIOIndex}
-\begin{chunk}{defun frameIOIndex 0}
-(defun frameIOIndex (frame)
- (nth 2 frame))
+
+2nd Frame Component -- frameIOIndex
+\defmacro{frameIOIndex}
+\begin{chunk}{defmacro frameIOIndex 0}
+(defmacro frameIOIndex (frame)
+ `(nth 2 ,frame))
\end{chunk}
-\subsection{3rd Frame Component -- frameHiFiAccess}
-\begin{chunk}{defun frameHiFiAccess 0}
-(defun frameHiFiAccess (frame)
- (nth 3 frame))
+
+3rd Frame Component -- frameHiFiAccess
+\defmacro{frameHiFiAccess}
+\begin{chunk}{defmacro frameHiFiAccess 0}
+(defmacro frameHiFiAccess (frame)
+ `(nth 3 ,frame))
\end{chunk}
-\subsection{4th Frame Component -- frameHistList}
-\begin{chunk}{defun frameHistList 0}
-(defun frameHistList (frame)
- (nth 4 frame))
+
+4th Frame Component -- frameHistList
+\defmacro{frameHistList}
+\begin{chunk}{defmacro frameHistList 0}
+(defmacro frameHistList (frame)
+ `(nth 4 ,frame))
\end{chunk}
-\subsection{5th Frame Component -- frameHistListLen}
-\begin{chunk}{defun frameHistListLen 0}
-(defun frameHistListLen (frame)
- (nth 5 frame))
+
+5th Frame Component -- frameHistListLen
+\defmacro{frameHistListLen}
+\begin{chunk}{defmacro frameHistListLen 0}
+(defmacro frameHistListLen (frame)
+ `(nth 5 ,frame))
\end{chunk}
-\subsection{6th Frame Component -- frameHistListAct}
-\begin{chunk}{defun frameHistListAct 0}
-(defun frameHistListAct (frame)
- (nth 6 frame))
+
+6th Frame Component -- frameHistListAct
+\defmacro{frameHistListAct}
+\begin{chunk}{defmacro frameHistListAct 0}
+(defmacro frameHistListAct (frame)
+ `(nth 6 ,frame))
\end{chunk}
-\subsection{7th Frame Component -- frameHistRecord}
-\begin{chunk}{defun frameHistRecord 0}
-(defun frameHistRecord (frame)
- (nth 7 frame))
+
+7th Frame Component -- frameHistRecord
+\defmacro{frameHistRecord}
+\begin{chunk}{defmacro frameHistRecord 0}
+(defmacro frameHistRecord (frame)
+ `(nth 7 ,frame))
\end{chunk}
-\subsection{8th Frame Component -- frameHistoryTable}
-\begin{chunk}{defun frameHistoryTable 0}
-(defun frameHistoryTable (frame)
- (nth 8 frame))
+
+8th Frame Component -- frameHistoryTable
+\defmacro{frameHistoryTable}
+\begin{chunk}{defmacro frameHistoryTable 0}
+(defmacro frameHistoryTable (frame)
+ `(nth 8 ,frame))
\end{chunk}
-\subsection{9th Frame Component -- frameExposureData}
-\begin{chunk}{defun frameExposureData 0}
-(defun frameExposureData (frame)
- (nth 9 frame))
+
+9th Frame Component -- frameExposureData
+\defmacro{frameExposureData}
+\begin{chunk}{defmacro frameExposureData 0}
+(defmacro frameExposureData (frame)
+ `(nth 9 ,frame))
\end{chunk}
@@ -59014,6 +59071,25 @@ digits in TechExplorer. Since Saturn is gone we can remove it.
\getchunk{defmacro bvec-elt 0}
\getchunk{defmacro idChar? 0}
\getchunk{defmacro identp 0}
+\getchunk{defmacro frameExposureData 0}
+\getchunk{defmacro frameHiFiAccess 0}
+\getchunk{defmacro frameHistListAct 0}
+\getchunk{defmacro frameHistList 0}
+\getchunk{defmacro frameHistListLen 0}
+\getchunk{defmacro frameHistoryTable 0}
+\getchunk{defmacro frameHistRecord 0}
+\getchunk{defmacro frameInteractive 0}
+\getchunk{defmacro frameIOIndex 0}
+\getchunk{defmacro frameName 0}
+\getchunk{defmacro frameNames 0}
+\getchunk{defmacro getMsgArgL 0}
+\getchunk{defmacro getMsgKey 0}
+\getchunk{defmacro getMsgPosTagOb 0}
+\getchunk{defmacro getMsgPrefix 0}
+\getchunk{defmacro getMsgPrefix? 0}
+\getchunk{defmacro getMsgTag 0}
+\getchunk{defmacro getMsgTag? 0}
+\getchunk{defmacro getMsgText 0}
\getchunk{defmacro qsabsval 0}
\getchunk{defmacro qsadd1 0}
\getchunk{defmacro qsdifference 0}
@@ -59026,6 +59102,8 @@ digits in TechExplorer. Since Saturn is gone we can remove it.
\getchunk{defmacro qssub1 0}
\getchunk{defmacro qstimes 0}
\getchunk{defmacro qszerop 0}
+\getchunk{defmacro setMsgPrefix 0}
+\getchunk{defmacro setMsgText 0}
\getchunk{defmacro spadConstant 0}
;;; above level 0 macros
@@ -59093,6 +59171,8 @@ digits in TechExplorer. Since Saturn is gone we can remove it.
\getchunk{defmacro eltU32}
\getchunk{defmacro funfind}
\getchunk{defmacro hget}
+\getchunk{defmacro leader?}
+\getchunk{defmacro line?}
\getchunk{defmacro make-cdouble-matrix}
\getchunk{defmacro make-cdouble-vector}
\getchunk{defmacro make-double-matrix}
@@ -59133,6 +59213,7 @@ digits in TechExplorer. Since Saturn is gone we can remove it.
\getchunk{defmacro seteltU8}
\getchunk{defmacro seteltU16}
\getchunk{defmacro seteltU32}
+\getchunk{defmacro toScreen?}
\getchunk{defmacro trapNumericErrors}
\getchunk{defmacro truth-to-bit}
\getchunk{defmacro while}
@@ -59189,17 +59270,6 @@ digits in TechExplorer. Since Saturn is gone we can remove it.
\getchunk{defun fnameName 0}
\getchunk{defun fnameReadable? 0}
\getchunk{defun fnameType 0}
-\getchunk{defun frameExposureData 0}
-\getchunk{defun frameHiFiAccess 0}
-\getchunk{defun frameHistList 0}
-\getchunk{defun frameHistListAct 0}
-\getchunk{defun frameHistListLen 0}
-\getchunk{defun frameHistoryTable 0}
-\getchunk{defun frameHistRecord 0}
-\getchunk{defun frameInteractive 0}
-\getchunk{defun frameIOIndex 0}
-\getchunk{defun frameName 0}
-\getchunk{defun frameNames 0}
\getchunk{defun From 0}
\getchunk{defun FromTo 0}
@@ -59208,15 +59278,7 @@ digits in TechExplorer. Since Saturn is gone we can remove it.
\getchunk{defun getl 0}
\getchunk{defun getLinePos 0}
\getchunk{defun getLineText 0}
-\getchunk{defun getMsgArgL 0}
-\getchunk{defun getMsgKey 0}
\getchunk{defun getMsgKey? 0}
-\getchunk{defun getMsgPrefix 0}
-\getchunk{defun getMsgPosTagOb 0}
-\getchunk{defun getMsgPrefix? 0}
-\getchunk{defun getMsgTag 0}
-\getchunk{defun getMsgTag? 0}
-\getchunk{defun getMsgText 0}
\getchunk{defun getParserMacroNames 0}
\getchunk{defun getPreStL 0}
\getchunk{defun getspoolname 0}
@@ -59414,8 +59476,6 @@ digits in TechExplorer. Since Saturn is gone we can remove it.
\getchunk{defun sec 0}
\getchunk{defun sech 0}
\getchunk{defun setCurrentLine 0}
-\getchunk{defun setMsgPrefix 0}
-\getchunk{defun setMsgText 0}
\getchunk{defun set-restart-hook 0}
\getchunk{defun showMsgPos? 0}
\getchunk{defun startsComment? 0}
@@ -60055,7 +60115,6 @@ digits in TechExplorer. Since Saturn is gone we can remove it.
\getchunk{defun lassocSub}
\getchunk{defun lastTokPosn}
-\getchunk{defun leader?}
\getchunk{defun leaveScratchpad}
\getchunk{defun lefts}
\getchunk{defun letPrint}
@@ -60064,7 +60123,6 @@ digits in TechExplorer. Since Saturn is gone we can remove it.
\getchunk{defun lfkey}
\getchunk{defun libConstructorSig}
\getchunk{defun library}
-\getchunk{defun line?}
\getchunk{defun linearFinalRequest}
\getchunk{defun lineoftoks}
\getchunk{defun linkGen}
@@ -60898,7 +60956,6 @@ digits in TechExplorer. Since Saturn is gone we can remove it.
\getchunk{defun tokTran}
\getchunk{defun tokType}
\getchunk{defun topLevelInterpEval}
-\getchunk{defun toScreen?}
\getchunk{defun trace}
\getchunk{defun trace1}
\getchunk{defun traceDomainConstructor}
diff --git a/changelog b/changelog
index aff628d..673fdf7 100644
--- a/changelog
+++ b/changelog
@@ -1,3 +1,5 @@
+20141217 tpd src/axiom-website/patches.html 20141217.02.tpd.patch
+20141217 tpd books/bookvol5 inline structure accesses for frames
20141217 tpd src/axiom-website/patches.html 20141217.01.tpd.patch
20141217 tpd books/bookvol5 inline structure accesses
20141217 tpd books/axiom.sty fix defvar syntax
diff --git a/patch b/patch
index 730168c..cebb929 100644
--- a/patch
+++ b/patch
@@ -1,3 +1,3 @@
-books/bookvol5 inline structure accesses
+books/bookvol5 inline structure accesses for frames
Turn structure access functions into macros to inline code.
diff --git a/src/axiom-website/patches.html b/src/axiom-website/patches.html
index c3aa3a7..227f55a 100644
--- a/src/axiom-website/patches.html
+++ b/src/axiom-website/patches.html
@@ -4826,6 +4826,8 @@ src/axiom-website/CATS/westerboolean.input add CATS test suite
books/bookvol5 clean, treeshake, and simplify
20141217.01.tpd.patch
books/bookvol5 inline structure accesses
+20141217.02.tpd.patch
+books/bookvol5 inline structure accesses for frames