
Punched Cards? Sheer Bloody Luxury - herodotus
https://billwadge.wordpress.com/2020/03/23/punched-cards-sheer-bloody-luxury/
======
CarlRJ
I did my Fortran in high school on punched cards, because the small
timesharing system we had (a Cromemco Z80-based S-100 bus machine with a
handful of terminals) had a habit of crashing and eating files - but it
couldn't eat cards. We had a couple of surplus IBM 029 card punches, and they
were a blast to use - they had nice crisp keyboards, and when you pressed a
key the machine punched the corresponding holes with what felt like a major
league bat hitting a major league fastball pitch - it was a really hard
_thwhack_. Very satisfying.

I remember being astonished when my dad told me how they handled punch card
accuracy at his office: engineers would write out their programs on (special)
paper forms (i.e. a box for each character on each line), and hand the forms
off to the computer department, where they'd have two different keypunch
operators key in the program. Then they'd feed the two stacks of cards into a
special punched-card-comparator machine, which would tell whether the decks
matched. If so, it was considered successfully transcribed (and one of the
decks could be thrown away).

I also remember reading a story long ago about decks of cards containing
scientific programs being sent by rail between cities in two different
countries in Europe (IIRC), and they kept having problems with the programs
not working. Finally, they sent a courier along with the box of cards at one
point. And, as the train crossed the border, the customs inspector boarded the
train and checked passports and such, and inspected goods that were being
transported, and, as is customary, took a sample from many of the transported
goods (as one might take a bit of grain, say)... and, yeah, they took a couple
random cards out of the box. Problem identified, if not immediately solved.

~~~
andrewflnr
Holy crap! Did they manage to fix it eventually?

------
philiplu
Brings back memories. I wrote a MIXAL assembler/simulator to run on an IBM
11/30 (actually, a clone - the General Automation 18/30), back in the mid 70s.
About 7000 lines of 11/30 assembly, all on punched cards. And yes, I used the
trick of running a marker across the stack of cards, diagonally, so it was
really obvious when something was out of place. Don't remember if I put
sequence numbers in columns 73-80, though the computer lab did have an ancient
card sorting machine I used a few times.

I was really lucky back then - I was a high school sophomore who was given
free rein of the local college's small computer lab. I got really good at
keying in the IPL (initial program load) sequence on the front-panel keys,
triggering a read of the IPL card from the card reader, which then would boot
off the Winchester drive.

I got to show my daughter an IBM 029 card punch at the Seattle Living
Computers Museum a few years ago. Don't think she was too impressed :-)

~~~
jandrese
I've just realized that the old BASIC system of numbering every line is
probably an artifact of putting a sequence number on each punchcard.

------
euroderf
Dropping a deck was the threat. The preventative measure was to take a magic
marker and draw a line across the top of the deck on a slant - nearly a
diagonal. Then if you dropped the deck you could at least use the line to get
the cards roughly back in order; then your memory took it from there.

~~~
zzo38computer
I never used computer cards, although I did write an implementation of Knuth's
MIX, and an assembler for it, but I wrote it in 2017 for running on PC DOS.
Nevertheless, I did include an option in the assembler to punch a zero in the
first column of each card other than the first and last cards. You can then
line up and use a hook to easily find the first and last card, and it is easy
to see which is which; other than the first and last card, the others can be
in arbitrary order and it will still work. (These are the cards of the
compiled deck, which does not use the same format described in TAOCP, but it
should still be compatible with all MIX computers which use the loading
mechanism described in TAOCP; my own implementation uses a single card
bootstrap rather than two card bootstrap.) (Note that all of this describes
the compiled deck, and not the source deck. There is no source deck in this
modern implementation.)

(I have also tried to figure out how to make it work if all cards including
the first and last card are shuffled (in order for this to work, it would
require bootstrap code on every card, and it would probably need to know ahead
of time how many cards there are), although I have been unable to do so; maybe
it is not possible.)

------
GnarfGnarf
Punching a sequence number in columns 73-80 was not practical. Even if you
allowed increments of 10 or 100, there always arose a situation where you had
to insert more cards between two existing cards, than there was room. Ex:
insert eleven statements between card 1230 and 1240.

Plus, you would have to manually enter the sequence numbers of the new cards,
waaaay over in column 73, which was really slow and tedious on a card punch.
Especially when you were in a rush because you were granted a brief slice of
time on the computer, which was not capable of multiprogramming.

You could always duplicate the deck and re-sequence from scratch, but that was
done on a machine that did not print (interpret) the characters at the top,
making it impossible to read and manually maintain the deck.

The solution was: just don't drop the cards. I wrote and maintained a
4,000-card assembler program on a Univac 9300 in the 70's, and I never dropped
my cards. The program was stored in two 16" metal trays.

