Google
 

Trailing-Edge - PDP-10 Archives - BB-5471C-BM_1982 - algol-documentation/algol.doc
There are 4 other files named algol.doc in the archive. Click here to see a list.
ALG310.DOC -- Changes from  V10A/V1A(145) to V10B/V1.2(310)     Page 1
January 1982
































COPYRIGHT (C) 1974,1981,1982 BY
DIGITAL EQUIPMENT CORPORATION, MAYNARD, MASS.


THIS SOFTWARE IS FURNISHED UNDER A LICENSE AND MAY BE USED AND  COPIED
ONLY  IN  ACCORDANCE  WITH  THE  TERMS  OF  SUCH  LICENSE AND WITH THE
INCLUSION OF THE ABOVE COPYRIGHT NOTICE.  THIS SOFTWARE OR  ANY  OTHER
COPIES  THEROF  MAY NOT BE PROVIDED OR OTHERWISE MADE AVAILABLE TO ANY
OTHER PERSON.  NO TITLE TO AND OWNERSHIP OF  THE  SOFTWARE  IS  HEREBY
TRANSFERED.

THE INFORMATION IN THIS SOFTWARE IS SUBJECT TO CHANGE  WITHOUT  NOTICE
AND  SHOULD  NOT  BE  CONSTRUED  AS  A COMMITMENT BY DIGITAL EQUIPMENT
CORPORATION.

DIGITAL ASSUMES NO RESPONSIBILITY FOR THE USE OR  RELIABILITY  OF  ITS
SOFTWARE ON EQUIPMENT WHICH IS NOT SUPPLIED BY DIGITAL.
ALG310.DOC -- Changes from  V10A/V1A(145) to V10B/V1.2(310)     Page 2
January 1982


1.0  SUMMARY.

This is a maintenance release of DECsystem-10 and  DECSYSTEM-20  ALGOL
intended to include all bug fixes made since version 10A(145)/1A(145),
both those published in the Software Dispatch and those reported to us
through  non  SPR channels.  This version will run under all supported
monitors and on all supported hardware.

The ALGOL  Programmer's  Guide  (order  number  AA-0196C-TK)  contains
information  about  the  language  and  compiler.  It is the reference
manual for ALGOL on the DECsystem-10 and DECSYSTEM-20.



2.0  EXTERNAL CHANGES.

The following changes will be noticed by the user:

     1.  Answers from the double-precision exponential procedure  LEXP
         may be slightly different than before.  This is the result of
         edit 240, which was made in response  to  an  SPR.   The  new
         procedure  may  in  some  cases  produce answers which do not
         agree  with  previous  ones,  but  which  in  fact  are  more
         accurate.

     2.  ALGDDT will in some cases give different  line  numbers  than
         before.  This is the result of edit 242 which corrected a bug
         in ALGDDT.  The new line numbers should  be  correct  in  all
         cases now.

     3.  As of edit 163, the backspace key will have the  same  effect
         as the delete key in ALGDDT.

     4.  Edit 243 corrects the way ALGOL programs  determine  if  they
         are  being  run  under batch or not.  If the program is under
         batch, and a fatal  error  starts  ALGDDT,  automatic  TRACE,
         DUMP, and STATISTICS commands are executed.  Previously, this
         would occur even if the user was on a PTY.

     5.  ALGLIB.REL now contains ALGDDT and ALGOTS via a change to the
         .CTL  file.  Users thus may build a nonsharable ALGOL program
         (via  /OTS:NONSHARE  to  LINK)   without   needing   seperate
         ALGDDT.REL and ALGOTS.REL files on SYS:.

     6.  The error message "Monitor call  (GETTAB)  to  get  time/date
         failed"  has  been  changed  to "Monitor call (GETTAB) to get
         batch job status failed".  The date and time are now obtained
         with  DATE  and  MSTIME  UUOs,  rendering  this error message
         unnecessary.  The batch/non-batch status is now obtained with
         the  GETTAB UUO rather than CTLJOB, and the error message has
         been altered to handle this.

     7.  A help file for  the  compiler  has  been  added.   ALGOL.HLP
         contains  information  about the compiler command line format
