Robotron file transfer

1. Introduction

In the early nineties I used a computer named Robotron 1715 from an East German computer manufacturer. Transferring data from those systems with current computer systems is quite hard as there are no standard connectors. This specific computer actually have a V.24 serial port but it uses a different connector than D-sub. Even if you are able to connect it to another serial port, there is still the problem of little software available for using the serial port, let alone documentation about it. So I wrote down my experience in copying the files to a Linux PC. Also, the information here are useful for other computer systems from East Germany since they often share the same operating system.

2. Floppy image transfer

The easiest way to get data from or to the 1715 is to use floppy discs. The operating system usually is SCP which supports 8 and 5 1/4 inch discs. The 5 1/4 disc drive was the most common one and those discs have also been used in old IBM PCs. Luckily no proprietary disc format has been used so the PC floppy drive and its controller is (usually) able to read and write the floppy discs from the 1715.

While the data encoding is a standard format (MFM) the disc can be formatted in different layouts. Some layouts are using 40 or 80 tracks, single or double density, single or double side, 5 sectors per track of 1024 bytes each, or 26 sectors of 128 bytes each. Depending on the layout, up to 800 kByte data could be stored on a disc.

You may need to test different combinations to find the correct one. But in my experience, the 80 tracks, 5 sectors per track, 1024 bytes per sector, double side, double density was the most common format. If you are unsure, I recommend format a disc at the 1715, the programs usually print the actual layout for selection. Then you can try to access the empty disc at the PC with the tools I describe in the next section.

2.1. Copy disc images

First you need to insert the floppy disc into the drive since the configuration must be done with an installed disc.

Now configure the disc device in Linux using the tool setfdprm. The man page is very limited, but you can find much more information here.

setfdprm /dev/fd1 sect=5 cyl=80 ssize=1024 dd ds

The values used here correspond to the format I described above. You may need to use a different device than fd1 depending on your own hardware.

The format is not always applied in the first call so check the correct setting with

getfdprm /dev/fd1

it should print

DS QD sect=5 ssize=1KB

If not, repeat the setfdprm call, for me it took 3 times to take effect.

Now you can actually create an image of the disc:

dd if=/dev/fd1 of=disc.img bs=1024

If the layout was correct, the command should run without errors. Otherwise you will see an input/output error quite soon.

By flipping the if and of parameters you can write an image back to the disc.

2.2. Extracting data from disk images

Once you have successfully created a disc image, you can go ahead and extract the actual files from it. Since the operating system SCP is compatible with CP/M, you can use the cpmtools to access the image.

The tool comes with many different disc layout descriptions, you have to select the correct one. The file diskdefs contains the format definitions describing the number of tracks (or cylinders), sector size, etc. Fortunately, the tool already contains some definitions for the 1715. In my case the format "17153" was the correct on.

To print a list of files from an image, use the command cpmls:

cpmls -f 17153 disc.img

If you see garbage or even errors, you need to use a different format option according to your disc format.

If everything is correct, you should see a list of files for each user level. The CP/M operating system uses a simple user number to distinguish files from multiple users. Often there is only the default user 0 in use, but be aware that the disc image may contain multiple users. The cpmls command will print all files from all users so you can make sure to extract all files if needed.

To extract files, use the command cpmcp:

cpmcp -p disc.img 0:* targetdir

This example will copy all files from the user 0 to the directory targetdir. You can also extract individual files by using the exact file name instance of the asterisk.

2.3. Data conversion

As always with files from old computers, a tricky part is to actually be able to process the file content. For instance, Basic programs are often stored in a compact format even though the original commands where plain readable ASCII. So you need special software to convert the files into a format usable for you.

Right now I only know a little bit about the text processing software commonly used. The file format is more or less ASCII so you should be able to read most of the text with a regular editor. But there are some special characters used to encoding some special meanings.

The most relevant encoding is the highest bit of each byte. Apparently it has some special meaning, maybe for end of word since I have seen it mostly at the last character of a word. To convert the text back to the actual ASCII format, you need to unset the highest bit. You can use the following python program to do so:

import sys

fh = open( sys.argv[1] )
while True:
    ch = fh.read(1)
    if len(ch) < 1:
        break
    n = ord(ch[0])
    if n > 127:
        ch = chr(n - 128)
    sys.stdout.write(ch)

This program must be called with the file name as an argument and it will print the converted text to stdout.

3. Further reading

There a quite a few web sites with detailed information about those old computer systems from East Germany, most of them in German though. Here a few links but you can find much more links on the corresponding pages: