On Wednesday, April 11, 2018 at 12:33:17 PM UTC+2, Shaun Bebbington wrote:
> Hi,
>
> I found something odd today in the powerful CBM BASIC v2.0.
>
> Having worked with Sinclair BASIC quite a lot recently, I use GOTO X where X
is a valid line number (i.e., LET X = 100). But I know that's not possible with
Microsoft BASIC. Of course there is the ON X GO TO 100,200 ...
>
> So I thought "I know, I'll try and use a function, could CBM BASIC use this
as a look up table". The following, I expected to go to the value in the
function A() which returns 10, but...
>
> 0 DEF FN A(X) = 10
> 1 PRINT FN A(0)
> 2 GO TO FN A(0)
> 3 PRINT "END GRACEFULLY"
> 4 END
> 10 PRINT "STOP"
> 11 STOP
>
> Try it for yourself. What's going on here?
>
> Thanks in advance.
>
> Shaun.
I went the "hard" way and traced what happens using VICE's monitor's 'z'
command. I recommend that you do the same, consulting a commented BASIC ROM
listing if necessary.
But there's a much easier way to get the idea: Let your programs start at line
1 instead of 0.
Chris
--- SoupGate-Win32 v1.05
* Origin: Agency HUB, Dunedin - New Zealand | FidoUsenet Gateway (3:770/3)
|