Virtual Instrumentation System

Reading MscThesis Program Source Code Disks


Introduction

All of the development work for the Msc Virtual Instrument system was performed on a HP64000 software development platform. All of the code was written in Zilog Z80 and Intel 8051 assembler code. The HP64000 system's had a 5.25inch floppy disk and a special tape cartridge for archiving the source code. Some of the Virtual Instrument software was backed up onto 5.25inch floppies. I had stored these floppies along with other past development source code.
The raw floppy disk format and floppy file system was special for the HP64000 systems and no current systems could read the floppy disks. No old HP64000 platforms were available to me for recovering the data so I set about developing a simple tool that would run on a current system to recover the data.

The Floppy Disks

The 5.25inch floppy disks were in good condition. Some did not have write protect tags on them so these were added as appropriate for safety.
Pictures of floppy disks

System Used to Recover Data

We use, at BEAM, workstations using the Linux operating system running on PC hardware. This is a very flexible platform allowing raw access to hardware such as floppy disks. I had also kept some old 5.25inch 1.2M, 720M and 360M floppy drives. Current PC hardware can still use these older 5.25inch drives.
So the platform used for recovery of the floppy disks was a RedHat 9 Linux system running on standard PC Pentium 4 hardware with a old style 1.2Mbyte 5.25inch floppy drive installed.

Discovering Disk Format

I installed and used the Fdutils package (fdutils-5.4) to determine the raw floppy disk format and to read the raw data off the floppy disks. Information on this package is available at: http://fdutils.linux.lu/.
Using these tools the format of the floppies was determined as:

Data transfer rate
Double Density MFM (rate = 1)
Tracks
40 (double step on 80 track drives)
Sectors
16 sectors (0 through 15)
Sector size
256 bytes

Reading the Raw disk image

A bash shell script was developed to read the entire disk image into a file on the host system. This utility uses the Fdutils package to actually read the data from the physical disk. This shell script is in the file hp64000ReadDisk.
This was used to read the entire contents of the floppy into a system file. This enabled me to investigate the high level format of the floppy disks without having to further access the floppy disk. The original floppy disks are thus only read once by this operation.

Discovering the HP64000 File system and reading files

I searched on the internet for information on the format used on HP64000 floppies. Eventualy I found some sketchy information including some supplied by Bob Maxwell. This, together with looking at hex dumps of the floppies contents, helped me piece together the HP64000 file format in enough detail to enable me to write a simple C++ program to read the disks directory and copy the contents of the text files contaiend out to the hosts hard disk. The source to this program is in the file hp64000Copy.cpp.

I then used this utility to read the file contained in the floppy disk image files to the hosts hard disk. The contents of these files was examined and compared with code in the Msc Thesis to check that all was Ok.