All Projects → niklasekstrom → amiga-par-to-spi-adapter

niklasekstrom / amiga-par-to-spi-adapter

Licence: other
SPI adapter that connects to the parallel port of an Amiga

Programming Languages

c
50402 projects - #5 most used programming language
assembly
5116 projects
Batchfile
5799 projects
Makefile
30231 projects

Projects that are alternatives of or similar to amiga-par-to-spi-adapter

OpenAmiga2000CoproAdapter
Move your Amiga 2000 CPU to the Coprocessor slot!
Stars: ✭ 20 (-35.48%)
Mutual labels:  amiga, amiga-hardware
OpenAmiga600FastRamExpansion
4 MB Fast RAM Expansion for the Commodore Amiga 600
Stars: ✭ 27 (-12.9%)
Mutual labels:  amiga, amiga-hardware
OpenAmiga600RamExpansion
Open Hardware 1 MB Chip RAM Expansion for the Commodore Amiga 600 Computer
Stars: ✭ 48 (+54.84%)
Mutual labels:  amiga, amiga-hardware
a500hdd
Inexpensive A500 hard disk interface
Stars: ✭ 23 (-25.81%)
Mutual labels:  amiga, amiga-hardware
pocketmod
Small ANSI C library for turning ProTracker MOD files into playable PCM audio.
Stars: ✭ 54 (+74.19%)
Mutual labels:  amiga
nim-mod
A Nim MOD player just for fun
Stars: ✭ 40 (+29.03%)
Mutual labels:  amiga
a500kbd-usbhid-stm32
A simple firmware for STM32 microcontrollers that allow you to use an old Amiga keyboard as USB HID compatible keyboard with your computer.
Stars: ✭ 22 (-29.03%)
Mutual labels:  amiga
zpacker
very simple LZ77-based compression
Stars: ✭ 15 (-51.61%)
Mutual labels:  amiga
apultra
Free open-source compressor for apLib with 5-7% better ratios
Stars: ✭ 84 (+170.97%)
Mutual labels:  amiga
VolksForth
volksFORTH is a 16bit Forth System maintained by the German Forth Gesellschaft e.V.
Stars: ✭ 41 (+32.26%)
Mutual labels:  amiga
Dreamdealers
Deamdealers Amiga demo sources !!!
Stars: ✭ 38 (+22.58%)
Mutual labels:  amiga
imageformats
Library for decoding obscure graphics formats, such as Targa (.TGA), Sun raster (.RAS, .SUN), ZSoft (.PCX), Netpbm (.PPM, .PGM, .PBM, .PNM), Amiga (LBM, PIC), SGI, MacPaint, and DICOM.
Stars: ✭ 21 (-32.26%)
Mutual labels:  amiga
mt32-pi-control
MT32-PI.EXE/MT32-PI.TTP/mt32-pi-ctl is a control program for the mt32-pi MIDI synthesizer available for DOS PCs, Atari ST and Amiga computers as well as modern systems running Linux and Windows.
Stars: ✭ 22 (-29.03%)
Mutual labels:  amiga
OpenAmigaMouseTrigger
Control Amiga add-on boards through mouse buttons
Stars: ✭ 21 (-32.26%)
Mutual labels:  amiga
A600 ACCEL RAM
Amiga 600 Accelerator And RAM Expansion
Stars: ✭ 22 (-29.03%)
Mutual labels:  amiga
stuntcarremake
A port of Stunt Car Remake to OpenPandora, Linux and Emscripten. Status: Working
Stars: ✭ 44 (+41.94%)
Mutual labels:  amiga
salvador
A free, open-source compressor for the ZX0 format
Stars: ✭ 35 (+12.9%)
Mutual labels:  amiga
ahx-web-player
AHX player web interface
Stars: ✭ 24 (-22.58%)
Mutual labels:  amiga
system-zoetrope-amiga-demo
An AMIGA OCS demo by Mandarine released during the Outline 2015 demoparty
Stars: ✭ 29 (-6.45%)
Mutual labels:  amiga
texteditor
A well-known and used MUI custom class (TextEditor.mcc) which provides application programmers a textedit gadget. It supports features like word wrapping, soft styles (bold, italic, underline), a spell checking interface as well as an AREXX interface for scripting.
Stars: ✭ 15 (-51.61%)
Mutual labels:  amiga

Amiga Parallel Port to SPI Adapter

The goal of this project is to make a cheap and easy to build SPI adapter that connects to the parallel port of an Amiga. Furthermore, the performance of the adapter should be as fast as possible.

Please note: new hardware incompatible version!

What you are looking at is a new version of this design. It is hardware incompatible with the original version. Updating the software without making the corresponding hardware changes will not work.

Old versions of this design are available as tags/releases.

Changes with latest version

Support has been added that allows the SPI device to interrupt the Amiga via the adapter. The SD card example driver has been modified to use this interrupt so that the SD card can be inserted/ejected as part of normal operations.

A video demonstrating this can be seen here: https://www.youtube.com/watch?v=zJDtiFQgrn0.

What parts make up the project?

  • An AVR microcontroller, provided by an Arduino Nano board
  • A parallel port connector that connects to the AVR
  • Instructions for how to assemble the above
  • Code for the AVR that waits to receive commands from the Amiga, and executes those commands
  • A source code library for the Amiga, spi-lib, that communicates with the AVR
  • An example of how to use the adapter to connect to an SD card module
Parallel port connector Assemebled unconnected
Connected Amiga SD card running

See the assembly instructions for how to connect the parts together.

What can it be used for?

There exists many SPI peripherals that can be connected to this adapter. The SPI adapter comes with a source code library, spi-lib, that is used to perform reads and writes to the SPI peripheral. For each kind of SPI peripheral, however, a separate driver needs to be written that uses spi-lib, and exposes the functionality of the SPI peripheral to the operating system using some suitable interface.

In the directory examples/spisd an example of how an SD card module can be connected to the SPI adapter, and a driver is provided that lets AmigaOS mount the SPI card as a file system.

Performance

The throughput of the adapter is limited by how fast the 68k CPU can access the CIA chips. The CPU can make one access (a read or a write) to a CIA chip per E-cycle. An E-cycle is one tenth of the frequency of an original Amiga. The E-cycle frequency is thus roughly 700 kHz, regardless if the Amiga uses an accelerator or not. The protocol used by the SPI adapter can communicate one byte every two E-cycles which gives a theoretical upper limit of 350 kB/s.

I performed a simple benchmark on an A500 with an HC508 accelerator, and an SD card module connected to the SPI adapter. Copying a 23 MB file from the SD card to the compact flash in the HC508 took 98 seconds, giving a throughput of 225 kB/s. I think this is a good result, and I believe it will be hard to come much closer to the theoretical limit of 350 kB/s.

There are however some optimizations that could be implemented, such as transfering more than one sector (512 bytes) at a time from the SD card, that could make the throughput come closer to the limit.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].