ALG310.DOC -- Changes from  V10A/V1A(145) to V10B/V1.2(310)     Page 3
January 1982


         and switches.  It is invoked by typing /HELP to the  compiler
         or issuing the "HELP" command to the operating system.

     8.  A new command "DDT"  has  been  added  to  ALGDDT.HLP.   This
         command  existed  in  earlier  versions of ALGDDT but was not
         documented.  It starts the program pointed to  by  .JBDDT  if
         the address is non-zero.

     9.  The ALGDDT prompt ">> "is now displayed before user text when
         ^R  is  typed.   This will echo the entire line as far as the
         user has typed it so far, including the prompt.  Before, only
         the user text would be echoed.

     10. If ALGDDT cannot start  because  of  insufficient  core,  the
         message  "?Can't  start  ALGDDT - not enough core" is printed
         and the program exits.  It no longer causes a fatal  internal
         error  to ALGDDT.  ALGDDT can be reentered after altering the
         core limits of the job and typing "REENTER".

     11. Missing FORWARD reference label and procedure names  are  now
         output  by the compiler.  Previously, the error message would
         leave the user guessing as  to  what  FORWARD  reference  was
         unsatisfied.    The   message   "FORWARD   HAS   NO  MATCHING
         DECLARATION  IN  SAME  BLOCK"  has  been   changed   to   "NO
         DECLARATION   IN  THIS  BLOCK  FOR  FORWARD  <label/procedure
         name>".

     12. Answers from the  COS  and  SIN  library  procedures  may  be
         slightly  different,  due  to  edit 272.  This edit fixed the
         problem of COS(0)=1.00000001 when it should have been exactly
         1.   This  edit  was  necessary  since it was not possible to
         return a number greater than 1 to  many  other  trigonometric
         library procedures.

     13. The listing header now prints the proper format of the system
         name, i.e.  DECsystem-10 or DECSYSTEM-20.

     14. Typing control-C to ALGDDT on TOPS-20 systems  now  echos  ^C
         before returning to EXEC level.

     15. When an ALGOL program enters ALGDDT, an implicit  BREAKOUTPUT
         is  done  to  force  remaining  buffers  to  be dumped to the
         current output device.

     16. The compiler now prints percent signs before warning messages
         and  question  marks before error messages.  These characters
         appear on the left margin, immediately before the line number
         containing the warning or error.

     17. When the compiler is invoked at CCL  level  (monitor  COMPILE
         command),  the  number of warnings is typed if it is non-zero
         at  compilation  end.   Previously,  only  errors  would   be
         summarized this way.
ALG310.DOC -- Changes from  V10A/V1A(145) to V10B/V1.2(310)     Page 4
January 1982


     18. Edit 306 has changed the compiler  error  message  "NO  VALUE
         ASSIGNED  TO  TYPED PROCEDURE" TO "NO VALUE ASSIGNED TO TYPED
         PROCEDURE,  OR  PROCEDURE  NAME   CONFLIICTS   WITH   ANOTHER
         DEFINITION".

     19. As of version 6 of FORTRAN, the  FORTRAN-40  interface  (CALL
         statement)   will   not   be   supported.   The  F10CALL  for
         FORTRAN-10/20 will continue to be supported without change.

     20. The compiler (ALGOL.EXE) and the run time system (ALG310.EXE)
         may  be  protected  as  execute-only  on KL and KS processors
         running TOPS-10.  Refer to the ALGOL.BWR file  for  notes  on
         execute-only and KI processors.



3.0  KNOWN BUGS AND DEFICIENCIES.

     1.  The user should beware that when using DDT  (not  ALGDDT)  to
         debug  ALGOL  programs,  using  the  $X  function  to execute
         instructions will not always  work.   Overflows,  traps,  and
         other  operations  which  could  cause a PSI interrupt may be
         ineffective.  The results of "$X"ing such an  instruction  is
         undefined.

     2.  The compiler  does  not  correctly  generate  CREF  Procedure
         Nesting  Level  tables.   This table graphically presents the
         block levels of the source program and numbers them.  This is
         a minor problem that most users will never be affected by.

     3.  Most  library  procedures  such  as  (but  not  limited   to)
         OPENFILE,  INPUT,  OUTPUT,  COPY, etc. will not accept string
         procedures as arguments.  This is a problem with  the  design
         of  the  library  and  OTS routines and may be addressed at a
         later time.

     4.  The READ library procedure does not detect EOF (End Of  File)
         when  reading strings.  Encountering EOF is a fatal error and
         will halt the  program.   TOPS-10  users  may  use  the  TRAP
         library procedure to detect EOF.

     5.  The  run  time  system  APR  trap  routine   is   not   coded
         recursively.  If an APR trap occurs while the trap handler is
         already processing an earlier APR trap, program behavior will
         be indeterminate.  The most common symptom is a loop, with no
         error  indication.   This  has  been  noted  to  occur   most
         frequently when ALGDDT is attempting to read in the .SYM file
         after a fatal error.  A workaround to this particular  aspect
         of  the  problem  is to load the program, REENTER it to start
         ALGDDT and read the  .SYM  file,  and  then  give  the  START
         command to begin execution.

     6.  The compiler does not detect an error in the following source
         statement:
ALG310.DOC -- Changes from  V10A/V1A(145) to V10B/V1.2(310)     Page 5
January 1982


         foo LINE;

         where "foo" is any single word.  The statement slips past the
         compiler and produces no diagnostic message at all.

     7.  The program 'BEGIN' 'COMMENT';  'END' does not compile.  This
         is the case whenever 'END' immediately follows 'COMMENT'.  In
         such a case the compiler misses  the  'END'  and  issues  the
         message INCORRECT STATEMENT.

     8.  The use of the logical operator NOT with an operand  that  is
         not of type LOGICAL will not return the logical value TRUE or
         FALSE.  Instead  it  simply  complements  then  bits  of  the
         operand   value,   which   generally  does  not  produce  the
         'expected' results.

     9.  There is no ALGDDT command to flush the output buffers,  such
         as the ALGOL procedure BREAKOUTPUT.

     10. The section of  the  documentation  that  discusses  deleting
         files  (section  16.4,  pages  16-4  and  16-5)  is no longer
         correct, especially for TOPS-10 monitors from 7.01 onward.  A
         file  that  exists  on  DSK  can  only be deleted if the file
         channel is allocated with a call  to  the  library  procedure
         INPUT  (which  causes a LOOKUP UUO on any succeeding OPENFILE
         call).  For files on channels  allocated  for  OUTPUT  (which
         will do an ENTER UUO), a second OPENFILE with a null filename
         will merely delete the  new  file  which  has  not  yet  been
         closed.   A file of the specified name that already exists on
         DSK will remain after the second OPENFILE call.  The sequence
         of  statements  necessary to make sure that file 'O.DAT' does
         not exist are:

                OUTPUT(1,"DSK");
                OPENFILE(1,"O.DAT");
                INPUT(1,"DSK");
                OPENFILE(1,"O.DAT");
                OPENFILE(1,"");
                RELEASE(1);



