Software spotlight: Cassette software for the IBM PC
While people stick their noses up at floppies these days (or any physical media for that matter), few realize that the original IBM PC and PCJr both supported an even more primitive form of program storage: audio cassette tape.
First, a slight clarification. It turns out that the "Diagnostics 1.02" we had posted is actually the "Advanced Diagnostics 1.02", so that has been moved to a different release. And now we need the standard 1.02. It appears there were 4 different diagnostics releases.
When the IBM PC was designed, adding a cassette tape port for storage was a fairly logical thing to do. Home oriented systems like the Apple II, TI-99/4a, Commodore, and TRS-80s could use audio tape storage, and had many published cassette tape titles. Many people already owned cassette tape recorders, and tape recorder systems were vastly less expensive than disk systems.
The obvious problem with cassette tape storage was that it was sequential access only, and very slow.
When the IBM PC was released in 1981, floppy drives were catching on. But it still wasn't absolute certainty how available floppy drives would be on the market.
In theory, having a cassette tape option helped protect IBM against market volatility. But some believe the only reason IBM added a cassette port was so they could market a lower cost "base model" without floppy drives that was TECHNICALY functional.
As it turned out, most of the business market that adopted IBM PCs were more than willing to spend the extra money for a floppy drive. This, even though only single sided "160k" drives were initially supported and readily available. It is possible some may have purchased a floppy-less base model only to add their own existing floppy drives.
So how does this work?
An IBM PC equipped with no floppy drives, or if disk boot fails, will boot directly to ROM "Cassette" BASIC. From there, you can load from, or enter and save a program to cassette.
IBM did not manufacture their own connector cables (except for the PCJr) or cassette recorder. The IBM PC used the same cable as the TRS-80, and could use any decent quality cassette recorder.
Annoyingly, there is no way provided to access the disk system from ROM's Cassette Basic. Similarly, there is no way provided to access the cassette from PC-DOS's Disk Basic.
You can use a computer or mobile device to play back the cassette file. But you may need to adjust bass and treble settings, and not all sound devices easily permit this (yet they will have a zillion other options).
Treble and bass settings essentially muffle the audio, reducing static and hiss. Unfortunately, our cassette programs ARE static and hiss!
Cassette operation in IBM PC ROM Cassette Basic is a little odd. When you save a program to tape, you must give it a name. Then when you load the program, you must specify the same name - or it won't load. For example, to load a program named Hello, you would type:
I guess the idea is that you can give it a name and then run through multiple programs on the tape until it gets to the one with that name. It will print the name of any programs it skips. But how are you supposed to know the name in advance? Most other cassette systems simply load the first program they encounter.
IBM BASIC doesn't prompt you to press play or stop, and it isn't very informative when something goes wrong.
The TI-99/4a was much friendlier, but hey, IBM's got to be IBM.
The IBM Advanced Diagnostics cassette consists of a two part program. The first is a BASIC loader stub. The second is a binary machine language program that the stub loads.
To begin loading the diagnostics, where "ldcass" is the program name, type:
Since computers can't "pause", you must hit the pause button on your player software the moment the loader stub finishes loading (listen for the second relay click). Type "RUN", and then resume playback.
The loader stub also provides the ability to copy the advanced diagnostics to a new cassette tape.
This involves loading the stub, saving it as "ldcass", then typing "run 100" which will load and re-save the binary machine language portion.
Details are provided in the stub's program listing comments. If you are transferring from computer to a real cassette recorder, this also involves switching the cables.
Interestingly the diagnostics program does have an option to test the floppy drives, although it can't do anything else with them. In the event of a floppy system failure, one could still load and run the cassette diagnostics.
It turns out that the posted version is actually the "Advanced" diagnostics. The Advanced diagnostics have more testing options than the standard diagnostics shipped with the IBM PC.
I have revised the download and added a "fresh" recording sampled directly from a 5150's cassette output. This should contain less distortion, and may work better for some people.
The standard "Diagnostics For The IBM PC" were bundled the IBM Guide To Operations manual shipped with each IBM Personal Computer.
It appears that there were two versions of the GTO manual, one for a floppy system, and one for a cassette (floppy-less) system.
From some research and extrapolating from Minuszerodegres.net , the following GTO manuals would have shipped with early IBM PC model 5150 systems.
Title Spine Document GTO "First Edition (August 1981)" 6025000 6025003 Floppy Diagnostics 1.00 - 6172230 GTO "First Edition (August 1981)" 6025117? 6025113? Cassette Diagnostics 1.00? - ??????? GTO "First Edition (Revised April 1982)" 6025000 6025003 Floppy Diagnostics 1.02 - 6081552 GTO "First Edition (Revised April 1982)" 6025117 6025113 Cassette Diagnostics 1.02 - 6081562
All later Guide To Operations manuals were floppy-only.
The "IBM PC Advanced Diagnostics" were bundled with the IBM Hardware Maintenance Service manual, a manual intended for repair personnel and advanced users. Each manual contained both a floppy disk and cassette tape.
Again, from some research and extrapolating from Minuszerodegres.net, the following HMS manuals would have shipped.
Title Spine Document HMS "First Edition (August 1981)" 6025072 6025075 Advanced Diag 1.00 - Disk 6172231 Cass 6172401 HMS "Revised Edition (July 1982)"? 6025072 6025075 Advanced Diag 1.02 - Disk 6081557 Cass 6081566
All later Hardware Maintenance Service manuals were floppy-only.
In summary there should be 4 different diagnostic cassettes:
- Diagnostics 1.00
- Diagnostics 1.02
- Advanced Diagnostics 1.00
- Advanced Diagnostics 1.02 (we have this one)
Were there any other programs released on cassette? Well, one, apparently. "IBM Typing Tutor" but no one has ever seen one!
It was listed in a 1983 IBM product list
And the binder with the disk version has both the disk and cassette part numbers printers on it.
Winworld does have the disk version: https://winworldpc.com/product/ibm-typing-tutor
Is that it really it? Nobody seems to have ever seen any commercial cassette programs.
There is at least one other program that can USE the cassette port, although it is not for storage:
"One program that specifically supports the cassette port is Electronic Arts Music Construction Set. This program has a setting to output 1 note PC Speaker or 4 note (tweaked) PC Speaker music, and has an option to output it to the internal PC Speaker or the cassette port. 4-voice output may sound better through a powered speaker than the internal speaker, but the basic sound will be the same."
The WinWorld library has Music Construction Set: https://winworldpc.com/product/music-construction-set
"There's at least one early game that supports saving to a cassette (Galaxy from Avalon Hill) "
The IBM PCJr, the home-oriented scaled down follow-up to the IBM PC, also included a cassette port.
It required a different connector cable, this time one manufactured by IBM.
There are no known PCjr cassette titles, not even a diagnostic.
The PCJr, did, however add support for ROM cartridges, for which there were a few, including Lotus 1-2-3.
Once again, a cassette port on a home computer still made a bit of sense at the time, and IBM offered a floppy-less base version. But at this point it was even more likely that the only reason for it was the low base price.
IBM XT and later
The IBM Portable Personal Computer model 5155 and IBM XT Model 5160 omitted cassette ports, but retained ROM basic for compatibility.
Clones, such as the Columbia Data Product 1600, Eagle PC, and Compaq Portable, also omitted cassette ports as well as omitting ROM basic.
One Russian clone was reported to have had a cassette port, and early revision Compaq Portable motherboards had an unpopulated component area that could have been for a cassette interface.
XT class computers no longer supported a configuration with "zero" floppy drives, even though that had been technically valid on the IBM PC model 5150. Software was often hard coded to expect a floppy drive, even if it ran from a hard drive. For example the IBM Assistant/PFS software crapped itself running in DOSBOX because it reported zero floppy drives.
Although Cassette BASIC was retained for ROM compatibility on XT, AT, PS/2, and some Aptiva computers, it was useless as it could not save programs. With a hard drive installed, users of these machines would never even see ROM Basic.
IBM's PC-DOS Disk Basic would not run without Basic in ROM. In all probability, this was initially done to save RAM, as it re-used existing code in ROM. Microsoft's Basic and GWBASIC, shipped with most clones, did not have that restriction. Oddly, QBASIC in the first release of IBM DOS 5 artificially required ROM Basic to run, probably due to licensing reasons.
The IBM PC 5150 was discontinued in 1987, and even the last one off the assembly line had the cassette port.