Trailing-Edge - PDP-10 Archives - bb-bt99g-bb - t1s702.d11
There is 1 other file named t1s702.d11 in the archive. Click here to see a list.
                 EDIT DESCRIPTIONS FOR TOPS-10-KS-V702                          
                             EDIT 11071  FOR 702
     The RENAME UUO allows the user  to  change  .RBVER,  .RBSPL,  and
.RBNCA  of his UFD, but only if he changes the protection as well.  He
can always do a second RENAME to change the protection back.  But  why
should he be required to do so?
     Ordinarily, the only operation an unprived job can do to a UFD is
to  read it as a file.  There is, however, an exception:  the owner is
allowed to change the protection.  The RENAME UUO then assumes that if
it's  ok  to change the protection, it must be ok to change any of the
other attributes as well.  It is not legal, however, to change any  of
the attributes unless the protection is changed as well.
     Lie to CHKPRV,  tell  him  we're  changing  the  protection  when
actually  we're changing the attributes.  Only lie if the extension is
                             EDIT 11158  FOR 702
     A user types SET BREAK <address> where address is in the ACs.  No
address break occurs.
     The monitor allows the SET BREAK command to set address breaks in
the ACs although the hardware ignores these addresses.
     Do not allow addresses in the range of 1 to 17.  Note that  since
an  address of 0 turns off address break but leave the conditions set,
0 must excluded from the range check.
                             EDIT 11160  FOR 702
     PULSAR hangs in EW for itself.
     As part of the effort to enhance PULSAR's labeled tape  handling,
an  edit  was  made  to PULSAR which required a change in the monitor.
The monitor patch was generated, but  it  failed  to  be  included  in
Autopatch tape #8.  Without the monitor patch, anytime PULSAR attempts
to do a swap label units TAPOP specifying the same drive for both  old
and  new  units,  the monitor places PULSAR in event wait for the tape
     If the old and new units are the same, make the TAPOP.   function
a no-op.
                             EDIT 11167  FOR 702
     SET WATCH FILES returns junk error codes  on  partial  allocation
     The WCHFIL routine expects M to be pointing at the  user  virtual
address of the error code in the ENTER block.
     Set M accordingly on this type of error.
                             EDIT 11375  FOR 702
     PTYs go into TO wait state at end of page (sometimes.)
     MCO 11161 didn't take PTYs into account when it checked to see if
the page counter should be cleared.
     If no characters have  to  be  output,  clear  the  line  counter
always.   If  there  are  characters to be output, check to see if the
terminal is a PTY and if it is, always clear the page counter.
                             EDIT 11396  FOR 702
     In the sequence OPEN-LOOKUP-USETI,  the  USETI  takes  the  block
number  as  being  relative  to the file.  In the sequence OPEN-USETI,
however, the block number is taken as being relative to the  structure
(super   I/O).    The   question   is,   what   should   the  sequence
OPEN-ENTER-USETI do?  (presently it does super I/O).
     This is not the expected sequence.   The  user  probably  made  a
mistake, and it would be dangerous to let him continue.
     Make the sequence OPEN-ENTER-USETI be illegal.  It will return an
IO.IMP error.  Likewise, OPEN-LOOKUP-USETO will be illegal.
                             EDIT 11724  FOR 702
     Stopcode UIL on (some) tape interrupts if FTAUTC is off and FTKLP
is on.
     Phased code which in this particular instance should not generate
a phased address.
     Relocate if IFAUTC=0.
                             EDIT 11727  FOR 702
     Can't tell if a 'line' of input is waiting on a PIM mode
     terminal with break characters set.
     No code.
     Keep a count of break chracters as they are  received  on  a  per
     basis.  Note that the worst thing about this  is  that  everytime
     break set is changed, a new break count must be calculated.  This
     can cause some overhead.
                             EDIT 11733  FOR 702
     ?No start address when running a program  with  a  sharable  high
segment a second time if FTKLP is turned off.
     SVEUB gets called and in previous monitors, when a POPJ  occured,
