hosted by guitarsite.de


VIC-20 Hyper Expander

Content
Introduction
RAM Blocks
The EPROM
Assembly
Mapping Video RAM to the Hyper Expander
Older Revisions
Software packets
Repository

Introduction
The VIC-20 Hyper Expander is a successor of the VIC-20
Super Expander II. The six 2114 /(1k x 4bit) RAMs are hard to get and expensive. The Hyper Expander utilizes 32k x 8bit RAMs (Rev. 0 one 62256, the later revisions two 62256), which are still produced (2021). The Hyper Expander is not intended as a competitor for the tfw8bit Penultimate Cartridge, but as a simple to build (through hole components only) cartridge board, which can be used in multiple configurations, offering the best price.



Hyper Expander Rev. 2 with full RAM and one EPROM (27C512 = 8x 8kB = eight cartridges)
RAM Blocks
The RAM resides in two 32kB SRAM ICs (62256). Not all of the RAM can be used. The low RAM holds the 3kB ($0400-$0FFF), and three 8kB blocks (@$2000, $4000 and $6000), which can be activated with a jumper, solder bridge or DIP-Switch. The HIGH RAM contains 8kB @ $A000 and 1kB each at $9800 and $9C00). A RAM block at every available chip select on the Expansion port, which total 37kB.

The free RAM Bytes displayed on start-up are the free BASIC RAM. The BASIC RAM has to be coherent, there must not be any gaps. with a 3kB memory expansion, the screen RAM is at the end of the total RAM. With an 8kB, 16kB or 24kB RAM expansion, the BASIC RAM is above the screen RAM, which starts at $1000. The 3kB below are not displayed as BASIC memory, but it can be accessed with a machine language program (or peek and poke in BASIC).

Also the 1kB @ $9800, 1kB @ $9C00 and 8kB @ $A000 are present, can be accessed but are not dispalyed as free BASIC RAM.

Switch
Chip Select
RAM Address
Note
1
/BLK1
$2000 - $3FFF
First 8k Expansion, BASIC RAM
2
/BLK2
$4000 - $5FFF
Second 8k Expansion, BASIC RAM
3
/BLK3
$6000 - $7FFF
Third 8k Expansion, BASIC RAM
4
3kB
$0400 - $0FFF
BASIC RAM (without any 8k Expansions)
5
/BLK5
$A000 - $BFFF
8kB, no BASIC RAM, machine language only
6
/IO2
$9800 - $9BFF
1kB, no BASIC RAM, machine language only
7
/IO3
$9C00 - $9FFF
1kB, no BASIC RAM, machine language only

The DIP-Switch
SW2 configures the RAM.

1
/BLK1
2
/BLK2
3
/BLK3
4
3kB
5
/BLK5
6
/IO2
7
/IO3
8
J2
BASIC BYTES FREE/
Expansion Size
OFF
X
X
ON
X
X
X
I
6655 / 3kB
ON
OFF
X
X
X
X
X
I
11775 / 8kB
ON
ON
OFF
X
X
X
X
I
19967 / 16kB
ON
ON
ON
X
X
X
X
I
28159 / 24kB
ON
ON
ON
ON
ON
ON
ON
I
28159 / 37kB (24k for BASIC)

I: The 8k- RAM Block attached to J2 is irrelevant
X: does not appear as BASIC RAM. If ON, it is accessible for machine language (and peek and poke).

The EPROM
The DIP-switch SW3 configures the EPROM.

A15
SW3-3
A14
SW3-2
A13
SW3-1
A15
A14
A13
EPROM Offset Address
ON
ON
ON
L
L
L
$0000 - $1FFF
ON
ON
OFF
L
L
H
$2000 - $3FFF
ON
OFF
ON
L
H
L
$4000 - $5FFF
ON
OFF
OFF
L
H
H
$6000 - $7FFF
OFF
ON
ON
H
L
L
$8000 - $9FFF
OFF
ON
OFF
H
L
H
$A000 - $BFFF
OFF
OFF
ON
H
H
L
$C000 - $DFFF
OFF
OFF
OFF
H
H
H
$E000 - $EFFF


