Trailing-Edge
-
PDP-10 Archives
-
BB-L014E-BM
-
autopatch/b20v2a.d04
There are no other files named b20v2a.d04 in the archive.
EDIT DESCRIPTIONS FOR BASIC-PLUS-2-V2A
EDIT 321 FOR BASIC
[SYMPTOM]
Multiple assignments of virtual array variables are done
incorrectly when using BASIC conversion functions.
[DIAGNOSIS]
The register (VREG) used to store the resultant of the right
side expression may be trashed by the OTS.
Routine ATLETARRAY checks for multiple assignments of array
variables that use VREG to instruct the code generator to
use another register. This routine was incorrectly checking
for these conditions.
[CURE]
Change routine to correctly check for these conditions.
Until the next release of BASIC-PLUS-2/20 the following DDT
patch representing edit 321 may be installed into
BASIC-PLUS-2/20 version 2(252).
@
@ENABLE
$GET SYS:BASIC.EXE
$DD
DDT
ATLETARR+15/ CAME V1,CLET.L+12 FX321: CAIE V1,1<CR>
^Z
$SAVE SYS:BASIC.EXE 0 437
$DISABLE (CAPABILITIES)
@
********************************************************************************
EDIT 322 FOR BASIC
[SYMPTOM]
The following program blows up with the error
? 126 No more memory available at line 00290 of CIN.
00100 !Here we just take up some memory
00110 A$ = STRING$(2%**18%-1%,100%)
00120 B$ = STRING$(2%**18%-1%,100%)
00130 C$ = STRING$(2%**17%,100%)
00140 D$ = STRING$(2%**15%,100%)
00150 !
00160 ! Repeatedly call the subprogram
00170 !
00180 CALL CIN
00190 C% = C% + 1%
00200 IF C% - ((C%/500%)*500%) = 0% THEN PRINT C%
00210 GOTO 180
00220 END
00230 !
00240 SUB CIN
00250 !
00260 ! This subprogram creates a local string array which
00270 ! should be deleted on leaving the subprogram
00280 !
00290 B$(1%) = ' ' + ' '
00300 SUBEND
[DIAGNOSIS]
The string descriptors in the string array are not
being properly zeroed and deleted by the string deletion
routine. This routine expects to receive only string
descriptors as arguments; in this case, however, an array
descriptor is being passed. The array descriptor is being
treated as a static string descriptor and is zeroed; the
descriptors within the array are not affected and the
storage is not freed. Thus, the repeated calls to CIN
gradually eat up available memory.
[CURE]
The string deletion routine should not assume that
every argument is a string descriptor, but should check each
argument type. If a string descriptor appears it should be
deleted normally; string arrays should have every element
zeroed.
Until a future release of BASIC-PLUS-2/20, the
following DDT patch, representing edit 322, may be installed
in version 2(252).
@ENABLE
$GET SYS:BASOTS
$DDT
DDT
MOVE 440006$X
<>
MOVEM @770001$X
<>
DELTST/ ADJSP P,V FX322A: HLL AP,-1(AP)<LF>
FX322A+1/ HLL AP,-1(AP) JUMPGE AP,FX322D#<LF>
FX322A+2/ JUMPGE AP,DLRET# FX322B: LDB 1,FX322K#<LF>
DL1#/ MOVEI V,@0(AP) CAIN V,0<LF>
DL1#+1/ HLRZ V1,V(V) JRST FX322E#<LF>
DL1#+2/ CAIG V1,P CAIN V,1<LF>
DL1#+3/ JRST DL2# JRST FX322F#<LF>
DL1#+4/ SOS 0(V1) JRST ER$INT<LF>
DL1#+5/ MOVE V,0(V1) FX322C: AOBJN AP,FX322B<LF>
FX322C+1/ JUMPL V,ER$INT# FX322D: MOVE AP,-1(CF)<LF>
FX322D+1/ JUMPN V,DL2# POPJ P,<LF>
FX322D+2/ MOVEI V,@0(AP) 0<CR>
OTSPAT/ ? FX322E: MOVEI R1,@(AP)<LF>
FX322E+1/ 0 PUSHJ P,FX322I#<LF>
FX322E+2/ 0 JRST FX322C<LF>
FX322E+3/ 0 FX322F: ADJSP P,2<LF>
FX322F+1/ 0 MOVEI V,@(AP)<LF>
FX322F+2/ 0 MOVE V1,4(V)<LF>
FX322F+3/ 0 IMULI V1,2<LF>
FX322F+4/ 0 MOVE V,3(V)<LF>
FX322F+5/ 0 ADD V1,V<LF>
FX322F+6/ 0 FX322G: MOVE R1,V<LF>
FX322G+1/ 0 SKIPN (R1)<LF>
FX322G+2/ 0 JRST FX322H#<LF>
FX322G+3/ 0 MOVEM V,(P)<LF>
FX322G+4/ 0 MOVEM V1,-1(P)<LF>
FX322G+5/ 0 PUSHJ P,FX322I#<LF>
FX322G+6/ 0 MOVE V1,-1(P)<LF>
FX322G+7/ 0 MOVE V,(P)<LF>
FX322G+10/ 0 FX322H: ADDI V,2<LF>
FX322H+1/ 0 CAMG V,V1<LF>
FX322H+2/ 0 JRST FX322G<LF>
FX322H+3/ 0 ADJSP P,-2<LF>
FX322H+4/ 0 JRST FX322C<LF>
FX322H+5/ 0 FX322I: ADJSP P,2<LF>
FX322I+1/ 0 HLRZ V1,1(R1)<LF>
FX322I+2/ 0 CAIG V1,17<LF>
FX322I+3/ 0 JRST FX322J#<LF>
FX322I+4/ 0 SOS (V1)<LF>
FX322I+5/ 0 MOVE V,(V1)<LF>
FX322I+6/ 0 JUMPL V,ER$INT<LF>
FX322I+7/ 0 JUMPN V,FX322J#<LF>
FX322I+10/ 0 MOVEM R1,DTSRC<LF>
FX322I+11/ 0 MOVEM AP,(P)<LF>
FX322I+12/ 0 MOVEI AP,DTARG<LF>
FX322I+13/ 0 MOVEM R1,-1(P)<LF>
FX322I+14/ 0 PUSHJ P,DELETE<LF>
FX322I+15/ 0 MOVE R1,-1(P)<LF>
FX322I+16/ 0 MOVE AP,(P)<LF>
FX322I+17/ 0 FX322J: SETZB V,V1<LF>
FX322J+1/ 0 DMOVEM V,(R1)<LF>
FX322J+2/ 0 ADJSP P,-2<LF>
FX322J+3/ 0 POPJ P,<LF>
FX322J+4/ 0 FX322K: 350316,,0<LF>
FX322J+5/ 0 OTSPAT: <CR>
MOVE @770001$X
<>
MOVEM 440006$X
<>
^Z
$SAVE SYS:BASOTS 440 640
$DISABLE
@
********************************************************************************
EDIT 323 FOR BASIC
[SYMPTOM]
PRINT USING "##.##", -0.001
yields -0.00 instead of 0.00.
[DIAGNOSIS]
BASIC+2 is truncating the number before printing,
rather than rounding the number to 0 and dropping the sign.
[CURE]
Until a future release of BASIC-PLUS-2/20, the
following DDT patch, representing edit 323, may be installed
in version 2(252).
@ENABLE
$GET SYS:BASOTS
$DDT
DDT
MOVE 440006$X
<>
MOVEM @770001$X
<>
DCODE6+7/ DPB 11,RNDHGH#+35 FX323A: JRST FX323C#<LF>
FX323A+1/ TRNE R1,1 FX323B: <CR>
OTSPAT/ 0 FX323C: DPB 11,RNDHGH#+35<LF>
FX323C+1/ 0 TRNE R1,1<LF>
FX323C+2/ 0 PUSHJ P,FX323D#<LF>
FX323C+3/ 0 JRST FX323B<LF>
FX323C+4/ 0 FX323D: MOVN 11,R1(CF)<LF>
FX323D+1/ 0 JUMPL 11,FX323F#<LF>
FX323D+2/ 0 CAMLE 11,V(CF)<LF>
FX323D+3/ 0 JRST FX323E#<LF>
FX323D+4/ 0 CAMN 11,V(CF)<LF>
FX323D+5/ 0 CAMLE 12,FX323G#<LF>
FX323D+6/ 0 JRST FX323F#<LF>
FX323D+7/ 0 FX323E: TRZ R1,1<LF>
FX323E+1/ 0 FX323F: POPJ P,<LF>
FX323F+1/ 0 FX323G: 177777,,777777<LF>
FX323G+1/ 0 OTSPAT: <CR>
MOVE @770001$X
<>
MOVEM 440006$X
<>
^Z
$SAVE SYS:BASOTS 440 640
$DISABLE
@
********************************************************************************
EDIT 324 FOR BASIC
[SYMPTOM]
BASIC+2/20 dies with error 126, "No more memory available", when a
subroutine contains local string array references.
[DIAGNOSIS]
BASIC+2 is not freeing the memory allocated to the local string
arrays. The string deletion routine expects only scalar strings,
not arrays of strings, and the strings are not really deleted.
[CURE]
Make the string deletion routine distinguish between simple strings
and arrays of strings and handle each one differently.
Until a future release of BASIC-PLUS-2/20, the
following DDT patch, representing edit 324, may be installed
in version 2.1(320).
@ENABLE
$GET SYS:BASOTS
$DDT
DDT
MOVE 440006$X
<>
MOVEM @770001$X
<>
DELTST/ ADJSP P,V FX324A: HLL AP,-1(AP)<LF>
FX324A+1/ HLL AP,-1(AP) JUMPGE AP,FX324D#<LF>
FX324A+2/ JUMPGE AP,DLRET# FX324B: LDB 1,FX324K#<LF>
DL1#/ MOVEI V,@0(AP) CAIN V,V<LF>
DL1#+1/ HLRZ V1,V(V) JRST FX324F#<LF>
DL1#+2/ CAIG V1,P JRST FX324E#<LF>
DL1#+3/ JRST DL2# FX324C: AOBJN AP,FX324B<LF>
FX324C+1/ SOS 0(V1) FX324D: MOVE AP,-1(CF)<LF>
FX324D+1/ MOVE V,0(V1) POPJ P,<LF>
FX324D+2/ JUMPL V,ER$INT# 0<CR>
OTSPAT/ ? FX324E: MOVEI R1,@(AP)<LF>
FX324E+1/ 0 PUSHJ P,FX324I#<LF>
FX324E+2/ 0 JRST FX324C<LF>
FX324E+3/ 0 FX324F: ADJSP P,2<LF>
FX324F+1/ 0 MOVEI V,@(AP)<LF>
FX324F+2/ 0 MOVE V1,4(V)<LF>
FX324F+3/ 0 IMULI V1,2<LF>
FX324F+4/ 0 MOVE V,3(V)<LF>
FX324F+5/ 0 ADD V1,V<LF>
FX324F+6/ 0 FX324G: MOVE R1,V<LF>
FX324G+1/ 0 SKIPN (R1)<LF>
FX324G+2/ 0 JRST FX324H#<LF>
FX324G+3/ 0 MOVEM V,(P)<LF>
FX324G+4/ 0 MOVEM V1,-1(P)<LF>
FX324G+5/ 0 PUSHJ P,FX324I#<LF>
FX324G+6/ 0 MOVE V1,-1(P)<LF>
FX324G+7/ 0 MOVE V,(P)<LF>
FX324G+10/ 0 FX324H: ADDI V,2<LF>
FX324H+1/ 0 CAMG V,V1<LF>
FX324H+2/ 0 JRST FX324G<LF>
FX324H+3/ 0 ADJSP P,-2<LF>
FX324H+4/ 0 JRST FX324C<LF>
FX324H+5/ 0 FX324I: ADJSP P,2<LF>
FX324I+1/ 0 HLRZ V1,1(R1)<LF>
FX324I+2/ 0 CAIG V1,17<LF>
FX324I+3/ 0 JRST FX324J#<LF>
FX324I+4/ 0 SOS (V1)<LF>
FX324I+5/ 0 MOVE V,(V1)<LF>
FX324I+6/ 0 JUMPL V,ER$INT<LF>
FX324I+7/ 0 JUMPN V,FX324J#<LF>
FX324I+10/ 0 MOVEM R1,DTSRC<LF>
FX324I+11/ 0 MOVEM AP,(P)<LF>
FX324I+12/ 0 MOVEI AP,DTARG<LF>
FX324I+13/ 0 MOVEM R1,-1(P)<LF>
FX324I+14/ 0 PUSHJ P,DELETE<LF>
FX324I+15/ 0 MOVE R1,-1(P)<LF>
FX324I+16/ 0 MOVE AP,(P)<LF>
FX324I+17/ 0 FX324J: SETZB V,V1<LF>
FX324J+1/ 0 DMOVEM V,(R1)<LF>
FX324J+2/ 0 ADJSP P,-2<LF>
FX324J+3/ 0 POPJ P,<LF>
FX324J+4/ 0 FX324K: 350316,,0<LF>
FX324J+5/ 0 OTSPAT: <CR>
MOVE @770001$X
<>
MOVEM 440006$X
<>
^Z
$SAVE SYS:BASOTS 440 564
$DISABLE
@
If the DDT patch for edit 322 has already been installed,
it may be corrected to represent edit 324 by the following
patch.
@ENABLE
$GET SYS:BASOTS
$DDT
DDT
MOVE 440006$X
<>
MOVEM @770001$X
<>
DL1#/ MOVEI V,@0(AP) FXX324: CAIN V,V<LF>
DL1#+1/ HLRZ V1,V(V) JRST FX322F#<LF>
DL1#+2/ CAIG V1,P JRST FX322E#<LF>
DL1#+3/ JRST DL2# 0
DL1#+4/ SOS 0(V1) 0
MOVE @770001$X
<>
MOVEM 440006$X
<>
^Z
$SAVE SYS:BASOTS 440 564
$DISABLE
@
********************************************************************************
EDIT 325 FOR BASIC
[SYMPTOM]
Product would'nt LINK when using Autopatchable type
MAKLIB libaries.
[DIAGNOSIS]
Symbol BASVER (basic version number) was globally
defined in more than one module.
[CURE]
Change global definition of BASVER to a local symbol in
all modules currently using it except IOFCNS and KCMAIN.
********************************************************************************
END OF BASIC-PLUS-2-V2A