# ABBA Drive Switch

NOTICE: You perform any modifications at your own risk. I will not be held responsible for damage to your computer or yourself from you performing modifications based on this documentation!

Some Amstrad CPC software is designed to run from drive A only. If the software is run from drive B it will not function correctly. To run the software from drive B, it must be modified, or a drive switch must be used.

The drive switch is designed for a 2-drive system ONLY.

After operating the switch:

- the drive that was accessed as A will now be accessed as B (A->B),
- and the drive that was accessed as B will now be accessed as A (B->A).

The drive switch is also known as the "ABBA drive switch" (i.e. A->B,B->A)

The switch has two positions:

Position 1:

- CPC664, CPC6128 and CPC6128+ systems:
  - The internal 3" disc drive will be drive "A" and any commands directed to drive "A" will use the internal drive. A external disc drive (3.5", 5.25" or 3") will be drive "B". Any commands directed to drive "B" will use the external drive.
- CPC464, CPC464+ or KC Compact with a DDI-1 disc interface:
  - The drive connected to the interface will be drive "A" and any commands directed to drive "A" will use this disc drive. A second drive (e.g. FD-1) which is connected to the disc drive of the interface will be drive "B" and any commands directed to drive "B"will use this drive.

Position 2:

- CPC664, CPC6128 and CPC6128+ systems:
  - The internal 3" disc drive will be drive "B" and any commands directed to drive "B" will use the internal drive. A external disc drive (3.5", 5.25" or 3") will be drive "A". Any commands directed to drive "A" will use the external drive.
- CPC464, CPC464+ and KC Compact with a disc interface:
  - The drive connected to the interface will be drive "B" and any commands directed to drive "B" will use this disc drive. A second drive (e.g. FD-1) which is connected to the disc drive of the interface will be drive "A" and any commands directed to drive "A"will use this drive.

### The switch

The switch is a DPDT (Double-Pole, Double-Throw) toggle type, which locks in both directions. It has 6 terminals.

The switch:

The connections:

Notes:

- On the CPC664, CPC6128 and CPC6128+, this switch must be fitted internally.
- On the CPC464, this switch is connected to the internals of a DDI-1 interface.
- if the drive switch is fitted to the internals of a CPC664/CPC6128/CPC6128+, then:
  - "DS drive A" is connected to DS0 of the internal drive.
  - "DS drive B" is connected to DS1 on the 2nd drive connector.
- if the drive switch is fitted to a the internals of DDI-1 interface, then:
  - "DS drive A" is connected to DS0 of the ribbon cable to the disc drives,
  - "DS drive B" is connected to DS1 of the ribbon cable to the disc drives.
- For a internal drive switch in a CPC6128:
  - DS0 is taken from IC206 pin 6,
  - DS1 is taken from IC206 pin 8,

- disconnect DS0 to the internal drive.
- cut the PCB trace leading to DS1 on the disc drive 2
- connect DS0 from IC206 to the switch
- connect DS1 from IC206 to the switch
- connect "DS drive A" to DS0 on the ribbon cable leading to the internal drive
- connect "DS drive B" to DS1 on the disc drive 2 connector on the PCB

### Technical Information

The FDC generates two signals ("US1" and "US0") which define the disc drive to be accessed. The table below shows the signal states and the corresponding drive:

US1 | US0 | Drive
--- | --- | ---
0 | 0 | 0
0 | 1 | 1
1 | 0 | 2
1 | 1 | 3

As can be seen from the table, the FDC can support 4 disc drives numbered 0,1,2 and 3.

The CPC hardware design ignores "US1" therefore only 2 disc drives can be used.

US1 | US0 | Drive
--- | --- | ---
X | 0 | 0
X | 1 | 1

The US0 signal is then converted to two signals:

US0 | /DRIVE SELECT 0 | /DRIVE SELECT 1
--- | --- | ---
0 | 0 | 1
1 | 1 | 0

Therefore the "/DRIVE SELECT 0" signal will be "0" only when the FDC wants to access drive 0 and "/DRIVE SELECT 1" signal will be "0" only when the FDC wants to access drive 1.

The drives should be setup so that they will respond to the appropiate signal. (i.e. drive A will respond when "/DRIVE SELECT 0" is 0, and drive B will respond when "/DRIVE SELECT 1" is 0).

The drive switch changes the translation of the "/DRIVE SELECT 0" and "/DRIVE SELECT 1" signals to the disc drives.

When the switch is in position 1, the signals are not changed:

- "/DRIVE SELECT 0" input to the switch will become "/DRIVE SELECT 0" output from the switch,
- "/DRIVE SELECT 1" input to the switch will become "/DRIVE SELECT 1" output from the switch,

Therefore:

- the drive that responds to "/DRIVE SELECT 0" will be drive A.
- the drive that responds to "/DRIVE SELECT 1" will be drive B.

When the switch is in position 2, the signals are swapped.

- "/DRIVE SELECT 0" input to the switch will become "/DRIVE SELECT 1" output from the switch,
- "/DRIVE SELECT 1" input to the switch will become "/DRIVE SELECT 0" output from the switch,

Therefore:

- the drive that responds to "/DRIVE SELECT 0" will be drive B.
- the drive that responds to "/DRIVE SELECT 1" will be drive A.