Google
 

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