Here we'll note some of the URLs we've found while working on this project that may come in useful later...

PiTrex section outlink at Malban's Vectrex blog website, with notes from his work developing the Vectrex Interface library for this project.

Vectrex and 6522 description outlink More 6522 info outlink

GPIO to keyboard driver outlink - although we will primarily be using the Vectrex controller for input, we can imagine that some users will want to wire up their own custom controllers outlink to the Pi's GPIOs. This code from Adafruit shows how to map a GPIO signal to a keyboard press. Of course there are also many USB I/O devices as well that won't need to use any of the few remaining free (and hard to get physical access to) GPIO pins.

Bare metal Z80 emulator outlink - Probably never necessary, but if we wanted to create an environment where the PiTrex boots up fast and acts like a Vectrex, this bare-metal z80 emulator might give some good hints as to how to implement something like that. An emulator really doesn't need any of the overhead of an O/S - just somewhere to read files from and screen+I/O which in our case is done by direct access to the Vectrex. (Other bare metal resources: C64 outlink everything at github outlink C outlink Bare metal USB stack outlink asm outlink booting outlink metalpi outlink Pi3 bare metal C outlink Alloy: multicore - bare metal plus linux outlink config for Alloy outlink ChibiOS RT - getting started tutorial outlink Circle outlink

High resolution timers outlink nanosleep outlink more precise timers outlink - info that we may need when duplicating any cycle-exact timing from the 6809

How to configure CPU pinning without use of isolcpus kernel cmdline parameter outlink - on the subject of reserving a CPU for dedicated access with no operating system overhead. Although we probably will need the kernel command line 'isolcpus outlink' parameter, which is covered in several of the 'bare metal' links).

Pi: device trees and parameters outlink bcm2835 - GPIO register access from C outlink more GPIO bitbanging outlink Connecting a joystick outlink Readig joystick values into a C program outlink, General collection of Raspberry Pi links outlink

Vectrex sound generator outlink

CPU: MC68A09 outlink
VIA: R6522 outlink MOS6522 outlink sy6522 outlink
PSG: AY3-8912 outlink Microchip AY3-8912 Datasheet outlink
DAC: MC1408-8 outlink
Analogue Switch: 4052B outlink

GPIO Hardware characteristics: Official Raspberry Pi Document outlink, More detail on BCM2835 electrical specifications outlink
Lots of Raspberry Pi hardware info outlink - GPIO Code Samples outlink
Bare-Metal Game Boy emulator outlink using interrupts and with useful interrupt-related links on the page.

PSG info and manuals to download outlink More documents also software and chiptunes outlink


Vector output from MAME used with custom DAC board to control Vectrex and oscilloscope outlink

LaserMAME outlink - Vector arcade games projected with lasers.

OpenLASE library for displaying computer graphics with laser projectors outlink - Inc. SVG, Bitmap display and video-player. Uses a PC sound card as the DAC. openlase-mame outlink.

VectorMAME outlink includes vector modifications for the Zektor ZVG card outlink, which were at one point integrated into the official MAME source code. Previously here outlink.

LazyMAME outlink is another adaptation of MAME for display with laser projectors. Source code for MAME changes is available, but uses a pre-compiled WIndows DLL for the laser display routines. This predates OpenLASE-MAME.

Vector arcade games:
Andys Arcade outlink
Incomplete vector games category at Wikipedia outlink
GameArchive outlink

Raspberry Pi High Speed I/O Under Linux:
DMA (mainly useful for repeating signals?):
Raspberry Pi DMA Example outlink, used for printpi outlink stepper controller software.

Raspberry Pi CNC stepper controller software using Real-Time scheduler setting outlink - this approach didn't seem to work well enough for the PiTrex software, even with a Real-Time Linux kernel.

Some hints about driving GPIOs from a kernel module outlink, A very basic example outlink.

Real-Time Linux:
PREEMPT_RT outlink
Debian based distro with PREEMPT_RT patch outlink

Example outlink of disabling interrupts in Linux for Real-Time GPIO control.

Notes outlink related to high-quality audio recording on Linux with or without a patched kernel.

IRQ Priorities outlink.

PREEMPT_RT Threaded Interrupt Handler outlink (also see above two links).

Linux Kernel Driver

Similar Raspberry Pi Interface Projects:
These are generally designed to work in combination with the original CPU using some form of bus, of which there isn't an equivalent on the Vectrex. However there may be some general hints to take with regards to presentation, documentation, and interfacing with the Raspberry Pi:

  • PiTubeDirect outlink - Interface for the BBC Micro using its "Tube" interface for adding a co-processor.
  • Apple2Pi outlink - Connects a Raspberry Pi to an Apple II using a serial bus and runs an Apple II emulator on the Pi which can access the physical Apple II hardware and peripherals (conceptually a little like the VecFever, though just a little). FAQ outlink, Store outlink
  • A Raspberry Pi Zero S100 Bus CPU Board outlink design was published in August 2022. It uses multiplexing in order to access the full S100 address bus with the limited number of GPIO pins on the Pi. Otherwise the design is conceptually similar to the PiTrex.

Basic Summary of MAME architecture from 2003 outlink

Raspberry Pi Linux Loaders (for booting Linux from the PiTrex menu):

Porting Linux Software to Bare-Metal