4.0  INSTALLATION INSTRUCTIONS.

The ALGOL distribution tape contains five savesets:

Saveset 1  The product documentation files ALGOL.DOC (this  file)  and
           ALGOL.BWR  (the  beware  file).   The beware file should be
           read before the product is installed on  the  system  area.
           This  saveset  also  contains  the  help  (.HLP)  files for
           ALGOL-10, which should be copied to HLP:.

Saveset 2  The system files ALGOL.EXE, ALGLIB.REL, and ALG310.EXE  for
           ALGOL  10B/1.2  edit  310.   This saveset also contains the
ALG310.DOC -- Changes from  V10A/V1A(145) to V10B/V1.2(310)     Page 6
January 1982


           help files for ALGOL-20.  All these files should be  copied
           to SYS:.

Saveset 3  The UETP test  library  files  ALGOL.VER,  ADPR12.ALG,  and
           ADPR12.COM.   These files are to be copied to area UTP:  on
           TOPS-10 systems, and to PS:<UETP.LIB> on TOPS-20 systems.

Saveset 4  The ALGOL binaries.  These  are  the  files  produced  when
           building the product.

Saveset 5  The ALGOL sources, and the batch file  used  to  build  the
           product (ALGOL.CTL).  Sites adding edits to the product may
           use the .CTL file as a guide for creating a new version  of
           the product.  Instructions on how to use the batch file are
           contained in the .CTL file itself.  The build can occur two
           ways:   with cref listings, or without.  The build requires
           MACRO V.53A(1152) or later, LINK V.4A(1220) or  later,  and
           HELPER.REL  V.5(41).  When the build is complete, the files
           ALGOL.EXE, ALGLIB.REL, and ALG310.EXE can be put on SYS:.



5.0  INTERNAL CHANGES.

Following is a list of all edits since the last release.

Edit    SPR     Comment

146             Fix various bugs with scope of ALGDDT "GOTO" command.
                (ALGDDT)

147             Don't assume register DL is safe over errors in
                ALGDDT.  (ALGDDT)

150             Make line number correct if PC is a return address.
                (ALGDDT)

151             Don't assume result of formal procedure to be double.
                (ALGOTS)

152             Save register AX over possible stack shifts.  (ALGOTS)

153             Perform rounding correctly.  (ALGFUN)

154             Don't increase offset if source already in stack.
                (ALGSER)

155             Improve accuracy of LARCTAN.  Different for 10 and 20
                versions.  (ALGLIB)

156             Don't use GETTAB UUO for date/time.  (ALGDDT)

157             Save context of register DL over stack shifts when
                typing arrays.  (ALGDDT)
ALG310.DOC -- Changes from  V10A/V1A(145) to V10B/V1.2(310)     Page 7
January 1982


160             Don't clobber label address when storing error code.
                (ALGLIB)

161             Accept comment after end statement without error.
                (ALGCON)

162             Include all library procedures in test.  (ALGEXP)

163             Treat backspace as a delete.  (ALGDDT)

164             Don't force single-precision on KI10.  Different for
                10 and 20 versions.  (ALGOTS)

165             Include count of form-feeds in CREF count.  (ALGCON)

166             Correct edit 1002 for errors at block level one.
                (ALGCON)

167             Test for /PRODUCTION correctly.  (ALGDEC)

170             Turn off CREF switch correctly.  (ALGDEC)

171     26346   Add warning count and version number, start edit
                history.  (ALGCON)

172     -----   Add version number.  (ALGOTS)

173     26563   Fix by-name parameter passing.  (ALGOTS)

174     26963   Fix redirected dump output to not double last
                character at BRKBYT call.  (ALGOTS)
175     29965   Applicable to ALGOL-10 only.  Allow trapping EOF after
                edit 145.  (ALGOTS)

176     27013   Tracing of labels in ALGDDT can clobber AX.  (ALGOTS)

177     27052   Do not clobber symbol table if a symbol in an
                enclosing block needs to be extended (erroneous
                program).  (ALGCON)

200     27046   Remember that a call to STRASS uses A0 and A1.
                (ALGCOD)

201     27238   Delocate SP on control-C trap.  (ALGOTS)

202     -----   If parameter mismatch during parameter evaluation in
                PARAM, put DL back to caller's level so that a good
                context is available to the debugger.  (ALGOTS)

203     -----   Routine "DEC" prints one too many characters if asked
                to print a zero in the listing file.  (ALGCON).