------
thoraway1010
I had the run of a college computer lab. Always magic. Once groups for
permissions came out they put the kids into the "brats" group for permissions
- which was a fair reflection of the admins view of letting kids on the
machines.

My high school was smarter. After I "hacked" the computers there - they put me
in charge of maintaining them - I'd get called out of class to run around
campus fixing computer things up. I didn't realize it at the time, but that
was a forward thinking administrative office.

------
zzo38computer
Troff is still used (mostly for man pages, I think), and VT100 escape codes
are still common, and I don't know what is meant by UNIX being "only for
system stuff".

~~~
commandlinefan
> UNIX being "only for system stuff"

At first I thought he meant server-side, but OS/X is as Unix as Linux is or
even Solaris was.

~~~
CarlRJ
macOS (neé OS X) is actually _more_ Unix than Linux, as it is certified.

~~~
dfox
That certainly says more about the certification process than about unix-ness
of macOS ;)

On the other hand large fraction of UNIX(TM) certified OSes are in fact niche
Linux distributions (IIRC mostly RHEL derivates).

In all it is mostly about nobody giving a damn about the certification outside
of very specialized applications.

------
every
One of the saddest things I saw in college was a poor fellow walking along
with a box filled with punch cards. It was a windy, blustery day. He stumbled,
dropped the box and cards flew free in every direction. I will never forget
the oaths and screams of terror as he ran after them...

~~~
fragmede
Such a disaster was a rare, but unfortunately it happened. A heavy black
marker diagonally down the side made it a lot easier to reassemble the cards
in the right order.

~~~
derekp7
What about having a hole in a corner that you could run a string or wire
through? Was there a spot to position a hole that wouldn't interfere with the
card reader? Heck, if possible I would do a 3 ring binder. Or rubber bands at
a minimum.

~~~
zzo38computer
Depending on the data format, it might be possible. For example, punch "I" in
the first or last column of each card if the first or last column of the card
is not used by the program. Unfortunately, I don't know much about the data
formats of punched cards, as I have never used them (except in an emulation of
Knuth's MIX system).

------
dhosek
I missed punch cards by one year. The punchcard reader was still in the
terminal room when I started working at the University of Illinois at Chicago
computer lab. I did get to do a lot of JCL debugging. And we had to use a
limited plain TeX at first because our ASCII-IBM bridge that let us use
inexpensive terminals instead of dedicated IBM terminals had reserved ~ for
signalling escape sequences plus the state of the art for the Xerox laser
printer allowed only predefined sets of fonts to appear in a print job.

------
flyinghamster
When I took my first programming course in high school, we had a PDP-11/34 and
several terminals in the classroom. But for our first assignments, we used
mark-sense cards (in the usual IBM form factor). There was a dedicated column
for the statement keyword (chosen by a single mark).

After a couple of such assignments, they turned us loose on the terminals.
Those who were quick/lucky got one of the few VT100s or the DECwriter III, but
any terminal was better than the mark-sense cards. I think that was a weeding-
out exercise.

------
ken
> The big danger with card decks was that you’d drop the deck and the cards
> would get out of order

At my first job, my boss told me the story of a colleague who was taking a box
of cards out to the car. You had to drive your program to The Computer, of
course, because this was back when there was a The Computer. It was out by the
airport.

They took one step out the door, and just at that moment a foot of snow
decided to let go and slide off the roof. Oof.

------
RickJWagner
/SYSIN DD*

Clearly this author worked on one of the gigantic, luxurious MVS boxes. I, on
the other hand, toiled away relentlessly on a small VSE Box. He had it easy!

~~~
passer_byer
This story also highlights the enduring strength of IBM's 360/370
architecture. It is still in widespread use today. The correct syntax is:

//SYSIN DD *

A data definition statement indicating the next line in the program is the
start of the input program to be processed.

------
Koshkin
Writing new code in IBM assembly could be made faster by simply reshuffling an
old deck!

~~~
Taniwha
When I was a highschool kid we use as perforated card system (you punched them
out with a paper clip). We were charged for usage by the card 1c each (1c was
a lot more back in the 70s). We used to share and recycle cards "anyone got a
'goto 10'?"

------
perl4ever
Back in the days when bytes only had six bits...

~~~
kps
You were lucky to have bytes! We used to shift and mask.

~~~
CarlRJ
Luxury. We just had one bit and we could only turn it on and off.

And it was a timesharing system, so you had to share that one bit with 13
other programmers.

~~~
mjcohen
When I started out, we had to move the electrons by hand!

~~~
lowbloodsugar
Oh we used to dream of having electrons! We used to have rotten fish dumped on
us every morning and we'd use the presence of a head to indicate a true bit.
Where do you think "running headless" comes from?

