Useful_Links
- Edit
- Recent Changes
- Advanced Search
- All Pages
- Administration
- Index
Useful_Links
Here we'll note some of the URLs we've found while working on this project that may come in useful later...
PiTrex section at Malban's Vectrex blog website, with notes from his work developing the Vectrex Interface library for this project.
Vectrex and 6522 description More 6522 info
GPIO to keyboard driver - 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 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 - 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 everything at github C Bare metal USB stack asm booting metalpi Pi3 bare metal C Alloy: multicore - bare metal plus linux config for Alloy ChibiOS RT - getting started tutorial Circle
High resolution timers nanosleep more precise timers - 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 - 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 ' parameter, which is covered in several of the 'bare metal' links).
Pi: device trees and parameters bcm2835 - GPIO register access from C more GPIO bitbanging Connecting a joystick Readig joystick values into a C program , General collection of Raspberry Pi links
Vectrex sound generator
Datasheets
CPU: MC68A09
VIA: R6522 MOS6522 sy6522
PSG: AY3-8912 Microchip AY3-8912 Datasheet
DAC: MC1408-8
Analogue Switch: 4052B
GPIO Hardware characteristics: Official Raspberry Pi Document , More detail on BCM2835 electrical specifications
Lots of Raspberry Pi hardware info - GPIO Code Samples
Bare-Metal Game Boy emulator using interrupts and with useful interrupt-related links on the page.
PSG info and manuals to download More documents also software and chiptunes
MAME:
Vector output from MAME used with custom DAC board to control Vectrex and oscilloscope
LaserMAME - Vector arcade games projected with lasers.
OpenLASE library for displaying computer graphics with laser projectors - Inc. SVG, Bitmap display and video-player. Uses a PC sound card as the DAC. openlase-mame .
VectorMAME includes vector modifications for the Zektor ZVG card , which were at one point integrated into the official MAME source code. Previously here .
LazyMAME 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
Incomplete vector games category at Wikipedia
GameArchive
Raspberry Pi High Speed I/O Under Linux:
DMA (mainly useful for repeating signals?):
Raspberry Pi DMA Example , used for printpi stepper controller software.
Raspberry Pi CNC stepper controller software using Real-Time scheduler setting - 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 , A very basic example .
Real-Time Linux:
PREEMPT_RT
Debian based distro with PREEMPT_RT patch
Xenomai
RTAI
Example of disabling interrupts in Linux for Real-Time GPIO control.
Notes related to high-quality audio recording on Linux with or without a patched kernel.
IRQ Priorities .
PREEMPT_RT Threaded Interrupt Handler (also see above two links).
Linux Kernel Driver
- Tutorial for Linux Driver Development (a starting point, but not enough info to write anything serious)
- Linux Device Drivers Third Edition (detailed, but not up to date)
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 - Interface for the BBC Micro using its "Tube" interface for adding a co-processor.
- Apple2Pi - 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 , Store
- A Raspberry Pi Zero S100 Bus CPU Board 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
Raspberry Pi Linux Loaders (for booting Linux from the PiTrex menu):
Porting Linux Software to Bare-Metal
- Newlib - Popular C Standard Library implementation for embedded systems.
- Porting Newlib - A guide for porting Newlib to platforms that are not supported in the standard distribution (the Raspberry Pi isn't).
- Other Newlib porting docs: here , here , and here .
- Circle-Stdlib - Newlib for the Raspberry Pi, integrated with the Circle C++ bare-metal environment.
- PDclib - Another C Standard Lib. for embedded systems.
- More listed at Wikipedia