There are no reviews yet. Be the first to send feedback to the community and the maintainers!
ninepin: A utility to adapt computers of the past to modern times. Copyright 2013 by Chris Osborn <[email protected]> See COPYING file for detailed information on terms of copying. ---------------------------------------- http://insentricity.com/a.cl/207 Ninepin is about interfacing retro computers to modern peripherals. It currently offers two features: converting a USB joystick so it can be used as an Atari style 9-pin joystick (hence the name), and the ability to emulate a disk drive. The joystick interface will work with most any USB HID compliant joystick and uses the GPIO to open/close switches to act as a simple Atari 2600 joystick, which works on a variety of platforms, such as the Commodore 64, Atari 2600, and Sega Master System. It currently only maps the directional and a single button for player 1. Additional chips are required to be connected to the GPIO. I'm using a couple of CD4016 switches and a 74HC595 shift register. In order to use the joystick interface, the program needs to be run as root. If the program is not run as root the joystick routines will be disabled, although the disk functionality will still work. Eventually I plan to move the GPIO for handling the ninepin switching into another kernel module. The disk interface support works with the Commodore 64 IEC serial bus. It is a combination of a user space program and kernel module which implements the protocol on the Raspberry Pi using GPIO. The signaling is implemented in a Linux Kernel Module in order to use interrupts. There are only 2 places where interrupts are disabled during processing. I had to use looping for delays since there was no way to do microsecond delays in the kernel. The driver supports both a 3 wire and a 5 wire interface, depending on what kind of level shifters you have available (and how brave you are). Switching between 3 wire and 5 wire currently requires recompiling the module, it should probably be an option when doing the insmod. If you are using the 3 pin mode, then the CLK and DATA pins are used for both input and output. You can either use a bidirection 3.3V to 5V level shifter, or do what I did and use some resistors to make a voltage divider (see VoltageDivider.png). The voltage divider works fine for me, but I only have the C64 and the Raspberry Pi on the bus. Adding other devices could cause the voltage levels to increase to more than the Raspberry Pi GPIO pins can tolerate. For each pin I'm using a 1k and 1.5k resistor. In 5 pin mode, 3 pins are used to read the signals, and 2 others are used to send output. This allows the use of unidirectional level shifters such as a 74HCT245 and CD4050. The disk drive emulation works with directories and .d64 images. Files in regular directories are automatically mapped to C64 file types. Directories can be changed from the C64 side. It is also possible to mount and unmount .d64 images from the C64. There is no emulation of a real 1541 so fastloaders will not work. To change directories: LOAD "/newpath",8 The leading slash will be ignored. The C64 will print an error but as long as the directory exists the change directory will be successful. To mount a .d64 disk image: LOAD "#filename.d64",8 The C64 will print an error but filename.d64 will be mounted read only. To unmount a .d64 disk image and use the native directory: LOAD "#",8 ---------------------------------------- Future plans include adding more CBM DOS capabilities. I also want to add supporting two joysticks and the ability to use the extra buttons on a USB gamepad for changing settings. I want to support several different platforms which used varying pot sizes (1Meg on the 2600, 500k on the C64, 150k on the Apple II, and 100k on the IBM PC), but so far haven't found a suitable digital potentiometer. A 12-bit dual 1Meg would be ideal. Currently I'm using a 200k AD5282 which works fine for Apple II and IBM PC joysticks, as well as any system that uses a voltage divider such as the BBC Micro or TRS-80 Color Computer. Digital joystick mode has also been tested on MSX, VIC-20, Commodore 64, Sega Master, Atari 2600, Commodore Amiga, Coleco Adam, and TI-99/4A. Another joystick feature that is missing is the ability to swap joystick 1 & 2 with a button on the USB gamepad. This seems like it would be very useful on the C64 since some software uses port 1 and some uses port 2. Being able to switch without unplugging cables would be quite useful!
tcpser
Fork of Jim Brain's tcpser programws2812-demo
Demo & driver using the RMT peripheral of the ESP32 to control WS2812 RGB LEDsDRAM-Tester
Simple schematic & software for testing DRAM with an Arduinoviddin
Simple scripts for processing videoxtideuniversalbios
Automatically exported from code.google.com/p/xtideuniversalbiosKermit-CPM
Columbia University's Kermit for CP/Mglobaltalk
Docker image with qemu in order to run an emulated 68k Mac to act as #GlobalTalk routerlasm
Python based 8080 cross assembler compatible with CP/M LASMSeaGeelog
CGA/RGBI to analog RGB conversion circuithp-plot
PostScript program to convert PostScript to HPGLColeco-Adam-Source
Coleco ADAM Technical Manual EOS6 OS7disasm
A disassembler for 8 bit microsDistripitor
Program to create barcodes in the Cauzin Softstrip formatsider-xebec-disassembly
Disassembly of the Sider/Xebec SASI card ROM and tools for the Apple IIVictor9000-ROM-source
Assembly source to the Victor 9000, Sirius 1, and Vickycrudens
Example DNS server with bare minimum functionalitydetonator
Simple web based interface to control GPIO interfaced relays - used to set off fireworksmysqldump-csv
Quick little script to output entire mysql db as csvtwokii
Turns a Raspberry Pi into a PS/2 keyboard and mousecerealbewt
Tool for booting a Victor 9000 / Sirius 1 over the RS-232 serial porthello-cpm
Simple Hello World C program that uses inline assembly to call CP/M BDOSdevuan-zfs
Scripts I cobbled together to setup a Devuan system that boots from ZFSfozzlib
compid
BASIC program to identify computer modelFZ-KiCAD
split-pdf
Program to split 2-up scanned PDFs into individual pagessider-tool
Tool to manage Apple II Sider hard drive disk imagesAT-minus5
Simple pass through circuit to add -5V to ATX-to-AT adapterpantorouter_tenon_template
OpenSCAD code for creating Pantorouter templatesLove Open Source and this site? Check out how you can help us