204     -----   Produce correct word alignment of listing if /CREF.
                (ALGCON)
ALG310.DOC -- Changes from  V10A/V1A(145) to V10B/V1.2(310)     Page 8
January 1982


205     -----   Applicable to ALGOL-10 only.  Generate library names
                ending in L for /KL10 switch.  (ALGSYS, ALGCON)

206     -----   Applicable to ALGOL-20 only.  Put TRAP back in the
                library.  (ALGSTB, ALGLIB)

207     27801   More of edit 177 for symbols in erroneous programs.
                (ALGCON)

210     27837   Allow six character file name in OPENFILE.  (ALGLIB)

211     -----   Do not trap overflows caused by DDT.  (ALGOTS)

212     28048   Check trap label out of scope more carefully.
                (ALGOTS)

213     28097   PIM mode and byte mode are character modes, not binary
                modes.  (ALGOTS)

214     -----   Applicable to ALGOL-20 only.  Do a dummy UUO after
                setting .JBINT to force PA1050 to notice control-C
                trapping has been set up.  (ALGOTS)

215     28340   Allow blanks everywhere in long real constants.
                (ALGCON)

216     28426   Fix ALGOTS INBLK to not delocate the channel number
                more than once if null skipping causes another IN UUO
                to be done.  (ALGOTS)

217     28469   Applicable to ALGOL-10 only.  Preceed "UNDEFINED
                LABEL" error with a question mark and set WFLAG so no
                .REL file is created.  (ALGCON)

220     -----   Fix embedded assignments involving double precision or
                string variables where something has been stacked.
                This was old edit 776, which was withdrawn because it
                broke /CHECKON, but the sample program which broke now
                compiles.  (ALGCOD)

221     28629   Check properly for floating overflow during double
                precision constant folding for multiply and divide.
                (ALGCOD)

222     28695   ALGDDT will ILL MEM REF if a break point is set on an
                immediate mode instruction, the breakpoint is reached,
                and the program is then continued.  (ALGDDT)

223     28682   LISTOFF/LISTON causes extra characters in listing due
                to byte alignment problems.  (ALGCON)

224     29190   Fix indirect reference to string in A2.  A2 was
                pointing to A0, not @ A0 as it should have been.
                (ALGOTS) [JBS 1-APR-80]
ALG310.DOC -- Changes from  V10A/V1A(145) to V10B/V1.2(310)     Page 9
January 1982


225     29014   Fix code which assumed A2 contained a pointer to A0
                (this assumption was false).  (ALGFUN) [JBS 11-APR-80]

226     29460   Fix double-precision constant at LLN8.  (ALGLIB)
                [JBS 11-APR-80]

227     29298   Do memory management math in righthalf of AC to avoid
                arithmetic overflows when working with non-shared
                hiseg (overflow occurs if more than 131071 words
                return to the heap).  (ALGOTS) [JBS 20-MAY-80]

230     29456   Make 10^( < -63) return a zero result rather than a
                floating overflow.  (ALGLIB) [JBS 22-MAY-80]

231     29458   Make long real numbers < 1 with mantissas near 1 print
                correctly.  (ALGOTS) [JBS 29-MAY-80]

232     RAW     Remove LRLOAD and similar macros (KA10 DMOVE, etc.)
                from ALGDDT.  (ALGDDT) [JBS 4-JUN-80]

233     RAW     Add "DDT" command to help file.  (ALGDDT.HLP)
                [JBS 5-JUN-80]

234     RAW     Add PORTALS in ALGSYS so ALGOTS can be execute-only.
                (ALGSYS, ALGOTS) [JBS 6-JUN-80]

235     RAW     Fix ALGOTS so "REENTER" works after fatal bomb-out on
                a PTY (controlled job).  (ALGOTS) [JBS 6-JUN-80]

236     RAW     Make 10&&^( < -63) return a zero result rather than a
                floating overflow.  (ALGLIB) [JBS 19-JUN-80]

237     RAW     Fix ILL.  MEM.  REF.  problem with "WRITE(TIME)"
                statement, etc.  (ALGLIB) [JBS 21-JUN-80]

240     29459   Fix inaccurate answers from LEXP (double precision
                log).  major rewrite to LEXP in ALGLIB.  (ALGLIB)
                [JBS 25-JUN-80]

241     29672   Don't let ALGDDT start if JACCT bit is on.  (ALGDDT)
                [JBS 10-JUL-80]

242     29457   Fix occasional wrong line # information from ALGDDT
                after program bombs.  This only happened when a
                "SYSER" UUO without an address arg.  was executed.
                (ALGOTS) [JBS 28-JUL-80]

243     29865   Fix ALGOTS and ALGDDT so they properly determine
                whether or not they are being run under batch.  All
                they did was see if they were controlled (i.e., on a
                PTY instead of real batch).  (ALGOTS, ALGDDT)
                [JBS 30-JUL-80]
244     29945   Fix GFIELD to work with strings.  The string header
                itself, rather than the string, was the target for an
ALG310.DOC -- Changes from  V10A/V1A(145) to V10B/V1.2(310)    Page 10
January 1982


                "LDB".  (ALGLIB) [JBS 20-AUG-80]

