IEEE-488 on the PDP-11

Ethan Dicks ethan.dicks at
Wed Nov 17 10:15:38 CST 2021

On Tue, Nov 16, 2021 at 6:09 PM Christian Gauger-Cosgrove
<captainkirk359 at> wrote:
> On Tue, 16 Nov 2021 at 16:27, Ethan Dicks via cctalk
> <cctalk at> wrote:
> ... I have experience with IEEE-488 from my many hours
> > spent with Commodore PETs.
> >
> Hmm now that I'm reminded that a large proportion of Commodore's
> "stuff" was IEEE 488 or a serialized version thereof.

Yep.  All PETs have true IEEE-488, albeit a software-driven
implementation so it's not high-speed (few kb/sec).  Starting with the
VIC-20, they used that serialized version, because Jack Tramiel was
tired of the cost of cables and connectors.

> I kind of want to see now if an IBV11 and Commodore 1541 can be abused
> into cooperating.

I think it could be done.  The IBV11 can certainly keep up with the
6502 in the drive that's banging out the IEEE-488 protocol.

> (There'd need to be a small "box of stuff" to turn the real 488 bus to CBM's serial thing.)

You would need a box like that (they do exist) for talking to a later
device like the abundant 1541 floppy drive, but you could just plug
the cable right into an older drive for the PET, a 4040
dual-double-density 5.25 drive, or an 8050/8250 drive (higher density,
more tracks), or even a D9060/D9090 hard drive (5MB or 7.5MB,
internally has an MFM drive and a SASI-ST506 bridge).

The "DOS" is in ROM in the disk drives, including everything about
files and filesystem layout.  You wouldn't have to port that to the
PDP-11.  You talk to all the drives with the usual IEEE protocol of
secondary addresses and command strings.  On the PET side, it's
LOAD/SAVE, OPEN/CLOSE, and PRINT#/INPUT# (later ROMs added a command
layer for "disk commands" but they are just wrappers around the
primitive calls).

The directory is a special file named "$"; to get a directory, you
open that file and read the contents.  The drive sends the directory
not as plain text, but as a loadable BASIC program so you do have to
convert "line numbers" (file block sizes) to ASCII, and you have to
convert all the text contents from PETSCII to ASCII.  All doable in a
couple of pages of code.

There are a number of books for how the Commodore side works.  You can
even use the later serialized drive books to understand the higher
protocol.  At a character level, it's identical.

In terms of using it as a more generic device, there are block-level
primitive commands (U1 and U2 for read and write-block) but the
physical block size is 256 bytes, even on the D9060/D9090 hard drives.
I'm sure it's possible to write a native driver for RT-11, bypassing
the Commodore filesystem, but it sure would be slow.


More information about the cctech mailing list