Skip to the content
2 layers357.8 × 124.5 mmVic2020mainboard, the printed circuit board in 3D

Vic2020mainboard

danwerner21/vic202078

A Vic-20 clone created with [almost] all readily available parts

Size
357.8 × 124.5 mm
Copper layers
2
Thickness
1.6 mm
Parts
142
Nets
186
Pads
876
Tracks, vias
5,946, 398
Pours
5
Routed
Yes
KiCad
KiCad 5 (file 20171130)
Created
9 Jan 2022
Updated
17 Oct 2022

Overview

Vic2020mainboard is an open-source printed circuit board by danwerner21, from the danwerner21/vic2020 repository on GitHub. It is a 2-layer board of 357.8 × 124.5 mm with 142 parts on 186 nets, routed with 5,946 tracks and 398 vias.

It is built around the 74LS245SC, 74LS133PC and AS6C1008-55PCN, with the 74LS00SC, 74LS02PC and 74LS04PC among its other parts. Its parts include 40 capacitors, 36 resistors, 24 ICs, 14 connectors and 2 transistors. It belongs with the retro computing and games boards of this library.

Main components

8

README

README.md

Vic-2020

A Vic-20 clone created with [almost] all readily available parts

Introduction

This project is an implementation of a VIC-20 (mostly) compatible computer. The project is built using a combination of 1980's era components (7400-series logic) and more modern components- such as a modern 6502 variant and 512 KiB SRAM and 512 KiB Flash ROMs. The only hard to find component is the MOS 6560 VIC video chip -- and it is my hope to follow up this project with a project to replace that chip with a FPGA replacement, providing the open source community a full path to re-creating the VIC-20 with all new components.

Vic-2020 board set

Why?

Why would I do a replica of the VIC-20? Well, like many others the VIC-20 was my first computer. In 1981 I spent most of my (non-school) waking hours learning everything possible about this machine, and that launched me into a successful career in IT. In the early 2000s I discovered the retro-computer scene and have spent many hours building and creating new retro computer designs following the work happening in such places as 6502.org and retrobrewcomputers.org. So much so, that my boss has taken to giving me crap about spending my free time "Building VIC-20s" . . . . It was earlier in 2020 when he had made one such comment that I realized that while I had constructed many vintage designs, I had never actually built a VIC-20. I decided that I should correct that oversight as soon as possible -- and thus the VIC-2020 Fichter Edition (named after my boss) was born.


What is included in this repo?

As of this time, the repo includes

  1. The VIC-2020 Mainboard PCB Kicad design and Gerber files
  2. The VIC-2020 Keyboard PCB Kicad design and Gerber files
  3. OpenSCAD and STL files for a 3d printed case
  4. Design Files for Max Keyboard Custom Printed Keycaps

Vic-2020 Mainboard Vic-2020 Keyboard Vic-2020 Assembled Vic-2020 Assembled


Known Bugs

  • While the mainboard does have a S-VIDEO mod applied that should (in theory) provide S-VIDEO output, it does not work. If anyone corrects this, please feel free to reach out and I will correct the schematics -- but for now, I would not populate the S-VIDEO connector, and always short the Chroma Disconnect jumper.
UPDATE

Turns out the footprint for the SVIDEO connector in KiCad has the pins numbered incorrectly and that is the cause of the SVIDEO issue. I have updated the PCB and Schematic to account for this, but have not tested the fix myself. I am told that the SVIDEO out does work with a properly wired cable.

note that the 1.1 version of the PCB still have the Chroma/Luma pins reversed on the video connector. Seems that I made a patch to correct the pins and KiCAD also made a patch to correct the PCB layout of the connector, and thus reversed each other's work. . . 1.2 should be correct, but as always until it is tested, assume it needs patched.


How is the VIC-2020 the same as a VIC-20?

