Jump to content
IGNORED

Mini VIC-20 32K RAM expansion hides in your cartridge port.


k3ys

Recommended Posts

Hello all,

I'm new here. I like to work with hardware and I've been working on tricking out my VIC-20. I've built a tiny little 32KB RAM expansion that fits inside the cartridge port.
It's based on Adam Bergström's circuit from '95 ftp://www.zimmers.net/pub/cbm/documents/projects/memory/vic20/32kB.html. But, I've added DIP switches to it to select how much RAM is enabled. There's a whole cart Enable switch and a Read-only switch for helping to run copy-protected cartridge images.
I had a few PCBs made and kept one for myself (of course). I have 7 left for sale on eBay: http://www.ebay.com/itm/331602184425if you're interested.
I'll be happy to try and answer any questions you might have about it.
Cheers!
board.jpg
inserted.jpg
  • Like 4
Link to comment
Share on other sites

Adam's trick with the middle priority decoder bits is clever and let's you decode the BLK signals with one chip. That bottom 3K has three different signal lines so you'd need to OR those together, but since the are active low and the output is active low a 7421 4-input AND would work. And yeah, you're talking about trading spaces with $A000.

  • Like 1
Link to comment
Share on other sites

  • 2 weeks later...

Personally, I have all the RAM expansions that I need, but this really is a great product for all other VIC-20 users who neither have a memory expansion nor any more advanced multi/flashcart. The addition of a 3K mode makes it truly universal, and at a very affordable price! I'll share the link!

  • Like 1
Link to comment
Share on other sites

Neat expansion indeed! Will probably run anything for the VIC apart from Doom which needs 35K and as such cannot share the 3K-RAM-Block with $a000.

 

How difficult/more expensive would it be to create a "full" 35K expansion that does not share the BLK5 with 3K-RAM? I realize you use a 32K-RAM chip but how much more expensive would a 64K-RAM chip be even if you just use a little more of it?

 

Also: There is still an area of 2K at $9800-$a000 that can take RAM if you want to. I've hacked a 3K-expansion to do so. I use this together with a 32K-expansion and a 3K-expansion in a slot-expander, so effectively you can have a 37K expansion of your VIC :-) The area at $9800 can take a fast-loader like SoftJiffy (SJLOAD) and be nearly undisturbed by any other software.

Edited by tokra
  • Like 1
Link to comment
Share on other sites

Neat expansion indeed! Will probably run anything for the VIC apart from Doom which needs 35K and as such cannot share the 3K-RAM-Block with $a000.

 

How difficult/more expensive would it be to create a "full" 35K expansion that does not share the BLK5 with 3K-RAM? I realize you use a 32K-RAM chip but how much more expensive would a 64K-RAM chip be even if you just use a little more of it?

 

Also: There is still an area of 2K at $9800-$a000 that can take RAM if you want to. I've hacked a 3K-expansion to do so. I use this together with a 32K-expansion and a 3K-expansion in a slot-expander, so effectively you can have a 37K expansion of your VIC :-) The area at $9800 can take a fast-loader like SoftJiffy (SJLOAD) and be nearly undisturbed by any other software.

 

I'm not sure I could handle wasting that much RAM! Heheh. If I did do a board with a 64K chip on it, I'd do something that would let you bank all of it wherever you like, even switch banks in and out using an I/O register.

Link to comment
Share on other sites

 

I'm not sure I could handle wasting that much RAM! Heheh. If I did do a board with a 64K chip on it, I'd do something that would let you bank all of it wherever you like, even switch banks in and out using an I/O register.

 

That just might be enough to make get the VIC 20 out of the closet. I was almost ready to order one of the 32K carts, but I can wait for a 64K

Link to comment
Share on other sites

A lot of games. Remember an unexpanded VIC only has 5.5K RAM, of which 3.5K available to user programs.

 

To start with something simple, if you would come across dumps of cartridge games, the only way to load those into a VIC is to have a memory expansion to cover the same memory block as otherwise used by the cartridge. A generic 16K cartridge usually is not able to do this, but this 32K cartridge can be configured to support this, and even a read only switch for protected games. With way more than 150 cartridge games, that is a good start.

 

Then of course you have all the regular games that require 3K, 8K or 16K expansion. I don't have an exact figure, but you should easily be able to find a couple hundred games here, in particular if you consider type-ins, public domain, modern homebrew and similar. As noted, very few games require 24K or more, but the third block of 8K is in its turn very commonly used for the cartridge games mentioned above, thus an expansion like this covers all blocks.

  • Like 1
Link to comment
Share on other sites

  • 5 weeks later...

Interesting. I am not sure if 32K can be used by Basic, think the VIC-20 had a 32K limit, and cannot use memory beyond a certain point for programmer. I heard about RAM expansion modifications or cartridges that use everything outside the Kernel ROM area. In theory, 64K RAM can be mapped and usable if there was a way to disable the Kernel ROM. Like the Atari XL/XE did with setting bit 0 to 1 at $D301 (54017, PORTB) that disables the OS ROM.

 

I have 2 Vic-20 computers here and going to be transferring files off of old tapes and disks to my PC. Still need to order something that interfaces the hardware like that ZoomFloppy thing, unless there is something that networks a Commodore to PC that someone knows about.

Link to comment
Share on other sites

  • 2 years later...

