perm filename FEATS[S,AIL] blob sn#286338
filedate 1977-06-06 generic text, type C, neo UTF8
COMMENT ⊗ VALID 00006 PAGES
C REC PAGE DESCRIPTION
C00002 00002 FILE OF NEW FEATURES ADDED TO SAIL. I.E. CHANGES NOT BUGS
C00012 00003 B-SERIES FEATURES
C00018 00004 C SERIES
C00023 00005 D SERIES
C00036 00006 E SERIES
FILE OF NEW FEATURES ADDED TO SAIL. I.E. CHANGES NOT BUGS
%AA% New sort of declaration:
SPROUT_DEFAULTS <integer constant>;
Semantics: Whenever the procedure in which this occurs is
sprouted, the appropriate fields of the <integer
constant> will be used to specify the p-stack,
sp-stack, quantum, and priority of the sprouted process.
(but only if nothing is explicitly stated in the
options to the sprout for the particular field in question).
[GEN,HEL,NWORLD] RHT 8-31-73 OK RHT
%AB% Extension to capabilites of RELEASE
RELEASE now takes a second (defaultible) argument, the CLOSE
inhibit bits (See RELEAS description in UUO manual)
These are defaulted to zero when not specified so old programs
which did not specify them will work as before.
[FOO2,IOSER] JRL mid JULY 73
%AC% Remove global declaration option to error recovery.
Now the compiler doesn't ask whether one wants their
undeclared identifiers declared globally, it merely
declares them locally.
[GEN] KVL 9/27/73
%AD% Arrange for Alloc? (on reentry) to know about lower case.
[GOGOL] RHT 10/6/73
%AE% Arrange things so that you can pass a typed itemvar to
an untyped itemvar formal.
[STATS] RHT 10/18/73
%AF% Have separate routines for set and list membership booleans
[LEAP,LEPRUN] JRL 10/24/73
%AG% Implement Item Overlap capabilities for separately compiled procedures.
some other changes to leap initialization code to start
the one and two-word list spaces as very small amounts
[LEAP,LEPRUN,GEN] JRL 10/24/73
%AF% Made suspend an itemvar procedure, so that the effect
of x←suspend(myproc) is to allow this process to be restarted
via a co-routine call.
[FOO2] RHT 10/24/73
%AG% Arrange for caller(newly sprouted process) to be the sprouting
process. (i.e. initialize rsmr←daddy).
[NWORLD] RHT 10/28/73
%AH% fix things so that can type ree before starting a sail program.
[GOGOL] RHT 10/29/73
%AI% insert stuff so that one may log their error messages. I forgot to
put in feature numbers in HEAD, PARSE, HEL, & GEN, but remembered
in COMSER, GOGOL, & STRSER.
[HEAD, PARSE, HEL, GEN, COMSER, GOGOL, STRSER] KVL 11/10/73
%AJ% Reorganize HEAD by transfering from HEAD to SAIL those
macros (such as QSTACKs) that are only useful in the compiler.
Also, incorporate the file that used to be FILSPC into HEAD.
The effect of this is to get all the switch settings more together.
[HEAD,SAIL,FILSPC,command files] RHT 11/18/73
%AK% Replace exponentiation code in GOGOL to make it somewhat better;
put together a set of user-callable trig routines that will work
with APR interrupts on. Also change error handler to make it
reentrant; user can stuff address of an error routine in .ERRP.;
it is called as rout(uuo addr,"error string","usererr response str")
%AL% Make outer block look more like a procedure by having it treat
RF right on exit.
[SAIL,GEN,GOGOL,TOTAL] RHT 11/24/73
%AM% New syntax for required initializations:
REQUIRE procid INITIALIZATION [phase#];
If [phase] is left out user phase 1 is assumed. Otherwise,
the specified (user) phase number will be used.
[HEL,GEN] RHT 11/24/73
%AN% ALLOW REQUIRES TO HAVE CONSTANT EXPRESSIONS AS WELL AS STRAIGHT
CONSTANTS. AS BEFORE IF NO EXPRESSION IS GIVEN THE VALUE 0 WILL
[HEL,GEN,PROCES] JRL 11-25-73
%AO% Do a SETPR2 if REMAP loses. I'm actually not too happy about it,
but may as well try.
[GOGOL,SAIL] RHT 11-25-73
%AQ% EVALREDEFINE implemented which bearsthe same relationship to REDEFINE
EVALDEFINE does to DEFINE.
[HEL,GEN,PARSE,SAIL] HJS 11-30-73
%AR% CVPS converts a macro actual parameter to a string. Very much like
a combination of ASSIGNC and CFMS.
[HEL,GEN,PARSE,SAIL] HJS 11-30-73
%AS% Conditional compilation is now compatible with listing files.
The format is as follows: The condional compilation reserved
words do not get listed. Similarly for the condition (i.e.
IFC, IFCR, and WHILEC). In other words only the code which
will be translated into executable code is shown on the listing.
[HEL,SYM,GEN] HJS 11-30-73
%AT% A left arrow following a macro name upon its definition or
redefinition is legal (equal sign still works).
[HEL] HJS 11-30-73
%AU% Allow FAIL, SUCCEED to be itemvar functions. They will perform
the same as RESUME when the matching procedure is sprouted by the
user. If the matching procedure is sprouted by the FOREACH interpreter
they will return the item ANY (CVI(0)).
[HEL,LEAP] JRL 12-1-73
%AV% X←CHNCDB(CHANNEL) returns pointer to 3 word block used in open.
Useful for interfacing assembly language routines with i/o in
%AW% ARRCLR routine added. If BUF is any arithmetic or itemvar array,
(including string arrays), ARRCLR(BUF) will zero out the entire
[FOO2,ARYSER) RLS 12-1-73
%AX% SETPL routine added. SETPL(channel,@linnum,@pagnum,@sosnum)
allows linnum, pagnum, and sosnum to keep track of the string
input from CHANNEL. Whenever a '12 is encountered, LINNUM is
incremented. Whenever a '14 is encountered, PAGNUM is incremented,
and LINNUM is zeroed. Whenever a stopgap line no. is encountered, it
is placed into SOSNUM. When fully implemented, this will work on
the INPUT, INTIN, REALIN functions. (The code has not been added to
those functions yet, since there are some problems with INPUT that
should be fixed first.)
[GOGOL,IOSER] rls 12-1-73
looked at some code for INPUT, but not entirely happy yet about any of
this mess. The inner loop is getting longer & longer, thus screwing
normal case losers in return for some convenience to others. Perhaps
should find a "filter" test that detects the absence of any "special"
funnyness & then do some decoding. Alternatively, provide a "fast form"
inner loop. May not be worth it for 2-3 instructions/char though.
Put in a very "dumb" addition that adds one more instruction to the
loop. Fix it soon, though!!!
[IOSER] rht 3-26-74
%AY% make SAIL compiler call intmap runtime routine
%AZ% see DCS
%BA% SEE DCS
%BB% SEE DCS
%BC% Add Bail symbol outputing routines to SAIL and GEN
under the new BAIL switch. The switch, of course, is
turned off. Needs to be put in now to avoid merger
[HEAD,GEN,SAIL] KVL 1-6-74
%BD% Add facility to have FOREACH statement without binding list
for matching procedure fanciers.
[HEL,LEAP] JRL 1-7-74
%BE% make minor fixes to allow GLOBAL events.
[NWORLD] RHT 1-8-74
%BF% (Actually, a gross moby hack) Add XX table entry which
can point to longer error string buffer. The "right" fix
is probably to rework the error handling or else to
add a longer string buffer, although an alternative would be
to allow this to stand "as is", with a runtime routine
ERMSBF(#chars want to allow) provided to allow the loser
to diddle things. This is what I will do, with ERMSBF(0)
causing you to revert to using the compiled-in buffer.
[GOGOL,FOO2] RHT 2-16-74
%BG% (CMU =A1=) Add breakset mode "F", which undoes "K".
[IOSER/25] RHT 2-22-74
%BH% add a list connstruct:
which works roughly like:
except that all the items are marked so that APPLY deletes them.
[HEL,LEAP,ARYSER] RHT 2-24-74
%BI% Adding records to the language. This entails many additions.
First additions are to the runtime system.
%BJ% Added a routine $PRINT(string,ctl). See ioser for details
%BK% A small improvement put in at the request of the pub hackers
Munched SCAN so it only copies strings when it has to.
Added a user table entry BRKOMT, which includes a bit (rh)
turned on whenever the corresponding break table has an omit char.
%BL% A new feature for uuo dispatching. Instead of giving an error
right away for ILLUUO, instead look first at cell .UUOCN. If
it is non-zero, then execute the instruction found there & return.
%BM% Garbage collection for records. many edits
%BN% Put out a pointer to a string constant containing the class id
right before put out the class descriptor. (For convenience,
make sure the string is also an ASCIZ.)
%BO% (CMU =C3=) For CMU, turn underbar into excl,not equal into hash
[GOGOL,PARSE] RHT 8-31-74
%BP% (CMU =C4=) ALLOW NULL PPNS & NULL CHARS IN PPNS
[IOSER/(6:7)] RHT 9-7-74
%BQ% MAKE CLOSE TAKE THE CLOSE-INHIBIT FLAGS AS A SECOND (OPTIONAL)
[IOSER/26] RHT 10-11-74
%BR% removed the various HACKS, getting ready for SAISG8
[<many>] RHT 10-9-74
%BS% There are now 72 break tables for SCAN, INPUT, etc. A user
normally sees only 1 to 54. The others are -17 to 0, which
can be accessed by setting BRKPRV non-zero in the user table.
Break tables are now CORGET blocks, with pointers to groups
of 18. Also, new functions GETBREAK and RELBREAK, to reserve
and release breaktables.
%BT% Add an XX variable .CORIN -- Will eventually be used for a CORGET
trapper of some sort. (put in at the behest of CMU)
%BU% Add an xx variable .LEPIN -- put in at the behest of CMU for
LEAP trapper of some sort to be written by LDE.
%BV% CMU only -- change RUN call to CALLI -22 for LDE.
%BT% Make outer block PD look more like others.
[SAIL/33,GEN] RHT 10-19-74
%BV% Make the Spc Alloc Blk point at outer block PD
%BW% CV6STR The correct sixbit to string routine
[STRSER/17] BH 11-7-74
%BX% Make SPROUT enqueue processes FIFO rathe than LIFO.
[NWORLD/8] rht 11-12-74
%BY% Make RENAME correct for date75 lossage. Do this by preventing
the loser from setting the date. Add a new function ERENAME
(extended rename) to do the whole works.
[IOSER/28] rht 12-16-74
%BZ% random other fixes for DATE 75.
[SAIL] RHT 12-16-74
%CA% NEW RUNTIME CVASTR. LIKE CVSTR BUT STOPS ON NULLS
[STRSER]/16 RHT 2-12-74
%CB% CHANGES FOR NEW-STYLE RECORD CLASS FORMAT.
%CC% STRING SUBFIELDS IN RECORDS
%CD% PDQ'S NEW RECORD GARBAGE COLLECTION & STRING SUBFIELD RUNTIMES.
NEW RECSER, LOTS OF HERE'S IN SPARES. JFR 6-7-75
Rest of C-series features reserved for JFR's summer work at CMU.
These entries were transcribed 9-22-75 but bear the original dates.
7-29-75 JFR GOGOL,SAIL,SYM
%CE% X switch, allows partial compile, save, continue where you left
%CF% print out extension and ppn of source file on tty when compiling
and always indent 2*levels spaces.
8-Jul-75 JFR SAIL,SYM
%CG% V switch, see below.
%CH% W switch, see below.
Added switches /V and /W; V for oVerlays, mainly forces all links
to low segment. W for "where", optional symbols to aid external
code optimizer. Changes can be found by searching for OVRSAI
and OPTSYM. Assemled @THAT.FMD, was forced to increase DSIZE
(data block size), loaded and saved as SAILDD.
3-Jul-75 JFR GEN, ARRAY, STATS, SAIL, HEAD, LEAP
%CI% more information in compiler "fatal end of source file". SYM
%CJ% reworked UUO handler for new error handling system. GOGOL/23-26,30-32
%CK% Effective addr of ARERR can be either word1 or word2 of string
%CL% Add identifying information in left half of second word of name block
in .REL file
7-22-75 JFR TOTAL/36
%CM% "E" response to error handler now gets characters for filename
by INCHWL rather that INCHRW, allows graceful typos. Altmode gets
you back to the question loop.
7-22-75 JFR GOGOL/31
%CN% Save all 17 registers in global INIACS on first start. GOGOL/9,11
%CO% Make GOGTAB look like an external array. USERCON is obsolete. GOGOL/37
%CP% New runtime, EDFILE ("file",line,page), calls editor. GOGOL/34,SPARES,FOO2
%CQ% More information on "I-O device error", IOSER/4
%CR% Give more info for "names of begin and end don't match".
7-29-75 JFR GEN/12,15
%CS% BACKUP runtime for non-Stanford DEC systems
7-30-75 JFR IOSER/31,SPARES,FOO2
%CT% Better message, let user specify from terminal if source file
8-12-75 JFR SAIL/37
%CU% Make missing parentheses and commas in macro calls
continuable. If the "(" is missing, the statement will
probably be flushed soon afterwards. If the ")" is missing,
the macro call will be ignored.
8-16-75 JFR SYM/10
%CV% Put in a check for PDA>(JOBOVL) in order to help find errant
ASSIGNs in overlay programs.
8-22-75 JFR ARYSER/6
%DA% a number of edits to RECSER & GOGOL to allow for auto
%DB% REQUIRE "some chars" COMPILER!SWITCHES. Merely passes the string
to the switch scanner. You get what you get.
GEN/16,20; HEL JFR 9-21-75
%DC% APR trap handling made more honest in case of JFCL (emulates
%DD% Compiler command scanner: All switches which double stack sizes
(D,P,Q,R,S) now do so only if the value of the switch is zero.
If the value is not zero, the value becomes the stack size.
Thus, /P doubles the stack size and /100P sets it to =100.
JFR SAIL/42 10-24-75
%DE% Listing file banner lines changed to include switch settings,
also some slight style changes.
JFR SAIL/31, SYM/24,27, GEN/12 10-25-75
%DF% Add option bit (100) to /F switch to suppress listing of
RHT SAIL/18/31/43 SYM/27
%DG% Modify APPLY to detect BAILishness by looking at ARGLIS
word instead of context. If LH of arglis is zero (ie length
= 0) but RH points at something, assume a BAIL APPLY.
The new code still realizes that -1 is not a valid context,
RHT ARYSER/7 10-27-75
%DH% Remember second semblk of current BEGIN in TRKBEG. Use for better
error message "fatal end of source file".
JFR GEN/12/14 SYM/24
%DI% Better method to detect start of coordinate for BAIL, esp. for CASE.
JFR SYM/6 12-2-75
%DJ% A version of SCAN which is callable at compile-time, to aid in
macro hacking, etc. JFR 2-35-76[FOO2,STRSER]
STRING PROCEDURE SCANC(STRING ARG,BRK,OMIT,MODE); BEGIN "SCANC"
RETURN(RSLT) END "SCANC";
%DK% Added subroutines for TMPCOR reading/writing
MJC IOSER 3-9-76
%DL% Prevent enclobberment of .SM1 file if /X and /B and user gives same
name on extended compilation, by rename of first .SM1 file to .SM0.
JFR SYM/24 4-30-76
%DM% (CMU =F4=) Generate more likely SOS line numbers in compiler in cae
file has no line numbers (EXPORT only)
JFR SYM/21 6-19-76
%DN% /A switch in compiler, for code options.
[SAIL/24,40 ff,TOTAL/7, STATS/29, GEN/44, EXPRS/12, STATS/44,
LEAP/23, TOTAL/20, SYM/27, SAIL/31,STATS/49]
%DO% Use .REL device for .SM1 device (used to assume 'DSK'); put
complete .SM1 name into BALNK loader block.
[SAIL/37, GEN/45] JFR 7-5-76
%DP% Allow trailing ] to be omitted in ppn at runtime file scan.
[IOSER/7] JFR 8-13-76
%DQ% BREAKSET mode "Z" says: believe the breaktable for character '0
(ASCII NUL) on INPUT. IOSER/16, STRSER/20:22, IOSER.TNX/64P
%DR% When required source!file is not found, have editor response E or T
start editing the file which had the require, not the file which
does not exist.
[SAIL/37] JFR 8-17-76
%DS% fix RESERVED, add CONOK for DECLARATION
[HEL,GEN/5,23] JFR 8-21-76
%DT% FORTRAN-10 calling sequence under /20A option; also fixed #UX.
[SAIL/24,STATS/38,43,44] JFR 8-22-76
%DU% LONG (DOUBLE PRECISION) REAL data type. UNDER CONSTRUCTION 9-23-76
% % SFD (subfile directory) and other TOPS-10 6.02/5.07 stuff,
from Hedrick (Coordinated Science Lab, U. of Illinois)
ENTRY 1-Oct-76 CLH everything
=I12= Set up conditionals for export to Stanford. Stuff having to
do with batch system or TECO linkage went under DEC, which is set
in HEAD to IFE STANSW!CMUSW!TENXSW. Stuff having to do with SFD's
went under SFDS, which is set in HEAD to IFG SFDLVL. Also, use
SFDLVL in SFD code to control depth of SFD's.
Some code is not under any switch: bug fixes, changes to make
[,] represent your PPN rather than 0, accepting = as well as ← in
ENTRY 25-Sep-76 CLH SAIL/37
=I11= Fixed the code that allows user to respecify file name of
required file in case it was not found. JFR had forgotten to
zero DSKSW before reading file name from the TTY.
ENTRY 24-Sep-76 CLH SAIL,HEAD/12,GOGOL/26,TOTAL/49,BAIL/12
=I10= Inserted SFD's in the compiler. Mainly changed file name
scanner in SAIL. Had to find room for the path and be sure it
is copied whenever the PPN is. Problems with REQUIRE LOAD!MODULES,
since can't put SFD's in block 16 or 17.
Changed BAIL to put whole path instead of just PPN in
file information block. Also, BAIL now uses the block length
for this kind of block so it can read either old or new
ENTRY 21-Sep-76 CLH STRSER/20,GOGOL,HEAD/16,IOSER
=I09= Add SFD's to the runtimes. Required lots of minor
changes various places:
Added global variable MYPPN in GOGOL. Set to GETPPN in %ALLOC.
Added GOGTAB entry PATHBL which is the path block when needed.
Note that like FNAME(USER), PATHBL(USER) is overwritten next
time a file is decoded.
Modified FILNAM in IOSER to recognize SFD's and make the PPN
a pointer to PATHBL(USER).
Modified CVFIL in STRSER to set !SKIP! = 1 if the PPN is such
a funny pointer, so old programs won't get messed up.
Modified editor interface in GOGOL to properly understand PPN
that is a pointer, for use by CALLEDITOR.
Note that  is still 0, but [,] is the user's PPN.
The compiler and BAIL have not yet been changed, as this may be
more major. I hope the runtime changes don't mess up the
compiler! They shouldn't if one doesn't type SFD's.
ENTRY 13-Sep-76 CLH IOSER/31
=I08= Make INCHWL and INCHSL break on altmode as well as CR
and LF. The EXPORT code appeared to work this way, but it
was just by chance, as there was Stanford-only code in it.
CMU didn't break on altmode.
ENTRY 27-Jun-76 CLH HEAD/5
Turn on KI10SW. Apparently the only affect is for conversion
between integer and real.
ENTRY 27-Jun-76 CLH SAIL/32
=I06= If there is a compilation error in a batch job, output
? Error detected for MPB.
ENTRY 27-Jun-76 CLH SAIL/37/43
=I05= Allow equal sign as well as left arrow in SAIL command
ENTRY 1-Mar-76 CLH IOSER/31
=I07= Bug fix in INCHWL. If more than 144 characters typed,
called a routine that garbaged an AC and lost a character of
the input string.
ENTRY 2-Dec-75 CLH GOGOL/26
=I04= Eliminate special CMU PPN output mapping. Code for input
left in, though causes an error if CMU PPN actually used.
ENTRY 8-Aug-75 CLH GOGOL/31
=I03= Modify DDT calling sequence so it can use DEC DDT (don't
assume LH(.JBDDT) is zero).
ENTRY 31-May-75 CLH COMSER/5/6,GOGOL,SAIL/14
=I02= Added the following features:
(1) Check to see whether it is a batch job. If so, simulate
linefeed response to error handler (auto continue).
(2) Made T response to error handler link to TECO.
(3) Use EXPORT linkage to SOS, modified to handle TECO, too.
11-25-76 JFR installed the following from UOR:
\UR#4\ ALLOW := FOR ←, >= FOR GEQ ETC
\UR#5\ BETTER LISTING FOR CONDITIONAL ASSYMBLY
\UR#8\ IN SAILDD PUT A LINEFEED AFTER DISPLAYED LINE.
\UR#10\ ADD CATLST,COPARR TO SAIDM1 SO WON'T NEED LEAP FOR
\UR#11\ GIVE BETTER MESSAGE FOR MISSING STEP AMOUNT (FOR STMT)
%DV% Allow for all the LUUO's that the hardware will.
[GOGOL/23] JFR 11-26-76
%DW% When transferring to DDT from error handler, put return address
in JOBOPC so that αP from RAID wins. (SUAI and UOR only.)
[GOGOL/30] JFR 12-8-87
=I13= SFD fix. [SAIL/30] JFR 1-2-77
=I14= BATCH fix [SAIL/37] JFR 1-2-77
%DX% Catch-all ELSE for CASE statements. The word 'ELSE' is treated
as an explicit case number which catches all cases not mentioned,
and in addition catches the bounds-error case. Thus a CASE which
has an ELSE does not generate a call to CSERR. Error handling
also improved; old way did JRST @ on bad value, new way just
ignores statement completely (except for ELSE).
Jump table is also trimmed at the front if possible without LOADER
[HEL/6/13, STATS/16/17/18] JFR 1-4-77
%DY% Let user specify what character signifies exponent in CVE.
New user table entry EXPCHR. Make "E" work for "@" in REALIN.
[HEAD/16,STRSER/9,IOSER.TNX/72,IOSER/21] GJA (GERRY AGIN %SRI-AI) /JFR
%DZ% Allow TENEX user to specify where his user code segment starts.
New user table entry SEGBOT.
[HEAD/16,GOGOL/42] GJA/JFR 1-13-77
%EA% Zero compiler listing buffer so that SOS line numbers are not
accidentally produced in iisting file.
[SAIL/33] JFR 1-28-77
%EB% Recode listing manipulations with macros to allow more flexible
[SAIL/33, SYM] JFR 2-4-77