[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Bug in Integer BASIC (strings longer than 250 chars crash)



"John B. Matthews" <nospam@nospam.invalid> wrote in message 
nospam-B299AB.00422225092009@news.aioe.org">news:nospam-B299AB.00422225092009@news.aioe.org...
> In article
> <079d7945-5dc1-4823-a916-32349020f01b@g6g2000vbr.googlegroups.com>,
> cmosher01 <cmosher01@gmail.com> wrote:
>
>> I just stumbled across a bug in APPLE ][ Integer BASIC. See this
>> sample session:
>>
>> >LIST
>>    10 DIM A$(255)
>>    20 FOR I=1 TO 251
>>    25 A$(I)="A"
>>    30 NEXT I
>>    31 PRINT "CRASH:"
>>    35 A$=A$
>>    40 END
>>
>> >RUN
>> CRASH:
>>
>> E67B-    A=E9 X=1E Y=00 P=F0 S=F8
>> *
>>
>> I can't find any reference to this bug... anyone else ever run 
>> across
>> it? It seems to exist both in the original Apple ][ ROMs, and in 
>> the
>> INTEGER BASIC that's on the DOS 3.3 system master disk (which I 
>> know
>> has some other bug fixes). It seems that anytime you fill up a 
>> string
>> variable with more than 250 characters, and try to access it, it 
>> just
>> crashes.
>
> No, but I can see it remaining obscure. The Red Book says string 
> arrays
> can have length 1-255, but printing past index 250 crashes. I can 
> see
> the "X" after all the "A"s in low memory at $8FF.
>
>>LIST
>   10 DIM A$(255)
>   20 FOR I=1 TO 250
>   30 A$(I)="A"
>   40 NEXT I
>   50 PRINT A$
>   60 A$(251)="X"
>   99 END
>
>>RUN
> AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
> AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
> AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
> AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
> AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
> AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
> AAAAAAAAAA
>
>>PRINT A$
>
> E67C-    A=F9 X=1E Y=00 P=F0 S=F7
> *`
>

Even this crashes:

10 DIM A$(255)
20 FOR I = 1 TO 252
30 A$(I) = "A"
40 NEXT I
50 END

252 characters and no printing.

Charlie