🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: alt.folklore.computers
Article #1098

Re: Multi-punches on IBM 026

#1098
From: rave... Paul Raveling
Date: Thu, 25 Jan 1990 23:15
58 lines
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!raveling
References: <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