I searched around the ranch, and this seems like the right place to ask this. If not, please feel free to move or delete it.
I want to write some simulators of old computers. Some of those old computers used punched
cards, sometimes called tab
cards, tabulating cards, IBM cards, Hollerith cards, or
unit records. Below, I provide some of what I know about such cards, including many areas that I suspect there are important things I do not know now, and might have to know before a particular system can be simulated. How do you recommend the classes and interfaces be organized? I'm particularly interested in the reasons for your recommendation, and in alternative suggestions from different people.
The most common punched card is the size of a US dollar bill before the new deal and 140 cards to the inch thick. It has 80 columns, and each column has 12 positions for rectangular holes to be punched. Cards come in many different colors, with many thousands of printed designs. Additional printing can be added by a machine called an interpreter, printing a symbol that represents the data in a particular column, or is a generated value. The interpreter characters are wider than a column on the card so they can not line up with the columns. Smaller printed representations of the data can be provided by a keypunch machine when the card is first punched. For extra confusion, cards from the keypunch machine with the print feature turned on are also called interpreted. A corner was usually cut off to assist in efforts to have all the cards in a collection face the same way. Some cards had an additional notch to indicate they had been checked or
verified. Some cards could be separated into two parts, and at least the larger part read as a turn-around document. These were commonly used for billing, sent whole; the customer kept the smaller part as a receipt and returned the larger part with payment. IBM had a standard punched card code, essentially defined by their keypunch machines. Computers differed in how a given character was represented in memory. The code defined numerals, upper case letters, and a few special symbols. There was also column binary, where three columns of twelve bits made a 36 bit
word for the mainframes of the era. With the introduction of the IBM System/360 in
1964, the card code was expanded to 256 defined codes, many without a corresponding graphic representation.
Remington Rand had a similar card, probably on the same card stock. It had round holes and 90 characters of data. I do not know anything about the codes used. In the late 1960s. IBM introduced a new card design. It was about the size of a credit card, used eight tiny holes for each character and had room for 96 characters.
Once a card was punched, it was usually added to a file or deck of cards. The deck of cards was often converted to a magnetic tape file by an auxiliary machine or small computer.
So, how should I represent this bit of ancient history in
Java? Thanks for your ideas.