Tools and Formats

Here are several sets of tools. Some were used in preparing the data here, others may be useful in working with the files. Also there is an explanation of the file formats. The tools are all coded and compiled for Windows 95/NT or later PC environment for command-line use in a "DOS" window, but they should port easily to other command-line oriented systems. Source is provided for everything and most of the tools were last built using Microsoft Visual C.

File Formats

The data on these old computers came in different forms than we commonly use today. Everything was oriented around 6-bit characters instead of 8-bit bytes, and the character codes were BCD instead of ASCII. This section explains the standard formats I use to transform the data into byte-oriented files and discusses tools to convert between different formats.

Extensions

The format of the data is indicated by the file extension. In addition, .txt indicates ASCII text.

Tape Formats

All files correspond to 7-track tapes. The low 6 bits of each byte in the file contain one character. There is a parity bit in the next bit, odd parity for binary (.BIN) files and even parity for BCD files. The eighth bit is set in the first character of each record. File marks (in both binary and BCD tapes) consist of a special record containing one or two 0017 (0x0F) characters. (There should only be one 0017, but some programs may use two. This should be cleaned up at some point.) Zero is technically illegal but may be ignored when reading. The special character 0200 (0x80) may appear as the last character of a file.

Files produced by the "g7t" tape reading and decoding programs retain all uncorrected errors and thus may have characters with the wrong parity or even zero. The "g7t" programs also use intermediate files that are extensions of these formats, containing more raw information for the decoding process.

Card Formats

Card decks containing only text may be encoded as .BCD files with 80-character records, as if from an unblocked tape.

Column binary files (.CBN) are binary tape files which contain pairs of characters, the first of which is the 9-4 rows and the second the 3-12 rows of a card. The 9 or 3 row is in the least significant bit. The number of characters in a record must be even, and is normally 160, but trailing blank columns may be eliminated.

Conversion tools

The programs "xxx2xxx" may be used to translate from one form to another. Note, however, that it is possible to lose information. For instance, using cbn2bcd and then bcd2cbn will work on cards containing text but will generate garbage if used on arbitrary column binary cards. On the other hand, the programs bin2txt and txt2bin exist to make it easier to shuffle a text-only card deck. They translate to ascii files which accurately retain the text so it can be manipulated with a text editor.

SPS

The 1401 SPS files arrived in a different format. That format is described with them on the 1401 page. They were converted to the formats described above with the "spscvt" tool below.

Tools

There are two sets of tools. The first ones here are useful for working with the files. The second set is programs that were used in preparing the data and are included for reference in case its necessary to decipher the finer points of the log output, or they may be modified and run again to obtain better versions of the data. In particular, the "g7t" directory contains both the tools and all the original raw data from the Ohio tapes.

See the Notes for "g7t" for documentation on g7tedit, which was used in the preparation of some of the tapes but is also a useful (if basic) utility on its own.

Utilities

Preparation programs

BCD/TXT

The bcd2txt and txt2bcd programs translate between BCD and ASCII. Unfortunately BCD contains several optional codings and several characters that do not appear in standard ASCII. Below is a table of the translation used in several simulators, includingvthe Newcomer/Jaeger 1401 simulator here, and my programs including bcd2txt, txt2bcd and the 709x simulator.

The first four columns are for simulators. The Bob S. column is for Bob Supnik's 1401 simulator, easily available on the web. The next two columns are for another Bob working on a 1401 simulator and the old version of my simulator. Finally the Newcomer column is for the 1401 simulator here.

The A and F columns are for the "business" and "Fortran" chains for the 1403 printer, from Bob Supnik.

The last column is for my programs here. Where there are two characters, txt2bcd will accept either and bcd2txt will produce the first (business) unless -f (Fortran) is specified. At the far right some of the strange original BCD characters are described in parentheses. The code octal 20 is special, it is used on tape to represent 00 in core and so normally would not be printable. With bcd2txt the default is to convert it to "^" so it doesn't disappear when converting both ways, but with -b it will convert to a blank which is the normal case and should work with most editing tasks. This table is in the file asciibcd.h.

                                                                  Card
