• Please review our updated Terms and Rules here

IBM 5100 / 5106 file system usage demo

voidstar78

Veteran Member
Joined
May 25, 2021
Messages
915
Location
Texas
Posting here because the IBM 5100 is the IBM PC ancestor. But if have to move to the minicomputer section, I'll understand :D

Excited to present an actual "usage video" of this system with all original hardware, that includes the tape file system and multi-monitors! Also, a demonstration of saving RAM to a file.


More details in the "more..." comments of the video.
 
No commentary in video. I may get time to do a version with commentary later. Or I'll at least be adding some "cc" to describe the main things going on. There is a kind of table-of-contents in the video description (expand "more...").

The end has a version of Corti's original "ball bounce" ported to the 5100. Only a few adjustments were needed (screen symbol index and disable the audio code - the original audio code from the 5110 caused some interesting behavior!).

We don't know how much longer these pre-1980 systems will continue to function, so the video is intended as a historical reference.

I've compiled a set of notes here about the IBM 5100:



I think an MCU could be used to act as a proxy to the entire tape unit. Someday I hope to get time to work on that. The IBM MIM documents a lot of details about it, but some of the exact timing we might need an o-scope to discover from a working unit. But just using the 24-pin tape unit connector on the A1 board, we should be able to use that MCU to respond to any commands sent to the tape unit (and should work on both the 5100 and 5110 Type 1's, with their existing Executive ROS code).
 
NOTE: I've finish adding "subtitle" cc comments to the video, as a form of annotation to describe what is going on.

It was "relaxing to use" as an actual file system (in contrast to the audio-tape based systems and having to deal with index numbers). The stepper motor running that tape drive is about the size of a fist. I don't know the exact RPM, but IBM did put an extra fan (on the side) for the Type 1 models that have the internal tape drive unit. (not sure if the fan is for heat, or just to help keep dust out - or probably both)

Also, it's fast because they turn the screen off! :D


I know on the late 1970s/1980 audio cassette tapes, it's several minutes to read/write 32KB (somewhere between 70-200 bytes per second, depending on year/model involved). I'll have to think of a way to write 28K of "something" on the system to write to a file (the system uses 4KB, it's why the display shows only 12KB being available).
EDIT: Actually, I just came across the following (below) in the MIM... Apparently, we can use CMD-DIVIDE to just dump all memory to the next available 16KB file. So do that, then double the resulting time to approximate ~32KB. Maybe next weekend I'll get time to try it out. (curious if this dump can then be re-loaded later)
1669022327752.png




I was trying to read up on how the older 9-track tapes worked. I know the BOT/EOT is reflective tape rather than holes. The closest notes I came across was here (page 9, where pag8 and 10 talk about various problems that can arise with tapes):
I think short version is: they can write in parallel and are substantially more complicated. (I was just wondering if it was a similar interspersed format/data track, but nope)



Also seems IBM is still supporting old tape formats (z/VM and CMS system), along with modern tape systems in the cloud-servers (in 7TB-20TB capacities -- but it notes their speed as 300MB/s! seems slow relative to the capacities mentioned, but maybe that's a physical limit of the media involved).

But they have this "stern" note about QIC:
1669020023789.png
 
Last edited:
Playing around with the tape drive on the 5110: the procedure for loading/saving memory dumps is similar on the 5110, but somewhat more complicated. The DCP doesn't give you a nice prompt input, instead you have to specify some "RD" / "RW" command with a bunch of command arguments (that you must lookup in the manual).

But another interesting thing, I was able to make 64KB files (the MIM had a diagram implying 16KB was max file size). I did a "MARK 64,9999,1" command (the MARK command seems limited to a cap of 9999). It would let me issue the command, but to be more practical (it's about 24 seconds to MARK each file), I instead did "MARK 64,2,1" and verified I could make two 64KB files. Then I verified the READ speed is about 2800 bytes per second.

That's way faster than the 50-200 bytes per second on the later microcomputer audio tape cassette units).
However, that's way slower than the 5110's disk read speed of 48,000 per second.

That the very first DC300 format is saying 204,000 byte capacity - which is just 3x64KB files.
 
Page 55 of the 5110 BASIC User's Guide says that files can be up to 204 KB long* or one file per tape. Not exactly practical but a possible option. More useful is the fact that different sizes of MARKed files can be done in successive actions. Several small files followed by a large file seems to be the tape configuration needed to handle indexed record I/O. Having tape work the same way as disks is a great convenience for software.

Note that means you have double density disk drives. Setting the system to produce single density mode will halve performance. The option is mentioned somewhere for compatibility with other IBM systems. Write speeds will be a lot slower but there is a sizable buffer with each device so copying will be quite speedy which is how the claimed tape data transfer rate of 4,000 bytes per second was possible.

* I don't know what happens when trying to create even larger files on extended length tape. I expect the tape would just keep creating until hitting the EOT marker.
 
Last edited:
The Customer Support Functions Reference Manual explains how to format diskettes with 9 different formats provided. Five are exchange formats; 3 are maximum capacity for data and programs; the last one is maximum capacity for data files only. I doubt there is much reason now to choose any of the 6 single density formats.

It is a deceptively useful manual if one has the software that goes with it. Data recovery, high speed copying, and disk compression (which is more like modern defragmenting) are parts of what can be done. The manual also spends more than 20 pages on the sort feature but the diskette with sort was seldom ordered with the 5110. Expensive and not much need unless doing a sizable database.

Fast loaders of various types and upgraded tape mechanisms closed the gap on the transfer rate between home computers and the 5100's QIC system. QIC had a major advantage in terms of speed of searching for a specific record. The closest competitors in terms of data transfer rate were the continuous loop tape systems but those had to keep the capacity low to prevent seeks from taking too long since the tape sometimes needed to loop the whole way through to reach a sector just prior to what was in use.
 
Last edited:
I see, the original ~300ft DC300 tapes did have a capacity (of a single file) of around 200-220 KB. From the General Information Manual:

1670100725173.png



So, experimenting with the Imation DC6150 tape on the 5110, which that tape states it is 620ft of material. (it says "150 Mbytes" but I think any byte-capacity of tape is meaningless, since it is relative to whatever the nature of the system it is being used on? in any case, we're not storing anywhere near 150 million bytes here)

Code:
MARK 500,1,1   FAILED, could not make a single 500KB file
MARK 400,1,1   OK, was able to make this file  (I think the actual single largest file is about 450KB) [it takes about 3 minutes to mark this size]
MARK 220,2,1   OK

MARK 16,30,1   FAILED (on file 0027)


MARK 16,26,1   OK   (this takes a little over 3 minutes; this is 26 x 16KB files)
MARK 8,2,27    OK  (did this after the above MARK)
NOTE: MARK 17,1,27 failed ERR 567, there is not 1 more full K to give on the tape.
NOTE: 1x16KB or 2x8KB works, but 16x1KB probably will not.

This implies a 432KB tape capacity on 620ft - the tape material does move essentially entirely from one reel to the other. Halving the material and keeping some prudent buffer from the very end, then 204-207KB for the 300ft tape is fair (it might get up to 210-220KB if you risk working at closer to the very end, or if the tape is actually 330ft?).

But in terms of number of files and sizes, it's not quite that simple since each file itself has a large header overhead -- in other words, I don't think I could have 432 x 1KB files, but rather somewhere between 200-300 of those 1KB sized files.

I think the IBM manuals and PR might be a little better served with that kind of chart:

if you have 620ft of tape,
432KB 1-file
....
16KB 27-files
8KB 50-files (my estimate)
...
1KB 230-files (my estimate)

And similar for the 300ft tape. The stock system is 1KB increments (2KB, 3KB, 4KB, 5KB, etc).

There is nothing really sacred in this file arrangement. It is just code in the Executive ROS, which does have some convenient "entry points" (functions or branch points) for things like seeking/finding to a file, reading/wrting a portion of the file. Those are sort of like "BIOS" calls, for applications to have a standard format to work with. So, if I didn't want to invent my own file format, but wanted to save some bytes, I could jump to those locations. But if I wanted a more efficient file system (e.g. smaller headers and larger data capacity), one could technically code that up in PALM machine code.


EXAMPLE: Below, the last two files (27 and 28) are 8KB instead of 16KB (showing the "variable file sizes"). I couldn't make 32x16KB files, so I tried 26x16KB, and then incrementally added files until I reached the EOT (err 567). I could add 1x16KB more, or 2x8KB more. But I could not add 1x17KB or larger (err 567).
1670101612945.png


Another note: the REWIND seems to have a 150 second time out. If it keeps rewinding for 2min 30seconds, then ERR 004 gets reported. You can issue another REWIND and keep on rewinding. The timeout seems to correspond to the 207KB file size (and the err 004 at timeout will happen whether you have one large file or many small ones). Anyhow, it appears that yes you can have a file or files for as large of a capacity as the physical tape media allows -- err 567 is reported when you've reached the end (EOT).



I understand each data record (file) has format records of 290 bytes that is in-between each 512 byte (+header/footer) portion of a file. I'm not sure why the Format Record seems so excessive - I assume it's just "good backup" in case portions of the file get corrupted. It also implies that technically a file could have a "variable format" as piece parts could have a different Format Record.

The header record implies 4-bytes for file number and "number of bytes" per file - so I was surprised to be able to make files larger than 64KB. So maybe the document is more notional than literal. (these same notes are in the 1979 IBM 5110 MIM, as they appear in the 5100 MIM):
1670102052570.png



NOTE: This 432KB... Even if you double or triple it because of header and format record overhead, that's ~1.2MB (in terms of actual total number of bytes used). Not the 150 "Mbytes" listed on the DC6150 packaging. Some other system must be far more efficient formatting of the bits to get up closer to 150MB capacity, or operates more slowly. Recall the IBM 5100 system has the tape at constant speed - so aside from the format record overhead, when any bit is written I imagine it's several feet that goes by quickly.
 
I don't recall my 5100 timing out rewinding a DC6150 tape --- could this be a 5110 thing? (Or maybe a BASIC thing, as I don't use BASIC much.)
 
Confirmed and agreed, this isn't happening on the 5100. I made ~430KB of files there, did a REWIND while at the end, and no interruption (and it took a little over 3 minutes).

So, I did this again, on the 5110 - running the stopwatch also, and yep, still at 2min 30second was an ERR 004. Maybe as a "lesson learned" they added this timeout as a "just in case." Only case I can think of is maybe if the tape breaks or comes off the reel, and it ends up rewinding "indefinitely" (like overnight or a weekend), it might damage the motor? (or at least excessive wear).

There is some "timeout" code in the annotated execros.asm (just using some large values, then countdown by 1), and mingled in around the tape operations stuff (around 0x7800). Seems independent of the language switch. Maybe if the same code is used for disk operations, the extra protection was added to avoid disk drive damage?
 
Back
Top