Hayes is best known for modems and for establishing the ubiquitous AT command set as the standard for all modems that followed. Their external modems, made of aluminum, fronted with jewel-like LED status lights were the top shelf of modems. As a kid, Hayes modems were a status symbol. Hayes also made other hardware products like the Chronograph, Transet, and InterBridge all with the same footprint designed to stack on one another– the “Hayes Stack” was a brief marketing campaign.
While you may be familiar with Smartcom, the series of terminal programs for their Smartmodems, you may be surprised to learn that Hayes also created a database application.
What follows is my journey over several months in 2021 in researching, salvaging, repairing, and archiving an unknown piece of computing history.
Hayes Please was created in 1984 as a database management system. It was to take on other database software on the market like VisiFile, PFS:File, Datastar, and dBase.
In May 1984, market leader Hayes used its success as a cash cow, expanding into general software with its “Please” database-management software, with a menu-based command structure. Dennis Hayes indicated that his company had intended to create software since the start.Hayes Corporation History: http://www.fundinguniverse.com/company-histories/hayes-corporation-history/ retrieved February 2021.
I hadn’t heard of Hayes Please before and there’s very little, if any, information online about it. I purchased both the Please application and the Contacts template from a seller an eBay located in Georgia (home of Hayes Corporation) for $150. A steep price for a gamble that the disks would be readable, but I felt the historical significance was priceless and everything seemed to be in very good condition.
The user guide comes in a small three-ring binder and is embossed with the Hayes wordmark. It’s professionally printed with color and chapter tabs. In the back, there’s a sleeve for the two disks. I also got the Contacts expansion pack, which came in a standard software box with a manual and disk.
Reading The Disks
The application comes on two disks: the program and sample data. After examining the “cookie” inside the disk jacket, I noticed possible mold. Realizing I may only get one chance to read this disk, I decided to first clean the disk surface with isopropyl alcohol and cotton swabs to increase my odds of success. I used a 3D printed jig that consists of a two-piece knob that screws together over the hub and a jacket holder. It allows you to slowly turn the disk while gently cleaning the disk surface. I did this to both sides since it’s likely a double-sided disk.
I used my “tweener” Pentium PC with 5.25″ floppy drive running Windows 98 and ImageDisk to attempt to create an image file from the disk. As soon as it started to spin and I could hear it– loudly, typically not a good sign. ImageDisk detected a 320k floppy of 40 tracks, 8 sectors/track, 2 sides. (8 sectors is unusual; 9 sectors is more common.) Most tracks were able to be read without issue, some requiring several tries. However, 5 tracks failed completely (all on side 0).
I also own an Applesauce floppy controller and a software update allowed it to read MS-DOS floppies. I figured coupling that with the ability to read flux-level data from the disk would give me more hope in salvaging the bad tracks. Applesauce read the disk, but it too, encountered read errors.
Note: Since 2021, Applesauce has gained the ability to connect to standard PC floppy drives. I’d likely now go this direction to flux the disk first rather than ImageDisk.
I used a Disk ][ drive with Applesauce which is a single sided drive. I flipped the double sided disk over to image the other side. This worked, in that I got a flux image but it wasn’t interpreted as MFM MS-DOS data.
I contacted the author @DiskBlitz John Keoni Morris:
It is probably highly confused since the MFM data stream will be in reverse. But It also won’t be able to capture all of the tracks as the heads are offset from each other in a double sided drive.— John Keoni Morris (@DiskBlitz) February 18, 2021
This means my flux capture of side 1 won’t be useful at this point. So, I started examining the results by determining if there were differences between the ImageDisk and Applesauce versions of side 0.
Fitting The Puzzle
I split the disk images into separate files using a quick Python script, creating forty 4,096 byte files, one for each track of side 0 of the disk. I then used “diff” to compare them. This yielded 8 tracks out of 40 were different. I examined the contents of each of these tracks and found that the Applesauce image was successful in reading 2 of the bad tracks and ImageDisk image was successful in reading 3 of the bad tracks. I swapped the 5 good tracks into the image. That left 3 missing tracks (37-39). My Apple Disk ][ drive can’t go beyond track 36 so I couldn’t capture anything to compare with. I’ll have to proceed with the tracks from the ImageDisk image.
Excited, I wrote the (now hopefully) repaired disk image back to a new floppy and tried it. It launched a splash screen but promptly shows a disk media error. Drat.
This time, I tried copying the individual files from the floppy to the hard disk. Everything copied fine, except for a file called BASRUN.EXE. I researched and found that this is the BASIC compiler runtime module that is part of the IBM Basic Compiler 1.0 (which means Please is written in BASIC). Parts of BASRUN.EXE are likely contained on tracks 37-39. Since this is a standard module included with many different compiled BASIC applications, surely I could locate a copy online and simply replace it?
After some searching, I found a ZIP that contained BASRUN.EXE of the exact file size 31,744 bytes of the original. I copied it to the folder and typed PLEASE and hit enter. I was greeted with the Hayes Please splash screen!
I was able to create a new database and describe the schema. However, when I selected F2 to add new records, it fails and exits with an error of Input past end in line 7510. Drat.
Was it reading corrupted data? Was it reading a file incorrectly? What files are being opened? I decided I needed to move to emulation to try to debug it further. I used DOSBox to run Please along with fs_usage on my Mac to monitor which files where being accessed. This revealed that the Add/Change/Delete/Scan function of F2 are contained in PLEASE02.EXE. Were there still bad tracks that needed to be salvaged from the original disk? I began to re-examine the tracks but didn’t find anything unusual about the data (i.e. no large blank sections of 00 or E5 from a failed read). I set it aside for a few days.
Maybe there’s different versions of the BASRUN.EXE file and I just picked the wrong one? I looked around and eventually found another copy of BASRUN.EXE that was slightly different (first three bytes 0x4D5AFF rather than 0x4D5AAA, plus a few other differences), but still the same file size as the original. I swapped in this version and the error went away! I was now able to add and change rows in the database. I tried all of the menus available and it seems to be working. At this point, I believe the application has been recovered successfully.
Hayes Please Screenshots
With things working properly, we can explore the menus in Please. For these screenshots, I’m using the Contacts template database.
You can download Hayes Please from the Internet Archive. It includes the reconstructed program disk, sample data disk, contacts disk, and scanned/OCRd manuals.
Your Support Matters
If you found this interesting or useful and you’d like to support my preservation of historic software, you can:
- Buy yourself a retro goodie like one of my WiFi232 Internet Modems.
- Buy some of my unique artwork created with vintage pen plotters.
- Buy me a coffee on Ko-Fi.
- Share this post with others that might find it interesting.
- Make a comment below about what you found interesting or useful.