Trailing-Edge - PDP-10 Archives - BB-D480C-SB_1981 - forots.doc
There is 1 other file named forots.doc in the archive. Click here to see a list.

FOROTS-10 -- Changes from V5A(721) to V6(2033)
December 1981




FOROTS.DOC - FOROTS-10 version 6                                 Page 2

FOROTS-10 -- Changes from V5A(721) to V6(2033)
December 1981


FOROTS is the object time system  that  provides  runtime  support  for
FORTRAN  programs,  including monitor interface functions for I/O, core
management  and  error  handling.   FORLIB  is  the   FORTRAN   library
containing  the  mathematical  intrinsic functions and various external

This release is a complete rewrite of FOROTS.  It  provides  all  OPEN,
READ,  and  WRITE statement keywords and format descriptors required by
FORTRAN-77.  The accuracy of  the  mathematical  library  functions  is
improved.   There  are  several  additional library routines to improve
error handling.

The object time system is now in the file FOROT6.EXE.  This is to allow
you  to  keep a version 5A FOROTS.EXE on your system as well as the new

This version fully replaces version 5A.

1.1  Bibliography

FOROTS  is  documented  in  the  FORTRAN-10/20  Programmer's  Reference

1.2  Monitors

This release of FOROTS will run with TOPS-10 7.01.

1.3  Related System Software

The following system software must be used with the FOROTS system:

     DBMS 5A

     FORDDT 6

     FORTRAN 6

     GALAXY 2

     LINK 4A
     OVRLAY 4A

     MACRO 53A

     MAKLIB 2B
FOROTS.DOC - FOROTS-10 version 6                                 Page 3

     SORT 4C
FOROTS.DOC - FOROTS-10 version 6                                 Page 4


The calling sequence generated by the compiler for  I/O  statements  is
new.   It  is  keyword  based,  like  the  calling  sequence  for OPEN,
permitting easy addition of future keywords.  It is not compatible with
FOROTS 5A;  that is, FOROTS 5A cannot be used with programs compiled by
FORTRAN version 6.  FOROTS 6 can be  used  with  programs  compiled  by

For a description of the new FOROTS calling sequences, see  Appendix  D
of the FORTRAN Reference manual.

There is no support in version 6 for KA10s or for  F40-generated  code.
The  monitor must support VM;  that is, the PAGE.  UUO must work.  (All
7-series monitors have VM.) Also, support  for  the  FOROTS  version  1
calling  sequence  has been removed.  The functions DFIX and IDFIX have
been replaced by the equivalent IDINT.

DIALOG input may be terminated by a  carriage  return.   Altmode  still
works, but no other break character (^G, ^Z, ^L, etc.) may be used.  If
it is necessary to type extremely long dialog  responses,  either  type
over  the  line  boundary  without  hitting  carriage  return, or use -
(hyphen) at the end of the line as a continuation character.

The mathematical intrinsic functions (SIN, EXP, and the like) have been
rewritten to improve their accuracy.  The results of these routines are
somewhat different from the version 5A routines.  These differences can
propagate through a calculation and produce larger differences in final

It is no longer valid to mix ASCII and BINARY records in the same file.
When  a  file  is opened, it is for either formatted I/O or unformatted
I/O, and trying to mix modes is a fatal error.

In version 6, WRITE statements to random files do not output  the  data
to disk immediately.  The data is written when the file is closed (by a
CLOSE statement) or when the program exits, or when the page containing
the  data  is  replaced by a new page.  The monitor .CLOSE command does
not close partially written random files.  To close  partially  written
random files in a version 6 program, use

Do you want to close all files?  (Y or N):Y

instead of:


When a READ takes the ERR= branch, the file will  be  positioned  after
the  erroneous  record.   (That  is,  the next READ will get the record
after the one with the error.) This is different than version 5A, which
leaves  the  file  positioned  before  the  erroneous record.  If it is
FOROTS.DOC - FOROTS-10 version 6                                 Page 5

desired to reread the erroneous record and specify an ERR= branch,  you
can now use REREAD with an ERR= branch.

The BLOCKSIZE parameter of the OPEN statement specifies tape block size
in bytes.  In version 5A, the block size is specified in words.

If RECORDSIZE is specified when opening a file, and the  file  contains
records  that  are  not  of  the  specified  size, behavior will differ
between version 5A and version 6.  In formatted mode 5A reads until  it
finds  a  CRLF,  6  reads until the specified number of characters have
been read.  In  unformatted  mode  5A  reads  until  the  I/O  list  is
satisfied (and no farther), 6 reads until the specified number of words
have been read.  Reading BINARY-mode files with the wrong  record  size
is fatal with both versions.

When  reading  list-directed  I/O  (*  format),  5A  reads  '4*  5'  as
'5,5,5,5'.   6  reads  it  as  ',,,,5'  (4 null items followed by a 5).
Files written with 5A can contain repeat counts followed by spaces, and
so  will  be  interpreted  incorrectly by 6.  Files written by 6 can be
read by 5A.

There are many more minor differences.  For a list of the  known  ones,
FOROTS.DOC - FOROTS-10 version 6                                 Page 6


All output spool limits are set to 200 by QUASAR.

TRACE as routine to call on library  errors  fails  because  the  error
message typer does not handle recursive calls.


See the file FORTRA.INS for information regarding installation.
FOROTS.DOC - FOROTS-10 version 6                                 Page 7


FOROTS is completely rewritten.

Note that this affects any user-supplied MACRO subroutine  which  knows
details  about the internal organization of FOROTS's data.  Any program
which searches FORPRM should be carefully examined  for  validity  when
working with version 6.

Note particularly that P4 no longer points to the FOROTS data  segment,
so  any  references to this segment will need to be rewritten.  The way
DEC-supplied  routines  reference  FOROTS  data  is  with  the   FOROP.
routine.    Negative   FOROP   functions   are  reserved  for  customer
FOROTS.DOC - FOROTS-10 version 6                                 Page 8


***** Begin Revision History *****

1100     CKS     12-MAR-79

1101     CKS     20-Mar-80
         Only give truncated-record warning once per unit

1102     CKS     20-Mar-80
         Implement DISP=SUBMIT

1103     CKS     26-Mar-80
         Change FUNCT% to %FUNCT and add DBMS%% so DBMS 5A will work

1104     CKS     29-Mar-80
         Can OPEN file every time IO is done when it is accessed
         through multiple units (TTY: for instance).  DDB address
         only gets stored for one unit, so IO on any synonymous unit
         thinks file needs opening.  Fix to store DDB address for all
         synonym units.

1105     CKS     29-Mar-80
         Move labels DLP, XLP so record size does not get decremented
         twice when record crosses file window boundary

1106     CKS     29-Mar-80
         Remove MODE:EBCDIC, add $UNIT

1107     CKS     01-Apr-80
         Make rewind call generic NXTW so it works for unformatted IO; add
         special code to handle case when LSCW is last word in window

1110     CKS     12-Apr-80
         Put in error numbers for IOSTAT and ERRSNS to return

1111     CKS     17-Apr-80
         Replace JSHALT calls in FOROTS.MAC with ERCAL ERRIJE to sidestep
         MACRO bug

1112     CKS     17-Apr-80
         Correct off-by-1 bug in filename move, results in an extra char used
         in filename

1113     CKS     15-May-80       Q1210
         Make X format act as 1X, not 0X

1114     CKS     27-May-80
         Fix pre-error-message CRLF routine

1115     CKS     5-Jun-80        Q1212
         More of 1111, missed a JSHALT

1116     CKS     5-Jun-80        Q1211
FOROTS.DOC - FOROTS-10 version 6                                 Page 9

         fix [Enter correct file specs] message

1117     CKS     9-Jul-80        Q1223
         Image mode never takes END= branch, or notices EOF at all

1120     JLC     13-Jul-80
         Fix so (I5$) format parses as (I5,$)

1121     CKS     15-Jul-80
         Add FT20UUO so fools can try doing (simple) UUOs with native FOROTS

1122     CKS     17-Jul-80       Q1234
         Add SFMOD so control chars are not translated on terminal output 

1123     CKS     4-Aug-80        Q1240
         Make REWIND an input operation if file is doing input

1124     CKS     11-Aug-80
         Clear F when entering FORERR from library routine to prevent random
         wrong behavior

1125     CKS     12-Aug-80
         Prevent premature EOF in binary IO

1126     CKS     12-Aug-80
         Need device designator of TTY to check for interaction between
         error messages and file IO.  A mere STDEV of TTY: gets confused
         by logical names.  Get designator of physical TTY.

