Re: Screen memory mapping VIC-20

From: Anders Carlsson <>
Date: Fri, 07 Jul 2017 13:12:12 +0200
Message-ID: <>
Ruud wrote:

> NOTE: When additional memory is added to block 1 (and 2 and 3),
> .eq BLK1 = $0400 ; 1 KB memory expansion
> The above means data is written to the NORMAL location for the screen
> memory and colour RAM. But the text says that this RAM is only used 
> if
> there is NO extra RAM on board. Did I miss something or is the text
> wrong?

IMHO, your auto disassembler mixes up the terms:

RAM1 = $0400 - $07FF
RAM2 = $0800 - $0BFF
RAM3 = $0C00 - $0FFF

BLK1 = $2000 - $3FFF
BLK2 = $4000 - $5FFF
BLK3 = $6000 - $7FFF
BLK5 = $A000 - $BFFF

It means if you add memory to BLK1 (usually 8K, perhaps you can add 
less than that?), the changes in memory structure happen but the 
diagnostic cartridge adds memory to RAM1, which does not prompt the 

The reason the memory layout changes at all is to ensure that BASIC has 
a continuous memory, plus that the VIC-I chip can only access onboard 
memory, not what is on the expansion bus. For a long while there was a 
misunderstanding about the VR/W signal on the bus that it would be for 
video R/W but it is not, it is just a bad naming convention of the 

So everything works as expected here. You're adding RAM to the 3K area 
which normally makes BASIC start at 1025 instead of 4097, retains the 
screen matrix at 7680 and colour memory at 38400. Actually the colour 
memory is located either at 37888 or 38400 depending on whether the 
location of the screen matrix is divisible by 1024 or not. It means even 
on an unexpanded VIC-20 if you would move the screen matrix to 7168, the 
colour memory follows along and vice versa if you would add 8K and 
reposition the screen matrix on an "odd" 512 byte boundary, the colour 
memory starts at 38400.

Best regards

Anders Carlsson

       Message was sent through the cbm-hackers mailing list
Received on 2017-07-07 12:00:02

Archive generated by hypermail 2.2.0.