Relay-Version: version B 2.10 5/3/83; site utzoo.UUCP Path: utzoo!mnetor!uunet!husc6!cmcl2!beta!hwe From: hwe@beta.UUCP (Skip Egdorf) Newsgroups: comp.arch Subject: Re: *Why* do modern machines mostly hav Message-ID: <8974@beta.UUCP> Date: Fri, 14-Aug-87 18:55:32 EDT Article-I.D.: beta.8974 Posted: Fri Aug 14 18:55:32 1987 Date-Received: Sun, 16-Aug-87 05:30:07 EDT References: <2807@phri.UUCP> <101200004@datacube> <1332@killer.UUCP> Organization: Los Alamos Natl Lab, Los Alamos, N.M. Lines: 37 Summary: DEC-10 and 20, 36-bit bytes In article <1332@killer.UUCP>, molly@killer.UUCP (Molly Fredericks) writes: > > DEC-System 10's and 20's actually had 36 bits in the word, all of which > where addressable. The addresses where 18 bits long, which I think > explains the 18 bit Unibus addresses on early PDP-11's > > The 10's had 2 or 3 character modes. The first has 6 bit. Six characters > were packed into a 36 bit word. That gave 6 characters per word, no > parity. > > The next mode was 7 bit ascii. 5 characters were packed into 36 bits with > the last bit wasted. This was used as I understand for storing data in > datafiles. The six bit stuff tended to shift all of your characters into > upper case, so that wasn't so hot for text files and anything else you > didn't want to become monocase. > > There may have been an 8 bit ascii mode, but I don't ever recall doing > anything with it. They also had 1-bit modes, 2-bit modes, ..., 36-bit modes. The Dec-10s (and 20s, same machine architecture, different OS support) had two byte handeling instructions: load byte, and deposit byte. Each used a "byte pointer" as an operand. This byte pointer had the normal 18-bit word address and a byte length so that any size byte could be handeled within a word. 6-bit and 7-bit bytes were common, (7-bits * 5 bytes = 35 bits + one left over) but some things (anyone from Stanford out there??) used 9-bit bytes at 4 per word. TOPS-10 did its IO by transfering to a buffer and giving you a byte pointer to the buffer. This was a 7-bit byte pointer by default, but could be changed if you wanted to use a file with weird bytes. This is also the classic C example of a normal (int, float, etc) pointer at 18-bits being shorter than a 'char *' at 36 bits. Skip Egdorf