1127     CKS     12-Aug-80
         Compiler doesn't set up L for FIN. so don't trust it in %SAVE

1130     CKS     13-Aug-80
         OPEN with DIALOG always takes ERR= branch, with error message
         "[Enter correct file specs]".  Don't take ERR= on [] messages.

1131     CKS     13-Aug-80
         Fix ERRSNS again:  remove extra indirect bit, fix so jsys
         error number is the one that caused the IO statement to fail,
         not the most recent error at the time of the error message

1132     CKS     14-Aug-80
         Unformatted output sets associate variable off by 1; fix.

1133     CKS     18-Aug-80
         Hack to allow UUOs on -20 fails if low seg is larger than 128K.
         Hack the hack.

1134     CKS     21-Aug-80       Q4500
         Use FO.CHN instead of 777B17 to load channel number

1135     CKS     22-Aug-80       Q4510
         OPEN (UNIT=1,DIALOG) doesn't go into dialog if batch; it should.

FOROTS.DOC - FOROTS-10 version 6                                Page 10

1136     CKS     22-Aug-80       Q4514
         Binary IO doesn't take END=

1137     CKS     23-Aug-80       Q4504
         EOF from TTY is permanent; CLOSE the channel at EOF to clear it

1140     CKS     29-Aug-80       Q4559
         Put FRSXXX prefix on TOPS-10 error messages

1141     CKS     29-Aug-80       Q4567
         ALCHN doesn't store T0 in U.ACS so it doesn't get returned to user

1142     CKS     29-Aug-80
         Don't rely on IOSUB being set up on REWIND

1143     CKS     26-Sep-80       Q4698
         Don't fall into CLOSE from CLOSE%

1144     CKS     26-Sep-80       Q4689
         Remove .+n constructs

1145     CKS     26-Sep-80       [Abbott]
         FORPLT bug:  routine NUMBER calls SYMBOL with L set up wrong.  Change
         MOVE to MOVEI

1146     CKS     26-Sep-80
         More of 1137

1147     CKS     29-Sep-80       Q4648
         Add VFOROTS to FORPRM so MACRO routines can include version-dependent

1150     CKS     29-Sep-80       Q4653
         Remove debugging code from DUMP and PDUMP

1151     CKS     1-Oct-80
         Prevent junk F from causing spurious ERR= branches in FORERR

1152     CKS     2-Oct-80        Q4734
         Fix IOSTAT

1153     JLC     18-Sep-80
         Alpha I/O speedup

1154     JLC     26-Sep-80
         Fixed integer overflow in INTI

1155     JLC     29-Sep-80
         FLOUT fix - turn off sign bit in word 2 for dp values

1156     JLC     3-Oct-80
         Fix NAMELIST to demand $ in col 2 after skipping data

1157     CKS     3-Oct-80
         Do not suppress carriage control of first line if it isn't LF
FOROTS.DOC - FOROTS-10 version 6                                Page 11

1160     CKS     16-Oct-80       Q1260
         Correct / format in ENCODE to not pad record with spaces first

1161     CKS     16-Oct-80       Q4747
         OPEN(5,ACCESS=SEQIN) prevents TYPE statements from working.
         "Cure": make all opens of controlling TTY for input and output both

1162     CKS     22-Oct-80       Q4693
         Prevent -10 disk files from being one word too long

1163     JLC     23-OCT-80
         A whole lot of bug fixes to magtape ops for TOPS-10.
         Fixed byte/count synch in %IREC

1164     CKS     24-Oct-80
         Make OPEN (DEVICE='DEV:') work

1165     CKS     24-Nov-80       Q4572
         Change some statement labels

1166     CKS     1-Dec-80        Q5048
         Use SAVE4 not SAVE2 in xIREC

1167     CKS     1-Dec-80        Q5049
         Add missing GETTAB T1, in FORINI

1170     CKS     1-Dec-80        Q5047
         Add .TFSET to tapop set functions

1171     CKS     1-Dec-80        Q5054
         Call %SAVE in EXIT. so that the ACs are set up for the CLOSEs that
         get done

1172     JLC     2-Dec-80        Q1318
         Clear DPFLG in ALPHI/ALPHO

1173     EDS     8-Dec-80
         Replace SEARCH JOBDAT in FORPRM with EXTERNs.

1174     CKS     10-Dec-80       Q5052
         Remove "Too many args" error.  If program sends more arguments
         than will fit in the static block, dynamically allocate a block.

1175     JLC     12-Dec-80
         Fixed LSNGET again

1176     CKS     13-Dec-80
         Remove confusion about ERR= and END= and IOSTAT= addresses sticking
         around and applying to the following statement

1177     CKS     13-Dec-80
         Fix ERRSNS returning JSYS error number

1200     CKS     13-Dec-80
FOROTS.DOC - FOROTS-10 version 6                                Page 12

         Make CLOSE of non-open file a nop

1201     CKS     13-Dec-80
         Precede and follow all terminal input with SFCOCs to get the terminal
         modes right.  .TTATE doesn't quite make it.

1202     CKS     15-Dec-80
         Remove TLO of IFIW in arg copier; won't work with 30-bit addresses and
         is not necessary without 30-bit addresses.

1203     JLC     17-Dec-80
         Finally fix TOPS-10 read followed by write.

1204     CKS     18-Dec-80       Q1330
         -20 TIME routine can return negative time if HOURS .LT. GMT_CORRECTION.
         Add 24 if it goes negative.

1205     CKS     18-Dec-80       Q1332
         Move copying of ERR=, END=, IOSTAT= to where it will happen for
         ENCODE/DECODE too
1206     CKS     18-Dec-80       Q1333
         Don't set REREAD unit on WRITE statements

1207     CKS     18-Dec-80       Q1336
         -20 tape code handles nulls by jumping off to the middle of the disk
         IO loop.  Jump instead to the middle of the tape loop, it works better.

1210     CKS     18-Dec-80       Q5114
         In TRACE's PC finder, check for JSP 1,.OVRLAY by looking at the RH of
         the instruction, not the LH.

1211     JLC     19-Dec-80
         In %%GETIO make sure not to substitute for complex for list-directed

1212     JLC     22-Dec-80
         Another SEQINOUT fix (TOPS-10). If we reach EOF, there is
         no truncation to do. Additionally, we must not turn off the
         EOF bit, as that's the only way to tell. Otherwise buffers
         are left out of synch (ENDXFR now only turns off D%END).

1213     CKS     29-Dec-80       Q5203
         DIRECTORY=array doesn't work; change a SKIPE to SKIPN

1214     JLC     05-Jan-81
         Fix DISPOSE='DELETE' and 'RENAME' by inserting a
         test for JFN open in IOCHK, calls address in IOSUB if
         not open yet.

1215     JLC     06-Jan-81
         Inserted a POPJ at end of SFDEL in FORFMT, was dropping off
         the end and dropping into dollar format.

1216     JLC     08-Jan-81
FOROTS.DOC - FOROTS-10 version 6                                Page 13

         New code for DECODE for 'next record'; moves pointer/count
         to next word of string, as in V5.

1217     JLC     09-Jan-81
         Fix integer divide check in FORTRP to "patch" the answer.

1220     CKS     9-Jan-81
         Rework OSWTCH to fix TOPS-20 read to EOF followed by write

1221     JLC     15-Jan-81
         Force input check (call of subr in left half of IOSUB) for
         all magtape operations.

1222     JLC     16-Jan-81
         FILOPs in OSWTCH were allocating buffers spuriously. Clear
         the buffer count word.

1223     JLC     16-Jan-81
         Add increment of BLKN(D) to -10 SMAPW, as it was not getting
         bumped for unformatted I/O.

1224     CKS     18-Jan-81
         More of 1220

1225     JLC     19-Jan-81
         Make %DDBTAB full-word table, affects FOROPN, FORIO, and

1227     JLC     20-Jan-81  Q4829
         Added code to only allocate buffer space needed instead
         of always assuming both input and output.

1230     JLC     20-Jan-81
         Changed format repeat count size from 9 to 12 bits,
         allowing new maximum of 4095A1.

1231     JLC     20-Jan-81
         Changed FCNT to a word in preparation for a merger
         of FCNT and IBCNT on the -10.

1232     JLC     21-Jan-81
         Fixed random I/O on -10 - buffers were not being allocated.

1233     JLC     21-Jan-81
         Partial merger of FCNT and IBCNT/OBCNT - FCNT is now
         a full-word indirect on the -10, pointing to IBCNT or

