Fortunately, the disc drive designers considered existing equipment when designing the newer 3.5" drives - they made them pin for pin compatible. This makes it possible to use a modern 1.44Mbyte high density 3.5" floppy disc drive, thus eliminating the problem of sourcing 5.25" discs while also helping with transfers to and from newer machines.
Remember that the drive itself has no idea what data it is being asked to write to the disc surface so although drives today are intended to be used with PCs they can equally well write BBC formatted discs too.
Machine: | Location: | Disc controller: | Filing system: |
BBC B | IC78 | 8271 | Acorn DFS 1.20 or earlier |
Daughter board upside down in IC78 | 1770 or 1772 | 1770 DFS 2.00 or later | |
BBC B+ | IC15 | 8271 | Acorn DFS 1.20 |
IC16 | 1770 or 1772 | 1770 DFS 2.00 or later | |
Master | IC3 | 1770 or 1772 | Acorn DFS 2.24 or later |
Master Compact | IC6 | 1772 | Acorn DFS 2.24 or later |
The only remaining hurdle is with index pulses. The index pulse is a synchronising pulse used to work out where the first sector of a track is, it is measured (rather than timed by software) to allow for slight differences in the speed that the motor spins at on two drives from two different manufacturers.
A small hole near the centre of the disc lets through a beam of light once per revolution.
If a 1770 or 1772 controller chip is installed a 3.5" drive (selected as drive 0) along with a ribbon cable is all that is required, the next section can be skipped leaving only final setting up stage.
For the older 8271 disc controller that most people use this index pulse is problematic with 3.5" drives, leading to drive faults being reported - especially when loading large files. This is easily confirmed by entering the following test commands:
MODE 7 *DISC *SAVE test 0 +4000 *LOAD test 3000
This sequence will have failed to save the file, reporting something like "Disc fault 10 at xx/yy". The disc fault is entirely caused by a change to the drive interface after the 8271 circuit was designed where the index pulse is supressed after the head is stepped.
A patched DFS 1.20 (dubbed DFS 1.21) speculatively retries the "Drive not ready" disc error which can help avoid this 'step acknowledge' behaviour from causing a drive error.
Looking at the circuit diagram shows why this would cause a problem:
The index pulse comes in via a set of option links (to select whether the index pulse is on pin 4 for 8" drives or pin 8 normally), and an inverter. The yellow components divide the 8MHz clock down by 256 then by 16384 to 1.9Hz. The red and blue components are latches, one each for drive 0 and drive 1, which produce the "drive ready" signals for the 8271.
What this means is that there are is a timeout on the ready signals of 1.9Hz (about 520ms). As a 3.5" drive spins at 300 revolutions per minute (200ms per revolution) a missing index pulse causes the latches to time out and tell the 8271 that the drive is not ready.
This makes it slightly more difficult to recreate the missing index pulses as there is no convenient place to pick up the output of a light sensor. Instead, a timer and a small amount of discrete logic are all that is required to insert the missing pulses, with all of the circuitry hidden away neatly inside the existing drive casing.
The drive timing is also important: it ensures the drive is being accessed at the optimum speed, although it can be driven more slowly the drive will often be more noisy that intended. By example the Teac FD235 model of drive can step the head in 3ms and settle in 15ms following a step.
The timing is set by switch 3 and switch 4 of the row of 8 option switches in the bottom right hand corner of the keyboard. The following table summarises step options for the BBC B and B+:
Controller: | Step time: | Settle time: | Setting: |
8271 | 4ms | 16ms | SW3 closed SW4 closed (or *FX255,207,0 then press BREAK) |
6ms | 16ms | SW3 open SW4 closed (or *FX255,223,0 then press BREAK) | |
6ms | 50ms | SW3 closed SW4 open (or *FX255,239,0 then press BREAK) | |
24ms | 20ms | SW3 open SW4 open (or *FX255,255,0 then press BREAK) | |
1770 | 6ms | 30ms | SW3 closed SW4 closed (or *FX255,207,0 then press BREAK) |
12ms | 30ms | SW3 open SW4 closed (or *FX255,223,0 then press BREAK) | |
20ms | 30ms | SW3 closed SW4 open (or *FX255,239,0 then press BREAK) | |
30ms | 30ms | SW3 open SW4 open (or *FX255,255,0 then press BREAK) | |
1772 | 6ms | 15ms | SW3 closed SW4 closed (or *FX255,207,0 then press BREAK) |
12ms | 15ms | SW3 open SW4 closed (or *FX255,223,0 then press BREAK) | |
2ms | 15ms | SW3 closed SW4 open (or *FX255,239,0 then press BREAK) | |
3ms | 15ms | SW3 open SW4 open (or *FX255,255,0 then press BREAK) |
As standard the keyboard option switches are not present, these can be joined by soldering a small length of wire between the pads to set the options, or a more flexible solution is to solder a set of small switches into the empty holes (eg. part number 990-1701 from Farnell or equivalent).
As a temporary measure the equivalent setting can be changed with *FX255 (as shown), however this setting is not kept over a hard reset or turning the computer off so needs to be typed in each time.
For the Master series, its timing settings are held in battery backed memory instead:
Controller: | Step time: | Settle time: | Setting: |
1770 | 6ms | 30ms | *CONFIG.FDRIVE 0 |
12ms | 30ms | *CONFIG.FDRIVE 1 | |
20ms | 30ms | *CONFIG.FDRIVE 2 | |
30ms | 30ms | *CONFIG.FDRIVE 3 | |
1772 | 6ms | 15ms | *CONFIG.FDRIVE 0 |
12ms | 15ms | *CONFIG.FDRIVE 1 | |
2ms | 15ms | *CONFIG.FDRIVE 2 | |
3ms | 15ms | *CONFIG.FDRIVE 3 |
All drives are soak tested and fitted with the above described hardware solution, they are self enclosed with no exposed moving parts but don't have a beige outer case:
Option: | Price: | Comments: | ||||||
3.5" drive with index pulse modification and cables |
| Modified internally for use with 8271 or 1770 controller Fitted with BBC auxiliary power connector and approx 30" of ribbon cable |