245     RAW     Add lots of code to GFIELD and SFIELD to handle
                strings.  Previously, all byte manipulation was being
                done in the string header, rather than in the string
                proper.  Install edit 244 first.  (ALGLIB)
                [JBS 8-SEP-80]

246     RAW     Fix heap table scanning routine.  (ALGOTS)
                [JBS 2-OCT-80]

247     30062   Fix infinite compiler loop when compiling bad user
                program.  (ALGCON) [JBS 8-OCT-80]

250     ALGLIB  17-FEB-81       SPR 10-30625    JBS
                LONG REAL to INTEGER conversion inside a procedure fails
                if the integer actual parameter is an array.  Library
                procedure for LONG REAL to INTEGER conversion was stepping
                on A2 - all other conversion routines used only A0 and A1.

251     ALGLIB  23-APR-81       SPR 10-30813    JBS
                Fix READ procedure in ALGLIB.  It was returning space to the
                heap before reading into the string.  This does not work if
                EOF happens and TRAP(38) has been used to catch the EOF.  The
                old string is still intact but it's space was deallocated.
                Subsequent memory management returned the string space twice,
                overlapping heap areas can causing data from different parts
                of the program to write in the same area.  Also, any expandable
                heap space obtained by the routine was lost, so the trap
                handler was changed to check a semaphore and release any "lost"
                space.

252     ALGCON  7-MAY-81        QAR 10-6411     JBS
                MAke error message "ERROR ON A PREVIOUS LINE" have an entry
                in the message dispatch table.  Otherwise any time the message
                is OUTSTR'ed, the UUO dies.

253     ALGCON  21-MAY-81       SPR 10-31117    JBS
                Fix edit 204 so CREF listings won't get "ILLEGAL ADDRESS IN
                UUO" error.  Location FIVEC was not being treated properly
                and the listing output buffers were damaged.  Edit 204 must be
                installed first.

254     ALGOTS  23-JUN-81       QAR 10-6262     JBS
                Reinstall edit 772 form August 1977.

255     ALGOTS  23-JUN-81       QAR 10-6261     JBS
                Reinstall edit 771 form August 1977.

256     ALGLIB  28-JUL-81       SPR 10-31070    JBS
                Delete transient string space in procedures WRITE, LENGTH,
                and SIZE; make DELETE return string space to the heap after
                deleting a string.
ALG310.DOC -- Changes from  V10A/V1A(145) to V10B/V1.2(310)    Page 11
January 1982


257     ALGCON  5-AUG-81        QAR 10-6398     JBS
                Fix CREF generation problem.  Was getting ILL. ADDR. in UUO
                due to edit 204.  Edit 204 is removed by this edit.  Edit
                253 should be installed first (this simply removes another
                part of edit 204).

260     ALGOTS  9-AUG-81        QAR 10-6401     JBS
                Make LONG REAL zero print as 0, not 0&&-39.

261     ALGLIB  9-AUG-81        QAR 10-6399     JBS
                Print <CR><FF> in library procedure PAGE, not <CR><LF><FF>.

262     ALGCOD  11-AUG-81       QAR 10-6405     JBS
                Edit 220 broke /CHECKOFF with LONG REAL arrays.

263     ALGOTS  14-AUG-81       QAR             JBS
                Give heap integrity checker more integrity.  It would loop
                forever if a null entry were found, which can happen if
                an array goes out-of-bounds with /CHECKOFF specified.

264     ALGDDT  17-AUG-81       QAR 10-6408     JBS
                Make ^R echo ALGDDT prompt as well as user typeing, fix the
                way ALGDDT determines if there are more tham 6 chrs. in a
                module name.

265     ALGLIB  19-AUG-81       QAR 10-6402     JBS
                Type GETSEG error code if GETSEG fails.

266     ALGCON, 20-AUG-81       QAR 20-1553     JBS
        ALGSER  Type out name of missing label or procedure if there is
                no match for a FORWARD statement.

267     ALGSTM  20-AUG-81       QAR 10-6409     JBS
                Don't forget to unstack after unlabeled GOTO statements.
                Complicated "computed GOTO's" cause stack misalignment.

270     ALGDDT  26-AUG-81       QAR 10-6407     JBS
                Fail better if there is not enough core to start ALGDDT after
                the user program runs out of core.

271     ALGDDT  27-AUG-81       SPR 20-16711    JBS
                Don't assume invalid boolean input to be octal #, don't
                break on ":=" (edit 264 broke this).

272     ALGLIB  30-AUG-81       SPR 20-16709    JBS
                Make COS(0.0) yield 1, not 1.00000001.  This is necessary
                for ARCCOS functions.

273     ALGCON  30-SEP-81       SPR 20-16710    JBS
                Catch use of single-quote (i.e., reserved word delimiter)
                after "COMMENT" when using reserved word mode, make routine
                LMSGZ print error messages correctly during "pass 1".

274     ALGDDT, 30-SEP-81       QAR 20-1689     JBS
ALG310.DOC -- Changes from  V10A/V1A(145) to V10B/V1.2(310)    Page 12
January 1982


        ALGOTS, Misc. edits to print correct listing headers, echo ^C
        ALGCON  from ALGDDT, breakoutput when entering ALGDDT.

