Google
 

Trailing-Edge - PDP-10 Archives - bb-bt99e-bb - alg10b.d05
There are 2 other files named alg10b.d05 in the archive. Click here to see a list.
                 EDIT DESCRIPTIONS FOR ALGOL-10-V10B                            
  
  
                             EDIT 311    FOR ALGOL
  
[SYMPTOM]
  
ALGDDT occasionally hangs when starting after a user error.
  
  
[DIAGNOSIS]
  
After certain user errors, followed by 'CONTINUE' to ALGDDT,
the error flags are restored in the PC.  When the next error
occurs, these flags might still be on, and might  cause  the
APR handler to loop.
  
  
[CURE]
  
Clear the flags before restoring the PC with a JRSTF.
********************************************************************************
  
  
                             EDIT 312    FOR ALGOL
  
[SYMPTOM]
  
String READ gets fatal error before IOCHAN can detect EOF.
  
  
[DIAGNOSIS]
  
The  ALGLIB  procedure  READ  incorrectly  handles  EOF  for
strings.
  
  
[CURE]
  
Do not return a fatal error when EOF is  detected  normally.
Instead set the EOF status bit in IOCHAN and return.
********************************************************************************
  
  
                             EDIT 313    FOR ALGOL
  
[SYMPTOM]
  
KA10 floating instruction exists in KI/KL ALGOTS.
  
  
[DIAGNOSIS]
  
The code does not account for KI/KL processor differences.
  
  
[CURE]
  
Execute different code for KI/KL CPUs.  Install  conditional
code to select either the KA or KI/KL code.
********************************************************************************
  
  
                             EDIT 314    FOR ALGOL
  
[SYMPTOM]
  
'BEGIN' 'COMMENT';  'END' does not compile.
  
  
[DIAGNOSIS]
  
Edit 273 did  not  work  in  the  case  of  'END'  following
'COMMENT'.
  
  
[CURE]
  
Check for as 'END' before  exiting  the  comment  processing
code.
********************************************************************************
  
  
                             EDIT 315    FOR ALGOL
  
[SYMPTOM]
  
ALGOL compiler does not detect  illegal  use  of  symbols  immediately
preceding pseudo-ops such as CHECKON, LINE, etc.
  
  
[DIAGNOSIS]
  
There is no code to check for symbols that precede a pseudo-op.   Such
symbols are ignored by the compiler and produce no diagnostic message.
  
  
[CURE]
  
Add code to the pseudo-op handler within the compiler to  insure  that
no illegal symbol exists.
********************************************************************************
  
  
                             EDIT 316    FOR ALGOL
  
[SYMPTOM]
  
Nulls are written to a string with no apparent reason.
  
  
[DIAGNOSIS]
  
The nulls were written by ALGOTS  during  execution  of  the
SELECTOUTPUT  library  procedure.  In setting up to select a
new  output  channel,  SELECTOUTPUT  releases  any  previous
channel  which  had  been  used  for  output.   Part of this
operation is to do a BREAKOUTPUT to  the  channel.   In  the
case of logical I/O to strings in memory, BREAKOUTPUT writes
nulls to the  string  to  complete  it.   The  string  being
written  to  in  this specific case was local to a procedure
which had exited and deallocated the  space.   Unfortunately
the I/O channel was still active to this string and thus the
SELECTOUTPUT/BREAKOUTPUT routines thought they  could  still
write to it.
  
  
[CURE]
  
Add code to the block exit routine to scan for  logical  I/O
channels   which   are   reading/writing  to  strings  being
released.  Force-close any channel which is open to  one  of
these  strings.   This  will cause a fatal error if any more
I/O  is  done  to  the   string   without   an   intervening
SELECTOUTPUT.
********************************************************************************
  
  
                             EDIT 317    FOR ALGOL
  
[SYMPTOM]
  
ALGOL compiler dies on erroneous sample user program.
  
  
[DIAGNOSIS]
  
Routine LABREF in ALGUTL improperly extended  a  symbol  table  entry.
When a "GOTO" statment was found, and the designational expression was
an undefined label which already had an extended symbol  table  entry,
LABREF  did  not  check  before extending the entry.  This is invalid,
since the label may have been used  at  a  previous,  different  block
level  as  an  undeclared  identifier  and  thus would already have an
extended entry.  Extending the entry twice  corrupted  the  table  and
caused the compiler to die later, while searching through the table.
  
  
[CURE]
  
Have LABREF check  to  see  if  the  symbol  table  entry  is  already
extended, and if so, do not extend it again.
********************************************************************************
  
  
                             EDIT 320    FOR ALGOL
  
