Trailing-Edge
-
PDP-10 Archives
-
BB-L014C-BM
-
autopatch/t20al4.d01
There are 2 other files named t20al4.d01 in the archive. Click here to see a list.
EDIT DESCRIPTIONS FOR TOPS-20-KL-ARPA-V4
EDIT 561 FOR EXEC
[SYMPTOM]
The DSIMOUNT command can accept an indefinite number of
keywords without any error. For example;
@DISMOUNT TAPE TAPE TAPE STRUCTURE TAPE STRUCTURE ...
[DIAGNOSIS]
After the keyword is parsed, P3 is assumed to contain the
dispatch address suitable for a CALL. This is not the case and the
subsequent call is nearly a random jump. Since P3, at this point
in the code will always contain the address of the DISMOUNT
command, the keyword is simply parsed again.
[CURE]
Set up P3 with the proper dispatch address using the GETKEY
subroutine so that the code can go on. The following patch can be
installed in V4 of the EXEC. V4.1 of the EXEC has corrected this
problem.
********************************************************************************
EDIT 562 FOR EXEC
[SYMPTOM]
Doing the INFORMATION (ABOUT) MEMORY-USAGE command when a
restricted JFN has been obtained and mapped into the program space
causes an internal illegal instruction trap in the EXEC.
[DIAGNOSIS]
The JFNS% JSYS that accomplishes the usual typing out of file
names in this display attempts to update what might possibly be a
string pointer even though the failure makes such an operation
irrelevant.
[CURE]
If the failure of the JFNS% JSYS occurs, don't bother updating
the output designator as is the usual case. The following patch
can be installed in V4 of the EXEC and is in V4.1.
********************************************************************************
EDIT 563 FOR EXEC
[SYMPTOM]
The CRAM subcommand to any of the DIRECTORY commands does not
wait for confirmation.
[DIAGNOSIS]
The code is not asking for any confirmation.
[CURE]
Add a call to the subroutine that does the confirm function
via COMND%. The following patch can be installed in V4 of the EXEC
and has been added to V4.1.
********************************************************************************
EDIT 564 FOR EXEC
[SYMPTOM]
When using the copy command to copy from a terminal device to
an unassigned PTY, the EXEC dies with an illegal instruction
interrupt.
[DIAGNOSIS]
New code in V4 of the EXEC did not attempt to catch possible
errors while using the SOUT% or SOUTR% JSYSs used in this specific
kind of COPY.
[CURE]
Include an ERJMP after the XCT instruction which will be
executing one of these two JSYSs to catch any possible I/O errors.
The following patch can be installed in V4 of the EXEC and has been
written into V4.1.
********************************************************************************
EDIT 565 FOR EXEC
[SYMPTOM]
INFORMATION (ABOUT) STRUCTURE, when specifying a valid
non-disk device, the error message gets lost and the device
designator gets lost. This causes an illegal instruction trap in
the EXEC.
[DIAGNOSIS]
Some places in EXECIN confuse T1 with A, assuming they both
refer to AC1. However, from the GALAXY definitions, T1 is really
AC3.
[CURE]
Take out the references to T1 and replace them with A. The
following patch can be installed in V4 of the EXEC and has been
installed in V4.1.
********************************************************************************
EDIT 566 FOR EXEC
[SYMPTOM]
When copying a file that is exactly some multiple of 512 pages,
the COPY command "hangs".
[DIAGNOSIS]
EXEC depends upon a BLT instruction failing to determine whether
the COPY is complete. A previous PMAP that fails midway in the
mapping process, however, causes the BLT to never fail as EXEC
doesn't bother to check for this possibility.
[CURE]
Include extra code to do end of file testing more intelligently.
********************************************************************************
EDIT 567 FOR EXEC
[SYMPTOM]
The EXEC command SET DEFAULT PLOT<return> blows up.
[DIAGNOSIS]
Somebody forgot the PLOT entry for a table.
[CURE]
Add in the entry.
********************************************************************************
EDIT 570 FOR EXEC
[SYMPTON]
Control/C during an EXEC level command will cause the TYPE
command to flag embedded nulls.
[DIAGNOSIS]
Routine CCPSI in EXECSU neglects to reset the CCOC word if an
EXEC level command was interrupted.
[CURE]
See enclosed patch.
********************************************************************************
EDIT 571 FOR EXEC
[SYMPTOM]
Confusion over edit 570.
[DIAGNOSIS]
Edit 570 is not in standard form.
[CURE]
Put edit 570 in standard form; no code changes involved.
********************************************************************************
EDIT 572 FOR EXEC
[SYMPTON]
A command file containing load class commands that is executed
using the "@FILENAME.CMD" command, sometimes results in missing files,
even if all files exist.
[DIAGNOSIS]
The command is not terminated by a null when it is read in from
the file. The EXEC expects a null, and will therefore get confused if
a longer command was read into the buffer previous to this one.
[CURE]
Deposit a null into the buffer following the command string after
the carriage return has been seen to terminate the command.
********************************************************************************
EDIT 573 FOR EXEC
[SYMPTOM]
When the EXEC COPY command is used on an ANSI labelled ANSI-ASCII
tape to copy a file to disk, the resultant disk file is not an ASCII
file and is illegible. When exeamined with FILDDT, the file shows one
7-bit ASCII byte per 36-bit word, right justified; the remainder of
the word is nulls.
[DIAGNOSIS]
The COPY command uses a 36-bit byte pointer for all magtape
source operations at the bytesize default routine, COPDEF. This is
invalid, since ANSI-ASCII consists of 7-bit bytes.
[CURE]
Make COPDEF check to see if the COPY source is a labelled
ANSI-ASCII tape. If it is, then make the bytesize be 7 bits.
********************************************************************************
EDIT 574 FOR EXEC
[SYMPTOM]
BATCON will confuse the exec prompts with OPERATOR mode
characters.
[DIAGNOSIS]
ALL EXEC prompts should be preceeded by a space when running
in a Batch job.
[CURE]
Preceede all EXEC prompts with a space when running under
batch.
********************************************************************************
EDIT 575 FOR EXEC
[SYMPTOM]
If you control-c out of DUMPER, EXEC says:
@JFN n ASSIGNED @%CLOSE JFN?
If you say "yes", it comes back with:
@%CLOSE JFN?
It will do this forever.
[D]
The KEYWD routine no longer preserves temporary ACs, and the JFN
to be released gets zapped.
[C]
Put a "MOVE A,Q1" at CJDYES: to get back the JFN to be released.
********************************************************************************
EDIT 576 FOR EXEC
[SYMPTON]
If specifying a file with a null extension to the COPY or RENAME
command and the destination directory has a file with the same name
but different extension, EXEC will default to the already existent
extension, rather than null.
[DIAGNOSIS]
Routine LFJFNS returns a zero if no extension was typed, and this
gets stored in the GTJFN block as the default extension. Tops-20 then
interprets this to mean that there is no default extension, when there
really is one - a null extension.
[CURE]
Let routine LFJFNS return a pointer to a null string, which will
cause the subsequent GTJFN to default to a null extension.
********************************************************************************
EDIT 577 FOR EXEC
[SYMPTOM]
EXEC COPY command does not copy the user-settable word into the
new file's FDB.
[DIAGNOSIS]
Code was omitted.
[CURE]
Add code to COPY routine which does CHFDB% to put .FBUSW into the
new file's FDB.
********************************************************************************
EDIT 578 FOR EXEC
[SYMPTOM]
If a PRINT command is given for a file with a .DAT extension with
a global /DELETE or /PRESERVE switch, the file is printed as
/FILE:ASCII.
[DIAGNOSIS]
When the /DELETE or /PRESERVE switch is used, the file is checked
for a .DAT extension before the extension is retrieved by the JFNS.
[CURE]
Move the test for /DELETE and /PRESERVE to after the JFNS.
********************************************************************************
EDIT 579 FOR EXEC
[SYMPTOM]
EXEC edit numbers are in octal; DEC standard says they should be
in decimal.
[DIAGNOSIS]
After edit 577, edit numbers should be in decimal. The first
edit after edit 577 was made as edit 384 (O577 converted to decimal
and incremented by one). This will cause a problem when the edit
level once again reaches 577, as there will be two different sets of
edits with the same number.
[CURE]
Begin new edits at D578. Replace all references to edit 384 with
578. This will leave a gap in the octal version information.
********************************************************************************
EDIT 1718 FOR MONITO
[SYMPTOM]
BUGHLTs SECGT1 on Version 3A and ILMREF on Version 4 of
TOPS-20 when byte size for the pointer to the logical name
definition string in AC3 for the CRLNM JSYS is greater than
7 bits.
[DIAGNOSIS]
The MONITOR made no check as to the validity of the byte
size before using each byte as an index into a table of
character types. This could cause the index register to
contain big numbers and thus cause SECGT1 and ILMREF
BUGHLTs.
[CURE]
At CRLNM0 (after the byte pointers have been checked for the
default byte size and position, ie. -1,,ADR) have the
MONITOR check the byte size. If greater than 7 bits, return
the error
ARGX09 - 'Invalid Byte Size'
to the calling routine.
********************************************************************************
EDIT 1719 FOR MONITO
[SYMPTOM]
PHYCH3 BUGINFs.
[DIAGNOSIS]
Test of unit active on HOME block check is wrong.
[CURE]
Do the test correctly.
********************************************************************************
EDIT 1720 FOR MONITO
[SYMPTOM]
COBOL programs receive errors such as "Read an EOF instead of a
label" or record sequence errors while reading magtapes.
[DIAGNOSIS]
Tape read-ahead is handled incorrectly, allowing a race condition
in the tape status code concerning a bit used both at program level
and at PHYSIO interrupt level.
[CURE]
Prevent the race by doing a call to the routine used to achieve
proper status synchronization. Separate patches for 3A and 4 are
given.
********************************************************************************
EDIT 1721 FOR MONITO
[SYMPTOM]
MSFRK blows the WHEEL or OPERATOR capability security check.
[DIAGNOSIS]
Typographical error in test.
[CURE]
Correct test instruction.
********************************************************************************
EDIT 1722 FOR MONITO
[SYMPTOM]
Problems when clearing volid valid for a tape.
[DIAGNOSIS]
AOBJN loop in MTCLVL routine should be using T3 in loop, but is
using AC U instead.
[CURE]
Use the right AC to AOBJN on.
********************************************************************************
EDIT 1723 FOR MONITO
[SYMPTOM]
Volume Valid is not cleared for labeled tapes under restart
conditions, leading the system to believe false information.
[DIAGNOSIS]
The bits start clear, which handles the initial startup case;
the AC field is missing in the AOBJN loop to clear the bits.
[CURE]
Fill in the proper AC in the AOBJN.
********************************************************************************
EDIT 1724 FOR MONITO
[SYMPTOM]
Disk usage for <SYSTEM> becomes garbaged values; INFO DISK
command may give negative numbers and over quota by +INF pages;
changing directory parameters is made difficult by quota problems.
[DIAGNOSIS]
Some code is still using the wrong representation for disk
storage "infinity" and word overflow is occurring, for example on
deleting of files.
[CURE]
Fix the quota representation.
********************************************************************************
EDIT 1725 FOR MONITO
[SYMPTOM]
Occasional P2RAEx and TM2CCI BUGCHKs sometimes followed by
keep-alive failures on systems using TU77 tape drives.
[DIAGNOSIS]
In PHYM2, routine FTLERR calls WTREG3 under conditions where the
ACs might not be set up properly. In particular, WTREG3 needs to have
Q2 set up, and it isn't. It should be calling WTREG which would
handle the case correctly, using the unit number in the UDB.
[CURE]
Change the calls to WTREG3 to WTREG in two places.
********************************************************************************
EDIT 1726 FOR MONITO
[SYMPTOM]
1. Typos in the TU77 patch tape for 2020s.
2. Persistent TU77 problems (TM2CCI) after applying previous
patches.
[DIAGNOSIS]
Typos and unexplained habit of TU77 to have DS.SLA and DS.SSC be
up in unexpected combinations.
[CURE]
Fix typos and make a more inclusive check on DS.SLA and DS.SSC in
POLLP.
********************************************************************************
EDIT 1727 FOR MONITO
[SYMPTOM]
Under certain conditions, attempting to rename a file can cause
the BUGCHKS DIRNL, ULKSTZ and IDFOD2.
[DIAGNOSIS]
If a user gets a JFN on a file he wishes to rename and then
another user deletes and expunges that file before the RNAMF JSYS is
called, the above BUGCHKS occur. The RNAMF code attempts to get an
FDB on the source file which will fail because it was deleted and
expunged. When the GETFDB call fails, the error return is taken
leaving the directory unlocked. The code handling the error return
however, goes to a common routine which attempts to unlock the
directory resulting in the BUGCHKS.
This problem was partially fixed by the answer to SPR 20-12542
on 11-APR-79 and in V4. If the timing is right however, the problem
can still occur. Additionally, the fix did not take into
consideration that an OFN was assigned and should be released on the
error return.
[CURE]
This patch supercedes the patch for SPR 20-12542. Do the GETFDB
immediately before using the source file. If the error return is
taken simply release the OFN for the destination.
********************************************************************************
EDIT 1728 FOR MONITO
[S] Disappearance of files after executing the RENAME command under
V3A.There can also be a large number of lost pages reported by CHECKD
when this happens. Under V4, and under the same circumstances, an
incorrect error message is returned.
[D] If a new file is created and not closed, and if the destination
name specified in the RENAME command happens to be the name of this
newly created file, the Renamed file disappears after the new file is
closed. The rename code checks if there is an existing FDB address
for the destination file. If one is found and the FILNB(new) bit is
on it incorrectly assumed that the FDB is invalid, wipes out the
address and assigns a new FDB. When the new file is closed, the FDB
is changed to reflect this new file, resulting in the disappearance of
the original file.
[C] Check to see if the FILNB bit is on. If it is, check to see if
the file is actually busy and return an error if so else assign a new
FDB. This fixes the problem in V3A.
In V4, return the correct error message.
********************************************************************************
EDIT 1729 FOR MONITO
[SYMPTOM]
Doing the RNAMF JSYS on a file when the destination file was
previously opened causes a SHROFD BUGHLT.
[DIAGNOSIS]
Status of file not restored correctly.
[CURE]
Ensure that the file status is restored correctly in all cases.
This patch is applicable for both V3A and V4.
********************************************************************************
EDIT 1730 FOR MONITO
This edit was removed by edit 1734.
********************************************************************************
EDIT 1731 FOR MONITO
[SYMPTOM]
When installing TOPS20 on a 2020 with a three or four pack RM03 PS:,
the MONITOR will let you define the structure but when it attempts to
mount it it will fail.
The messages look something like
[STRUCTURE PS: SUCCESSFULLY DEFINED]
[PS: NOT FOUND, WHAT IS THE NAME OF THE PUBLIC STRUCTURE]
[DIAGNOSIS]
The calculation for the size of the bit table for the
structure is done correctly during the mount procedure but
incorrectly during the definition procedure.
The current calculation during structure definition is to multiply
number of cylinders per unit by the number of units per structure,
thus getting cylinders per structure. It then compares this to the
number of words available in the bit table. The bit table comprises
more than one word per cylinder in the structure, in fact it contains
a number of words equal to (1+bit words per cylinder) times the number
of cylinders per structure.
[CURE]
Have the calculation at FSIDI2+52 multiply the number of cylinders in
the structure by 1+BTWCYL to generate the actual size of the bit
table.
********************************************************************************
EDIT 1732 FOR MONITO
[S}
Upon initializing a structure, if there are multiple BAT
blocks not in the swapping area, the system would ILMREF
BUGHLT before assigning the second BAT block in the BTB for
the structure.
[DIAGNOSIS]
While assigning the first BAT block address, the SDB address
for the structure (which was in AC4) gets trashed and to
restore the SDB address in AC4 after assigning each BAT
block was overlooked.
[CURE]
In the routine TOPASG in DSKALC, restore the SDB address in
AC4 after assigning each BAT block address in the BTB.
********************************************************************************
EDIT 1733 FOR MONITO
[SYMPTOM]
If the system time and date are not set and a call is made
to the TIMER JSYS which does not require the time and date
to be set, an error return is given anyway.
[DIAGNOSIS]
The MONITOR doesn't care what the function code is if the
system time and date is not set. Rather, it will indiscriminately
return the error.
[CURE]
Have the MONITOR make the disctinction that certain function do
not require system time and date to be set.
********************************************************************************
EDIT 1734 FOR MONITO
[SYMPTOM]
Edit 1730 installed an unsupported informational change that did
not belong in the sources.
[DIAGNOSIS]
As above.
[CURE]
Remove the edit.
********************************************************************************
EDIT 1735 FOR MONITO
[SYMPTOM]
Edits 1727, 1728, 1729 are not in standard form.
[DIAGNOSIS]
As above.
[CURE]
Edit the comments to put the edits in standard form.
********************************************************************************
EDIT 1736 FOR MONITO
[SYMPTOM]
ILCNSP BUGHLT
[DIAGNOSIS]
When only one element is on a unit's Position Wait Queue,
the requested cylinder is the same as the current cylinder,
the fairness count is exhausted and their are no elements on
the unit's Transfer Wait Queue, an ILCNSP BUGHLT will be
generated.
This is because when the SCHSEK routine notices a request on
the PWQ is for the same cylinder that the drive is
positioned to and that the fairness count is exhausted, it
will ignore that element. If there are no other elements on
the PWQ which are requests to other cylinders, than no
element will be picked as either 'Minimum Cylinder So Far'
or 'Best Cylinder So Far'. SCHSEK does not consider this
case and when the call is made to CONSPW, it assumes it has
picked one. Since no element has been decided upon CONSPW
will blow up with ILCNSP.
[CURE]
When the requested cylinder is for the same cylinder as the
current and the fairness count is exhausted, check to see if
a minimum has been found. If not, make the element the
'Minimum Found So Far'. This way, if no other minimums are
found then the transfer will be to the current cylinder.
********************************************************************************
EDIT 1737 FOR MONITO
[SYMPTOM]
Lower case E, 'e', is not a valid exponent designator for
the MFLIN JSYS.
[DIAGNOSIS]
When checking for exponent designator, no attempt is made
to check for lower case E.
[CURE]
Check for lower case E also.
********************************************************************************
EDIT 1738 FOR MONITO
[SYMPTOM]
After inputting a <CR> in binary mode, if the mode is
changed to a non-binary mode, the next character read will
be a <LF>.
[DIAGNOSIS]
The MONITOR does not check what mode the <CR> was input in
before deciding whether a <LF> should be returned
[CURE]
After inputting a character, store the data mode of that
character in the TTY dynamic data block. When checking for
whether a <LF> should be returned when requesting a
character from the TTY buffer, only return it if the last
character input was a <CR> and it was input in non-binary
mode
********************************************************************************
EDIT 1739 FOR MONITO
[SYMPTOM]
BOOT JSYS as used on KL-processors to load or dump a DN20 will
sometimes return a zero error code.
[DIAGNOSIS]
A routine is returning with error flags in T1 instead of the
error code. Some callers expect flags, some expect the code.
[CURE]
Create an envelope routine RMGRNC to the RMGRNK routine which
converts the error flags into an error code, and change the callers
who hope for an error code returned to call RMGRNC instead of RMGRNK.
********************************************************************************
EDIT 1740 FOR MONITO
[SYMPTOM]
SEBISS BUGCHKS which, themselves generate SEBISS BUGCHKS.
[DIAGNOSIS]
The free string area of the BUGHLT/CHK/INF error block is
not long enough to hold the maximum size of the system
name and the maximum size of a bug message. It is short
by seven words.
[CURE]
When allocating the SYSERR block for a BUG entry, get a block
which is seven words longer.
********************************************************************************
EDIT 1741 FOR MONITO
[SYMPTOM]
The SWJFN JSYS does not interchange the directory name field
when swapping two JFNs.
[DIAGNOSIS]
The SWJFN JSYS specifically did not copy three words of the
JFN blocks in the JSB, FILAC (pointer to the account
string), FILLCK (file lock word), and FILDNM (pointer to the
directory name string and pointer to the attribute list).
[CURE]
There is no reason why the JSYS should decide not to
interchange the above three words. The solution is to allow
the JSYS to interchange all words of the JFN block.
********************************************************************************
EDIT 1742 FOR MONITO
[SYMPTOM]
When the SIN JSYS is used on a file of two, three, or four
bytes, the bit OF%PLN was not set in the OPENF JSYS and
there are <NUL> bytes as either the second, third, or fourth
byte in the file, then the null bytes will not be returned
to the calling routine.
[DIAGNOSIS]
The MONITOR, when reading a byte from a file which has had
I/O, uses a byte input routine (SIORX) which expects the
decision about whether the file does in fact contain line
sequence numbers to have been made previously. The routine
to make that decision (BYTINA), decides that if the file is
less than five bytes long, then there must be no LSNs but
does not set the bit which informs the rest of the world.
[CURE]
Remove the check which treats a file of less than five bytes
as special and in so doing, allow the bit <PASLSN> to be
set.
********************************************************************************
EDIT 1743 FOR MONITO
[SYMPTOM]
Cobol programs that write multi-reel EBCDIC tape files will
not write tape marks on the end of any of the reels except
the last one.
[DIAGNOSIS]
This is because, when the physical end of tape is
encountered, PA1050 resets the data mode and then closes the
tape file. Reseting the data mode causes all buffers to be
written to tape and the buffers are then released. The
CLOSF JSYS decides whether to write tape marks on whether
there are buffers allocated for that Magnetic Tape Unit.
The JSYS assumes that if there are no buffers allocated then
no output could have been performed on that unit.
Therefore, there is no need to write the tape marks. This
is a false assumption.
[CURE]
Remove the test at MTACLZ+12 which checks whether buffers
are allocated and replace it with a SKIPA.
********************************************************************************
EDIT 1744 FOR MONITO
[SYMPTOM]
When outputing to a labeled tape in fixed record format, the error
IOX14 - "Invalid Segment Size" would be returned
[DIAGNOSIS]
At MTRCOF where it is decided whether padding with circumflexes should
occur, a check for whether the buffer was the same size as the record
size was made. If the buffer was not the same size, the error IOX14
was returned.
[CURE]
The check should be for whether the buffer is less than or equal to the
record size. In this way, the padding with circumflexes would occur so
at MTRCOF+3 the compare should be a CAMLE rather than a CAME.
********************************************************************************
EDIT 1745 FOR MONITO
[SYMPTOM]
The Default file offline expiration date field of a
directory is always set to the value of .STDFE regardless of
what the value of the Tape-Recycle period is.
[DIAGNOSIS]
That's the way the code is written
[CURE]
If the tape recycle period has been set, use it rather than
.STDFE for the default file offline expiration time.
********************************************************************************
EDIT 1746 FOR MONITO
[SYMPTOM]
Control C randomly appears at various terminals for no
appearent reasons.
[DIAGNOSIS]
The problem occurs when a fork gets a JFN on a PTY then
another fork within the same job enables interrupts for that PTY. When
the second fork gets done, the PTY status for that PTY is not being
cleared. Should another fork be started with the same fork number as
the second fork, then that fork will inadvertently get interrupted
when the PTY becomes hungry.
[CURE]
Ensure that the fork enabling the PTY for interrupts is the
fork which owns the JFN.
********************************************************************************
EDIT 1747 FOR MONITO
[SYMPTOM]
The CHFDB JSYS will not allow users with owner access to a file to change
fields in the FDB without opening the file for write access.
[DIAGNOSIS]
CHFDB calls ACCCHK with the access mask in AC4, but ACCCHK does not save
AC4 before using it. This results in the code in CHFDB1 using a junk value
in AC4 for a mask.
[CURE]
Reload AC4 at CHFDB1+1 with the appropriate mask.
********************************************************************************
EDIT 1748 FOR MONITO
[SYMPTOM]
ILMNRF, as well as other random write to memory type errors.
[DIAGNOSIS]
Using -1 in CTRLTT is not always handled right, in this case to call
STADYN in MEXEC.
[CURE]
At LDTAC2+11, check to see if CTRLTT is -1, if so don't call STADYN, but
UNLOCK DEVLCK, OKINT, and RETurn.
********************************************************************************
EDIT 1749 FOR MONITO
[SYMPTOM]
CRDIR JSYS allows a directory to be deleted when it is in use.
[DIAGNOSIS]
Code does not check to see if any job has connected to the directory to be
deleted, or is logged-in to that directory.
[CURE]
Map the index table for the structure of the directory in question, set the
index table entry for the directory to be invalid (using the INVIDX routine),
then scan all jobs in the system to see if anyone is logged-in or connected
to that directory. If the scan is successful, reset the index table entry
to be valid, and return the CRDIX6, "directory is still mapped" error.
********************************************************************************
EDIT 1750 FOR MONITO
[SYMPTOM]
Hung Jobs with JSSTLK locked
[DIAGNOSIS]
Two possible reasons
1) When returning with an error from GTSTOJ and GTSTOF in
the routines MSTDMC and MSTDCF respectively, the JSSTLK
would not be unlocked.
2) The routine SETDEV would lock the JSSTLK lock but would
be OKINT. This would allow a user to interrupt a fork while
it had the lock and thus the lock would never be freed.
[CURE]
Change the error returns from GTSTOJ and GTSTOF to also unlock
the JSSTLK lock.
Go NOINT before locking JSSTLK in SETDEV and go OKINT after the
call to CHKMNT and after the lock has been freed.
********************************************************************************
EDIT 1751 FOR MONITO
[SYMPTOM]
Memory to memory SIN JSYS when given a byte count in AC3 will
still deposit a null following the last byte for the case where the
exact number of bytes was transferred.
[DIAGNOSIS]
Code checks the user's AC3 after it has updated it for the number
of bytes transferred.
[CURE]
Create a new TRVAR variable at SINR1 to store the initial sense
of the user AC3, and test that flag at the end, not the user AC.
********************************************************************************
EDIT 1752 FOR MONITO
[SYMPTOM]
Attempting to assign channel 23 gives an ATIX1 error even though
this channel is user assignable.
[DIAGNOSIS]
The code that does the range checking is incorrect.
[CURE]
Change the code to check for the proper valid channels.
!
!Patch to allow channel 23 to be user assignable
!For V3A and V4
!
@ena
$GET SYSTEM:MONITR
$ST 140
DDT
ATX2E+5/ CAIL T3,CRSTD1+1 CAIL T3,27
^Z
$SAV SYSTEM:MONITR
MONITR.EXE.2 Saved
********************************************************************************
EDIT 1753 FOR MONITO
[SYMPTOM]
Mstr would not compile
[DIAGNOSIS]
Emacs can rip one off. It would write a ^= to the file
but would print a ] when in the editor.
[CURE]
Replace the ']' in question with another ']' and hope
Emacs doesn't rip us off again.
********************************************************************************
EDIT 1754 FOR MONITO
[SYMPTOM]
Long form GTJFN causes SEGT37. Also SECGT1 when the byte size in monitor
AC3 in LOGNAM is bad.
[DIAGNOSIS]
The monitor never validates that the octal representation of the character
it is retrieving is valid. Hence the byte pointer from CPTAB and the dispatch
location for CCTAB could either or both be invalid with the resultant BUGHLTs.
[CURE]
Ensure that the character being retrieved is a valid ASCII character. The byte
pointer and dispatch location will then both be correct. Also combine two
********************************************************************************
EDIT 1755 FOR MONITO
[SYMPTOM]
Edit 1754 makes edit 1718 redundant
[DIAGNOSIS]
Edit 1718 checked byte pointer of CRLNM JSYS argument for pointing
to 7 bit bytes. Edit 1754 checks bytes for being ASCII. Therefore,
edit 1718 is unnecessary.
[CURE]
remove edit 1718.
********************************************************************************
EDIT 1756 FOR MONITO
[SYMPTOM]
Bug in edit 1749.
[DIAGNOSIS]
Directory not unlocked on CRDI19 error.
[CURE]
Do it.
********************************************************************************
EDIT 1757 FOR MONITO
[SYMPTOM]
Edit 1744 Should not have padded records with circumflexes
if the record is less than the tape record size. Circumflexes
should only pad an entire record in a tape block to so that a
full block is written, not pad words in a record so that a full
record is written.
[DIAGNOSIS]
Edit is wrong.
[CURE]
Remove it.
********************************************************************************
EDIT 1758 FOR MONITO
[SYMPTOM]
Garbage BUGHLT name types out on system crash. Examination of
the dump shows that APRNX1 was the BUGHLT, but garbage name was typed
and used for SYSERR entry.
[DIAGNOSIS]
Code in APRSRV does an XCT of the APRNX1 BUGHLT XCT. BUGHLT
handler does not want nested XCT's.
[CURE]
Do not do the nested XCT.
********************************************************************************
EDIT 1759 FOR MONITO
[SYMPTOM]
TEXTI JSYS sometimes returns a garbage error code.
[DIAGNOSIS]
Typographical error in the code just past RDTOPM uses an address
label name instead of the correct error code mnemonic.
[CURE]
Fix the typo by using the correct error mnemonic.
********************************************************************************
EDIT 1761 FOR MONITO
[SYMPTOM]
Values returned for .MOIRD, .MOIWT, .MOIRF, .MOIWF entries in of
the .MOINF function of the MTOPR JSYS are wrong.
[DIAGNOSIS]
Frame count and operation count entries are reversed.
[CURE]
Change the MTINFT XCT table to do things correctly.
********************************************************************************
EDIT 1762 FOR MONITO
[SYMPTOM]
On Release 3A ILLUUO BUGCHKs; on Release 4 ILLUUO BUGHLTs.
[DIAGNOSIS]
Performing a FLOUT or DFOUT JSYS with arguments such that a
FLOTX3 error should be generated for the second field may cause the
problem. This is due to a routine transferring to another which one
which does stack adjustment and believes it is at another stack level,
eventually causing a return to a garbage address.
[CURE]
Adjust the stack to the proper level before entering the TOOSML
routine from ROUND.
********************************************************************************
EDIT 1763 FOR MONITO
[SYMPTOM]
NIN JSYS will not terminate on a CR if it is not followed by
a LF. This causes the JSYS to incorrectly terminate on the
byte following a CR.
[DIAGNOSIS]
The NIN JSYS calls the internal routine BIN1 which simply
ignores all carriage returns.
[CURE]
Rewrite the BIN1 routine to call a new routine which will
always return the next character, regardless of what it is.
The new BIN1 routine can then decide if the character is a
CR and if so, look for the next byte. If the byte is a LF,
everything is okay and return the LF. If the byte is
something other than a LF, put the LF back in the buffer and
return the CR to the calling routine.
********************************************************************************
EDIT 1764 FOR MONITO
[SYMPTOM]
EBCDIC colon (:) gets translated into a ^Z.
[DIAGNOSIS]
The EBCDIC value for colon was incorrectly entered into the dispatch
table. Hence the wrong ASCII character was being retrieved.
[CURE]
Fix the table so that a colon has the proper EDCBIC value.
********************************************************************************
EDIT 1765 FOR MONITO
[SYMPTOM]
CTRL X is not echoed on input as part of file name for gtjfn.
[DIAGNOSIS]
The CCOC word is not set properly.
[CURE]
********************************************************************************
EDIT 1766 FOR MONITO
[SYMPTOM]
System crashes such as ILMNRF.
[DIAGNOSIS]
RMAP JSYS forgets to lock fork structure of job, so a PSB might
disappear out from under any of its references, causing the crash.
[CURE]
Make sure the fork lock is locked.
********************************************************************************
EDIT 1767 FOR MONITO
[SYMPTOM]
File access returns error ARGX26 - file is offline. But file is
not offline.
[DIAGNOSIS]
Error should have been ARGX27 - offline expiration date expired
instead of ARGX27.
[CURE]
Correct the error code returned to be ARGX27.
********************************************************************************
EDIT 1768 FOR MONITO
[SYMPTOM]
The "file shows data errors" bit, FB%BAT is propagated to new
file generations.
[DIAGNOSIS]
Bit is not turned off for a new generation.
[CURE]
Zero FB%BAT for the new FDB in VRLK6A.
********************************************************************************
EDIT 1769 FOR MONITO
[SYMPTOM]
Connected directory sometimes fails to get expunged on logout, or
login directory expunged twice.
[DIAGNOSIS]
In SJLGO4, a compare is made against the wrong AC, so the wrong
decision might be made.
[CURE]
Correct the compare.
********************************************************************************
EDIT 1770 FOR MONITO
[SYMPTOM]
Various BUGs and system crashes.
[DIAGNOSIS]
Setup for transfers between sections were not done correctly.
[CURE]
Correct these errors
********************************************************************************
EDIT 1771 FOR MONITO
[SYMPTOM]
None directly observed, but code is wrong; an OFN greater than
NOFN might be assigned, trashing data past the end of OFN-indexed
tables.
[DIAGNOSIS]
AOBJN counter is setup incorrectly in ASOF6. -NOFN-1 should be
-<NOFN-1> instead.
[CURE]
Correct the count.
********************************************************************************
EDIT 1772 FOR MONITO
[SYMPTOM]
Confusion over several edits; FILCOMs do not localize edits,
etc.
[DIAGNOSIS]
Edits 1732, 1736, 1737, 1745, 1747, 1748, 1749, 1753, 1756, 1764,
1765 are not in standard edit form.
[CURE]
Put edits 1732, 1736, 1737, 1745, 1747, 1748, 1749, 1753, 1756,
1764, 1765 into standard edit form. No code changes needed.
********************************************************************************
EDIT 1773 FOR MONITO
No test has been generated for this problem, partly because the words
are currently documented as reserved and unimplemented.
********************************************************************************
EDIT 1774 FOR MONITO
[SYMPTOM]
Possible BUGHLTs due to scanning off the end of a page of the
account validation database searching for an account.
[DIAGNOSIS]
MOVE of ACTPG should be a MOVEI. Use of the contents of ACTPG
could result in addressing errors.
[CURE]
Change the MOVE to a MOVEI in two places.
********************************************************************************
EDIT 1775 FOR MONITO
[SYMPTOM]
Monitor is too big and too slow.
[DIAGNOSIS]
Unneeded instruction MOVE T1,FORKX at JOBCF1+2.
[CURE]
Remove offending instruction.
********************************************************************************
EDIT 1776 FOR MONITO
[SYMPTOM]
Files with OF%DUD set might get unintended bad pages PMAPed to a
file on a Control-C, RESET.
[DIAGNOSIS]
KSELF does a vanilla PMAP to unmap a process' pages.
[CURE]
Add the PM%ABT bit to the PMAP in the KSELF code.
********************************************************************************
EDIT 1777 FOR MONITO
[SYMPTOM]
If a directory has a very long filespec, some things may fail
that shouldn't, such as a DELETE command. They fail with:
?GTJFN source failure on ... - Byte count too small
[DIAGNOSIS]
The GJFX51 error code results from the RDTXT parameter DEFINP
being too small for GTJFN.
[CURE]
Make DEFINP equal to MAXINP.
********************************************************************************
EDIT 1778 FOR MONITO
[SYMPTOM]
Trying to use a network node name more than 6 characters gives
error DCNX1 - "Invalid network filename". A better choice is COMX19 -
"Too many characters in node name".
[DIAGNOSIS]
As above.
[CURE]
Change the error code.
********************************************************************************
EDIT 1779 FOR MONITO
[SYMPTOM]
System crashes such as ILMNRF on Model B processors, wild
addressing causing ILMNRF or possibly memory modification on Model A
processors.
[DIAGNOSIS]
Garbage passed to RPACS JSYS may be used as a JFN without any
validity checking, causing wild references.
[CURE]
Range check JFN value to make sure it is reasonable before
attempting first reference to JFN blocks.
********************************************************************************
EDIT 1780 FOR MONITO
[SYMPTOM]
J0NRUN BUGHLTs.
[DIAGNOSIS]
Fork zero blocks trying vainly to assign a node.
[CURE]
Do not block if fork zero.
********************************************************************************
EDIT 1781 FOR MONITO
[SYMPTOM]
Millisecond representations of high precision scheduler variables
become invalid at the same time the high precision words overflow,
around 95 hours.
[DIAGNOSIS]
Millisecond values are calculated directly from single word high
precision values without regard to overflow.
[CURE]
Create double-word variables to keep the high precision values,
and calculate the millisecond values from the double-word high
precision values. This will extend the validity of the millisecond
values beyond the current 95 hours. The affected variables are
SKDIDL, SKDOVH, and SKDSWP.
********************************************************************************
EDIT 1782 FOR MONITO
[SYMPTOM]
Accounting is being done on non-regulated structures.
[DIAGNOSIS]
Edit 67 to MOUNTR corrected part of the problem by testing the correct
bit. The monitor did not set up the status bits correctly before
sending a message to MOUNTR.
[CURE]
At SNDUSG+24 move status bits from left half of T4 into the right half
of MSTIPC+2. Edit 67 in answer to SPR 20-14215 is also required.
********************************************************************************
EDIT 1783 FOR MONITO
[SYMPTOM]
SCTTY resumes frozen forks.
[DIAGNOSIS]
Use of FFORK1/RFORK1 cause resumption of fork regardless of
former state.
[CURE]
Use indirect freeze routines FFORK3/RFORK3 instead to preserve
any former explicit frozen state.
********************************************************************************
EDIT 1784 FOR MONITO
[SYMPTOM]
Using the original patch for SPR 20-13542 will cause DELBDD BUFINF's
when deleting a directory on a non-public structure.
[DIAGNOSIS]
In the CRDONE routine, the call to SETIDX is inadvertantly using the
structure-number,,superior-directory-number for the superior directory.
[CURE]
Use only the superior-directory-number so SETIDX will recognise the
directory, and unlock the "invalid" bit in the index table.
********************************************************************************
EDIT 1785 FOR MONITO
[SYMPTOM]
Attempts to use labeled tape return garbage error number.
[DIAGNOSIS]
Code not written.
[CURE]
Adjust labeled tape filename size checking code to return a new
error code to indicate that tape label filename specification exceeds
17 characters; and add the error code and description to the MONSYM
file.
********************************************************************************
EDIT 1786 FOR MONITO
[SYMPTOM]
Attempts to use labeled tape return garbage error number.
[DIAGNOSIS]
Code not written.
[CURE]
Adjust labeled tape filename size checking code to return a new
error code to indicate that tape label filename specification exceeds
17 characters; and add the error code and description to the MONSYM
file.
********************************************************************************
EDIT 1787 FOR MONITO
[SYMPTOM]
The USAGE JSYS .USRAS function does not work.
[DIAGNOSIS]
Code makes test in wrong direction.
[CURE]
Fix test on count in UFNRAS.
********************************************************************************
EDIT 1788 FOR MONITO
[SYMPTOM]
Accounting session connect times are garbaged. The accounting
shift change feature is in use.
[DIAGNOSIS]
Checkpoint code uses the wrong value for calculation; an index
register is missing.
[CURE]
Correct the code to include the index register in CPGCON.
********************************************************************************
EDIT 1789 FOR MONITO
[SYMPTOM]
Error Message IOX22 'Invalid HDR1 Sequence Number' when setting data
mode or attempting to read from some EBCDIC labeled tapes.
[DIAGNOSIS]
When TOPS-20 checks the Form Control Byte in the HDR2 Label in the
routine GETFC0, it enforces that the Form Control Byte (CP 37) conform
to DEC standard (A, M, X, or space). ANSI standard X3.27-1969 clearly
states that CP 16-50 of the HDR2 Label are system defined and should
be ignored in interchange mode. TOPS-20 does not ignore this byte and
as a result may disagree with the contents of this character position
and return the IOX22 error message.
[CURE]
At the check in the GETFC0 routine for an EBCDIC labled tape, return
the code for an undefined form control rather than checking for
consistency of this byte with DEC standard.
********************************************************************************
EDIT 1790 FOR MONITO
[SYMPTOM]
Monitor is too big and too slow.
[DIAGNOSIS]
There is code in IO unused since before Release 2, both resident
and swappable.
[CURE]
Remove the unused code at DUMPC: and the symbol references
DMPDON and DUMPC, and remove the DMPRLF BUGCHK.
********************************************************************************
EDIT 1791 FOR MONITO
[SYMPTOM]
SCTLW and NSCDRQ are defined in both STG and SCHED. NSCDRQ is
multiply defined, and smaller in SCHED than in STG, wasting resident
memory, and increasing the chance of queue overflow.
[DIAGNOSIS]
As above.
[CURE]
Remove the definitions from SCHED.
********************************************************************************
EDIT 1792 FOR MONITO
[SYMPTOM]
ILPPT3 BUGHLTs on Model B machines.
[DIAGNOSIS]
GTJFN may under some circumstances try to use resources implied
by GJ%XTN while doing a short-form GTJFN. GJ%XTN is supposed to be
ignored on short-form GTJFNs.
[CURE]
Make sure that internal flag JFNRD is cleared in two places if a
short form GTJFN is being done.
********************************************************************************
EDIT 1793 FOR MONITO
[SYMPTON]
The COMPILE command will not detect a logical name loop, causing
it to loop.
[DIAGNOSIS]
Both routine DEVLUK and SETDEV, called by GTJFN, check if it is a
parse-only JFN before checking for the logical name loop.
[CURE]
The parse-only bit should only be checked in one place, after
checking for logical name loop.
********************************************************************************
EDIT 1794 FOR MONITO
[SYMPTOM]
Keywords will not be parsed if an alternate function for the
COMND JSYS is a .CMTXT function.
[DIAGNOSIS]
COMND will only parse the function whose break set will
allow the most number of characters. This works for most
fields but not when a function is .CMTXT. The .CMTXT
function will always parse more characters than any other
field so if it is used anywhere in a FDB chain, no other
function will get parsed.
[CURE]
Create a new bit for the command functions special argument
block which says that a first pass for reading a field
should not be performed for this field. The functions which
should have this new characteristic should be .CMNOI,
.CMCFM, .CMCMA, .CMINI, .CMTXT, .CMTAD, .CMQST, .CMUQS, and
.CMTOK.
Along with this added structure, check whether a first pass
should be performed for the specific function at XCOM7+2.
********************************************************************************
EDIT 1796 FOR MONITO
[SYMPTOM]
FLKTIM or other BUGCHK, job "hung" not interruptible while
waiting for non-controlling terminal to close.
[DIAGNOSIS]
TTYCLZ code does a DOBE which may block while NOINT with the
device table lock, DEVLCK, locked.
[CURE]
Replace the DOBE with the proper code to achieve the same results
via the monitor's blocking return mechanism.
********************************************************************************
EDIT 1797 FOR MONITO
[SYMPTOM]
Jobs hung waiting for structure lock.
[DIAGNOSIS]
If access-control job refuses a structure mount request, the
normal cleanup, including unlocking the structure lock is not done.
[CURE]
Have the refusal code call a cleanup routine before causing the
instruction trap.
********************************************************************************
EDIT 1798 FOR MONITO
[SYMPTOM]
Edit 1798 is a clerical error only, and as such has no patch associated
with it, and no symptom.
********************************************************************************
EDIT 1799 FOR MONITO
[SYMPTOM]
ILMNRF BUGHLT'S caused by doing a SAVE JSYS with a non-existent file
page mapped in user memory. A missing page in the PRIMARY-MASTER-QUEUE-FILE.
QUASAR will commonly cause this bug.
[DIAGNOSIS]
SAVE JSYS does not check for the existence of every page before referencing
it.
[CURE]
At SAVE3A-1, do a SKIP FPG0A, and ERJMP to SAVE3B to avoid the problem.
********************************************************************************
EDIT 1802 FOR MONITO
[SYMPTOM]
When switching volumes on labelled tape the record size is reset
to job defaults.
[DIAGNOSIS]
The volume switch code does not check record size after a volume
switch.
[CURE]
Check record size during volume switch.
WARNING: This patch may cause problems since tapes written by
the unpatched monitor will have different record sizes on all but the
first volume if a non-default record size was specified for the first
volume. If this patch is not installed the problem can be
circumvented by using the SETJB JSYS or the EXEC command SET TAPE
RECORD-LENGTH (TO) to set the job default record size.
********************************************************************************
EDIT 1803 FOR MONITO
[SYMPTON]
The COMPILE command will not detect a logical name loop, causing
it to loop.
[DIAGNOSIS]
When GTJFN can not parse a name, it will step the logical name,
if possible, and restart the parse.
[CURE]
If a logical name has been stepped, check for Parse-only before
returning to GTJFST to restart parse.
********************************************************************************
EDIT 1804 FOR MONITO
[SYMPTOM]
'Unknown data in file. Continuing...' messages from CHKPNT.
[DIAGNOSIS]
When the MONITOR copies CHECKPOINT.BIN to SYSTEM-DATA.BIN
during system start up, it would use the right half of word
one in a checkpoint record as the length of the record and
would deposit a trailer label in this word. When a new
CHECKPOINT.BIN is created, word one of each record is the
maximum number of jobs on the system. This would change
when the job became active, but until then, whenever the
system is reloaded, whichever word is an offset NJOBS away
from the start of the checkpoint record will get trashed.
If NJOBS is an even multiple of 100 then the flag word which
specifies whether a job is active or not will get trashed.
This will fool the MONITOR into believing that the entry is
active and will then write this record into SYSTEM-DATA.BIN.
This is an erroneous record and will thus cause the CHKPNT
error message.
[CURE]
Before depositing the trailer label in a checkpoint record,
check to see if the job is active. If the job is not
active, do not deposit the trailer label. Also, check the
size of the record before depositing the trailer label and
generate a CKPLEN BUGCHK if the length of the record is out
of range. This is to cure ILMREF BUGHLTs which can occur if
the checkpoint file has been trashed.
********************************************************************************
EDIT 1805 FOR MONITO
[SYMPTON]
If an invisible file is superceded by a file with the same name
and extension but a higher generation, and the generation retention
count is one (or has been exhausted) the invisible file will be lost
to the user. It can be neither SET VISIBLE nor UNDELETED.
[DIAGNOSIS]
When CLOSFing the new file, the file's directory will be scanned
for file's of the same name and extension that should be marked as
deleted. Currently, only archived, non-existent, temporary, or
already deleted files will be skipped.
[CURE]
Make the CLOSF code check for invisible files and ignore them
also.
********************************************************************************
EDIT 1806 FOR MONITO
[SYMPTON]
Edits 1803 and 1805 in incorrect form.
[DIAGNOSIS]
Maintainer error.
[CURE]
Put edits in proper format.
********************************************************************************
EDIT 1807 FOR MONITO
[SYMPTON]
If status reporting has been turned on (via SYSERR or using the
SMON Jsys) any BUGxxx, CPU error or channel error will hang the system
with no apparent symptoms or BUG messages.
[DIAGNOSIS]
Status reporting causes routine GENBLK to be called under all of
the above circumstances. This routine then does both a SAVEP and a
SAVET, which clobber 12 locations on the stack. The stack that is
handed to these routines is only 12 words long so PDL overflow occurs.
In the case of the BUGHLT calling this we have a bughlt within a
bughlt so the system just dies.
[CURE]
Get rid of the SAVET since the Tx accumulators are clobbered
shortly after returning from GENBLK.
********************************************************************************
END OF TOPS-20-KL-ARPA-V4