1234     CKS     22-Jan-81
         Fix OPEN/CLOSE with no intervening IO to not complain when the
         file does not exist

1235     CKS     22-Jan-81
         Add initial value for .JBHRN to fake highseg JOBDAT.

FOROTS.DOC - FOROTS-10 version 6                                Page 14

1236     JLC     23-Jan-81
         Restore pntr/count setup in ISW and OSW, removed by accident.

1237     JLC     23-Jan-81
         Fix to decode eof condition, was leaving negative record size
         if record previously used up.

1240     JLC     23-Jan-81
         FOROPN - binary/image kluge in OSWTCH: number of words to write
         is one less than specified by buffer pointer.

1241     JLC     23-Jan-81
         Remove setup of FCNT at end of DOOPEN for -10, as FCNT is now
         automatically set up.

1242     JLC     23-Jan-81
         Fix to exit code in FOROPN for full-word DDBTAB.

1243     JLC     26-Jan-81
         Another DECODE fix; RPTR was being reset to beginning of
         record buffer.

1244     JLC     26-Jan-81
         Move ISWTCH/OSWTCH recall code to inside IF10.

1245     JLC     26-Jan-81
         Recode ISWTCH for -10 to not set to EOF, as it would
         not work properly for BACKSPACE.

1246     JLC     26-Jan-81
         DF was not being renewed in ISWTCH or OSWTCH. Changes in
         FOROPN and FORIO.

1247     JLC     27-Jan-81
         Fix REWIND yet again, did not have code for the 20-type
         binary buffer pointer.

1250     DAW     27-Jan-81
         Put IFIW's in front of some indirect addresses.

1251     CKS     28-Jan-81
         MOVE => MOVEI in GETIO to make complex non-*-fmt work

1252     CKS     28-Jan-81
         Fix SKIP RECORD after SEQINOUT OPEN, add code for unformatted
         SKIP RECORD

1253     JLC     29-Jan-81
         Patch to prevent OPEN from truncating files in ISWTCH, plus
         preventing 2nd truncation in OSWTCH.

1254     JLC     29-Jan-81
         Yet another minor patch in OSWTCH, wasn't correcting for
         binary/image kluge correctly.

FOROTS.DOC - FOROTS-10 version 6                                Page 15

1255     CKS     5-Feb-81
         If -10 open error occurs, mark file as not open before trying
         to proceed with dialog.  Avoids infinite CLOSE loop when trying
         to close un-opened file on error exit.

1256     DAW     5-Feb-81
         New calling sequence for FOROP. (Affects FORMSC, FORDDT, FOROP).

1257     JLC     6-Feb-81
         Major modification to byte pointer and mapping routines, now
         point to last used word instead of next available, to make
         -10 and -20 code more similar.

1260     DAW     6-Feb-81
         LSNGET smashed ACs 2 and 3.

1261     JLC     9-Feb-81
         Unformatted skip record dropped into formatted I/O on the -10.

1262     DAW     9-Feb-81
         Allow FORINI to run in non-zero sections.

1263     JLC     9-Feb-81        QAR 10-05487
         Fix -10 backspace code, SOJLE should be SOJGE.

1264     EDS     10-Feb-81       QAR 10-04519
         Fix FORPRM to not allow a KI-20 version to be generated.

1265     CKS     10-Feb-81
         Fix FORERR to allow calls of FORER. from within user-supplied error

1266     DAW     11-Feb-81
         Changes to FORMSC to allow extended addressing. In particular,
         lots of changes to DUMP and PDUMP (also bugs fixed), TIME, and
         DATE routines. (More FORMSC changes to come..).

1267     EGM     15-Feb-81       Q10-04519
         Clean up FORPRM, add checks for feature test conflicts, replace
         DDB byte pointer definitions in FOROTS with call to macro defined
         in FORPRM.

1270     CKS     17-Feb-81
         Arrays more than 128K output by a single SLIST don't work because
         of a HRREM.  Make it a HRRZM.

1271     EGM     18-FEB-81       --------
         Allow lower case (d) to generate optimal code and use the previously
         defined DDB byte pointer, and fix the position field for all cases that
         do not index using (D) or (d).

1272     DAW     19-FEB-81
         Certain low-risk extended-addressing changes to FOROPN & FORIO

1273     EDS     19-Feb-81       Q10-04732
FOROTS.DOC - FOROTS-10 version 6                                Page 16

         Add /RECL to dialog keyword table in FOROPN

1274     EDS     19-Feb-81       Q10-04574
         Add TM.ANS to FORPRM for ANSI-ASCII tapes and
         add ANSI-ASCII keyword to TAPEMODE table.

1275     DAW     20-Feb-81
         Make FORMEM function %GETBK return a whole 30-bit address.

1276     DAW     20-Feb-81
         Add MACRO definitions for fields and masks to FORPRM.
         Taken from MACSYM:  FLD, POINTR.

1277     JLC     23-Feb-81
         Added code for 1st performance improvements: precalculated
         record size for %IREC.

1300     DAW     24-Feb-81
         Get FIN. calls and IOLISTS correct again in DUMP & PDUMP.

1301     JLC     24-Feb-81
         Added line sequence number word to DDB.

1302     JLC     24-Feb-81
         Added channel arg to LSNGET and FOROP call.

1303     JLC     25-Feb-81
         Folded -10 and -20 code for DIREC together, store line
         sequence number in DDB.

1304     CKS     25-Feb-81
         Update DDB when -20 dialog GTJFN changes device or filename

1305     JLC     26-Feb-81
         More on RSIZE, fix RECSIZ

1306     DAW     26-Feb-81
         Change %SAVE arg list outputs, affects FOROTS, FORIO, FOROPN, FORFMT.

1307     EDS     26-Feb-81
         Put ACCESS back in valid switches for DIALOG.

1310     DAW     26-Feb-81
         Full words in DDB for ERR=, END=, IOST=, AVAR= addresses.

1311     CKS     27-Feb-81
         Random formatted IO can output more than one record per WRITE statement.
         Fix file length setter to know about last record written.

1312     EDS     27-Feb-81
         Remove edit 1307 as it causes generation number skew on TOPS-20
         with certain combinations of ACCESS in DIALOG different from
         the ACCESS that was specified in the OPEN.

1313     JLC     3-Mar-81
FOROTS.DOC - FOROTS-10 version 6                                Page 17

         Added code to FOROPN for handling magtape op's better.

1314     EDS     4-Mar-81        Q20-01392
         Add feature test switch FTNLC1 to allow skipping of column 1 of
         NAMELIST input data.  Add $END to NAMELIST output.

1315     DAW     5-Mar-81
         Set IFIW bit in LTYPE word so "LDB T1,@LTYPE" works in
         a non-zero section.  (This is really more of 1306).

1316     JLC     5-Mar-81
         Major changes to FOROPN and FORIO for handling TOPS-10 magtapes
         and direction switching properly.

1317     DAW     6-Mar-81
         Add flag "EXTADD" - INIT% sets to -1 if FOROTS is
         running in a non-zero section, for easy testing.

1320     DAW     6-Mar-81
         Define feature test switches for type of byte pointer to
         use when indexed byte pointers won't do.

1321     DAW     6-Mar-81
         Some changes to FORFMT to allow it to run in non-zero section.

1322     JLC     8-Mar-81
         More mta fixes 

1323     CKS     9-Mar-81
         Yet more (-20) MTA fixes

1324     EDS     9-MAR-81        Q20-01396
         Fix FORFMT to allow DOLLAR ($) and COLON (:) to work correctly.

1325     JLC     9-Mar-81
         Yet more fixes for -10 magtapes

1326     CKS     9-Mar-81
         Remove fencepost bug caused by 1257

1327     JLC     10-Mar-81
         Minor bug fix in OPEN for -10.

1330     CKS     11-Mar-81
         Check for JRST-type entry vector when calling DBMSF

1331     CKS     11-Mar-81
         Remove FTGAL2.  On -10, try QUEUE. uuo.  If that fails, send a
         version 2 packet to QUASAR.  Requires that FOROTS-10 be
         assembled with QSRMAC from Galaxy release 2.

1332     JLC     11-Mar-81
         Install dump mode I/O into FORIO.

1333     JLC     11-Mar-81
FOROTS.DOC - FOROTS-10 version 6                                Page 18

         Magtape fixes (mostly typos) for the -10.

1334     DAW     12-Mar-81
         Add macros for dealing with the different types of byte pointers
         without seeing a lot of feature test switches in the code.
         The macro names are $BLDBP, $LODBP, $STRBP.