[SYMPTOM]
  
ALGLIB procedure TRAPNO returns the wrong trap number.
  
  
[DIAGNOSIS]
  
TRAPNO assumed that %SYS17(DB) contained  the  trap  number.
This  is  entirely  false,  as  this  location  is  used for
temporary storage during error processing.
  
  
[CURE]
  
Change the location that TRAPNO gets the trap number from to
%UUOTM(DB).  This correctly retrieves the trap number.
********************************************************************************
  
  
                             EDIT 321    FOR ALGOL
  
[SYMPTOM]
  
ALGOL-10 compiler types an extra CRLF after  each  undefined
label it reports.
  
  
[DIAGNOSIS]
  
Edit  305  types two consecutive  CRLFs  when  printing  the
undefined label messages.
  
  
[CURE]
  
Remove the extra CRLF.
********************************************************************************
  
  
                             EDIT 322    FOR ALGOL
  
[SYMPTOM]
  
The error message indicating the OTS cannot be loaded is not
accurate in most circumstances.
  
  
[DIAGNOSIS]
  
The  message  states  that  ALGnnn.EXE  cannot   be   found.
Actually,  one  of  several  reasons could have prevented it
from loading.  The message is not indicitive of what  really
happened.  Also, the GETSEG error code which gets printed is
the result of GETSEGing from DSK:, and not from SYS:.   This
usually results in a code of 0, which is not useful.
  
  
[CURE]
  
Change the wording of the error message, and do  not  GETSEG
ALGnnn.EXE  from  DSK:.  Only look on logical SYS:, and give
the true failure code if the OTS cannot be loaded.
********************************************************************************
  
  
                             EDIT 323    FOR ALGOL
  
[SYMPTOM]
  
A READ fails if EOF (End Of File) is found before  the  READ
is  complete, and TRAP(38) is enabled.  The READ succeeds if
TRAP(38) is not set.
  
  
[DIAGNOSIS]
  
Edit 145 made EOF a delimiter for READ.  This did not  allow
TRAP  to  work, however.  Edit 175 came along and made EOF a
delimiter only if TRAP(38) was not set.  If it was set,  the
READ was left unfinished and the TRAP was serviced.
  
  
[CURE]
  
Always return a delimiter (line-feed) the  first  time  READ
gets  to  EOF.   On the second and subsequent times, trap if
TRAP(38) is set or just give a fatal error and start  ALGDDT
if it is not set.
********************************************************************************
  
  
                             EDIT 324    FOR ALGOL
  
[SYMPTOM]
  
Library procedure OPENFILE cannot handle SFDs.
  
  
[DIAGNOSIS]
  
OPENFILE was not coded to handle SFDs.
  
  
  
[CURE]
  
Rewrite  OPENFILE  to  handle  SFDs  and  check  file   specifications
accordingly.
********************************************************************************
  
  
                             EDIT 325    FOR ALGOL
  
[SYMPTOM]
  
Bad index register usage in library procedure  WRITE  and  a
typographical error in ALGOTS error message.
  
  
[DIAGNOSIS]
  
WRITE indexes from A0.  This will not work.
  
  
[CURE]
  
Do not index at all  at  WRIT1,  since  the  desired  string
header   is   already   in   the   accumalators.    Fix  the
typographical error at M500 in ALGOTS.
********************************************************************************
  
  
                             EDIT 326    FOR ALGOL
  
[SYMPTOM]
  
Some  heap  errors  go  undetected  by  the  heap  integrity
checker.  A variety of run-time errors may result.
  
  
[DIAGNOSIS]
  
The current code is insufficient.
  
  
[CURE]
  
Add code to the heap integrity  checker  to  test  for  more
possible errors.
********************************************************************************
  
  
                             EDIT 327    FOR ALGOL
  
[SYMPTOM]
  
After  a  floating  overflow   that   starts   ALGDDT,   the
"statistics" command prints invalid runtime and elapsed time
values.
  
  
[DIAGNOSIS]
  
The error handler APRERR did not  clear  the  overflow  bits
after  an  error.   This  caused the number printing routine
PRINT. to fail, resulting in the invalid times.
  
  
[CURE]
  
Clear the overdlow flags when entering APRERR.
********************************************************************************
  
  
                             EDIT 330    FOR ALGOL
  
[SYMPTOM]
  
The ALGDDT "profile" command gets an ILL MEM REF  when  used
in a program with a nonsharable OTS.
  
  
[DIAGNOSIS]
  
