Spinning up the first 8″ disk

PDF Eh? – Another Hackathon Tale

Proceeding with our 8″ recovery project: After a short while the 24V power supply and the cable adapter board arrived from the U.S. Both have power requirements and fit traditional PC power cable sockets. To actually connect the 8” drive without external power supplies the machine should contain a 3.5” floppy disk power connector and a standard molex power connector (for the 5.25” and 8” drives, the latter one via the voltage adaptor). Having wired all this (using the cables crafted), the setup for the 8″ floppy reading experiment reached an initial working status.

Power adaptor module
The power adaptor module and the appropriate cable to provide 5 and 24V to the drive

No one in the team was really familiar with the drive. Therefore some preliminary tests were run with standard floppy drives before the actual tests with the 8″ Mitsubishi started. To create a baseline for the experiments the two machines were checked with both 3.5″ and 5.25″ drives and subsequent floppy reads (1.44 MByte floppies for 3.5″  drive and both 360 KByte and 1.2 MByte floppies in the 5.25″ drive). The drives and controllers were confirmed to be properly working. Incidentally another researcher wanted to get data off his old 5.25” DOS formatted floppy disks, which worked flawlessly (either image reading using dd tool or simply copying data using Linux mtools).

(Not) Setting up the PC

The 8″ drive is a Mitsubishi M2896-63-02M with an unformatted capacity of 1,6 MByte, a track density: 96tpi, double density (DD), double sided (DS). Furtunately, the BIOS settings in the PC do not really matter as they can be overridden later on. The only prerequisite is an enabled floppy controller. Independent of the actual BIOS setting, Linux allows a couple of different values to be set when loading the kernel module. The module “floppy.ko” takes (repeated) parameters in the form of floppy=0,1 (first one indicating the physical floppy drive, second one the type of floppy). Nevertheless, the Linux Kernel is not aware of 8″ drives and has no specific settings for them in the module. Finally, the 8″ drive was connected and the BIOS of the machine configured to 5.25″ drive. The drive actually reacted to commands (e.g. by flashing the access led) issued by the controller e.g. when loading the kernel module or some program trying to access the drive.

HP machine BIOS settings
Configuring the BIOS of the HP office machine used for the experiments

First data reading and writing experiments

To conduct some preliminary experiments on the drive, without endangering the original material, an otherwise unused 8″ floppy (of unknown quality) was taken from a display case in the computer centre (small “museum” like collection of old storage media). The idea was to run some reading and writing experiments and see if the floppy can be formatted and read. One of the challenges is the unknown characteristics (regarding fitness) of both the floppies and the drive. For the latter a spec sheet is available which came with the drive, but it was not apparent to which degree the controller/drive combination would be able to read floppies which were created with completely different systems. The same applies to the differences of the kernel configuration. It only officially knows about 5.25” drives and has no knowledge about 8” drives. To get some initial information to start with, the wikipedia on 8″ drives was consulted. Unfortunately, there were a couple of systems listed using 8″ drives quite differently.

Nashua floppy in Mitsubishi drive
Using a 8″ floppy disks from own resources (storage media mini hardware museum in a showcase)

 

Using the BitCurator Linux Environment

The BitCurator pen drive / USB stick was directly booted on the experiment PC to avoid any hardware emulation a virtualization layer might introduce.

The number of tools in this particular setup is limited to the floppy and raw IO tools available with the Linux operating system for the moment, such as:

  • getfdprm – prints the current configured disk geometry (number of sectors, track and heads)
  • setfdprm – sets the current disk geometry (not all parameters could be chosen freely)
  • floppycontrol – configure the floppy driver
  • fdformat – low level floppy disk formatting tool
  • mtools – high level DOS filesystem utilities to directly access the disk without mounting it to Linux filesystem tree
  • dd, dd_rescue – low level block device tool

When doing the first experiments the kernel or tool messages indicated an active write protection. That disappeared for an unknown reason after a while (we have to admit that some notes disappeared after reboot because not properly saved on the stick). The re-configuration of the drive to WP (honour write protect) or NP (not protected) did not change anything in the ongoing formatting tests with fdformat. At some point it was possible to low level format the test Nashua floppy with a rather wide range of settings, but the verification failed for every setting. Most of those formatting tests run smoothly, as known from 5.25” floppy operation, by just a stepwise movement of the read/write head. Some settings (higher density ones) produced strange jumps of the head (odd sound). The DBIT controller was then displaying the same track number on the two digit seven segment display as the fdformat was giving for its operation.

The complete setup consisting of the PC with the 8" drive attached
The setup consisting of an older HP office PC with the Mitsubishi 8″ drive attached booting a recent BitCurator Linux

Finally we did a simple (naive) reading test by inserting the disk and running a directory listing command (mdir a: and dd if=/dev/fd0 of=image.fd0). All read tests of different disks (trying the archived disks too) primarily failed. The naive approach has to be extended to a more informed step-by-step experiment. More background information and understanding is required to properly understand the kernel messages and react to them:

...
[   44.320115] status=10
[   44.320116] fdc_busy=1
[   44.320119] do_floppy=main_command_interrupt [floppy]
[   44.320121] delayed work.function=ffffffffc02e32a0 expires=25
[   44.320122] cont=ffffffffc02eb460
[   44.320123] current_req=ffff8800b83b9e30
[   44.320124] command_status=-1
[   44.320130] floppy0: floppy timeout called
[   44.320134] blk_update_request: I/O error, dev fd0, sector 0
[   44.320139] floppy: error -5 while reading block 0
...
;

186
reads

Leave a Reply

Join the conversation