SVEUB  would have done a DATAO PAG which would have cleared the paging
memory.  However, in 7.02 to try to save the refills, SVEUB only  does
that DATAO if the UBR is being changed.  Thus, even though the map has
been redone, no one told the paging memory that the mapping  had  been
                             EDIT 11746  FOR 702
     Monitor gets confused if PAGE.  UUO tries to munge its arg list.
     Shouldn't let user do this
     Return illegal arg list error if he tries.
                             EDIT 11748  FOR 702
     ANF network free core is  not  always  returned  to  the  general
monitor  free  core  pool,  resulting  in  a potential loss of overall
system performance, inability to create new jobs, etc.  due to a  lack
of monitor free core.
     Off-by-one indexing in PCBSEC, so that  the  maximum-message-size
buffers are never scanned to be deallocated.
     Allow for maximum-message-sized buffers.
                             EDIT 11761  FOR 702
     AOBJN pointer to TABSTR is one too large, allowing you  to  mount
37 file structures if .SLMAX is set to 36.
                             EDIT 11764  FOR 702
     A file may be marked for deletion while FILDAE is checking access
to that file.  We use the old (wrong) A.T.
     No code.
     Add code.  Check if the A.T.  has become unacceptable during  the
time we were off letting FILDAE do his thing.
                             EDIT 11765  FOR 702
     Multiply  used  clusters  and/or   RIB   errors   on   multi-unit
     If the UFD gets extended, and the file  is  being  created  on  a
different  unit  than  the UFD, there is no guarantee the SATs will be
written to reflect the extra cluster grabbed for the UFD.  As soon  as
file  activity occurs on the UFD unit the SATs will be written, but if
a crash occurs before then too bad.
     Call WTUSAT after extending the UFD.
                             EDIT 11779  FOR 702
     1) Programs which depend on the GETTABs  which  tell  them  where
they  came  from  to  do GETSEGs and RUN UUOs get lookup error 23.  2)
FILDAE denies access to programs which should be allowed access.
     PATH to the file which a program came from  is  junk.   The  data
used to be in JOBUAL but now gets clobbered by CORE UUOs.
     Do a PATH.  UUO after everything else needed to  setup  the  CORE
image has been done.
                             EDIT 11788  FOR 702
     Drive clear after error fails on KS.
     Junk in T4.
     Load unit number in T4 before calling DVCLR.
                             EDIT 11792  FOR 702
     Stopcode IME in UPDA
     Closing a file with excess allocated blocks at the end will  call
UPDGIV  which  will  call  GIVBLK which calls UPDA in section 1.  UPDA
does an LDB T1,PJOBN which gets an illegal section  number  page  fail
depending on the bits lit in LH(F).
     Reverse the order of SE1ENT / PUSHJ P,UPDA so UPDA gets called in
section zero.
                             EDIT 11798  FOR 702
     Problems with the SET MEMORY ONLINE command.   CPU  may  HALT  when
trying to set non-existant memory online.
     Pages are added to the free list before they are checked for  being
non-existant.   Also,  KLSER/KSSER  are  using  the  wrong variable when
checking for a monitor page being non-existant.
     Don't add pages to the free list until they have been  checked  for
being non-existant.  Use the right variable.
                             EDIT 11811  FOR 702
     Jobs in certain EW  states  without  Control-C  trapping  can  be
stopped  by a Control-C.  If they add Control-C trapping the job never
gets the trap.
     Two checks in CLOCK1 if a job can be stopped by  Control-C;   one
doesn't check for EW.
     Check for EW in both cases.
                             EDIT 11818  FOR 702
     Undeserved "?Illegal  address  in  UUO"  upon  executing  a  SAVE
command for a program with a high segment.
     If the high segment is expanding, and  there  is  not  sufficient