The VIC-2020 should be mostly software compatible with the expanded and unexpanded Commodore VIC-20. I have tested a variety of cartridges (commodore and third party) and have ran several homebrew and commercial disk based programs on the system with no issues. Note that this does use a more modern variant of the 6502, so software relying on 6502 undocumented opcodes or bugs will not work properly. The VIC-2020 has a commodore compatible IEC port that has been tested with a real 1571 and real 1541 and seems to work properly with one exception -- if the device holds the RESET line low the system will not function. This can be observed if the VIC-2020 is connected to a powered off IED device -- the VIC will not function until the IEC device is powered on or unplugged from the VIC.


How is the VIC-2020 different from a VIC-20?

Because the VIC-2020 is using more modern parts, it has ALOT of ram compared to the VIC-20. The original VIC-20 shipped with 4k of ram . . . the VIC-2020 has 256k. This has some implications. First, for compatibility there is a portion of the RAM that is just wasted. Of the 128k chip that is used for main memory, only 32k is accessible, the rest is hidden. This is a design trade off that made the system less complex and ensured compatibility. That said, small design changes were made to allow the 128k color ram to be totally usable by the system. The first modification allowed all 8 bits of color ram to be used as storage for the system. In the original VIC-20, color ram was only 4 bits wide, as the VIC chip only needs 4 bits to store color information. In the VIC-2020 design all 8 bits are available to the CPU, even though only 4 bits are used by the VIC chip. This should allow a programmer to store user information in the upper 4 bits of the color ram without affecting any other part of the system. Also, the 6522 IO port that was dedicated to the user port on the VIC-20 has been repurposed as a "Page Register" (located at 0x9110 or 37136) on the VIC-2020 allowing 128 pages of color ram to be available for the VIC chip. This should give the ability for some very interesting color effects to be produced on the VIC-2020, while still keeping the VIC mostly compatible. This technique was demonstrated as early as 2010 in the sleepingelephant.com forums here.

Power

Unlike the original, the VIC-2020 will run off of one regulated 5V 1.5A power supply.

Ports

In order to simplify the VIC-2020s power requirements, the cassette and user ports were ommitted from the system. It is possible to use the lines in the AUX connector (J11) and the IEC port to gain access to the cassette data lines if one wanted to use a cassette emulator. The cartridge port is mostly compatible (assuming proper setting of SW3) with the omission of the RAM1,RAM2, & RAM3 lines. Note that trimmer RV1 can be used to adjust video signal output strength. If your particular TV appears either overdriven or too dim, adjust RV1 accordingly. Variable Cap C2 can be used to adjust video signal phase -- adjust this trimmer if your VIC shows no color or the wrong colors.

Ram Configuration

For simplicity sake, the VIC-2020 in even its lowest memory configuration has the VIC 3K memory expansion enabled at RAM1, RAM2, and RAM3, giving it 8K of base ram, 6.5k free for BASIC. This configuration is totally compatible with most "unexpanded" VIC software, but is incompatible with any cartridge that includes the 3k RAM expansion option (such as the VIC Super Expander Cartridge). The other RAM configuration options for BLK1, BLK2, BLK3, and BLK5 are DIP switch selectable allowing memory to be configured. It is best to have each RAM block only assigned to either the Expansion Port (SW3) or the Internal RAM (SW1) but not both at the same time. When in doubt set all of SW3 to "on" and all of SW1 to "off" and you should have a mostly compatible unexpanded VIC. For a mostly compatible expanded VIC set BLK1,BLK2, BLK3 on SW1 to "on" and SW3 to "off".

Character ROM Configuration

The 8K 2764 EPROM at U19 contains the character ROM image for the VIC-2020. The VIC chip only needs 4K to store a complete set of character images, so jumper J3 is used to select one of two character sets that can be stored on the 2764. If pins 1&2 are shorted on the jumper the first 4K of the chip is used (addresses 0x0000-0x0FFF) for the character patterns and if pins 2&3 are shorted the second 4K (addresses 0x1000-0x1FFF) are used.

System ROM Configuration

On the VIC-2020 it is possible to use several different types of main ROM chips and have several ROM images burned at the same time -- all selected by jumpers J1 and J2.

