Skip to content

A basic Go package to convert source to IBM 5081 (80 column) punch cards encoded by an IBM 029 keypunch (~1964).

License

Notifications You must be signed in to change notification settings

barrettotte/punchit

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

10 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

punchit

A basic Go package to convert source to IBM 5081 (80 column) punch cards encoded by an IBM 029 keypunch.

The IBM 029 encoding was introduced around 1964 alongside the IBM System/360 and was used in early FORTRAN, COBOL, and RPG programming.

This small weekend project was mainly to dip my toes into Go and learn more about how punchcards worked. I'm around 75% sure I got the IBM 029 encoding and other terminology correct. Some of this stuff is a little confusing to me.

Introduction to Punch Cards

IBM 5081 Punch Card (80 columns)

       .........1.........2.........3.........4.........5.........6.........7.........8  
      __________________________________________________________________________________ 
     / &-0123456789ABCDEFGHIJKLMNOPQR/STUVWXYZ:#@'="¢.<(+|!$*);¬ ,%_>?                  |
12  /  X           XXXXXXXXX                        XXXXXX                              |
11 |    X                   XXXXXXXXX                     XXXXXX                        |
 0 |     X                           XXXXXXXXX                   XXXXX                  |
 1 |      X        X        X        X                                                  |
 2 |       X        X        X        X       X     X     X                             |
 3 |        X        X        X        X       X     X     X     X                      |
 4 |         X        X        X        X       X     X     X     X                     |
 5 |          X        X        X        X       X     X     X     X                    |
 6 |           X        X        X        X       X     X     X     X                   |
 7 |            X        X        X        X       X     X     X     X                  |
 8 |             X        X        X        X XXXXXXXXXXXXXXXXXX XXXXX                  |
 9 |              X        X        X        X                                          |
   |____________________________________________________________________________________|

Each column in the punch card corresponds to an encoded character. In this example, the punch card was punched using the IBM 029 keypunch with its own encoding method.

Valid characters are &-0123456789ABCDEFGHIJKLMNOPQR/STUVWXYZ:#@'="¢.<(+|!$*);¬ ,%_>?

This character set was used in early FORTRAN, RPG, and COBOL programming (and probably more).

Please read more about the history of punch cards on the wiki page.

Usage

See example of punching a directory of sample files at examples/main.go

Examples

Examples of generated punchcards for some legacy programming languages.

References

About

A basic Go package to convert source to IBM 5081 (80 column) punch cards encoded by an IBM 029 keypunch (~1964).

Topics

Resources

License

Stars

Watchers

Forks

Languages