core  in  core  for  the  expansion,  the code which sets up to do the
expansion on the next swap in loads R with  JBTADR  for  the  job  and
overwrites  JBTADR  for the high seg with it.  Actually, the left half
of JBTADR for the high seg is set correctly, but the right  half  ends
up pointing to .JDAT instead of .VJDT.
     Load R with JBTADR for the high segment in such cases.
                             EDIT 11819  FOR 702
     Problems with multipoint RDX output:
     1.  User program gets undeserved IO.IMP error return from OUT of
     large (but not erroneously so) buffers to multipoint RDX
     2.  Data requests can be lost;
     3.  Output data is "hung" in the -10 and never gets sent;
     4.  Blocking output doesn't block (i.e., can take a non-blocking
     return to the user program from the OUT monitor call);
     5.  Possible WEM  stopcode;   (Note:   this  MCO  supersedes  MCO
     If the buffer is too large to fit the 'default' 32-word PCB  size
allocated  by  the monitor, the user's buffer is split across multiple
PCBs for transmission to the remote.  Unfortunately  RDXSER  needs  to
put  the  multipoint 'DROP' number into each message, so it treats the
first part of each PCB's worth of data as the five-digit drop  number,
usually  finding  'junk'  on  all  but the first segment of the buffer
(where the drop number is supposed to  be),  so  lighting  IO.IMP  and
aborting the OUT monitor call.  Further, if RDXSER cannot get a PCB to
send the buffer, it doesn't  correctly  "back  out"  of  the  transmit
attempt.   The data request count has already been decremented, and is
not re-incremented.  The drop number has already been parsed,  and  is
lost.   Also,  the  "error" (i.e., "non-blocking") return to UUOCON is
always  taken,  whether  or  not  the  RDM  device  is  OPENed  in   a
non-blocking  I/O  mode.   Finally,  the  "drop"  number  field is not
counted in the NCL "COUNT" field.
     Dynamically calculate the PCB buffer size based on  the  size  of
the  output request from the user.  If the user's buffer contains more
data than  either  the  RDX  device's  maximum  message  size  (RDEMML
parameter  in  the  DN8x)  or the network maximum message size (MSGMAX
parameter in the 7.02 monitor) then abort the  output  and  return  an
IO.BKT error to the user.  Note that this means that the segmenting of
user data buffers over the ANF network is NOT supported for multipoint
RDX  devices.   When RDXSER is unable to get a PCB, back up the DEVAXO
byte pointer and counter to the begining of the drop  number  so  that
the  next  time  through  ROLOOP  (the RDX output service loop) it can
again reparse the drop number.  Take the non-blocking return to UUOCON
iff  the  RDM  device  is OPENed in a non-blocking I/O mode, otherwise
call NETSLP (i.e., block) waiting for a free PCB  to  do  the  output.
(Note  that  in  this  hopefully-rare  case  of non-blocking I/O being
unable to do the output because of the lack of a PCB, the user program
cannot  depend  on  getting  an  (e.g.,)  "output-done" PSI interrupt.
Instead the user program must have some sort  of  "hung  timer"  which
will  cause the OUT monitor call to be re-executed at some time in the
future if all the output buffers have not been sent.  This  is  not  a
new condition, merely a non-obvious one of which the programmer should
be cognizant.) The data request count is automatically  kept  accurate
in  7.02  by  not  decrementing  the count until the PCB has been sent
(This involved splitting 7.01's NTDCDQ routine  into  two  routines  -
NTDCDQ  to  check  if  any  data requests are available, and NTDDDQ to
actually decrement the data request  count  after  the  PCB  has  been
queued  for  output).   Finally,  include  the  drop number in the NCL
message "COUNT" field when building the NCL data message.
                             EDIT 11825  FOR 702
     Random stopcodes on systems with TU7x tapes on  a  DX10  or  TU7x
tapes on a TM78.  Undeserved tape read errors.  Home block consistancy
failures.  PAGTAB corrupted.  Lots of symptoms, but it looks like  the
excrement has hit the ventilator.
     TX1KON and T78KON read extended sense information into  the  UDB.
Due to the way AUTCON core allocation works, consecutive virtual pages
are not consecutive physical pages.  If the sense area crosses a  page
boundary  only  the  first few words get written to the intended sense
area;  the rest are written to the subsequent physical  page.   Almost
anything could be in that subsequent page.
     Teach AUTCON to ensure sense areas for  certain  tapes  are  kept
physically  contiguous.  Do the same for TKBCCL in the magtape KDB, as
that physical address gets passed to the hardware at times also.
                             EDIT 11847  FOR 702
     "Run from" GETTAB tables get zeroed on a SAVE command.
     Yes.  Consensus is that we should really fill them in to  reflect
the "new" origin of the core image.
     Fill in the tables at SAVFIN;  use essentially the same  code  as
GJOB (do PATH.  UUO, etc.).
                             EDIT 11859  FOR 702
     Stopcode KAF under various circumstances;  user  pointing  .JBPFH