Jumper SettingsChip UsedResulting eprom configuration
J1 1&2, J2 1&227512BASIC image at 0x0000 through 0x1FFF KERNAL at 0x2000 through 0x3FFF
J1 1&2, J2 1&227256BASIC image at 0x0000 through 0x1FFF KERNAL at 0x2000 through 0x3FFF
J1 1&2, J2 1&227128BASIC image at 0x0000 through 0x1FFF KERNAL at 0x2000 through 0x3FFF
J1 1&2, J2 2&327512BASIC image at 0x4000 through 0x5FFF KERNAL at 0x6000 through 0x7FFF
J1 1&2, J2 2&327256BASIC image at 0x4000 through 0x5FFF KERNAL at 0x6000 through 0x7FFF
J1 1&2, J2 2&327128NOT VALID
J1 2&3, J2 1&227512BASIC image at 0x8000 through 0x9FFF KERNAL at 0xA000 through 0xBFFF
J1 2&3, J2 1&227256NOT VALID
J1 2&3, J2 1&227128NOT VALID
J1 2&3, J2 1&227512BASIC image at 0xC000 through 0xDFFF KERNAL at 0xE000 through 0xFFFF
J1 2&3, J2 1&227256NOT VALID
J1 2&3, J2 1&227128NOT VALID

Bill Of Materials

Mainboard