1335     EDS     12-Mar-81       Q10-05759
         Make TIME use the arguments correctly for -10 and -20.  Use
         symbols when testing ODCNV% output.

1336     JLC     12-Mar-81
         Fix some bugs in binary I/O for the -10. Pointer/count
         was not getting updated on the way into the FILOP. Remove
         some extraneous saves of the pntr/count. Fix more typos
         in the magtape direction switching code for the -10.

1337     JLC     12-Mar-81
         Moved MAXARG (number of I/O list elements max) from
         FOROTS.MAC to FORPRM.MAC and increased it to 128.

1340     DAW     12-Mar-81
         Make FUNCT macro use XMOVEI instead of MOVEI for arg-list ptr.

1341     JLC     13-Mar-81
         Make some magtape ops work without a file being open on
         the -10.

1342     EDS     13-Mar-81       Q10-05075
         Make FORMSC routines TRACEable, use HELLO macro.  Fix
         TWOSEG and RELOC problems and fix TITLEs.

1343     DAW     16-Mar-81
         Some FORIO extended addressing changes.

1344     CKS     16-Mar-81
         Make REWIND to a nonopen tape not be a nop.  REWIND of any other unit
         that is not open is still a nop.

1345     EDS     16-Mar-81       Q10-04806
         Fix ASIN and ACOS library error message.

1346     JLC     16-Mar-81
         Modify code for skip file, back file, and clear eof for rewind

1347     DAW     16-Mar-81
         To allow list-directed I/O and FLIRT. to run in extended addressing.

1350     EDS     16-Mar-81       Q10-04761
         Fix TWOSEGs and RELOCs in random number routines. (FORSNG)

1351     EDS     16-Mar-81       Q10-04786

1352     DAW     17-Mar-81
FOROTS.DOC - FOROTS-10 version 6                                Page 19

         Recent bug in %ISAVE that caused V5 rel files to stop working with
         V6 FOROTS.

1353     JLC     18-Mar-81
         More magtape op patches for the -10. Empty buffer was confusing
         OSWTCH. Installed new code to back over EOF if program reads
         to EOF, then writes.

1354     JLC     18-Mar-81
         Fix to -10 OSWTCH. Must truncate file to previous block to
         prevent monitor from rounding up word count.

1355     CKS     18-Mar-81
         Opening a file without a MODE= specification, then doing binary IO,
         doesn't work well.  Fix more things in UNFSW: the /MODE field in the
         DDB, the monitor byte size (20) or data mode (10), and the byte sizes
         in the buffer pointers.

1356     JLC     18-Mar-81
         Add dump mode write to OSWTCH.

1357     JLC     19-Mar-81
         Fix some more bugs in magtape (BAKEOF) for the -10.
         Install code to prevent creation of null file for
         just a rewind, unload, backfile, or skipfile without
         an OPEN.

1360     EDS     19-Mar-81       Q10-05866
         Add UNIT number range checking to FORIO.

1361     JLC     20-Mar-81
         Put -20 null file creation code in IF20. Fix typos in

1362     JLC     23-Mar-81
         More magtape fixes, FCNT/FPTR becomes IPTR/ICNT and OPTR/OCNT.

1363     JLC     24-Mar-81
         Commented out common tty ddb code in FOROPN. Minor seqinout
         fix (missing global). FORIO fixes to error typeout, magtape

1364     CKS     24-Mar-81
         In error cleanup, don't RLJFN the JFN if we haven't succeeded in
         getting a JFN on the file yet.

1365     JLC     25-Mar-81
         Typos in FORPRM and FORIO. Move code in FOROPN to get
         device type up slightly so magtape ops will know about it.

1366     JLC     26-Mar-81
         Yet more typos in FORIO. Binary I/O was going in wrong direction.
         BAKEOF returned garbage in T1, used in backspace. MOPEND did
         simulate reading the EOF record.

FOROTS.DOC - FOROTS-10 version 6                                Page 20

1367     EGM     26-Mar-81       --------
         Update FORSRT to search FORPRM and use FORTRAN feature test switchs.

1370     EDS     26-Mar-81       Q10-04566
         Make IMAGE and BINARY mode I/O illegal on TTY device.  Fixed
         typos in FOROPN.

1371     JLC     27-Mar-81
         Make zero-trip do loops work in list-directed I/O

1372     EGM     30-Mar-81       --------
         Make OVERFL compatible with verison 5A, and eliminate JSYS conflict
         in TIME prologue.

1373     CKS     31-Mar-81
         Fix more 20 tape bugs.  Write and back over a record when necessary
         to convince monitor to write tape marks.  Fix unformatted backspace.
         Backspace doesn't work at all if file is open for output, so reopen
         the file when necessary.  Replace SIN/SOUT with SINR/SOUTR so spacing
         operations stay in sync with the monitor's buffers.

1374     JLC     31-Mar-81
         Replace code to turn off D%END for terminals, was smashing T1,
         which contained valuable data.

1375     EDS     31-Mar-81       Q10-05002
         Fix FILOP. programming error for CLOSE DISPOSE='RENAME'.

1376     JLC     31-Mar-81
         Stop clearing use-bits in backspace to avoid cache-sweep
         bugs. Fix OSWTCH-10 bugs regarding null files.

1377     JLC     01-Apr-81
         Changed load/store of FLGS to move/movem of FLAGS, since
         FLGS was defined to be a full word. Minor edits to UNFO,
         to check for empty window at beginning of loop instead
         of end. Minor edit to -10 backspace, no need to specify
         FILOP read address if we turn on virgin buffer bit.

1400     JLC     02-Apr-81
         Typo in FOROPN.MAC, PUSHJ with no "P,".

1401     JLC     03-Apr-81
         Put code to clear use bits back, was not causing bugs,
         merely masked another problem.

1402     JLC     06-Apr-81
         Don't do dump-mode update code for magtape on -10 in
         OSWTCH. Move code to suppress next CRLF from OSWTCH to

1403     DAW     06-Apr-81
         Get rid of magic number in FORERR that prevents users
         from loading FOROTS at places other than 400000.

FOROTS.DOC - FOROTS-10 version 6                                Page 21

1404     EGM     6-Apr-81        --------
         Seperate CDX and CGX routines, add FTGFL feature test, move
         GFLOAT double precision checks into CDX routines under FTGFL.

1405     DAW     6-Apr-81
         Modify all math library routines to be able to run in extended

1406     JLC     06-Apr-81
         Typo in FOROPN, left in reference to OSW for -10. Minor
         bug in FORIO, backspacing beyond block 1 would not work.

1407     JLC     07-Apr-81       QAR 10-05241
         Move device-dependent code so that BLOCKSIZE is set up
         before buffers are allocated. Requires using device
         name rather than channel.

1410     JLC     07-Apr-81
         Moved record buffer allocation to FORIO in preparation
         for separation of input & output record buffers.

1411     DAW     08-Apr-81
         Separate JFN field into IJFN and OJFN. Make ACCEPT
         use .PRIIN, TYPE use .PRIOU. OPEN of "TTY:" will also
         use the primary input and output JFNs, but if the user has
         a logical name definition for TTY:, use the JFN obtained
         by the GTJFN on TTY:. When the file is not a TTY file,
         IJFN and OJFN will always be the same.
         The whole reason for this is so input and output can continue at
         your new terminal if you DETACH and re-attach somewhere else.

1412     JLC     09-Apr-81
         FORIO - minor fix in DIREC to ignore characters after
         the record's size. Fix backspace bug in -20 code,
         did not handle fixed-length records correctly.
         FOROPN - uncommented the commented-out code to tie
         all TTY I/O to the same DDB.

1413     DAW     10-Apr-81
         Get rid of flag D%MTOP. FOROTS doesn't need to check
         whether or not its doing a magtape operation on every IO

1414     DAW     10-Apr-81
         MTOP operations were ignoring ERR=.

1415     DAW     10-Apr-81
         Extended addressing fix: Allow args to be in acs.

1416     JLC     10-Apr-81
         Dectape rewind and unload. Separation of input and output
         record buffers.

1417     DAW     10-Apr-81
         Type traceback info for OPEN errors before dialog mode.
FOROTS.DOC - FOROTS-10 version 6                                Page 22

1420     JLC     10-Apr-81
         Deallocation of separate record buffers.

1421     JLC     10-Apr-81
         Typo in edit 1407. DF was not set up when DSKSET was
         called, causing RANDOM I/O not to work.

1422     JLC     13-Apr-81
         Fixup of separation of record buffers, typos in FORIO.

1423     DAW     13-Apr-81
         Put %SETD in FORIO.

