The complete original Commodore Vic-20 hardware, including the CPU, recreated in a single FPGA.
The design is about 1400 Xilinx slices in size, and has a gate count of about 350K gates.
It would be possible to take advantage of the re-configurable nature of FPGA's and expand the
capabilities of the original machine, for example greater colour depth, screen resolution or
number of audio channels. This could even be achieved dynamically while the machine is running,
and with careful mapping of the additional registers required, complete compatibility with the original could
Particular thanks to Graham for risking his vintage machine and allowing me to stick
logic analyser probes all over it.
A PS/2 keyboard interface is included, with a keymap the same as the popular 'Vice' software
emulator. The design is believed to be complete, and I have run through lots of the examples in the
original Programmers Reference Manual.
It also contains a complete 6522 VHDL core which may prove useful in other machines of this vintage.
Actual photo taken by compiling and running the code here.
I have extended the code to run on the Xilinx Spartan 3E board (mentioned elsewhere on this site).
The flash memory on board can be used to hold plug in cartridge images. For details of how to program the
flash, please read the "readme" included in the release.
(The banding is a camera artifact, it looks quite sharp in real life)
Jupiter Lander cartridge
The four toggle switches on the Spartan 3E board are used as follows:
Switch 0 (bottom right) is used to switch between PAL (15KHz) output and VGA(31KHz).
Switch 1 when up (on) will ENABLE the external flash memory (plug in cart).
Switch 3 and 2 are a two bit bank select to the flash memory.
The push button on the rotary control is used for reset.
The VGA mode is generated with a scan doubler, but this won't work with all monitors as
the vertical refresh rate in PAL is 50Hz, too low for some screens. You can connect the VGA output in 15KHz mode to a SCART TV.
To make a VGA to SCART cable, get a standard VGA cable and chop the monitor end off. Wire it to a SCART connector with the following pinout :
| VGA Pin || Signal || SCART male pin
| 1||Red|| 15
| 6||Red Ground|| 13
| 2||Green|| 11
| 7||Green Ground|| 9
| 3||Blue|| 7
| 8||Blue Ground|| 5
| 13||Horiz Sync|| 20
| 14||Vert Sync|
| 10||Ground|| 17,18
Please read the "README" file for documentation.
IMPORTANT NOTE :
NO ORIGINAL ROM CONTENTS ARE IN THIS DISTRIBUTION.
YOU WILL NEED THE ORIGINAL/ALTERNATIVE ROM FILES
A simulation model of Vic-20 hardware
Copyright (c) MikeJ - jam 2008
THIS CODE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE
LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
POSSIBILITY OF SUCH DAMAGE.
You are responsible for any legal issues arising from your use of this code.
You must agree to this disclaimer before downloading the code
Version 001 Spartan3e Release vic20_rel002_sp3e.zip
Version 001 Release vic20_001.zip