Relay-Version: version B 2.10 5/3/83; site utzoo.UUCP Posting-Version: version B 2.10.2 9/18/84; site rlgvax.UUCP Path: utzoo!linus!philabs!cmcl2!seismo!rlgvax!guy From: guy@rlgvax.UUCP (Guy Harris) Newsgroups: net.arch Subject: Re: Arbitrary byte alignment Message-ID: <197@rlgvax.UUCP> Date: Sun, 14-Oct-84 19:17:13 EDT Article-I.D.: rlgvax.197 Posted: Sun Oct 14 19:17:13 1984 Date-Received: Tue, 16-Oct-84 03:42:45 EDT References:<1433@bmcg.UUCP> <1313@ritcv.UUCP> Organization: CCI Office Systems Group, Reston, VA Lines: 39 > Ah, the B1700! I've waxed loquacious on this fascinating machine > before, but what the hell! it's time for another lecture. > > Bill Price discussed its primary distinctive feature already, namely > bit addressable memory. Just to fill in a bit ;-): a single micro > instruction could read from 1 to 24 bits beginning at any bit address > in main memory (and scanning in either direction). The number of bits > could be a constant, or determined by the current ALU precision > (1-24). Well, on the IBM 7030 (a/k/a STRETCH), a single *macro* instruction (in the sense of non-micro, not in the sense of a macro assembler) could read from 1 to 32 (or possibly even 64) bits beginning at any bit address in memory, although it only scanned in the "forward" direction. The field length was part of the instruction. > Programmer controlled variable sized operands were supported by another > B1700 innovation: if the microinstruction register (MIR) was the > destination of a micro-instruction, then the value it was sent was > logically or'ed with the next micro-instruction fetched; the resulting > bit pattern was the actual microinstruction executed. Thus if one had > a bit count in, say, register Y, and wanted to read that number of bits > from main memory into register X, the code looked like the following: > > MOVE Y TO MIR > READ 0 BITS TO X Sounds like the microinstruction equivalent of the IBM 360's EX (execute) instruction, which uses it for much the same purpose. The MVC (move character) instruction has the character count in the instruction itself, so if you have the number of characters to be moved in a register you just do an EX and tell it to stuff the count into the instruction being executed. (The 370 introduced a MVCL instruction (move characters long, or was it MVL for "move long"?) which had the addresses and count in registers; it allowed you to move more than 256 characters at a time, and was interruptible so you couldn't lose interrupts by trying to move all of main memory around. Guy Harris {seismo,ihnp4,allegra}!rlgvax!guy