Skip to content
Custom-built general purpose, programmable, 6502-based computer and operating system.
HTML Assembly Python
Branch: master
Clone or download
nickbild nickbild
nickbild and nickbild Update image for upcoming project.
Latest commit 5a00511 May 7, 2019
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
img Update image for upcoming project. May 7, 2019
schematics Add images and update documentation. Apr 7, 2019
.gitignore Exclude some files from repo. Mar 24, 2019
6502.asm Remove compound key up scan codes. Apr 1, 2019
README.md Add additional instruction on programming ROM. Apr 7, 2019
hex.py Test character LCD. Nov 10, 2018

README.md

Vectron 64

Custom-built general purpose, programmable, 6502-based computer and operating system.

Specs

  • 6502 CPU clocked at 1 Mhz.
  • 32KB RAM
  • 32KB EEPROM
    • Programmable via custom microcontroller based platform.
  • 16x2 character LCD display.
  • PS/2 keyboard support.
  • Built with 7400 series logic contemporary with the original 6502 CPU.

Schematics

Fritzing Schematics

Schematics Image

Images

6502 Computer

LCD

Operation

All slide switches must be switched to the right for normal operating mode. Connect a 9V DC power supply and the computer will begin running the program stored in ROM.

To program ROM, slide all switches to the left. Connect a microcontroller dev board (Arduino-like) per wiring guidance in the schematics. Code to perform the programming routine is available in my EEPROM Burner repository.

A small utility, hex.py, has been provided to generate the calls to the write function that are required (in EEPROM Burner) to transfer your binary to the ROM. Create a text file named hex.txt with hex codes, one byte per line, then run:

python hex.py

The included ROM image, 6502.asm, will capture keyboard input and display it on the LCD screen. This serves as a good template from which to build more complex applications.

Reserved Memory

Address Use
$0000 LCD enable
$0001 Unused -- read it to disable any IC (except RAM).
$0002 Current LCD cursor position.
$0003 Flag to indicate if next scan code should be skipped.
$0100-$01FF 6502 stack
$7FBE-$7FBF Temporary location for LCD data manipulation.
$7FC0-$7FFF Data to write to LCD. Each character (16 x 2 lines) is represented by 2 consecutive bytes (4-bit mode). Most sig. 4 bits are for LCD data. Least sig. 4 bits - only bit 3 used (tied to RS pin).
$FFF8 Clock keyboard shift register and enable line buffer.
$FFF9 Reset binary counter (counts bits received from PS/2 keyboard packets).
$FFFA NMI IRQ Vector
$FFFB NMI IRQ Vector
$FFFC Reset Vector - Stores start address of this ROM.
$FFFD Reset Vector
$FFFE IRQ Vector - Keyboard ISR address.
$FFFF IRQ Vector

Bill of Materials

Quantity Part Type Properties
11 Ceramic Capacitor package 200 mil [THT, multilayer]; voltage 6.3V; capacitance 0.1µF
9 Electrolytic Capacitor package 100 mil [THT, electrolytic]; voltage 6.3V; capacitance 220µF
1 Electrolytic Capacitor package 100 mil [THT, electrolytic]; voltage 6.3V; capacitance 47µF
2 Electrolytic Capacitor package 100 mil [THT, electrolytic]; voltage 6.3V; capacitance 22µF
1 Ceramic Capacitor package 200 mil [THT, multilayer]; voltage 6.3V; capacitance 0.01µF
3 74HC08 Logic AND Gate variant Variant 1; pins 14; chip label 74HC08; editable pin labels false; package DIP (Dual Inline) [THT]; pin spacing 300mil; part # 74HC08
3 74HCT688E pins 20; hole size 1.0mm,0.508mm; chip label 74HCT688E; true; package DIP (Dual Inline) [THT]; pin spacing 300mil
1 74LS161A pins 16; hole size 1.0mm,0.508mm; chip label 74LS161A; true; package DIP (Dual Inline) [THT]; pin spacing 300mil
1 74LS244AN pins 20; hole size 1.0mm,0.508mm; chip label 74LS244AN; true; package DIP (Dual Inline) [THT]; pin spacing 300mil
1 WDC 65C02 pins 40; hole size 1.0mm,0.508mm; chip label WDC 65C02; true; package DIP (Dual Inline) [THT]; pin spacing 300mil
5 74HC04 pins 14; hole size 1.0mm,0.508mm; chip label 74HC04; true; package DIP (Dual Inline) [THT]; pin spacing 300mil
1 Voltage Regulator variant sink; chip 78005; package to220-igo; voltage 5V
1 28C256-15 EEPROM pins 28; hole size 1.0mm,0.508mm; chip label 28C256-15 EEPROM; true; package DIP (Dual Inline) [THT]; pin spacing 300mil
1 CY7C199-35PC SRAM pins 28; hole size 1.0mm,0.508mm; chip label CY7C199-35PC SRAM; true; package DIP (Dual Inline) [THT]; pin spacing 300mil
4 74LS32 pins 14; hole size 1.0mm,0.508mm; chip label 74LS32; true; package DIP (Dual Inline) [THT]; pin spacing 300mil
1 LCD screen pins 16; type Character
2 NPN-Transistor package TO92 [THT]; type NPN (EBC)
2 10kΩ Resistor tolerance ±5%; resistance 10kΩ; package 2512 [SMD]
2 5kΩ Resistor tolerance ±5%; resistance 5kΩ; package 2512 [SMD]
5 3.3kΩ Resistor tolerance ±5%; resistance 3.3kΩ; package 2512 [SMD]
1 Pushbutton package [THT]
5 74HC595 package DIP16 [THT]; type 74HC595
13 SWITCH_SPDT package kps-1290
1 POT variant 100k_3362u; package 3362u
1 mini DIN 6 Connector variant pth; package mini-din6; connector Mini-DIN6
1 Crystal frequency 1 MHz; package THT; type crystal; pin spacing 5.08mm

About the Author

Nick A. Bild, MS

You can’t perform that action at this time.