The "profile" command gets fooled by instructions in the OTS
that look like procedure calls.  This only occurs if the OTS
is loaded in low core with the program,  since  the  profile
command code scans only the loseg.
  
  
[CURE]
  
Check the pointers which are found.  A pointer cannot have a
non-zero left half, but this wasn't being checked.
********************************************************************************
  
  
                             EDIT 331    FOR ALGOL
  
[SYMPTOM]
  
The APR error handler is not as efficient as it could be.
  
  
[DIAGNOSIS]
  
Two JFCL instruction are used to clear the overflow PC bits.
  
  
[CURE]
  
Clear the overflow bits in one JFCL instruction.
********************************************************************************
  
  
                             EDIT 332    FOR ALGOL
  
  
               Digital Equipment Corporation
             **DECsystem-10 Customer Support**
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
                      PCO LOG REPORT
                      --------------
  
  
  
  
  
  
  
  
  
                        30-NOV-82
  
  
         This document contains the most current
        information  on the Program Change Orders
                    recorded to date.Digital Equipment Corporation       30-NOV-
PCO Log Report
  
                   *********************
                   *PCO #:10-ALGDDT-004*
                   *********************
  
  
[Program Data]          System:   ALGOL
                        Component:ALGDDT
  
[Validity]         10B(310), 1.2(310)
  
[Date Entered]          23-NOV-82
  
[Programmer]            SELDERS
  
[Routines]              ALGDDT
  
[Key Words]             BREAKPOINT  ALGDDT      FAIL
  
[Source Before Edit]    %10C (000331)
  
[Source After Edit]     %    (000332)
  
[Miscellaneous]         DOC changes:   N
                        SER/SPR Number:10-33106
                        Archived:      NO
                        OTHER PRODUCT: 20
                        AUTOPATCH TAPE #
  
  
************************************************************************
  
[Notes]Digital Equipment Corporation       30-NOV-82    Page   2
PCO Log Report
  
[PCO Write-up]
  
  
  
                        **********
  
  
[SYMPTOM]
  
  
  
  
Setting a breakpoint in ALGDDT can cause a program  to  fail
with an Ill Mem Ref.
  
  
  
                        **********
  
  
[DIAGNOSIS]
  
Register AX was not preserved over the breakpoint.   If  the
program is continued past the breakpoint, it can Ill Mem Ref
if the next instruction references AX.
  
  
  
                        **********
  
  
[CURE]
  
Preserve AX over breakpoints.
 Digital Equipment Corporation       30-NOV-82    Page   3
PCO Log Report
  
  
[FILCOM]
File 1)	DSK:ALGPRM.331[4,374]	created: 1852 15-Nov-1982
File 2)	DSK:ALGPRM.MAC[4,374]	created: 1409 16-Nov-1982
  
1)2		EDTNO==331		; EDIT NUMBER
1)		VERNO==<MAJVNO>B11+<MINVNO>B17+EDTNO
****
2)2		EDTNO==332		; EDIT NUMBER
2)		VERNO==<MAJVNO>B11+<MINVNO>B17+EDTNO
**************
1)3	;END OF REVISION HISTORY
****
2)3	;332	ALGDDT,	16-NOV-82	10-33106	JBS
2)	;	ALGPRM	PRESERVE AX OVER BREAKPOINTS.
2)	;
2)	;END OF REVISION HISTORY
**************
1)11		%DBL==%DBL		; LENGTH OF DATA-BASE
****
2)11	;**; [332] @TEXT "%DBL==%DBL<TAB>"-1L IN ALGPRM, INSERT 1, JBS,
	16-NOV-82
2)		%DBMAC(SAVAX)		; [332] TEMP. STORAGE FOR AX DUR
	ING BREAKPOINTS
2)		%DBL==%DBL		; LENGTH OF DATA-BASE
**************
 Digital Equipment Corporation       30-NOV-82    Page   4
PCO Log Report
  
  
[FILCOM]
File 1)	DSK:ALGDDT.331[4,374]	created: 1605 09-Nov-1982
File 2)	DSK:ALGDDT.MAC[4,374]	created: 1021 17-Nov-1982
  
1)19		HLRZ	A6,%DDTAL(DB)
****
2)19	;**; [332] @CONTN2+5L IN ALGDDT, INSERT 2, JBS, 16-NOV-82
2)		MOVE	AX,SAVAX(DB)		; [332] GET AX BACK
2)		ADDI	AX,(DB)			; [332] RELOCATE
2)		HLRZ	A6,%DDTAL(DB)
**************
1)101		HRRI	A0,DDCONC		; [E1000] SET "ACTION AB
	ANDONED"
