Paul Kimpel
(mobile) +1-619-917-3756


*Subject:* [cctalk] Burroughs DCALGOL vs tapes [from dead computer language thread]
*From:* Paul Koning <[email protected]>
*To:* [email protected] <[email protected]>
*CC:* [email protected]
*Date:* Tue, 23 Jun 2026 14:17 -0700

On Jun 23, 2026, at 4:17 PM, paul.kimpel--- via cctalk <[email protected]> 
wrote:
<snip>
DCALGOL would have been no different than ALGOL for dealing with tapes, and I'm 
surprised you found it harder to do with the MCP than with OS/360 EXCP I/O. 
Depending on the block and tape label formats, you may have had to do your own 
deblocking, and possibly read the tape as unlabeled, but the MCP I/O Logical 
I/O subsystem was quite rich even in 1975.
<snip>
You had to understand how the file attribute settings worked when dealing with 
non-native tape formats, however -- I've seen that trip a lot of people up. As 
an alternative, a variant of Logical I/O called Direct I/O was available, which 
is user-mode asynchronous I/O that reads and writes raw blocks. It's basically 
a thin wrapper around the MCP's internal Physical I/O mechanism.

I know this is water long over the dam, but I'd be interested in hearing what 
kinds of issues you encountered, and if possible, a reference to the DEC 
formats you were trying to read
DOS labeled tape, so a file header of 14 bytes followed by data blocks followed 
by tape mark, repeat for more files.

The trouble I ran into, at least from my reading of the documentation, is that 
in unlabeled mode I could read the first file but MCP would treat the tape mark 
as the end and not go past it.  I wanted to do the normal DEC thing, giving the 
program a name to match where it would read the label, see if it matches, if 
not skip to the tape mark and repeat.  I could find no way to do that.

Quite possibly it was a case of lack of knowledge.  I did not know the OS in 
depth (having only spent that summer vacation on it).  And the staff wasn't too 
helpful to a semi-random outsider (son of a prof but not a student there).

On OS/360 the same was true for most I/O modes, except EXCP where I could issue 
a skip to tape mark command directly and keep going.

        paul

The way to get past a tapemark in Burroughs ALGOL was (and is) to use the close-without-rewind statement, "CLOSE(F, *)", where F is the file identifier. If you were not at EOF at that point, the MCP would space the tape to the next EOF. You could then continue reading the next file by doing an explicit open, or just start reading to do an implicit open. Two adjacent tapemarks was the typical convention for end-of-tape.

That would work with either labeled or unlabeled tapes. The B6700 MCP would read ANSI (then USASI) standard labels in either EBCDIC or ASCII from its beginning, but of course each OS had its own interpretation of the standard. The way to open a specific file on a multi-file labeled tape was to use a file title of the form "MFID/FID", where MFID is the tape volume name from the VOL1 label and FID is the name from the HDR1 label. The MCP would spin down the tape looking for that file, crossing reels as necessary. I don't know how well that would have worked with DEC tape labels -- there was some issue with doing it with IBM tapes, and I forget the details -- but you still wold have been able to step down the tape yourself using the CLOSE(F,*) method.

Sorry that you're learning this 50 years after you needed it.

Paul

Reply via email to