1424     JLC     14-Apr-81
         Typo in %IRINI made DECODE nonexistent.

1425     BL      14-Apr-81       Q10-05076
         Make OVERFL functionality include 'logical function'.
         Returns T0=-1 if OVERFLOW=YES, T0=0 if OVERFLOW=NO.
         Original functionality unchanged.

1426     JLC     14-Apr-81
         Change error reporting in OSWTCH to fatal open errors.
         Restore .JBFF in DOOPEN if FILOP fails, caused SORT
         to fail.

1427     JLC     15-Apr-81
         Changed RSIZ to be a word in the DDB, so we don't
         need flag D%RSIZ, can use SKIPN instead.

1430     JLC     15-Apr-81
         Typo in -20 backspace broke it.

1431     BL      16-Apr-81       Q10-05949
         Change misleading 'RIB error' message to 'checksum error'
         or 'data error'; increase lookup block to include .RBSTS

1432     JLC     16-Apr-81
         Routine IALIGN in FORIO to correct fixed-length problem
         was trashing a returned AC (T3).

1433     DAW     16-Apr-81
         Show possible switches user can type when he gets to
         DIALOG mode on the -20 and types a question mark.

1434     DAW     16-Apr-81
         Check for READONLY specified and if so, change ACCESS=
         'RANDOM' to 'RANDIN', 'SEQINOUT' to 'SEQIN'.

1435     CKS     16-Apr-81
         More backspace changes, more of 1412 and 1430

1436     JLC     16-Apr-81
         More of edit 1432. Return decremented rec count in IRCNT.
FOROTS.DOC - FOROTS-10 version 6                                Page 23

1437     DAW     17-Apr-81
         Change FILOP error message 12 from "No such device" to
         "Can't OPEN device" -- Open of LPT could cause this.

1440     DAW     17-Apr-81
         Some extended addressing support in FORCNV.

1441     JLC     17-Apr-81
         Changed all references to D%RSIZ to SKIPN/SKIPE RSIZE(D).
         Put back @ in RMAP, removed by mistake.

1442     DAW     17-Apr-81
         Remove /LABELS:, /TAPEMODE: from possible DIALOG options
         (comment them out).

1443     JLC     17-Apr-81
         Stabilize EOFN(D) to be fixed number of bytes in file.
         EOF detected by comparing BYTN with EOFN.

1444     JLC     21-Apr-81
         Fix bug caused by edit 1443; it was smashing T1.

1445     DAW     21-Apr-81
         Rework code around UNFSW to make it more understandable.

1446     DAW     22-Apr-81
         Rework NMLST code to not smash P4 in a lower-level routine.
         This fixed a bug caused by edit 1440.

1447     CKS     22-Apr-81
         Fix various things:  Don't destroy critical AC in IALGN, use
         legal byte pointer (point to bit 34, not 35) when backing past
         the beginning of a word, use correct flag AC in revised UNFSW

1450     JLC     22-Apr-81
         Fix DECODE new record code.

1451     JLC     23-Apr-81
         Fix dump mode. Must do special things for dump mode files
         for mtops, ISWTCH, and OSWTCH.

1452     CKS     23-Apr-81
         Set EOFN correctly on 20 on BACKSPACE, REWIND, and CLOSE.
         Don't set EOFN after WRITE/REWIND/CLOSE sequence.

1453     JLC     24-Apr-81
         Move -10 code to set up bytes/word so that BLOCKSIZE setup
         will work. Make dump mode backspace and skiprecord work for
         magtape (record = 1 block). Insert if20 end after EOFN setup.

1454     JLC     24-Apr-81       QAR 20-01364
         Change EOFN if we switch from formatted to unformatted.

1455     JLC     27-Apr-81
FOROTS.DOC - FOROTS-10 version 6                                Page 24

         Fix bug in edit 1452, must not set D%LIN/D%LOUT on the way
         out of magtape operations.

1456     PY/JLC
         Remove extra angle brackets from POINTR macro in
         FORPRM, was causing MACRO to create Polish string in pass
         2 after pooling literals in pass 1; caused hiseg break
         to be inaccurate.

1457     CKS     27-Apr-81
         Prevent ENDFILE statement from always taking END= branch.
         Prevent WRITE/REWIND/CLOSE from writing zero-length file.

1460     JLC     28-Apr-81
         Fix bug in edit 1453, made non-dump mode files be dump mode.

1461     JLC     29-Apr-81
         Fix return from magtape ops again.

1462     CKS     4-May-81
         Fix RENAME to not fail on output-only files

1463     JLC     7-May-81
         Change EOFN to be updated on the fly. Removed most code
         from ISWTCH. Removed IOSUB hack on the -20. Fix disk
         backspace. Speed up %GETIO & DOIO. Remove rewind hack
         for both -10 and -20.

