From mboxrd@z Thu Jan 1 00:00:00 1970 X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) on inbox.vuxu.org X-Spam-Level: X-Spam-Status: No, score=-1.0 required=5.0 tests=MAILING_LIST_MULTI, RCVD_IN_DNSWL_NONE autolearn=ham autolearn_force=no version=3.4.4 Received: (qmail 26278 invoked from network); 4 Feb 2021 00:42:20 -0000 Received: from minnie.tuhs.org (45.79.103.53) by inbox.vuxu.org with ESMTPUTF8; 4 Feb 2021 00:42:20 -0000 Received: by minnie.tuhs.org (Postfix, from userid 112) id 4845F9C7B0; Thu, 4 Feb 2021 10:42:19 +1000 (AEST) Received: from minnie.tuhs.org (localhost [127.0.0.1]) by minnie.tuhs.org (Postfix) with ESMTP id BCE1C9BA47; Thu, 4 Feb 2021 10:41:53 +1000 (AEST) Received: by minnie.tuhs.org (Postfix, from userid 112) id 3A0709BA47; Thu, 4 Feb 2021 10:41:50 +1000 (AEST) Received: from hop.toad.com (75-101-100-43.dsl.static.fusionbroadband.com [75.101.100.43]) by minnie.tuhs.org (Postfix) with ESMTPS id 65D839BA40 for ; Thu, 4 Feb 2021 10:41:49 +1000 (AEST) Received: from hop.toad.com (localhost [127.0.0.1]) by hop.toad.com (8.12.9/8.12.9) with ESMTP id 1140fjSb027568; Wed, 3 Feb 2021 16:41:45 -0800 To: Clem Cole In-reply-to: References: <202102030759.1137x7C2013543@freefriends.org> <202102030858.1138wuqd011051@freefriends.org> Comments: In-reply-to Clem Cole message dated "Wed, 03 Feb 2021 09:58:37 -0500." Date: Wed, 03 Feb 2021 16:41:45 -0800 Message-ID: <27567.1612399305@hop.toad.com> From: John Gilmore Subject: Re: [TUHS] 68k prototypes & microcode X-BeenThere: tuhs@minnie.tuhs.org X-Mailman-Version: 2.1.26 Precedence: list List-Id: The Unix Heritage Society mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: UNIX Heritage Society Errors-To: tuhs-bounces@minnie.tuhs.org Sender: "TUHS" Clem Cole wrote: > > MC 68K was created in 1980 or thereabouts. Wikimedia Commons has a pic of a 1979 XC68000L: https://commons.wikimedia.org/wiki/File:XC68000.agr.jpg https://en.wikipedia.org/wiki/File:XC68000.agr.jpg After a USENET posting pointed me at them, I browsed the Sunnyvale Patent Library to bring home the patents for the Motorola 68000. They include a full listing of the entire microcode! I ended up copying it, taping the sheets together to reconstitute Nick Tredennick's large-format "hardware flowcharts", and hanging them in the hallway near my office at Sun. Fascinating! I never saw X68000 parts; Sun started in 1981, so Moto had production parts by then. But Sun did get early prototypes of the 68010, which we were very happy for, since we and our customers were running a swapping Unisoft UNIX because the 68000 couldn't do paging and thus couldn't run the BSD UNIX that we were porting from the Vax. Later, I was part of the Sun bringup team using the XC68020. We built a big spider-like daughterboard adapter that would let it be plugged into a 64-pin 68010 socket, so we could debug the 68020 in a Sun-2 CPU board while building 32-bit-wide boards for the Sun-3 bringup. We had it successfully running UNIX within a day of receiving it! (We later heard that our Moto rep was intending to give that precious early part to another customer, but decided during their meeting with us to give it to us, because we were so ready to get it running.) When the 68000 was announced, it was obviously head-and-shoulders better than the other clunky 8-bit and 16-bit systems, with a clean 32-bit architecture and a large address space. It seems like the designers of the other chips (e.g. the 8088) had never actually worked with real computers (mainframes and minicomputers) and kept not-learning from computing history. Some of my early experience was in APL implementation on the IBM 360 series. I knew the 68000 would be a great APL host, since its autoincrement addressing was perfect for implementing vector operations. In the process of designing an APL for it (which was never built), I wrote up a series of short suggestions to Motorola on how to improve the design. This was published in Computer Architecture News. For the 68010 they actually did one of the ideas, the "loop mode" that would detect a 1-instruction backward decrement-and-branch loop, and stop continually re-fetching the two instructions. This made memory-to-memory or register-vs-memory instruction loops run at almost the speed of memory, which was a big improvement for bcopy, bzero, add-up-a-vector-of-integers, etc. I'll append a USENET posting about the 68000 patents, followed by my addendum after visiting the Patent office. John >From decwrl!decvax!harpo!npoiv!npois!houxm!houxa!houxk!tdl (T.LOVETT) Tue Mar 15 16:55:28 1983 Subject: 68000: 16 bits. With references Newsgroups: net.micro.68k With due respect to Henry Spencer I feel that I must correct some of his statements regarding the 68000. He is correct in saying that the 68000 is basically 16 bits wide; however, his explanation of the segmented bus is incorrect. The datapath of the 68000 is divided into three pieces, each of which has two busses, address and data, running through it. Six busses total. There are muxes which can be switched so that all address busses are connected and all data busses are connected. The three sections of the datapath are the data section (includes low 16 bits of all data registers and ALU), the "low" section (contains the low 16 bits of address registers and the low half of the Address Adder(AAU)), and the "high" section (contains high 16 bits of all address and data registers and the upper half of the AAU). Theoretically they could do 6 16 bit transfers simultaneously, but in looking through the microcode I don't remember seeing more than three transfers at a time. The "low" and "high" sections can be cascaded to provide a 32 bit arithmetic unit for address calculations. 32 bit data calculations must be done in two passes through the ALU. For the masochists out there, you can learn more than you ever wanted to know about the 68000 by reading Motorola's patents on it. They are available for some nominal fee (~ one dollar) from the Office of Patents and Trademarks in Arlington. The relevant patents are: 1 - #4,307,445 "Microprogrammed Control Apparatus Having a Two Level Control Store for Data Processor", Tredennick, et al. First design of 68000 which was scrapped? 2 - #4,296,469 "Execution Unit for Data Processor using Segmented Bus structure", Gunter, et al. All about the 16 bit data path 3 - #4,312,034 "ALU and Condition Code Control Unit for Data Processor", Gunter, et al. Boring. 4 - #4,325,121 "Two-Level Control Store for Microprogrammed Data Processor", Gunter et al. Bonanza! Full of block diagrams and everything you ever wanted to know. Includes complete listing of microcode with Tredennick's "hardware flowcharts". Hope this clears things up. Tom Lovett BTL Holmdel harpo!houxk!tdl 201-949-0056 My [gnu] notes on additional 68000 patents: Pat # Appl # Filed date Issued date Inventors 4,338,661 041,201 May 21, 1979 Jul 6, 1982 Tredennick & Gunter Conditional Branch Unit for Microprogrammed Data Processor 4,342,078 041,202 May 21, 1979 Jul 27, 1982 Tredennick & Gunter Instruction Register Sequence Decoder for Microprogrammed Data Processor and Method 4,312,034 041,203 May 21, 1979 Jan 19, 1982 Gunter, Hobbs, Spak, Tredennick ALU and Condition Code Control Unit for Data Processor 4,325,121 041,135 May 21, 1979 Apr 13, 1982 Gunter, Tredennick Two-Level Control Store for Microprogrammed Data Processor Bonanza! Full of block diagrams and everything you ever wanted to know. Includes complete listing of microcode with Tredennick's "hardware flowcharts". 4,296,469 961,798 Nov 17, 1978 Oct 20, 1981 Gunter, Tredennick, McAlister Execution Unit for Data Processor Using Segmented Bus Structure All about the 16 bit data path 4,348,722 136,845 Apr 3, 1980 Sep 7, 1982 Gunter, Crudele, Zolnowsky, Mothersole Bus Error Recognition for Microprogrammed Data Processor 4,349,873 136,593 Apr 2, 1980 Sep 14, 1982 Gunter, Zolnowsky, Crudele Microprocessor Interrupt Processing 4,524,415 447,721 Dec 7, 1982 Jun 18, 1985 Mills, Moyer, MacGregor, Zolnowsky Virtual Machine Data Processor 68010 changes to 68000 4,348,741 169,558 Jul 17, 1980 Sep 7, 1982 McAlister, Gunter, Spak, Schriber Priority Encoder Used to decode the bit masks for MOVEM. XXXXXXXXX 446,801 Dec 7, 1982 Crudele, Zolnowsky, Moyer, MacGregor Virtual Memory Data Processor XXXXXXXXX 447,600 Dec 7, 1982 MacGregor, Moyer, Mills Jr, Zolnowsky Data Processor Version Validation About how bus errors store a CPU mask version # to prevent their being restarted on a different CPU mask in a multiprocessor system XXXXXXXXX 961,796 Nov 17, 1978 Tredennick et al Microprogrammed Control Apparatus for Data Processor (continued into 4,325,121, probably never issued) XXXXXXXXX 961,797 Nov 17, 1978 McAlister et al Multi-port RAM Structure for Data Processor Registers 4,307,445 961,796 Nov 17, 1978 Tredennick, et al Microprogrammed Control Apparatus Having a Two Level Control Store for Data Processor First design of 68000 which was scrapped?