BASIC.BWR May 1979 COPYRIGHT (C) 1977, 1979 BY DIGITAL EQUIPMENT CORPORATION, MAYNARD, MASS. THIS SOFTWARE IS FURNISHED UNDER A LICENSE AND MAY BE USED AND COPIED ONLY IN ACCORDANCE WITH THE TERMS OF SUCH LICENSE AND WITH THE INCLUSION OF THE ABOVE COPYRIGHT NOTICE. THIS SOFTWARE OR ANY OTHER COPIES THEREOF MAY NOT BE PROVIDED OR OTHERWISE MADE AVAILABLE TO ANY OTHER PERSON. NO TITLE TO AND OWNERSHIP OF THE SOFTWARE IS HEREBY TRANSFERRED. THE INFORMATION IN THIS SOFTWARE IS SUBJECT TO CHANGE WITHOUT NOTICE AND SHOULD NOT BE CONSTRUED AS A COMMITMENT BY DIGITAL EQUIPMENT CORPORATION. DIGITAL ASSUMES NO RESPONSIBILITY FOR THE USE OR RELIABILITY OF ITS SOFTWARE ON EQUIPMENT WHICH IS NOT SUPPLIED BY DIGITAL. BAS2.BWR Page 2 BASIC.BWR May 1979 1.0 INTRODUCTION Since the version 2 release has been packaged, several problems have been discovered, which are not fixed in version 2(252). The sections below discribe these problems, and include a DDT patch to fix each one. It is recommended that the patches below be installed into the version 2 package. 2.0 THE DELETE COMMAND [SYMPTOM] The DELETE command does not invalidate the compiled program so that a START command will be allowed, and a RUN command will not recompile the program. Therefore the program will be executed as though the lines deleted were not actually deleted. [DIAGNOSIS] The DELETE command does not properly invalidate the lower fork. [CURE] Make the routine SCDELETE clear the lower fork status flags TEAVLF and TEASYMTAB. The following DDT patch may be installed into version 2 to correct this problem: @ENABLE $GET SYS:BASIC $DDT DDT SCDELETE+4/ MOVEI AP,KLIN.P+1 JRST BASPAT BASPAT/ ? FX253: TRZ 40000 FX253+1/ 0 TLZ 100 FX253+2/ 0 MOVEI AP,KLIN.P+1 FX253+3/ 0 JRST SCDELETE+5 FX253+4/ 0 BASPAT: MOVE @770001$X $ MOVEM 116$X $ ^Z $SAVE SYS:BASIC.EXE 0 120 BASIC.EXE.2 Saved $DISABLE @ BAS2.BWR Page 3 3.0 STACK OVERFLOW [SYMPTOM] If a stack overflow occurs, an Illegal Instruction trap may be generated. [DIAGNOSIS] The routine that checks for a stack overflow after the BLIS10 ADD P,[n,,n] does not properly setup the AC that indicates which interrupt is to be generated. [CURE] Make sure the right half of the AC is zero. Until the next release of BASIC-PLUS-2/20, the following DDT patch can be installed. @ENABLE $GET SYS:BASOTS $DDT DDT MOVE 440006$X $ MOVEM @770001$X $ FXSTKF/ HRLI V1,LWR%IN# FX254: HRLZI V1,LWR%IN MOVE @770001$X $ MOVEM 440006$X $ ^Z $SAVE SYS:BASOTS 440 640 $DISABLE @ 4.0 PRINT USING AND THE NUL CHARACTER [SYMPTOM] Attempting to output NULs (ASCII characters having the value 0) with PRINT USING generates the error: ? 410 Illegal character in output ....... This used to work under version 1A. [DIAGNOSIS] Certain characters that change the current position of the TTY: output line (by moving the cursor other than 1 position to the right) are specified as 'special' characters, and are marked as such by an internal special character table. Attempting to print any of these characters (backspace, vertical tab, line feed, etc..) with PRINT USING generates an error as indicated above. The character NUL is included in this table because it originally performed the function of reseting the line position back to 0 (it was called EOL). However, a bug in verion 1A prevented the proper detection of some special characters, and NUL was allowed to be output by PRINT USING. For versions after 1A, we have changed the function of NUL for unformatted output to do nothing, to allow this character to be used as a harmless 'fill' or 'timing' character for video terminals that have cursor addressing. [CURE] Allow NULs to be output by PRINT USING (the TAB character is already allowed). Until some release of BASIC-PLUS-2/20 after version 2, the following DDT patch can be applied to eliminate the problem. @ENABLE $GET SYS:BASOTS $DDT DDT MOVE 440006$X $ MOVEM @770001$X $ OTSPAT/ ? FX255: AND V,R2 FX255+1/ 0 MOVEI R1,1 FX255+2/ 0 CAIN V1,0 FX255+3/ 0 SETZ R1,0 FX255+4/ 0 AND V,R1 FX255+5/ 0 JRST P.STR+1075 FX255+6/ 0 OTSPAT: P.STR+1074/ AND V,R2 JRST FX255 MOVE @770001$X $ MOVEM 440006$X $ ^Z $SAVE SYS:BASOTS 440 640 $DISABLE @