Relay-Version: version B 2.10 5/3/83; site utzoo.UUCP
Path: utzoo!mnetor!uunet!seismo!rutgers!ames!amdahl!amdcad!rpw3
From: rpw3@amdcad.AMD.COM (Rob Warnock)
Newsgroups: comp.unix.wizards,comp.arch
Subject: Re: *Why* do modern machines mostly have 8-bit bytes?
Message-ID: <17721@amdcad.AMD.COM>
Date: Tue, 28-Jul-87 03:01:23 EDT
Article-I.D.: amdcad.17721
Posted: Tue Jul 28 03:01:23 1987
Date-Received: Wed, 29-Jul-87 04:30:17 EDT
References: <142700010@tiger.UUCP> <2792@phri.UUCP> <8315@utzoo.UUCP> <3532@ihlpg.ATT.COM> <1037@vaxb.calgary.UUCP>
Reply-To: rpw3@amdcad.UUCP (Rob Warnock)
Followup-To: comp.arch
Organization: [Consultant] San Mateo, CA
Lines: 47
Xref: mnetor comp.unix.wizards:3450 comp.arch:1714

In article <1037@vaxb.calgary.UUCP> radford@calgary.UUCP (Radford Neal) writes:
+---------------
| Yup. The LGP-30, of 1950's vintage, had 31 bit memory words. The accumulator
| had 32 bits, though. They seem to have thought of their memory as being
| 32-bit words, but the low-order bit was always zero...
|     Radford Neal
+---------------

Close... the accumulator was continously recirculating (reading data off the
drum and writing it back 32 bits "in front" of the read head), so you never
had to turn off the write gate on the drum. The memory, on the other hand, was
(merely) word addressed (actually track+sector), and you nearly nearly a bit
time to turn off the write gate if you weren't going to overwrite the next word
in memory. It was a "Little-Endian" machine (at the bit level -- had to be,
it used bit-serial arithmetic!), but numbered the bits "Big-Endian" style (the
opposite of the 68000 confusion!), and bit 31 (the LSB of the AC) was the one
that got snuffed (well... ignored) when you wrote to memory. Thus the low-order
bit of an input character would be lost if you didn't multiply it by 2 before
storing!

Further, the LSB of the address field in an instruction was bit 29 of the
AC (there were a *lot* of unused bits in its single-address instructions!),
and when keying in absolute machine instructions (like a bootstrap), you
had to manually account for the lost bit 31 and unused bit 30, so that
sequential words were addressed as "0, 4, 8, J, 10, 14, 18, 1J,..."
(pronounced "zero, four, eight, jay, ten, fourteen, eighteen, jayteen").

Oh yes, the LGP-30 used a version of hexadecimal long before IBM decreed
hex was "0-9A-F". The LGP-30 programmer counted: "0, 1, 2, 3, 4, 5, 6, 7,
8, 9, F, G, J, K, Q, W". The low-order 4 bits of the Friden "Flexowriter"
character code for the "hex" digits happened to be, of course, the correct
binary values, so no "conversion" was needed. That would work in ASCII iff
hex was defined as "0-9J-O", but nobody could *stand* a number system with
both "zero" and "oh" in it! (Oddly enough, the low-order 4 bits of the first
letters of the assembler opcodes were also the correct bit pattern for that
opcode, so "b0004" (4-bit mode) == 10004 == "Bring (load) loc. 4", "a123j"
was "Add 123j", etc. There was a separate 6-bit input mode for doing real
text input.)


Rob Warnock
Systems Architecture Consultant

UUCP:	  {amdcad,fortune,sun,attmail}!redwood!rpw3
ATTmail:  !rpw3
DDD:	  (415)572-2607
USPS:	  627 26th Ave, San Mateo, CA  94403