From mboxrd@z Thu Jan 1 00:00:00 1970 X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) on polar.synack.me X-Spam-Level: X-Spam-Status: No, score=-1.3 required=5.0 tests=BAYES_00,INVALID_MSGID, LOTS_OF_MONEY autolearn=no autolearn_force=no version=3.4.4 X-Google-Language: ENGLISH,ASCII-7-bit X-Google-Thread: 103376,ee2d0c749295630e X-Google-Attributes: gid103376,public From: "Robert I. Eachus" Subject: Re: Self destructing computers. Date: 1999/08/18 Message-ID: <37BB1446.B8328C18@mitre.org>#1/1 X-Deja-AN: 514345965 Content-Transfer-Encoding: 7bit References: <7omctt$jqo$0@192.153.35.30> <37AEE768.8C7C0A9B@pwfl.com> <37AF6504.A959B615@apci.net> <7opbkk$bfn$1@nnrp1.deja.com> <37B88BD7.2A3EF832@soli.inav.net> <37B9991C.24F21F58@pwfl.com> <7pd78g$60q$1@ins20.netins.net> <37BABDC5.F12A8105@pwfl.com> X-Accept-Language: en Content-Type: text/plain; charset=us-ascii X-Complaints-To: usenet@news.mitre.org X-Trace: top.mitre.org 935007074 6425 129.83.41.77 (18 Aug 1999 20:11:14 GMT) Organization: The MITRE Corporation Mime-Version: 1.0 NNTP-Posting-Date: 18 Aug 1999 20:11:14 GMT Newsgroups: comp.lang.ada Date: 1999-08-18T20:11:14+00:00 List-Id: Marin David Condic wrote: > I am reminded of an HP programmable calculator which allowed the user to put > in a sequence of commands to be executed at power-up. A friend of mine had > one and thought one day "Gee. I wonder what would happen if I put the 'off' > instruction into the power-up sequence?" The answer to that question was: > "You get to send your calculator back to Hewlet Packard to have them reset > the EEPROMs so you can once again turn on your calculator." Everyone, I assume, knows the story of the "halt and catch fire" instruction in the Heath 19. You could set the horizontal sweep frequency to zero. Putting DC through the flyback transformer let out all the magic blue smoke. Not many know of a similar problem in the IBM 7094. This was a $2 million dollar computer back in the early sixties that had a word of addressable core memory inside the CPU. These "sense registers" were setable from the front panel, and provided a neat power-up feature. You loaded a transfer instruction to the bootstrap routine in the sense registers, and when the machine was started it read the sense registers as an instruction, and away you went. (For you young'ens, core memory retains data forever if the power is off, unlike RAM.) What if you put a "Halt and transfer" instruction in the sense registers? No problem, reset the sense registers using the front panel and hit start. (Incidently, so far everything applies as well to the earlier 7090.) In a 7090, indirection took an extra cycle. The computer would halt, read the address from the instruction, and then do the indirection. But, in the 7094, there was one slight difference. The 7094 was faster both in clock speed and in the number of clock cycles used for some operations. (Anyone familiar with digital design will understand that they triggered on both the rise and fall of the clock, and the halt occured at the fall.) The halt occurred after reading the address but before loading it into a register. So if you halted the machine and changed the sense registers, the first thing that happened after the halt was the write back of the data location read in the indirection. (Core memory like DRAM, must be rewritten after reading.) Next the completion of the indirection loaded the new address into the address register and transferred there. Oops! No matter what you did, executing an "HTR* *" instruction in the sense registers converted the machine into so much dead weight until the IBM service engineers showed up and erased the sense registers with a degausser or replaced the board. (An HTR* * was not quite as deadly in main memory, since there was a pull switch with a cover on the control panel to erase main memory.) Of course there was a very early enginnering fix applied to fix this, so you had to have a low number machine to have ever run into it. MIT had two, one for Project MAC. -- Robert I. Eachus with Standard_Disclaimer; use Standard_Disclaimer; function Message (Text: in Clever_Ideas) return Better_Ideas is...