to a random location is one of the most likely.
     If .JBPFH points to a page fault handler area where some  of  the
purported  pages  do  not exist, then a typographical error causes the
code to loop indefinitely instead of just checking each page which  is
supposed to exist.
     Fix typo.
                             EDIT 11860  FOR 702
     The sequence LOOKUP, RENAME, CLOSE, ENTER, OUT gives address  check
     RENA37 calls WCHFIL to type the file watch info.   WCHFIL  destroys
the contents of S, which RENA37 stores into DEVIOS in the file's DDB.
     Make WCHFIL preserve S in addition to F and U.
                             EDIT 11877  FOR 702
     Programs doing output to an  ASSIGNed  RDX  device  can  hang  in
network event wait.
     The IOSREL "device-has-been-RELEASed" flag in  the  RDX  device's
DEVIOS  word  is  not  being  cleared.  This will cause the RDX device
service routine to not be NETWAKed if the job ever blocks  for  output
(waiting  for  data  requests).   Note  that  this  can only happen to
ASSIGNed RDX devices - if the RDX device was  not  ASSIGNed  then  the
entire  DDB was destroyed when the RELEAS was performed and the device
     Clear the IOSREL flag on the first call  to  the  output  service
routine (this is the convention for network devices).
                             EDIT 11883  FOR 702
     On some systems, a magtape cannot be referenced using MTxu:.
     If a system has two or more tape controllers and at least two  of
any one type of controller, the number of magtape entries in GENTAB is
insufficient for all DDBs generated by AUTCON.
     Assume there will be at least two of every  type  controller  per
CPU  and  build  that  many  GENTAB entries.  Since GENTAB is built at
assembly time and the actual number  of  tape  controllers  cannot  be
determined  until  AUTCON  runs, this solution may not be sufficent to
cover a worst case situation  (i.e.   three  DX10s  in  a  single  CPU
system).   However  the  likelyhood  of  this sort of configuration is
quite  remote.   In  a   normal   configuration,   there   is   little
justification  for  dynamically  building GENTAB.  We will address the
worst case situation when it arises.
                             EDIT 11891  FOR 702
     IPCFQ. UUO  ignores  IP.CFR   which   indicates   an   indirected
receiver's PID is being used.
     There is no code to check for IP.CFR being set by the user.
     If IP.CFR is set, fetch  the  receiver's  PID  from  the  address
pointed to by word .IPCFR.
                             EDIT 11892  FOR 702
     Stopcode IME during tape error recovery.
     An off-by-one bug exists in a range check prior to indexing  into
a dispatch table.
     Correct the check.
                             EDIT 11893  FOR 702
     Stopcode IME paging a non-sharable high segment.
     AC J normally contains a job or segment number  and  is  used  to
index  into  job and segment tables.  The routine HSVAD can leave junk
in the left half of J causing IMEs when  tables  are  referenced  from
section one.
     Clear out the left half of J in routine TPAHS.
                             EDIT 11894  FOR 702
     Stopcode BAC, IMEs, or EUEs.  Messed up PDL also possible.
     A job is sending  an  IPCF  packet  to  EXEC.   Before  it  could
increment  .EPIPC for EXEC, it gets interrupted and someone else sends
something to EXEC.   Both  packets  get  processed  thus  decrementing
.EPIPC twice, but we didn't count it up for the original job yet.  The
second decrement could cause the count to go to -1,  but  since  we're
dealing  with  a  9-bit  field,  the  next field (count of outstanding
sends) gets wiped.  Eventually we pick up a packet which doesn't exist
and  either cause a BAC trying to give back core, or get an IME trying
to reference it, or if the address  is  zero,  muck  with  the  packet
header thereby smashing the ACs.
     AOS .EPIPC when the target job is interlocked.
                             EDIT 11913  FOR 702
     Programs (in particular FAL) can get stuck in ANF EW state.
     MCO 11448 opened a nasty little crack - a CLOSE on a TSK  channel
in non-blocking mode sans PSI whose last UUO was an IN will hang in EW
Note:   This affects only the autopatch tape 9/10 monitor, this is not
        in field-image 7.02.
     Make really truly and positively sure that the job is NETWAKed.
                             EDIT 11927  FOR 702
     BYTE mode tape IO fails on a 2020  system  when  a  TU77/TM03  is
     MAPIO asked for a frame count argument,  but  didn't  believe  it
