RE: VIC-20 basic memory start + basic stub + etc

From: Ed Johnson <ejohnson.ed_at_gmail.com>
Date: Tue, 7 Feb 2012 08:45:03 -0500
Message-ID: <2D4D1ECEB6BC490080DCDFCC39ACA9E2@dell6400>
Put the stub in both addresses? 


Best regards,
Ed Johnson
 

-----Original Message-----
From: owner-cbm-hackers@musoftware.de
[mailto:owner-cbm-hackers@musoftware.de] On Behalf Of Gábor Lénárt
Sent: Tuesday, February 07, 2012 8:31 AM
To: CBM Hackers
Subject: VIC-20 basic memory start + basic stub + etc

Hi All,

All we know the trick to use "basic stub" in our assembly projects (usually
consist of a single basic line with a SYS). On C64 the behaviour is well
known, the .prg itself starts with word $0801, etc etc.

However, now I want to play with VIC-20. Now I have the situation that I
don't really understand what address a basic prg will be loaded to. Also, I
need plenty of RAM, so I am thinking about memory expansion first (well, to
be honest it just mean some clicks in VICE - as I use emulator). But in this
case: is it really true that load address will be different? Also, I've read
that screen etc address may vary depending on the memory expansion.

Now my question: can I write a program in assembly (with the basic stub)
which works on both of unexpanded and expanded VIC-20 without any
modification? Of course only, if the program would fit into the unexpanded
VIC-20's memory :) But this means another question: if I have an expanded
VIC-20 to the max (as far as I remember something like +28K RAM is reported
by the basic startup msg) then will it be continous, that I can load a
single prg file which is sized - let's say - 25K ?

Now I've tried to save a simple BASIC program in VICE with max expansion and
without it. The first word of the basic programs:

unexpanded:  $1001
expanded:    $1201

Hmm, so according to this, it is simply not possible to do assembly projects
work with and without memory expansions? (And I don't even count the case
when video memory is at another location maybe ...)

I'm thinking on writing some simple code (which contains only PC-relative
jumps, etc) as the relocation code, which copies the rest of the code so I
have a "fixed" address then for it, regardless of the memory expansion (but
I will lose some memory then maybe about $200=512 bytes) to compensate the
difference, and also I need to handle screen address not as a constant
anymore ...

Any suggestion is welcome.

thanks,

- Gábor

       Message was sent through the cbm-hackers mailing list


       Message was sent through the cbm-hackers mailing list
Received on 2012-02-07 14:01:04

Archive generated by hypermail 2.2.0.