Re: Pointer at the start of a BASIC line: what good is it?

From: gsteemso <48bitsorbust_at_gmail.com>
Date: Sat, 30 Oct 2021 18:37:04 -0700
Message-Id: <C3A886B6-E424-4753-81AC-3314FA09E845_at_gmail.com>
Hi folks,

On Oct 29, 2021, at 4:19 PM, Ethan Dicks <ethan.dicks_at_gmail.com> wrote:
> On Fri, Oct 29, 2021 at 6:32 PM Marc Rintsch <marc_at_rintsch.de> wrote:
>> On 29.10.21 23:50, André Fachat wrote:
>>> Doesn't BASIC recalculate the pointer when it loads the file? So it does
>>> not matter what the link address is on disk.
>>> Or for what these bytes were used when saved...
>> 
>> Yes, the actual values in the saved file don't matter.  So if
>> compatibility with the tokenised format is important one must
>> recalculate those values.
> 
> I believe that's true for the VIC-20 and C-64 but not for the PET.
> I.e., you can load a program with pointers from any base address into
> a VIC-20 or C-64 and just "RUN", but the PET will load at the load
> address and not recalculate (nor repoint).

As far as I am aware, this is correct... _mostly_.

I believe the distinction is something like, if you do a {LOAD "file",unit} the above behaviours apply; if, on the other hand, you do a {LOAD "file",unit,1} then newer-model BASICs will blindly honour the load address stored in the file (extremely useful for machine-language code).

The two behaviours are made less obscure via new keywords in BASICs 4.7 and 7 (the BLOAD and DLOAD commands).

Analyzing the exact behaviour of a bare LOAD command, vs. one which explicitly states the normally-implied secondary address of zero, vs. one with a secondary address of one, is greatly complicated by the distinction between how a specific version of BASIC interprets it and how any specific IEEE-488 or Commodore Serial Bus device will interpret it.

G.
Received on 2021-10-31 03:00:03

Archive generated by hypermail 2.3.0.