275     ALGLIB  29-OCT-81       QAR 10-6512     JBS
                Get program information from GETTAB's, not startup AC's, and
                use a PATH block if in an SFD.  Monitors after 7.01 do not
                support startup AC's.

276     ALGCOD  12-OCT-81       QAR 20-1683     JBS
                Fix edit 262 to use correct, non-conflicting AC's for LOP
                and SYM.  This generates correct code for planting results of
                STRING and LONG REAL calculations.

277     ALGOTS, 13-OCT-81       QAR 20-1704     JBS
        ALGPRM  Account for skip return after BREAKOUTPUT in error UUO handler
                (revision of edit 274), use another location to save A1 instead
                of %SYS17 in error UUO handler (stack overflow in this routine
                also used %SYS17), revise ALGOTS routine INITIA.

300     ALGCON  23-0CT-81       QAR 10-6626     JBS
                Print number or warnings on TTY when CCL entry is used, put
                "%" and "?" before warning and error messages.

301     ALGCON  21-OCT-81       QAR 20-1697     JBS
                Prevent compiler hang on bad user syntax.

302     ALGOTS  31-OCT-81       QAR 20-1707     JBS
                Fix Address Check when deleting bad .REL file.  Buffer header
                was getting stepped on after T15GET mismanaged buffer ptrs.

303     ALGOTS, 26-OCT-81       QAR 10-6403     JBS
        ALGDDT, Make the OTS work execute-only as much as possible.  Extension
        ALGSER, of edit 234.
        ALGUTL

304     ALGOTS, 4-NOV-81        QAR 20-1684     JBS
        ALGCON  "GOTO" statement processor forgot that calling GETOWN could
                cause stack shifts, and accordingly did not use delocated
                values in calculations.  Also, add a question mark to the
                error message "UNDEFINED LABEL" in ALGCON (TOPS-20 only).

305     ALGCON  5-NOV-81        QAR 10-6674     JBS
                Fix undefined symbol table search at ZLAB (TOPS-10 only).

306     ALGCON  5-NOV-81        QAR 20-1706     JBS
                Change compiler error message to "NO VALUE ASSIGNED TO
                TYPED PROCEDURE, OR PROCEDURE NAME CONFLICTS WITH ANOTHER
                DEFINITION".

307     ALGOTS  8-DEC-81        QAR 10-6745     JBS
                Remove edit 224 - broke "PRINT(LENGTH(VDATE))", etc.

310     ALGOTS  18-DEC-81       QAR 20-1732     JBS
                Fix ALGDDT "PROFILE" command broken by edit 303.
ALG310.DOC -- Changes from  V10A/V1A(145) to V10B/V1.2(310)    Page 13
January 1982





[End of ALG310.DOC]
ALG145.DOC -- CHANGES from V10(741)/V1(105) to V10A/V1A(145)   Page 14
January 1978


1.0  SUMMARY.

This is a maintainance release of DECsystem-10 and DECSYSTEM-20 ALGOL
intended to include all bug-fixes made since version 10(741) / 1(105),
both those published in the Software Dispatch and those reported to us
through non-SPR channels.

In addition individual users have made suggestions for enhancements to
ALGDDT which we have implemented for this release.  This results in a
small change in funtionality although not sufficient to merit a new
version number.  These improvements include an enhanced UNWIND
command, a RETRY command, additions to the PAUSE command and improved
control C handling.  Most of these are documented in the programmer's
guide, which was prepared with this release in mind.

The changes made for this version will not effect the operating
environment requirements given for version 10(741) / 1(105).



2.0  EXTERNAL CHANGES.

The following changes will be noticed by the user:

     1.  The documentation lists the three library procedures
         RAND,ONTRACE & OFFTRACE, this is a documentation error, the
         procedures being correctly called RAN,TRACEON & TRACEOFF.
         However since users have not complained about this before and
         have presumably adapted to the error, both spellings will now
         have the correct effect (rendering all current programs
         compatable).

     2.  If an identifier is undeclared or misused, its spelling will
         now be included in the error message.  It is felt this will
         be particularly useful when a listing is not being generated
         and only the error meassages appear on the terminal.

     3.  The library procedures READ and INLINE will now recognise an
         EOF as an LF, and treat it as a terminator to input in any
         circumstance where a LF would do so (before, encountering an
         EOF would result in a run-time error).

     4.  The library procedure READ now no longer throws away the byte
         immediately following a quoted string.

     5.  The ALGDDT command RETRY as documented in the programmer's
         guide is now implemented.

     6.  The ALGDDT command PAUSE is now fully implemented, as per the
         programmer's guide.

     7.  Enhanced ALGDDT command UNWIND.

         the UNWIND command has been extended to know about block
ALG145.DOC -- CHANGES from V10(741)/V1(105) to V10A/V1A(145)   Page 15
January 1978


         levels within procedures as well as the procedure levels
         themselves.  The new command format is as follows:  UNWIND
         Same as BACK - return to original context

         UNWIND n       Change to dynamic procedure level <n>
         UNWIND n.m     Change to dynamic proc.  level <n> and block
                        level <m>
         UNWIND -n      Change by <n> procedure levels.
         UNWIND -.m     Change by <m> block levels.
         UNWIND 0       Change to outermost block

         The WHERE command has also been extended to include the
         additional information required by this extension.

     8.  The OTS no longer enables for trapping UUO or QUOTA exhausted
         errors, and the monitor should produce error messages if
         either occur.

     9.  Undeclared labels now have the status of hard errors and will
         cause suspension of .REL file generation.