when TAPUUO supplied one.
     Teach MAPIO to believe the  frame  count  when  supplied.   Teach
CD2SER  and  LP2SER  not  to  accidentally  supply  a frame count when
calling MAPIO.
               ****  CAUTION  ****  If  you  have   any
               non-standard  device  drivers,  be  sure
               that they supply either a correct  frame
               count  or  zero  in  the  LH  of P4 when
               calling MAPIO
                             EDIT 11949  FOR 702
     Stopcode EUE most common;  other scenarios possible.  The crashes
should show that a job was run which was in C state.  Various jobs may
also appear to be in background batch  when  they  shouldn't  be,  and
various  background  batch  jobs  may  not  be in the background batch
queues.  This  problem  occurs  only  with  the  class  schedular  and
background  batch  enabled.   A  non-zero  amount  of  lost  time will
increase the probability of failure.
     There are actually two problems.  One is that the class schedular
assumes  that  only  one  job can be swapped in at a time.  This is no
longer true in 7.02.  The second problem is that a lost time scan  can
set  BBFLAG on a non-policy CPU after the policy CPU has cleared it in
preparation for its swap-in scan  of  the  queues.   This  was  not  a
problem  in 7.01 because the schedular interlock was held over each of
the operations so that they could not mutually occur.
     To cure the first problem, compare job numbers  instead  of  just
doing  a  SKIPN on BBFIT.  To cure the second problem, clear BBFLAG in
preparation for a swap-in scan under the schedular interlock.
                             EDIT 11950  FOR 702
     Stopcode PIP seen;  stopcode IME  probably  most  common;   other
scenarios possible.
     In 7.02, an additional entry point, MKADD, was added  to  routine
