Path: utzoo!attcan!uunet!wuarchive!zaphod.mps.ohio-state.edu!rpi!leah!bingvaxu!kym From: kym@bingvaxu.cc.binghamton.edu (R. Kym Horsell) Newsgroups: comp.arch Subject: Re: Looking for a really odd computer Message-ID: <4164@bingvaxu.cc.binghamton.edu> Date: 10 Oct 90 15:54:50 GMT References: <2383@ux.acs.umn.edu> Reply-To: kym@bingvaxu.cc.binghamton.edu.cc.binghamton.edu (R. Kym Horsell) Organization: SUNY Binghamton, NY Lines: 40 In article <2383@ux.acs.umn.edu> dhoyt@vx.acs.umn.edu writes: >>In article <14900017@hpdmd48.boi.hp.com> sritacco@hpdmd48.boi.hp.com (Steve Ritacco) writes: > Didn't the DEC Systems 10 & 20 allow the program to change the size of >characters? Five bits gave you radix 50 (used by the file system). Nine was >great as it gave and even number of characters per word with no extra bits as >well as giving you meta characters. Eight and seven were good for Lisp >programming as it gave you extra tag bits in a word. I know we did this all in >software, but I can't remember if it was an 'offical' system option or not. The DECSystem-10 & 20 had general byte manipulation instructions; bytes weren't actually defined to be any particular size by the h/w. Unlike the VAX line, the 10/20's had the concept of a one-word "byte pointer" that specified a field of up to 36 bits somewhere in memory (perhaps even in the same bytepointer)! Byte pointers contained a byte size (6 bits) , offset (6 bits), index register (sic), displacement and indirect bit -- you effectively got the word from which the field was extracted by performing the whole general addressing stuff (e.g. if the indirect bit in the bytepointer was set you could end up performing an indefinite number of mem reads since each of _these_ could indirect). There were various insructions for manipulating bytepointers; load byte/deposit byte from mem to/from reg, increment byte pointer (by one position), increment&load, increment&deposit, and on the KL10 & 20's various more general byte pointer adjustments and restrictions removed (e.g. bytes across word bdys). (I only played low-level on a KI10 so I'm a bit unsure as to the details of these latter). Another use of 7-bit bytes in a 36-bit word in _text_ files involved using the left-over bit (which occured in the lsb) as a line/page marker word -- if an editor, compiler or the lineprinter software came across a word that was otherwise supposed to be text & found the lsb set, it interpreted the word as a page/line number pair -- typically expanding same into the appropriate decimal string. -Kym Horsell