Do not confuse the
EPROM Offset Address with the address, that the EPROM contect shows up in the VIC-20 Memory Map (the VIC-20 address). The latter is determined by the Chip Selects.

SW3
Chip Select
VIC-20 Address
EPROM
-6
/BLK1
$2000 - $3FFF
IC2
-4
/BLK2
$4000 - $5FFF
IC1
-7
/BLK3
$6000 - $7FFF
IC2
-5
/BLK5
$A000 - $BFFF
IC1

The mapping of the chip selects to the ICs is also a Super Expander heritage. It makes sense, though, since the 16kB cartridges, which I know, fit into this combination. I assume, that the Super Expander board was used for several different cartridges by Commodore (the 8k games have been on a smaller, dedicated board).

In Rev. 2 all chip selects can be mapped to one EPROM due to the
SW3-8 (/CS1=/CS2). This switch connects both chip selects together. This allows to use software in the IC1 socket, that is usually made for the IC2 socket.

It is possible to combine 2 EPROMs for 16kB cartridges. Using two EPROMs for that is matter of the Super Expander heritage. I am aware of other possible solutions, which might get integrated in further revisions.

The
Software Size should be set to 8kB by default. Usually, this can be done with a solder bridge on JP1. In some cases, it might be desirable to set the software size to 4k. Here is an excerpt from the VC-1020 (multi module box) manual:


It shows, that the Super Expander cartridge can be combined with the VIC-20 IEEE 488 interface. The Super Expander software is just 4k, but one EPROM memory bank is 8k, which would conflickt with the IEEE-488 EPROM.. In case JP1 is set to 4k, the upper 4k of each memory nbank are not visible to the CPU and there is no conflict with the other 4kB EPROM @ $B000 - $BFFF.

In Column B and C, two mere software cartridges (a machine language monitor @ $6000 - $6FFF and the programmers aid pack @ $7000 - $7FFF) are combined. If this is desired, both can be merged to one 8kB memory bank - like the Super Expander software and the VIC-MON in the
software packs.

Assembly
The Hyper Expander can be used in several different configurations, which can have a reduced BOM, because not all parts are required for the particular use case.

The standard configuration is a full assembly with one EPROM and both RAMs for an 8kB software with maximum RAM.


Standard configuration: two RAMs and one EPROM.



Hyper Expander with two EROMs, but no RAMs


For game cartridges, usually no extra RAM is required, but for a 16kB ROM tool, like the Micro Assembler, so additional RAM would be fine.Since the 2nd EPROM is in the place of the HIGH RAM (1kB@$9800, 1kB@$9c00 and 8kB@$A000), the 74LS148 encoder IC6 is not requires, as is the coresponding 100n cap C4. The DIP-Switch SW2 also requires just 4 switches instead of 8.


Hyper Expander with two EPROMs and Low RAM


Also, a configuration with RAM only is possible. This does not require an EPROM socket, C1 the resistor network RN2 and the DIP-Switch can stay unassembled.


Hyper Expander with RAM only

