Article View: alt.folklore.computers
Article #1098Re: Multi-punches on IBM 026
From: rave... Paul Raveling
Date: Thu, 25 Jan 1990 23:15
Date: Thu, 25 Jan 1990 23:15
58 lines
2923 bytes
2923 bytes
In article <1990Jan22.152652.7636@virtech.uucp>, jje@virtech.uucp (Jeremy J. Epstein) writes: > [... about BCD overpunching on 026's...] The most useful BCD overpunch was record mark, 0-2-8. A single 1401 MCM instruction could move a variable length data record, terminated by a record mark. This was essentially a hard-wired strcpy(), and was used heavily on card-to-tape and tape-to-print utility operations. A little-known feature of some early 709/7090 FORTRAN II compilers was that they recognized record marks to allow multiple statements per card. For example, if "#" represents a record mark, they'd accept "I=0 # J=1 # K=2" on a single card. > Does anyone out there remember the multi-punch sequences for the > characters which weren't on the keyboard (no cheating by looking at > old card decks)? I think that "+" was 12-6-8, but I'm not sure. I don't > even remember what characters had to be multipunched besides +, (, ) Actually + by itself was just a 12 punch. Among the zone punches, + (12-zone) and - (11-zone) would be used in data for 1401 programs by overpunching the sign on the least significant digit of a number. These were read in as the A and B bits that the 1401's hardware interpreted as a number's sign. Related trivia: The sign was over the least significant (rightmost) digit because that's what would be addressed in a 1401 instruction. Something like an add would: -- Load the given addresses into the A & B address registers -- Fetch 1st byte of each, including sign -- For each byte until reaching one with a WM (word mark) bit set, add "*A" to "*B", then DECREMENT both address registers. i.e., it worked right-to-left, from the high-addressed end of a number toward the low-addressed end. Number size was limited only by how much memory was available. This also allowed instructions to "chain" addresses, using the previous instruction's last A/B address register contents to define the next operand address. A C-like equivaent would be something like this: b[0] = a[0] + b[0] + /* Adds a[1] to b[1] */ + /* Adds a[2] to b[2] */ + /* ... etc. */ ---------------- Paul Raveling Rave...@isi.edu
Technical Details
Message-ID:
<11571@venera.isi.edu>Path:
mbox-mo1.pugleaf.net!gmdzi!unido!mcsun!uunet!tut.cis.ohio-state.edu!zaphod.mps.ohio-state.edu!usc!venera.isi.edu!ravelingReferences:
<1990Jan22.152652.7636@virtech.uucp>Show Full Headers
Complete Article Headers
Path: mbox-mo1.pugleaf.net!gmdzi!unido!mcsun!uunet!tut.cis.ohio-state.edu!zaphod.mps.ohio-state.edu!usc!venera.isi.edu!raveling From: rave...@isi.edu (Paul Raveling) Newsgroups: alt.folklore.computers Subject: Re: Multi-punches on IBM 026 Keywords: 12-6-8? Message-ID: <11571@venera.isi.edu> Date: 25 Jan 90 23:15:34 GMT References: <1990Jan22.152652.7636@virtech.uucp> Sender: ne...@venera.isi.edu Reply-To: rave...@isi.edu (Paul Raveling) Organization: USC Information Sciences Institute Lines: 58 Posted: Fri Jan 26 00:15:34 1990 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 7bit