Just bumping this old thread to mention that I bought one of these last week, and was able to play with it over the weekend. It works great, though I neglected to note that Doom requires a 35K expansion to run. (k3ys, if you're reading this, I'd totally purchase an upgrade to a design that includes a second 4K chip to max out the RAM. Is Doom the only game that requires such a config?)

 

I've had some degree of success running cartridge images loaded from "disk" (Pi1541), though 8K images that only use the A000 bank seem most reliable. I suspect the other RAM banks might be getting fiddled by BASIC. Things I've tried: boot the Vic with only the needed RAM banks enabled, boot with the expansion disabled, then enable it after BASIC has already done its memory mapping, and setting the read-only switch after loading. Some 16K ROMs work okay, some would crash after a bit. Not sure if any of the games are relying on mirroring of the ROM by ignoring certain address lines on the cartridge port.

 

Disk/PRG games seem fine; I played a bit of Sword of Fargoal without issue. The BASIC memory test program included in the manual reported no problems. I'll have to try out Realms of Quest III to really put it through its paces.

 

My Vic is a bit fussy about booting with the expansion enabled, and will often hang on a black screen. I can't tell if it's a power issue; it seems like it boots more consistently when I disconnect the Pi1541 from the serial port. I've only tried that a few times, so that's merely anecdotal so far.

Link to comment
Share on other sites

k3ys writes in his eBay auction:

 

Switches 3,4,5,6 DOWN and 7 UP -- 32KB mode (BLK1,BLK2,BLK3,BLK5)

Switches 3,4,5 DOWN and 6,7 UP -- 24KB mode (BLK1, BLK2, BLK3)

Switches 3,4 DOWN and 5,6,7 UP -- 16KB mode (BLK1, BLK2)

Switches 3 DOWN and 4,5,6,7 UP -- 8KB mode (BLK1)

Switches 7 DOWN and 3,4,5,6 UP -- 3K mode (RAM1-3)

I suppose it means if you have switches 3 and 7 UP and switches 4, 5, 6 DOWN you will enable RAM in block 2, 3 and 5 but not in block 1 which means the VIC won't detect it when you power it on, but it is still there for you to POKE and PEEK at.

 

16K cartridge games usually load into block 5 ($A000) and block 3 ($6000). Scott Adams' adventures load into block 2 ($4000) and block 3. A select few 16K games load into block 1 ($2000) and 5, which causes an issue here as you both want block 1 disabled on power on, and enabled later on. You might need to NEW after loading the first half of a 16K game, in case the BASIC pointers have been altered.

 

Does the Pi use its own power or does it draw from the computer just like SD2IEC does? I don't know if the Pi would be more power hungry.

Edited by carlsson
Link to comment
Share on other sites

k3ys writes in his eBay auction:

 

 

I suppose it means if you have switches 3 and 7 UP and switches 4, 5, 6 DOWN you will enable RAM in block 2, 3 and 5 but not in block 1 which means the VIC won't detect it when you power it on, but it is still there for you to POKE and PEEK at.

 

16K cartridge games usually load into block 5 ($A000) and block 3 ($6000). Scott Adams' adventures load into block 2 ($4000) and block 3. A select few 16K games load into block 1 ($2000) and 5, which causes an issue here as you both want block 1 disabled on power on, and enabled later on. You might need to NEW after loading the first half of a 16K game, in case the BASIC pointers have been altered.

 

Does the Pi use its own power or does it draw from the computer just like SD2IEC does? I don't know if the Pi would be more power hungry.

 

 

The Pi is using its own power supply, 2.1 A, which I'm sure it wouldn't be able to get from the serial port.

 

Interesting idea about leaving the $2000 bank disabled, though a few 16K ROMs use that bank. I was booting the VIC with the main expansion-enable switch disabled (SW2, I think it was), so basic would show the usual ~2900 bytes free, then I would flip SW2 to enable the RAM and load the images. I would start with the A000 ROM (since BASIC is less likely to be doing anything inside the ROM block), then do NEW, and load the lower block (6000, 2000, or whichever), flip the write-protect switch on the memory board (SW1), then hit the reset button. Some games seemed to work just fine, like Robotron, for example. Arachnoid would often crash after a minute or two.

Link to comment
Share on other sites

3583 bytes free. :)

Dunno about Arachnoid. I just tested in emulation set to NTSC, enabled RAM in blocks 2, 3 and 5 and loaded the two parts from a disk image. The game starts as it should and I played something like 5-6 levels until I got 43809 points, so at least it didn't crash in emulation under similar conditions as yours.

Link to comment
Share on other sites

Hi David,

 

The issue with the black screen is probably the same VIC-20 quirk as with a regular 1541. The 1541 puts residual power on the IEC reset line which back feeds into the cartridge port through a pull-up resistor. Its not much current but it is enough to cause modern low power RAM chips to hold their contents even when the VICs Power is off.

 

Holding the cart reset button for a second or two while the VIC is turned off shunts that current to ground and clears the cart memory.

 

Im not sure it this is the case for the Pi1541 but theres a good chance thats the whats causing the black screen.

Link to comment
Share on other sites

Ah, that could very well be. The Pi1541 is just a 3.3V/5V bi-directional level shifter strapped to some GPIO pins on the Raspberry Pi, so it's probably feeding some pull-up current into the bus. I'll try the reset button experiment later. Thanks for the tip.

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...