SVEUB  whose  purpose is to make a given job the currently addressable
job to the monitor.  The purpose of this additional entry point was to
improve  performance  by  eliminating  unnecessary page table refills.
This is accomplished by not clearing the paging memory (which is  done
automatically   anytime   the  UBR  is  changed);   this  in  turn  is
accomplished by not changing the UBR to itself.  The check for whether
the  UBR  would  be  changed to itself is by a comparison of .USJOB (a
variable in the UPT)  with  the  desired  job  number;   if  they  are
identical  then  the  UBR  would  be being changed to itself and MKADD
merely exits rather than falling into SVEUB.  There  is  unfortunately
one rare circumstance where this test is not applicable, to whit:
     1.  Consider two jobs, A and B;  job B is swapped out and  job  A
         is in core.  The physical page used as job A's UPT is page X.
     2.  Job A is swapped out and job B is swapped in;  it so  happens
         that the page allocated for job B's UPT is also page X (given
         up by job A when it swapped out).
     3.  Job B does something  which  will  require  an  interrupt  to
         process  something in its context.  The most usual thing here
         is disk I/O.
     4.  The swapper in the meantime has decided that job A is  to  be
         swapped  into  core.   Pages are allocated for job A, and its
         UPT is destined to be written to page Y.  JBTUPM+A now points
         to page Y.  The core allocator very carefully points the slot
         in the UPT which is set to point to itself to  page  Y.   The
         swapper  then  sets  up  to swap in job A's UPT and section 0
     5.  The swapping I/O to  read  in  job  A's  UPT  now  completes.
         However, the last page the UPT for job A occupied was page X,
         so now the UPT slot which is  supposed  to  point  to  itself
         (page  Y)  now points to page X.  When the swapper sets up to
         swap in the rest of the job, it will point  page  Y  back  at
         itself,  but there exists a finite window of time between the
         time the I/O has  physically  completed  and  the  time  this
         re-pointing is done.
     6.  During this window, two things happen.  One  is  that  COMCON
         runs for job A at clock level.  COMCON always calls SVEUB for
         the job for which the command is processed;   those  commands
         which really require the job to be in core check other things
         and take appropriate action if they determine the job  really
         isn't  in  core yet.  SVEUB will simply return if JBTUPM is 0
         for the job in question, but in the case  of  job  A,  JBTUPM
         currently points to page Y, so SVEUB sets mapping up to point
         the UBR at page Y and points the SPT at page Y.
     7.  While COMCON has done  this  for  job  A,  the  second  event
         occurs:  a disk interrupt happens for job B.  Interrupt level
         for the disk interrupt calls MKADD to make job B addressable.
         Note,  however, that MKADD will check .USJOB, which is mapped
         through the SPT, and thus through the UPT itself due  to  the
         mechanics  of the way per-process space is mapped in the exec
         address map.  Normally, this would mean MKADD  would  compare
         job  B's job number with the job number in the .UPJOB slot of
         physical page Y (which would be job A's job  number)  because
         that  is  job  A's  UPT.  However, since we are in this small
         window where physical page Y points to physical page X as the
         UPT,  we  erroneously compare Job B's job number with the job
         number in page X, which is also job B's number, and  conclude
         that  there  is  no  need  to  change  the mapping.  This is,
         however, wrong and things go downhill from there.
     The problem is that the copy of the UPT written to the disk  when
the  job  swaps  out  points  at a page which will in all liklihood be
invalid when the job is again swapped in.  Since this  is  inevitable,
point  the  UPT  at an appropriate invalid page, namely the NULL job's
UPT, before writing it to disk.  Then, when the job  swaps  in  again,
during the above mentioned window the UPT will point to the NULL job's
UPT and hence .USJOB will resolve to 0 which will fail the  comparison
with any real job number.
     This also means routine MAPBAK, which depends on the UPT pointing
to  itself,  must  be  taught  to  reset the pointer in the UPT before
proceeding with its normal action.
                             EDIT 12004  FOR 702
Power fail recovery on the KL-10 does not work.
We do not restore the SPT in the recovery code.
Restore the SPT before dismissing the interrupt.
                             EDIT 12036  FOR 702
     Cannot  update a file using a logical name and zero filename in the
     UPDATE compares the filename  given  in  the  ENTER  with  the  one
remembered in DEVFIL, DEVEXT from the LOOKUP.
     If  the  compare  fails,  compare  DEVFIL,   DEVEXT   against   the
appropriate  fields  in  the  logical name definition.  This should also
make updates work with logicals defined /OVERRIDE.
                             EDIT 12044  FOR 702
     Creation dates set by updating ENTER are not returned correctly on
the first subsequent LOOKUP of the file.
     UPDATE is updating the creation date info in the RIB,  but  not in
the file's Access Table entry.
     Have UPDATE also update the Access Table.
                             EDIT 12052  FOR 702
     Update files grow, lost space on disk,  each  time  the  file  is
closed from update mode.
     DELRIB makes sure any bad block marked in .RBELB is allocated  to
the file so it is not laying around waiting to hurt someone.  Somehow,
.RBELB gets set non-zero (software  detected  error),  with  no  block
number  in the lower bits.  DELRIB takes this block number (zero), and
calls TAKBLK to allocate the block.   TAKBLK  allocates  any  cluster,
since  none  in  particular  was  asked  for.   .RBALC  gets  properly
incremented, but no RIB pointer ever gets directed  to  this  cluster,
since anything TAKBLK returns is ignored.
     Do not call TAKBLK if the block number in .RBELB is zero.
                             EDIT 12062  FOR 702
     None generally observed unless PCO 10-702-139 is  installed.   If
this  is  the  case,  and the class schedular with background batch is
run, then the system will occasionally arrive  at  a  state  where  no
background  batch  jobs  ever  get  swapped  in.   Turning  the  class
schedular off until some background batch job swaps in,  and  then  on
again will clear the situation.
     We can forget that we were swapping in a background batch job  if
it  has a collision on the high segment owned by the job.  In the case
of any normal job, we would scan the job  repeatedly  until  the  high
segment settled in or out of core, at which point we would perform the
appropriate action to be assured that the job was completely in  core.
However,  since we will only fit one background batch job into core at
any given time, and the flag (BBFIT)  doesn't  get  cleared  until  we
finish  swapping  in the job we are remembering, we never scan that or
any other background batch job again.  Prior to PCO 10-702-139,  BBFIT
was  zeroed indiscriminantly anyway so the situation had a tendency to
clear itself up.
     Put jobs waiting for a high segment onto a linked list  which  is
scanned when the swapper runs until the high segments settle (at which
time they are removed from the list and the appropriate action taken).
                             EDIT 12072  FOR 702
     PUF stopcodes while executing FILOP.  RENAME with both  FO.ASC  and
FO.UOC set.
     During the initial FILOP.  processing, F is loaded with the  USRJDA
entry  for  the  channel  number  supplied in the FILOP.  call (0 due to
FO.ASC).  The new channel number is later assigned, but the contents  of
F are still used due to FO.UOC.  SEGCON is called to delete the sharable
segment if this file is one.  In doing so, it executes a PATH.   UUO  on
the new channel number, which fails, since there was never a file opened
on this channel.
     Zero  F  just after assigning the channel number.  This will result
in error code ERCNO% (channel not opened) being returned, which  is  the
expected result.
                             EDIT 12120  FOR 702
     XCHNGE command doesn't (very well in 7.02, at all in 7.03)
     1 of n:
     1) You can XCHNGE non-removable media disks  (7.02/7.03)
     2) If you XCHNGEd RA60s you'd clobber the KDB and spread the UDB
     over never-never land (7.03)
     3) Code doesn't work well for dual-ported disks (7.02/7.03)
     1) Don't let the dummies do this
     2) Get the offsets right
     3) Handle dual-ported disks
                             EDIT 12152  FOR 702
     FILOP.  append or update for  a  file  given  a  pathological  name