****
2)101	;**; [332] @BREAK%+6L IN ALGDDT, INSERT 2, JBS, 16-NOV-82
2)		SUBI	AX,(DB)			; [332] DELOCATE AX
2)		MOVEM	AX,SAVAX(DB)		; [332] AND SAVE IT
2)		HRRI	A0,DDCONC		; [E1000] SET "ACTION AB
	ANDONED"
**************
  
********************************************************************************
  
  
                             EDIT 333    FOR ALGOL
  
[SYMPTOM]
  
There is a "SKIPA A1, .+1" rather than a "MOVE A1,[literal]"
in ALGDDT.
  
  
[DIAGNOSIS]
  
The original code did not use MACRO's literal facility.
  
  
[CURE]
  
Change the SKIPA to a MOVE.
********************************************************************************
  
  
                             EDIT 334    FOR ALGOL
  
  
  
  
[SYMPTOM]
  
TOPS-20 ALGLIB string procedures FDATE, VDATE, and  TIME  do  not  set
bits STRDYN or STRPRC.  They should, since they are the dynamic result
of a string procedure.
  
  
[DIAGNOSIS]
  
The routines were not coded to set the bits.
  
  
[CURE]
  
Add the necessary code  to  set  the  bits  before  exiting  from  the
procedures.
********************************************************************************
  
  
                             EDIT 335    FOR ALGOL
  
.RM 70
[SYMPTOM]
.SKIP
Passing a string procedure by name to another procedure which does a LENGTH,
SIZE, or WRITE of the string procedure does not work.
.SKIP 2
[DIAGNOSIS]
.SKIP
Edit 256 made ALGLIB procedures LENGTH, SIZE, and WRITE delete transient
strings.  The test for transient strings was not correct, and thus potentially
"good" strings were being deleted.  Subsequent use of the strings would fail.
.SKIP 2
[CURE]
.SKIP
Revise edit 256 to properly delete strings.  Delete only those strings that
are truly transient.
********************************************************************************
  
  
                             EDIT 336    FOR ALGOL
  
.RM 70
[SYMPTOM]
.SKIP
ALGLIB procedure INFO has several problems.  First, INFO(0) returns a core
size that is one word too small.  Second, INFO(5) on TOPS-20 returns a 0 (which
is invalid) for the processor type, rather than 3, which means "KL" processor.
Third, INFO(5) is overly complex on TOPS-10.  Fourth, any undefined INFO
parameter value will quietly return a 0, rather than giving some kind of error.
.SKIP 2
[DIAGNOSIS]
.SKIP
INFO(0) returns the right half of .JBREL, which is the highest address in the
program's lowseg.  However, since 0 and not 1 is actually the first available
location in the lowseg, this value is off by one.
.s
INFO(5) was not coded properly on TOPS-20.  It specifically returned a 0,
rather than the correct value 3 for the processor type.  This only affects
TOPS-20.  On TOPS-10, a single instruction can replace a whole routine when
picking up the CPU type.
.s
Invalid INFO parameter values were being checked for, but not handled properly.
Illegal values simply returned 0 as a result, instead of giving an error to the
user.
.SKIP 2
[CURE]
.SKIP
For INFO(0), return .JBREL+1 for the core size in words.  For INFO(5) on
TOPS-20, always return a 3 (KL processor).  On TOPS-10 systems, replace the
subroutine call with an LDB instruction, and change ALGOTS so it sets the
CPU type properly when the program starts.  For illegal INFO parameter values,
give a new error "Invalid INFO parameter value" and start ALGDDT.
********************************************************************************
  
  
                             EDIT 337    FOR ALGOL
  
.RM 70
[SYMPTOM]
.SKIP
ALGLIB procedure TRAPNO isn't in TOPS-20.
.SKIP 2
[DIAGNOSIS]
.SKIP
It was not put in with edit 206, which put TRAP in the TOPS-20 library.
.SKIP 2
[CURE]
.SKIP
Put TRAPNO back in ALGLIB, and teach the compiler to understand it.
********************************************************************************
  
  
                             EDIT 340    FOR ALGOL
  
.RM 70
[SYMPTOM]
.SKIP
The ALGOL OTS name is constantly changing, since the edit level is part of it:
ALGnnn.EXE, where nnn is the edit level.
.SKIP 2
[DIAGNOSIS]
.SKIP
That's the way it was written.
.SKIP 2
[CURE]
.SKIP
Change ALGLIB to do a GETSEG UUO on SYS:ALGOTS.EXE rather than ALGnnn.EXE.
********************************************************************************
  
  
  
END OF  ALGOL-10-V10B