3.0  KNOWN BUGS AND DEFICIENCIES.

     1.  The library procedures OPENFILE,INPUT & OUTPUT will not work
         correctly if passed a dynamic string as an actual parameter;
         that is a string procedure or a string that is itself a
         formal.  Doing so results in a runtime error.

     2.  Interrupting a program that is performing a monitor call with
         a control C can sometimes result in an immediate return to
         monitor level instead of invoking ALGDDT.  In this case the
         user should type CONTINUE which will enter ALGDDT in the
         correct manner.

     3.  Edit 776 published as an answer to SPR #10797 claimed to fix
         a problem of bad code generation using embedded assignments
         to long real arrays.  We have since found that this is not
         the case and have not included this edit in this release.
         Until we can fix this problem properly we recommend users
         avoid using embedded assignments to long real arrays.



4.0  INSTALLATION INSTRUCTIONS.

The batch command file ALGOL.CTL contains all the details necessary
for building ALGOL version 10A / 1A.  The files ALGOL.SHR, ALG145.SHR,
ALGLIB.REL and ALGDDT.HLP should be put on SYS:.  It is recommended
that installations using .EXE files should convert them before use.
ALG145.DOC -- CHANGES from V10(741)/V1(105) to V10A/V1A(145)   Page 16
January 1978


5.0  INTERNAL CHANGES.

There now follows the list of edits included in version 10A
(DECsystem-10).  Please note that with edit #777 ALGOL used up the
supply of 3 digit octal edit numbers allocated to it.  All subsequent
edits will be numbered as if old edit #635 = #001 so as to bring the
edit numbers into line with those for DECSYSTEM-20 ALGOL.  Therefore
all edits after 635 have been renumbered in the sources for 10A, and
all references to earlier edit numbers removed.  Four digit edit
numbers are fixes to problems or enhancements not originating from an
SPR.

DECsystem-10 edits:

EDIT #

#742      10-10777    Make ALGDDT PAUSE on labels work correctly

#743      None        Make READ ignore LF after CR.

#744      10-107778   Exponentiation caused incorrect code with
                      sufficiently complex operands.

#745      10-10794    Make ALGOL call itself version 10 and not
                      version 8.

#746      None        Don't make REDIRECTed files unecessarily large.

#747      None        Fix certain cases of GOTO command in ALGDDT.

#750      None        Fix to control C trapping.

#751      None        Fix to ALGDDT NEXT command.

#752      None        Ignore breakpoints if already in ALGDDT.

#753      10-22610    Make compiler command scanner ignore leading
                      spaces.

#754      None        Use compiler version number as program version
                      number.

#755      10-22013    Stop programs generating un- defined global
                      symbol %ALGDR.

#756      10-22677    Make programs linked with /OTS:NONSHARE switch
                      work correctly

#757      10-10783    Fix overflow in routine LEXP.

#760      10-23180    Make INPUT and OUTPUT not always take the error
                      return if an error label was specified.

#761      10-10789    Make the body of a FOR statement a block.
ALG145.DOC -- CHANGES from V10(741)/V1(105) to V10A/V1A(145)   Page 17
January 1978


#762      10-10792    Report correct channel number when giving EOF
                      error message.

#763      None        Enhanced UNWIND command & various minor fixes.

#764      10-10791    Compile time folding of floating point constants
                      generates incorrect code.

#765      10-10793    Give EOF error when READing from empty strings.

#766      10-10787    Make I/O to TTY on channels 0 & 1 work.

#767      10-10789    Make DELETE deal with strings properly.

#770      10-22806    Compiler crash with TTY input lines longer than
                      80 characters.

#771      10-10799    Fix certain differences between TTY I/O on
                      channel -1 and the others.

#772      10-10800    ALGOTS could get into a loop when called with an
                      undefined string.

#773      10-10802    Fix compiler crash when real number present in a
                      declaration.

#774      10-23307    Fix compiler looping with certain mis- spelled
                      keywords.

#775      10-10805    Stop ALGDDT trying to echo on non-echo
                      terminals.

#776      10-10797    *** Please see section 3.0 ***

#777      10-23923    Make the automatic DUMP after run-time error in
                      BATCH not give IMRs.

#144      10-10808    An external recursive procedure call with
                      /PRODUCTION switch caused incorrect code.

#145      10-10812    Give EOF the status of a terminator to READ and
                      INLINE

#1000     None        Fix several problems concerning control C
                      interrupting running programs and entering
                      ALGDDT.

#1001     None        Include improperly used or undeclared
                      identifiers in compiler error messages.

#1003     None        Fix certain cases of the NEXT command in ALGDDT
                      not working correctly.

#1004     None        Enhance Edit #645 to prevent compiler looping
ALG145.DOC -- CHANGES from V10(741)/V1(105) to V10A/V1A(145)   Page 18
January 1978


                      with absent or incorrect procedure names.