results  in error code 5 (Illegal Sequence of UUOs) if a path which does
not match that of the pathological definition is  given  in  the  LOOKUP
     UPDAT1 requires the supplied path to match the  path  of  the  file
looked  up.   Since  the LOOKUP code substitutes the pathological's path
for any supplied in the FILOP.  call, the file will probably  have  come
from someplace different than the specified path.
     Since the LOOKUP uses the pathological's path, the  updating  ENTER
should also.  If the existing PPN comparison fails, use the PPN from the
pathological definition.
                             EDIT 12154  FOR 702
Bizarre statistics recorded in magtape  usage  entries  -  524292
hard read errors and 524 (thousand) characters written.
QUASAR sends part of a volume switch message from PULSAR  to  the
accounting daemon as statistics for a magtape usage entry.
Prior to MCO 10968 (701A) and QUASAR edit 1165, QUASAR did TAPOP.
UUOs  to get the magtape statistics when a tape was dismounted or
when a volume switch occurred.  The above edits fixed the problem
where  the  counters  were  getting cleared before QUASAR did the
UUOs to read the statistics.  The statistics were appended to the
"deassign"  message  sent  by the monitor to QUASAR when a device
was released.  However, the volume switch code  in  QUASAR  still
called   I$TDSM   assuming  it  did  TAPOP.   UUOs  to  read  the
statistics, but edit 1165 changed I$TDSM to get  the  stats  from
the  "deassign"  message.   The  problem  is  that when I$TDSM is
called at volume switch time, the  message  just  received  is  a
"volume  switch"  message  from  PULSAR, not a "deassign" message
from the monitor.  So I$TDSM happily takes part  of  the  "volume
switch"  message  and sends it as magtape stats to the accounting
In the monitor, add a new entry point, SNDVSS, in SNDFIN.  Modify
SNDFIN  to  lite a flag in the "deassign" message indicating it's
really tape statistics for a volume switched unit (conceptually a
"deassign" for accounting purposes) when entered via SNDVSS.  Add
a call to SNDVSS in TMPLSU just before updating the  database  to
reflect  the  volume  switch.   Also remove the call to TPSTAT to
report stats to the user (SET WATCH  MTA)  and  insert  it  right
after the call to SNDVSS in TPMLSU.  This prevents the stats from
being reported twice for the same tape drive when a volume switch
is cancelled.
In QUASAR, add code in D$DEAS and I$TDSM to recognize the monitor
flag  in  the  "deassign"  message  from  the  monitor and do the
correct things with respect to sending the accounting daemon tape
statistics.   Also  in QUASAR, remove the call to I$TDSM at VSR.0
which was responsible for the erroneous numbers  to  begin  with.
This  call  is no longer needed since the monitor will now send a
message when a volume switch occurs.
                             EDIT 12156  FOR 702
     Can't RENAME the path of a file opened on  a  pathological  device.
