EDIT DESCRIPTIONS FOR APLSF-10-V2
EDIT 436 FOR APLSF
[SYMPTOM]
If a file is open in /DA/SHARE mode and any other file is open
also, various errors can occur, such as bad data in either or both
files, IO TO UNASSIGNED CHANNEL, or inability to read the direct
access file.
[DIAGNOSIS]
The routine DFUPDATE in DFILE.BLI which calls UPDDA to dump out
the direct access file's in-core buffers when the locks on it are
dequeued does not set CHNUM, the channel number of the file. Thus,
UPDDA may write to the wrong file.
[CURE]
Set CHNUM to be DIMLDN^23, as GDFUPDATE already does.
********************************************************************************
EDIT 437 FOR APLSF
[SYMPTOM]
)MODE is not saved with the workspace, although the documentation
says it is.
[DIAGNOSIS]
It is in GFLAGS rather than in WSFLAGS.
[CURE]
Move it into WSFLAGS. This involves changes to DNMAC, SI and
FNTOA. EMT and RTN1 must also be recompiled.
********************************************************************************
EDIT 440 FOR APLSF
[SYMPTOM]
The result of a take or drop operation on a vector cannot exceed
131071 elements (377777 octal), regardless of the type. If it does,
the user gets a WS FULL.
[DIAGNOSIS]
An unnecessary check is being done in QTAKE.
[CURE]
Remove the check for the size of the result and let GTCORE do
it.
********************************************************************************
EDIT 441 FOR APLSF
[SYMPTOM]
Setting )TABS 10 can cause bells to be output if the terminal is
a key-pairing terminal. For example,
terminal..key
...
M_2 7 .RO 1.1
M
... (no bells)
)TABS 10
M
... (bells)
[DIAGNOSIS]
The code is using a bell character as a fill character after the
tab, apparently because of 2741-type terminals. Edit 316 fixed this
for teletype terminals.
[CURE]
Extend edit 316 to include key-pairing terminals.
********************************************************************************
EDIT 442 FOR APLSF
[SYMPTOM]
If )OUTPUT is used to direct output to another TTY, the input is
not echoed on the other TTY.
[DIAGNOSIS]
The wrong bit is being checked. It checks to see that the device
is a TTY rather than the controlling TTY.
[CURE]
Check ZCONSOLE (004000,,0) rather than DV.TTY (000010,,0) in the
DEVCHR word. We could have checked DV.TTA except that APLSF fools
with the bits and sets an unused bit it calls ZCONSOLE if the device
is the controlling terminal.
********************************************************************************
EDIT 443 FOR APLSF
[SYMPTOM]
The result of an inner or output product cannot exceed 128000
elements (inner) or 126000 elements (outer).
[DIAGNOSIS]
An unnecessary check is being made in INNPROD and in INOUT.
[CURE]
Let GTCORE do the checking.
********************************************************************************
EDIT 444 FOR APLSF
[SYMPTOM]
Inner product with right operator nand or nor and left operator
arithmetic gets bad results.
[DIAGNOSIS]
Inner product computes the right operator one at a time. If the
result could be a negated Boolean, and the left operator expects an
integer, the result must be converted to an integer by dropping all
but the low-order bit.
[CURE]
Add code to do so.
********************************************************************************
EDIT 445 FOR APLSF
[SYMPTOM]
No overt symptoms, but LBRLOOP in GLEX uses a variable LINENO
which does not always get initialized.
[DIAGNOSIS]
If no line number is read, LINENO is not initialized.
[CURE]
Set it to zero in this case.
********************************************************************************
EDIT 446 FOR APLSF
[SYMPTOM]
It is possible to declare the return value of a function to have
the same name as one of the parameters, for example, .DL Z _ A Z.
Then, in the body of the function, only the returned value is ever
used.
[DIAGNOSIS]
This should be a definition error.
[CURE]
Check for this case and return an error.
********************************************************************************
EDIT 447 FOR APLSF
[SYMPTOM]
If output failed, the copy of the data being output may not ever
be garbage collected.
[DIAGNOSIS]
The code in FILERR does not check this.
[CURE]
Have FILERR check OPRND1 and garbage it if it is nonzero.
CKMKGARB will not garbage it if it is an indirect reference through the
symbol table but only if it is in the XSTACK.
********************************************************************************
EDIT 450 FOR APLSF
[SYMPTOM]
Immediate mode comments are never deleted from the worksapce,
thus filling up available workspace area.
[DIAGNOSIS]
The code never checks.
[CURE]
Delete the comment in CRL. Normal immediate-mode statements are
deleted in SEOS.
********************************************************************************
EDIT 451 FOR APLSF
[SYMPTOM]
)CALL will not return correctly for terminal type LA36. When
control returns to APLSF, the terminal type must be retyped.
[DIAGNOSIS]
An invalid type is put into the TMP file, which causes the
"terminal.." question to be asked when the user returns to APLSF.
[CURE]
Change the TRMTYP PLIT in OFF to add a null element for terminal
type 6, which is not used, so that type 7 is (correctly) LA36.
********************************************************************************
EDIT 452 FOR APLSF
[SYMPTOM]
Inner product may generate bad code or give a SYSTEM ERROR if
the right operand is a scalar, depending on previous operations in the
workspace.
[DIAGNOSIS]
RTCSE is never set up. If the inner product code is entered
with it set to zero, bad code is generated to pick up the right operand
as if it were a vector. This code should only be generated if the code
generation routine is going to call SCTOVC.
[CURE]
Set RTCSE to -1 in the beginning of INNPROD.
********************************************************************************
EDIT 453 FOR APLSF
[SYMPTOM]
A[1;]_0 where A is undefined should give a value error but
usually gives a length error.
[DIAGNOSIS]
The code in FJPSUB picked up the address (0) and got the length
from there.
[CURE]
If the left variable being subscripted has no value, LSUB should
give a value error.
********************************************************************************
EDIT 454 FOR APLSF
[SYMPTOM]
The pseudo-random number generator in APLSF is very slow.
[DIAGNOSIS]
The algorithm used generates fixed overflows, which are trapped
for. The trap routine takes no fixup action for these because INTRPT
is off, but the trapping is very slow because DOVTRA does an APRENB
UUO to re-enable interrupts. This is unnecessary because the original
APRENB UUO was for repetitive enable.
[CURE]
Remove the extra UUOs.
********************************************************************************
EDIT 455 FOR APLSF
[SYMPTOM]
If a GCOL occurs during an execute of a system command and causes
the activation records for it to move, INPTR gets clobbered and the
usual result is a SYSTEM ERROR.
[DIAGNOSIS]
The execute string has no backpointer and so is not relocated
when the string is moved.
[CURE]
Relocate INPTR during an execute of a system command.
********************************************************************************
EDIT 456 FOR APLSF
[SYMPTOM]
Several characters in the atomic vector (.BXAV) no longer print
correctly. Also, anything printed after an element of .BXASCII will
be printed in the wrong character set.
[DIAGNOSIS]
Incorrect codes were used in the new translation table, and a
line was missing from the code which handles .BXASCII.
[CURE]
Correct the bad table entries, and insert the missing code.
********************************************************************************
EDIT 457 FOR APLSF
[SYMPTOM]
Opening a PTY for both input and output fails (only with
APLSF-10).
[DIAGNOSIS]
The DEVCHR UUO does not set the TTY bits for a PTY, but PA1050
does.
[CURE]
Do a DEVTYP UUO to determine if we are opening a PTY. If so, set
the ZTTY bit in the DEVCHR word.
********************************************************************************
EDIT 460 FOR APLSF
[SYMPTOM]
If you do an .IB27 after a WS full, you may get a system
error.
[DIAGNOSIS]
The code for the i-beam does not check to see if the vector of
line numbers will fit in core and tries to create it anyways.
[CURE]
Check for enough space first.
********************************************************************************
EDIT 461 FOR APLSF
[SYMPTOM]
Comma insertion in $ format does not always generate field
overflow when necessary. For example, 'CI8'$1234567 gives 1234,567.
[DIAGNOSIS]
If we are doing comma insertion, we may not be able to fit one
more digit for a positive number than for a negative one without
generating a field overflow, because the extra digit position may have
to be occupied by a comma, and so will have to be a leading space.
[CURE]
If there are three digits to the left of the leftmost comma when
the number is negative, we cannot fit another digit in when it is
positive, and so must deliberately insert a space (or other fill
character).
********************************************************************************
EDIT 462 FOR APLSF
[SYMPTOM]
Owner's directory should be updated if one re-enters from
different connected directory
[DIAGNOSIS]
Get the PPN in Mon.bli where user re-enters.
[CURE]
check PPN at the reentry.
********************************************************************************
EDIT 463 FOR APLSF
[SYMPTOM]
If you do an .IB27 after a WS FULL, you may get a SYSTEM ERROR.
[DIAGNOSIS]
Check for enough space first.
[CURE]
Correct edit 460. The code for the i-beam does not check to see if
the vector of line numbers will fit in core and tries to create it anyways.
********************************************************************************
EDIT 464 FOR APLSF
[SYMPTOM]
LA36 OR LA120 DOES NOT SET APL ALTERNATE MODE AUTOMATICALLY.
[DIAGNOSIS]
CHECK IF TERMINAL TYPE IS LA36 THEN DO NOT PRODUCE ESC SEQUENCE.
[CURE]
DO NOT PRODUCE THE ESC SEQUENCE
********************************************************************************
EDIT 465 FOR APLSF
[SYMPTOM]
When using the ENQ/DEQ facility and locking the entire
resource, the data file can become corrupted.
[DIAGNOSIS]
When the user executes the statement: .BXDEQ CHAN
(where CHAN is the channel number of the file) the file is
DEQed before the buffers are written to the file.
[CURE]
Call the routine DFUPDATE (which updates the buffers by
writing the buffers to the file) before the routine DODEQ is
called (which does the DEQ UUO).
********************************************************************************
EDIT 466 FOR APLSF
[SYMPTOM]
.BXQLD MAY PRODUCE SYSTEM ERRORS.
[DIAGNOSIS]
IT IS TRYING TO GO THROUGH THE CODE WHICH CLEANS UP AFTER A
MONADIC OPERATOR AND SETS UP ITS VALUE. (MFINUP)
[CURE]
DO NOT USE MFINUP. ALWAYS USE MERRET, REGARDLESS OF WHETHER
OR NOT THERE IS A LATENT EXPRESSION.
********************************************************************************
EDIT 467 FOR APLSF
[SYMPTOM]
)LIB and )DROP do not look in an SFD if the SFD is in
the default path.
[DIAGNOSIS]
)DROP specifies the user's PPN when it does the LOOKUP
on the file. It should use the default PPN [0,0].
)LIB looks up the user's directory, ppn.UFD, which is
in the master file directory [1,1]. If the user is in an
SFD, it should lookup that directory, name.SFD, in the next
superior SFD (or in the UFD if there is no superior SFD).
[CURE]
For the system command )DROP, place a zero into the
lookup argument block in place of the user's PPN.
For the system command )LIB:
If the user specified a device name or a PPN, then
proceed normally. If not, do a PATH. monitor call and find
out if the path includes an SFD. If so, change the argument
block for the lookup call so that it looks up the proper
directory.
********************************************************************************
EDIT 470 FOR APLSF
[SYMPTOM]
WHILE COPYING SUSPENDED FUNCTION, THE LOCALIZED SYSTEM
VARIABLE CAUSE SYNTEX ERROR AS A RESULT OF ANY FURTHER USE.
[DIAGNOSIS]
WHILE COPYNG SVSYMTAB GOT CLOBBERED.
[CURE]
DO NOT UPDATE LOCALIZED SYSTEM VARIABLE IN PSSTE
ROUTINE IN RELOC.BLI IN CASE OF SUSPENDED FUNCTION.
********************************************************************************
EDIT 471 FOR APLSF
[SYMPTOM]
APLSF HANGS WHEN ATTEMPTING 1!M WHERE M IS GREATER
THAN 1E6
[DIAGNOSIS]
EDIT 303 CHANGED THE METHOD OF CALCULATING FLOATING
BINOMIAL COEFFICIENTS. THE NEW METHOD ATTEMPTS TO DECREMENT
THE SECOND ARGUMENT UNTIL IT IS 1. IF THE NUMBER IS LARGE
IT WILL TAKE TOO LONG OR PERHAPS FOREVER.
[CURE]
USE THE ORIGINAL METHOD IF THE EXPONENT OF THE
NUMBER IS GREATER THAN OR EQUAL TO 225.
********************************************************************************
EDIT 472 FOR APLSF
[SYMPTOM]
TAKING THE EXPONENT OF MINUS INFINITY CAUSES APLSF TO HANG.
[DIAGNOSIS]
THE MOVM INSTRUCTION IN THE EXP ROUTINE CAUSES A TRAP WHEN
THE SOURCE CONTAINS 400000,,0 (MINUS INFINITY). AS APL
ATTEMPTS TO HANDLE THE OVERFLOW, EXP GETS CALLED AGAIN, AND
IT TRAPS AGAIN...
[CURE]
FORCE EXP TO RETURN ZERO IF NEGATIVE INFINITY IS GIVEN AS
THE ARGUMENT.
********************************************************************************
EDIT 473 FOR APLSF
[SYMPTOM]
USE EDITED TMPCORE FILE FAILED AND APLSF STARTED
RUNNING INTO LOOP AT PROMPT TERMINAL..
[DIAGNOSIS]
WHENEVER TMPCORE UUO FAILED INCHAR CHECKED FOR TIMEOUT
AND JUMEPED TO PASS LINE-FEED.
[CURE]
INITIALIZE TIMEOUT TO 0 IN START.BLI SO WE DON'T FEED
ANY LF AND TTCALL IN INCHAR WILL READ BUFFER INSTEAD OF LF.
********************************************************************************
EDIT 474 FOR APLSF
[SYMPTOM]
DYADIC SHREIK MAY GIVE INCORRECT RESULTS.
[DIAGNOSIS]
EDIT 471 CLOBBERED REGISTER T2.
[CURE]
COMMENT OUT EDIT 471 AND REPLACE IT.
********************************************************************************
EDIT 475 FOR APLSF
[SYMPTOM]
APLSF HANGS WHEN MINUS INFINITY IS THE LEFT ARGUMENT OF A
DYADIC CIRCLE.
[DIAGNOSIS]
MINUS INFINITY IS 1B0, WHICH INTERRUPTS ON A MOVM
INSTRUCTION. APL DOESN'T KNOW WHAT TO DO WITH THE
INTERRUPT, AND ENDS UP HUNG.
[CURE]
CHECK FOR MINUS INFINITY AND GIVE A RANGE ERROR.
********************************************************************************
EDIT 476 FOR APLSF
[SYMPTOM]
IF AN ASCII SEQUENTIAL DATA FILE IS READ DURING )INPUT,
APLSF WILL TAKE COMMANDS FROM THE DATA FILE INSTEAD OF THE
)INPUT FILE.
[DIAGNOSIS]
WHEN CLEANING UP IN SYNTAX, IF ZIONUM IN THE ACTIVATION
RECORD IS 0, INDEV, THE POINTER TO THE INPUT WAS NOT UPDATED
FULLY. IT WAS LEFT POINTING TO THE BUFFER WHERE THE DATA
FILE WAS, CAUSING THE NEXT COMMAND TO BE TAKEN FROM THE
DATA.
[CURE]
UPDATE INDEV PROPERLY.
********************************************************************************
EDIT 477 FOR APLSF
[SYMPTOM]
.IO .NG1+2*35 MAY GIVE A PA1050 ERROR, OR MAY HANG IF DDT IS
LOADED. OTHER ERRORS ARE POSSIBLE DEPENDING ON WORKSPACE
SIZE.
[DIAGNOSIS]
2*35-1 IS THE LARGEST INTEGER ALLOWED, MIOTA CALLS MFREECH
TO MAKE SURE THERE IS ENOUGH CORE TO DO IT. MFREECH ADDS DX
TO THE REQUESTED AMOUNT OF CORE AND COMPARES THE TOTAL TO
JOBREL. IF ITS LESS THAN JOBREL, THEN THERE IS ENOUGH CORE.
ADDING DX TO 2*35-1 OVERFLOWS, PRODUCING A NEGATIVE RESULT
WHICH IS LESS THAN JOBREL. MIOTA THINKS ALL IS WELL AND
STARTS BUILDING THE DATA ENTRY AND FILLING CORE WITH
CONSECUTIVE INTEGERS. MIOTA USES R (REGISTER 16) TO POINT
TO THE ADDRESS TO PLACE THE NUMBER. WHEN R POINTS TO
ITSELF, AND DESTOYS ITSELF, ANYTHING CAN HAPPEN.
[CURE]
PUT A CHECK IN MIOTA AND GIVE A DOMAIN ERROR FOR ANY
ARGUMENT GREATER THAN 777777 (OCTAL).
********************************************************************************
EDIT 500 FOR APLSF
[SYMPTOM]
APLSF GIVES A SYSTEM ERROR WHEN READING A CORRUPTED DIRECT
ACCESS FILE.
[DIAGNOSIS]
ZCOUNT IN THE DATA ENTRY IN THE FILE HAS BEEN CHANGED TO
SOME LARGE VALUE. APLSF TRIES TO READ MORE DATA THAN IT HAS
BUFFER SPACE FOR, OR PERHAPS READ PAST THE END OF THE FILE.
[CURE]
MAKE SURE THAT ZCOUNT IN THE DATA ENTRY TO BE READ IS LESS
THAN THE WORD COUNT IN THE FILE DIRECTORY. IF ZCOUNT IS
GREATER, GIVE A FILE NOT DIRECT ACCESS FORMAT ERROR.
********************************************************************************
EDIT 501 FOR APLSF
[SYMPTOM]
SYSTEM ERROR OR PA1050 ERROR ON RECURSIVE .XQ IF )ECHO OFF.
EXAMPLE:
)ECHO OFF
FOO _ '.XQ FOO'
.XQ FOO
[DIAGNOSIS]
EDIT 347 IN ERROR IN GLEX HANDLES THE DOUBLE ERROR MESSAGE
FOR .XQ. WHILE COPYING THE MESSAGE, THE POINTER IS CHECKED
TO SEE IF IT IS DONE AFTER EACH BYTE IS COPIED. IF NO BYTES
SHOULD BE COPIED, THE POINTER IS NOT CHECKED UNTIL AFTER THE
FIRST BYTE HAS BEEN COPIED AND BY THEN IT IS TOO LATE, THE
COPYING DOESN'T STOP.
[CURE]
CHECK THE BYTE POINTER TO SEE IF THE COPY IS DONE BEFORE
EACH BYTE IS COPIED, INSTEAD OF AFTER.
********************************************************************************
EDIT 502 FOR APLSF
[SYMPTOM]
SYSTEM ERROR ON THE -10 DOING DYADIC COMMA WHEN CORE RUNS
OUT.
[DIAGNOSIS]
AS DCOMMA BUILDS THE NEW DATA ENTRY, IT DOES NOT INITIALIZE
ZHEAD. IF GTCORE FAILS, GTCERR (GTCORE'S ERROR ROUTINE)
TRIES TO LOOK AT ZHEAD OF THE DATA ENTRY BEING CREATED. IF
IT POINTS TO A NONEXISTANT PAGE, YOU GET A SYSTEM ERROR. ON
THE -20 YOU GET A RANDOM PAGE CREATED.
[CURE]
MAKE ZHEAD POINT TO ITSELF WHEN BUILDING THE DATA ENTRY IN
DCOMMA.
********************************************************************************
EDIT 503 FOR APLSF
[SYMPTOM]
ASCII SEQUENTIAL FILES HAVE GARBAGE IN THEM AFTER CLOSING
THE FILE AND APPENDING.
[DIAGNOSIS]
APL DIDN'T CLEAR A BUFFER BEFORE IT FILLED IT WITH THE LAST
BLOCK IN THE FILE. APL THEN THOUGHT THAT THE JUNK IN THE
BUFFER WAS GOOD DATA FROM THE FILE. (-20 ONLY)
ALSO THE BYTE COUNT THAT DETERMINED HOW MUCH OF THE LAST
BLOCK CONTAINED GOOD DATA WAS OFF BY ONE CAUSING A NULL BYTE
AT THE END OF THE BLOCK. (-10 AND -20)
[CURE]
(-20 ONLY) ALWAYS COPY 200 WORDS INTO THE BUFFER. THE
MONITOR WILL HAVE CLEARED ANYTHING PAST THE REAL DATA WHEN
THE IN UUO WAS DONE.
(-10 AND -20) ADD ONE TO THE BYTE COUNT.
********************************************************************************
EDIT 504 FOR APLSF
[SYMPTOM]
LARGE ASCII SEQUENTIAL DATA FILES GET CORRUPTED IN APPEND
MODE.
[DIAGNOSIS]
WHEN THE MONITOR RETURNS THE SIZE OF THE FILE IN POSITIVE
BLOCKS, RATHER THAN NEGATIVE WORDS, APLSF DOESN'T BOTHER TO
FIND OUT WHERE THE LAST BYTE IN THE FILE REALLY IS. IT
ASSUMES THE LAST BLOCK OF THE FILE IS EMPTY.
[CURE]
ALWAYS FIND OUT WHERE THE LAST BYTE IN THE FILE IS BEFORE
APPENDING.
********************************************************************************
END OF APLSF-10-V2