#1005     None        In certain cases very long source lines caused
                      compiler crash.

#1006     None         Certain sequences of delimeters in QUOTED mode
                      caused compiler crash.

#1007     None        Improve ALGDDT response to inter- rupting a
                      running program when it is performing a monitor
                      call ( see section 3 ).

#1010     None        Make the I/O operations ignore nulls at the
                      start of a buffer.  Before this could result in
                      a loss of characters.

#1011     None        Establish aliases for RAN,TRACEON & TRACEOFF (
                      see section 2 ).

#1012     None        Clear output buffer if SELECTOUPUT away from the
                      TTY.

#1013     None        DECsystem-20 version only.

#1014     None        ALGOTS no longer traps QUOTA exceeded & UUO
                      errors ( see section 2 ).

#1015     None        NEXTBYTE used to give incorrect results with
                      some dynamic actual parameters.

#1016     None        Not used.

#1017     None        Stop procedure READ losing the next character
                      after a quoted string ( see section 2 ).
ALG145.DOC -- CHANGES from V10(741)/V1(105) to V10A/V1A(145)   Page 19
January 1978


DECSYSTEM-20 edits:


#106      10-10777    Make ALGDDT PAUSE on labels work correctly

#107      None         Make READ ignore LF after CR.

#110      10-107778   Exponentiation caused incorrect code with
                      sufficiently complex operands.

#111      10-10794    Make ALGOL call itself version 10 and not
                      version 8.

#112      None         Don't make REDIRECTed files unecessarily large.

#113      None         Fix certain cases of GOTO command in ALGDDT.

#114      None         Fix to control C trapping.

#115      None         Fix to ALGDDT NEXT command.

#116      None         Ignore breakpoints if already in ALGDDT.

#117      10 22610    Make compiler command scanner ignore leading
                      spaces.

#120      None         Use compiler version number as program version
                      number.

#121      10 22013    Stop programs generating un- defined global
                      symbol %ALGDR.

#122      10 22677    Make programs linked with /OTS:NONSHARE switch
                      work correctly

#123      10-10783    Fix overflow in routine LEXP.

#124      10-23180    Make INPUT and OUTPUT not always take the error
                      return if an error label was specified.

#125      10-10789    Make the body of a FOR statement a block.

#126      10-10792    Report correct channel number when giving EOF
                      error message.

#127      None         Enhanced UNWIND command & various minor fixes.

#130      10-10791    Compile time folding of floating point constants
                      generates incorrect code.

#131      10-10793    Give EOF error when READing from empty strings.

#132      10-10787    Make I/O to TTY on channels 0 & 1 work.
ALG145.DOC -- CHANGES from V10(741)/V1(105) to V10A/V1A(145)   Page 20
January 1978


#133      10-10789    Make DELETE deal with strings properly.

#134      10 22806    Compiler crash with TTY input lines longer than
                      80 characters.

#135      10-10799    Fix certain differences between TTY I/O on
                      channel -1 and the others.

#136      10-10800    ALGOTS could get into a loop when called with an
                      undefined string.

#137      10-10802    Fix compiler crash when real number present in a
                      declaration.

#140      10-23307    Fix compiler looping with certain mis- spelled
                      keywords.

#141      10-10805    Stop ALGDDT trying to echo on non-echo
                      terminals.

#142      10-10797    *** Please see section 3.0 ***

#143      10-23923    Make the automatic DUMP after run-time error in
                      BATCH not give IMRs.

#144      10-10808    An external recursive procedure call with
                      /PRODUCTION switch caused incorrect code.

#145      10-10812    Give EOF the status of a terminator to READ and
                      INLINE

#1000     None         Fix several problems concerning control C
                      interrupting running programs and entering
                      ALGDDT.

#1001     None         Include improperly used or undeclared
                      identifiers in compiler error messages.

#1003     None         Fix certain cases of the NEXT command in ALGDDT
                      not working correctly.

#1004     None         Enhance Edit #011 to prevent compiler looping
                      with absent or incorrect procedure names.

#1005     None         In certain cases very long source lines caused
                      compiler crash.

#1006     None         Certain sequences of delimeters in QUOTED mode
                      caused compiler crash.

#1007     None         Improve ALGDDT response to interrupting a
                      running program when it is performing a monitor
                      call ( see section 3 ).
ALG145.DOC -- CHANGES from V10(741)/V1(105) to V10A/V1A(145)   Page 21
January 1978


#1010     None         Make the I/O operations ignore nulls at the
                      start of a buffer.  Before this could result in
                      a loss of characters.

#1011     None         Establish aliases for RAN,TRACEON & TRACEOFF (
                      see section 2 ).

#1012     None         Clear output buffer if SELECTOUPUT away from
                      the TTY.

#1013     None         DECsystem-20 version only.  Stop occasional
                      errors with PRINT.

#1014     None         ALGOTS no longer traps QUOTA exceeded & UUO
                      errors ( see section 2 ).

#1015     None         NEXTBYTE used to give incorrect results with
                      some dynamic actual parameters.

#1016     None         Not used.

#1017     None         Stop procedure READ losing the next character
                      after a quoted string ( see section 2 ).


[End of ALG145.DOC]