Part NumberQuantityName
C35,C362.001uf Capacitor
C7,C12-C3423.01uf Capacitor
C1,C6,C8,C10,C405.1uf Capacitor
C371.47uF Electrolytic Capacitor
C38110uF Electrolytic Capacitor
C4110uf Capacitor
C1111uf Electrolytic Capacitor
C912.2uF Electrolytic Capacitor
C51220pf Capacitor
C312pf Capacitor
C39147uF Capacitor
C218-90pf Variable Capacitor
FB1-FB99Ferrite_Bead_Small
J1,J2,J33Pin Header 1x03 2.54mm
J101Barrel Jack
J111Pin Header 2x8 2.54mm
J121Card Edge Connector 2x22 (Mouser #:587-305-044-520-502)
J131DIN 6 IEC connector (mouser#571-9-211509)
J141DSUB 9 Male
J4,J92Pin Header 1x2 2.54mm
J51DIN-4 (mouser#571-5749181-1)
J6,J72RCA Jack
J81Pin Header 1x20
Q112sc1959
Q212SC1815
R36175ohm Resistor 1/4w
R151180ohm Resistor 1/4w
R161240ohm Resistor 1/4w
R221270ohm Resistor 1/4w
R2,R4,R243330ohm Resistor 1/4w
R211470ohm Resistor 1/4w
R171510ohm Resistor 1/4w
R3,R52560ohm Resistor 1/4w
R1911.8Kohm Resistor 1/4w
R23110Kohm Resistor 1/4w
R61150Kohm Resistor 1/4w
R7,R11-R14,R18,R25-R35161K ohm Resistor 1/4w
R8-R1032.2Kohm Resistor 1/4w
R2012.7Kohm Resistor 1/4w
R11220kohm Resistor 1/4w
RV111Kohm Variable Resistor (Mouser# 531-PT10LV112A22PMS)
SW1,SW32DIP Switch 4 pos
U1912764
U2016560 (MOS, VIC-20 pull or E-Bay)
U117402
U417406
U13127512
U24174ALS32
U8174LS00
U11174LS02
U9174LS04
U5,U10274LS133
U2,U6274LS138
U14,U15,U16,U18,U23574LS245
U12,U172AS6C1008-55PCN
U31LM555
U71W65C02SxP
U21,U222W65C22NxP
Y11Crystal 14.31818Mhz

Keyboard

QuantityName
65Cherry MX Switch
4Switch Leveling Kit
1Pin Header 1x20
1Pin Header 1x2 or LED
1330 Ohm Resistor
1Keycap set (See Max Keyboard Template to order custom keycaps)
11x20 Female to Female dupont connector ribbon cable to connect keyboard to mainboard

Case

The case for the Vic-2020 was created using openSCAD and was printed on the AnyCubic Chiron large format printer. The OpenSCAD source files and the STL files are included in the archive. The case is designed to allow you to install a power led in the upper left corner. The opening is intended for two rectangular LEDs glued as shown here:

Case LED Case Led internal

It is also necessary to install a stabilizer on one corner of the keyboard to ensure that the keyboard PCB does not flex while typing. This is how I did it:

Case Led internal

When complete, the interior of the 3d printed case will look like this:

Case internal

Builder Comments

Below is a couple of observations from builders that might be useful in your build. I have not tested any of these suggestions, just passing on collective wisdom :)

  • One bulder commented that he needed to replace U9 (74LS04->74F04) and U11 (74LS02->74F02) with F series logic in order to get clean RAM access. I have not had a need to do this on any of my builds, but timing is very tight on this board, and it is always possible that these substitutions would help clear up issues. This same builder needed to use a Rockwell 65C02 in place of the WDC 65C02 to get a stable build.

  • Another builder noted that is is important to use a 2764 EPROM for the character ROM. A 27C64 EPROM caused graphical glitching when used.

  • It was recently reported that at least one builder has had success using a 6561 PAL VIC chip to replace the 6560 NTSC VIC chip. It is also necessary to replce the 14.31818Mhz crystal with a 4.433618 MHz crystal in a PAL system.

Questions?

If there are any questions, I can be reached at vic2020Dan at gmail dot com.


Parts

142
QtyValueFootprintReferences
24.01ufCapacitor_THT:C_Rect_L7.0mm_W2.0mm_P5.00mmC12, C13, C14, C15, C16, C17, C18, C19, C20, C21, C22, C23, C24, C25, C26, C27 +8
131KResistor_THT:R_Axial_DIN0207_L6.3mm_D2.5mm_P7.62mm_HorizontalR7, R11, R12, R13, R14, R18, R25, R26, R27, R32, R33, R34, R35
13MountingHoleMountingHole:MountingHole_3.2mm_M3_PadH1, H2, H3, H4, H5, H6, H7, H8, H10, H11, H12, H13, H14
8Ferrite_Bead_SmallInductor_THT:L_Axial_L6.6mm_D2.7mm_P10.16mm_Horizontal_Vishay_IM-2FB1, FB2, FB3, FB4, FB5, FB6, FB8, FB9
574LS245Package_DIP:DIP-20_W7.62mm_SocketU14, U15, U16, U18, U23
41kResistor_THT:R_Axial_DIN0207_L6.3mm_D2.5mm_P7.62mm_HorizontalR28, R29, R30, R31
3.1ufCapacitor_THT:C_Rect_L7.0mm_W2.0mm_P5.00mmC1, C10, C40
32.2KResistor_THT:R_Axial_DIN0207_L6.3mm_D2.5mm_P7.62mm_HorizontalR8, R9, R10
3330Resistor_THT:R_Axial_DIN0207_L6.3mm_D2.5mm_P7.62mm_HorizontalR2, R4, R24
2.001ufCapacitor_THT:C_Rect_L7.0mm_W2.0mm_P5.00mmC35, C36
2560Resistor_THT:R_Axial_DIN0207_L6.3mm_D2.5mm_P7.62mm_HorizontalR3, R5
274LS133Package_DIP:DIP-16_W7.62mm_SocketU5, U10
274LS138Package_DIP:DIP-16_W7.62mm_SocketU2, U6
2AS6C1008-55PCNPackage_DIP:DIP-32_W15.24mmU12, U17
2W65C22NxPPackage_DIP:DIP-40_W15.24mm_SocketU21, U22
1 Inductor_THT:L_Axial_L6.6mm_D2.7mm_P10.16mm_Horizontal_Vishay_IM-2FB7
1.1UFCapacitor_THT:C_Rect_L7.0mm_W2.0mm_P5.00mmC6
1.1uFCapacitor_THT:C_Rect_L7.0mm_W2.0mm_P5.00mmC8
1.47uFCapacitor_THT:CP_Radial_D4.0mm_P2.00mmC37
11.8KResistor_THT:R_Axial_DIN0207_L6.3mm_D2.5mm_P7.62mm_HorizontalR19
110KResistor_THT:R_Axial_DIN0207_L6.3mm_D2.5mm_P7.62mm_HorizontalR23
110uFCapacitor_THT:CP_Radial_D4.0mm_P2.00mmC38
110ufCapacitor_THT:CP_Radial_D4.0mm_P2.00mmC4
1150KResistor_THT:R_Axial_DIN0207_L6.3mm_D2.5mm_P7.62mm_HorizontalR6
1180Resistor_THT:R_Axial_DIN0207_L6.3mm_D2.5mm_P7.62mm_HorizontalR15
11KVaristor:Potentiometer_Trimmer_2x4.kicad_modRV1
11ufCapacitor_THT:CP_Radial_D4.0mm_P2.00mmC11
12.2uFCapacitor_THT:CP_Radial_D4.0mm_P2.00mmC9
12.7KResistor_THT:R_Axial_DIN0207_L6.3mm_D2.5mm_P7.62mm_HorizontalR20
1220kResistor_THT:R_Axial_DIN0207_L6.3mm_D2.5mm_P7.62mm_HorizontalR1
1220pfCapacitor_THT:C_Rect_L7.0mm_W2.0mm_P5.00mmC5
1240Resistor_THT:R_Axial_DIN0207_L6.3mm_D2.5mm_P7.62mm_HorizontalR16
1270Resistor_THT:R_Axial_DIN0207_L6.3mm_D2.5mm_P7.62mm_HorizontalR22
127512Package_DIP:DIP-28_W15.24mmU13
12764Package_DIP:DIP-28_W15.24mm_SocketU19
12SC1815Package_TO_SOT_THT:TO-92_Inline_WideQ2
12pfCapacitor_THT:C_Rect_L7.0mm_W2.0mm_P5.00mmC3
12sc1959Package_TO_SOT_THT:TO-92_Inline_WideQ1
1470Resistor_THT:R_Axial_DIN0207_L6.3mm_D2.5mm_P7.62mm_HorizontalR21
147uFCapacitor_THT:CP_Radial_D4.0mm_P2.00mmC39
1510Resistor_THT:R_Axial_DIN0207_L6.3mm_D2.5mm_P7.62mm_HorizontalR17
15v RegulatedConnector_BarrelJack:BarrelJack_CUI_PJ-063AH_HorizontalJ10
16560Package_DIP:DIP-40_W15.24mm_SocketU20
17402Package_DIP:DIP-14_W7.62mm_SocketU1
17406Package_DIP:DIP-14_W7.62mm_SocketU4
174ALS32Package_DIP:DIP-14_W7.62mm_SocketU24
174LS00Package_DIP:DIP-14_W7.62mm_SocketU8
174LS02Package_DIP:DIP-14_W7.62mm_SocketU11
174LS04Package_DIP:DIP-14_W7.62mm_SocketU9
175Resistor_THT:R_Axial_DIN0207_L6.3mm_D2.5mm_P7.62mm_HorizontalR36
18-90pfCapacitor_THT:C_Radial_D10.0mm_H12.5mm_P5.00mmC2
1A14 Kernel/Basic SelectConnector_PinHeader_2.54mm:PinHeader_1x03_P2.54mm_VerticalJ2
1A15 KERNAL/BASIC SELECTConnector_PinHeader_2.54mm:PinHeader_1x03_P2.54mm_VerticalJ1
1Audio OutRCA:CUI_RCJ-041-reversepinsJ6
1Chroma DisconnectConnector_PinHeader_2.54mm:PinHeader_1x02_P2.54mm_VerticalJ4
1Conn_02x08_Odd_EvenConnector_PinHeader_2.54mm:PinHeader_2x08_P2.54mm_VerticalJ11
1Conn_02x22_Row_Letter_Firstlogo:vic20cartridge1J12
1CrystalCrystal:Crystal_HC18-U_VerticalY1
1Expansion PortPackage_DIP:DIP-8_W7.62mmSW3
1FONT SELECTConnector_PinHeader_2.54mm:PinHeader_1x03_P2.54mm_VerticalJ3
1IEC PortConnector:din6J13
1Joystick 1Connector_Dsub:DSUB-9_Male_Horizontal_P2.77x2.84mm_EdgePinOffset4.94mm_Housed_MountingHolesOffset7.48mmJ14
1KeyboardConnector_PinHeader_2.54mm:PinHeader_1x20_P2.54mm_VerticalJ8
1LEDConnector_PinHeader_2.54mm:PinHeader_1x02_P2.54mm_VerticalJ9
1LM555Package_DIP:DIP-8_W7.62mm_SocketU3
1RAM ENABLEPackage_DIP:DIP-8_W7.62mmSW1
1SVIDEO OutConnector:DIN-4TE_5749181-1J5
1Video OutRCA:CUI_RCJ-041-reversepinsJ7
1W65C02SxPPackage_DIP:DIP-40_W15.24mm_SocketU7

More from danwerner21/vic2020

1
  • 2 layers341.2 × 124.5 mmVic2020keyboard, the printed circuit board in 3D

    Vic2020keyboard

    danwerner21/vic2020

    A Vic-20 clone created with [almost] all readily available parts

    76 parts78

Similar boards

  • 2 layers382.1 × 136.2 mmCommodore Vic-20, the printed circuit board in 3D

    Commodore Vic-20

    jimbro1000/Commodore-Vic-20

    Late, cost reduced vic-20 schematic and board

    142 parts6GPL-3.0
  • 2 layers263.1 × 136.6 mmVIC20Reloaded-1.1-002, the printed circuit board in 3D

    VIC20Reloaded-1.1-002

    RichCini/VIC-20-Reloaded

    Reimaging of the original VIC-20cr ("cost-reduced") main board in a smaller footprint.

    140 parts5
  • 2 layers141 × 150 mmCZ-6BM1, the printed circuit board in 3D

    CZ-6BM1

    hkr/cz-m1d1

    Alternative CZ-6BM1

    186 parts2
  • 2 layers129.5 × 100 mmQl Cumana, the printed circuit board in 3D

    Ql Cumana

    alvaroalea/QL_Cumana_FLoppyController

    A clone of the Cumana's Disk Interface for the Sinclair QL

    40 partsCERN-OHL-S-2.0
  • 2 layers100 × 85 mmHx f101 cart, the printed circuit board in 3D

    Hx f101 cart

    popolonx/MSX_STUFF

    24 parts7
  • 2 layers370.8 × 298.5 mm8 Bit Computer, the printed circuit board in 3D

    8 Bit Computer

    The-Invent0r/8-bit-Computer-PCB

    These are the KiCAD files for my 8-Bit Computer.

    323 parts142
  • 4 layers337.6 × 105.7 mmISA CGA, the printed circuit board in 3D

    ISA CGA

    hkzlab/CGA_Redux

    The Color Graphics Adapter Redux board is a more or less faithful clone of the original IBM CGA, based on the original schematics

    170 parts56
  • 2 layers155.2 × 78.6 mm80ColumnCard, the printed circuit board in 3D

    80ColumnCard

    btb/80ColumnCard

    An Apple II 80-Column Card. Based on the Videx Videoterm

    47 parts43Apache-2.0

Questions

How big is the Vic2020mainboard PCB?

It measures 357.8 × 124.5 mm and has 2 copper layers, 1.6 mm thick.

What parts does the Vic2020mainboard use?

142 parts, built around the 74LS245SC, 74LS133PC, AS6C1008-55PCN and 74LS00SC. The full list of its parts is on this page, with links to each part's symbol and footprint where PCBKit's library has them.

Where can I download the Vic2020mainboard KiCad files?

From the danwerner21/vic2020 repository on GitHub, at the commit this page was made from: the board is vic2020mainboard/Vic2020mainboard.kicad_pcb. PCBKit opens the board in the browser, with nothing to install.

Can I use the Vic2020mainboard design in my own project?

Its repository states no licence, so its author keeps all rights: ask danwerner21 before reusing the design.