Attempts  to  do  so  usually  result in the file being renamed into the
pathological definition's top level UFD.
     Current  code  will only allow the pathological's definition as the
new path for a RENAME, but RENA16 forgets to reset the  logical  pointer
before  calling SETPTH, resulting in SETPTH thinking that the definition
points to the UFD.
     Allow  RENAMEs  to  change  the  path of a file even if opened on a
pathological  device.   This  is  done  by  hiding  any   logical   name
information  from  SETPTH,  so  that  the path supplied on the RENAME is
                             EDIT 12163  FOR 702
Cannot use certain 2-character pathological names (LP:,  CP:,  CR:,  PP:,
PR:, SY:, and TT:).
These PDP-11 style device names are converted by DDBSRC to  the  TOPS-10
equivalents.   However,  the  conversion  is  done  before  checking for
pathological name assignments, so if the user has defined a pathological
name using one of the above 2-character names any reference to that name
will use the TOPS-10 equivalent device name rather than the pathological
Move the conversion to after checking for pathological names.
                             EDIT 12171  FOR 702
     After MCO 11589, KS systems with ONLY  ANF-10  networks  fail  to
     COMMON.MAC was edited, but didn't make the MODULE list.
     Properly initialize the KDL page
                             EDIT 12174  FOR 702
     NNF stopcode when closing an output channel  to  a  spooled  device
opened via an assigned logical name, after no output has been done.
     While openning the device, the spooled device  modes  word  is  not
getting  stored into the newly created DDB.  When the channel is closed,
it is treated incorrectly  due  to  the  incorrect  device  modes  word,
eventually causing an NNF stopcode.
     Store the modes in the new DDB.
                             EDIT 12179  FOR 702
     Spurious RIB errors when one job is trying to rename a  file  while
another job is simultaneously attempting to supersede it.
     The superseding job is trying to decide whether it is indeed  doing
a  supersede  or  a create by finding the file on disk.  The NMB for the
file has had its KNO and YES bits cleared by  the  renaming  job,  which
leads  the  superseding  job  to  have  to  read the file's directory to
determine whether or not the file actually exists.  The RIB error occurs
when the UFD is read just after the renaming job has written the new RIB
for the renamed file, but before it has updated  the  directory.   Since
the  filename  in  the  RIB  does not match that in the directory, a RIB
error is returned.
     When  renaming  the file, just clear the YES bit in the NMB.  Since
we've just changed the name of the file, we know the old name no  longer
exists  on  that  structure.  The superseding job will interpret this as
meaning the file doesn't exist, and therefore not bother trying to  find
the file in the directory.
                             EDIT 12181  FOR 702
     Harder to diagnose crashes than it should be.
     SWPSER HALTs  if  it  can't  allocate  two  contiguous  pages  of
swapping space to swap out the UPT and the MAP.
     Change the halt into STOPCD UMN.
                             EDIT 12189  FOR 702
     TAPOP.  UUO ingores UU.PHY (the physical-only) bit.
     UUOCON sets up P1 with PHONLY prior to  dispatching  to
TAPUUO.   The  TAPOP dispatch overwrites the left half of P1
with a zero instead of preserving it.
     Change a MOVE to a HRR.
                             EDIT 12190  FOR 702
     If a newly formated pack is mounted  and  the  operator
chooses  not  to  write  the  HOM  blocks  at ONCE time, but
instead does it with TWICE, PULSAR cannot mount a  structure
using said pack.
     By default, all units  are  marked  as  having  a  pack
mounted  during  ONCE.  When a unit is found to be off-line,
the status is changed to "no pack mounted".  If the operator
chooses  not  to write the HOM blocks, the status is left to
"pack mounted"  when  it  should  be  changed  to  "no  pack
     Set "no pack mounted" status appropriately.
                             EDIT 12199  FOR 702
     Extended ENTER on a SPOOL'd DDB causes trashed job/file  name  or
address check when C(.RBCNT) = .RBVER
     FILUUO special cases an extended ENTER to  a  SPOOL'd  DDB  which
specifies .RBSPL (=.RBVER+1).  The check is off by 1.
     Remove the "-1" from the CAIGE at UENTR+14.