octal  Bob S.  Bob A.  P. Old  Newcomer       A    F      Pierce  Code
 00                                                               none    (Blank)
 01     1       1       1         1           1    1        1     1
 02     2       2       2         2           2    2        2     2 
 03     3       3       3         3           3    3        3     3
 04     4       4       4         4           4    4        4     4
 05     5       5       5         5           5    5        5     5
 06     6       6       6         6           6    6        6     6
 07     7       7       7         7           7    7        7     7
 10     8       8       8         8           8    8        8     8
 11     9       9       9         9           9    9        9     9
 12     0       0       0         0           0    0        0     0
 13     #       #       =         = #         #    =        # =   3-8
 14     @       @       '         ' @         @    '        @ '   4-8
 15     :       :       :         :                         :     5-8
 16     >       >       >         >                         >     6-8
 17     (       t              Radical 0xFB        {        {     7-8     (Tape Mark)
 20     ^       c                 b                ^        ^     none    (Cents or b with a stroke) (*)
 21     /       /       /         /           /    /        /     0-1
 22     S       S       S         S           S    S        S     0-2
 23     T       T       T         T           T    T        T     0-3
 24     U       U       U         U           U    U        U     0-4
 25     V       V       V         V           V    V        V     0-5
 26     W       W       W         W           W    W        W     0-6
 27     X       X       X         X           X    X        X     0-7
 30     Y       Y       Y         Y           Y    Y        Y     0-8
 31     Z       Z       Z         Z           Z    Z        Z     0-9
 32     '       r                 |           |    |        |     0-2-8   (Record Mark)
 33     ,       ,       ,         ,           ,    ,        ,     0-3-8
 34     %       %       (         % (         %    (        % (   0-4-8
 35     =       =                 ^                         ~     0-5-8
 36     \       '       \         \                         \     0-6-8
 37     +                                                   "     0-7-8   (Tape Segment Mark)
 40     -       -       -         -           -    -        -     11
 41     J       J       J         J           J    J        J     11-1
 42     K       K       K         K           K    K        K     11-2
 43     L       L       L         L           L    L        L     11-3
 44     M       M       M         M           M    M        M     11-4
 45     N       N       N         N           N    N        N     11-5
 46     O       O       O         O           O    O        O     11-6
 47     P       P       P         P           P    P        P     11-7
 50     Q       Q       Q         Q           Q    Q        Q     11-8
 51     R       R       R         R           R    R        R     11-9
 52     !       !       !         !           -    -        !     11-0
 53     $       $       $         $           $    $        $     11-3-8
 54     *       *       *         *           *    *        *     11-4-8
 55     ]       )       ]         ]                         ]     11-5-8
 56     ;       ;       ;         ;                         ;     11-6-8
 57     _       d               Delta 0x7F                  _     11-7-8  (Delta)
 60     &       &       +         + &         &    +        & +   12
 61     A       A       A         A           A    A        A     12-1
 62     B       B       B         B           B    B        B     12-2
 63     C       C       C         C           C    C        C     12-3
 64     D       D       D         D           D    D        D     12-4
 65     E       E       E         E           E    E        E     12-5
 66     F       F       F         F           F    F        F     12-6
 67     G       G       G         G           G    G        G     12-7
 70     H       H       H         H           H    H        H     12-8
 71     I       I       I         I           I    I        I     12-9
 72     ?       ?       ?         ?           &    &        ?     12-0
 73     .       .       .         .           .    .        .     12-3-8
 74     )       o       )         )           o    )        )     12-4-8  (Lozenge)
 75     [       (       [         [                         [     12-5-8
 76     <       <       <         <                         <     12-6-8
 77 *   "       g            Group Mark 0xCE       }        }     12-7-8  (Group Mark)
Back
Back to the Collection