Another ram expansion? Yes it is
Moderator: Moderators
- mythic66
- Vic 20 Amateur
- Posts: 41
- Joined: Sat Dec 31, 2022 1:21 pm
- Location: Canada
- Occupation: Technician
Another ram expansion? Yes it is
As cold weather coming up here, I intend to complete this little project..
There are many ram/rom expansions out in the wild, but most of them suffer from two problems ( IMO ). First, it use the expansion port, so without a port expander, your port is 'dedicate' to it. Secondly, it use dip switches to choose the amount of ram or rom slot to use( multi kernal ). For the internal expansion I saw, you have to open the 'hood' and move the dip switches.
So I come up with this board that I designed. Version 3 is coming up to fix the final hardware bugs. No solderingrequired ( if the cpu and the kernal are socketed )
The CPLD code need some work, as well as the microcontroller ( hidden under the 6502 )
The flash is 128k divided in 2 banks of 64k, subdivided in 8k slots. Why 2x64k ? Because one 64k will contain PAL ROM and the other one, NTSC. The first 4, 8k slots are reserved ( one is invisible ) for the VMMX, Kernal and Basic. Four free slots can be used, to put a diagrom, Jiffydos etc..
There's a 128k SRAM ( also hidden under the 6502 ). The first 64k is used for the RAM expansion, and the second 64k block, as 8k banked memory blocks.
The VMMX menu is coded in ASM without any kernal routine used. You can jump to the menu with a two keys combo from the Basic. You cannot jump in the menu if the kernal is not 'in use'.
More details about the banking and operation will come when it will be fully operational..
If there's any idea of feature to add, feel free to send them, it's an ongoing project so nothing is final.
There are many ram/rom expansions out in the wild, but most of them suffer from two problems ( IMO ). First, it use the expansion port, so without a port expander, your port is 'dedicate' to it. Secondly, it use dip switches to choose the amount of ram or rom slot to use( multi kernal ). For the internal expansion I saw, you have to open the 'hood' and move the dip switches.
So I come up with this board that I designed. Version 3 is coming up to fix the final hardware bugs. No solderingrequired ( if the cpu and the kernal are socketed )
The CPLD code need some work, as well as the microcontroller ( hidden under the 6502 )
The flash is 128k divided in 2 banks of 64k, subdivided in 8k slots. Why 2x64k ? Because one 64k will contain PAL ROM and the other one, NTSC. The first 4, 8k slots are reserved ( one is invisible ) for the VMMX, Kernal and Basic. Four free slots can be used, to put a diagrom, Jiffydos etc..
There's a 128k SRAM ( also hidden under the 6502 ). The first 64k is used for the RAM expansion, and the second 64k block, as 8k banked memory blocks.
The VMMX menu is coded in ASM without any kernal routine used. You can jump to the menu with a two keys combo from the Basic. You cannot jump in the menu if the kernal is not 'in use'.
More details about the banking and operation will come when it will be fully operational..
If there's any idea of feature to add, feel free to send them, it's an ongoing project so nothing is final.
Last edited by mythic66 on Wed Jan 24, 2024 5:35 pm, edited 1 time in total.
Re: Another ram expansion? Yes it is
Amazing work... This looks great.
Any idea as to how much $$$ this will be?
Any idea as to how much $$$ this will be?
- Mike
- Herr VC
- Posts: 5129
- Joined: Wed Dec 01, 2004 1:57 pm
- Location: Munich, Germany
- Occupation: electrical engineer
Re: Another ram expansion? Yes it is
Actually, I'd hope so.mythic66 wrote:No welding required [...]

BTW, that's an interesting date code (1837) on that "MOS" 65?02 CPU. :}
Re: Another ram expansion? Yes it is
The world has gone mad on chip prices. 

