perm filename FEATS[S,AIL]29 blob
sn#202939 filedate 1976-02-25 generic text, type C, neo UTF8
COMMENT ⊗ VALID 00005 PAGES
C REC PAGE DESCRIPTION
C00001 00001
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
C00026 ENDMK
C⊗;
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")
RFS 11/18/73
%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
BE ASSUMED.
[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
inner loop.
%AW% ARRCLR routine added. If BUF is any arithmetic or itemvar array,
(including string arrays), ARRCLR(BUF) will zero out the entire
array.
[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
[SAIL,COMSER]
%AZ% see DCS
B-SERIES FEATURES
%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
problem latter....
[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:
ARG_LIST(FOO,BAR,...,ZORCH)
which works roughly like:
{{REF_ITEM(FOO),...,REF_ITEM(ZORCH)}}
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.
RHT
%BJ% Added a routine $PRINT(string,ctl). See ioser for details
[IOSER/35,HEAD,GOGOL] RHT
%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.
[STRSER/16]
%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.
[GOGOL] RHT
%BM% Garbage collection for records. many edits
RHT
%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.)
RHT
%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)
ARGUMENT.
[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
C SERIES
%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
off. SAIL,SYM
%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
descriptor. GOGOL/30
%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
not found.
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
%CW,%CX,%CY,%CZ unused
D SERIES
%DA% a number of edits to RECSER & GOGOL to allow for auto
garbage collection.
RHT 9-75
%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
hardware).
TRIGS/4/5 JAM
%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
banner lines.
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,
however.
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"
INTEGER TBL,BRCHAR;
TBL←GETBREAK; SETBREAK(TBL,BRK,OMIT,MODE);
RSLT←SCAN(ARG,TBL,BRCHAR);
RELBREAK(TBL);
RETURN(RSLT) END "SCANC";