Trailing-Edge
-
PDP-10 Archives
-
decuslib10-11
-
43,50526/sprim.doc
There are no other files named sprim.doc in the archive.
101 - |os,s| Output String
This function causes the selected output device to output the
string of characters symbolized by "s".
102 - |is,dev| Input String
The value of this function is a stream of characters coming from
the currently selected input device; termination occurs as soon
as the currently specified "activating character" is
encountered; this activating character does not become part of
the value string of the function.
103 - |dt,t,s,d1,d2| Define Text (superseding)
\dt,t,s,d1,d2\ Define Text (save current)
This function is used to create a "text" whose name is denoted
by "t", containing the string of characters symbolized by "s";
arguments denoted by "d1", "d2" are for undefined purposes.
The active form of the expression serves also to erase the text
whose name is "t" if currently in the text area; the neutral
form will not cause any text deletion.
104 - |et,t1,t2,...,t| Erase Text
\et,t1,t2,...,t\ Erase all occurences of Text
This function is used to erase from the text area texts whose
names are denoted by the arguments of the expression; the active
form of the expression erases only the latest version of the
named texts, should more than one version exists in the text
area.
105 - |lt,s0,d1,d2,...,d| List Texts
The value of this function is a list of the names of the texts
to be found in the text area; each name is preceded by the
string symbolized by "s0".
Arguments symbolized by "d1", "d2", ... have not been defined.
106 - |ft,t,s1,s2,...,s| Fetch Text
The value of this function is the contents to be found in the
text named "t" to the right of its internal text divider.
Any partitions found in that portion of the text are replaced
with the strings denoted "s1", "s2", ... "s", in such a manner
that partitions with value "1" are replaced by "s1", value 2
with "s2" and so forth.
107 - |pt,t,s1,s2,...,s| Partition Text all matches
\pt,t,s1,s2,...,s\ Partition Text next match
The purpose of this function is to replace in the text whose
name is denoted by "t" the strings symbolized by "s1", "s2", ...
"s" with partitions identified by numbers which correspond to
the position of the strings in the expression; that is to say
"s1" is replaced by a partition value "1", "s2" by partition
value "2" &c.
In its active form, this function serves to replace all
occurences of the desired strings; in its neutral form only the
first occurence found is so replaced for each of the specified
strings.
Action takes place starting at the current location of the
internal text divider which is not moved by this function.
A particular example of interest might be:
&pt,animal,dog,dog,dog,dog/=
This example would in the text whose name was animal, replace
the first match with "dog" with partition value "1", the second,
"2", the third with "3" and the fourth with "4".
108 - |pc,d| Partition Character
The value of this function is a "partition character" of value
symbolized by the decimal number "d".
109 - |mt,t,s1,s2,...,s| Multi-part Text all matches
\mt,t,s1,s2,...,s\ Multi-part Text next match
This function serves to replace in the text whose name is
denoted by "t" the strings symbolized by "s1", "s2", "s" with
multi-partitions of values respectively "1", "2", ...; the
neutral form of this function only replaces the first occurence
of these strings found in the text.
110 - |mc,d| Multi-partition Character
The value of this function is the "multi-partition character"
whose value is denoted by the decimal number "d".
111 - |ni,vt,vf| Neutral Implied
This function returns the string symbolized by "vt" if the last
previously executed implied "fetch text" was neutral. If that
last previously executed implied "fetch" was active, then the
value of this function is that string symbolized by "vf".
112 - |ex,f| Exit
This function is used to exit from the processor back to a
system monitor; if the expression contains any arguments, such
as "f" then a file is created in auxiliary storage which
contains all of the user work space including variables, working
area and text area.
This file is given the name denoted by "f", and may be reloaded
on any other system and the action interrupted by the execution
of this function is then resumed at the same point.
Successful resumption of action is subject to compatibility as
determined by verification of the system authorship and version
number.
113 - |ca,s| Change Activator (current)
\ca,s\ Change Activator (initial)
The purpose of this function is to change the symbol which
terminates input from its current value to that denoted by the
first character of the string denoted by "s"; active form is
used to change the operational activating character whereas the
neutral form is used to change the initial table.
114 - |ht,t| Hide Text
\ht\ Hide all Texts
The purpose of this function is to put a screen or fence in the
text area such that only those texts created after that whose
name is denoted by "t" are available.
This fence is removed by execution of this function with no
arguments; if it is desired to conceal all of the text area, the
neutral form is to be executed.
115 - |ic| Input Character
The value of this function is one character the source of which
is the currently selected input device; this may be absolutely
any one single character in the system character set.
116 - |id,d| Input "D" characters
The value of this function is a stream of characters from the
current selected input device; the action is terminated when
that number symbolized by "d" has been received; in the case of
certain sources, an End of File will also terminate.
117 - |im,s1,s2,...,s| Input to Match
The value of this expression is a stream of characters coming
from the currently selected input device; termination of this
stream occurs as soon as one of the strings symbolized by "s1",
"s2", ... "s" has been encountered; the value includes the
string that caused termination.
118 - |vt,t1,t2,...,t| View Texts
This function enables examination of defined texts, indicating
visually the location of internal text divider, partitions and
their values, as well as multipartitions.
119 - |xr,x| eXamine Register
The value of this function is the contents of the memory
location symbolized in the current "X" base by "x".
120 - |xw,x1,x2| eXperimental Write in reg.
Use of this function causes writing the value "x1" into the
memory location "x2"; both of these are in the current "X" base.
121 - |xrp,x| eXamine Register Pair
The value of this function is the combined contents of the two
memory locations, whose first location is symbolized in the
current "X" base by "x".
122 - |xwp,x1,x2| eXperimental Write reg. Pair
Use of this function causes writing of the double word data
symbolized in the "X" base by "x1" in the memory location whose
first word is identified by "x2".
123 - |xj,x| eXperimental Jump
Execution of this function cause a jump to the memory location
symbolized in the "X" base by "x"; a return from programs
encountered at that location will cause normal reentry into the
system scanner.
124 - |tma| Trace Mode All activated
\tma\ Trace Mode All deactivated
Active execution enables full trace action; neutral execution
allows display only of expressions about to be executed.
125 - |tm,d| Trace Mode activated
\tm\ Trace Mode deactivated
This function is used to enable step by step execution of the
scripts and functions of the language; once activated each step
is initiated by depression of the "new line" key ("line feed")
or a specified number of steps may be specified by the number
symbolized by "d".
126 - |yt,t,s,vt,vf| Ys There
This function searches the text whose name is denoted by "t" for
an exact match with the string symbolized by "s"; if such a
match is found, then the value of the expression is that string
symbolized by "vt", else it is that string symbolized by "vf".
127 - |tb,t,vt,vf| Text Branch
If the text whose name is denoted by "t" is to be found in the
text area, then the value of the function is that string
symbolized by "vt", else the value is string symbolized by "vf".
128 - |ad,n1,n2,n3,...,n| Add
The value of this expression is the arithmetic sum of the
integer numbers denoted by "n1", "n2", ... "n". Each of the
arguments is examined from right to left until a symbol not
representing a valid number in the current number base is
encountered; non numeric symbols prefixing the arguments are
ignored with the exception of those in argument "n1" which is
carried into the value string of the expression. For example:
%ad,dog5,cat6/={dog11}
Negative numbers are indicated in the usual manner with a "-"
sign which must immediately precede the string of integers it
applies to thus:
%ad,dog-5,cat6/={dog1}
Ommitted arguments (such as adjacent commas) have the value of
the "null string" and a numeric value of zero (0) as illustrated
in the following example:
%ad,dog,/={dog0}
[Note: multiple arguments not supported in all processors]
129 - |su,n1,n2,...,n| Subtract
The value of this function is the result of subtracting the
number symbolized by "n2" from that symbolized by "n1"; all
rules indicated for sign and non numeric matter in the "ad"
function apply.
130 - |mu,n1,n2,vz| Multiply
The value of this function is the arithmetic product of the
numbers symbolized by "n1", and "n2". The same rules as to sign
and non numeric matter apply for this function as they do for
the "ad" function.
Should an overflow condition arise as a result of the execution
of this function, then the value of the expression is that
string symbolized by "vz".
131 - |di,n1,n2,vz| Divide
The value of this function is the integer result of dividing the
number denoted by "n1", by the second number denoted by "n2"; if
the result of the division would be indeterminate - "n2" = zero
- then the value of the expression is that string denoted by
"vz".
Treatment of non numeric, signs, and null strings is identical
to that described in the "ad" function.
132 - |ct,t1,t2,t3,...,t| Combine Texts (superseding)
\ct,t1,t2,t3,...,t\ Combine Texts (save current)
The purpose of this function is to create a text, whose name is
denoted by "t1" which will contain the "concatenation" of the
texts whose names are denoted by "t2", "t3", ... "t".
The active form of the expression will also delete the current
text named "t1" if any; the neutral form of the expression will
not cause deletion of any pre-existing texts.
133 - |cnb,d| Change Number Base (active)
\cnb,d\ Change Number Base (initial)
The purpose of this function is to change the radix of the
processor's arithmetic functions; this is always expressed as
the decimal number symbolized by "d" in the expression; see
[qnb]; active form of the expression changes the value of the
radix used during the actual operations while the neutral form
changes the initial table. Note that the neutral change can only
be effective while the processor is in unprotected memory, and
will have no effect if the processor is executed from read only
or protected memory.
134 - |qnb| Query Number Base
The value of this function is the current value of the radix for
arithmetic operations and functions.
135 - |ii,s1,s2,vt,vf| If Identical
Strings symbolized by "s1", and "s2" are compared, if found to
be absolutely identical, then the value of the expression is
that string symbolized by "vt"; if not identical the value is
the string symbolized by "vf".
136 - |ig,d1,d2,vt,vf| If Greater
This expression compares in an arithmetic sense the two strings
denoted by "d1" and "d2"; if the value of "d1" is greater than
that of "d2", then the value of the expression is that string
symbolized by "vt", else the value is that string symbolized by
"vf".
137 - |fc,t,vz| Fetch Character
The value of this function is the character to be found
immediately to the right of the internal text divider of the
text whose name is denoted by "t"; if such a character exists
then the text divider is advanced to point to the next available
character - or alternatively to the end of the "text".
If no character is available then the value of the expression is
that string denoted by "vz" which is always treated actively.
138 - |fdc,t,d,vz| Fetch "D" Characters
The value of this function is that decimal number of characters
denoted by "d" which is to be found to the right or left of the
internal divider of the text whose name is denoted by "t"; a
positive number specifies to the right, and a negative number to
the left; the text divider is then relocated to point to the
next character available if to the right, or to the first
character returned in the value string if to the left.
Should there be absolutely no characters (not even one)
available for the value, then "vz" represents the string which
will be returned as the value of the expression, and this value
is always treated actively.
139 - |fde,t,d,vz| Fetch "D" Elements
The value of this function is that string of characters to the
right or left of the text divider of the text whose name is
denoted by "t" which comprises the number of elements specified
by the decimal number "d"; an element is that which is found
between partitions.
The divider is then moved either to the right or left to point
either to the next character to be read (if to the right) or
that character which corresponds to the first character of the
value string (if to the left).
If absolutely no characters are returned, then the divider is
not moved and the value of the expression is that string
symbolized by "vz" which is always treated actively.
140 - |fdm,t,d,s,vz| Fetch "D" Matches
The value of this function is a character string taken to the
right of the text divider of the text whose name is denoted by
"t"; the contents of the text "t" is scanned searching for
occurences of the string denoted by "s"; when that number of
occurences equal to the number "d" is found then the divider is
relocated to point to the next immediately following character,
and the value string is that which lies between the old and the
new divider locations.
If the required number of matches is not found, then the divider
is not moved, and the value of the expression is that string
denoted by "vz", which is always treated actively.
If the desired number is negative, then the action takes place
to the left of the divider instead of to the right. If "d" is a
negative number, then the search is made to the left of the
divider.
141 - |fe,t,vz| Fetch Element
The value of this function is that string of characters which is
to be found immediately to the right of the current location of
the divider in the text named "t" up to the next encountered
partition - or end of text.
The text divider is moved to point to the immediately available
next character.
If absolutely no characters are to be found, then the value is
the string denoted by "vz", which is always treated actively.
142 - |ff,t,d,vz| Fetch Field
The value of this expression is that string of characters to be
found to the right of the first occurence of a partition of
value symbolized by "d" until the next partition is encountered,
or to the end of the text named "t"; the divider is not moved.
If absolutely no characters are returned the value of the
expression is the string symbolized by "vz" which is always
treated actively.
143 - |fl,t,s,vz| Fetch Left match
The text named "t" is searched to the left of its internal
divider for a string identical to that denoted by "s"; if such a
string is found then the divider is moved to point to the first
character of that string and the value of the expression is that
group of characters to be found between the new location of the
divider and its old location.
If no such matching string is found, then the divider is not
moved, and the value of the expression is the string "vz" which
is always treated actively.
144 - |fr,t,s,vz| Fetch Right match
The text named "t" is examined starting at the current location
of the text divider for a string identical to that denoted by
"s"; if such a string is found, then the divider is moved to the
next character which follows this string (or the end of the
text) and the value returned is that string of characters which
lies between the old and the new locations of the text divider.
If no such match is found, then the value of the expression is
the string denoted by "vz", always treated actively, and the
divider is not moved.
145 - |fp,t,x1,...,x| Fetch Partition
The value of this function is the next partition to be found in
the text whose name is denoted by "t"; the text divider is moved
to point to the next ensuing character.
146 - |md,t,d| Move Divider to pos. "d"
\md,t,d\ Move Divider "d" increments
This function is used to move the text divider in the text whose
name is denoted by "t". Active form serves to move the divider
the number of positions from the left end of the text if "d" is
positive, or from the right end if negative; the neutral form is
used to advance or retreat the divider from its current location
that number of positions specified by the number "d".
It should be noted that these moves are positional and do not
distinguish any difference between partitions and characters;
this is the only function available to position the text divider
other than immediately preceding a character.
147 - |crd,t| Characters Right of Divider
The value of this function is the (decimal base) number of
characters located between the beginning of the "text" whose
name is denoted by "t" and the current location of the internal
"text divider" of said text.
148 - |cld,t| Characters Left of Divider
The value of this function is the (decimal base) number of
characters located between the beginning of the "text" whose
name is denoted by "t" and the current location of the internal
"text divider" of said text.
149 - |hp,t,d| How many Partitions
The value of this function is the number of partitions to be
found to the right of the text divider in the text whose name is
"t"; if there is no explicit third argument, then the value
represents the total number of partitions; if argument three is
specified, then the value is that number of partitions whose
value is equal to the number symbolized by "d".
150 - |hm,t,s| How many Matches
The value of this function is that number of occurences of the
string of characters symbolized by "s" in the text whose name is
denoted by "t".
151 - |ep,t,p1,p2,...,p| Erase Partitions
This function serves to delete from the text named "t" any
partitions that may be found in it to the right of the internal
text divider.
If arguments "p1", "p2", and so on are specified, then only
those partitions with values denoted by these arguments are
deleted.
[Note: multiple "p+" not supported in all systems]
152 - |it| Input Text
The purpose of this function is to place in the text area one
text loaded from some auxiliary storage media, which is in the
format generated through use of the "output text" functions.
153 - |idt,d| Input "D" Texts
This function serves to place into the text area "texts" which
are loaded from various types of auxiliary storage media and
created through use of the "output text" functions.
154 - |ot,t1,t2,...,t| Output Texts
\ot,leader,gap,t1,t2,...,t\
This function outputs to the selected channel, the texts whose
names are denoted by "t1", "t2", ... "t", in a format which
preserves all of the internal conditions of the text; this
includes location of the internal text divider, and text
partitions if any.
The neutral form of this function allows user respecification of
leader and interecord gap sizes. Initialized conditions provide
64 bytes of leader and trailer, and 20 bytes between texts.
155 - |xll,s0| Xamine Label List
The value of this function is a list of internal system labels
available for examination by name; these labels may be actual
values, identify locations of program entry points or tables, or
give addresses of memory locations in which system pointers may
be found. Each label name is preceded in the value string by the
string symbolized by "s0".
Typical system labels as determined by the "xll" function are
given below with their characterizations:
AST Address System subroutine Table
ASV Address System subroutine Vectors
ENC Entry Continue ("hot start")
ENR Entry Restart ("warm start")
ESL Entry Subroutine Links
INP Address Input Vector
OPV Offset Permanent/Variable tables
OUT Address Output Vector
POA Pointer Overlay A
POB Pointer Overlay B
POC Pointer Overlay C
POD Pointer Overlay D
PSE Pointer Service Entry
PSW Pointer Function "sw"
PSY Pointer Function "sy"
PUI Pointer User Input routine
PUL Pointer User Link table
PUO Pointer User Output routine
PWA Pointer Work Area start
TAE Text Area End
TAH Text Area High
TAL Text Area Low
TAM Text Area Maximum
156 - |xal,label,offset| Xamine Address of Label
The value of this function is the value of the "label" to which
the value of "offset" has been added; both the value returned
and the "offset" are in the current "X" base.
157 - |sfd,fun,dev| Specify Function Device
To be defined and coded.
158 - |sar| "Auto Return" on line feed
\sar\ no Auto Return on line feed
Execution of this function serves to enable (if active) or
disable (if neutral) the automatic generation of a "carriage
return" code when a "new line" code is output.
159 - |ab,s1,s2,vt,vf| Alphabetic Branch
This function compares the character strings denoted by "s1" and
"s2" in terms of their "ASCII" binary value; if the string "s1"
has a greater value than the string "s2" then the value of the
expression is the string denoted by "vt", else the value is the
string denoted by "vf"; if the value strings are expected to
contain executable or syntactically meaningful symbols they
should be protected within the expression.
160 - |ai,s0,s1,s2,...,s| Alphabetic Insertion
The value of this function is a character string in which the
string denoted by "s1" has been inserted ahead of the first of
the subsequent argument string which has a greater alphabetic
value; each of the strings which form the arguments of the
expression are returned with a copy of the string symbolized by
"s0" preceding it.
161 - |as,s0,s1,s2,...,s| Alphabetic Sort
The value of this function is a character string in which the
sequence of the strings denoted by "s1", "s2", ... "s" is
rearranged to be in proper alphabetic sequence; each of these
strings is preceded by the string denoted by "s0" in the result:
%as,(,),horse,cat,dog/={,dog,cat,horse}
Note the use of "(,)" for "s0"; this is typical of lists that
the user may wish to use in a variety of functions which have
arbitrary number of arguments.
162 - |ps,d,s1,s2| Pad String
The value of this function is the string "s2" to which is added
either to its right or to its left enough duplications of the
first character of string "s1" so that the total size of the
value string becomes equal to the number symbolized by "d";
positive values of "d" pad to its right, and negative values to
its left.
163 - |rs,s| Reverse String
The value of this function is the string of characters
symbolized by "s" reversed, end for end.
164 - |ds,d,s| Duplicate String
The value of this expression is a concatenation of that number
of copies of the string "s" which is denoted by the decimal
number "d".
This function may be quite properly used to "DO" something a
desired number of times as illustrated below:
%ds,5,!%dt,x,%ad,3,%x/////=
This example shows a most awkward way of creating a text named
"x" which contains the product of 5 and 3.
165 - |rr,s1| Return to Restart
This function causes immediate cessation of execution of any
unexecuted script, forces a return to the idling level of the
processor and then returns the value of the string symbolized by
"s1"; if that string is an executable expression, then said
expression is executed.
166 - |ri| Restart Initialized
Execution of this function causes immediate termination of any
unexecuted scripts, and causes return to the idling condition,
reinitializing all normally changed user specifications.
167 - |qp,t| Query Partition
The value of this function is the decimal identification of the
next partition to be found in the text whose name is denoted by
"t"; the text divider is not moved by this function.
168 - |tr,t,s| Trim
This function is used to replace multiple adjacent occurences of
the character symbolized by "s" with a single such occurence in
the text named "t".
169 - |ut,cc| User Trap active
\ut\ User Trap inactive
Activating of this trap through use of this function will cause
an automatic execution of a text (or function) whose name is
denoted by "cc"; this automatic execution takes place whenever
the user attempts to make use of system interrupt capabilities
to escape out of executing "scripts" when it is desired that
such escape be inhibited.
170 - |xc,x1,x2,...,x| "X" to Character
The value of this function is a string of characters whose value
is represented by the numbers in "X" base symbolized by "x1",
"x2", ... "x".
171 - |cx,s0,s| Character to "X"
This function returns as a value a sequence of binary numbers,
each preceded by the string denoted by "s0" which result from
converting the character string denoted by "s"; the conversion
is in the current specification for the "X" base; see [cxb, qxb,
xc].
172 - |xd,x| "X" to Decimal
The value of this function is the decimal equivalent of the
number in the current value of the "X" base symbolized by "x".
173 - |dx,d,x| Decimal to "X"
The value of this function is that number which results from
converting the decimal number denoted by "d" to its equivalent
in the current "X" base; the argument symbolized by "x" is
undefined; see [xd, cxb, qxb].
174 - |pl,sub,s1,...,s| Plot
This is a general purpose plotter or display control function;
details may vary in its use as a function of the system in which
it is used. Certain subfunctions as described below have been
used:
-01 |pl,lf,s0| List of Plotter subfunctions
-02 |pl,as,port,time| Assign output port and time delay
-03 |pl,nm| Output plotter control bytes
-04 |pl,vm| Return as value control bytes
-05 |pl,cal| Set up for "Calcomp" plotter
-06 |pl,pol| Set up for "Polymorphic" display
-07 |pl,trs| Set up for "TRS-80" display
-08 |pl,mq,x| Rotate to quadrant "x".
175 - |wi,xn1,yn1| Write Initialize
This null valued function serves to create a reference value for
the current position of the display pointer; the "x" and "y"
coordinates of this position are set equal to the decimal
integer strings found in the second and third arguments
respectively.
176 - |wx| Write "X" displacement
The value of this function is equal to the algebraic difference
between the initial value "X" of the display pointer position
and the sum of any subsequent incremental displacement values.
177 - |wy| Write "Y" displacement
The value of this function is equal to the algebraic difference
between the initial value "Y" of the display pointer position
and the sum of any subsequent incremental displacement values.
An effective way to return the display pointer to its original
location is illustrated as follows:
{}~~~~~~~~~~~~~~~~~~~~~~~~~~
{} %ws,U%wx/,%wy//
{}
~~~~~~~~~~~~~~~~~~~~~~~~~
178 - |wr| Width Right
The value of this function is the incremental value of the width
of a character being plotted to the right of its center of
gravity.
179 - |wl| Width Left
The value of this function is the incremental value of the width
of a character being plotted to the left of its center of
gravity.
180 - |ws,xn1,yn1,...,xn,yn| Write Straight Lines
This function causes the generation of the appropriate control
information to cause the display of one or more line segments
starting at the current position of the display pointer.
Successive points are referenced by consecutive incremental x
and y argument pairs. The x and y components are expressed as
decimal integer strings. The sign of the number indicates
direction.
When in visual display mode, the neutral form of this function
serves to erase any line or points which coincide with the path
of the lines drawn.
Non numeric matter preceding the "x" value causes certain
auxiliary functions to take place as follows:
U "pen up" or invisible vector
S Scale change for "x" and "y"
A Absolute position vector pair
I Incremental vector pair
C Clear display screen and
initialize absolute X & Y locations
Q Quadrant rotation
0 - 3 clockwise, 4 - 7 counter clockwise
W Character width information
"x" left and "y" right of center
181 - |wc,s1,s| Write Characters
This plotter or display function generates a graphic display
from a font of vectors named "s1"; the string symbolized by "s"
is the text string to be plotted or displayed.
182 - |zd,r,v-,v0,v+| "Z" reg. Decrement and branch
Execution of this function causes the contents of a special
register identified by "r" to be decreased by a count of one; if
the resulting contents of that register are greater than zero,
then the expression value is that string symbolized by "v+"; if
equal to zero, then the value is symbolized by "v0", and if less
than zero the value becomes the string symbolized by "v-".
183 - |zi,r,v-,v0,v+| "Z" reg. Increment and branch
The action of this function is identical to that described for
"zd", except that the designated register "r" is increased by a
count of one prior to testing.
184 - |zq,r| "Z" reg. Query
The value of this function is the current contents of the
special register designated by "r"; execution of this function
does not cause any change in said register.
185 - |zs,r,n| "Z" reg. Set
This function is used to preset designated special register "r"
to the number symbolized by "n".
186 - |or,x1,x2| Or the bits
The value of this function is the logical or of the two binary
number strings "x1" and "x2" expressed in the current "X" base.
187 - |and,x1,x2| And the bits
The value of this function is the result of performing an anding
of the two binary numbers represented in the current "X" base by
"x1" and "x2".
188 - |not,x| Not (complement) the bits
The value of this function is the complement of the binary
number (in the current "X" base) symbolized by "x".
189 - |rot,d,x| Rotate the bits
The value of this function is that binary number which results
from a rotation of the binary number "x" expressed in the
current "X" base; the number of bits rotated is specified by the
decimal number "d"; the direction is clockwise if the number is
positive, and counterclockwise if negative.
190 - |sh,d,x| Shift the bits
The value of this function is that binary number string which
results from a logical shift to the right or left of the string
whose binary value, expressed in the current "X" base is
symbolized by "x"; the number of shifts is specified by the
decimal number "d" and the direction by its sign, positive to
the right and negative to the left.
191 - |cll,d| Change Line Length (active)
\cll,d\ Change Line Length (initial)
The purpose of this function is to change the number of
characters that the processor will output before automatically
inserting a "new line" code; the desired value is the decimal
number denoted by "d" in the expression; the active form changes
the actively used constant, while the neutral form changes the
initial condition table; see [cnb].
192 - |qll| Query Line Length
The value of this function is the current specification for the
line length; this specification is changed through use of the
"cll" function.
193 - |cin,t1,d1,...,t,d| Change Id Number
To be defined and coded.
194 - |qin,s0,t1,t2,...,t| Query Id Number
To be defined and coded.
195 - |cfc,d1,s| Change Fill Character schema
\cfc,d1,s\ Change Fill Char. (initial)
The purpose of this function is to enable the user to specify
the number of that character which is the first one of the
string denoted by "s" that will be automatically output at the
beginning of each "new line"; usually these will be "nulls" but
they may be any other character the user wishes to use. Active
form of the expression changes the table in active use, while
the neutral form changes the initial table; see [cnb].
196 - |qfc,s0| Query Fill Character schema
The value of this function is the current specification for the
optional fill character output immediately after each "new
line"; the parameters are each preceded by the string symbolized
by "s0"; see [cfc].
197 - |qld,t| Query Left of Divider
The value of this function is the (decimal base) number of
positions - characters and partitions - located between the
beginning of the "text" whose name is denoted by "t" and the
current location of the internal "text divider" of said text.
198 - |qrd,t| Query Right of Divider
The value of this function is the (decimal base) number of
positions - characters and partitions - located between the
beginning of the "text" whose name is denoted by "t" and the
current location of the internal "text divider" of said text.
199 - |sem,dev| Set "Echoplex" Mode active
\sem,dev\ "Echoplex" Mode inactive
This function enables character echo from the system if executed
actively; if neutrally, then echo generation is suppressed.
200 - |cxb,d| Change "X" Base (active)
\cxb,d\ Change "X" Base (initial)
Through use of this function, the user may change the
specification of the radix (or base) for those functions which
operate in the "X" base; "d" symbolizes the decimal value of the
desired new radix, and this should normally be either "2" or "4"
or "8" or "16"; active and neutral forms operate with respect to
the "X" base in the same manner as described for the "cnb -
change number base" function.
201 - |qxb| Query "X" Base
The value of this function is the currently set radix for the
functions which operate in a "binary" or "X" base.
202 - |qof| Query Over Flow conditions
The value of this function are characters which may be used to
identify the cause of an interrupt or overflow condition.
203 - |cro,s1| Change Rub Out char. schema
\cro,s1\ Change Rub Out (initial)
The purpose of this function is to permit the user to specify as
the first character of the string denoted by "s1" that symbol
desired to serve the character delete function; in addition the
user may specify the next two characters of that string to be
output before and after, respectively, the deleted string of
characters. The active form changes the user table, while the
neutral form of this function changes the initial table; see
[cnb].
204 - |qro| Query Rub Out char. schema
The value of this function describes the current specification
for the use of the "rub out"; see [cro].
205 - |qta| Query Text Area used
The value of this function is representative of the amount of
space consumed in the text area by user defined texts.
206 - |ea,t1,t2,...,t| Erase All excepting
This function is used to erase from the text area all defined
texts; excepted from this erasure are the texts whose names are
denoted by "t1", "t2", ... "t"; full erasure is accomplished as
shown below:
%ea/=
[Note: Multiple arguments not supported in all systems]
207 - |ed,t,d1,d2,vz| Extract "D" characters
The value of this function is a string of characters extracted
from the text whose name is denoted by "t"; the first character
returned is that which is found distant to the right of the text
divider by the number denoted by "d1", and the number of
characters returned is denoted by the number "d2".
Note that "0" represents the location of the divider itself, and
that "d1" may be a negative number.
If there are absolutely no such characters available then the
value of the expression is that string denoted by "vz" which is
always treated actively; this is regardless of whether the
original expression was used actively or neutrally.
208 - |dq,s| Define Quote
The purpose of this function is to enable the user to specify
the character that is to be recognized by the scan algorithm as
an unconditional protecting character. To be further defined.
209 - |nu,s1,s2,...,s| Null
The purpose of this function is to cause execution of the
function whose name is denoted by "s1", with appropriate
arguments "s2", ... "s"; that function is executed but any
resulting value string is suppressed.
210 - |ftb,t,s,vz| Fetch To Break character
The value of this function is a string of characters taken from
the current location of the internal text divider of the text
whose name is denoted by "t" to the first ensuing character in
text "t" which is found in the string symbolized by "s"; the
text divider is moved to the first character which follows that
which terminated the scanning action.
If no character is returned, then the divider is not moved and
the value of the expression is that string symbolized by "vz"
which is always treated actively.
211 - |fts,t,s,vz| Fetch To Span character
The value of this function is a string of characters taken from
the current location of the internal text divider of the text
whose name is denoted by "t" to the first ensuing character in
text "t" which is not found in the string symbolized by "s"; the
text divider is moved to point to the first character which
follows that which terminated the scanning action.
If no character is returned, then the divider is not moved and
the value of the expression is that string symbolized by "vz"
which is always treated actively.
212 - |hc,s| How many Characters
The value of this function is the actual number of characters
comprising the string symbolized by "s".
213 - |iw,n| Input Wait
This function sets up an internal timer which becomes effective
for the next ensuing input function, such as "is", "ic", "idc",
"im"; automatic termination of the input process takes place at
the end of the specified time interval even though normal
terminating conditions specified for these functions may not
have been met.
The duration of the time interval is specified by "n" which is
in seconds.
214 - |lw,s0,s1,s2,...,sn| List Where
The value of this function is a list of the names of the texts
in the text area which contain at least one occurence of each of
the strings symbolized by s1,s2, .... , sn; each name returned
in the value string is preceded by the string symbolized by s0.
It should be noted that the name of the text itself is part of
the text and that the search through the text area by this
function will also return text names even if the only match is
in the name itself.
215 - |ra,d,s1,s2,s3,...,s| Return Argument
The value of this function is that string symbolized by one of
"s1", "s2", "s3", ... "s" whose position corresponds to the
value of the decimal number symbolized by "d".
216 - |lf,s0,d1,...,d| List Files
The value of this function is a list of the names of the files
in auxiliary storage; each file name is preceded by the string
symbolized by "s0".
Additional arguments are to be defined.
217 - |qfs,filename| Query File Size
The value of this function is the file size as a decimal number
of records.
218 - |uf,f,t1,t2,...,t| Update File
This function combines the action of "erase file" and "store
file" by first storing a file successfully before erasing the
old file version.
219 - |qfe| Query File Extension
The value of this function is the current setting of the
"extension" to the file name; the extension is that part of the
name to the right of a period embedded in the file name, where
this period is not part of said name. Sometimes the extension is
known as a "file type".
220 - |bf,f,vz| Bring File
Execution of this function serves to bring from auxiliary
storage the file whose name is denoted by "f"; if this file does
not exist, then the value of the function becomes the string
symbolized by "vz".
221 - |sfe,extension| Set File Extension
This null valued function is used to preset a desired file
extension so that the extension need not be used in any of the
file functions as part of the file name. In effect this may be
used as a classification means. The extension may be set to any
desired three (or less) symbols, including spaces and ???, or to
the null string (viz: %sfe/) whth varying effects.
222 - |sf,f,t1,t2,...,t| Store File
This function is used to place into auxiliary storage under the
file name denoted "f", those texts whose names are denoted by
"t1", "t2", ... "t"; on completion of this action, the named
texts are erased from the text area.
If no texts are named, then the assumption is made that the
entire text area is to be placed into auxiliary storage.
223 - |sdu,dir| Select Directory Unit
This null valued function allows the user to designate the
"Directory" unit to be accessed by the various file functions. A
"directory" unit is any device which has a directory structure
and could be cassette as well as disk.
In a CP/M system, the "dir" is a number in "X" base.
224 - |ef,f1,f2,...,f| Erase Files
This null valued function is used to erase from auxiliary
storage the files whose names are denoted by "f1", "f2", ...
"f".
225 - |qdu| Query Directory Unit
The value of this function is the currently selected "directory"
unit.
226 - |fb,f,vt,vf| File Branch
The value of this function is the string symbolized by "vt" if
the file whose name is denoted by "f" is to be found in external
storage; if not the value of this function is that string
symbolized by "vf".
227 - |qcs| Query Command String
The value of this function is that string of characters entered
after the name which brought the SAM76 language interpreter into
action from the operating system.
228 - |lff,s0| List File Functions
The value of this expression is a list of the available file
functions; each function mnemonic is preceded in the value
string by the string symbolized by "s0".
229 - |xrs,unit,track,sector,s0| X Read Sector
The value of this function is the contents, in the current "X"
base of the identified sector. Each "byte" in the resulting
value string is preceded by the string symbolized by "s0".
230 - |xws,unit,track,sector,X| X Write Sector
This null valued function places the string symbolized by X in
the designated sector. If that string is greater in length than
one sector, then only as much as will fit will be stored.
In the foregoing expression "X" represents a list of numbers in
"X" base where each number in the list is preceded by the
current argument separator (usually a comma).
231 - |sw,s1,s2,s3,...,s| Switches
Special system dependent function for user definition.
232 - |sy,s1,s2,...,s| System functions
Special system dependent function for user definition.
233 - |dif,filename| Designate Input File
This function serves to open a file from the currently selected
"directory" unit for access through use of the "rfr" function,
or via channel control assignment of "FIL" to any of the SAM76
language functions that are designed to accept input.
234 - |dof,filename| Designate Output File
This null valued function is used to open a file for output.
Such output is attained through use of the "wfr" write file
record function. If the "soc,FIL" function is used, then any
SAM76 language functions which delivers output will go to the
file.
A file is closed through execution of %dof/ with no arguments.
Exit using "control C" or "ex" function will not close output
files.
235 - |rfr| Read File Record
The value of this function is one record from a file previously
opened using the "dif" function. Typically this will be 128
characters, except for the last record of the file which may be
shorter.
236 - |wfr,s| Write File Record
This null valued function will write out to a previously
properly opened file the string symbolized by "s". There is no
limit as to the number of characters in string "s".
237 - |@t| wh@ is processor Title
The value of this function provides information as to the
authorship of the processor being used; a typical example is:
&@@t/=<ncra> indicating that the authors are:
"Neil Colvin Claude Roichel Roger Amidon.
238 - |@f,s0| wh@ are Functions
The value of this function is a list of built-in functions
available within the system. Each function mnemonic is preceded
by the string of characters symbolized by "s0". It is advisable
to use the "neutral" form of expression as shown below:
&@@f, /=(Value will be list of functions)
Note use of two "@"; since that symbol is a warning character it
must be protected, and in the above example it is used as the
single character protector to protect itself.
239 - |@n| wh@ is processor ser. Number
The value returned through execution of this function is the
version number of the processor being used. This number is
tested by some of the functions - and may also be so tested by
the user - to ascertain compatibility between scripts and run
time load modules that may be moved between systems and users.
240 - |@cn,current,new| Change function Name
This function allows the user to rename any of the resident
function "current" names to any desired "new" name; these new
names must consist of two or three alphabetic characters; in
changing names the user should be particularly careful in his
command sequence. Usually "os" and "is" should not be changed.
241 - |lic,s0| List Input Channels
The value of this function is a list of channel names that may
be used in the "sic" select input channel function; each name in
the value returned is preceded by the string symbolized by "s0".
Typical of these channel names are the following:
CON Console, normally the user keyboard
RDR Reader, paper tape, cassette &c.
FIL A disk file, opened with the "dif" function
USR Device, user software driver address at "PUI"
242 - |loc,s0| List Output Channels
The value of this function is a list of the channel names that
may be used in the "soc" select output channel function. Each
name is preceded with the string symbolized by "s0". Typical
symbol names returned by this function are:
CON Normally the user display unit
PUN Punch, Cassette, &c.
FIL A disk file properly opened with the "dof" function
USR Device whose user software address is at "PUO"
LST a Listing device
243 - |rf,filname| Read File
The value of this function is the contents of the file, whose
name is denoted by "filname". This file is assumed to be in the
normal format used by the host system for USASCII files.
244 - |wf,filname,s| Write File
This function writes out in the normal format used by the host
system for USASCII files, a file whose name is denoted by
"filname" containing the string symbolized by "s".
245 - |sic,sym| Select Input Channel
This null valued function assigns to the channel whose name is
symbolized by "sym" one of the two groups of functions; if this
function is executed actively the assignment is of the Group 1
functions, if neutrally the assignment is of the Group 2
functions. [see 246 for definition of Group 1 and Group 2
functions].
246 - |soc,sym| Select Output Channel
This null valued function assigns to the channel whose name is
symbolized by "sym" one of the two groups of output functions.
If this function is executed actively, then the assignnment is
of the Group 1 functions, if neutrally then the assignment is of
the Group 2 functions.
Group 1 functions are those normally initialized to interact
with the user console; these are: "is", "os", "ic", "id", "im",
"vt", and "tm". Group 2 functions are those normally initialized
to interact with the "Reader/Punch" devices; these are: "it",
"ot", "idt".
247 - |rj,s,s1,d,s2| Return Justified lines
To be defined and coded.
248 - |rp,s,s1,d,s2| Return Paddded lines
To be defined and coded.
249 - |etb,s| Erase Trailing Blanks
This function, which Neil Colvin insisted be made available,
serves to delete from the character string symbolized by "s" all
blanks which immediately precede the occurence of "new line"
codes; particularly useful when reading punched cards with many
trailing blank columns. [Note: Not usually provided]
250 - |cwc,s1| Change Warning Character
\cwc, ... \ Change Warn. Char. (initial)
The purpose of this function is to allow the user to select
other symbols for syntactic purposes than those initially
defined in the language; see [qwc]. The active form of this
function changes the current user tables while the neutral form
changes the initial table; see [cnb].
251 - |qwc,a2,a1,...,a| Query Warning Characters
The value of this function is a list of the currently specified
and functional warning characters of the language.
252 - |rn,n| Random Number
The value of this function is a number ranging between 0 and
"n", randomly selected through a computational algorithm; see
[srn].
253 - |srn,n| Seed Random Number
Through use of this function the automatic generation of random
numbers is initiated; the user seed number is symbolized by "n"
in the above expression.
254 - |xqs,s0| X Query work Space
The value of this function is a set of two numbers in the
current "X" base which identify the first and last addresses of
the user work space. Each number is preceded with the string
symbolized by "s0". The work space so indicated includes all of
the variables that may have been set by the user. If this work
space is saved, then subsequently reloaded and a "hot" entry is
made into the SAM76 interpreter, then whatever process was
interrupted at the time of exit and save will be resumed. [See
261/cws and 112/ex].
255 - |xi,port| eXperimental Input
The value of this function is that number in the current "X"
base which results from an attempted input from the port whose
designation in the "X" base is symbolized by "port".
256 - |xo,x,port| eXperimental Output
Execution of this function enable output of the "X" base value
of "x" to the port whose "X" base id is symbolized by "port".
257 - |ti,s1,s2| Time
The value of this function is the current time of day derived
from a system clock, in the format HH MM SS, where HH represent
Hours, MM represent Minutes and SS seconds; these elements are
separated in the value string by the string symbolized by "s1".
258 - |sti,t1,t2,t3| Set Time
Through use of this function the correct current (or incorrect
if desired) time of day is established in the system.
259 - |da,s0| Date
The value of this function is the current calendar date in the
sequence of "day, month, and year"; each of these elements is
preceded by the string of characters denoted by "s0". The date
may be either user entered (using the "sda" function) or may be
automatically generated by a system clock or calendar; see
[sda].
260 - |sda,da,mo,yr| Set Date
This function enables the user to set into the system the
current ( or any other) desired date.
261 - |cws,d| Change Work Space
\cws,x\
This function allows a respecification of the upper limit of
space required for function execution and text storage; the
neutral form is used to allow a binary (hex, octal ... ) number
denoted by "x" to be entered; the active form uses the decimal
number system instead; see [qws]. The use of this function
without any arguments serves to reduce the work space to its
practical minimum size.
262 - |qws| Query Work Space
\qws\
The value of this function is the upper limit of the user work
space; active form of this expression yields the value as a
decimal number; neutral form yields the value in the current "X"
base.
263 - |rcp,d1,d2,s| Return Character Picture
To be coded.
264 - |qio| Query current IO assignments
The value of this function is in the current "X" base the value
of "IOBYTE" as defined by the monitor - if such a facility is
provided.
265 - |sio,iobyte| Set IObyte
This null valued function is used to reasssign the monitor
"IOBYTE" if provided for. It should be noted that a "cold" start
entry into the processor carries with it the current monitor
assignment; if this function is used then a "control C" or "ex"
exit causes restoration back to the original assignment. A
"warm" reentry or a "hot" continue causes reassignment to the
setting in force at the time of exit.
266 - |cpc,x1,t1,...tn| Change Protection Class
Execution of this function changes the protection class of texts
whose names are symbolized by "t1",... to the "X" base value
symbolized by "x1".
267 - |qpc,s0,t1,t2,...,t| Query Protection Class
The value of this function is a list of the protection classes
of the texts named "t1", "t2", ... , each protection class value
is preceded by the string symbolized by "s0".
Protection class of "HEX 80" is reserved for texts which contain
machine code; Classes 1 through 8 are for user use. Texts are
always given a protection class of 8 at time of definition.
268 - |nud,func,arguments| Null Display mode
The "nud" primitive serves to modify the scanner to the end that
no value is returned by the function whose name or mnemonic is
symbolized by "func" (with its appropriate arguments). Instead
the currently assigned console device displays the value.
269 - |xfs,unit,trk,sec,s0| X Fetch Sector
The value of this function is the contents, in the form of
actual 8 bit bytes of the identified sector. Each "byte" is
preceded by the string symbolized by "s0".
270 - |xss,unit,trk,sec,D| X Specify Sector parameters
This null valued function enables the specification of sector
formats other than 128 bytes/sector. Details are somewhat
machine dependent and defined where relevant.
271 - |xu,sub,arguments| Xperimental User
This function, through the use of subfunctions whose mnemonics
are symbolized by "sub", with appropriate additional arguments,
provides a variety of machine dependent debugging software
tools. Explicitly defined are the following:
-01 |xu,lf,s0| List "xu" functions
-02 |xu,dm,from,to,with| Duplicate Memory
-03 |xu,fm,from,to,s0| Fetch Memory
-04 |xu,tm,from,to| Type Memory
-05 |xu,rl,label| Read contents of "label"
-06 |xu,wl,label,Xval| Write in "label" "Xval"
-07 |xu,mm,from,until,to| Move Memory
-08 |xu,vm,from,til,from| Verify Memory
-09 |xu,dt,t,x1,x2,..| Define Text to contain x1..
-10 |xu,ft,t,s0| Fetch text "X" contents
-11 |xu,sum,from,to| Check Sum from to incl.
272 - |xqf,s| eXperimental Query Function
The value of this function is the machine adress in "X" base
radix of the entry point for the function whose mnemonic is
denoted by the string "s".
273 - |xcf,s,x| eXperimental Change Function
This function is used to assign a user defined machine adress
symbolized by the "X" base number "x" for the built in function
whose mnemonic is denoted by "s".
274 - |trs,sub,arguments| TRS-80 Computer Functions
This function provides access to a number of subfunctions whose
mnemonics are symbolized by "sub" above. A list of typical such
subfunctions particularized for the TRS-80 is given below:
-01 |trs,lf,s0| List Functions
-02 |trs,bof,f| Bring Overlay File
-03 |trs,idt,d| Input "d" Texts
-04 |trs,it| Input Text
-05 |trs,qfl| Query Flags
-06 |trs,rcv,f,x1,x2,x3| Receive
-07 |trs,run,f| Run program
-08 |trs,sfl,x| Set Flags
-09 |trs,sds,d| Set Display Speed
-10 |trs,sws,f| Save Work Space
-11 |trs,sof,f,x1,x2| Save Overlay File
-12 |trs,xmt,f,x1,x2,x3| Transmit.