1464     DAW     12-May-81
         Change error macros ERR, LERR, IOERR; replace "ERRJ" with "$ECALL";
         put all error messages (except LERR's) into FORERR.MAC.
         Also get rid of $2HAK (won't be needed any longer).

1465     JLC     15-May-81
         Major changes to -20 magtape ops and magtape i/o.
         Other major changes to ISWTCH/OSWTCH for the -20. Minor
         bug fixes for the -10 (mostly from the tape 5 beware file).

1466     CKS     18-May-81
         Add TOPS-20 PSI interface

1467     CKS     18-May-81
         Replace EXTADD with I.EXT to avoid non-dotted global symbols
         in FORLIB

1470     CKS     20-May-81       Q20-1360
         In floating output, fix incrementing doubleword integer
         to propagate carry into high word if necessary

1471     CKS     21-May-81       Q10-5010
         Add defensive checks to FORHAK

1472     CKS     21-May-81       Q10-5875
         Add PC to ENCODE/DECODE message

FOROTS.DOC - FOROTS-10 version 6                                Page 25

1473     CKS     21-May-81       Qvarious
         Add flags to IOERR macro, I%REC to print current input record with
         arrow under current position, I%FMT to do same for current format.
         Add I%REC and I%FMT to appropriate messages.

1474     JLC     22-May-81
         Fix a bug in %PTOF, was assuming WSIZ(D) contained words, now
         contains bytes. Fix bug in new -20 open code, can't look at
         DF before it's set up.

1475     JLC     22-May-81
         Another bug in new -20 open code, %GTBLK has no error return.

1476     JLC     26-May-81
         More bugs in new I/O code, was looking at EOFN for non-disk
         files in unformatted I/O.

1477     JLC     27-May-81
         Bug in OSWTCH-10, was not clearing BLKN if writing after EOF.

1500     DAW     27-May-81
         Fix edit 1464 - got E error in FORMSC.

1501     JLC     27-May-81
         Bugs in random I/O caused by changed calling sequence
         for MAPW.

1502     JLC     28-May-81
         Install defensive WAIT operations in all -20 magtape code.

1503     JLC     28-May-81
         Round default magtape blocksize to word boundary, since
         that's what the monitor does anyway.

1504     BL      1-JUN-81        Q10-06141
         Prevent TRACEBACK default call from displaying itself

1505     JLC     1-Jun-81
         Don't do extra backspace in MTAISW. Lots of other backspace
         fixes in FORIO.

1506     CKS     2-Jun-81
         Add F-77 ELIST and SLIST entries, for now equated to F-66 equivalents

1507     BAH     4-Jun-81
         Fix up FORRTF, TOPS10 real time library routine, to work with version 6
         memory management.

1510     BL      4-Jun-81        Q10-06197
         Fix IllMemRef bug due to all pages being initialized as existing.

1511     JLC     5-Jun-81
         More edits in magtape code for BACKFILE and SKIPFILE.

1512     BL      5-Jun-81        Q10-05829
FOROTS.DOC - FOROTS-10 version 6                                Page 26

         Fix <crlf> omission when output assigned from DSK to TTY.

1513     BL      8-Jun-81        Q10-06193
         Fix no error message writing small file to write-locked yape.

1514     JLC     8-Jun-81        Q20-01392
         Fix several NAMELIST bugs (subscript out of range, etc.).
         Added some new features, fixed column 1 skip code.

1515     BL      9-Jun-81
         Change JRST to CLSERR in EDIT 1513 to PUSHJ.

1516     JLC     10-Jun-81
         Another bug in backspace. Also fix end-of-record handling
         for unformatted I/O.

1517     BL      18-Jun-81       Q10-05075
         Use HELLO macro at CLRDIV (FORMSC)

1520     BL      19-Jun-81       Q10-05485
         eliminate CORE UUO which wipes out VMDDT

1521     JLC     26-Jun-81
         Fix formatted EOF processing: stop processing the I/O list when
         about to get an EOF.

1522     JLC     01-Jul-81
         Fix R format output to match R format input for width
         larger than 5.

1523     JLC     03-Jul-81
         1022 interface in FORMEM, FOROP.

1524     DAW     06-Jul-81
         Fix POWER function error message to be shorter so it is not truncated.
         In FORSNG EXP3. function.

1525     JLC     07-Jul-81
         Fix PAUSE so it types the *, etc.

1526     BL      09-Jul-81
         Fixes to FORERR,FORTRP,FOROPN,FORHAK to work on TOPS10.

1527     JLC     09-Jul-81
         Fixes to FORMEM.

1530     JLC     10-Jul-81
         Change name of FOROTS.EXE to FOROT6.EXE in FORINI. Remove
         old EXE file compatibility (V5 is now left FOROTS.EXE).
         Changed CTL files and CCL files.

1531     JLC     10-Jul-81
         More fixes to FORMEM.

1532     DAW     14-Jul-81
FOROTS.DOC - FOROTS-10 version 6                                Page 27

         OPEN rewrite base level 1.

1533     DAW     14-Jul-81
         Errors that were supposed to print the input record didn't.
         Also those errors messed up the message text saved for ERRSNS.

1534     DAW     14-Jul-81
         Infinite loop if illegal characters in DIALOG='string'.
         Also add code for TOPS-20 "STATUS='SCRATCH'".

1535     JLC     14-Jul-81
         Add code for proper EOF handling and IOSTAT.

1536     JLC     15-Jul-81
         Minor edits. Changed FORFMT and LDIO/NMLST to call
         %ORECS instead of %OREC to setup record buffer.

1537     DAW     16-Jul-81
         Finish SCRATCH file handling for TOPS-20. Get CLOSE working
         again for TOPS-20.

1540     DAW     17-Jul-81
         Delete IS from DDB, use IOSTAT variable directly.
         Set IOSTAT variable to zero at the start of each IO statement.
         Set D%ERR if "?" error in IOERR.

1541     DAW     17-Jul-81
         Get rid of D%LIN and D%LOUT

1542     JLC     17-Jul-81
         Change EOF and ERR returning, so that we stop I/O processing
         when the EOF or error happens.

1543     DAW     17-Jul-81
         Allow SCRATCH files to be on devices besides DSK:

1544     DAW     20-Jul-81
         /CARRAIGECONTROL not working right; invent a routine "FIXU"
         like FIXDEF that solves the problem.

1545     DAW     20-Jul-81
         Remove call to %OCRLF at CLOSE time.

1546     JLC     20-Jul-81
         TIREC for -20 did not have an input buffer. DECINI was not
         being called in DEC%.

1547     DAW     20-Jul-81
         Re-work FORIO routines "CLSOPN" and "CLREOF" which used to
         call %AUXBF.

1550     JLC     20-Jul-81
         Make truly sure there is a buffer before calling the INI
         routines. Fix DECODE. Fix X format.

FOROTS.DOC - FOROTS-10 version 6                                Page 28

1551     DAW     20-Jul-81
         Fix LOAD, STORE macros to give a "Q" error if you try to
         "MOVE" or "MOVEM" a quantity that's not defined to be
         a full word.

1552     DMN     21-Jul-81
         Performance work on FORFMT.

1553     JLC     22-Jul-81
         Fixes to ENCODE, DECODE, and TIREC. Remove ENCINX, was
         not used any more.

1554     DAW     22-Jul-81
         CLOSE keywords separate from OPEN; work on /DISPOSE actions.

1555     BL      22-Jul-81
         Install DMN code for non-zero FORSRT.

1556     DAW     22-Jul-81
         CLOSE from EXIT no longer worked.

1557     JLC     24-Jul-81
         FLOUT uses double precision for everything. Therefore
         print same maximum of significant digits for both.

1560     DAW     28-Jul-81
         OPEN rewrite base level 2.

1561     DAW     28-Jul-81
         LSNGET always returned -1

1562     DMN     28-Jul-81
         Improve performance of FORFMT.

1563     DAW     29-Jul-81
         DIALOG='string' lost track of its arg type.

1564     DAW     29-Jul-81
         Check conflicts in CLOSE switches; use STATUS value if DISPOSE
         not set.

1565     DAW     29-Jul-81
         Do BLANK= defaulting correctly.

1566     JLC     29-Jul-81
         Fix error handling in FORFMT.

1567     JLC     30-Jul-81
         More fixes to FORIO.

1570     DAW     30-Jul-81
         Add flag F%NION so %IONAM doesn't get cleared in OPEN.

1571     DAW     31-Jul-81
         Set F to initial value if program goes to %ABORT.
FOROTS.DOC - FOROTS-10 version 6                                Page 29

1572     JLC     31-Jul-81
         Set F to initial value in FORTRP before printing error.
         Initialize ENCODE more completely.

1573     DAW     31-Jul-81
         Do RENAME errors better; eliminate typing random CRLF's when
         ERR= branch taken.

1574     BL      3-Aug-81
         Missing IF20 in FORIO.

1575     JLC     5-Aug-81
         Fix record zeroing again. Fix bug implanted by dir=arr patch.
         Fix bad illegal repeat count msg from FORFMT.
         Implement separate access bit setting mechanisms for DOOPEN
         for the -20, eliminating MTACRK.

1576     DAW     11-Aug-81
         OSWTCH for disk.

1577     DAW     11-Aug-81
         Fix bug caused by dropping a null at EOR when the
         record buffer happens to be full.

1600     DAW     11-Aug-81
         In a FORMAT, allow "X" to mean "1X" (as it used to!)

1601     DAW     12-Aug-81
         ENDFILE trying to open disk file for input on the -20.

1602     JLC     12-Aug-81
         Reinserted suppression of initial CRLF for terminals only.

1603     DAW     12-Aug-81
         Don't type statement name more than once when
         multiple IOERR's are done.

1604     DAW     12-Aug-81
         Yet another problem similar to 1601 (DIVERT this time).

1605     JLC     12-Aug-81
         FORFMT was not complaining about (A419X) as ambiguous.

1606     DAW     13-Aug-81
         Fix right-justified output for single-word items.

1607     DAW     13-Aug-81
         Bug in FIND code (Aaaargh!)

1610     DAW     17-Aug-81
         CLOSE/RENAME on the -10 failed

1611     DAW     17-Aug-81
         "%integer overflow" bombed out program instead of continuing.
FOROTS.DOC - FOROTS-10 version 6                                Page 30

1612     BL      18-Aug-81       Q20-01642
         SORT put itself into non-zero section prematurely

1613     JLC     19-Aug-81       Q10-6390
         Bug in backspace: used word count for ASCII files.

1614     JLC     19-Aug-81
         Remove END= processing for end of last record which has no
         CRLF. Thus EOF becomes a valid record terminator.

1615     DAW     19-Aug-81
         Get rid of code and assembly option for 2-word byte pointers

1616     DAW     19-Aug-81
         Infinite loop if non-disk TOPS-10 OPEN error.

1617     DAW     19-Aug-81       Q10-5204
         Problem with DISPOSE='SUBMIT'

1620     DAW     20-Aug-81
         Fix generation skew problem in dialog mode on the -20.

1621     DAW     20-Aug-81
         CLOSE/ RENAME/ DELETE failed on the -10.

1622     JLC     21-Aug-81
         Fix record positioning functions, so that T, X format
         really work correctly. Rewrite ENCODE/DECODE again.

1623     DAW     21-Aug-81
         Alternate entry point RESET$ to test extended addressing
         in FOROTS.

1624     DAW     21-Aug-81
         "?Illegal record number" error got record # from wrong ac.

1625     DAW     21-Aug-81
         Get rid of accumulator "DF". No more DDB flag synchronization
         problems caused by DDB flags in more than one place!

1626     DAW     24-Aug-81
         AC changes in FLIRT and FLOUT so they don't define "D".

1627     JLC/DAW 24-Aug-81
         On TOPS-20, REWIND and UNLOAD no longer need a filename

1630     JLC     24-Aug-81
         Illegal magtape operations are now fatal.

1631     DAW     24-Aug-81
         Set D%MOD in UNFO

1632     JLC     24-Aug-81
         Fixed X and T format to pad with spaces, not random trash.
FOROTS.DOC - FOROTS-10 version 6                                Page 31

1633     JLC     25-Aug-81
         Typo in DECINI, added nofile functionality to ENDFILE,
         SKIPFILE, and BACKFILE. Fixed some comments in FORFMT.

1634     JLC     25-Aug-81
         Fix FIXREC, did not clear ORVIR, so extra blanks got output.

1635     JLC     25-Aug-81
         Remove edit 1633 for ENDFILE, can't work that way.

1636     DAW     25-Aug-81
         "Ambiguous repeat count" error instead of "Illegal repeat count"
         for FORMAT (A4X).

1637     JLC     26-Aug-81
         Decode bug. IRPTR was not getting setup properly.

1640     DAW     26-Aug-81

1641     DAW     26-Aug-81
         OPEN with ACCESS='SEQINOUT', STATUS='NEW' didn't get correct
         file on TOPS-20.

1642     JLC     27-Aug-81
         Remove %FILOP calls from all of FOROTS, since we don't
         support 6.03.

1643     JLC     27-Aug-81
         Made IRBUF & ORBUF full word byte pntrs.

1644     JLC     27-Aug-81
         Fix free-format A to stop on comma. Change R*<space>C to
         to be read as R*C, at least for version 6 and maybe beyond.

1645     DAW     28-Aug-81
         Get TOPS-10 and DIVERT'ed file to column 1 before errors.
         (See also 1651).

1646     DAW     28-Aug-81
         DTA REWIND and UNLOAD used wrong channel #.

1647     DAW     28-Aug-81
         DTA REWIND and UNLOAD to not require an existing file.

1650     BL      31-Aug-81
         Fix RECORDSIZE applied to NAMELIST & LIST directed output

1651     DAW     31-Aug-81
         Wait for TTY output to finish before doing TRMOP. ".TOHPS".
         (Fixes a bug in 1645).

1652     DAW     1-Sep-81
         Fix DUMP mode I/O on TOPS-10; make "IOE" a "?" error.
FOROTS.DOC - FOROTS-10 version 6                                Page 32

1653     JLC     1-Sep-81
         Return -1 (illegal LSN) for non-LINED files and LINED
         files with no LSN.

1654     BL      1-Sep-81
         Typo in EDIT 1650.

1655     DAW     1-Sep-81
         Clear .RBALC after successful OPEN FILOP.

1656     DAW     2-Sep-81
         Get rid of some magic 8's and 9's.

1657     DAW     2-Sep-81
         Delete 7.01 definitions from FORPRM.

1660     DAW     3-Sep-81
         Use low channels if all the extended ones are taken.

1661     BL      4-Sep-81
         Fix incorrect info coming from TRACE; & illegal instruction return.

1662     DAW     4-Sep-81
         Invent routine %CALU to make error processing easier.

1663     JLC     8-Sep-81
         Output bufferful to magtape to make sure tape mark gets out.
         Fix page-not-there error for RANDIN.

1664     DAW     8-Sep-81
         Don't call DOOPEN twice if DDB's get consolidated at OPENX.

1665     DAW     8-Sep-81
         Replace the antiquated U.TTY hack with a brand new D.TTY hack.

1666     DAW     8-Sep-81
         /MODE:IMAGE implies /FORM:UNF. /FORM:F is a conflict.

1667     JLC     8-Sep-81
         One-word patch to FORMEM, makes lowseg core request work.

1670     DAW     9-Sep-81
         Fix two disk 'append' files open at once.

1671     JLC     9-Sep-81        Q10-6480
         Installed patch to create data pages on disk if they won't
         fit in core, as per request by SIT.

1672     DAW     9-Sep-81
         Missing a check for conflict of RANDOM and no RECORDSIZE.

1673     CDM     9-Sep-81
         Added routines to FORSNG, FORDBL, FORGDB, FORCPX.

FOROTS.DOC - FOROTS-10 version 6                                Page 33

1674     DAW     9-Sep-81
         OPEN of LPT: on the -10 got incorrect "?conflict".

1675     DAW     9-Sep-81
         Added checks for device conflicts with modes.

1676     DAW     9-Sep-81
         Fix %OCRLF so it always outputs a CRLF and doesn't use "U".

1677     JLC     10-Sep-81
         Fixed unmapping of unused pages, missing label in MAKDP.
         Use seed and multiplier from version 5A for RAN.

1700     BL      10-Sep-81
         Typo FORTRP/%CALU.

1701     JLC     10-Sep-81
         Setup was wrong for unmapping unused pages.

1702     JLC     10-Sep-81
         Added still more code to handle ref to hole in file.
         Added code to prevent expansion of random file on -10
         by touching file past EOF.

1703     DAW     11-Sep-81
         Fix typing too many CRLF's on an error when TTY file is open.

1704     JLC     11-Sep-81
         Fix T-format bug, was padding with one blank if current pos
         was desired pos. Typo in -10 RDW routine.

1705     JLC     11-Sep-81
         Fix more serious T-format bug, send next char position to
         %SPOS instead of decremented one.

1706     DAW     11-Sep-81
         Change errors around to make them more compatible with V5A,
         more consistant, easier to find in FORERR, easier to create
         documentation from the code, and more informative to the user.

1707     JLC     14-Sep-81
         Edit 1705 broke %IBACK.

1710     JLC     14-Sep-81
         Fix LDIO delimiter bugs.

1711     DAW     15-Sep-81
         Set D%ERR if fatal IOERR even if message not typed.

1712     JLC     15-Sep-81
         Fixed more problems with T-format. Added IRVIR to FORPRM.
         Eliminated D%ERR.

1713     BL      15-Sep-81
         Added 'DFL.3' to FORDBL.
FOROTS.DOC - FOROTS-10 version 6                                Page 34

1714     JLC     15-Sep-81
         Remove check for open unit in DIVERT, since a SEQUENTIAL
         file isn't open until you write to it.

1715     DAW     15-Sep-81
         If user specified FORM='FORMATTED' and didn't specify a
         MODE, he got an ?Internal FOROTS error.

1716     JLC     16-Sep-81
         Changed some data and subroutine names in FORIO to avoid
         confusion. Fixed typo caused by the confusing names.

1717     DAW     16-Sep-81
         Implement D%NCLS.

1720     JLC     16-Sep-81
         Undid edit 1714. It was correct as it stood. Added check to
         make sure file is open for formatted I/O.

1721     CDM     16-Sept-81
         Corrected DDIM and GDIM to prevent overflow for call -INF,+INF
         to them.

1722     JLC     16-Sep-81
         Code for IRPOS had to be much more complicated than originally

1723     DAW     17-Sep-81
         Fix problem with sticky ERR= from OPEN.

1724     BL      17-Sep-81
         Clean up IMSL error messages.

1725     DAW     17-Sep-81
         Better DIALOG parsing error reporting and recovery on TOPS-10.

1726     JLC     17-Sep-81
         Can't use P until there's memory for the stack. Use JSP to
         call routine to make data pages.

1727     JLC     18-Sep-81
         Fix for low-core memory manager. Free list was one word off.

1730     JLC     18-Sep-81
         More fixes to T-format. Speed up format encoding.

1731     DAW     21-Sep-81
         Overflows not filling in the right stuff.

1732     DAW     22-Sep-81
         OPEN (STATUS='NEW') broken on the -20 (again!).

1733     BL      22-Sep-81
         Problem finding beginning of NAMELIST.
FOROTS.DOC - FOROTS-10 version 6                                Page 35

1734     DAW     22-Sep-81
         OPEN (STATUS='SCRATCH', ACCESS='RANDOM') on the -20.

1735     DAW     22-Sep-81
         Make TOPS-20 APPEND disk file get EOF if WRITE followed by READ.

1736     JLC     23-Sep-81
         Fix to edit 1733 in namelist.

1737     DAW     23-Sep-81
         Fix error processing for "?REREAD not preceeded by READ" error.

1740     DAW     23-Sep-81
         More REREAD code.

1741     JLC     23-Sep-81
         Give illegal char in data if numerics immediately followed
         by alpha (or other trash) for list-directed and namelist I/O.
         Fixed low segment memory manager.

1742     JLC     23-Sep-81
         Modified OSWTCH to back up the record count for disk, as the
         ENDFILE record is now counted as a real record. For magtape,
         set it to 1, as we are writing a new file.

1743     DAW     24-Sep-81
         Obscure bug in DIALOG scanning caused ?Illegal source/destination"
         when you misspelled a switch and then retyped it correctly.

1744     DAW     24-Sep-81
         Allow user to OPEN negative units. Note: not documented.

1745     JLC     24-Sep-81
         Removed IRPOS again, wasn't necessary after conceptual change
         to RIPOS/SIPOS. Fixed code in namelist/ldio for reading "3*,".
         Made the input and output record buffer lengths full words, as
         well as the input record length. Removed the silly % from the
         TV macro.

1746     CDM     25-Sep-81
         Simple change to DDIM in FORDBL.

1747     DAW     28-Sep-81
         Got rid of FORPRM dependency in DIVERT. Changed FOROP. function
         FO$DIV to do all the work, also added FO$GDV (get diverted unit).
         Added the recent FOROP. function codes to FORPRM.

1750     DAW     28-Sep-81
         Stop after reading in 5 SFDs from DIRECTORY=array.

1751     JLC     28-Sep-81
         Fix unformatted backspace again.

1752     DAW     29-Sep-81
FOROTS.DOC - FOROTS-10 version 6                                Page 36

         Minor fixes to DIALOG processing.

1753     DAW     29-Sep-81
         IOERR's and LERR's to type out PC.

1754     DAW     29-Sep-81
         Allow negative generation numbers on TOPS-20.
         (for example, -1 means "next generation of new file").

1755     DAW     1-Oct-81
         Allow user to specify protections <111> in TOPS-10 dialog mode,
         as per V5A.  (i.e. they can be before or after the Path).

1756     JLC     1-Oct-81
         Change memory manager again; TRYHRD now starts at STARTP+1,
         minus number of pages desired.

1757     DAW     2-Oct-81
         Conflict with /READONLY caused "?Ill mem ref".

1760     JLC     5-Oct-81
         Changed elapsed time calc to use system uptime rather
         than time-of-day to prevent operator causing negative
         elapsed time. Changed FORERR to print 2 decimal places.

1761     JLC     5-Oct-81
         Fixed ENDFILE on disk, was not opening file for output,
         so EOFN could not get updated, also fell over if UNFSW
         got called.

1762     DAW     6-Oct-81        Q10-06581
         Fix printing of FORMAT with arrow pointing to wrong place.

1763     DAW     7-Oct-81
         Fatal error if user tries to WRITE into a LINED file.
         It is not supported yet. (in V6).

1764     DAW     7-Oct-81
         TOPS-10 MTASET got %Integer divide check, TAPOP. error 3.

1765     DAW     7-Oct-81
         Make OPEN error display show the non-typing character that
         was illegal.

1766     DAW     7-Oct-81
         Don't type error PC flags as part of the PC.

1767     DAW     8-Oct-81
         Explain with comments the "magic" number 8 in OVERFL.

1770     DAW     8-Oct-81
         If TOPS-10 GALAXY V2 is running, progs that used DISPOSE='PRINT'
         would hang in EW state.

1771     DAW     8-Oct-81
FOROTS.DOC - FOROTS-10 version 6                                Page 37

         Missing /LIMIT code for TOPS-10 GALAXY V2 packet.

1772     DAW     8-Oct-81
         TOPS-10 DISPOSE='DELETE' did not release channel.

1773     DAW     8-Oct-81
         Change error name "CMU" to "IEM" - internal error in mem. management

1774     DAW     8-Oct-81
         Instead of getting "?Unexpected TAPOP. error" for typical
         errors, either avoid the error in the first place or
         give a better error message.

1775     JLC     9-Oct-81
         Fix control-Z. Fix tapop being done when it doesn't need to be.
         Fix LSNGET to always return -1 for non-open units.

1776     DAW     9-Oct-81
         Allow modes BINARY,IMAGE,DUMP to be used with TOPS-10 NUL:.

1777     DAW     9-Oct-81
         Don't do FILOP. "releases" without first doing FILOP. "Closes"
         if the file is possibly open.

2000     DAW     9-Oct-81
         1. Fix typo that caused PLOT to fail since unit -7 couldn't be
         2. Get rid of extraneous, unreachable TOPS-10 code.

2001     JLC     13-Oct-81
         At INIHLT, the check to see if the page exists in core
         was wrong, was TXNE, should have been CAIN.

2002     DAW     13-Oct-81
         OPEN 'TTY' with ACCESS='SEQIN' followed by "TYPE" didn't work.

2003     BL      14-Oct-81       Q10-06574
         Change data type "0" from "U" to "I".

2004     DAW     14-Oct-81
         Make sure MODE is identical before consolidating DDB's.

2005     JLC     15-Oct-81
         Reenter code added. Asks the users whether all files are
         to be closed, then goes to user-specified reenter address
         or exits to monitor if none. Fixed random file bugs.
         On -10: update .RBSIZ so that we don't substitute
         a block of zeroes for real data. On -20, keep a record of
         the highest referenced page and unmap unused pages.

2006     JLC     15-Oct-81
         Control-Z change broke DECODE by meddling with IRCNT, which
         should be inviolate before the "device-dependent" call.

2007     JLC     16-Oct-81
FOROTS.DOC - FOROTS-10 version 6                                Page 38

         Fixed runtime and elapsed time calcs. Make "temp stack"
         big enough to survive catastrophies.

2010     JLC     19-Oct-81
         Made EOFN and BYTN live on the -10 so we can give QUASAR
         an accurate block count.

2011     DAW     19-Oct-81
         DOOPEN to store EOFN from the .RBSIZ information. Also
         get rid of "FSTAT". Compute number of blocks for QUASAR from
         EOFN and BPW.

2012     JLC     19-Oct-81
         Changed elapsed time calcs yet again.

2013     DAW     19-Oct-81
         Fix TRACE to store "..." at end of string, not into a literal.

2014     AHM/JLC 19-Oct-81
         Fix NAMELIST block description and code for extended addressing.
         Fix NAMELIST check for illegal subscripts.
         Fix unmapping of unused pages not to unmap holes.
         Remove useless referencing of all of core in initialization.
         Changed FORHAK to refer to Z.ERR instead of F.DATA for 1022.

2015     DAW     20-Oct-81
         AC smashed in FORMEM caused problems trying to create .GT. 1
         pages when it had to go virtual.

2016     JLC     20-Oct-81
         SLIST and ELIST fix to differentiate between -66 and -77

2017     JLC     21-Oct-81
         Fix 1022 patch in FORHAK, modify F20OTS.CCL and F10OTS.CCL
         to create new PSECT, used only by FORHAK to know the end
         of the F.ERR PSECT.

2020     DAW     21-Oct-81
         Make DATE return the last character as SPACE instead of NULL,
         so it will match a literal generated by the compiler.

2021     JLC     22-Oct-81
         Change A format so that if no field width is specified,
         it uses 5 or 10 for input as well as output to conform
         with the ANSI standard.

2022     DAW     22-Oct-81
         Make TOPS-20 error message better when JFNs run out.

2023     DAW     23-Oct-81
         GALAXY R2 code didn't delete file if DISPOSE='LIST' used.

2024     DAW     26-Oct-81
         ILC is now a fatal error, make it go to "%ABORT" if done.
FOROTS.DOC - FOROTS-10 version 6                                Page 39

2025     JLC     26-Oct-81
         Fix elapsed time calcs for the -10 yet again. Fixed FORMEM
         for 1022 folks.

2026     JLC     27-Oct-81
         Fixed RSIZW for LINED files, so they will backspace correctly.

2027     DAW     27-Oct-81
         Rework the GALAXY V2 code to use symbolic names, this allows
         users in the field who have modified QSRMAC to just reassemble
         FOROTS to make /DISPOSE:<queue> work.

2030     JLC     27-Oct-81
         Fix SLISTs and ELISTs to use 1 for a count if the count
         provided is negative or zero.

2031     DAW     27-Oct-81
         Fix smashing AC in FORERR if no symbols loaded.

2032     JLC     29-Oct-81
         Fix KI code for DPMUL.

2033     DAW/JLC 15-Nov-81
         Make R format pad with spaces instead of nulls as in V5A.
         Make fatal error "ILS" go to %ABORT if no ERR= branch.
         Give error if random I/O attempted without an OPEN statement
         (to specify a RECORDSIZE).
         Fix A free format.
         Make "Data in Io list but not in format" go to %ABORT.
         Change names of some global symbols that didn't have "%" in them.
         Make ERR= work with ENCODE/DECODE (again).
         Fix call to %MVBLK in FORMEM to use correct calling sequence.
         Reset "F" in FOROP call to close all files.
         Allow leading spaces in some OPEN args (such as FILE= ).
         Fix incorrect call to mem manager in FOROPN.
         Don't do XSIR% JSYS unless FOROTS is running in a non-zero section;
         otherwise the Release 4 EXEC can get confused.
         Fix problems in REENTER code.
         Fix dollar format to make T and X have some effect at
         the end of a record.

***** End Revision History *****