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