The UltiMem is
all-in-one cartridge for the Commodore Vic-20 that consists
of in-system programmable Flash ROM and RAM, enough for storing and
running almost all Vic-20 software ever produced.
The UltiMem is a spiritual successor to my Vic Flash Plugin, of which only some prototypes were built. In 2015 and 2016, I ported the software that I had originally written between 2000 and 2010.
You can try the UltiMem in VICE, starting with release 2.4.25.
The menu software automatically selects the correct RAM expansion type for program images. The selection can be influenced at image creation time.
By holding a key during hardware reset or pressing a key in the menu, you can enter the Commodore BASIC interpreter in different memory configurations:
|3||3 KiB memory expansion (
|8||24 KiB memory expansion (
If you additionally hold the SHIFT key, you can hide the configuration registers until hardware reset, for maximum compatibility with programs that write to normally unmapped address space.
The menu software is accessed by the keyboard as follows.
|a‒z||jump to the next item starting with the letter|
|A‒Z||jump to the previous item starting with the letter|
|RETURN||activate the selected item|
|SHIFT+RETURN||activate the selected item, hiding the configuration registers|
|f1‒f8||activate the menu item assigned to the key (if any)|
All software is licensed under the GNU General Public License, either
version 2 (or at your option) any later version of the license.
The 6502 software has been translated with
the XA (
The packages contain the source code and precompiled binaries.
You can test
xvic -ultimem ultimem8m-s.bin
2.4.25 or later).
flash4file.prg and a
.bin file to a
medium that is accessible from a Vic-20 that is equipped with the
UltiMem. Start the Vic-20 in unexpanded memory configuration.
flash4file.prg uses the KERNAL file routines
for loading the data, it is slow. The good news is that fastloaders
should work. If your storage device implements the JiffyDOS protocol
but your Vic-20 is not equipped with JiffyDOS, you can load an
external fastloader prior to loading and
flash4file.prg. The SJLOAD-20 release 07 comes in two precompiled variants, both
residing in extended memory. Because the UltiMem starts up in
unexpanded configuration by default, you will have to change the
memory configuration first:
Press f5 and f7, then type
Alternatively, press f5, 4, and f7, then type
Now that the fastloader is installed, you can proceed to the next step.
Load the loader:
You should see one line:
Invoke the program by typing the
SYS statement. The
first parameter is the image file name, and the second one is the
device number (0 to use the last accessed device). You can also edit
this line in place (avoid changing the length of the line!) and
The UltiMem LED will flash while the operation is in progress. You may want to turn off the screen. Even with SJLOAD-20 and sd2iec, it may take 30 to 60 minutes to program the entire 8 MiB flash.
I would like to express my thanks to the following people:
reference implementationsof bank-switched memory expansions