- mythic66
- Vic 20 Amateur
- Posts: 41
- Joined: Sat Dec 31, 2022 1:21 pm
- Location: Canada
- Occupation: Technician
Re: Another ram expansion? Yes it is
Yes, of course. I had to use SMD parts because I wanted to have the smallest footprint inside the vic20, so a 4 layers pcb
was also needed.
About the strange cpu date code, it's a batch I bought on Aliexpress, to avoid messing the 'real' 6502' in case of a failure, so
as you can see they are quite old 18th week of 1937

- Mike
- Herr VC
- Posts: 5129
- Joined: Wed Dec 01, 2004 1:57 pm
- Location: Munich, Germany
- Occupation: electrical engineer
Re: Another ram expansion? Yes it is
mythic66 wrote:No welding required [...]
Mike wrote:Actually, I'd hope so.
As I think the pun got lost on that one - there's a clear distinction between soldering and welding. Soldering is a connection method that uses low-melting materials (the solder) to connect two (usually metallic) parts but those parts can also be disconnected by heating the joint once again without a permanent change in the structure of the two parts. In contrast, welding uses much higher temperatures and involves melting up the facing sides of the two parts at least to a degree. A welded joint cannot be disconnected without at least partly destroying the two welded parts.mythic66 wrote:Yes, of course. I had to use SMD parts because I wanted to have the smallest footprint inside the vic20, so a 4 layers pcb was also needed.
In short - I wouldn't want to 'weld' anything inside my VIC-20, or on a PCB in general.
Mike wrote:BTW, that's an interesting date code (1837) on that "MOS" 65?02 CPU. :}
Well, I did not expect otherwise. You most probably have a relabeled 65C02 here.mythic66 wrote:About the strange cpu date code, it's a batch I bought on Aliexpress, [...]
- mythic66
- Vic 20 Amateur
- Posts: 41
- Joined: Sat Dec 31, 2022 1:21 pm
- Location: Canada
- Occupation: Technician
Re: Another ram expansion? Yes it is
I agree, that soldering is more accurate than welding, I should have know, I'm a professional welder. English is not my first language, so mistakes here and there can slip in.Mike wrote: ↑Tue Nov 14, 2023 6:31 ammythic66 wrote:No welding required [...]Mike wrote:Actually, I'd hope so.As I think the pun got lost on that one - there's a clear distinction between soldering and welding. Soldering is a connection method that uses low-melting materials (the solder) to connect two (usually metallic) parts but those parts can also be disconnected by heating the joint once again without a permanent change in the structure of the two parts. In contrast, welding uses much higher temperatures and involves melting up the facing sides of the two parts at least to a degree. A welded joint cannot be disconnected without at least partly destroying the two welded parts.mythic66 wrote:Yes, of course. I had to use SMD parts because I wanted to have the smallest footprint inside the vic20, so a 4 layers pcb was also needed.
In short - I wouldn't want to 'weld' anything inside my VIC-20, or on a PCB in general.
Mike wrote:BTW, that's an interesting date code (1837) on that "MOS" 65?02 CPU. :}Well, I did not expect otherwise. You most probably have a relabeled 65C02 here.mythic66 wrote:About the strange cpu date code, it's a batch I bought on Aliexpress, [...]
- mythic66
- Vic 20 Amateur
- Posts: 41
- Joined: Sat Dec 31, 2022 1:21 pm
- Location: Canada
- Occupation: Technician
Re: Another ram expansion? Yes it is
I had a question about memory banking. I want to keep it simple and not have a zillion of choices. Would it be better
to map 8k x 8 banks to a specified address BLK, or having 16k x 4 banks across 2 consecutives address BLK ( i.e BLK1-BLK2 )?
Any idea would be appreciated.
About the development, all the memory expansions as been completed and tested. I added the Write protect function for the BLK5.
I also added a CPU reset with the combining of the C= and left arrow.
to map 8k x 8 banks to a specified address BLK, or having 16k x 4 banks across 2 consecutives address BLK ( i.e BLK1-BLK2 )?
Any idea would be appreciated.
About the development, all the memory expansions as been completed and tested. I added the Write protect function for the BLK5.
I also added a CPU reset with the combining of the C= and left arrow.
- Mike
- Herr VC
- Posts: 5129
- Joined: Wed Dec 01, 2004 1:57 pm
- Location: Munich, Germany
- Occupation: electrical engineer
Re: Another ram expansion? Yes it is
Being able to map any of the 8 KB blocks in your (assumed) total of 64 KB SRAM to any of the BLKx areas would be my preferred choice, hands down.mythic66 wrote:Would it be better to map 8k x 8 banks to a specified address BLK, or having 16k x 4 banks across 2 consecutives address BLK (i.e BLK1-BLK2)?
I also think you would quickly regret that inflexibility you'd incur with any assumptions about consecutive BLKs (i.e. your second proposal).
- mythic66
- Vic 20 Amateur
- Posts: 41
- Joined: Sat Dec 31, 2022 1:21 pm
- Location: Canada
- Occupation: Technician
Re: Another ram expansion? Yes it is
So being able to map, let's say two extra 8k blocks to BLK1, and four 8k blocks to BLK2 could be a case ? I'm trying to figure out real world application and how to implement this in the CPLD with the remaining resources.
- Mike
- Herr VC
- Posts: 5129
- Joined: Wed Dec 01, 2004 1:57 pm
- Location: Munich, Germany
- Occupation: electrical engineer
Re: Another ram expansion? Yes it is
The programmer would possibly want to store the data of 5 big game levels in, say, BLK3 and keep the assignments to BLK1, BLK2 and BLK5 constant.
Jim Brain and I had discussed this topic in deep when he developed Ultimem and he truly went for maximum flexibility here. Each one of the BLK address ranges, RAMx, I/O2 and I/O3 can be mapped to any 8K area of either cartridge RAM or Flash-ROM, be write-protected in case of RAM, or not be mapped at all.
On the other end of the spectrum we have the "Super-RAM" mode of FE3. There, the 512K cartridge RAM can only be switched in whole 32K steps, which in hindsight proved very inflexible. It took years for someone to come to terms with it enough to at least write a RAM disk for it.
Jim Brain and I had discussed this topic in deep when he developed Ultimem and he truly went for maximum flexibility here. Each one of the BLK address ranges, RAMx, I/O2 and I/O3 can be mapped to any 8K area of either cartridge RAM or Flash-ROM, be write-protected in case of RAM, or not be mapped at all.
On the other end of the spectrum we have the "Super-RAM" mode of FE3. There, the 512K cartridge RAM can only be switched in whole 32K steps, which in hindsight proved very inflexible. It took years for someone to come to terms with it enough to at least write a RAM disk for it.
- mythic66
- Vic 20 Amateur
- Posts: 41
- Joined: Sat Dec 31, 2022 1:21 pm
- Location: Canada
- Occupation: Technician
Re: Another ram expansion? Yes it is
Thanks Mike for the inputs, I'm gonna go read the topic with Jim to see how it goes. I wanted to keep the banking sample to avoid too much possibility and void compatibility problem but, if the programmer can control the banking behind the curtain as he want, this may do the trick.
Also, the bank switching is not done by using the IO addresses but by "poking" the value in the BASIC address range. BASIC is a read only so no chance to mess something, and as my board is directly on the CPU bus, I can scoop the write command to the BASIC range.
Also, the bank switching is not done by using the IO addresses but by "poking" the value in the BASIC address range. BASIC is a read only so no chance to mess something, and as my board is directly on the CPU bus, I can scoop the write command to the BASIC range.
Re: Another ram expansion? Yes it is
The UltiMem is really the One And Only for the VIC so far and as far as I know no-one really utilized it yet – for just launching files from ROM its features are overkill.
A man without talent or ambition is most easily pleased. Others set his path and he is content.
https://github.com/SvenMichaelKlose
https://github.com/SvenMichaelKlose