The minimal configuration would be one EPROM IC1, the buffer cap C1, the resistor network RN2 (or maybe not, in case the EPROM is a 27C512 and the software is in memory bank $0000 - $1FFF (A15, A14, A13 = L, L, L).

Mapping Video RAM to the Hyper Expander
Due to the bus sharing, the
screen memory cannot be moved to external RAM expansion, since the branch of the data bus (CD9..CD7, orange), which is connected to the Expansion Port, cannot be accessed by the VIC. The VIC can only access RAM, which is connected to the red branch BD0..BD7. Both data busses are separated by a 74LS245 bi-directional bus driver, the data direction is controlled by the CPU. The address bus is also sparated in two branches and the branche, which is accessible for the VIC (cyan, VA0..VA13) does not reach the expansion, either.



Block diagram of the VIC-20 data and address busses


Older Revisions
The first version of the Hyper Expander was Rev. 0, which was made from the design files of the Super Expander II in a few hours (schematics and layout, the documentation and testing took longer).


The Hyper Expander Rev. 0

Since I like to improve my projects a bit, before I order the next set of PCBs, I decided to make the Rev. 1. The jumper position of teh RAM configuration was not so great, so the jumpers had to go to the upper edge of the board, so they would be accessible while the board is still inserted in the VIC-20. Also, I was requested to add RAM to the I/O2 and I/O3 chip select, so a 2nd RAM was requires. This allowed to have the 3kB @ $0400 and the 8kB @ $A000 at the same time (
DOOM is now possible). The layout changed quite a bit, but Rev. 1 was still based on the layout of Rev. 0.


Hyper Expander Rev. 1 with two RAMs

I have placed four 14 pin socket strips as sockets for the 2nd EPROM IC2 and the High RAM IC5. This way, I could swap both to test all configurations with one prototype.

Rev. 2 happened, when I wanted to order the nest set of PCBs. Two of my twitter/facebook friends asked, if DIP-switches could be used for configuration. This sounds simple, but since I wantd to have horizontal and vertical DIP-Swicthes (plus the options to configure the board with jumpers or solder bridges), which meant to turn around the original JP4/JP5 jumper and swap the 74LS148 encoders, they layout had to change quite a bit and I have decided to rip up the old layout and start from zero with the new layout.


Eagle Layout of Rev. 2



Software packets
Set 1: Diagnostic and BASIC Extensions
Super Expander: The Commodore Basic Extention for graphics and music
Commodore VICMON: a machin language monitor
RAM Expansion Test: a test software for the possible RAM Expansions
● VIC-20 Diagnostics (PAL & NTSC): a diagnostic cartridge software. It requires the
diagnostic harness
● VIC-20 Dead Test: Some basic test, whoch still requires a working kernal ROM.
● VIC Color Test: A screen test, displaying colors and patterns. Produces a tone and does loop
● VIC Debug98: A debugger/machine language monitor
● BASIC v5: A BASIC extension


EPROM image and description Set 1

Set 2: Super Expander and Programming Tools
This EPROM image contains these binaries:
Super Expander: The Commodore Basic Extention for graphics and music
Commodore VICMON: a machin language monitor
RAM Expansion Test: a test software for the possible RAM Expansions
● VIC-20 Diagnostics (PAL & NTSC): a diagnostic cartridge software. It requires the
diagnostic harness
● VIC Debug98: A debugger/machine language monitor
● EXBASIC L2: A BASIC extension
● ASSAM: an Assember
● WAX4k: another assembler

EPROM image and description Set 2

Software sources
● Super Expander:
http://www.zimmers.net/anonftp/pub/cbm/vic20/roms/tools/4k/index.html
● Commodore VICMON: https://archive.
org/details/tosec-20161111-commodore-vic-20_20170305
● RAM Expansion Test: https://github.com/svenpetersen1965/VIC-20-RAM-Expansion-Test-Software
● VIC-20 Diagnostics (PAL & NTSC):
http://www.zimmers.net/anonftp/pub/cbm/firmware/misc/vc-20diag/index.html
● VIC-20 Dead Test:
https://github.com/StormTrooper/Vic20-dead-test
● VIC Color Test:
https://archive.org/details/tosec-20161111-commodore-vic-20_20170305
● BASIC v5:
http://www.zimmers.net/anonftp/pub/cbm/vic20/roms/tools/8k/index.html
● VIC Debug98:
https://archive.org/details/tosec-20161111-commodore-vic-20_20170305
● EXBASIC L2:
http://www.zimmers.net/anonftp/pub/cbm/vic20/roms/tools/8k/index.html
● ASSAM:
http://www.zimmers.net/anonftp/pub/cbm/vic20/roms/tools/8k/index.html
● WAX4k:
https://github.com/Chysn/VIC20-wAx

Repository
The Hyper Expander is open hardware. Find the github repository with gerbers, schematics, BOM and detailed descriptions
here.