Amiga Floppy Swapper

Here is a small project that I wanted to get dob for quite a while. It is a little PCB that can be used to swap how the Amiga sees the floppies. In one state everything is normal, and if a jumper is set, then DF0: and DF1: are swapped, so that you can boot from an external floppy drive.

What makes this design differ from other designs is that it is controlled by a single jumper or a normal STSP switch. This makes it controllable via the Key-Tap, another one of my little projects.

How it works

A Floppy drive is controlled by a bunch of electrical signals, among which one signal is the most important, it is called /SEL. If this line is high, the drive ignores all other control signals, and if it is low, it responds to them. In the AMIGA, the even CIA chip generates four select signals /SEL0/SEL3 responsible for the drives DF0: to DF3: To swap the floppy drives we can electrically swap the /SEL0 and /SEL1 line and the AMIGA will not be aware that we changed its view of the world. In simple Floppy swapper PCBs this is simply done with a clever (DPDT) switch arrangement. Here we choose a dual 4-channel multiplexer chip 74HCT153 (here is the Nexperia datasheet) to do the work. While it seems overkill to use an IC where a simple switch would do, this has some advantages:

  1. We can control the multiplexer by one signal. This control signal is much simpler: If we ad a pull-up resistor it is sufficient to either let the signal be pulled up for one state or connect it to GND via a jumper or a SPST switch to get into the other state. Furthermore this signal can be generated by the Key-tap so that you do not need a mechanical switch at all.
  2. The select lines do not have to be run via long connections to a switch and back. This reduces the risk of short circuits, noise pickup and possible damage to the CIA.
  3. The 74HCT153 and a SPST switch is actually cheaper than a DPDT swich.

The main disadvantage is that you can not realize this circuit without a PCB. Fortunately, here is my design which you can use freely. KiCad schematics, PCB and the resulting Gerbers are in my Github repo here:

https://github.com/jmA500/amiga-goodies

Look into the folder floppyswap for the files for this project. I used the gerbers in amiga-goodies/floppyswap/Gerber/floppyswap-20210313-0042.zip to produce the PCB in the image above. Building it should be straigtforward, you need only a couple of passives, the socket for the CIA and pin headers to connect to the socket of the even CIA.

Look at the schematic above. The lines SEL0 and SEL1 are coming from the CIA. Since Eb and Ea are grounded, both outputs of the multiplexer are always enabled. Channel a controls the line connected to the internal DF0: and Channel b the select for the first external drive. The binary representation of the input at S0,S1 selects which input of the multiplexer gets connected to its output. Since we want the swapper to be inactive if the jumper is unset, the multiplexers are connected, so that SEL0 and SEL1 are unswapped if S0 is high (I3a and I3b are connected to Za and Zb respectively) , and swapped if S0 is low.

If you have a PCB, building and using should be straight forward. You only need a few passives together with the multiplexer and socket plus pin header for the CIA and connection to the Mainboard. All parts are in this list at reichelt.de.

For Commodore Amiga 500 : 1.8 MB / 2MB Trapdoor Memory Expansion

The Amiga 500 is my favorite vintage Computer and I a building a lot of extensions for it. Originally, it comes with 512k of internal memory. While this seems to be a lot in comparison to the 64k of a Commodore C64 , nowadays it is pretty tight. Especially, if you want to use newer C-compilers, 512k are not sufficient. Hence we build a memory expansion for the trapdoor slot. The advantages are that this is pretty easy to do and does not require much equipment. This project is Open Hardware, schematics, PCB-layouts and GAL Code will be available for download.

Check here for the full details.

Key-Tap: A hardware configurator for the Amiga 500

Update 2021/03: GIT repository available!

In this post I want to provide the details of an older project I published  in 2014 on a1k.org. This little piece of hardware is used to provide some means for configuring an Amiga 500 with the keyboard. This is to replace at least some of the small switches that are commonly used to configure the extensions in an Amiga. The circuit listens to the keys pressed on the Amiga keyboard and then adjusts some of its output pins. These pins connect to jumper headers on the extension boards and hence provide some means to configure these extensions without opening the case or drilling holes into it.
Note however, that this project is not for beginners. If you have other extensions than I have, you will likely have to adapt the firmware to your needs. Also, you have to figure out whether your extensions are configurable by means of an external MCU, that is if is suffices to drive a signal statically high or low. Switching a dynamic signal is not possible (without extra hardware). For example, I have seen some kickstart switches that use a switch to route an enable signal to either of the two ROMs.

In any case you need a possibility to program the AtTiny4313 micro-controller with an in system programmer (ISP). These are cheaply available and connect to USB or parallel port. A lot of information regarding this micro-controller can be obtained on the excellent websites http://www.avrfreaks.net/ or http://www.mikrocontroller.net/ (German).

In addition, if you are not running a Linux machine similar to mine there might be some extra difficulties adapting the code to your build environment. In particular I am not using AVR studio and this distribution does not include any project file for it. I am using avr-gcc, make and avrdude to build and flash the images. However, pre-built firmware images are included, if you are happy with the firmware out of the box.

The PCB files and the firmware are open source,  so build your own!

Continue reading Key-Tap: A hardware configurator for the Amiga 500

Changing the battery on a memory expanstion to a CR2032 battery

An A501 with a CR2032 cell replacing the battery.

The batteries used for the backup voltage for the real time clocks and SRAM settings in vintage computers are a real nuisance today. These were used in nearly all personal computers back in the 80s and beginning of the 90s and every single one started to leak and damage the PCB of the surrounding system. In the Amiga 500 they are used for the clock on trapdoor memory expansions. If you have one with such an ancient battery, it should be removed immediately. Here I describe, how a standard CR2032 coin cell holder can be fitted in place of the old battery to keep the clock running. Continue reading Changing the battery on a memory expanstion to a CR2032 battery

Electronics Projects

This Blog will document some of my Electronic Projects I am working on or have finished. I am mainly interested in creating new hardware for vintage computers to improve the fun and usability.