This document is for internal Xerox use only.Dorado Hardware Manualby E.R. Fialacontributions to the manual byR. Bates, D. Boggs, B. Lampson, K. Pier, E. Taft, and C. Thackerother help byD. Clark, W. Crowther, W. Haugeland, G. McDaniel, and S. OrnsteinAugust 1, 1985The document describes the architecture and hardware design of the Dorado computer. At the dateof this printing, approximately 160 systems have been released to users.This release incorporates a major revision to the manual to lean towards hardware training. Therevision of 14 September 1981 should be used by people interested in writing microcode.Revision history:14 February 1979First complete manual exclusive of I/O controller chapters.8 October 1979Chapters on I/O controllers added; major revisions.14 September 1981Major revision to the Display Controller chapter, medium revision to Instruction Fetch Unit and Disk chapters, minor revisions elsewhere.August 1, 1985 simplified manual for technician training by Frank Vest.XEROXPalo Alto Research CenterComputer Sciences Laboratory3333 Coyote Hill Rd.Palo Alto, California 94304This document is for internal Xerox use only.����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������î+ïbpô�Xð,q�î¶ïXxrô�žî¶ïTãsô�Xî1ïQNî¬ïOƒð@î1ïKîî¬ïJ#ðAî¶ïC@ î¶ï?Îô�Šð'ô�‹ð9î¶ï>ô�ðHî¶ï:‘ô�¾ð;ô�¿ð$î¶ï8Æô�ðWîyï5›tî¶ï2pô�Fî¢ð;î¶ï0ì î'ð3î¶ï/hî¢ðeî¶ï-Àð$î¶ï,ðGî,¦ï#±uî,¦ïøpô�î,¦ï.î,¦ïcsî,¦ï™î;ïµpô�Xð-ÿ��������|����¶n>ROÊ�†����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Table of Contents1.Introduction 12.Overview 22.1Control 22.2Registers, Memories, and Data Paths 22.3Timing 62.4Instruction Fields 82.6Notation 93.Processor Section 103.1RM and STK Memories, RBase and StkP Registers 103.2Cnt Register 123.3Q Register 123.4T Register 123.5BSEL: B Multiplexor Select 123.6ASEL: A Source/Destination Control 143.7ALUF, ALU Operations 163.8LC: Load Control for RM and T 183.9FF: Special Function 183.10Multiply and Divide 223.11Shifter 223.12Hold and Task Simulator 244.Control Section 254.1Tasks 254.2Task Switching 264.3Next Address Generation 274.4Conditional Branches 284.5Subroutines and the Link Register 294.6Dispatches 304.7IFU Addressing 304.8IM and TPC Access 314.9Hold 324.8Program Control of the DMux 325.Memory Section 345.1Memory Addressing 345.2Processor Memory References 355.3IFU References 375.4Memory Timing and Hold 38ÿ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������î(%ï^Ïpô�iîêï[¤qîî9árô�ùxøÿúÿîêïXxqù�ø�ú�îî9árùxøÿúÿù�ø�ú��îêïVŠîî9áùxøÿúÿîêïTù�ø�ú�îô�€ð#î9áô�ùxøÿúÿîêïR¯ù�ø�ú�îî9áùxøÿúÿîêïPÁù�ø�ú�îô�€î9áô�ùxøÿúÿîêïNÓù�ø�ú�îî9áùxøÿúÿîêïK¨qù�ø�ú�îqô�€î9árô�ùxøÿúÿîêïIPù�ø�ú�îô�€ð-î9áô�ùxøÿúÿîêïGù�ø�ú�îô�€î9áô�ùxøÿúÿîêïDçù�ø�ú�îô�€ î9áô�ùxøÿúÿîêïB²ù�ø�ú�îô�€ î9áô�ùxøÿúÿîêï@~ù�ø�ú�îô�€î9áô�ùxøÿúÿîêï>Jù�ø�ú�îô�€ð#î9áô�ùxøÿúÿîêï<ù�ø�ú�îô�€î9áô�ùxøÿúÿîêï9áù�ø�ú�îô�€î9áô�ùxøÿúÿîêï7¬ù�ø�ú�îô�€î9áô�ùxøÿúÿîêï5xù�ø�ú�îô�€î9áô�ùxøÿúÿîêï3Cù�ø�ú�îî9áùxøÿúÿîêï1îô�€ùxøÿúÿî9áô�ùxøÿúÿîêï-äqù�ø�ú�îqô�€î9árô�ùxøÿúÿù�ø�ú�îêï+Òîî9áùxøÿúÿù�ø�ú�îêï)Áîô�€ î9áô�ùxøÿúÿù�ø�ú�îêï'Óîô�€î9áô�ùxøÿúÿîêï%åù�ø�ú�îô�€î9áô�ùxøÿúÿîêï#øù�ø�ú�îô�€ð!î9áô�ùxøÿúÿîêï" ù�ø�ú�î î9áùxøÿúÿîêï ù�ø�ú�îô�€ î9áô�ùxøÿúÿîêï.ù�ø�ú�îô�€î9áô�ùxøÿúÿîêï@ù�ø�ú�îî9áùxøÿúÿîêïRù�ø�ú�îô�€î9áô�ùxøÿúÿîêï'qù�ø�ú�îqô�€ î9árô�ùxøÿúÿù�ø�ú�îêïîô�€î9áô�ùxøÿúÿù�ø�ú�îêï(îô�€î9áô�ùxøÿúÿîêï:ù�ø�ú�îô�€ î9áô�ùxøÿúÿîêïLù�ø�ú�îô�€î9áô�ùxøÿúÿÿ�������"����ê/Q+S����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Dorado Hardware ManualTable Of ContentsAugust 1, 19855.5The Map 415.6The Pipe 445.7Faults and Errors 455.8Storage 485.9The Cache 495.10Initialization 505.11Testing 516.Instruction Fetch Unit 526.1Overview of Operation 526.2The IFUJump Entry Vector 566.4Use of MemBX and Duplicate Stk Regions 566.5Traps 576.6IFU Reset 596.7Rescheduling 596.8Breakpoints 596.9Reading and Writing IFUM 596.11IFU Testing 606.12Details of Pipe Operation 617.Slow IO 647.1Input/Output Functions 64 7.4SubTasks 658.Fast IO 678.1Transport 678.2Wakeups and Microcode 679.Disk Controller 689.1Disk Addressing 699.3General Microcode Organization 709.4Task Wakeups 719.5Control Register 719.6Format RAM and Sequence PROMs 729.7Tag Register 739.8FIFO Register 759.9Muffler Input 759.10Error Detection and Correction 7810.Display Controller 7910.1Operational Overview 7910.2Video Data Path 8010.3Horizontal and Vertical Control 8310.4Pixel Clock System 85����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������î¶ïfñrô�€î!Zsî1Urô�îêï_îô�€î9áô�ùxøÿúÿîêï](ù�ø�ú�îô�€î9áô�ùxøÿúÿîêï[:ù�ø�ú�îô�€î9áô�ùxøÿúÿîêïYLù�ø�ú�îî9áùxøÿúÿîêïW^ù�ø�ú�îô�€î9áô�ùxøÿúÿîêïUpù�ø�ú�î î9áùxøÿúÿîêïS‚ù�ø�ú�îî9áùxøÿúÿîêïPWqù�ø�ú�îqô�€î9árô�ùxøÿúÿù�ø�ú�îêïNFîô�€î9áô�ùxøÿúÿù�ø�ú�îêïLXîô�€î9áô�ùxøÿúÿîêïJjù�ø�ú�îô�€ð&î9áô�ùxøÿúÿîêïH|ù�ø�ú�îî9áùxøÿúÿîêïFŽù�ø�ú�îô�€î<¶ô�ùxøÿúÿîêïE îù�ø�ú�î9áùxøÿúÿîêïCù�ø�ú�î î9áùxøÿúÿîêïA.ù�ø�ú�îô�€î9áô�ùxøÿúÿîêï?Aù�ø�ú�îô�€ î9áô�ùxøÿúÿîêï=Sù�ø�ú�îô�€î9áô�ùxøÿúÿîêï:'qù�ø�ú�îqô�€î9árô�ùxøÿúÿù�ø�ú�îêï89îô�€î9áô�ùxøÿúÿù�ø�ú�ùxøÿúÿîêï6Kù�ø�ú�îî9áùxøÿúÿîêï3 qù�ø�ú�îqô�€î9árô�ùxøÿúÿù�ø�ú�îêï1îî9áùxøÿúÿù�ø�ú�îêï/!îô�€î9áô�ùxøÿúÿù�ø�ú�îêï+öqîqô�€î9árô�ùxøÿúÿù�ø�ú�îêï*îô�€î9áô�ùxøÿúÿù�ø�ú�îêï(îô�€î9áô�ùxøÿúÿù�ø�ú�îêï&,îô�€î9áô�ùxøÿúÿù�ø�ú�îêï$>îô�€î9áô�ùxøÿúÿù�ø�ú�îêï"Pîô�€î9áô�ùxøÿúÿù�ø�ú�îêï bîô�€î9áô�ùxøÿúÿù�ø�ú�îêïtîô�€î9áô�ùxøÿúÿù�ø�ú�îêï‡îô�€î9áô�ùxøÿúÿîêï™ù�ø�ú�îô�€î9áô�ùxøÿúÿîêïmqù�ø�ú�îqô�€î9árô�ùxøÿúÿù�ø�ú�îêïîô�€î9áô�ùxøÿúÿù�ø�ú�îêï‘îô�€î9áô�ùxøÿúÿîêï€ù�ø�ú�îô�€î9áô�ùxøÿúÿîêïoù�ø�ú�îô�€î9áô�ùxøÿúÿ�������^����¶(0¶Xã˜����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Dorado Hardware ManualTable Of ContentsAugust 1, 198510.5Seven-Wire Video Interface 8510.6Processor Task Management 8710.7Slow IO Interface 8710.8DispM Terminal Interface 9011.Ethernet Controller 9111.1Ethernet Packets 9111.2Controller Overview 9211.3Receiver 9311.4Transmitter 9411.5Clocks 9511.6Task Wakeups 9611.7Muffler Input 9711.8IOB Registers 9811.9Control Register 9811.10Status Register 9912.Other IO and Event Counters 10012.1Junk Task Wakeup 10012.2General IO 10012.3Event Counters 10013.Error Handling 10213.1Processor Errors 10313.2Control Section Errors 10413.3IFU Errors 10413.4Memory System Errors 10413.5Sources of Failure 10513.6Error Correction 10615.Glossary 107����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������î¶ïfñrô�€î!Zsî1Urô�îêï_îô�€î9áô�ùxøÿúÿîêï](ù�ø�ú�îô�€î9áô�ùxøÿúÿîêï[:ù�ø�ú�îô�€î9áô�ùxøÿúÿîêïY)ù�ø�ú�îô�€î9áô�ùxøÿúÿîêïUýqù�ø�ú�îqô�€î9árô�ùxøÿúÿîêïTù�ø�ú�îô�€î9áô�ùxøÿúÿîêïR"ù�ø�ú�îùxøÿúÿîêïPžù�ø�ú�îî9áùxøÿúÿîêïN°ù�ø�ú�î î9áùxøÿúÿîêïLÂù�ø�ú�îî9áùxøÿúÿîêïJÔù�ø�ú�îô�€î9áô�ùxøÿúÿîêïHæù�ø�ú�îô�€î9áô�ùxøÿúÿîêïFøù�ø�ú�îô�€î9áô�ùxøÿúÿîêïE ù�ø�ú�îô�€î9áô�ùxøÿúÿîêïCù�ø�ú�îô�€î9áô�ùxøÿúÿîêï?ñqù�ø�ú�îqô�€î9árô�ùxøÿúÿîêï>ù�ø�ú�îô�€î9áô�ùxøÿúÿîêï<ù�ø�ú�îô�€ î9áô�ùxøÿúÿîêï:'ù�ø�ú�îô�€ î9áô�ùxøÿúÿîêï6üqù�ø�ú�îqô�€ î9árô�ùxøÿúÿîêï3Ðù�ø�ú�îô�€î9áô�ùxøÿúÿîêï2Lù�ø�ú�îô�€î9áô�ùxøÿúÿîêï0Èù�ø�ú�îô�€ î9áô�ùxøÿúÿîêï/Dù�ø�ú�îô�€î9áô�ùxøÿúÿîêï-Àù�ø�ú�îô�€î9áô�ùxøÿúÿîêï,<ù�ø�ú�îô�€î9áô�ùxøÿúÿîêï'qù�ø�ú�îqî9árùxøÿúÿÿ�������<����¶ø/œHÉ��������������������������������������������������������������������������������������������������������������Dorado Hardware ManualTable Of ContentsAugust 1, 1985List of Figures 1.Dorado: Programmer's View 2.Card Cage 3.Processor Hardware View 4.Shifter 5.Control Section 6.Next Address Formation 7.Instruction Timing 8.Overall Structure of the Memory System 9.Cache, Map, and Storage Addressing10.The Pipe and Other Memory Registers11.Error Correction12.Instruction Fetch Unit Organization13.Disk Controller14.Display Controller15.Display Controller IO Registers16.Ethernet Controller17.Programmers' Crib Sheetÿ��������î¶ïfñrô�€ù�ø�ú�î!Zsî1Urô�î)Pï^Ïpô�iî:ï[rô�Xî\î:ïYLî\î:ïWî\î:ïU·î\î:ïSìî\î:ïR"î\î:ïPWî\î:ïNŒî\ð&î:ïLÂî\ð"î:ïJ÷î\ð#î:ïI-î\î:ïGbî\ð#î:ïE—î\î:ïCÍî\î:ïBî\î:ï@7î\î:ï>mî\ÿ�������ø����¶>&/œ)å�ƒ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Front ViewTop View+5 Volt-5 Volt-2 Volt+12 VoltFanFanqqqqqqqr.625 inr4.5 in.qrq13 in.3.5 in.Fast or slow I/OFast or slow I/OFast or slow I/OFast or slow I/ODispY (Display controller)DskEth (Disk/Ethernet controller)Storage odd or Slow I/OStorage odd or Slow I/OStorage even or Slow I/OStorage evenStorage evenStorage oddStorage oddIFU (Instruction Fetch Unit)BaseB (Baseboard)Storage even or Slow I/Oqr15.5 inqr10.5 inrqPower SuppliesNot toScaleMemC (Memory addressing)MemD (Cache data and EC)The +5 V supply and one fan are controlled by a switch; -5 V, +12 V, and-2 V supplies, the other four fans, and the disk logic and spindle powerBaseB and ContB boards are equipped with temperature sensors that arerepetitively monitored by the baseboard microcomputer; most other boardsmicrocomputer will shut down the three power supplies that it controls.The microcomputer also monitors power supplies; when any voltage or currentdeviates from its allowed range, the microcomputer shuts off power tothe three supplies that it controls. 2315 246 71 24 21ic's of random logic1kx1 ECL RAM's16x4 ECL RAM's256x4 ECL RAM'sThe following shows approximate component count:11 Logic boards:8 Storage boards:10561152ic's of random logic15 in.<>PanelWiringPanelWiringFive 240 CFM (free air) fans estimated to produce375 CFM airflow in the enclosure.Estimated temperature rise of the exiting air is about8 degrees C.Power consumption on each logic board averagesabout 85 watts, on each storage board about 55watts.On each board -5 V power is distributed byfingers reaching across the board on the topside from the back, -2 V power by fingersreaching across the board on the bottom fromthe back. +5 V and +12 V reach across the boardfrom the front on top and bottom. The powerfingers on the bottom feed through to thecomponent side on the top.1600SIP'sThe +5 V supply is used for TTL/ECL conversions andD1CardCage.silFigure 2Card CageSideSideNormal MECL-10000 DIP's are connected to the groundplane and -5V supply. Logic nets are terminatedthrough 100-ohm resistors at one or both ends to the-2V supply. The resistors are in low-profile SIPs thatmount between the DIPs (144 8-pin SIPs per board).ContB (microstore)ContA (branching and tasking)+12 V x 10 A64k x 1 MOS Ram's64k x 1 MOS Ram's(100 ohm terminator resistors)7/11/85is halted. In the event some temperature exceeds 44 degreees C thehave temperature sensors that can be monitored when the Doradoare controlled by the baseboard microcomputer (Located on the BaseBoard)ProcH (Processor bits 0-7)ProcL (processor bits 8-15)DispM (Display color controller)MemX (Map and control)for TTL components. The +12 volts is used for the Ethernet box which is red the Dorado computer.-2 V x 150 A-5 V 300 A+5 V300 A��îï+žð î3¬ï)¬ðî#tï.óðî%:ï1—þ�$î&Wï0žþ�$î%:ï0zþ@�$î%:ï0zþ�$@î%:ïP&þ�$î&WïO-þ�$î%:ïO þ@�$î%:ïO þ�$@îFïP&þ�$îGïO-þ�$îFïO þ@�$îFïO þ�$@îFï1—þ�$îGï0žþ�$îFï0zþ@�$îFï0zþ�$@î#ïPJðîEtïPJðîDæï.óðî-ïO˜þ�$î3ïNþ�$«î-ïMíþ@�$î-ïMíþ�$Îî8ïO˜þ«�$î>ÉïNþ�$«î8ïMíþÎ�$î8ïMíþ�$Îî/:ïO»ðî:WïO»ðî-|ïI¯ðî/:ïI¯ðî0åïI¯ðî9;ïI¯ðî:åïI¯ðî<ïI¯ðîH;ïO˜þ«�$îH;ï1 þ«�$îH;ïKZðîH;ï-çðîÖtïcuðîH;ïI{þ«�$îH;|ïFYðîGtïKØðîH;|ïE=ðîH;ï2YðîH;ï1<ðîHÉïBfþ�$9îHÉï5žþ�$ �îGtï@-ðîGï2×ðî%Èï0åþ!z�Gî%Èï0åþ�GÖî%ÈïOtþ!ž�GîGï0åþ�GÖî +ïbçþ�Gî rï`õþÖ�Gî rïdÙþÖ�Gî rï_þÖ�Gî rï]þÖ�Gî rï[þÖ�Gî rïY.þÖ�Gî rïW<þÖ�Gî rïUJþÖ�Gî rïSXþÖ�Gî ¹ïQfþ�Gî ¹ïOtþ�Gî rïM‚þÖ�Gî rïIŸþÖ�Gî +ïGþ�Gî rïE»þÖ�Gî ¹ïCÉþ�Gî ¹ïA×þ�Gî ¹ï?æþ�Gî rï=ôþÖ�Gî rï<þ�Gî rï8þÖ�Gî +ï7×þd�Žîïegðîïcuðîïaƒðîï_‘ðîï[®ðîïY¼ð!îïWÊðîïSæðîïUØðîïJ-ðîïNðîïPðîïLðîïBfðîï8¬ðî ¹ï:þH�GîïQôðî +ï.eþ�Ž8ôî +ï-×þ�ŽîHïdüþ�$îóïegþ�$«îóï`®þ�$9îe|ï^…ðîeïaÚðîÖïg5þ€�$îŽï8Bþ�$îätïO»ðî«ïQfþ�$òî«ï5åþ�$Hî|ïb÷ðîï5 ðîÖï-úþÇ�$î�tï1sðî«ï2þ�$Uî«ï.eþ�$Çî|ï*Øðîï4ðîrpï5Wðî ¹ïK‘þ�Gî��uï:žðî��ï9‚ðîHïc þU�$îtïDXðîïH;ðî#ÖïeõðHî#ÖïdÙðHî#ÖïbðEî#Öï`õðHî#Öï]ŸðGî#Öï\<ðKî#ÖïZØðEî#ÖïY¼ð$îäï"ºðîäï",ðîäï!ðîäïóðîäïÖðîäïºðî9ï",ðî9ï!ðî9ïóðî9ïÖðî9ï%ð0îäuï#Öðîï#Öðîtï",ðîï!ðîäï",ðî5åï,ºðî9;ï-%þ ä�$î%Èï,,þ�$9îGï,,þ�$9î%Èï-%þ�$î%È|ï)uðîFï)uðîGï5{þ9�$îHÉïLôþ�$ÇîHÉïIŸþ�$9î!åtï@-ðî!åï?ðîCÉï@-ðîCÉï?ðî&åïI{þ�Ž�$î(ïI{þ�Ž�$î)ïI{þ�Ž�$î*:ïI{þ�Ž�$î+WïI{þ�Ž�$î,sïI{þ�Ž�$î-ïI{þ�Ž�$î.¬ïI{þ�Ž�$î/ÉïI{þ�Ž�$î0åïI{þ�Ž�$î2ïI{þ�Ž�$î3ïI{þ�Ž�$î4;ïI{þ�Ž�$î5WïI{þ�Ž�$î6tïI{þ�Ž�$î7ïI{þ�Ž�$î8¬ïI{þ�Ž�$î9ÉïI{þ�Ž�$î:åïI{þ�Ž�$î<ïI{þ�Ž�$î=ïI{þ�Ž�$î>;ïI{þ�Ž�$î?WïI{þ�Ž�$î@tïI{þ�Ž�$îAïI{þ�Ž�$îBïI{þ�Ž�$îCÉïI{þ�Ž�$îDæïI{þ�Ž�$îFïI{þ�Ž�$îEtï5{þ�Ž�$îDXï5{þ�Ž�$îC;ï5{þ�Ž�$îBï5{þ�Ž�$îAï5{þ�Ž�$î?æï5{þ�Ž�$î>Éï5{þ�Ž�$î=ï5{þ�Ž�$î<ï5{þ�Ž�$î;tï5{þ�Ž�$î:Wï5{þ�Ž�$î9;ï5{þ�Ž�$î8ï5{þ�Ž�$î7ï5{þ�Ž�$î5åï5{þ�Ž�$î4Éï5{þ�Ž�$î3¬ï5{þ�Ž�$î2ï5{þ�Ž�$î1sï5{þ�Ž�$î0Wï5{þ�Ž�$î/:ï5{þ�Ž�$î.ï5{þ�Ž�$î-ï5{þ�Ž�$î+åï5{þ�Ž�$î*Èï5{þ�Ž�$î)¬ï5{þ�Ž�$î(ï5{þ�Ž�$î'sï5{þ�Ž�$î&Wï5{þ�Ž�$î(ïKJð1î(ïJ-ð!î.ïLfþ�$«î/ÉïLfþ�$«î1sïLfþ�$«î9ÉïLfþ�$«î;tïLfþ�$«î=ïLfþ�$«î(ïGôð6î(ïFØðî(ïE-ð.î(ïDð.î(ïBôðî(ïAIð*î(ï@-ð,î(ï?ð)î(ï=ôð,î(ï<×ð0î(ï;»ð,î(ï:žð)î(ï9‚ðîäïðî9ïðîïòð3î?Wuïðî$rïðî#ïrð î!åtïAIðîCÉïAIðîïð3îïð0îïdð4îïHð7îï+ð2îï:žðîï<ðî:ï3eðîï.þ�Ž8ôî +ïg5þd�$î +ïgþd�Žî,ï-×þd�Žîäï!ðî9ïºðî ïVðî@tuïòðî#Ötï^¼ðCî#Öï_Øð>î#ÖïcuðHîï@tðîï>‚ðîï]Ÿð îïFIðîïÖðîï ð8îï€ðî:ï1ºðî«ï3eðî«ï2Iðîòï3ðîòï2ðî Öï4Éþ+�Gî�ï1,þ�Gäî Öï0åþr�Gî Öï0åþ�G+îï0åþ�G+îï0åþr�GîHï1,þ�Gäîï4Éþ+�Gîdï4Éþ�Gîsï1,þ�Gäîdï0åþV�Gîdï0åþ�G+������� ¾ä����PmeŠ•����������������������Dorado Hardware ManualIntroductionAugust 1, 19851IntroductionDorado is a high performance, medium cost microprogrammed computer designed primarily toimplement a virtual machine for the Mesa language, and to provide high storage bandwidth forpicture-processing applications. Dorado aims more at word processing than at numericalapplications.The microprocessor has a nominal cycle time of 64 ns, and most Mesa opcodes will execute in oneor two cycles; the overall average opcode execution time will be subject to a number ofconsiderations discussed later. Dorado will also achieve respectable performance whenimplementing virtual machines for the Alto, Interlisp, and Smalltalk programming systems,although simple instructions for these run three to five times slower than Mesa.Dorado is implemented primarily of MECL-10K integrated circuits; storage boards use MOS andSchottky-TTL components primarily. Backplanes and storage boards are printed circuits; otherlogic boards are stitchweld in prototypes and multiwire or PC in production machines. Themainframe is divided into sections called Control, Processor, Instruction Fetch Unit (IFU), andMemory, and peripheral control is accomplished by the Disk, Ethernet, and Display Controllersections, as discussed in chapters of this manual. The main data paths, shown in Figure 1, are 16-bits wide (the word size). The control section is shown in Figure 5. The Baseboard section, isused to boot the Dorado, run the clocks, and support the debugging interface from the Alto.The processor is organized around an Arithmetic and Logic Unit (ALU) whose two inputs are theA and B data paths (Figure 1), and whose output is normally routed to the Pd data path. Inputsto A, B, and Pd include all registers accessible to the programmer. In addition, 16-bit literalconstants can be generated on B. B appears on the backplane for communication with the IFU,Control, and Memory sections.The processor also includes a 32-bit in/16-bit out shifter-masker optimized for field insertion andextraction and with specialized paths for the bit-boundary block transfer (BitBlt) instruction.An instruction fetch unit (the IFU) operating in parallel with the processor can handle up to fourinstruction sets with 256 opcodes each; opcodes may independently be specified as one, two, orthree bytes long.Emulator and IFU references to main memory are made through a 4k-word high-speed cache.Main storage can be configured in various sizes up to a maximum of 16 mega words using 256k x1 RAMs.The processor initiates data transfers between main memory and fast input/output devices. 16 16-bit words (Munch) are then transmitted without disturbing the processor data paths in about 1.68ms (28 cycles). New references can be initiated every 8 cycles, so total bandwidth of the memory,533 mHz, is available for devices with enough buffering.ÿ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������î¶ïfªpô�€î%5qî5¿pô�îGïïfñ�î¶ïa×rî¶ï^epô�¶ðXî¶ï\›ô�§ð6ô�¨ð&î¶ïZÐôðMô î¶ïYî¶ïU”ô�‚ô�ƒð?î¶ïSÉô�öð8ô�÷î¶ïQþô@ðEôAî¶ïP4ôð+ôð.î¶ïNiô�ðPî¶ïJ÷ô�”ðHô�•î¶ïI-ô�·ðMô�¸î¶ïGbô�Ïð-ô�Ðð-î¶ïE—ô�µð)ô�¶ð6î¶ïCÍô�·ð\î¶ïBô�†ð3ô�‡ð0î¶ï@7ô�¥ðJô�¦î¶ï>mô�¶ðCô�·î¶ï:ûô�Šð$ô�‹ð9î¶ï90ô�ˆð0ô�‰ð0î¶ï7fô�¿ô�Àð[î¶ï5›ô�šô�›ðBî¶ï3Ðô�î¶ï0_ô�•ô�–ðQî¶ï.”ô�ãðIô�äî¶ï+"ô�ŽðBô�î¶ï)Wô�©ð^î¶ï'ô�î¶ï$ô�¸ð#ô�¹ð4î¶ï"Pô�ˆðBô�‰î¶ï †ô�î¶ïô�‡ðPô�ˆî¶ïIô�“ð[ô�”î¶ï~s�pô�ŒðUô�î¶ïmô�ð8ÿ�������6����¶&=ñPå������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������R oddJCNFFBLOCKASELLCBSELALUFRSTKALU carryALU[15]{BSEL, FF}Md *Md *Md *QTFF[4:7]FF[4:7]>>TRSHIFTER161616>>{LC}16ALUFM>>{xxx} Source of ControlTask-Specific**{LC}{BSEL}ControlBAALUAddress LogicFF[4:7]0,,FFFF,,0FF,-1-1,,FF{ASEL}{ALUF}Q16R'T'Programmer's View>>>>ALU=0ALU<0SubTaskALU rsh 1ALU lsh 1To devices16R < 0>IOBALUFMShCTIOA, StkPAMuxAMuxBMuxFFRF_WF_ShC_SubTaskShiftControlsRMSTKRSTK[0:3]{FF}RSTK[1:3]StkpSaved StkpRQFF[4:7]Md*T{FF}>>>>>>>>>>>>>>>>>>>ShC16168B+RBaseCnt>>>>>>>>B>Stkp>>>>>>>>>>T*MemBase*TIOA*CntOverflowCnt=0&-1oPipe0Pipe1Pipe2'Pipe3'Pipe4'ConfigDBufooFaultInfo'gh>hgLinkRWCPRegoMemCMemDIFUControlBMuxghoPointers16IOBIOAB>>>>>>>>>>ALUBrLo_BrHi_CFlags_ghMarMuxLoadMcrAB>Mar+>>>>>>>>>>>>>>>>>>>>>>>MapBuf_>>DBuf_MemX>>Store_Map_LoadMcrLoadTestSyndromeFetch_Store_Map_PreFetch_IOFetch_IOStore_MemoryIFU>>To ProcessorTo ControlMd*Fout>>>>>Fin>IFUFetch>10161681681616F/GF/G>16{FF}{FF,ASEL}{ASEL}MultiplyDivideCDivideQ lsh 1Q rsh 1{BSEL}DoradoFigure 1From devices{JCN,FF}>>>>>RdTPC_LdTPC_IM_Link_{FF}MOS_GenOut_BrkIns_>{ASEL}MemX{FF}{shift mask}Md*/0Carry'IOAtten'>>>>{FF}o>IFUTest_{FF}{FF}MemBX>FF[6:7]BR{ASEL}IdPdPipe5'PdA_IdRisIdA_IdTisIdPdId{ASEL}{FF}ProcSRN_B[12:15]IFaddr>B[3:7]MemBIFUMRH_IFUMLH_Id0 or 1by IFU256 x 16256 x 16PCX'Junk'IFUMLH'IFUMRH'BMux>D1ProgView.sil87/28/85012345677654321021001221001233210��îtïKØðîDXï ðî3ï ðî(ïðî%:ï ðîï ðîVï ðî�ï ðîï ðîÇïòþ�$UîGïdþ�$îEtïdþ�$îC;ïdþ�$îAïdþ�$î>Éïdþ�$î<ïdþ�$î:Wïdþ�$î8ïdþ�$î5åïdþ�$î3¬ïdþ�$î1sïdþ�$î/:ïdþ�$î-ïdþ�$î*Èïdþ�$î(ïdþ�$î&Wïdþ�$î$ïdþ�$î!åïdþ�$î¬ïdþ�$îsïdþ�$î:ïdþ�$îïdþ�$îÈïdþ�$îVïdþ�$îïdþ�$î äïdþ�$î«ïdþ�$î�ïdþ�$î rïdþ�$îïdþ�$î9ïdþ�$îÖïT¼ð îdïZJðî GïVfð î#Hï6tðîïGðîäï)eðî4Éï<×þ�$�Žî#Hï3ðî#Hï4Éðîdï\Êþ�$î%:ï`®ðî;tï\ƒþ�$Çî7×ï\_þÀ�$î7×ï\_þ�$ëîï]Xðîdï_µþU�$îºï\Êþ�$îdï\§þy�$îï]5þù�$îÖï]Ÿþ�$îÈ|ï[/ðîÈïY…ðî#tïBfðî#Hï8ðî2ï3óþ�$äîï<mþ«�$îÈï8þ�$rîï7ûþ�$•î«pï9‚ðîï:Âþ]�$îï9þ]�$îtï:Wðîsï9Éþ�$î Öï:Wþ�$î ¹ï:Âþ«�$îdï:åðîdï9;ðî ¹ï9þ«�$î Öï8¬þ�$î¹|ï7ðî¹ï5gðîï'ºþ�$�îï'—þ•�$îäï*ìþ•�$î9tï&žðî",ï*ðî2ï=fþ�$Uî2ï=Bþr�$î2ï<´þr�$î3ï?ðî1s|ï1<ðî1sï7 ðî«tïGðîäïòð î«pï«ðîVïOtðî rtïDŸðî&åï9;ðî3ï=ôðî3ï4‚ðî3ï:åðî3epï7×ðî7ï3Ðþ�$ î2ï3Ðþr�$î#Hï,PþG�$î#Hï-úþG�$î«ïO-þ�$9îïOßþ�$¤îïOßþ$�$îïPþ�$€î«tïM‚ð îïM_þ�$ÎîïM_þy�$îsïM‚þ�$«îïO þV�$îòïQôðî#Hï1sðî#Hï.ðî#Hï,sðî#Hï/Éðî&åïKJðî3ïAðîdïYQþU�$îºïVþ�$ÇîdïVŠþy�$îpïW<ðî ¹ïWíþ«�$îdïWƒþ�$îtïXðîï,—þr�$î!žï)óþ�$îï:åðîï9;ðî¬rïäðî�|ï&gðîHïT=ðî5žï&zþ•�$îBï%ðî�ïMKðî ïE»þ�$+î8etï4‚ðî8eï3eðî rïNðî<×ï=Bþ9�$î<×ï>íþ9�$î=fï=fð î=fï;»ð î;»uï&Wð î8ôï7×þ�$î9‚tï8eðîïJ»ðî�|ïJ=ðî«ïòþ�$Uîïòþ�$Uî:ïòþ�$Uî!åïòþ�$Uî(ïòþ�$Uî*Èï€þ�$Çî<ïòþ�$UîIæïdþ�$îLïdþ�$îÇïÏþK‘�$îNXïòþ�$UîÇï$þK‘�$î=ftï?ðî<×ï@—þ9�$î=fï@»ðî=fïE»ðî=fïDð îrï3Bþr�$îrï3eðîrï1—þr�$îrï1ºðîrï/ìþr�$îrï0ðîäï1—þ«�$îï/ìþÇ�$îï0ðî ï1—þG�$îï1 þ�$îuï3eðîï1ºðîï0ðîï7ûþ«�$î+Wï_üþ«�$î-ïb5þŽ�$î*:tïe ðî2ï@—þr�$î«uï2Iðî«ï1,ðîrpïIæðîïK´þV�$îsïH‚þ�$UîïH_þy�$îïH_þ�$yîïGBþV�$îsïDþ�$UîïCíþy�$îïCíþ�$yîrïEtðî VïJ þÇ�$î VïE»þ�$rî VïE˜þÇ�$î ïGÑþÇ�$î¹ïRíþ�$îVïO-þ�$äî¹tïSð îïA´þ�$¤îsïJ˜þ�Ž�$îïE»þ�$�îsïE˜þ�²�$îïBÐþä�$îï?žþ�$Uîï?{þ�$îï?{þ�$yîïA´þ�Ž�$î"sïBBþ�$î-ï]çþ�$rî(ï+Wþ�$ Vî(ïE˜þÇ�$î'sïJ-ðîï>‚ð î«ï@-ðîï@ þ9�$îVï@—þ9�$î ï=ôþ�$ÇîVï=Ðþ]�$îVï=Ðþ�$ëî ï?{þÇ�$î Vï>‚þ�$Žî VïA&þÇ�$î�ïBôð î7ï=fþ�$Uî5žï+zþr�$î#ï7ûþ��$îïH_þÖ�$îÖïE»þ�$äî#ïGfðî#ïDðî#ïE»ðî#ïIðîï)Aþ G�$îÖï(Hþ�$äîóï*ðîHïIŸðîïKØþ�$«î�|ïFYðî�ïAçðî rïDöðî rïCKðî'sïE=ðî'sïC’ðî'sïAçðî'sï@=ðî'sï>’ðî'sï4Kðî'sï2 ðî'sï0õðî'sï/Jðî'sï- ðî'sï+õðî'sï*Jðî'sï( ðîºï%‘ðîºï'<ðî(ïAIþ�$äîäï1 þ�$îäï.óþ�$äî ï3ÐþU�$î äï/‚þ�$rî ï/^þy�$î ï/^þ�$•î Öpï0åðîrï1,þ�$î�tï1ºðî=fïCíþ«�$îäï.óþ�$Žîï>^þ9�$îòï^.ðîï@»ðî GïXðî +ï>ÉðîdpïPØðîòï]Ÿðî%:ï`Šþ�$î*:|ï[/ðî*:ï\Úðî+åï\Lðî�ï=vðîrïBÐþä�$î9ï<Yðî9ï:®ðî9ï;Ëðî9ï? ðî rïA&þä�$î �tïAIðî9|ï=vðî«pï@»ðîÇ|ï/’ðîÇï-çðîÇï,<ðî rï-çðîÈï,<ðîÈï-çðî Vï(%þ�$î9ï'<ðî9ï%‘ðî Vï*þÇ�$îïH¦þr�$îÖï*^þ��$îºïCðîºïD¯ðîdïVþ�$ÇîÈpï)eðîÖïGBþ ¹�$î.eï`gðî-×ï^¼ðî6,ï(ðî7ï&åðî=ftïBfðî#ï4¥þ��$î8eï2IðîÖï`gðîÇï#%þ�$îÇï!zþ�$îÇïÏþ�$îÇï%þ�$îÇïzþ�$îÇïÏþ�$îÇï$þ�$îÇïzþ�$îäïþ�$ äîäpïäðîÇtï#HðîÇï!žðîÇïóðîÇïHðîÇïðîÇïHðî ï¤þr�$î ïÈðîpï:ðî&ïþ9�$î&ï³þ9�$î-Iïþ�$9îAïðîÇtïð î+ï)Aþ �$î5ž|ï!ðî5žï!ðîBfï ‘ðî*Èï#úþ9�$î-ï Øðî-ï Øðî:WïOþ«�$î:Wï¤þ«�$î:åtïsðî:åïÈðîAï¬þ�$äî&ï]þ9�$î-IpïðîòuïrðîVïrðî/:ïºðî@»ïºðîpï ðî&å|ï Øðî&åï Øðî)pï#ðî)¬ï#úþ«�$îïdþ�$Çî7×ï$þ«�Gî=fïE˜þ«�$î=ïBBþò�$î=fïGBþ«�$î=ftïGfðî7ï8Bþ �$î<×ï;—þ9�$î=ï9íþò�$îDï?ÂþG�$îDæï?Wþ�$îEtï?æðî<Ipï$eðî<Iï(×ðîïUØþ�$�ÕîïYuþ�$�Õî äï[õþ�$+îtï_ðîÇï^ßþ�$î äï^ þ€�$îBô|ï4’ðîBôï6<ðîBôï7çðîBôï9’ðîBôï;=ðîBôï<çðîBôï>’ðîBôï@=ðîBôïAçðîBôïC’ðî=ftï8eðî«ïóþ7�Gî6tïS|þU�$î7ïQôðî7ïPJðî7ïLôðîDï7Iþ�$9îï:Wþ�$+îÈï:4þG�$îï>^þH�$î+Wï;Pþ9�$î5žï&žþ�$�î3ï$¬þ�$¹î3ï$ˆþÇ�$î+å|ïLvðî+åïLvðî0WpïO»ðî7tïNŸðî:ï&žþ�$�î-pï;tðî-ï5ðî's|ï:®ðî(ï=fþ�$€î7tïSŸðî>;ï^QþÇ�$îAï[þ�$Uî>;ïZüþë�$î>;ïZüþ�$yî?Wï\<ðî5W|ïKèðî2ïþŽ�$î2ï]þŽ�$î2ï³þŽ�$î2ïþŽ�$îdïdþ�$ÇîÇïuðîÇïÊðîÇïðîÇïtðîÇïÊðîÇïðîÇïtðîÇïÊðî,,ïXðî,,ïðî,,ïðî,,ïXðî1sïØðî?æïŸðî?æïôðî7ïXðî7ïðî7ïðî7ïXðîòïôðîHïôðîïôðîHtïÈðîV|ïôðîsï¤þd�$î"sïôðîòtïÈðîdï¤þr�$îsïdþ�$Çî,uïrðî%È|ï Jðî/:ï JðîuïVðî:ïðî:ïVðî:ï:ðî@tïYßþò�$îGfïMÊþ�$9î@tïM¦þ�$î@tïM¦þ�$]îAïSæðîAïRÊðîAïQðîAïP‘ð îAïOtðîAïNXðîApïWƒðî7×ï_'þ�$îï\§þd�$îïT˜þ‡�$îïT˜þ�$2î ÈïWÊðîºïWíþä�$îºï^ þ�$î.|ïT„ðî*ÈïRLðî2ï_üþ9�$î9Éï_Jþ�$�Õî/ÉuïZJðî/ÉïWÊð îH;tïUðîH;ïQfðî=|ïWÚðî=ïZðîLïQ/ðîLôïO„ðîM;ïM’ðî;-tïVõðî?W|ïS!ðîAuïUðî.|ïWðî+WtïXXðî*:ïZJþ�$î*ïWÊþ�$îJ»ïRÊþ�$î*ÈïBBþd�$î,sïA×ðî*ï-³þd�$î,,ï-Iðî?Wï(þ�$dî@-ï(×ðî?Wï#þ�$«î@-ï$eðîKØïSXðîKJïPØþ�$îKØïQfðîJ»ïTtþ�$îKJïUðîGfïT¼þd�GîGfïSþ«�GîH;ïSXðîGfïQþ«�GîóïXŸþ�Gî:ïXæðî!žï\Êþ�G9î!žï^¼þ ¹�Gî$óïZ‘þ G�Gî$óïXþ G�Gî$óïUØþ G�Gî rï,þ9�GîºïÈþ�GrîïþÇ�Gî:ïÈþ�Grî:ïþ9�Gî0ï¬þ�GGî-×ïdþ¹�GîC;ïþ�GîHï*ÈþŽ�Gî¬ïFþ+�GîïFØþr�Gîäï)þr�Gîs|ïUðî=ïVþ�$dî=ôtïVõðî%:ï :þ�Gäî%:ï#Öþ«�Gî0Wï :þ�Gäî/:ï#Öþ�Gî#ï6,þ��Gî$óïT¼þ�$î rïMÊþ«�Gî«ï,þ�Gî,sï«ðîÈï,ð î&ïþ9�$îïðîGuïZJðîGïY.ðîGïXðîGïVõðîGïUØðî9tï-×ðî#rïŽðî#ï9ðî;»uïbðîDXtïVðîIŸ|ïJðîIŸïôðîIŸïŸðîIŸïJðîDïÊðîE-ïþ�$€îE»tïðîE-ïúþŽ�$îE»ïÈðîE»ïsðîE»ïðîE-ï¤þŽ�$îE-ïOþŽ�$îE-ïúþŽ�$îAïVþ�Gî2ïðî3ï,ðî3ïðî2ï]þŽ�$î3ïðî7I|ïðî:ï(þ +�Gî&åtï<ðîòuïðîBôtï5åðî@»ï4‚ðî=fï:ðî8eï5žðî<ï+Wðî6tïN{þ«�$î6tïLÑþd�$î6tïP&þd�$î6tïQÑþd�$î<|ïN!ðî<ïLvðî<IïJËðî<ïI!ðî9tïðîï'ºþ�$�î-×pïO-ðî/:ïO»þ�Gdî.eïOtþÇ�Gî2ï²þŽ�$î7I|ïðî3tïÖðî2ïþ�$ Gî?æïHðî7ï!åðî/‚ïbXþ�GÇîºïa`þ@�$îHpïaƒðî#Öïb5þ€�$î*:|ï^…ðîºïaƒþ�$òî#Öïaƒþ�$òîHtïbXðîºïb5þ��$îºïcQþ�$î8¬pï]ðîºtïJ»ðîdï+ðîäï+ðîÇïóðîGfï?æðî,uïBðîsïDðîsï%:ðîºï&žðîtïHÉðî%ÈïZØðîºï-×ðîHï,ºðî:uïsðîdïPûþ¹�$îdïO»þ�$Çî«ïQÑþ¹�$î«ïPmþ¹�$îïR_þ��$îïQCþ�Ž�$îòtïP‘ðî%ÈïXXðî+Wï]çþ�$«î%:ïcàþ�$î*:|ï`0ðî)óïdÙþŽ�Gî%tïdðî%:ï_ðî3ïÖðî3ï+ðî¬ïFØðîÇuïQfðîÇïPJðî6tïKØþ�$äîVtïHÉðîVïDXðî"sïCíþ�$î"sïE˜þ�$î"sïHÉþ�Gî#Hï/¥þG�$î#Hï1PþG�$î#Hï2ûþG�$î(ï2%þ€�$î+ï4ìþ€�$î+Wï;tþ�$Hî+ï$þ�$òî-ï]ÃþŽ�$î2ï]çþ�$rî+WïO˜þ�Õ�$î&ï,ðî&ïðî&ïÖðî&ï+ðî;tï]ÃþÇ�$î9ÉïS|þ�$2î9Éï[Šþr�$îAï\§þÇ�$îCÉïZþ�$Çî;-ïVþG�Gî;-ïTtþ¹�Gî;-ïT¼ðî?|ïPèðîAuïäðî+WtïZØðîBuï€ðî)¬ï²þ�$Îî=tï Gðî?Wï GðîAï GðîCÉï GðîFï GðîH;ï GðîJtï GðîLï Gðî:åï Gðî8¬ï Gðî6tï Gðî4;ï Gðî2ï Gðî/Éï Gðî-ï Gðî+Wï Gðî&åï Gðî$¬ï Gðî"sï GðîÈï Gðîï Gðî :ï Gðîï GðîVï Gðîï Gðî9ï Gðîrï Gðî«ï Gðîäï Gðî �ï GðîÇï GðîŽï GðîUï Gð�������2ä��€M‚c¼ ¦������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Dorado Hardware ManualOverviewAugust 1, 19852OverviewExperience suggests that programmers will gradually develop a mental model something likeFigure 1; until this mental model is well established, it is probably desirable to:Read the following with Figure 1 in view.Dorado has Processor, Control, Memory, IFU, and I/O controller sections.I/O controllers are independent of each other and of the other sectionsyou will have tounderstand a particular I/O controller if you are going to write microcode that controls it.The memory and IFU are "slaves" to the processor/control section. In most situations, theirexternal interface is simple relative to internal details of operation, and effective programming isusually possible without detailed understanding.However, programmers will have to understand the processor thoroughly because the differentparts of the processor are controlled directly by instruction fields, and most of the processor willbe used, even in a small program.Programmers must also understand most of the control section, although fairly simple assemblylanguage contstructs are transformed into the complicated branch encodings needed by Dorado, sodetailed understanding of Dorado branching is not required.ControlDorado supports up to 16 independent tasks at the microcode level. Each task has its ownprogram counter (TPC), and other commonly-used registers are also replicated on a per-task basis.Tasks are scheduled automatically by the hardware in response to wakeup requests, where task 15(task 17 octal) is highest priority, task 0, lowest.Emulator microcode runs entirely in task 0 (lowest priority); fault conditions normally wakeup task15 (task 17 octal), the "fault task" (highest priority). Other tasks are normally paired with I/Odevices that issue wakeup requests when they need service. Task switching, discussed in "ControlSection", is in most cases invisible to the programmer, because commonly-used registers areduplicated for each task.In this manual, "instruction" refers to a microinstruction in the control store, as opposed to anopcode in the higher level language interpreted by a microprogram. The JCN field in aninstruction encodes a variety of jumps, calls, conditional jumps and calls, instruction dispatchesand returns for the current task.Registers, Memories, and Data PathsTables 1, 2, and 3 describe memories, registers, and data paths in Dorado; these are diagrammedin Figure 1. The first two tables below focus on a particular register or memory and tell how it isused and where it connects; the third table focuses on particular data paths and shows how theyconnect various parts of the machine.��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������î¶ïfªpô�€î%5qî5pô�îGïïfñ�î¶ïa×rî¶ï^epô�ÞðTô�ßî¶ï\›ô�ðSîïY)qô�Xð)î¶ïU·pô�ðHî¶ïREô�èð'ô�éð1î¶ïPzô�äô�åðAî¶ïMô�ÅðAô�Æî¶ïK>ô�¡ð%ô�¢ð?î¶ïIsô�ð0î¶ïFô�Áð[î¶ïD7ô�ðdî¶ïBlô�ð!î¶ï>úô�±ð]î¶ï=/ô�†ð$ô�‡ð;î¶ï;eô�ð;î¶ï6Ksî¶ï2Úpô�ÏðYî¶ï1ô�‰ðOô�Šî¶ï/Dô�ð\ô�î¶ï-zô�ð4î¶ï*ô�€ð#ô�ð@î¶ï(=ô�ªð$ô�«ð>î¶ï&sô�ð,ô�Žð5î¶ï$¨ô�Þô�ßðLî¶ï"Ýô�î¶ïkô�¯ðIô�°î¶ï¡ô�áô�âð=î¶ïÖô�·ð:ô�¸ð(î¶ïô�ð!î¶ïòsð#î¶ï€pô�–ð?ô�—î¶ï¶ô�†ðJô�‡î¶ï ëô�›ð6ô�œð)î¶ï ô�ð%ÿ������� `����¶ =ñ]ü��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Dorado Hardware ManualOverviewAugust 1, 19853Table 1: MemoriesMemoryCommentsIM(ContB board) IM is a 4096-word x 34-bit (+2 parity) RAM used to store instructions. When written, theaddress is taken from Link and data from B 16 bits at-a-time (1 extra bit and parity from RSTK field).When read, the address is taken from Link, and data is delivered to Link 9 bits at-a-time. The read orwrite is controlled by the JCN field and two or three low bits of RSTK.ALUFM(ProcL board page 11) ALUFM is a 16-word x 6-bit ALU control RAM addressed by the 4-bit ALUFfield. Five ALUFM bits specify 16 boolean or 5 arithmetic operations on A and B. One bit is the inputcarry for arithmetic operations (modifiable by several functions). ALUFM[ALUF] is read onto Pd by theALUFMEM function or both read onto Pd and loaded from B by the ALUFMRW_ function.RM(ProcL and ProcH pages 2-9) RM is a 256-word x 16-bit (+2 parity) RAM used for general storage by alltasks. The normal address is RBase[0:3],,RSTK[0:3]. Data can be read onto A or B and loaded from Pdor Md without using FF. Together with T, RM forms the input to the Shifter.STK(ProcL and ProcH pages 2-9) STK is a 256-word x 16-bit (+2 parity) stack accessible only to the emulator(Task#0), used instead of RM when the BLOCK bit in the microinstruction is = 1. Its address comesfrom StkP, modified by -4 to +3 under control of RSTK.IFUM(IFU pages 6 and 12) IFUM is a 1024-word x 24-bit (+3 parity) decoding memory containing 256 wordsfor each of four instruction sets. The instruction set can be set by the InsSetOrEvent_ function. The low8 address bits are normally an opcode fetched from the cache, but can be loaded from B by the BrkIns_function to read or write IFUM itself. The IFUMLH_ and IFUMRH_ functions load, and theB_IFUMLH' and B_IFUMRH' functions read different bits of IFUM. During normal operation IFUMcontrols decoding of the stream of opcodes and operands fetched from memory relative to BR 31, the codebase.MAIN(MemD and MSA boards) Main storage consists of a 64-row x 4-column x 16-word virtual cache coupledwith one to four 4096k x 16-bit memory modules (using 256k-bit storage chips). Each memory moduleconsists of 2 MSA boards. The IFU and processor independently access the cache, with IFU referencesdeferring to the processor. The processor has two dissimilar methods of reference, one primarily to theCacheD (with "misses" initiating main memory action) and one directly to main memory (invalidatingcache hits on writes, using dirty cache hits on reads). Virtual addresses are transformed to absolute usingthe Map memory. All references leave information in the Pipe (History) memory.BR(MemC board pages 1, and 7-10) A 32-word x 28-bit base register memory addressed by the MemBaseregister. The virtual address for any memory reference is BR[MemBase]+Mar. BR is loaded from Marby the BrLo_A and BrHi_A functions and can be read indirectly onto B via the virtual address left in thePipe after a memory reference (Pipe0 and Pipe1 functions).Pipe(MemC and MemX boards) The 16-entry x 6-word pipe (History) contains trace information left bymemory references. Each entry into the pipe conatins the virtual address, map information, single-errorand double-error information, cache control information, task and subtask that made the access. It isautomatically loaded during any memory reference and can be read onto Bmux by the B_Pipe0, B_Pipe1,B_Pipe2, B_Pipe3, B_Pipe4, B_Pipe5' functions.Map(MemX board pages 12-17) The Map is a 64k-word x 19-bit (+parity) memory used to transform virtualaddesses to absolute. Addressed by VA[8:23], map entries into the pipe contain 16 bits of real pageinformation, 1 bit each of write protect, dirty, and referenced bits. The 16 bits of map can be writtenfrom Bmux with Map_RM/STK and read from Pipe3 after main storage references.ÿ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������î¶ïfªpô�€î%5qî5pô�îGïïfñ�î$#ïbsô�Xî¸ï`vtîÇùxøÿúÿî¸ï]’uîÇô�†ùxøÿúÿðcô�‡îìï\ô�™ ô�šð\îìïZŠô�—ðJô�˜îìïYô�ðGî¸ïV!îÇô�¥ùxøÿúÿð@ô�¦îìïTô�‰ðgîìïSô�’ð.ô�“ð8îìïQ”ô�ôð>ô�õî¸ïN°îÇô�‡ùxøÿúÿð.ô�ˆð7îìïM,ô�Œô�ðSîìïK¨ô�ðLî¸ïHÃîÇô�†ùxøÿúÿðSô�‡îìïG?ô�™ð2ô�šð0îìïE»ô�ð6î¸ïBÖîÇô�‘ùxøÿúÿô�’ðIîìïARô�…ð#ô�†ðHîìï?Îô�ð=ô�Žð(îìï>Jô�ß ô�àðLîìï<Æô�œðFô�îìï;Aô�ô�‚ðSîìï9½î¸ï6ÙîÇô�”ùxøÿúÿð7ô�•ð+îìï5Uô� ðNô�¡îìï3Ðô�¨ðcîìï2Lô�¢ðaô�£îìï0Èô�ºô�»ðBîìï/Dô�ðZô�‘îìï-Àô�ðOî¸ï*ÛîÇô�œùxøÿúÿ ô�ðUîìï)Wô�™ð&ô�šð<îìï'Óô�ô�‚ðbîìï&Oô�ð:î¸ï#jîÇô�Ëùxøÿúÿð,ô�Ìð2îìï!æô�¥ð#ô�¦ðEîìï bô�¸ðfîìïÞô�‰ð@ô�Šð#îìïZô�ð.î¸ïuîÇô�ùxøÿúÿðcîìïñô�·ð-ô�¸ð7îìïmô�¢ð4ô�£ð4îìïéô�ðLÿ�����������¶û<ïTx��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Dorado Hardware ManualOverviewAugust 1, 19854Table 2: RegistersRegisterComments * = one of these for each task; i.e., "task specific"T*(ProcL and ProcH pages 2-9) 16-bit (+2 parity) T sources either A (ASEL field or FA field with memoryops) or B (BSEL field), or the Shifter (ASEL) and loads from either Pd or Md (LC field).RBase*(ProcL page 23) 4-bit RBase,,RSTK field forms addresses for RM. RBase can be loaded from FF[4:7] orfrom B[12:15] by the RBase_SC, RBase_B, or Pointers_B functions; it is read onto Pd[12:15] by thePd_Pointers function. RBase is loaded with 0 or 1 when the IFU dispatches to the first instruction for anopcode.StkP(ProcL page 25) The emulator uses STK instead of RM when the BLOCK bit is 1. 8-bit StkP holds theaddress for STK. The RSTK field is interpreted as an adjustment to StkP, which can be modified -4 to+3 in conjunction with testing for overflow and underflow. StkP can be loaded by the StkP_B functionand read onto Pd[8:15] by the _TIOA&StkP function (Stack overflow and underflow indicators are readinto Pd[8:9] by the Pd_Pointers function.).Q(ProcL and ProcH page 17) 16-bit Q is used as a shift register by multiply and divide. Q can be readonto A (FF field or FA with Fetch_ or Store_) or B (BSEL field) and loaded from any B source excepta constant (BSEL and FF fields). Functions implement Q lsh 1 and Q rsh 1.Cnt(ProcL and ProcH page 17) Cnt is a 16-bit counter that can be both decremented and tested for zero by abranch condition. Cnt can be loaded from FF[4:7] with 1 to 16 or from B (FF field) and can be readonto Pd (FF).TIOA*(ProcH page 23) TIOA is an 8-bit io address register (see "Slow IO") loaded by the TIOA_B function andread onto Pd[0:7] with the Pd_TIOA&StkP function. TIOA[5:7] may also be loaded from FF[5:7].ShC(ProcL page 18) 16-bit ShC controls the shifter-masker (see "Shifter"). RF_A, WF_A, and ShC_Bfunctions load ShC in various ways. ShC can be read onto Pd by the Pd_ShC function.MemBase*(ProcH page 25) MemBase is a 5-bit register selecting 1 of 32 different BR's (Base Register) for memoryreferences. The MemBase_n functions load it from FF[3:7]; the MemBaseX_n functions load it from0,,MemBX[0:1],,FF[6:7]. MemBase is read onto Pd[3:7] by the Pd_Pointers function and loaded fromB[3:7] by the Pointers_B and MemBase_B functions.MemBX(ProcH page 24) MemBX is a 2-bit register used like a stack pointer in conjunction with MemBase. Theideas behind this are discussed in "Memory Section".Link*(ContA pages 6-19) The 16-bit Link register holds subroutine return addresses, address-modification fordispatches, IM address for IM reads/writes, and data for TPC reads/writes. It can be read onto or loadedfrom B[0:15] by the B_Link or Link_B, BigBDispatch_B, or BDispatch_B functions, or from CIA+1 byCALLs and RETURNs.PC(IFU pages 8 and 9) The 16-bit PC (Program Counter) contains the byte address of the next opcoderelative to BR 31, the code base. This is the Program counter that Mesa, Cedar, Smalltalk, Lisp, and Altoemulators use. The IFU maintains this register, so only conditional jumps that don't jump and opcodes oftype "pause" have to load it with the PCF_B function. The B_PCX' function reads PC.TPC*(ContA pages 6-19) TPC contains the address of the next microinstruction for each task. It is addressedfrom B[12:15] and read/write control is in JCN. Data is read from/written into Link under control of theJCN field of the instruction.Mcr(MemC page 5) Memory control register disables parts of memory system for initialization and checkout.It can be used to turn off or on singlebit error reporting, force a dirty miss, or stop task wake-ups.ÿ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������î¶ïfªpô�€î%5qî5pô�îGïïfñ�î$¸ïbsô�Xî¸ï^¬tîÇô�ùxøÿúÿ uð5î¸ï[Çù�ø�ú�îÇô�Šùxøÿúÿù�ø�ú�ô�‹ð5îìïZCô�þô�ÿðIî¸ïW^îÇô�ùxøÿúÿô�‘ù�ø�ú��ùxøÿúÿð*ù�ø�ú��ùxøÿúÿð!îìïUÚô�·ð5ô�¸ð,îìïTVô�„ð+ô�…ð?îìïRÒî¸ïOíîÇô�ùxøÿúÿ ô�ðWîìïNiô�“ô�”ðTîìïLåô�‘ðeîìïKaô�¡ð1ô�¢ð2îìïIÝô�ð+î¸ïFøù�ø�ú��îÇô�ùxøÿúÿð"ô�žðCîìïEtô�Œð%ô�ð>îìïCðô�ðJî¸ïAîÇô�†ùxøÿúÿð:ô�‡ð-îìï?‡ô�šð;ô�›ð(îìï>ô�î¸ï;îÇô�„ùxøÿúÿð?ô�…ð'îìï9šô�Îð'ô�Ïð6î¸ï6µîÇô�Çùxøÿúÿô�ÈðDîìï51ô�ðTî¸ï2Lù�ø�ú�ùxøÿúÿ�îìï0Èô�–ù�ø�ú�ùxøÿúÿô�—ð2îìï/Dô�±ðIô�²îìï-Àô�¬ð]ô�îìï,<ô�ð1î¸ï)WîÇô�“ù�ø�ú�ùxøÿúÿðBô�”îìï'Óô�ð4î¸ï$îîÇô�¶ùxøÿúÿô�·ðQîìï#jô�‡ðUô�ˆîìï!æô�“ð`îìï bô�î¸ï}îÇô�¬ùxøÿúÿð=ô�ð$îìïùô�… ô�†ð\îìïuô�Žð2ô�ð6îìïñô�ðTî¸ïîÇô�›ùxøÿúÿð+ô�œð=îìïˆô�‡ðbô�ˆîìïô�î¸ï îÇô�žùxøÿúÿô�ŸðRîìï›ô�¸ô�¹ðU�������<����¶=ï[^¬������������������������������������������������������������������������������������������������������������������������������������������������������������������������Dorado Hardware ManualOverviewAugust 1, 19855Table 3: Data PathsPathCommentsA(ProcL and ProcH pages 2-9) The 16-bit high-true A bus (called "alua" in hardware drawings) may bedriven from T, RM, STK, Q, Id, Md, a small constant between 0 and 178, or the shifter. It is alsopossible to 'or' the low-true shifter output with one of the other A sources. The A bus is totally insidethe processor section, not connected to any other sections of Dorado, and it is one of the two Alu inputs.The RF_A and WF_A functions, which load ShC for subsequent shift operations, receive data from A.Mar(ProcL and ProcH pages 2-9, and IFU pages 8 and 9) The 16-bit Memory Address register transmits thedisplacement for a memory reference from the processor or IFU section to the memory section. Thecontents of Mar and the selected Base register (BR) are added together to get the Virtual address. Alsothe CFlags register, some bits of the Mcr register, and the BR memory in the memory section are alsoloaded from Mar. The processor drives Mar only when it is starting a reference or executing one of theFF functions between 1208 and 1278.B(ProcL and ProcH pages 2-9) The 16-bit B bus consists of one data path inside the processor section (called"alub" in hardware drawings) and another on the backplane (called "Bmux" in hardware drawings); theIOB bus is driven from Alub on Output operations, when it also is an extension of B. Alub and Bmuxmay be directly driven high-true from registers inside the processor; alternatively, Bmux may be drivenlow-true from other sections, in which case the processor receives the data onto alub through inverters (sothe data appears high-true on alub). The BSEL field in an instruction can specify that either T, RM/STK,Q, or Md sources B; other sources and destinations loaded from B are specified in the FF field; BSELand FF are used in combination to specify that a literal 8-bit constant (in either the left or right byte ofthe word with 0's or 1's in the other byte) sources B. The processor computes odd byte parity on alub;Bmux and IOB destinations may store or check the parity computed by the processor. Pd(ProcL and ProcH pages 2-9) The Pd path ("Processor data") is 16 bits wide that receives data from an 8-input multiplexor whose inputs are the Alu output, possibly shifted left or right one bit on Alu shiftfunctions or masked on a shifter operation, io device input data, and the infrequently read registers in theprocessor section. Pd may be written into the T register or the RM or STK memories.Id(IFU page 5) The Id path ("IFU data") is 8 bits+sign extended and used to send arguments from theIFU to the processor for interpretation. It can be routed onto A using ASEL (A_Id, Fetch_Id, Store_Id,or IFetch_RM/STK); alternatively, the TIsId or RIsId functions can be used to replace data from T orfrom RM/STK by IFU datathese functions provide a roundabout method of getting Id onto B.Md(MemD pages 7-15) The Md path ("Memory data") is a 16 bit + 2 bits of parity path and moves datafrom the cache in the memory section into the processor. The processor latches Md and can route it ontoA or B, load it into T and RM/STK, or use it in a shift-and-mask operation.TIOA(ProcH page 23) The TIOA bus ("Input-output address") is driven from the 8 bit TIOA register; itspecifies the io device affected by a Pd_Input or Output_B function.IOB(ProcL and ProcH pages 2-9) The IOB bus ("Input-output bus") is driven from the 16 bit alub on anOutput_B function or received on Pd by a Pd_Input function; it transmits data to or from an io device.Fout(MemD pages 7-15) "Fast output bus" is a 16 bit wide path with no parity and transmits data from theCacheD to a fast output device. The DispY and DispM are the only boards that use the Fast output. 16words (Munch) of data are transferred on each output.Fin(MemD pages 7-15) "Fast input bus" is a 16 bit wide path with no parity and transmits data from a fastinput device to the CacheD. Presently, there are no fast input devices except for the FIO test board thatis used only for debugging.Sout(MemD pages 7-15) "Storage output bus" is a 16 bit wide bus that transmits data from the CacheD toMSA storage modules.Sin(MSA pages 4-11) "Storage input bus" is a 16 bit wide bus that transmits data from the MSA storage modules tothe CacheD.ÿ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������î¶ïfªpô�€ù�ø�ú�î%5qî5pô�îGïïfñ�î#Ëïbsô�Xî¸ï`vtîÇùxøÿúÿî¸ï]’u�îÇô�«ùxøÿúÿù�ø�ú��ùxøÿúÿðCô�¬îìï\ô� ô�®ð9ï[�ï\îìïZfô�˜ô�™ðMîìïXâô�Œô�ðPîìïW^ô�Ÿð/ô� ð2î¸ïTyîÇô�™ùxøÿúÿð2ù�ø�ú��ùxøÿúÿð,ô�šîìïRõô�³ð]ô�´îìïQqô�™ðcô�šîìïOíô�¢ð;ô�£ð)îìïNiô�“ð`ô�”îìïLåô�ïLX�ïLåïLX�ïLå�î¸ïJ��îÇô�€ùxøÿúÿù�ø�ú��ùxøÿúÿð?ô�îìïH|ô�¤ðHô�¥îìïFøô�•ðUô�– îìïEtô�«ðEô�¬ð"îìïCðô�Žô�ðKîìïBlô�ð.ô�‚ð;îìï@èô�ŸðNô� îìï?dô�’ô�“ð]îìï=àô�”ðNô�•îìï<\ô�ðSî¸ï9wîÇô�‰ùxøÿúÿô�Šù�ø�ú��ùxøÿúÿ î(¸ï9 ù�ø�ú�þ�§�ï9w�ùxøÿúÿî-¶ï9 ù�ø�ú�þ�Ÿ�ï9w�ùxøÿúÿð3îìï7óô�´ô�µðOîìï6oô�‹ô�ŒðVîìï4ëô�ðTî¸ï2îÇô�£ùxøÿúÿô�¤î!ï1¯ù�ø�ú�þ�i�ï2�ùxøÿúÿî#¼ï1¯ù�ø�ú�þ�Ÿ�ï2�ùxøÿúÿðAîìï0‚ô�ˆô�‰ðaîìï.þô� ðdîìï-zô�Üô�ÝðGî¸ï*•îÇô�™ùxøÿúÿô�šî$Âï*>ù�ø�ú�þ�ï*•�ùxøÿúÿî)jï*>ù�ø�ú�þ�Ÿ�ï*•�ùxøÿúÿð8îìï)ô�†ð`ô�‡îìï'ô�ðKî¸ï$¨îÇô�Åùxøÿúÿî$½ï$Qù�ø�ú�þ�i�ï$¨�ùxøÿúÿî'»ï$Qù�ø�ú�þ�•�ï$¨�ùxøÿúÿî+¢ï$Qù�ø�ú�þ�„�ï$¨�ùxøÿúÿð0ô�Æîìï#$ô�ðDî¸ï ?îÇô�ªùxøÿúÿù�ø�ú��ùxøÿúÿ î*�ïèù�ø�ú�þ�i�ï ?�ùxøÿúÿî,þïèù�ø�ú�þ�•�ï ?�ùxøÿúÿî0Êïèù�ø�ú�þ�Ÿ�ï ?�ùxøÿúÿô�« îìï»ô�’ðXô�“ î¸ïÖîÇô�™ùxøÿúÿîîïù�ø�ú�þ�¹�ïÖ�ùxøÿúÿî…ïù�ø�ú�þŒ�ïÖùxøÿúÿô�šðFîìïRô�Œð8ô�ð-îìïÎô�ð5î¸ïéîÇô�‘ùxøÿúÿîÖï’ù�ø�ú�þ�¹�ïé�ùxøÿúÿîeï’ù�ø�ú�þ�í�ïéùxøÿúÿð-ô�’îìïeô�ð_ô�Ž îìïáô�î¸ïüîÇô�£ùxøÿúÿîï¥ù�ø�ú�þ�Ÿ�ïü�ùxøÿúÿî!9ï¥ù�ø�ú�þŒ�ïüùxøÿúÿô�¤ðAîìïxô�î¶ïôî1ô�‡ùxøÿúÿî=ïù�ø�ú�þ�Ÿ�ïô�ùxøÿúÿîNïù�ø�ú�þ�í�ïôùxøÿúÿô�ˆðIî¶ïMô� ÿ�������Þ����¶<ñ]÷������������������Dorado Hardware ManualOverviewAugust 1, 19856TimingThe terminology used in discussing timing is as follows:clockThe 32 ns (nominal) atomic time period of the machine. Clock period can becontrolled by the baseboard microcomputer or through the manifold system asdiscussed in the "Dorado Debugging Interface" document.1cycleThe duration of instructionstwo clocks or 64 ns except for instructions thatread/write IM or TPC.t0The instant at which MIR (MicroInstruction Register) is loadedthe beginning of acycle.t1The next instant after t0always one clock later.t2The instant following t1one clock after t1 except for instructions that read/write IMor TPC. Additional clocks intervening for these special cases, which only affect thecontrol section, are denoted by t1a, t1b, etc.t3, t4Subsequent instants for a instruction. t3 of the previous instruction coincides with t1of the current instruction; t4 with t2.First half cycleThe interval from t0 to t1 (or t2 to t3).Second half cycleThe interval from t1 to t2 (or t3 to t4).As implied by this terminology, Dorado initiates a new instruction every cycle. Instructions arepipelined, requiring a total of three cycles for execution. Timing for a typical instruction is shownin Figure 7. At t-2, the next instruction address is determined and instruction fetch from IMbegins; at t0, the instruction is loaded into MIR from IM. During the first half cycle, the selectedregister is read from RM or STK, and at t1 is loaded into a register. During the next two clocks(t1-t3), addition is performed in the ALU; at t3 the result is loaded into a register for writing intoRM/STK or T. During the final clock, RM is written.Since a new instruction begins before the previous one finishes, paths exist to bypass the registerbeing written if the following instruction specifies it as a source (These paths, inaccessible to theprogrammer, are not shown in Figure 1).Most registers load from B at t3 (i.e., at the mid-clock of the cycle following the load instruction).These may source B in the instruction after they are loaded. The load information and data arepipelined into the next cycle, as described above. Registers loaded at t2 may be used during thefirst half-cycle of the following instruction. Usually, this type of register is used for some type ofcontrol information, since control registers are normally clocked at t0 (= t2 of previousinstruction), data-oriented registers at t1 (t3 of previous instruction).Table 4 summarizes the time at which loading takes place and some other information.ÿ����î¶ïfªpô�€ù�ø�ú�î%5qî5pô�îGïïfñ�î¶ïbsî¶ï^‰pð8îgï[îKô�Ýð6ô�ÞîKïYLô�ûð,ô�üîKïWô�ð7ïXu�îgïU·pîKôð'ô ð&îKïSìô�îgïR"�ïQ•u�îKïR"pô�¢ô�£î$¯ïQËþU�ïR"�î(@ïQËþ�„�ïR"� î/UïQËþ�ïR"�ð%îKïPWîgïNŒ�ïMÿu�îKïNŒpô�ïMÿu�ïNŒpîgïLÂ�ïL5u�îKïLÂpô�ùxøÿúÿïL5u�ïLÂpù�ø�ú��ùxøÿúÿïL5u�ïLÂpô�Ž îKïJ÷ô�£ô�¤ðNîKïI-ô�ð!ïH u�p�ïI-ïH u�p�ïI-îgïG?�ïF²u�ïG?pô�€ïF²u�îKïG?pùxøÿúÿ ô�–ô�—ïF²u�ïG?pð-ïF²u�îKïEtpô�ïDçu�ïEtpïDçu�ïEtp�îgïC©ô�€î‹ïAßô�ùxøÿúÿïARu�ïAßpïARu�ïAßpïARu�ïAßpïARu�ïAßpîgï@ô�€î‹ï>Jô�ùxøÿúÿï=½u�ï>Jpï=½u�ï>Jpï=½u�ï>Jpï=½u�ï>Jpî¶ï:ûô�§ù�ø�ú�ð6ô�¨ð+î¶ï90ô�†ðQô�‡î¶ï7fô�¼ô�½ï6Ùuï7fpðJî¶ï5›ô�‡ï5u�ï5›pô�ˆðSî¶ï3Ðô�‘ô�’ï3Cu�ï3Ðpð7î¶ï2ï1yu�ï2pï1yu�ï2pô�ð)ï1yu�ï2pð6î¶ï0;ô�ð4î¶ï,Éô�˜ð)ô�™ð:î¶ï*ÿô�žð:ô�Ÿð+î¶ï)4ô�ð'î¶ï%Âô�ï%5u�ï%Âpô�Žð.î¶ï#øô�šô�›ðJî¶ï"-ô�—ð+ô�˜ï! u�ï"-pî¶ï bô�ð!ô�ðFî¶ï˜ôðFïu�ï˜pïu�ï˜pî¶ïÍô�ð*ï@u�ïÍpï@u�ïÍpî¶ï~ðTÿ������� ü����¶m>ñPžè������������������������������������������������Dorado Hardware ManualOverviewAugust 1, 19857Table 4: Load TimingRegister/ TaskLoad Data LoadCommentMemorySpecificTimeSourceControlMIR*not0IMJCNHolds current instructionCIAnot0TNIA,BNPCJCNHolds current instruction addressCIAinc*not1CIATPCI*not2TNIA, CIATPCyesFHCTPCIHOLDt2LINK(??)JCN,BReading/writing takes 3 cyclesLinkyest2BFFAlso loaded by CALL, RETURN, anddispatchesreadout valid t1 to t3IMnoBJCNReading/writing require 3 cyclesCTASKnot0NextSwitchCurrent taskCTDnot1CTASKCurrent task delayedReadynot0PEncSwitchTask-ready flipflopsStkPnot2BFFNew value read if it changes in thesame instructionRBaseyest2F2F1RAM writte at t3, bypassedCntnot2F2F1Br cond to sub 1 and testBFFALUFMnot2BFFAddressed by ALUFThe output is valid t1 to t3TIOAyest2BFFReadout valid till t3MemBXnot2F2F1Readout valid till t3MemBaseyest2F2F1Readout valid till t3MemBase xor 1FFShCnot3A,BFFRF_A, WF_A, ShC_Bt1FFASEL,BSELQnot3BFF,BSELt3ALU[15],,Q[0:14]FFMultiplyt3Q[1:15],,ALUcryFFDividet3QFFQ rsh 1, Q lsh 1RMnoSHCPd,MdLC,RSTKBypassedSTKnoSHCPd,MdLC,RSTKBypassedTyesSHCPd,MdLC,FFBypassedIFUMnoSHCBFFIFUMLH_/IFUMRH_BrkInsnot2BFFPC*not3BFFLevel F PC loaded, level X readBrnot2AFFBrLo_/BrHi_, _Pipe0, _Pipe1MapBuf*noFHCBASEL, FAWritten on Map_, TestSyndrome_,ProcSRN_, LoadMcrDBufnoFHCBASEL, FAWritten on Store_Mdyest5cacheBypassedCFlagsnot2MarFFFor debugging, initializationMcrnot3Mar, MapBufFFFor debugging, initializationAsrnnot2AsrnAddresses the pipe for ring refsProcSRNnot3MapBufFFAddresses the pipe for Pipe0 to Pipe5TestSyndromenot3MapBufFFFor debugging error correctionPipe0not3Br, etc.ASEL, FAWritten on ref., B_Pipe0Pipe1not3Br, etc.ASEL, FAWritten on ref., B_Pipe1Pipe2not3ASEL, FAWritten on ref., B_Pipe2Pipe3not14mapASEL, FAValid after any storage access or Map_Pipe4not14,t48map, ECASEL, FAValid after any storage accessPipe5not3,t4cacheASEL, FAWritten on ref., B_Pipe5*Cannot be read as data by the processor��������������������������������������������������������������������������������������������������������������������������������������������������î¶ïfªpô�€î%5qî5pô�îGïïfñ�î#Rïbsô�Xî¶ï^Ïtîxô�€îîñî'Gî1î¶ï]nùxøÿúÿîxùxøÿúÿîùøZúÿîñùPøÿúÿî'Gù<øÿúÿî¶ïZuùîØùxøÿúÿîÎùøZúÿî¡ùPøÿúÿî'÷ù<øÿúÿî1œô�ùÈøÿúÿî¶ïYLùîØùxøÿúÿîÎùøZúÿî¡ùPøÿúÿî'÷ù<øÿúÿî1œùÈøÿúÿð!î¶ïWëùîØùxøÿúÿîÎùøZúÿî¡ùPøÿúÿî'÷ù<øÿúÿ�î¶ïVŠù<øÿúÿù�îØùxøÿúÿîÎùøZúÿî¡ô�€ùPøÿúÿî'÷ù<øÿúÿ�î¶ïU*ùøÿúÿîØùxøÿúÿîÎùøZúÿî¡ùPøÿúÿî'÷ùÈøÿúÿîÎïSÉùøZúÿî¡ùPøÿúÿî'÷ù<øÿúÿî1œô�ùÈøÿúÿî¶ïRhîØùøZúÿîÎùPøÿúÿî¡ù<øÿúÿ�î'÷ù�ø�ú�î1œùÈøÿúÿ�ùî1œïQùÈøÿúÿ ù<�ùÈî¶ïO§îØùxøÿúÿîÎù<øÿúÿ�î¡ùPøÿúÿ�î'÷ù<øÿúÿî1œùÈøÿúÿî¶ïNFîØùxøÿúÿîÎùøZúÿî¡ùPøÿúÿî'÷ù<øÿúÿî1œùÈøÿúÿî¶ïLåîØùxøÿúÿîÎùøZúÿî¡ùPøÿúÿî'÷ù<øÿúÿ�î1œùÈøÿúÿî¶ïK„îØùxøÿúÿîÎùøZúÿî¡ùPøÿúÿî'÷ù<øÿúÿî1œùÈøÿúÿî¶ïJ#îØùøZúÿîÎùPøÿúÿî¡ù<øÿúÿ�î'÷ù�ø�ú�î1œùÈøÿúÿð#î1œïHÃùÈøÿúÿî¶ïGbîØùøZúÿîÎùPøÿúÿî¡ùÈøÿúÿî'÷ùÈøÿúÿî1œùÈøÿúÿî¶ïFùîØùøZúÿîÎùPøÿúÿî¡ùÈøÿúÿî'÷ùÈøÿúÿî1œùÈøÿúÿî¡ïD ù<øÿúÿ�î'÷ù�ø�ú�î¶ïC@ùøÿúÿîØùxøÿúÿîÎùøZúÿî¡ùPøÿúÿ�î'÷ù�ø�ú�î1œùÈøÿúÿî1œïAßùÈøÿúÿî¶ï@~îØùøZúÿîÎùPøÿúÿî¡ù<øÿúÿ�î'÷ù�ø�ú�î1œùÈøÿúÿî¶ï?ù�ø�ú�îØùøZúÿîÎùPøÿúÿî¡ùÈøÿúÿî'÷ùÈøÿúÿî1œùÈøÿúÿî¶ï=¼ù�ø�ú�îØùøZúÿîÎùPøÿúÿî¡ùÈøÿúÿî'÷ùÈøÿúÿî1œùÈøÿúÿî¡ï<\ù�ø�ú�ô�€ùÈøÿúÿî'÷ù�ø�ú�î¶ï:ûùøÿúÿîØùøZúÿîÎùPøÿúÿî¡ù<øÿúÿî'÷ù�ø�ú�î1œô�ùÈøÿúÿîÎï9šùPøÿúÿî¡ù<øÿúÿî'÷ù�ø�ú�î¶ï89ùÈøÿúÿ�îØùøZúÿîÎùPøÿúÿî¡ù<øÿúÿ�î'÷ù�ø�ú�îÎï6ÙùøZúÿî¡ùPøÿúÿî'÷ù<øÿúÿî1œù<øÿúÿîÎï5xùøZúÿî¡ùPøÿúÿî'÷ù<øÿúÿî1œùÈøÿúÿîÎï4ùøZúÿî¡ùPøÿúÿ�î'÷ù<øÿúÿî1œùÈøÿúÿî¶ï2¶ù�ùøZ�îØùøZúÿîÎùPøÿúÿî¡ù<øÿúÿî'÷ùÈøÿúÿî1œùÈøÿúÿî¶ï1UùîØùøZúÿîÎùPøÿúÿî¡ù<øÿúÿî'÷ùÈøÿúÿî1œùÈøÿúÿî¶ï/õùx�îØùøZúÿîÎùPøÿúÿî¡ù<øÿúÿî'÷ùÈøÿúÿî1œùÈøÿúÿî¶ï.”ù<îØùxøÿúÿîÎùPøÿúÿî¡ùPøÿúÿ�î'÷ù<øÿúÿî1œùÈøÿúÿî¶ï-3ù<îØùxøÿúÿîÎùøZúÿî¡ùPøÿúÿ�î'÷ù<øÿúÿî¶ï+ÒùøÿúÿùÈ�îØùøZúÿîÎùPøÿúÿî¡ù<øÿúÿ�î'÷ù�ø�ú�î1œùÈøÿúÿî¶ï*rîØùxøÿúÿîÎùøZúÿî¡ù<øÿúÿ�î'÷ù<øÿúÿî1œùÈøÿúÿî¶ï)ùxîØùøZúÿîÎùPøÿúÿî¡ù<øÿúÿ�î'÷ô�€ùÈøÿúÿî1œùÈøÿúÿô�î1œï'°ùÈøÿúÿî¶ï&OùxîØùøZúÿîÎùPøÿúÿî¡ù<øÿúÿ�î'÷ô�€ùÈøÿúÿî1œùÈøÿúÿô� î¶ï$îùxîØùøZúÿîÎùPøÿúÿî¡ù<øÿúÿî'÷ù<øÿúÿ�î1œùÈøÿúÿî¶ï#ŽùîØùxøÿúÿîÎùøZúÿî¡ùPøÿúÿî'÷ù<øÿúÿî1œùÈøÿúÿî¶ï"-îØùxøÿúÿîÎùøZúÿî¡ô�€ùPøÿúÿ î'÷ù<øÿúÿî1œùÈøÿúÿô�î¶ï ÌîØùxøÿúÿîÎùøZúÿî¡ùPøÿúÿî'÷ù<øÿúÿ�î1œùÈøÿúÿî¶ïkîØùxøÿúÿîÎùøZúÿî¡ùPøÿúÿî'÷ù<øÿúÿî1œùÈøÿúÿð%î¶ïîØùxøÿúÿîÎùøZúÿî¡ùPøÿúÿî'÷ù<øÿúÿî1œùÈøÿúÿî¶ïªùxîØùøZúÿîÎùPøÿúÿî¡ô�€ù<øÿúÿî'÷ùÈøÿúÿî1œùÈøÿúÿô�î¶ïIùxîØùøZúÿîÎùPøÿúÿî¡ô�€ù<øÿúÿî'÷ùÈøÿúÿî1œùÈøÿúÿô�î¶ïèùxîØùøZúÿîÎùPøÿúÿî¡ù<øÿúÿ�î'÷ô�€ùÈøÿúÿî1œùÈøÿúÿô�î¶ï‡ùxîØùøZúÿîÎùPøÿúÿî¡ù<øÿúÿî'÷ô�€ùÈøÿúÿî1œùÈøÿúÿô�êô�ëî¶ï'ùxîØùøZúÿîÎùPøÿúÿî¡ô�€ù<øÿúÿî'÷ùÈøÿúÿî1œùÈøÿúÿô�î¶ïÆùxîØùøZúÿîÎùPøÿúÿî¡ù<øÿúÿî'÷ô�€ùÈøÿúÿî1œùÈøÿúÿô�î¶ïð(ÿ�������n����¶;ñVЦ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Dorado Hardware ManualOverviewAugust 1, 19858Instruction FieldsThe 36-bit instruction is divided into the following fields:Table 5: Instruction FieldsFieldSizePurpose (may have other effects, described below)RSTK4 bitsSelects RM register to be read and/or writtenALUF4 bitsSelects ALU function or shifter operationBSEL3 bitsSelects source for BmuxLC3 bitsControls source and loading of RM and TASEL3 bitsSource/destination control for AmuxBLOCK1 bitBlocks from a higher task to the next highest piroritytask. Selects stack operations for task 0.FF8 bitsFunction FieldJCN8 bitsJump controlP0 and P12 bitsParity Total34 bits + 2 parity bitsThe above instruction layout emphasizes compactness at the expense of programming flexibility.The following comments explain some of these tradeoffs1.The RSTK field specifies only four of the eight address bits needed for addressing RM. Theother four are taken from the RBase register (loaded by a function). In the emulator task,BLOCK causes STK to be used instead of RM, and RSTK is decoded to cause modifications ofStkP.2. ALUF addresses the 16-word ALUFM memory in which 16 of 26-odd useful ALU operationsare stored. For the shift operation decode of ASEL, the first three bits of ALUF select the kindof shift, while the ALUFM address is forced to 168 or 178.3. BSEL decodes the most common data sources for B. Less common B sources are selected byFF, and then BSEL encodes one of several destinations for the source.4. ASEL specifies the source and destination for A. The default source is the RM addressselected by RSTK. Four ASEL decodes specify the most common memory operations, where thevirtual address is BR[MemBase]+A. These decodes consume the two leading bits of FF to specifyalternate sources (T or Id) or less frequent memory operations. The remaining four ASELdecodes select alternate sources T, Id, or the shifter, where the shifter decodes work incombination with ALUF, as discussed later.������������������������������������������������������������������������������������������î¶ïfªpô�€î%5qî5pô�îGïïfñ�î¶ïbsî¶ï^¬pð<î!îï[:sô�XîïWÈtî~î bô�ð1îïTuî~ô�€î bô�ð&îïQ”î~ô�€î bô�ð"îïNŒî~ô�€î bô�îïK„î~ô�€î bô�îïH|î~ô�€î bô�îïEQî~ô�€î bô�ð0î bïCÍð+îïBIî~ô�€î bô�îï?Aî~ô�€î bô�îï<8ô�€î~î bô��îï8êî~î¶ï5xpô�ªðEô�«î¶ï3ô�ð6î¶ï0;î1ô�ðRô�î¶ï.qô�Òð4ô�Óð'î¶ï,¦ô�›ðUô�œî¶ï*Ûî¶ï'iô�ðHô�î¶ï%Ÿô�•ðLô�–î¶ï#Ôô�ð1ï#Gu�ï#Ôpï#Gu�ï#Ôp�î¶ï †ô�’ô�“ðKî¶ï»ô�ðEî¶ïIô�Çð4ô�Èð&î¶ï~ô�ð0ô�Žð)î¶ï´ô�€ð<ô�ð"î¶ïéô�ÜðNô�Ý î¶ïôðIôî¶ïTô�ð*ÿ�������¦����¶ =ñUþ%������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Dorado Hardware ManualOverviewAugust 1, 198595. LC (Load Control) specifies loading of RM/STK and T from Pd and Md.6. FF is an 8 bit function field that is used in 3 sub fields: FA=FF bits 0 and 1, FB=FF bits 2,3, and 4, FC=FF bits 5, 6, and 7. It is the catch-all field in which operations or data can beencoded. There are five ways FF is used:a.To extend the branch address encoded in JCN (long goto, long call).b.To form a constant on B as selected by BSEL.c.To specify one of 64 common functions and branch conditions while the two leading bits modify the memoryreference operation specified in ASEL.d.To specify one of 256 functions and branch conditions, some of which use low bits of FF as literal values.e.As a shift control value when ASEL decodes to "shift" and BSEL to a constant.When FF is used as a function, it sometimes modifies the interpretation of other fields in theinstruction. For example:a.16 FF decodes modify RM write address bits which would otherwise have come from RSTK or StkP.b.16 FF decodes modify RM write-address bits which would otherwise come from RBase.c.16 FF decodes select less common B sources, causing BSEL to be a destination rather than a source for B.7. JCN (in conjunction with current address) encodes the next instruction address as follows:a.One of 64 global Calls.b.One of 60 local Gotos.c.One of 4 local Calls.d.One of 14 local conditional branches with 7 branch conditions.e.One of 16 long Gotos/Calls (use FF field for rest of address).f.One of 4 IFU jumps for next opcode (high 10 address bits from IFU).g.Return.h.TPC read/write.i.IM read/write (Use low bits of RSTK also).8.P0 and P1 are odd parity on the left and right halves of IM. When wrong, these give rise toerror signals which stop the machine after (unfortunately) the instruction with bad parity has beenexecuted. Deliberately loading both parity bits incorrectly is used to implement breakpoints.NotationThe notation used in referring to fields in the instruction is that the left-most bit of the field isdenoted as 0. Hence, the fields in the instruction are as follows: RSTK[0:3], ALUF[0:3],BSEL[0:2], LC[0:2], ASEL[0:2], BLOCK[0], FF[0:7], JCN[0:7].The BLOCK bit is also called StackSelect, for its use in choosing STK instead of RM for theemulator task. (task#0)����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������î¶ïfªpô�€î%5qî5pô�îGïïfñ�î¶ïbðGî¶ï^¬ô�‡ô�ˆð[î¶ï\áô�©ô�ªðKî¶ï[ô�ð*îxïXUuî¬ðCîxïVôî¬ð,îxïU”î¬ô�‚ðaô�ƒîxïT3ô�ð&îxïRÒî¬ô�– ô�—ð\îxïQqî¬ô�ðMî¶ïN#pô�¶ðJô�·î¶ïLXô�îxïI–uî¬ô�Áð*ô�Âð3îxïH6î¬ô�ðQîxïFÕî¬ô�•ðhî¶ïC†pô�¼ð5ô�½ð)îxï@Åuî¬ô�îxï?dî¬îxï>î¬îxï<¢î¬ð>îxï;Aî¬ð>îxï9áî¬ðCîxï8€î¬îxï7î¬îxï5¾î¬ð*î¶ï2ppî1ô�ðBô�î¶ï0¥ô�ˆô�‰ðKî¶ï.Úô�ÒðQô�Óî¶ï)Ásî¶ï&Opô�¤ð>ô�¥ð'î¶ï$…ô�àð7ô�áð#î¶ï"ºô�ð;î¶ïHô�´ðAô�µî¶ï}ô��������ô����¶6<ñJÕ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������R oddJCNFFBLOCKASELLCBSELALUFRSTKALU carryALU[15]{BSEL, FF}Md *Md *Md *QTFF[4:7]FF[4:7]>>TRSHIFTER161616>>{LC}16ALUFM>>{xxx} Source of ControlTask-Specific**{LC}{BSEL}ControlBAALUAddress LogicFF[4:7]0,,FFFF,,0FF,-1-1,,FF{ASEL}{ALUF}Q16R'T'Programmer's View>>>>ALU=0ALU<0SubTaskALU rsh 1ALU lsh 1To devices16R < 0>IOBALUFMShCTIOA, StkPAMuxAMuxBMuxFFRF_WF_ShC_SubTaskShiftControlsRMSTKRSTK[0:3]{FF}RSTK[1:3]StkpSaved StkpRQFF[4:7]Md*T{FF}>>>>>>>>>>>>>>>>>>>ShC16168B+RBaseCnt>>>>>>>>B>Stkp>>>>>>>>>>T*MemBase*TIOA*CntOverflowCnt=0&-1oPipe0Pipe1Pipe2'Pipe3'Pipe4'ConfigDBufooFaultInfo'gh>hgLinkRWCPRegoMemCMemDIFUControlBMuxghoPointers16IOBIOAB>>>>>>>>>>ALUBrLo_BrHi_CFlags_ghMarMuxLoadMcrAB>Mar+>>>>>>>>>>>>>>>>>>>>>>>MapBuf_>>DBuf_MemX>>Store_Map_LoadMcrLoadTestSyndromeFetch_Store_Map_PreFetch_IOFetch_IOStore_MemoryIFU>>To ProcessorTo ControlMd*Fout>>>>>Fin>IFUFetch>10161681681616F/GF/G>16{FF}{FF,ASEL}{ASEL}MultiplyDivideCDivideQ lsh 1Q rsh 1{BSEL}DoradoFigure 1From devices{JCN,FF}>>>>>RdTPC_LdTPC_IM_Link_{FF}MOS_GenOut_BrkIns_>{ASEL}MemX{FF}{shift mask}Md*/0Carry'IOAtten'>>>>{FF}o>IFUTest_{FF}{FF}MemBX>FF[6:7]BR{ASEL}IdPdPipe5'PdA_IdRisIdA_IdTisIdPdId{ASEL}{FF}ProcSRN_B[12:15]IFaddr>B[3:7]MemBIFUMRH_IFUMLH_Id0 or 1by IFU256 x 16256 x 16PCX'Junk'IFUMLH'IFUMRH'BMux>D1ProgView.sil87/28/85012345677654321021001221001233210��îtïKØðîDXï ðî3ï ðî(ïðî%:ï ðîï ðîVï ðî�ï ðîï ðîÇïòþ�$UîGïdþ�$îEtïdþ�$îC;ïdþ�$îAïdþ�$î>Éïdþ�$î<ïdþ�$î:Wïdþ�$î8ïdþ�$î5åïdþ�$î3¬ïdþ�$î1sïdþ�$î/:ïdþ�$î-ïdþ�$î*Èïdþ�$î(ïdþ�$î&Wïdþ�$î$ïdþ�$î!åïdþ�$î¬ïdþ�$îsïdþ�$î:ïdþ�$îïdþ�$îÈïdþ�$îVïdþ�$îïdþ�$î äïdþ�$î«ïdþ�$î�ïdþ�$î rïdþ�$îïdþ�$î9ïdþ�$îÖïT¼ð îdïZJðî GïVfð î#Hï6tðîïGðîäï)eðî4Éï<×þ�$�Žî#Hï3ðî#Hï4Éðîdï\Êþ�$î%:ï`®ðî;tï\ƒþ�$Çî7×ï\_þÀ�$î7×ï\_þ�$ëîï]Xðîdï_µþU�$îºï\Êþ�$îdï\§þy�$îï]5þù�$îÖï]Ÿþ�$îÈ|ï[/ðîÈïY…ðî#tïBfðî#Hï8ðî2ï3óþ�$äîï<mþ«�$îÈï8þ�$rîï7ûþ�$•î«pï9‚ðîï:Âþ]�$îï9þ]�$îtï:Wðîsï9Éþ�$î Öï:Wþ�$î ¹ï:Âþ«�$îdï:åðîdï9;ðî ¹ï9þ«�$î Öï8¬þ�$î¹|ï7ðî¹ï5gðîï'ºþ�$�îï'—þ•�$îäï*ìþ•�$î9tï&žðî",ï*ðî2ï=fþ�$Uî2ï=Bþr�$î2ï<´þr�$î3ï?ðî1s|ï1<ðî1sï7 ðî«tïGðîäïòð î«pï«ðîVïOtðî rtïDŸðî&åï9;ðî3ï=ôðî3ï4‚ðî3ï:åðî3epï7×ðî7ï3Ðþ�$ î2ï3Ðþr�$î#Hï,PþG�$î#Hï-úþG�$î«ïO-þ�$9îïOßþ�$¤îïOßþ$�$îïPþ�$€î«tïM‚ð îïM_þ�$ÎîïM_þy�$îsïM‚þ�$«îïO þV�$îòïQôðî#Hï1sðî#Hï.ðî#Hï,sðî#Hï/Éðî&åïKJðî3ïAðîdïYQþU�$îºïVþ�$ÇîdïVŠþy�$îpïW<ðî ¹ïWíþ«�$îdïWƒþ�$îtïXðîï,—þr�$î!žï)óþ�$îï:åðîï9;ðî¬rïäðî�|ï&gðîHïT=ðî5žï&zþ•�$îBï%ðî�ïMKðî ïE»þ�$+î8etï4‚ðî8eï3eðî rïNðî<×ï=Bþ9�$î<×ï>íþ9�$î=fï=fð î=fï;»ð î;»uï&Wð î8ôï7×þ�$î9‚tï8eðîïJ»ðî�|ïJ=ðî«ïòþ�$Uîïòþ�$Uî:ïòþ�$Uî!åïòþ�$Uî(ïòþ�$Uî*Èï€þ�$Çî<ïòþ�$UîIæïdþ�$îLïdþ�$îÇïÏþK‘�$îNXïòþ�$UîÇï$þK‘�$î=ftï?ðî<×ï@—þ9�$î=fï@»ðî=fïE»ðî=fïDð îrï3Bþr�$îrï3eðîrï1—þr�$îrï1ºðîrï/ìþr�$îrï0ðîäï1—þ«�$îï/ìþÇ�$îï0ðî ï1—þG�$îï1 þ�$îuï3eðîï1ºðîï0ðîï7ûþ«�$î+Wï_üþ«�$î-ïb5þŽ�$î*:tïe ðî2ï@—þr�$î«uï2Iðî«ï1,ðîrpïIæðîïK´þV�$îsïH‚þ�$UîïH_þy�$îïH_þ�$yîïGBþV�$îsïDþ�$UîïCíþy�$îïCíþ�$yîrïEtðî VïJ þÇ�$î VïE»þ�$rî VïE˜þÇ�$î ïGÑþÇ�$î¹ïRíþ�$îVïO-þ�$äî¹tïSð îïA´þ�$¤îsïJ˜þ�Ž�$îïE»þ�$�îsïE˜þ�²�$îïBÐþä�$îï?žþ�$Uîï?{þ�$îï?{þ�$yîïA´þ�Ž�$î"sïBBþ�$î-ï]çþ�$rî(ï+Wþ�$ Vî(ïE˜þÇ�$î'sïJ-ðîï>‚ð î«ï@-ðîï@ þ9�$îVï@—þ9�$î ï=ôþ�$ÇîVï=Ðþ]�$îVï=Ðþ�$ëî ï?{þÇ�$î Vï>‚þ�$Žî VïA&þÇ�$î�ïBôð î7ï=fþ�$Uî5žï+zþr�$î#ï7ûþ��$îïH_þÖ�$îÖïE»þ�$äî#ïGfðî#ïDðî#ïE»ðî#ïIðîï)Aþ G�$îÖï(Hþ�$äîóï*ðîHïIŸðîïKØþ�$«î�|ïFYðî�ïAçðî rïDöðî rïCKðî'sïE=ðî'sïC’ðî'sïAçðî'sï@=ðî'sï>’ðî'sï4Kðî'sï2 ðî'sï0õðî'sï/Jðî'sï- ðî'sï+õðî'sï*Jðî'sï( ðîºï%‘ðîºï'<ðî(ïAIþ�$äîäï1 þ�$îäï.óþ�$äî ï3ÐþU�$î äï/‚þ�$rî ï/^þy�$î ï/^þ�$•î Öpï0åðîrï1,þ�$î�tï1ºðî=fïCíþ«�$îäï.óþ�$Žîï>^þ9�$îòï^.ðîï@»ðî GïXðî +ï>ÉðîdpïPØðîòï]Ÿðî%:ï`Šþ�$î*:|ï[/ðî*:ï\Úðî+åï\Lðî�ï=vðîrïBÐþä�$î9ï<Yðî9ï:®ðî9ï;Ëðî9ï? ðî rïA&þä�$î �tïAIðî9|ï=vðî«pï@»ðîÇ|ï/’ðîÇï-çðîÇï,<ðî rï-çðîÈï,<ðîÈï-çðî Vï(%þ�$î9ï'<ðî9ï%‘ðî Vï*þÇ�$îïH¦þr�$îÖï*^þ��$îºïCðîºïD¯ðîdïVþ�$ÇîÈpï)eðîÖïGBþ ¹�$î.eï`gðî-×ï^¼ðî6,ï(ðî7ï&åðî=ftïBfðî#ï4¥þ��$î8eï2IðîÖï`gðîÇï#%þ�$îÇï!zþ�$îÇïÏþ�$îÇï%þ�$îÇïzþ�$îÇïÏþ�$îÇï$þ�$îÇïzþ�$îäïþ�$ äîäpïäðîÇtï#HðîÇï!žðîÇïóðîÇïHðîÇïðîÇïHðî ï¤þr�$î ïÈðîpï:ðî&ïþ9�$î&ï³þ9�$î-Iïþ�$9îAïðîÇtïð î+ï)Aþ �$î5ž|ï!ðî5žï!ðîBfï ‘ðî*Èï#úþ9�$î-ï Øðî-ï Øðî:WïOþ«�$î:Wï¤þ«�$î:åtïsðî:åïÈðîAï¬þ�$äî&ï]þ9�$î-IpïðîòuïrðîVïrðî/:ïºðî@»ïºðîpï ðî&å|ï Øðî&åï Øðî)pï#ðî)¬ï#úþ«�$îïdþ�$Çî7×ï$þ«�Gî=fïE˜þ«�$î=ïBBþò�$î=fïGBþ«�$î=ftïGfðî7ï8Bþ �$î<×ï;—þ9�$î=ï9íþò�$îDï?ÂþG�$îDæï?Wþ�$îEtï?æðî<Ipï$eðî<Iï(×ðîïUØþ�$�ÕîïYuþ�$�Õî äï[õþ�$+îtï_ðîÇï^ßþ�$î äï^ þ€�$îBô|ï4’ðîBôï6<ðîBôï7çðîBôï9’ðîBôï;=ðîBôï<çðîBôï>’ðîBôï@=ðîBôïAçðîBôïC’ðî=ftï8eðî«ïóþ7�Gî6tïS|þU�$î7ïQôðî7ïPJðî7ïLôðîDï7Iþ�$9îï:Wþ�$+îÈï:4þG�$îï>^þH�$î+Wï;Pþ9�$î5žï&žþ�$�î3ï$¬þ�$¹î3ï$ˆþÇ�$î+å|ïLvðî+åïLvðî0WpïO»ðî7tïNŸðî:ï&žþ�$�î-pï;tðî-ï5ðî's|ï:®ðî(ï=fþ�$€î7tïSŸðî>;ï^QþÇ�$îAï[þ�$Uî>;ïZüþë�$î>;ïZüþ�$yî?Wï\<ðî5W|ïKèðî2ïþŽ�$î2ï]þŽ�$î2ï³þŽ�$î2ïþŽ�$îdïdþ�$ÇîÇïuðîÇïÊðîÇïðîÇïtðîÇïÊðîÇïðîÇïtðîÇïÊðî,,ïXðî,,ïðî,,ïðî,,ïXðî1sïØðî?æïŸðî?æïôðî7ïXðî7ïðî7ïðî7ïXðîòïôðîHïôðîïôðîHtïÈðîV|ïôðîsï¤þd�$î"sïôðîòtïÈðîdï¤þr�$îsïdþ�$Çî,uïrðî%È|ï Jðî/:ï JðîuïVðî:ïðî:ïVðî:ï:ðî@tïYßþò�$îGfïMÊþ�$9î@tïM¦þ�$î@tïM¦þ�$]îAïSæðîAïRÊðîAïQðîAïP‘ð îAïOtðîAïNXðîApïWƒðî7×ï_'þ�$îï\§þd�$îïT˜þ‡�$îïT˜þ�$2î ÈïWÊðîºïWíþä�$îºï^ þ�$î.|ïT„ðî*ÈïRLðî2ï_üþ9�$î9Éï_Jþ�$�Õî/ÉuïZJðî/ÉïWÊð îH;tïUðîH;ïQfðî=|ïWÚðî=ïZðîLïQ/ðîLôïO„ðîM;ïM’ðî;-tïVõðî?W|ïS!ðîAuïUðî.|ïWðî+WtïXXðî*:ïZJþ�$î*ïWÊþ�$îJ»ïRÊþ�$î*ÈïBBþd�$î,sïA×ðî*ï-³þd�$î,,ï-Iðî?Wï(þ�$dî@-ï(×ðî?Wï#þ�$«î@-ï$eðîKØïSXðîKJïPØþ�$îKØïQfðîJ»ïTtþ�$îKJïUðîGfïT¼þd�GîGfïSþ«�GîH;ïSXðîGfïQþ«�GîóïXŸþ�Gî:ïXæðî!žï\Êþ�G9î!žï^¼þ ¹�Gî$óïZ‘þ G�Gî$óïXþ G�Gî$óïUØþ G�Gî rï,þ9�GîºïÈþ�GrîïþÇ�Gî:ïÈþ�Grî:ïþ9�Gî0ï¬þ�GGî-×ïdþ¹�GîC;ïþ�GîHï*ÈþŽ�Gî¬ïFþ+�GîïFØþr�Gîäï)þr�Gîs|ïUðî=ïVþ�$dî=ôtïVõðî%:ï :þ�Gäî%:ï#Öþ«�Gî0Wï :þ�Gäî/:ï#Öþ�Gî#ï6,þ��Gî$óïT¼þ�$î rïMÊþ«�Gî«ï,þ�Gî,sï«ðîÈï,ð î&ïþ9�$îïðîGuïZJðîGïY.ðîGïXðîGïVõðîGïUØðî9tï-×ðî#rïŽðî#ï9ðî;»uïbðîDXtïVðîIŸ|ïJðîIŸïôðîIŸïŸðîIŸïJðîDïÊðîE-ïþ�$€îE»tïðîE-ïúþŽ�$îE»ïÈðîE»ïsðîE»ïðîE-ï¤þŽ�$îE-ïOþŽ�$îE-ïúþŽ�$îAïVþ�Gî2ïðî3ï,ðî3ïðî2ï]þŽ�$î3ïðî7I|ïðî:ï(þ +�Gî&åtï<ðîòuïðîBôtï5åðî@»ï4‚ðî=fï:ðî8eï5žðî<ï+Wðî6tïN{þ«�$î6tïLÑþd�$î6tïP&þd�$î6tïQÑþd�$î<|ïN!ðî<ïLvðî<IïJËðî<ïI!ðî9tïðîï'ºþ�$�î-×pïO-ðî/:ïO»þ�Gdî.eïOtþÇ�Gî2ï²þŽ�$î7I|ïðî3tïÖðî2ïþ�$ Gî?æïHðî7ï!åðî/‚ïbXþ�GÇîºïa`þ@�$îHpïaƒðî#Öïb5þ€�$î*:|ï^…ðîºïaƒþ�$òî#Öïaƒþ�$òîHtïbXðîºïb5þ��$îºïcQþ�$î8¬pï]ðîºtïJ»ðîdï+ðîäï+ðîÇïóðîGfï?æðî,uïBðîsïDðîsï%:ðîºï&žðîtïHÉðî%ÈïZØðîºï-×ðîHï,ºðî:uïsðîdïPûþ¹�$îdïO»þ�$Çî«ïQÑþ¹�$î«ïPmþ¹�$îïR_þ��$îïQCþ�Ž�$îòtïP‘ðî%ÈïXXðî+Wï]çþ�$«î%:ïcàþ�$î*:|ï`0ðî)óïdÙþŽ�Gî%tïdðî%:ï_ðî3ïÖðî3ï+ðî¬ïFØðîÇuïQfðîÇïPJðî6tïKØþ�$äîVtïHÉðîVïDXðî"sïCíþ�$î"sïE˜þ�$î"sïHÉþ�Gî#Hï/¥þG�$î#Hï1PþG�$î#Hï2ûþG�$î(ï2%þ€�$î+ï4ìþ€�$î+Wï;tþ�$Hî+ï$þ�$òî-ï]ÃþŽ�$î2ï]çþ�$rî+WïO˜þ�Õ�$î&ï,ðî&ïðî&ïÖðî&ï+ðî;tï]ÃþÇ�$î9ÉïS|þ�$2î9Éï[Šþr�$îAï\§þÇ�$îCÉïZþ�$Çî;-ïVþG�Gî;-ïTtþ¹�Gî;-ïT¼ðî?|ïPèðîAuïäðî+WtïZØðîBuï€ðî)¬ï²þ�$Îî=tï Gðî?Wï GðîAï GðîCÉï GðîFï GðîH;ï GðîJtï GðîLï Gðî:åï Gðî8¬ï Gðî6tï Gðî4;ï Gðî2ï Gðî/Éï Gðî-ï Gðî+Wï Gðî&åï Gðî$¬ï Gðî"sï GðîÈï Gðîï Gðî :ï Gðîï GðîVï Gðîï Gðî9ï Gðîrï Gðî«ï Gðîäï Gðî �ï GðîÇï GðîŽï GðîUï Gð�������2ä��€M‚c¼ ¦������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������ShData[i]'Mask[i]'Shift' orMdShift andShiftShift Data PathsControlMask[i] = LMask[i] or RMask[i]Mask[i]RESULT[i]AMux[i]BMux[i]MdAcdALUababbaBP = A[8:11] = number of bits to the left of the fieldS = A[12:15] = number of bits in the field - 1ALUF[0:2] controls maskingALUFMvariable by BitBlt (or elsewhere), while ALUFMlocation 14 contains controls for the Not-Aoperation normally used with shifts.By convention ALUFM location 15 is used as aThe hardware actually uses two inputs ofthese is the normal ALU path, and theother is either Md (on a replace-with-Mdshift) or 0. The multiplexor select ischanged to the Md/0 path when thebit is being masked out.SHA.iSHB.ioShift 8Shift 4Shift 2Shift 1The final stage is an inverting 2-in multiplexor whichis disabled when no shift is taking place.The first stage of shifter multiplexing selectsFieldSHASHBShiftRMaskLMaskCountShC bits:234:78:1112:15P+S+115-S16-P-S-116-P-S-1PB[2]B[3]B[4:7]B[8:11]B[12:15]RF_AWF_AShC_BFF[4:7]FF[4:7]FF[0:3]Shift controls come from ShCShift controls come from FFFunctions thatload ShCthe microinstruction that shiftsThe values for RMask, LMask, and Shift Count are and'ed by 17-octal.The 32-bit quantity SHA[0:15]..SHB[0:15] are left-cycled by theshift count and the right-most 16 bits are the shift data.Derivation of Shift Controls16+ALUF[3]R.iT.iR.iT.iA[2]A[2]A[3]A[3]>>>>>>>>>>>>>>between R and T. When shift control istaken from ShC, ShC[2] = 1 selects T for SHAand ShC[3] = 1 selects T for SHB. When the>>The 32-bit quantity SHA..SHB is then left-shiftedshift 4, and shift 2 controls.through an 8-in multiplexor controlled by the shift 8,shift is FF-controlled, SHA and SHB are takenfrom BSEL as shown in the table below.BSEL.0=1BSEL.1BSEL.2when BSEL.0 is 1, and thesource for B is changed to Q.RF_ and WF_ are intended for use with "reasonable" values of P and S.undefinedPdthe Pd multiplexor when shifting. One ofexcept when BSEL.0 is 1 inD1Shifter.silFigure 4Shifter9/5/79��îstïZJð î0WïPØðî0WïRƒð î0WïKØðî9;ïS|þ«�$î:åïR_þ�$�$îVïXðî Èpï=ðî)ótïY¼ðî+åï[fþ�$Çî)¬ïGfðî0WïJ-ðî0WïT¼ð î#ïY.ðî#ïPJðî0WïNðî)ïXŸðî:W|ïPZðî:WïPZðî*:pïSæðî0WïK´þÎ�$î0WïMíþÎ�$î0WïR_þÎ�$î7|ïPèðî7ïPèðî/:ïT˜þÇ�$î"sïY þ@�$î#ïP&þŽ�$î(ïM_þ�$î(ïM_þÎ�$î/:ïM‚þ�$ äî(ï[Cþ«�$î :ïVvðî :ïVvðî7ïJ=ðî7ïJ=ðîÈïWíþ•�$îÈïZ&þ r�$î)tïO»ðîÈï#Hð5îÈï",ð.î)¬ïFIðî(ïa`þ«�$î/:ï^.þ�$Uî(ï^ þÎ�$î(ï^ þ�$yî)¬pï_ðî0åtï`õð.î0åï_Øð+î0åï^¼ð$î0åïbð,î2ïC‚ð(î2ïAIð%î2ï@-ð(î2ï?ð'î2ï=ôð!î2ï<×ðîŽï\_þU�$îŽïZµþU�$îäï[Cþ«�$î ï[fðîŽïWíþU�$îŽïVCþU�$îäïW_þ«�$î ïWƒðî9ï[Cþ�$î9ïZµþ�$î9ïZ&þ�$î9ïY˜þ�$î9ïY þ�$î9ïX|þ�$î9ïWíþ�$î9ïW_þ�$îVïVfþ�$ŽîïZµþ«�$î:ïXŸþ�$Uî:ïY¼ðîVïY˜þä�$îïT¼ðîïSŸðîïRƒðîïVõðî�ïBôð6î�ïA×ð*îäïY¼þ�$äîäïUJþ�$äî�ïO-ð/îÈï4‚ðîsï4‚ðîï4‚ðî$ï5ðî+Wï4‚ðî3¬ï4‚ðî«ï6 þ(�$î$ï3óðî«ï3Bþ(�$î9ï1ºð îï1ºðîï1ºðî$¬ï1ºðî+åï1ºðî3¬ï1ºðî«ï1—þ(�$î#Öï0ðî3¬ï0ðî«ï/^þ(�$î#ï-×ðî*:ï-×ðî4Éï-×ðî«ï-%þ(�$îsï+žðîï+žðî$ï+žðî+Wï+žðî3ï+žðîVï0ðîVï-×ðîVï+žðî«ï*ìþ(�$î«ï*^þ(�$î«ï3Ðþ(�$î$ï(×ðî+Wï(×ðî«ï(%þ(�$î3ï(×ðî9;ï1—þ�$î:Wï+þ�$«î9;ï*ìþ@�$î:Wï.Aþ�Ž�$î;tï.óðî9;ï*^þ�$î:Wï(Hþ�$9î9;ï(%þ@�$î;tï(×ðîrï1—þ@�$îrï+þ�$«îrï*ìþ�$î äï.Aþ�²�$îŽï.eðî9ï-Iðî;tï,ºð îÈïóðDîÈïÖð@îÈïºð:îVpïäðîï_µþ �$îtï_Øð îŽï\ƒðîŽïZØðîŽïXðîŽïVfðî=ïRíþÇ�$î=ïT þÇ�$î=ïU&þÇ�$î=ïVCþÇ�$î=ïW_þÇ�$î=ïX|þÇ�$î=ïY˜þÇ�$î=ïZµþÇ�$î?æïQôþ�$ �î9;ïLÑþ�Ž�$î9ÉïLÑþ�$²î9ÉïR_þ�$î?æïVÑþr�$îsï-×ðîsï0ðîï0ðîï-×ðîÇ|ïX¯ðîÇïWðîÇïT=ðîÇïR“ðî'sïUZðî'sïLvðî>ÉïO=ðî>ÉïPZðî>ÉïQvðî>ÉïR“ðî>ÉïS¯ðî>ÉïTÌðî>ÉïUèðî>ÉïWðî�tïNð'î�ïLôð,î�ïKØð+î|ïVvðîeïT=ðî�tïGfð1î�ïE-ðî�ïFIð6î�ïJ»ð-î�ïIŸð&î9ï(×ðîäï(×ðîsï(×ðî«ï(Hþ�$ äîÈï(Hþ�$ äîVï(Hþ�$ äî!åï(Hþ�$ äî)ï(Hþ�$ äî0åï(Hþ�$ äî8¬ï(Hþ�$ äî:Wï)Aþ�Ž�$î;tï'ºðî;tï&žðîÈïðEî*:ï0ð îAïVõðî2ïBfð)î;tï-×ðî=uï+ð î#rï«ðî#Öïrðî>Éuï€ðÿ�������¤ä���€H_`®ç��������������������������������������������������������������������������������������������������������������������������������������������Dorado Hardware ManualProcessor SectionAugust 1, 198510Processor SectionThe processor section implements most registers accessible to the programmer and decodes allinstruction fields except JCN. The FF field of the instruction is also decoded by the control,memory, and IFU sections.Read this chapter with Figure 1 in front of you.The processor section contains the Q, ShC, Cnt, StkP, and MemBX registers, the T, RBase,MemBase, and TIOA task-specific registers, and the ALUFM, RM, and STK memories. Itcontains the arithmetic and logic unit (ALU) and the shifter.The processor communicates with the control, memory, and IFU sections via B; with io devicesvia the IOB bus. It exports MemBase and Mar to the memory system for addressing, IOA todevices for io addressing, and branch conditions to the control section. It imports Md from thememory system and Id from the IFU.RM and STK Memories, RBase and StkP RegistersRM ("Register Memory," sometimes called "R") is the memory most easily available tomicroprograms; it stores 256 words x 16 data bits with odd parity on each byte of data. Each taskget 16 R memorys to work with. RM is read at t0 and latched at t1. Data may be routed to A, B,or the shifter, and branch conditions (see "Control Section") test the sign bit (R<0) and low bit (ROdd). RM may be written between t3 and t4 with data from Md or Pd.The RM read address is the contents of the selected Rbase for bits 0, 1, 2, and 3, and the RSTKfield of the mircoinstruction word for bits 4, 5, 6, and 7. The contents of RBase[0:3], and themicrocode value of RSTK[0:3] select 1 of 256 R memorys to use. Normally, this read address is also used for the write part of the instruction (if any). However,two groups of FF decodes discussed below modify the write address.The RBase_SC function loads RBase with FF[4:7], selecting any block of 16 registers; RBase_Bloads RBase from B[12:15]; Pointers_B loads RBase from B[12:15] while also loading MemBasefrom B[3:7] (Previous RBase value is used for both the read and write portions of the instruction.).The STK memory (sometimes called "stack") is accessible only to task 0. Since the emulatorcannot block, the instruction bit interpreted as BLOCK for I/O tasks is instead interpreted asStackSelect. When StackSelect is a 1, RM is disabled and STK used instead. Like RM, STK stores256 words x 16 data bits with odd parity on each byte of data. STK is addressed by the 8-bitStkP register, and RSTK controls the adjustment of StkP; StkP may be decremented orincremented by any value between 4 and +3.Unadjusted StkP is always the read address and normally the write address, but theModStkPBeforeW FF decode forces adjusted StkP to be used for the write. STK is divided intofour separate regions, each 1008 words long. Valid addresses are 1 to 778 within each region. Thatis, StkP[0:1] select the region, stack overflow occurs at the onset of a instruction that wouldincrement StkP[2:7] > 778, and underflow occurs when location 0 is either read or written or whenStkP[2:7] is decremented below 0.ÿ��������������î¶ïfªpô�€î#$qî5¾pô�îG?ïfñî¶ïa×rî¶ï^epô�Áð:ô�Âð"î¶ï\›ô�¸ðRô�¹î¶ïZÐô�î:ïW^qð0î¶ïSìpô�Öð*ô�×ð.î¶ïR"ô�Ýð*ô�Þð)î¶ïPWô�ð=î¶ïLåô�¦ð,ô�§ð0î¶ïKô�±ð/ô�²ð)î¶ïIPô� ðIô�¡î¶ïG…ô�ð"î¶ïC@sð-î¶ï?ÎpôîNï?wþ�ï?Î�î;ï?wþU�ï?Î�ð7ôî¶ï>ô�„ð'ô�…ð;î¶ï<8ô�‡ð)ô�ˆï;«t�ï<8pï;«t�ï<8pî¶ï:nô�„ð%ô�…ð?î¶ï8£ô�ð"ï8t�ï8£pï8t�ï8£pî¶ï5Uô�‘ðRô�’î¶ï3Šô�·ô�¸ðSî¶ï1¿ô�ð@î¶ï.Mô�¢ô�£ðOî¶ï,ƒô�ðBî¶ï)ô�žðCô�Ÿî¶ï'Fô�¨ô�©ð@î¶ï%|ô�‚ðQô�ƒî¶ï" ô�¼ð<ô�½î¶ï ?ô�¾ð[ô�¿î¶ïtô�ƒô�„ðMî¶ïªô�§ô�¨ðEî¶ïßô ð$ô ð/î¶ïô�ð+î¶ï£q pô?ð$ô@ð$î¶ïØô�¢qpô�£ð+î¶ï ô�„ï€t�ï pð"ô�…ï€t�ï pî¶ïCô�ÑðYô�Òî¶ïxô�†ô�‡ï ët�ïxpðHî¶ï®ô�ð!ÿ�������ò����¶g<ñ[¤\����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Dorado Hardware ManualProcessor SectionAugust 1, 198511StkP[2:7] are initialized to 0, denoting the empty stack. A push could do StkP_StkP+1 and writein one instruction. A pop does StkP_StkP1, and the item being popped off can be referencedin the same instruction if desired.Table 6: RSTK Decodes for Stack OperationsRSTK[0]0 = no underflow on StkP = 0 at start or end1 = underflow when StkP originally 0 or finally 0.RSTK[1:3]Meaning 0no StkP change 1StkP_StkP+1 2StkP_StkP+2 3StkP_StkP+3 4StkP_StkP4 5StkP_StkP3 6StkP_StkP2 7StkP_StkP1In other words, RSTK[1:3] treated as a signed number are added to StkP[2:7] (StkP[0:1] don'tchange.). In the task 0, an attempt to underflow or overflow the stack generates the signalStkError.StkError generates the HOLD condition and wakes up the fault task (task 178) to deal with thesituation, so the instruction causing StkError has not been executed when the fault task runs.StkUnd and StkOvf are remembered in flipflops read by the Pd_Pointers function. These getcleared when the next stack operation is executed by the emulator. The fault task can read themto decide whether stack underflow or overflow action is necessary.Interpretation of underflow: StkP eq 0 denotes the empty stack. A stack adjustment may occureither by itself or with a read or write stack reference. StkP originally equal 0 underflows if thetop of stack is read or written; decrementing StkP below 0 is always an underflow error; StkPequal 0 after modification underflows iff writing at the modified address.StkP can be loaded from B[8:15] using the StkP_B function; however.StkP is saved at t2 of an instruction dispatched to by the IFU. The saved value may be reloadedinto StkP at t2 by the RestoreStkP function.Two groups of FF decodes change the RM address for the write portion of an instruction.The first group of 16 FF decodes forces the write address to come from RBase[0:3],,FF[4:7]. Thisallows different registers in the same group of 16 to be used for the read and write portions of theinstruction, or allows STK[StkP] to be used for the read portion and any of the 16 registerspointed to by RBase in the write portion.The second group of 16 FF decodes forces the top four write address bits to come from FF[4:7].The complete RM write address becomes FF[4:7],,RSTK[0:3]. Note that there is no way to read RM and write STK in one instruction.The RisId FF decode causes Id to be substituted for RM/STK in the A, B, or shifter����������������������������������������������������������������������î¶ïfªpô�€î#$qî5¾pô�îG?ïfñî¶ïbô�†ðJô�‡î¶ï`Sô�•ð?ô�–î¶ï^‰ô�ð#î:ï[sô�Xð*îïWÈuî~tô�ð,î~ïVDð2îïS‚uî~îïPÁtô�€î~ô�îïO=ô�€î~ îïM¹î~ îïL5î~ îïJ±î~ îïI-î~ îïG¨î~ îïF$î~ î¶ïBùpô�¸ð&ô�¹ð6î¶ïA.ô�Ñô�ÒðOî¶ï?dsp�î¶ï;òô�¥ðJï;et�ï;òp ô�¦î¶ï:'ô�Äð2ô�Åð,î¶ï8]ô�³ðEô�´î¶ï6’ô�‘ð[ô�’î¶ï4Çô�ðBî¶ï1Uô�šðTô�› î¶ï/‹ô�˜ð(ô�™qpî¶ï-Àô�´ô�µ qpqî¶ï+öô�pð0î¶ï(`ðCî¶ï$îô�ï$at�ï$îpð7ô�î¶ï#$ô� ï"—t�ï#$pî¶ïÕô�Ù ô�ÚðMî¶ïcô�ˆðAô�‰î¶ï™ô�„ð`ô�…î¶ïÎô�Ëð8ô�Ìð$î¶ïô�ð)î¶ï‘ô�” ô�•ðTî¶ïÇô�ð;î¶ïUðFî¶ï ãôôð?������� º����¶ œ=ñ]o1������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Dorado Hardware ManualProcessor SectionAugust 1, 198512multiplexing.There are branch conditions to test R[0] (R<0) and R[15] (R odd). These branch conditions areunaffected by the RisId FF decode; actual data from RM/STK is tested.Cnt RegisterThe 16-bit Cnt register is provided for use as a loop counter. Since it is not task-specific, I/Otasks must save and restore it.Cnt can be decremented and tested for 0 by the Cnt=0&1 branch condition; loaded fromB[0:15] or from small constants 1 to 16 (FF decodes), and read onto the Pd path (into T orRM/STK) by an FF decode.Q RegisterThe 16-bit Q register is provided primarily for use as a shift register with multiply and divide, butwill probably be used more widely by the emulator. Since it is not task-specific, I/O tasks mustsave and restore Q if they modify it.Q can be read onto B (BSEL) or onto A (FF); it can be loaded from B (FF) and when FFspecifies an external B source in the memory, ifu, or control sections, it can also be loaded from B(BSEL). Q can be left-shifted or right-shifted one (bringing 0 into the vacant bit) by two FFdecodes.T RegisterThe 16-bit T register is the primary register for data manipulation in the processor. Since it istask-specific I/O tasks do not have to save and restore it. T can be read onto B (BSEL) or A(ASEL); it can be loaded from Pd or Md (LC).BSEL: B Multiplexor SelectBSEL normally selects one of the "internal" processor sources for B, as shown in the "Primary"column in the table below (Note that although Md originates in the memory section, it is latchedby the processor and appears as an internal B source.). However, the FF field can be used tosubstitute some other source external to the processorthere are many "external" sources in thecontrol, IFU, and memory sections, and the FF decodes for these are 160 to 177.��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������î¶ïfªpô�€î#$qî5¾pô�îG?ïfñî¶ïbî¶ï^¬ô� ðAô�¡î¶ï\áq pô�ð;î¶ïWÈsî¶ïTVpô�ªðbî¶ïR‹ô�î¶ïOô�Éð>ô�Êî¶ïMOô�Âð>ô�Ãî¶ïK„ô�î¶ïFks î¶ïBùpô�‡ ô�ˆð[î¶ïA.ô�™ð3ô�šð.î¶ï?dô�ð%î¶ï;òô�½ðAô�¾î¶ï:'ô�„ð%ô�…ð?î¶ï8]ô�µðHô�¶î¶ï6’î¶ï1ysô� î¶ï.pô�ªðJô�«î¶ï,<ô�ªð[ô�«î¶ï*rô�ð,î¶ï%Xsî¶ï!æpô�¡ðAô�¢î¶ï ô�‘ð-ô�’ð3î¶ïQô�¬ð8ô�ð%î¶ï‡ô�¡ð%ô�¢ð:î¶ï¼ô�ðO�������&����¶ª<ñOa�É��������������������������������������������������������������������������������������������������������������Dorado Hardware ManualProcessor SectionAugust 1, 198513The sources selected by BSEL are:Table 7: BSEL DecodesBSELPrimary 0Md 1RM/STK 2T 3Q 40,,FF 53778,,FF 6FF,,0 7FF,,3778The values selected by BSEL=4-7 are 16-bit constants obtained by concatenating the 8-bit FFfield with zeroes or ones. When this is done, normal effects of functions are disabled, so externalB sources are impossible. In conjunction with a shift operation on A, BSEL = 4 to 7 will causethe shifter controls to come directly from FF rather than from ShC as discussed in "Shifter"; theQ-register sources B when an FF-controlled shift is carried out.The TisId and RisId FF decodes may be used with the B_T or B_RM/STK BSEL decodes,respectively, to accomplish B_Id.The "External" decode of BSEL applies with Link, DBuf, Pipe0-Pipe5, FaultInfo, PCX, and otherfunctions that source B on the backpanel, as selected by the FF decode of 160 to 177. Hardware ImplementationThe processor's internal version of B, called Alub, is driven by a 4-input multiplexor when sourced from within theprocessor; in this case an identical multiplexor drives the external bus, called Bmux (high-true). When the B source isexternal, both of these multiplexors are disabled, and the backpanel BmuxIn (low-true) is inverted through a gate ontoAlub. The multiplexor arrangement is shown in Figure 3.Bmux sources in this manual are given high or low-true names that agree with the way signals appear on Alub. Forexternal sources this is inverted with respect to the sense of these signals on Bmux. However, because external sourcescannot feed external destinations (no way to encode this in an instruction), the signal inversion is invisible toprogrammers.ÿ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������î¶ïfªpô�€î#$qî5¾pô�îG?ïfñî¶ïbð!î"¢ï^¬sô�Xîšï[:uî~îšïX2tô�€î~îšïV®î~îšïU*î~�îšïS¦î~�îšïR"î~îšïPžî~ïP�ïPžîšïNöî~îšïMrî~ïLå�î¶ïH6pô�¸ð*ô�¹ð1î¶ïFkô�‹ô�ŒðSî¶ïD ô�”ô�•ðRî¶ïBÖô�”ð>ô�•qî¶ïAô�ð?p�î¶ï=™ô�¿ð3ô�Àî¶ï;Ïô�ð!î¶ï8]ô�ô�‚ð@î¶ï6’ô�ÿðIô�î¶ï3Cvî¶ï0‚tô� ðVô�¡î¶ï.þô�‰ðbô�Šî¶ï-zô�ŒðKô�ð+î¶ï+öô�ð8î¶ï)4ô�‘ð*ô�’ðGî¶ï'°ô�†ô�‡ðhî¶ï&,ô�Õðdô�Öî¶ï$¨ÿ�������°����¶"º<ñEQ�Þ��������������������������������������������������������������������Dorado Hardware ManualProcessor SectionAugust 1, 198514ASEL: A Source/Destination ControlThe AMux drives the A input to the ALU, and is the data source for the read-field (RF_) andwrite-field (WF_) methods of loading ShC. The shifter also drives A, in which case the AMux isusually disabled.A copy of the AMux drives the backplane Mar bus on processor memory references. The IFUmay also drive Mar, when the processor isn't using it.The three-bit ASEL field controls the source and destination for A as follows:Table 8a: ASEL Decodes When FF is ok*ASELFF[0:1]Meaning 0 0PreFetch_RM/STK 1Map_RM/STK (emulator or fault task) -or- IOFetch_RM (io task) 2LongFetch_RM/STK 3Store_RM/STK 1 0DummyRef_RM/STK 1Flush_RM/STK (emulator or fault task) -or- IOStore_RM (io task) 2IFetch_RM/STK 3Fetch_RM/STK 2 0Store_Md 1Store_Id 2Store_Q 3Store_T 3 0Fetch_Md 1Fetch_Id 2Fetch_Q 3Fetch_T 4A_RM/STK 5A_Id--see "Instruction Fetch Unit" 6A_T 7Shift operationsee "Shifter" (uses ALUF)Table 8b: ASEL Decodes When FF is not ok*ASELMeaning0Store_RM/STK1Fetch_RM/STK2Store_T3Fetch_T4A_RM/STK5A_Id6A_T7Shift operationsee "Shifter" (uses ALUF)*FF is ok when not used in a long goto, long call, as a BSEL constant, or in an FF-controlledshift.In the above tables, each instance where the source for A is RM/STK can be overruled by one ofthe 4 FF decodes for A sources or the FF decodes that put FF[4:7] on A. These FF decodes areillegal with the ASEL or ASEL-FF[0:1] values that select Id or T, and the source for A isundefined when this restriction is violated.ÿ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������î¶ïfªpô�€î#$qî5¾pô�îG?ïfñî¶ïbsð"î¶ï^¬pô� ðFô�¡î¶ï\áô�Šð.ô�‹ð1î¶ï[ô�î¶ïW¥ô�£ô�¤ðFî¶ïUÚô�ð6î¶ïRhðNîuïNÓsô�Xð%î:ïKauî¼î?î:ïHYtô�€î¼î?î¼ïFÕî?ô�ð=î¼ïEQô�€î?î¼ïCÍî?î:ïBIî¼î?î¼ï@Åî?ô�ð?î¼ï?Aô�€î?î¼ï=¼î?î:ï<8î¼î?î¼ï:´î?î¼ï90î?î¼ï7¬î?î:ï6(î¼î?î¼ï4¤î?î¼ï3 î?î¼ï1œî?î:ï0î¼�î?î:ï.”î¼�î?ô�ð"î:ï-ô�€î¼�î?î:ï+Œî¼�î?ô�ð)îRï(`sô�Xð)î:ï%5uî¼î1ï"-t�î¼î1ï ©�î¼î1ï%�î¼î1ï¡�î¼î1ï�î¼î1ï™�î¼î1ï�î¼î1ï‘�î¼ô�ð)î:ïeô�“ð'ô�”ð6î:ïáî¶ï’pô�‡ð,ô�ˆð2î¶ï Èô�ŒðAô�î¶ïýô�ÖðIô�×î¶ï 3ô�ð,�����������¶ ì<ñ^D����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Dorado Hardware ManualProcessor SectionAugust 1, 198515The notation "Fetch_A", "Store_A", etc. in the above table is compatible with themicrolanguage. These routing expressions mean, for example, that the displacement originating onA is routed onto the Mar bus on the backplane, added to BR[MemBase] in the memory sectionand loaded into the memory address register. Then the Fetch, Store, etc. is started as detailed in"Memory Section".ASEL does a pretty thorough job of encoding possible actions on A: Store_ and Fetch_references take the address from RM/STK, T, Md, Id, or Q; other references take the addressfrom RM/STK; LongFetch_ takes the low 16 bits of address from RM/STK and high 12 bitsfrom Bmux.The FF field can be used to select any of the following sources:FF[4:7](small constant)RM/STKQTMdHardware ImplementationA is driven by a 4-input multiplexor as shown in Figure 3. A similar arrangement drives Mar, which is disabledexcept on memory references or when one of the 8 FF decodes that use Mar is executed; the IFU may use Mar whenthe processor does not. The 4-input multiplexors are usually disabled on shifts, which OR onto A independently.However, the A multiplexor is not disabled when the source for A is encoded in FF, so it is possible to OR any Ainput except Id with the (complemented) shifter datathis is useful for BitBlt and other complicated uses of the shifter.Since shifter data on A is low-true, and since the normal ALU operation is NOT A on shifts, the effect of enablingboth the shifter and the normal A multiplexor is [Shiftdata and not A].������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������î¶ïfªpô�€î#$qî5¾pô�îG?ïfñî¶ïbôJðHôKî¶ï`Sô�ƒðEô�„î¶ï^‰ô�¡ô�¢ð=î¶ï\¾ô�’ð=ô�“ð&î¶ïZóô�î¶ïWô�àð4ô�áð!î¶ïU·ô�°ð(ô�±ð3î¶ïSìô�¯ðPô�°î¶ïR"ô� î¶ïN°ð@î:ïKatî¢î:ïIÝî:ïHY�î:ïFÕ�î:ïEQî¶ïB%vî¶ï?dtô�« ô�¬ðdî¶ï=àô�„ð;ô�…ð3î¶ï<\ô�°ô�±ðcî¶ï9šô�˜vtðMô�™î¶ï8ô�€ð<ô�ð=î¶ï6’ô�˜ðJô�™ð(î¶ï5ô�ðGÿ�������,����¶3 =ñ4ë�¯������������������������������������������������������������������������������������������������������������������������������������������������������������������Dorado Hardware ManualProcessor SectionAugust 1, 198516ALUF, ALU OperationsThe 4-bit ALUF field controls the ALU operation. It addresses a RAM (ALUFM) containingcontrol for the MC10181 ALU chips.ALUFM is 8-bits wide, of which 6 bits are used. ALUFM[0] controls the carry-in for arithmeticALU operations. It is a "don't care" for the 16 logical ALU operations. The XorSavedCarryfunction causes the saved carry-out of a previous operation to be xor'ed with this bit. TheXorCarry function complements the value from ALUFM. ALUFM[3:7] select the ALU functionperformed as below. The carry-out (task-specific) changes whenever an arithmetic operation isperformed in the ALU unless explicitly disabled by the FreezeBC function (freeze branchconditions).The Carry20 function forces the bit 12 carry-in to one. Assuming that this carry-in wouldotherwise have been zero, then this function adds 208 to the (arithmetic) ALU output. Adding 208is expected to be useful because the cache, fast input bus, and fast output bus deal with 208-wordmunches.The table below shows the logical and (useful) arithmetic ALU operations.Table 9: ALUFM Control Values (Octal)LogicalArithmetic (No Carry)Arithmetic (With Carry)*1NOT A*0A*0A+13(NOT A) OR (NOT B)**62*A62*A+15(NOT A) OR (B)*14A+B*14A+B+17All-ones output*22AB1*22AB11(NOT A) AND (NOT B)*36A136A*13NOT B15A XNOR B (Assembler makes "EQV" and "=" synonyms for XNOR)17A OR (NOT B)21(NOT A) AND B*23A XOR B (Assembler makes "#" synonym for XOR)*25B*27A OR B31All-zeroes output**33A AND (NOT B)*35A AND B37A*System microcode can count on these operations being defined.**Emulator task can count on these operations being defined.On a barrel shift (selected by ASEL=7), the first three ALUFM address bits are forced to 1(ALUF[0:2] selects the kind of shift in this case). The intent of this arrangement is thatALUFM[168] selects the "NOT A" ALU operation. Nearly all shifter operations use this ALUfunction to route shifter output through the ALU. ALUFM[178] is loaded with assorted controls(i.e., used as a variable) by BitBlt or other opcodes that do more complicated things.ALUFM can be read onto Pd by the ALUFMEM function or both loaded from B and read ontoPd by the ALUFMEMRW function.External B sources from the IFU and internal sources are ready in time for arithmetic, but������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������î¶ïfªpô�€î#$qî5¾pô�îG?ïfñî¶ïbsî¶ï^¬pô�²ð0ô�³ð'î¶ï\áô�ð"î¶ïYoô�–ô�—ð@î¶ïW¥ô�µð[î¶ïUÚô�Ñô�ÒðCî¶ïTô�—ð4ô�˜ð#î¶ïREô�¸ð:ô�¹ð$î¶ïPzô�÷ð&ô�øð1î¶ïN°î¶ïK>ô�Üô�ÝðFî¶ïIsô�€ð4ïHæt�ïIspô�ïHæt�î¶ïG¨pô�ðKô�ŽïGt�ïG¨pî¶ïEÞî¶ïBlô�ðIî£ï=sô�Xð%î:ï9štî&,ô�€î6 ô�î:ï8îô�€î&,î*ÿ�î6î:Øî:ï6’îî&,î*ÿî6î:Øî:ï5î î&,î*ÿî6î:Øî:ï3Šîî&,î*ÿî6î:Øî:ï2îî&,î*ÿî6î:Ø�î:ï0‚îô�î:ï.þîð:î:ï-zîî:ï+öîî:ï*rîð-î:ï(îî�î:ï'iîî:ï%åîî:ï$aîî:ï"Ýîî:ï!Yî�î:ïð>î:ïZð<î¶ïpô�¿ ô�ÀðOî¶ïAô�ëðBô�ìî¶ïvïét�ïvpô�¬ð$ô�ð,î¶ï¬ô�— ô�˜ð0ït�ï¬pð"î¶ïáô�ðVî¶ïoô�ðPô�î¶ï ¥ô�î¶ï 3ô�Ö ô�×ðP������� @����¶ ì<ñ^k����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Dorado Hardware ManualProcessor SectionAugust 1, 198517external sources from the memory and control sections are not due to a slower data path. InternalA sources except shifter are ready in time for arithmetic. Unless explicitly disabled by theFreezeBC function, the branch conditions ALU<0, ALU=0, Carry' (ALU carry out'), andOverflow are available for testing on the ContA board at t3.The Overflow branch condition, defined as carry-out from bit 0 unequal to carry-out from bit 1, istrue iff a signed arithmetic operation yields an incorrect result.Normally, the ALU is routed directly onto Pd, and Pd is then written into either T or RM/STK.However, several functions route ALU output shifted left or right 1 position onto Pd. Note thatthe ALU output of this instruction are used (not the previous one) and that ALUcarry isundefined on a logical ALU operation. The right shifts are:ALU rsh 1(0 onto Pd[0])ALU rcy 1(ALU[15] onto Pd[0])ALU arsh 1(ALU[0] onto Pd[0] preserving the sign)ALU brsh 1(ALUcarry onto Pd[0])Multiply(ALUcarry onto Pd[0]).The left shifts are:ALU lsh 1(0 onto Pd[15])ALU lcy 1(ALU[0] onto Pd[15])Divide(Q[0] onto Pd[15])CDivide(Q[0] onto Pd[15]).Note: The barrel shifter discussed in the "Shifter" section also use the Pd multiplexor formasking, so it is illegal to combine barrel shifts and ALU shifts in the same instruction.Note: ALU<0, ALU=0, Carry', and Overflow branch conditions test the ALU output of theprevious instruction executed by the task and any shifting or masking that takes place in the Pdinput multiplexor does not affect the result of these branch conditions.Note: The value of Carry' and Overflow change only on arithmetic ALU operations. However,ALU_A may be either an arithmetic or a logical operation; in order to use XorCarry withALU_A, we will probably use the arithmetic form of ALU_A, but the consequence of this is thatCarry' will change on ALU_A. Programmers will have to be wary of this.Note: Overflow is implemented correctly only for the A+B, A+B+1, A-B, and A-B-1operations; other arithmetic ALU operations (A+1, A-1, 2A, 2A+1, etc.) may modify the branchcondition erroneously.ÿ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������î¶ïfªpô�€î#$qî5¾pô�îG?ïfñî¶ïbô�‚ô�ƒðIî¶ï`Sô�Øð.ô�Ùð/î¶ï^‰ô�ìð/ô�íð%î¶ï\¾ô�ð:ï\1t�ï\¾p�î¶ïYoô�„ð_ô�…î¶ïW¥ô�ðBî¶ïT3ô�’ð)ô�“ð4î¶ïRhô�˜ðAô�™î¶ïPžô�êîaïPGþ�ïPžðAî¶ïN|þ�ïNÓô�ð3î:ïK„tô�€î~ô�î:ïJ�ô�€î~ô�î:ïH|ô�€ î~ô�î:ïFøô�€ î~ô�î:ïEtî~î¶ïB%pî:ï>×tô�€î~ô�î:ï=Sô�€î~ô�î:ï;Ïî~î:ï:Kî~î¶ï6üqpô�Üô�Ýð9î¶ï51ô�öð+ô�÷ð/î¶ï1¿qpô�Âô�ÃðBî¶ï/õqpô�¥ðXî¶ï.*ô�qpð.î¶ï*¸qpô�Ÿð1ô� �q pî¶ï(îô�Øð9ô�Ùî¶ï'#ô�…ð9ô�†ð$î¶ï%Xô�ðGî¶ï!æqpôðEôî¶ï ô�ð\î¶ïQô�ÿ�������d����¶@=ñKË����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Dorado Hardware ManualProcessor SectionAugust 1, 198518LC: Load Control for RM and TThis field controls the loading and source selection for the RM/STK memory and T register. Theeight combinations are:Table 10: LC DecodesLC Meaning0No Action1T_Pd2T_Md, RM/STK_Pd3T_Md4RM/STK_Md5T_Pd, RM/STK_Md6RM/STK_Pd7T_Pd, RM/STK_PdThe only missing combination is T_Md, RM/STK_Md. T_Md, RM/STK_Md can beaccomplished by combining an LC value of 5 with the T_Md FF decode. It is illegal to useT_Md with other LC decodes.FF: Special FunctionThis field is the catch-all for functions not otherwise encoded in the instruction. For consistencywith the hardware implementation, the 8-bit FF field is shown below as a two-bit field FA (=FF[0:1]) and two 3-bit fields, FB (= FF[2:4]) and FC (= FF[5:7]). Field values are given inoctal.The FF field is interpreted as a function if:(BSEL not selecting a constant) andJCN does not select a "long" goto or callWhen ASEL selects one of the memory references, the FF decode is forced to be that of FA=0because the FA field specifies the source for A or alternate memory reference in this case.The decoding assignments have been made with the following considerations:Functions that source the external BMux are grouped for easy decode of the signal thatturns off the processor's B-multiplexors.Operations that might be useful in conjunction with a memory reference are put in thefirst 64 decodes (FA=0) since FA is decoded as zero on memory references.Functions decoded by different hardware sections are arranged in groups to reducedecoding logic.ÿ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������î¶ïfªpô�€î#$qî5¾pô�îG?ïfñî¶ïbsî¶ï^¬pô�„ð#ô�…ð<î¶ï\áô�î#+ïY“sô�Xî:ïVguô�€î¼î:ïS_t�î¼ô�î:ïQÛ�î¼î:ïPW�î¼î:ïNÓ�î¼î:ïMO�î¼î:ïKË�î¼î:ïJG�î¼î:ïHÃ�î¼î¶ïEtpôôð8î¶ïC©ô�³ô�´ð:î¶ïAßô�î¶ï=™sî¶ï:'pô�—ðSô�˜î¶ï8]ô�©ô�ªðKî¶ï6’ô�²ðYô�³î¶ï4Çî¶ï1Uô�ð-î:ï-äð#î:ï,ð)î¶ï(§ô�˜ðRô�™î¶ï&Üô�Ûð2ô�Üð)î¶ï#jô�ðJîyïøô�™ð"ô�šð4îyï.ô�ð)îyï¼ô� ðUîyïñô�ðIîyïô�àð'ô�áð*îyïµô�ÿ�������(����¶£<ñVh�ä��������������������������������������������������������Dorado Hardware ManualProcessor SectionAugust 1, 198519Table 11a: FF Decodes (FA = 0)FBFCFunction* The AMux is not disabled when A_xx decodes below are used while ASEL selects a shift.0-1A[12:15] _ FF[4:7]2 0A _ RM/STK2 1A _ T2 2A _ Md2 3A _ Q2 4XorCarry (complements ALUFM carry bit)see the "ALUF, ALU Operations" section2 5XorSavedCarrysee the "ALUF, ALU Operations" section2 6Carry20 (carry-in to bit 11 of ALU = 1)see the "ALUF, ALU Operations" section2 7ModStkPBeforeW (Use modified StkP for write address of STK)3 03 1ReadMap. Modifies action of Map_ (see "Memory Section")3 2Pd _ Input (checks for IOB parity error)3 3Pd _ InputNoPE (no check for IOB parity error)3 4RisId (causes Id to replace RM/STK in A_RM/STK, B_RM/STK, and shifter)3 5TisId (causes Id to replace T in A_T, B_T, and shifter)3 6Output _ B3 7FlipMemBase (MemBase _ MemBase xor 1)4-5Replace RMaddr[0:3] by RBase[0:3] and RMaddr[4:7] by FF[4:7] for write of RM;Forces RM to be written even if STK was read.60-7Branch conditions (see "Control"). In conjunction with an IFU jump in JCN,if the condition is true, IFU advance is disabled (see "IFU")7 0BigBDispatch _ B (256-way dispatch on B[8:15]. See "Control")7 1BDispatch _ B (8-way dispatch on B[13:15]. See "Control")7 2Multiply (Pd[0:15] _ ALUcarry,,ALU[0:14]; Q[0:15] _ ALU[15],,Q[0:14];Q[14] OR'ed into TNIA[10] as slow branchsee "Multiply")7 3Q _ B7 47 5TgetsMd (In conjunction with LC=5, this causes T_Md, RM/STK_Md)7 6FreezeBC (freezes previous values of ALU and IOAtten' branch conditions for 1 cycle)7 7Reserved as a no-opTable 11b: FF Decodes (FA = 1)FBFCAction0 0PCF _ B. Load PCF and starts fetching instructions0 1IFUTest _ B, dismisses junk wakeup, bits used as follows: 0:7 TestFG 8 TestParity 9 TestFault10 TestMemAck 11 TestMakeF_D12 TestFH'13 TestSH'14 enables testing0 2IFUTick0 3RescheduleNow (doesn't set Reschedule branch condition)0 4AckJunkTW_B. B[15]=1 shuts off junk task wakeups, =0 enables them; B[0:14] ignored0 5MemBase_B[3:7]0 6RBase_B[12:15]0 7Pointers_B (MemBase_B[3:7] and RBase_B[12:15])10:7Unusedÿ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������î¶ïfªpô�€î#$qî5¾pô�îG?ïfñîöïbsô�Xî¶ï^¬uî9î¼î¶ï[¤tô�ðWî¶ïZ î9�î¼î¶ïW�î9ô�€î¼�ô�î¶ïU”�î9ô�€î¼�ô�î¶ïT�î9ô�€î¼�ô�î¶ïR‹�î9ô�€î¼�ô�î¶ïQ�î9ô�€î¼ô�ðEî¶ïOƒ�î9ô�€î¼ô�ð#î¶ïMÿ�î9ô�€î¼ô�þð(ô�ÿî¶ïL{�î9ô�€î¼ ô�ð-î¶ïJ÷�î9ô�€î¼�î¶ïIs�î9î¼ô�ð8î¶ïGï�î9ô�€î¼ô�ð&î¶ïFk�î9ô�€î¼ô�ð,î¶ïDç�î9ô�€î¼ô�ðAî¶ïCc�î9ô�€î¼ô�ð2î¶ïAß�î9ô�€î¼ô�î¶ï@[�î9ô�€î¼ ô�î¶ï=Sî9�î¼ðMî¼ï;Ïð-î¶ï8Æ�î9î¼ðKî¼ï7Bð=î¶ï5¾�î9ô�€î¼ô�ð2î¶ï4:�î9ô�€î¼ô�ð1î¶ï2¶�î9ô�€î¼ô�ð=î¼ï12ð8î¶ï/®�î9ô�€î¼�ô�î¶ï.*�î9ô�€î¼�î¶ï,¦�î9î¼ô�ð?î¶ï+"�î9ô�€î¼ô�÷ðCô�øî¶ï)ž�î9ô�€î¼ô� îöï%|sô�Xî¶ï"Puî9î¼î¶ïHt�î9ô�€î¼ô�ð0î¶ïÄ�î9ô�€î¼ô�ð2î¼ï@ô�€î!Âî,Èî7Îî¼ï¼î! î,È î7Îô�î¶ï8�î9ô�€î¼î¶ï´�î9î¼ô�ð7î¶ï0�î9ô�€î¼ô�Õô�Öð>î¶ï¬�î9ô�€î¼ î¶ï(�î9î¼ î¶ï¤�î9î¼ô�ð.î¶ï �î9î¼ÿ�����������¶x;ñY“Û��������������������������������������������������������������������������Dorado Hardware ManualProcessor SectionAugust 1, 198520Table 11c: FF Decodes (FA = 1)FBFCAction*The following 8 FF decodes drive Mar from A.20-1Unused2 2CFlags _ A' (see Figure 10) (Mar must be stable during prev. instr.)2 3BrLo _ A. BR[16:31] _ A[0:15]2 4BrHi _ A. BR[4:15] _ A[4:15]2 5LoadTestSyndrome from DBuf (see Figure 10)2 6LoadMcr[A,B] (see Figure 10)2 7ProcSRN _ B[12:15]3 0InsSetorEvent _ B. If B[0] = 0, then B[4:15] are controls for EventCntA and EventCntB;if B[0] = 1, then B[6:7] are loaded into the IFU's InsSet register.3 1EventCntB _ B or equivalently GenOut_B (General output to printer, etc.)3 2Reschedule3 3NoRescheduleB data must setup during previous instruction and not glitch when writing IFUMLH/RHsee IFU section.3 4IFUMRH _ B. Packeda_B.5, IFaddr'_B[6:15]3 5IFUMLH _ B. Sign_B.0, PE[0:2]_B[1:3], Length'_B[4:5], RBaseB'_B.6,MemB_B[7:9], TPause'_B.10, TJump_B.11, N_B[12:15]3 6IFUReset. Reset IFU3 7BrkIns _ B. Opcode_B[0:7] and set BrkPending4 0UseDMD (see "Control Section")4 1MidasStrobe _ B (see "Control Section")4 2TaskingOff4 3TaskingOn4 4StkP _ B[8:15]4 5RestoreStkP4 6Cnt _ B (overrules Cnt=0&1 in the same instruction)4 7Link _ B (overrules loading of Link by Call or Return in same instruction)5 0Q lsh 1 (Q[0:14] _ Q[1:15], Q[15] _ 0)5 1Q rsh 1 (Q[1:15] _ Q[0:14], Q[0] _ 0)5 2TIOA[0:7] _ B[0:7] (Note: loaded from left-half of B)5 35 4Hold&TaskSim _ B (Hold reg _ B[0:7], Task reg _ B[9:15].See "HOLD and Task Simulator")5 5WF _ A (load ShC with write-field controlssee "Shifter")5 6RF _ A (load ShC with read-field controlssee "Shifter")5 7ShC _ B (see "Shifter")6 0B _ FaultInfo'. B[8:11]_SRN for 1st fault, B[12:15]_number of faults6 1B _ Pipe0 (B_VaHisee Figure 10)6 2B _ Pipe1 (B_VaLosee Figure 10)6 3B _ Pipe2' (see Figure 10)6 4B _ Pipe3' (B_Map'see Figure 10)6 5B _ Pipe4' (B_Errors'see Figure 10)6 6B _ Config' (see Figure 10)6 7B _ Pipe5' (see Figure 10)7 0B _ PCX'7 1B _ EventCntA' (see "Other IO and Event Counters")7 2B _ IFUMRH' (low part of IFUM)7 3B _ IFUMLH' (high part of IFUM)7 4B _ EventCntB' (see "Other IO and Event Counters")7 5B _ DBuf (normally non-task-specific data from last Store_ see "Memory")7 6B _ RWCPReg (= Link_B' and B_CPReg)7 7B _ Link������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������î¶ïfªpô�€î#$qî5¾pô�îG?ïfñîûïbsô�Xî¶ï^òuî9î¼î¶ï[êtô�ð-î¶ïZf�î9î¼î¶ïXâ�î9ô�€î¼ô�ð>î¶ïW^�î9ô�€î¼ô�î¶ïUÚ�î9ô�€î¼ô�î¶ïTV�î9ô�€î¼ô�î¶ïRÒ�î9ô�€î¼ô�î¶ïQN�î9ô�€î¼ô� î¶ïOÊ�î9ô�€î¼ô�¾ð1ô�¿î¼ïNFô�ðCî¶ïLÂ�î9ô�€î¼ô�ð?î¶ïK>�î9ô�€î¼ î¶ïIº�î9î¼î¶ïH6ô�ôðWô�õî¶ïF²�î9ô�€î¼ô�ð#î¶ïE-�î9ô�€î¼ô�ð=î¼ïC©ð1î¶ïB%�î9ô�€î¼ô� î¶ï@¡�î9ô�€î¼ô�ð'î¶ï=™�î9ô�€î¼ô�î¶ï<�î9ô�€î¼ ô�î¶ï:‘�î9ô�€î¼ î¶ï9 �î9î¼î¶ï7‰�î9î¼ô� î¶ï6�î9ô�€î¼ î¶ï4�î9î¼ô�ð4î¶ï2ý�î9ô�€î¼ô�ðFî¶ï1y�î9ô�€î¼�ô�ð%î¶ï/õ�î9ô�€î¼�ô�ð$î¶ï.q�î9ô�€î¼ô�vtî¶ï,í�î9ô�€î¼�î¶ï+i�î9î¼ô�ð8î¼ï)äî¶ï(`�î9ô�€î¼ô�ð7î¶ï&Ü�î9ô�€î¼ô�ð6î¶ï%X�î9ô�€î¼ô�î¶ï"P�î9ô�€î¼�ô�ðDî¶ï Ì�î9ô�€î¼�ô�î¶ïH�î9ô�€î¼�ô�î¶ïÄ�î9ô�€î¼�ô�î¶ï@�î9ô�€î¼�ô�î¶ï¼�î9ô�€î¼�ô�ð#î¶ï8�î9ô�€î¼�ô�î¶ï´�î9ô�€î¼�ô�î¶ï0�î9ô�€î¼�ô�î¶ï¬�î9ô�€î¼�ô�ð1î¶ï(�î9ô�€î¼�ô�î¶ï¤�î9ô�€î¼�ô�î¶ï �î9ô�€î¼�ô�ð1î¶ï›�î9ô�€î¼�ô�ðIî¶ï �î9ô�€î¼�ô�ð"î¶ï“�î9ô�€î¼�ô��������¶����¶p;ñ\›>����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Dorado Hardware ManualProcessor SectionAugust 1, 198521Table 11d: FF Decodes (FA = 2)FBFCAction0-1RBase _ FF[4:7]2-3Replace RMaddr[0:3] by FF[4:7] for write of RM.Forces RM to be written even if STK was read.4TIOA[5:7] _ FF[5:7] (TIOA[0:4] unchanged)50-3MemBaseX _ FF[6:7](MemBase[0] _ 0, MemBase[1:2] _ MemBX[0:1], MemBase[3:4] _ FF[6:7])54-7MemBX _ FF[6:7]60-16 2Pd _ ALUFMRW (Pd _ ALUFMEM as below, ALUFMEM _ B.8, B[11:15])6 3Pd _ ALUFMEM (Pd.0 _ DMux data, Pd.8 and Pd[11:15] _ ALUFMEM[ALUF])6 4Pd _ Cnt (If Cnt=0&1 in same instruction, unmodified value is read)6 5Pd _ Pointers (Pd[1:2] _ MemBX, Pd[3:7] _ MemBase,Pd[8] _ StkOvf, Pd[9] _ StkUnd, Pd[12:15] _ RBase)6 6Pd _ TIOA&StkP (Pd[0:7]_TIOA, Pd[8:15]_StkP; if the instruction modifies StkPconcurrently, the MODIFIED value is read)6 7Pd _ ShC7 0Pd _ ALU rsh 1 (Pd[0] _ 0)7 1Pd _ ALU rcy 1 (Pd[0] _ ALU[15])7 2Pd _ ALU brsh 1 (Pd[0] _ ALUcarry)7 3Pd _ ALU arsh 1 (Pd[0] _ ALU[0] preserving sign)7 4Pd _ ALU lsh 17 5Pd _ ALU lcy 17 6Divide (Pd[0:15]_ALU[1:15],,Q[0]; Q[0:15]_Q[1:15],,ALUcarry)7 7CDivide (Pd[0:15]_ALU[1:15],,Q[0]; Q[0:15]_Q[1:15],,ALUcarry')Table 11e: FF Decodes (FA = 3)0-3MemBase _ FF[3:7]4-5Cnt _ small constant (Cnt[0:10] _ 0, Cnt[11] _ 0 if FF[4:7] # 0 else 1,Cnt[12:15] _ FF[4:7]; i.e., values of 1 to 16 are loadable)6-7Wakeup[n] Initiate wakeup request for task FF[4:7]����������������������������������������������������������������������������������������������������������������������������������������������������������������������������î¶ïfªpô�€î#$qî5¾pô�îG?ïfñîÊïbsô�Xî¶ï^òuî9î¼î¶ï[êtî9�î¼ô�î¶ïZfî9�î¼ð/î¼ïXâð-î¶ïW^�î9�î¼ð)î¶ïUÚ�î9î¼î¼ïTVðCî¶ïRÒ�î9î¼î¶ïOÊ�î9î¼�î¶ïNF�î9ô�€î¼ô�ð;î¶ïLÂ�î9ô�€î¼ô�ðAî¶ïK>�î9ô�€î¼ô�ðBî¶ïIº�î9ô�€î¼ô�ð0î¼ïH6ð2î¶ïF²�î9ô�€î¼ô�ðKî¼ïE-ð)î¶ïC©�î9ô�€î¼ô�î¶ïB%�î9ô�€î¼ô�î¶ï@¡�î9ô�€î¼ô�î¶ï?�î9ô�€î¼ô�î¶ï=™�î9ô�€î¼ô�ð.î¶ï<�î9ô�€î¼ô�î¶ï:‘�î9ô�€î¼ô�î¶ï9 �î9ô�€î¼ô�ð6î¶ï7‰�î9ô�€î¼ô�ð7îÏï4^sô�Xî¶ï12tî9�î¼ô�î¶ï/®î9�î¼ðGî¼ï.*ð<î¶ï,¦î9�î¼ð4ÿ�������T����¶*¸:)=S+������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Dorado Hardware ManualProcessor SectionAugust 1, 198522Multiply and DivideThe Multiply, Divide, and CDivide functions operate on unsigned 16-bit operands. Unsignedrather than signed operands are used so that the algorithms will work properly on the extra wordsof multiple-precision numbers.The actions caused by these functions are as follows:Multiply:Result _ ALUCarry..ALU/2Q _ ALU[15]..Q/2Next branch address _ whatever it is OR 2 if Q[14] is 1.Divide, CDivide:Result _ 2*ALU..Q[00]Q _ 2*Q..ALUCarry -or- 2*Q..ALUCarry'Complete examples for Multiply and Divide subroutines are given in the microassemblerdocument. The inner loop time is 1 cycle/bit for multiply and 2 cycles/bit for divide.ShifterSee Figure 4.Dorado contains a 32-bit barrel shifter and associated logic optimized for field extraction, fieldinsertion and the BitBlt instruction.The shifter is controlled by a 16-bit register ShC. To perform a shift operation, ShC is loaded inone of three ways discussed below with 14 bits of control information, and one of eight shift-and-mask operations is then executed in a subsequent instruction. Alternatively, (a limited selectionof) shift controls may be specified in FF and BSEL concurrent with a shift; in this case, ShC isnot modified. ASEL=7 causes a shift and ALUF[0:2] select the kind of masking.The execution of a shift instruction (after ShC has been loaded in a previous instruction) proceedsas follows:ShC[2] selects between T and RM/STK for the left-most 16 bits input to the shifter;ShC[3] selects between T and RM/STK for the right-most 16 bits. Using the RisId orTisId FF decode in the same instruction allows Id to replace either T or RM/STK in theshift. This 32-bit quantity is then left-cycled by the number of positions (0-15) given byShC[4:7]. When ShC[2] and ShC[3] are both 1, then the shifter left-cycles T; when both0, RM/STK. In these cases it operates as a 16-bit cycler. When ShC[2] and ShC[3] areloaded with complementary values, then it left-cycles the 32-bit quantity R..T or T..R.The low order 16 bits of shifted data are placed complemented on A by the shift, andnormal A source is disabled (except when the source for A is encoded in FFsee theASEL section).ALUF[0:2] select one of eight mask operations (see below) and the first three ALUFMaddress bits are forced to 1, so that the ALU operation in either ALUFM 168 orALUFM 178 can be performed. This must be a logical ALU operation using the shifted��������������������������������������������������������������������������������������������������������î¶ïfªpô�€î#$qî5¾pô�îG?ïfñî¶ïbsî¶ï^¬pô�Âð?ô�Ãî¶ï\áô�‰ð,ô�Šð5î¶ï[ô�î¶ïW¥ð5î¶ïT3tî9ïR¯î9ïQ+î9ïO§ð8î¶ïLžî9ïKî9ïI–ð%î¶ïF$pôðUî¶ïDZô�ðWî¶ï@sî:ï<¢qî¶ï90pô�¶ô�·ðJî¶ï7fô�ð%î¶ï3ôô�ðYô� î¶ï2)ô�ŒðFô�î¶ï0_ô�¨ð%ô�©ð=î¶ï.”ô�žô�ŸðWî¶ï,Éô�ðNî¶ï)Wô�‡ô�ˆðKî¶ï'ô� îxï$ô�ºð#ô�»ð0îxï"Pô�£ð@ô�¤îxï †ô�…ô�†ð@îxï»ô�ð>ô�‘îxïðô�ŽðMô� îxï&ô�’ðRô�“îxï[ô�´ð!ô�µð6îxïéô�ô�®ð$qpîxïô�©ô�ªðJîxïTô� îxïâô�¢ðAô�£îxï ô�àð7ô�áïŠt�ï pîxïMô�Œï Àt�ïMpðBô�ÿ������� ˜����¶ <ñ]n����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Dorado Hardware ManualProcessor SectionAugust 1, 198523data on A and data on B because there is insufficient time to propagate carries for anarithmetic operation. The intent is that ALUFM 168 contain the control for the "NOTA" ALU operation normally desired, while ALUFM 178 is used by BitBlt and otheropcodes that need computed ALU operations.ALU output passes to the masking logic. The mask operation determines which of twoindependent masks in ShC are applied to the data. LMask contains 0 to 15 ones startingat bit 0, RMask 0 to 15 ones starting at bit 15. The masked area(s) of ALU outputcorresponding to 1's in the mask are replaced either with zeroes or with correspondingbits from Md according to the shift-and-mask function selected. Replace-with-Mdgenerates HOLD if Md isn't ready yet, and the timing for this is the same as Md onto B(i.e., data is never ready sooner than the second instruction after the Fetch_).Masked data is routed onto Pd, then sent to the destination specified by LC.Note: The Pd input multiplexor is used to carry out masking, so it is illegal to combine ashifter operation with an ALU shift in the same instruction.Three functions load ShC: RF_A and WF_A treat A[8:15] as a Mesa field descriptor andtransform the bits appropriately before loading ShC; they also load ShC[2:3] from A[2:3]. ShC_Ballows an arbitrary value to be placed in ShC (used by BitBlt).Microcode for the Mesa RF (Read Field) and WF (Write Field) opcode is shown as an exampleof the use of the shifter. In these examples, a and b are the two operand bytes for the opcode, asdiscussed in "Instruction Fetch Unit." RF and WF both take a pointer from the top of the stackand add a to it as a displacement. RF fetches the word, and pushes the field specified by b ontothe stack; WF fetches the word, and inserts a field from the rightmost bits of the word in thesecond position of the stack into it, then restores the word to memory.RF:IFetch_Stack, TisId;*Calculate the pointer. a replaces BR[MemBase] (MDS);*this value is then added to Stack to compute the*address for the pointer.Stack_Md, RF_Id;*IFU supplies b, the field descriptorIFUJump[0], Stack_ShiftLMask;*Right-justify & mask the field, IFU to next instructionWF:T_(IFetch_Stack&-1)+T, TisId;*Start fetch of word containing fieldWF_Id, RTemp _T;*IFU supplies b, the field descriptorT_ShMdBothMasks[Stack&-1];IFUJump[0], Store_RTemp, DBuf_T;The shift controls come directly from FF if ASEL=7 (a shift) and if BSEL = 4, 5, 6, or 7,selecting a constant. This specifies complete shift control in the instruction which does the shift,so ShC doesn't have to be loaded in a previous instruction, and ShC isn't clobbered, so io tasksdon't have to save and restore it. When BSEL controls a shift in this way, the B source is forcedto be Q.The mask operations are as follows:ÿ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������î¶ïfªpô�€î#$qî5¾pô�îG?ïfñîxïbô�©ô�ªð?îxï`Sô�ð$ô�ž ï_Æt�ï`Spð!îxï^‰ô�Äð1ï]üt�ï^‰p ô�Åîxï\¾ô�ð*îxïYLô�šô�›ð3îxïWô�ˆðWîxïU·ô�¸ð,ô�¹ð&îxïSìô�©ðVîxïR"ô�õð@ô�öîxïPWô�‰ô�ŠðBîxïNŒô�ðPîxïKðLîxïG¨qpô�†ô�‡ðQîxïEÞô�ð<î¶ïBlô�ÑðQô�Òî¶ï@¡ô�…ð'ô�†ð9î¶ï>×ô�ð?î¶ï;eô�˜ô�™ð:î¶ï9šô�ð/w�pw�pô�‚ð%î¶ï7Ðô�ô�ŽðFî¶ï6ô�‡w�pð>ô�ˆw�pî¶ï4:ô�¦ðOô�§î¶ï2pô�ðGî·ï.Útî;ô�€î$„ ô�w�tî$„ï-3ð1î$„ï+¯î:ï*ô�€î$„ô� w�tî:ï(`ô�€î$„ ô�ð*î·ï%Xî;ô�€î$„ô�î:ï#±ô�€î$„ô� w�tî:ï" î:ï bî¶ïðpô�¾ð5ô�¿ð$î¶ï&ô�šô�›ðPî¶ï[ô�Ÿ ô� ðRî¶ï‘ô�Žðbî¶ïÆô�î¶ïûpð#ÿ�����������¶´<ñTW:������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Dorado Hardware ManualProcessor SectionAugust 1, 198524Table 12: ALUF Shift Decodes ALUF[0:2]*0ShiftNoMask1ShiftLMaskmasked bits on the left-hand-side of the word replaced with 0's2ShiftRMaskmasked bits on the right with 0's3ShiftBothMasksmasked bits on both sides replaced with 0's4ShMdNoMaskunused (falls out of decoding)5ShMdLMaskmasked bits replaced with Md6ShMdRMaskmasked bits replaced with Md7ShMdBothMasksmasked bits replaced with Md*ALUF[3] selects the ALU operation in either ALUFM 168 or 178ShiftLMask implements right shift and load-field operations; ShiftRMask implements left shift;ShiftBothMasks deposits the selected field into a word of zeroes; ShMdBothMasks deposits theselected field into data coming from memory; and ShiftNoMask implements various cycleoperations.Note: On a shift the ALU branch conditions apply to the unmasked ALU output.Hold and Task SimulatorThe hold and task simulators are provided for hardware checkout.HOLDSIM (page 26 of the ProcL) is a recirculating shift register in which the presence of a 1 in bit 7causes HOLD two instructions later. For example, Hold&TaskSim_2008 will complete three instructionsafter the Hold&TaskSim_, HOLD the next cycle, and HOLD every seventh instruction (i.e., every eighthcycle) thereafter. Since this register cannot be loaded with all 1's and since its clocks are not disabled byHOLD, HOLD of infinite duration is impossible.To disable the Hold or Task simulator, their register must be loaded with 0.TASKSIM (page 26 of the ProcH) is a seven-bit counter which determines the number of cycles before atask wakeup occurs. The task selected for this wakeup is number 12. Whenever TASKSIM is loadedwith a non-zero value, it counts up to 1778, then generates a wakeup request when the counter overflowsto 2008. The wakeup request remains true until TASKSIM is reloaded.ÿ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������î¶ïfªpô�€î#$qî5¾pô�îG?ïfñî —ï`Ssô�XîÙï^¬tô�îÙï]( î:ï[¤�î¼ î:ïZ �î¼ðJî:ïXœ�î¼ð,î:ïW�î¼ð:î:ïU”�î¼ð)î:ïT�î¼ð&î:ïR‹�î¼ð&î:ïQ�î¼ð*î:ïMÿð5ïMr�ïMÿïMr�î¶ïJ±pô�»ðWô�¼î¶ïHæô�´ð*ô�µð2î¶ïGôôð=î¶ïEQ î¶ïAßô�ð9qpî¶ï<Æsî¶ï9Tpð@î¶ï5âô�›ð[ô�œ î¶ï4ô�Œð$ô�ï3Št�ï4pð!î¶ï2Lô�…ð&ô�†ð>î¶ï0‚ô�‡ð^ô�ˆî¶ï.·ô�ð.î¶ï+EðLî¶ï'Óô�„ô�…ðFî¶ï& ô�£ðDô�¤î¶ï$>ô�ˆð*ï#±t�ï$>pð!ô�‰î¶ï"sô�ï!æt�ï"spð=�������B����¶!ÃAFH�ã����������������������������������������������������������TNIACIALinkJCNFFIFUAdQ[14]MIRTPCITPCOBNPCCIACIAIncLinkBLinkBMuxIMFFReadyBNTWakeupNextCTaskCTDTLinkAd<rrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrr>>>>>rrCPStrbStartCycleStartCycleStartCycleSwitchT0T0T0T2T0SwitchT0T1T0TPCBypassPh3%4PErT0T2T3T2RSTK[2:3]rCBrRIMIMOutTPCAdT0T1T2T3T4T4T3T2T1T0T0T1T2T3T4T4T3T2T1T0T0T1T2T3T4T4T3T2T1T0T0T1T2T3T4CPRegUseCPRegRAPEncTLink*TPC*+1rrProcessorControlTPIMOutWriteT3WriteT3D1Control.silFigure 5Control Section9/5/79��î6ttïWƒðîAIï^.ðî=fï^.ðî:ï^.ðî7Iï^.ðî3ï^.ðî/:ï^.ðî0åï[fþ�$9î4;ï[fþ�$9î7ï[fþ�$9î:åï[fþ�$9î>;ï[fþ�$9îAï[fþ�$9î8eïdÙðî7ïaîþU�$î6tïSðî7ïT-þ�$Çî6PïJ-ðî7ïQÑþr�$î<ïGfþ�$ î8eïC‚ðî9Éï@»þ�$9î7ïVCþ«�$î>;ï@»þ�$«î<ï9‚þ�$Çî;Pï8eðî:{ï0žðî<ï7%þÇ�$îCÉï7%þ�$*ìî3ï.Ðþ9�$î9Éï,ºþ�$9î6—ï",ðî7ï ìþ V�$îDæï ìþ�$BBî.¬ïM_þ �$î.¬ï&þ�$'sî*:ï&þ�$9î0Âïðî+WïsþÇ�Gî.ïÖðî"sï–þÈ�$î+åï,ºþ�$9î*Èï,ºþ�$9î)¬ï,ºþ�$9î(ï,ºþ�$9î.¬ïdðî<ï;—þU�$îAï^.ðî«ï[fþ�$9î«ïaîþ'�$î$ïWƒðîrïP&þÈ�$îyïLôðîrïNþ�$ÇîHïWƒðîïTtþÇ�Gî :ïO þ9�$îïFIðîïBôþ�$Çî–ïA×ðîVï;-ðî«ï4‚ðî/:ïþ�$9î2ïþ�$Çî,sï#Hþ�$Çî7ï#Hþ�$Çî*:ï*þ�$9î<ï>‚þ�$9î9ÉïE-þ�$9î:åï_Øþ�$9î7ï_Øþ�$9î>;ï_Øþ�$UîAï_Øþ�$9î«ï_Øþ�$9î«ïXŸþ�$ÇîrïSþ�$«îVï6,þ�$9î7ïY.þ�$9î Vï[þ«�Gîsï9íþŽ�$îï9íþ�$$îïMíþ9�$îäï[Cþ�$]îäï]|þÇ�$î¬ï@»þ�$äîï@—þ²�$îÈïJ þ�$ÎîÈïK´þä�$îïGôþ�$9îrï[Cþ�$]î9ï]|þ]�$î9ïKØþ�$Èî9ïK´þ9�$î9ï8eþ�$rî0z|ï ðîäï5 ðî«ï5 ðîÈï2çðîï;Ëðîï?®ðîïD¯ðî:ïFèðîäïFèðîäïJËðîäïOËðîïQvðî«ïQvðîïUZðîVïX!ðîïX!ðî äïX!ðîï\“ðî0WïX!ðî3¬ïX!ðî7ïX!ðî:WïX!ðî=ïX!ðîAïX!ðîAï\“ðî=ï\“ðî:Wï\“ðî7ï\“ðî8¬ïb°ðî7ïUèðî7ïPèðî7ïMðî7ïHðî7ïD ðî;tïD ðî=ï=vðî9;ï=vðî;tï;=ðî;tï6<ðî;tï.uðî;tï"Êðî9;ï)uðî4Éï)uðî2ï"Êðî7ï"Êðî7ï ðî7ïðî1sïXðî1sïtðî+åïtðî+åïðî+åï ðî.ï"Êðî)¬ï"Êðî)¬ï'<ðî(ï)uðî)ï)uðî*:ï)uðî+Wï)uðî.¬ï;ðî.¬ïíðî.¬ï WðîïLvðîïJ=ðî&WïKZðî4ïKZðî0åï)Aþ•�$î4ï%‘ðîï>Éþä�GîÈï>íþ�$Îî"sïºþ�$-î:ï;Ëðîäï9ðîsï<Iþ�$ÇîVï/ìþ³�$î%Èuïðî¹ï7×ð î äï>‚ð îïQð îrïIŸðî9ïA×ðîïLôðîÈïWƒðî3¬ïSðî3¬ïJ-ðî4Éï@-ðî8ï8eðî8ï0žðî5WïdÙðî0WïFØð î%Èï",ðî äïT-ðî7ïeÑþr�$î;tïdÙþ�$î7ïdµþ•�$î7ïdµþ�$@îrïW_þ�$@î9ïMíþr�$î«ïLôþ�$î9ïLÑþ•�$î9ïLÑþ�$@îäïBÐþr�$îVïA×þ�$îäïA´þ•�$îäïA´þ�$@î:ï<%þr�$î¬ï;-þ�$î:ï; þ•�$î:ï; þ�$@î)óï#%þ��$î.óï",þ�$î)óï"þ$�$î)óï"þ�$@î*:ïzþr�$î.¬ïþ�$î*:ï]þ•�$î*:ï]þ�$@î/Éïzþr�$î4;ïþ�$î/Éï]þ•�$î/Éï]þ�$@î5Wï#%þr�$î9Éï",þ�$î5Wï"þ•�$î5Wï"þ�$@î9Éï1—þr�$î>;ï0žþ�$î9Éï0zþ•�$î9Éï0zþ�$@î9Éï9^þr�$î>;ï8eþ�$î9Éï8Bþ•�$î9Éï8Bþ�$@î5WïK&þr�$î9ÉïJ-þ�$î5WïJ þ•�$î5WïJ þ�$@î5WïN{þ�$@î5WïT þr�$î9ÉïSþ�$î5WïRíþ•�$î5WïRíþ�$@îäïWƒþ�$îrïX|þr�$î:ïT¼þ�$Çî«ïT¼þ�$ÇîrïJ-þ�$Çî7|ï'<ðî/:ï þ�$9î#ï yþ"s�$î6tïGþ«�Gî8¬ï@tþ«�Gî9ÉïNŸþ�$î7ïKJþ�$Uî7ïGfþ�$Çîï?þ�$Çîsï8eþ�$Çî2ï%Èþ�Gî9Éï.Ðþ9�$î4;ï,sþ«�Gî,sïeþ�$Çî7ïeþ�$Çî2ïºþ�$Çî5WïO˜þr�$î9;ïbþ�$Çî9;ïeõþ�$Çî+Wïþ V�Gî#ï.ÐþV�$î)ï%Èþ«�Gîï8þr�Gî,sïºþ�$Çî.ïëþ9�$î0WïÖþ�$9î.ï²þ]�$î.ï²þ�$]î-úïþ¤�$î0zïþ�$¤î-úïþ¤�$î-úïþ�$¤î/:ïþ�$9î7ï&þ�$Çî5Wï)Ðþr�$î9Éï(×þ�$î5Wï(×þ�$î5Wï(³þ•�$î5WïN{þ•�$îrïW_þ•�$î :ïLôþ�GrîÈï@—þ«�$îuïWƒðî5žï)Ðþ�$�kî5žï*þ•�$î5åï*:þ�$�Gî:Wï)Aþ�$@î5åï*^þ•�$î5žïO˜þ�$�kî5žïOßþr�$î:ïNÃþ�$@î9ÉïNÃþ�k�$î5åïOßþ�$�kî5åïP&þ•�$î:WïO þ�$@î:ïO þ�k�$î7ïP&þ�$ëî7ï*^þ�$]îVïIæþŽ�Gîï;-ðî4Éïðî:Wï",ðî$ï,ºðî$ï+žðî9Éï(úþ�k�$î:ï(úþ�$@î:ï)Aþ�k�$î'sï,sþŽ�Gî0žïÏþ¹�$î?Wïòþ�$*Èî-ï[Cþ�$]î-|ïX!ðî,ºtï^.ðî,sï[þ:�GîAïaîþ9�$î>;ïc þ«�$îïW_þ•�$î&åuï%ðî(×tï(×ðî(ïNŸðî+žïO þ ¹�$îrï ðîäï ðî Vï ðîÈï ðî:ï ðîïòðî¬ïòðî:ïòðîÈïòðî Vïòðî:ï Öðî¬ï Öðîï Öðî#ï Öðî(ï Öðî0åï ¹ðî,sï ¹ðî(ï ¹ðî#ï ¹ðîï ¹ðî(ïðî,sïðî0åïðî5Wïðî9ÉïðîBï€ðî>;ï€ðî9Éï€ðî5Wï€ðî0åï€ðî9Éïdðî>;ïdðîBïdðîGïdðîK‘ïdðîÖï yþÇ�$î Gï yþÇ�$î¹ï yþÇ�$î+ï yþÇ�$î+ï]þÇ�$î¹ï]þÇ�$îï]þÇ�$îï@þÇ�$îï@þÇ�$îï]þÇ�$î ï@þÇ�$î ï $þÇ�$î$óï $þÇ�$î$óï@þÇ�$î)eï $þÇ�$î)eï þÇ�$î-×ï þÇ�$î-×ï $þÇ�$î2Iï þÇ�$î2IïëþÇ�$î6»ïëþÇ�$î6»ï þÇ�$î;-ïëþÇ�$î;-ïÎþÇ�$î?žïÎþÇ�$î?žïëþÇ�$îDïÎþÇ�$îH‚ïÎþÇ�$îFï þ�$[î#ï þ�$!Vî*Èïðî%Èuï+ðî;ttï<×ðîVïQfðî6 ï(×ðî6tïNŸðîVï0þ�$äî<ï&þ�$ î;-ï3óðî0åï)eþ�$«î"sï1 þÏ�$î<ï5žþ�$Çî;t|ï2|ðî,sïzþ�$Îî+åïXðî Èï%þ«�$î¬tï,ð î:ïHðî9;ïh™þÈ�$îsïWƒþ�$îïWƒþ�$îïX|þr�$î5Wï,ºþ�$9î3ï&þ�$î*^ï",ðî<ï1ºþ�$«î8uïM;ðî8¬ïLðî8ï'sðî8¬ï&Wðî@tïòð î$órïrðî"ºï€ðîAuï�Õðÿ�������Òä��r�ÕH_gç��110001000BRANCH CONDITIONALU = 0ALU < 0FUNCTIONSubroutine ReturnunusedRead TPCWriteTPCunusedunusedGlobal CallLong Jump/CallR is resultTNIA:01234567JCNADDRESS BITSADDRESS BITSADDRESS BITS01111Return001111BRANCHCONDITIONADDRESS BITSRETURNFUNCTIONNUMBERNEXTRead Instruction MemoryWrite Instruction MemoryIFU JumpLocal Jump/CallNext Address FormationJCN[5:7]0123456JCN[2:4]0123456Conditional BranchReturnRSTK[2:3]0123RSTK.0RSTK.1RSTK.2RSTK.3ALUF.0ALUF.1ALUF.2ALUF.3BSEL.0Par.16BSEL.1BSEL.2LC.0LC.1LC.2ASEL.0ASEL.1ASEL.2BLOCKFF.0FF.1FF.2FF.3FF.4FF.5FF.6FF.7Par.17JCN.0JCN.1JCN.2JCN.3JCN.4JCN.5JCN.6JCN.77when B_Link executed infollowing microinstruction.ConditionalJump/Callotherwise, it is a jump.before any modification of TNIA by branchA long, local, or conditional branch is a call iff,write the right half.Good (odd) parity is writtenif RSTK.1 is 0, else bad (even)parity is written.The most significant bit ofdata is RSTK.2 and the leastsignificant 16 bits are B[0:15].JCN.7JCN.6JCN.5JCN.4JCN.3JCN.2JCN.1JCN.0FF.0FF.1FF.2FF.3FF.4FF.5FF.6FF.7BLOCKRSTK.0RSTK.1RSTK.2RSTK.3ALUF.0ALUF.1ALUF.2ALUF.3BSEL.0BSEL.1BSEL.2LC.0LC.1LC.2ASEL.0ASEL.1ASEL.2RSTK.2B.0B.1B.2B.3B.4B.5B.6B.7B.8B.9B.10B.11B.12B.13B.14B.15Data appears on B[7:15]Cnt=0&-1 (decrement Cnt after testing)R < 0R odd-or-FF6061626364656667--Address is in Link.Address is in Link.Figure 6Carry'IOAtten' (non-emulator) -or- Reschedule (emulator)RSTK.3 is 1 to writethe left half of IM, 0 to0001x111undefined234567891011121314151514131211109876543223456789101112131415151413121110987654322345678910111213141515141312111098765432CIA[2:3]CIA[2:3]CIA[2:3]Link[2:15]CIA[2:9]JCN[2:7]JCN[2:7]000000FF[0:7]JCN[4:7]CIA[2:9]RJCN[3:4]0JCN[1:2]JCN[3:4]InstrAddr[4:13]15141312111098765432CIA[10:15] + 1CIA[2:9]Loaded into Link by Call, Return, or IFUJumpconditions or dispatches, TNIA[12:15] is 0;# 000xD1Branching.sil# 1116/26/80Overflow��îäï_ðîäïZðîäïUðîäïPðîï_ðîïZðîïUðîVïUðî ïUðîÈuï=fðîÈtï;»ðîÈï:žðî�uï.óðîrtï-Iðîrï,,ðîrï(×ðîrï'ºðîrï+ðîrï)óðîÈpïZðîÈïUðîFuïPJðî*ÈpïaÊðîäïbXðîïbXðîVïbXðî ïbXðîÈïbXðî�ïbXðî9ïbXðîrïbXðîäïaÊþ�Gî ïdðîäï_ðîäïZðîÈuïUJðîäpïKðîïKðî�ïKðî9ïKðîrïKðîÈïKðîäïFØðîïFØðîVïFØðîrïFØðî9ïFØðî�ïFØðîuïPJðî�ïO-ð îïPJðîVïKØðîVïJ»ðî �ïFIðî ïGfðîrtï&žðîrïðîÈpïFØðîÈï_ðîrïŽðîVuï=fðî �tï;»ðî �ï:žðî �ï9‚ðî �ï8eðî �ï7Iðî �ï6,ðî �ï5ðîVuï.óðî �tï-Iðî �ï,,ðî �ï+ðî �ï)óðî �ï(×ðî �ï'ºðî �ï&žðî«uï?žðî«ï1,ðîï',ð î :tï$óðî :ï",ðî :ïeðî :ïðî'sï#Öþ�$î+åï#Öþ�$î0Wï#Öþ�$î4Éï#Öþ�$î9;ï#Öþ�$î=ï#Öþ�$îBï#Öþ�$îFï#Öþ�$î#ï&zþ(�$îKï$eþ�$9î#ï$Aþ(%�$î#ï$Aþ�$]î#ï$óðî(ï$óðî,sï$óðî0åï$óðî5Wï$óðî9Éï$óðî>;ï$óðîBï$óðîGï$óðî#ï!zþ�$]î#ï!zþ(%�$îKï!žþ�$9î#ï#³þ(�$îFï!þ�$îBï!þ�$î=ï!þ�$î9;ï!þ�$î4Éï!þ�$î0Wï!þ�$î+åï!þ�$î'sï!þ�$î'sïHþ�$î+åïHþ�$î0WïHþ�$î4ÉïHþ�$î9;ïHþ�$î=ïHþ�$îBïHþ�$îFïHþ�$î#ï ìþ(�$îKïÖþ�$9î#ï³þ(%�$î#ï³þ�$]î#ïìþ�$]î#ïìþ(%�$îKïþ�$9î#ï%þ(�$îFïþ�$îBïþ�$î=ïþ�$î9;ïþ�$î4Éïþ�$î0Wïþ�$î#ï",ðî(ï",ðî,sï",ðî1sï",ðî5åï",ðî:Wï",ðî>;ï",ðîBï",ðîGï",ðî#ïeðî(ïeðî-ïeðî1sïeðî5åïeðî:Wïeðî>ÉïeðîC;ïeðîH;ïeðî#ïðî(ïðî-ïðî1sïðî5åïðî:Wïðî>ÉïðîC;ïðîGïðî �ïðîï!åðîï ÈðîÈpïP‘ðîÈïNæð î*Ètï?žðî*ÈïA×ð)î*ÈïBôð3îïðî!åïHðî!åï+ðî!åïðî5åïHðî5åï+ðî5åïð î«ï€þ�$îï€þ�$îï€þ�$îï€þ�$îsï€þ�$îäï€þ�$î!Vï€þ�$î%Èï€þ�$î9ïëþ�$]îJtï ðîFï ðîAï ðî=ï ðî8¬ï ðî4;ï ðî/Éï ðî*Èï ðî.¬ï€þ�$î3ï€þ�$î7ï€þ�$î<ï€þ�$î@tï€þ�$îDæï€þ�$îIXï€þ�$îMÊï þ�$9î*:ï€þ�$î9ï$þK‘�$î9ïëþK‘�$î9ïëþK‘�$î9ï$þK‘�$î*:ïþ�$îMÊïþ�$9îIXïþ�$îDæïþ�$î@tïþ�$î<ïþ�$î7ïþ�$î3ïþ�$î.¬ïþ�$î9ïëþ�$]î%Èïþ�$î!Vïþ�$îäïþ�$îsïþ�$îïþ�$îïþ�$îïþ�$î«ïþ�$îÇï ðî9ï ðî«ï ðîï ðîï ðîï ðî"sï ðî&åï ðîÇï ðîÇïðî9ïðî«ïðîïðîïðîïðîsïðî!åïðî&Wïðî*Èïðî/:ïðî4;ïðî8¬ïðî=ïðîAïðîEtïðîIæïðîÇïÖðîÇïÖðîÈïÖðî9ïÖðî«ïÖðîïÖðîïÖðî#ïÖðî'sïÖðî+åïÖðî0WïÖðî4;ïÖðî8¬ïÖðî=ïÖðîAïÖðîFïÖðîJtïÖðîï#ðî'sïþ�$î+åïþ�$îÈï8eð&îÈï7IðîÈï6,ðî äuï=fðî9ï=fðî9tï;»ðî9ï:žðî9ï9‚ðî9ï8eðî9ï7Iðî9ï6,ðî9ï5ðî9ï3óðî rï3óðîï$óðîïdðî$¬rïÇðîÈtï9‚ðîÈï5ð2îïHðîï+ðîäpïBðîïBðîïBðî ÖïBðî VïBðî�ïBðî9ïBðîrïBðîÈïBð î%:ï`Ñþ�$îDXï^¼þ�$9î%:ï^˜þA�$î%:ï^˜þ�$]î'sï^¼þ�$�Žî+åï^¼þ�$�Žî.ï^¼þ�$�Žî0Wï^¼þ�$�Žî2ï^¼þ�$�Žî4Éï^¼þ�$�ŽîDXï^¼þ�$�ŽîBï^¼þ�$�Žî?æï^¼þ�$�Žî=ï^¼þ�$�Žî;tï^¼þ�$�Žî9;ï^¼þ�$�Žî&Wtï]ðî(ï]ðî*Èï]ðî-ï]ðî/:ï]ðî1sï]ðî3¬ï]ðî5åï]ðî7ï]ðî9Éï]ðî<ï]ðî>;ï]ðî@tï]ðîBï]ðîBïXðî@tïXðî>;ïXðî<ïXðî9ÉïXðî7ïXðî5åïXðî3¬ïXðî1sïXðî/:ïXðî-ïXðî*ÈïXðî(ïXðî&WïXðî9;ïY¼þ�$�Žî;tïY¼þ�$�Žî=ïY¼þ�$�Žî?æïY¼þ�$�ŽîBïY¼þ�$�ŽîDXïY¼þ�$�Žî4ÉïY¼þ�$�Žî2ïY¼þ�$�Žî0WïY¼þ�$�Žî.ïY¼þ�$�Žî+åïY¼þ�$�Žî'sïY¼þ�$�Žî%:ïY˜þ�$]î%:ïY˜þA�$îDXïY¼þ�$9î%:ï[Ñþ�$î%:ïVÑþ�$îDXïT¼þ�$9î%:ïT˜þA�$î%:ïT˜þ�$]î'sïT¼þ�$�Žî+åïT¼þ�$�Žî.ïT¼þ�$�Žî0WïT¼þ�$�Žî2ïT¼þ�$�Žî4ÉïT¼þ�$�ŽîDXïT¼þ�$�ŽîBïT¼þ�$�Žî?æïT¼þ�$�Žî=ïT¼þ�$�Žî9;ïT¼þ�$�Žî7ïT¼þ�$�Žî&WïSðî(ïSðî*ÈïSðî-ïSðî/:ïSðî1sïSðî3¬ïSðî5åïSðî7ïSðî9ÉïSðî<ïSðî>;ïSðî@tïSðîBïSðîBïNŸðî@tïNŸðî>;ïNŸðî<ïNŸðî9ÉïNŸðî7ïNŸðî5åïNŸðî3¬ïNŸðî1sïNŸðî/:ïNŸðî-ïNŸðî*ÈïNŸðî(ïNŸðî&WïNŸðî9;ïPJþ�$�Žî?æïPJþ�$�ŽîDXïPJþ�$�Žî4ÉïPJþ�$�Žî2ïPJþ�$�Žî0WïPJþ�$�Žî.ïPJþ�$�Žî+åïPJþ�$�Žî'sïPJþ�$�Žî%:ïP&þ�$]î%:ïP&þA�$îDXïPJþ�$9î%:ïR_þ�$î%:ïM_þ�$îDXïKJþ�$9î%:ïK&þA�$î%:ïK&þ�$]î'sïKJþ�$�Žî)¬ïKJþ�$�Žî+åïKJþ�$�Žî.ïKJþ�$�Žî0WïKJþ�$�Žî2ïKJþ�$�Žî4ÉïKJþ�$�ŽîDXïKJþ�$�ŽîBïKJþ�$�Žî?æïKJþ�$�Žî=ïKJþ�$�Žî;tïKJþ�$�Žî9;ïKJþ�$�Žî7ïKJþ�$�Žî&WïIŸðî(ïIŸðî*ÈïIŸðî-ïIŸðî/:ïIŸðî1sïIŸðî3¬ïIŸðî5åïIŸðî7ïIŸðî9ÉïIŸðî<ïIŸðî>;ïIŸðî@tïIŸðîBïIŸðîBïE-ðî@tïE-ðî>;ïE-ðî<ïE-ðî9ÉïE-ðî7ïE-ðî5åïE-ðî3¬ïE-ðî1sïE-ðî/:ïE-ðî-ïE-ðî*ÈïE-ðî(ïE-ðî&WïE-ðî7ïFØþ�$�Žî9;ïFØþ�$�Žî;tïFØþ�$�Žî=ïFØþ�$�ŽîBïFØþ�$�ŽîDXïFØþ�$�Žî4ÉïFØþ�$�Žî2ïFØþ�$�Žî0WïFØþ�$�Žî.ïFØþ�$�Žî+åïFØþ�$�Žî'sïFØþ�$�Žî%:ïF´þ�$]î%:ïF´þA�$îDXïFØþ�$9î%:ïHíþ�$î)¬ïY¼þ�$9î)¬ïT¼þ�$9î)¬ïFØþ�$9î%ïZJðî%ïUJðî%ïGfðî2IïKØð î)¬ï^¼þ�$�Žî7ï^¼þ�$9î,sï_Jðî;tï_Jðî7ïY¼þ�$9î.¬ïZJðî7×ïZJðî:ïZJðî<IïZJðî>‚ïZJðî@»ïZJðîBôïZJðî;tïT¼þ�$9î0åïUJðî=fïUJðî)¬ïPJþ�$�Žî7ïPJþ�$9î-ïPØðî;tïP&þ9�$îBïPJþ�$9î;tïPJþ�$9î=ïPJþ�$9îBôïPØðî=ôïPØðî<IïPØðî7IïPØðî?æïFØþ�$9î@-ïGfðî/:ïGfðîC‚ï*:ðîAIï*:ðî?ï*:ðî<×ï*:ðî:žï*:ðî8eï*:ðî6»ï*:ðî4‚ï*:ðî2Iï*:ðî0ï*:ðî-×ï*:ðî+žï*:ðî)eï*:ðî',ï*:ðî:ï+åþ�$�Žî<Iï+åþ�$�Žî>‚ï+åþ�$�Žî@»ï+åþ�$�ŽîBôï+åþ�$�ŽîE-ï+åþ�$�Žî5žï+åþ�$�Žî3eï+åþ�$�Žî1,ï+åþ�$�Žî.óï+åþ�$�Žî,ºï+åþ�$�Žî*ï+åþ�$�Žî(Hï+åþ�$�Žî&ï+Áþ�$]î&ï+ÁþA�$îE-ï+åþ�$9î&ï-úþ�$î7×ï+åþ�$9î7×ï+Áþ�$î:åï,sðî,ºï,sðî&pï.óð,î*Ètï@»ð+î9uïO-ðî9ÉïðîïNðî:åï9ðîÈtï3óð�������Xä��99K´c. %��������������������������������������������������������������������������������������������t2t1dt1ct1bt1at1t0t2t1dt1ct1bt1at1t0t4t3t2t1t0t4t3t2t1t0Phase 0Phase 0Phase 4Phase 3Phase 2Phase 1Phase 0Phase 4Phase 3Phase 2Phase 1Phase 0CTD_CTASKWRITE TLINKMIR LoadedqqqqMIR LoadedCTD_CTASKCTD_CTASKMIR LoadedMIR LoadedMIR LoadedqqqReturn:qMIR LoadedMIR LoadedqqMIR LoadedMIR LoadedqqqqqqqNormal:StartCyclePhase 0StartCycleStartCyclePhase 0StartCycleCIAInc_CIA+1CTD_CTASKCIAInc_CIA+1StartCycleLINK_CIAIncStartCycleCIAInc_CIA+1LINK_CIAIncLINK_CIAIncCTD_CTASKLink clobbered.LINK_CIAIncCIAInc_CIA+1StartCycleqqMIR LoadedqqqMIR LoadedWRITE TLINKCTD_CTASKPhase 0Phase 1Phase 2Phase 3Phase 4t0t1t1at1bt1ct1dt2CTD_BMux[12:15]qt2t1dt1ct1bt1at1t0Phase 4Phase 3Phase 2Phase 1Phase 0CTD_CTASKWRITE TLINKMIR LoadedqqqMIR LoadedqqStartCycleCIAInc_CIA+1LINK_CIAIncTPCI_TNIA (Link)Write TPCClear TLinkXqqRSTK[1]=0->odd1->evenparityTPIMO_IMTPIM Mux _ IMTPIM Mux _ TPCRSTK[3]=0->right half1->left halfD1InstTiming.silFigure 7Instruction Timing10/8/79Read RMALU operaionWrite RM<><><>Calculate next address<>Fetch next instructiont-1t-2qMIR LoadedFetch Instructionq<>Write IM:Read IM:Read TPC:Write TPC:B[12:15] = address (task number). Data from Link. Link clobberedB[12:15] = address (task number). Data to BLink. Data available on B next cycle ONLYLink = address, RSTK[2:3] = 9-bit byte, data to BLink. Data available on B next cycle ONLY. Link clobbered.Link = address, RSTK[2],,B[0:15] = data,Fetch next instructionLink _ CIAIncWrite TLinkFetch next instructionWrite strobeFetch next instructionFetch next instructionFetch next instructionLink_CIAIncTPIMO_TPCWrite TLinkLink_CIAIncCTD_CTASKCTD_CTASKModify address by b.c.Link_CIAIncCTD_B[12:15]��î?ætï5žðî7ï5žðî.ï5žðî%:ï5žðîVï5žðîrï5žðî ï5žðî?æïE-ðî7ïE-ðî.ïE-ðî%:ïE-ðîVïE-ðîrïE-ðî ïE-ðî.ïUJðî%:ïUJðîVïUJðîrïUJðî ïUJðî?æïc.ðî7ïc.ðî.ïc.ðî%:ïc.ðîVïc.ðîï`õðî¬ïRíþ@�$îïRíþ«�$îÈïSðî/ÉïC‚ðî&åïC‚ðîïC‚ðîïC‚ðîÈïC‚ðî/Éï3óðî&åï3óðîï3óðîï3óðîÈï3óðî.¬ï1ºþ�$«î.¬ï,,þ�$Uî.¬ï.AþÈ�$îBï,,ð î@tï1,þ�$9î@tï.Ðþä�$î@tï.eþ�$«îIXï.eþ�$îAï.óðîBï+ð î@tï+zþÎ�$î?æ|ï)uðî@tï+žþ�$9î?æï/ðîäï3Ðþ;t�$î@tï3óþ�$«î?æï>’ðî@tï;-þ�$9î?æï9ðî@tï; þÎ�$îBtï:žð îIXï=ôþ�$î@tï=ôþ�$«î@tï>^þä�$î@tï@»þ�$9îBï;»ð î@tïC‚þ�$«îäïC_þ?W�$îïKJð îäï`õþ�$«î%Èï`õþ�$«î.¬ï`õþ�$«î7ï`õþ�$«î@tï`õþ�$«îïXŸð î0åïXŸð îBïXŸð î7ï]Ÿþ�$Çî7×ï^˜þd�$î#Öï^˜þÎ�$îäï^˜þÎ�$î%Èï^.þ�$«î@tïY þÎ�$î@tïY þ�$]î?æ|ïWðî.ïWðîäïY þ�$îVïWðîäïY.þ�$9î.¬ïY.þ�$9î.¬ïY þ«�$î.¬ïSþ�$«î%ÈïSþ�$«îäïSþ�$«îïSþ�$«îïSþ�$«îäïRíþ5W�$îïC‚þ�$«îïC‚þ�$«îäïC‚þ�$«î%ÈïC‚þ�$«î.¬ïC‚þ�$«î7ïC‚þ�$«î7ï3óþ�$«î.¬ï3óþ�$«î%Èï3óþ�$«îäï3óþ�$«îï3óþ�$«îï3óþ�$«îrpïU‘ðîïPJþ�$9îäïPJþ�$9îäïMíþä�$îäïM‚þ�$«î%ÈïM‚þ�$îïNþ�$9î |ïKèðîïMíþÎ�$î VtïM‚ð î Vï;»ð îï<%þÎ�$î |ï: ðîï<Iþ�$9îï,ºþ�$9î ï*‘ðîï,—þÎ�$î Vtï,,ð îïJ-ð îäïJ˜þÎ�$îV|ïH’ðîäïJ»þ�$9îrïN!ðîVïN!ðîï@»þ�$9îï1,þ�$9îrï>’ðîrï/ðî :ï@-þ�$�Žî :ï@ þ«�$î+åï@ þ�$�²î.ï;=ðî.¬ï=fþ�$9î.¬ï=ÐþÈ�$î9ïW¦þIX�$î9ïIÂþIX�$î9ï:4þIX�$î€ï(lþIX�$îïK´þÈ�$î9ï3þIX�$î9ïWíþIX�$î9ïJ þIX�$î9ï:{þIX�$î9ï(³þIX�$î9ïzþIX�$î.ï/ðî%Èï,—þ �$î%Èï,—þ�$�²îïKJþ�$îrpïbçðî&åtï`õð î0Wï`õðî8¬ï`õð îïSð îïSðî&åïSð îVïO-ðî0åïY¼ð î@tï]Ÿþ�$ÇîVï?žðî8¬ïC‚ð î-ï;»ðî8¬ï3óð îVï0ðî+åï/‚ðî?Wï0ðîBïY¼ð î?ïGfðî?WïHðîVïÖðî8¬ï",ð î.|ï<ðîrï<ðîïóþ�$«î Vtïdð îïÏþÎ�$î |ïÊðîïóþ�$9îï",þ�$«îï",þ�$«îäï",þ�$«î%Èï",þ�$«î.¬ï",þ�$«î7ï",þ�$«î@tï",þ�$«îäï"þ;t�$î?æï<ðî@tïÖþ�$9î?æïðî@tï³þÎ�$îBtïHð îAï,ðîIXïþ�$î@tïþ�$«î@tïþä�$î@tïeþ�$9îBïdð î.¬ïzþÈ�$î.¬ïóþ�$«îÈï",ðîï",ðîï",ðî&åï",ðî/Éï",ðî ï#Öðîrï#ÖðîVï#Öðî%:ï#Öðî.ï#Öðî7ï#Öðî?æï#Öðî!VïÖðî.¬ï]þä�$î7ïþ�$�Žî7|ï<ðî7ïóþ�$«î7ïdþ�$�Žî.ï@þä�$î?Wtï+ðî6tï+ðî-ï+ðî$¬ï+ðîÈï+ðîäï+ðî �ï+ðî/:ïðî&Wïðîsïðîïðî9ïðî.ï þÈ�$îBïòð î?æï –þä�$î?æï +þ�$rîHÉï +þ�$îAï ¹ðîBïÖð î?æï@þÎ�$î?W|ï;ðî?æïdþ�$9î?WïðîVï]þ;t�$î?æïþ�$«î7ïþ�$«î.ïþ�$«î%:ïþ�$«îVïþ�$«îrïþ�$«î ïþ�$«î ï Gþ�$9î �ïðî ï $þÎ�$îÈtï ¹ð îrïHþ�$«îä|ïðî-ïðî8tïð îÈï+ðî>;ï+ðî*:ï+ðî.ïþ�$rî1sïdð î0åï€ðî$¬|ïðî%:ïHþ�$«î%Èïóþ�$«î%:ï<ðî.¬ïÖþ�$rî.ïHþ�$«î?æïHþ�$«î2×tïGfðî8ôïGôðî8ôïFØðî:WïE»ðî+åï0žðî%Èï+ð î/:ïÖðî#ÖïGfðî)eïFØþ�G9î8eïFØþ�G9î)óïGôð î)óïFØðî<uïðî#Örïrðî ÈïÇðî=uïòðîtï^.ðî+Wï^.ðî9Éï^.ðîä|ïZèðî$¬ïZèðî%ÈïZèðî%Èï^˜þG�$î2×ï^˜þr�$î6tïZèðî>Éï^˜þ«�$î7ïZèðî?WïZèðî¬tï\ƒðîäï\§þ€�$î,sï\§þ9�$îä|ïXöðî-ïXöðîótï[fðîï`õþ�$«îï`õþ�$«î rï`Ñþ9;�$îrïc.ðî ïc.ðîïY.þ�$9î |ïWðîïY þÎ�$î VtïXŸð îäï[õþ�$äî.¬ï[õþ�$9îï[õþ�$+î�ï^.ðîr|ïYÌðîï^˜þ�$îsï^˜þr�$îï\Êþ�$dîïZèðîÈïZèðîrpïGð îrï7ðîrï%Èð îäïð î tïðBî ï%ÈðVî€ï7ðmî9ïGfð(î9ïKØðîÈïO-ð îïNðî/Éï=ôðî"sï@-ðî/Éï.eðî/Éïðî/‚ï +ðî+åïÖðî6tïÖð îAï>‚ðî?Wï?žðîïY¼ð î VïY¼ð î äï[®ðî*:ï ðî!žï+ð�������hä��9òIŸbX“����������������������������������������������������������������������������������������������������������������Dorado Hardware ManualControl SectionAugust 1, 198525Control SectionThe control section interfaces the mainframe to the baseboard microcomputer or the debugging Altofor maintenance. In addition, the control section stores instructions in 4k x 34-bit (+2 parity) IM("Instruction Memory") and contains logic for sequencing through instructions and switching amongtasks.The current instruction is clocked into the MIR (Micro Instruction Register) register at t0 andexported to the processor, memory, and IFU sections for decoding. The control section itselfdecodes the JCN field, the BLOCK bit, and its own FF decodes (Wakeup, B_Link, B_RWCPReg,Link_B, TaskingOn, TaskingOff, BDispatch_B, BigBDispatch_B, Multiply, MidasStrobe_B,UseDMD, and branch conditions).The control section also exports the task number via the Next bus, which contains the task numberthat will execute the next instruction at.Figure 5 shows the overall organization of the control section. Figure 6 shows how branch controlis encoded in JCN. Figure 7 shows the timing for regular instructions and for the multi-cycle TPCand IM read/write instructions.TasksDorado provides sixteen independent priority-scheduled tasks at the microcode level. Task 17 ishighest priority, task 0 lowest. Task 17 (the "fault task") is woken by StkError and by memory mapand data error faults. Tasks 1-16 provide processing functions for I/O controllers implementedpartially in hardware, partially in firmware; the present assignment of these tasks to devicecontrollers is given in the "Slow I/O" chapter. Task 0 (the "emulator") implements instruction sets(Mesa, Alto, SmallTalk ,Cedar, Lisp, etc.). In the absence of I/O activity, task 0 (always awake)controls the processor.I/O devices usually have 2 tasks associated with them, one for a input wake-up and one for an out-put wake-up.Each task has its own program counter and subroutine return link, stored in the (task-specific) TPCand TLINK registers when the task is inactive. TPC may also be treated as a memory, so programcounters for tasks other than the current task can be read and written by a program.ÿ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������î¶ïfªpô�€î##qî5pô�îG?ïfñî¶ïa×rî¶ï^epô�ð\ô�‚î¶ï\›ô�™ðaô�šî¶ïZÐîßïZyþ�„�ïZÐ�ô�„ îÕïZyþU�ïZÐ�ô�…ð4î¶ïYî¶ïU”ô�Ìô�Íî+äïU=þU�ïU”�î0BïU=þ�„�ïU”� î7ïU=þ�ïU”�ïUs�ïU”pî¶ïSÉô�Ðð"ô�Ñð;î¶ïQþô�Œô�ð8î¶ïP4ôPðEôQî¶ïNiô�î¶ïJ÷ô�†ð[ô�‡î¶ïI-ô�ð*î¶ïE»ô�’ðOô�“î¶ïCðô�Œð"ô�ð@î¶ïB%ô�î¶ï=tî¶ï9špô�²ðZô�³î¶ï7Ðô�€ð!ô�ðBî¶ï6ô�Àô�ÁðBî¶ï4:ô�øðDô�ùî¶ï2pô�Šð7ô�‹ð-î¶ï0¥ô�«ð+ô�¬ð7î¶ï.Úô�î¶ï+iô�ˆðbî¶ï)žô�î¶ï&,ô�‹ô�ŒðNî¶ï$að_î¶ï"Pô�ðTÿ�������L����¶" =èF�Dorado Hardware ManualControl SectionAugust 1, 198526Current Task ConfigurationTask #Task #Signal Wiring information on Right side panelOctalDecimalName00No name for task "0"None11TWReq.1Pin# 44 ContA22TWReq.2Pin# 45 ContA to IFU pin# 13 (JunkTW)33TWReq.3Pin# 48 ContA to DispY pin#121 (WakeDHT)44TWReq.4Pin# 56 ContA to DispM pin#121 (WakeAHT)55TWReq.5Pin# 57 ContA66TWReq.6Pin# 60 ContA to DskEth pin#121 (WakeEthTx)77TWReq.7Pin# 61 ContA to DskEth pin#120 (WakeEthRx)108TWReq.8Pin# 64 ContA to 10mb Ethernet pin#121 (WakeEthTx)119TWReq.9Pin# 128 ContA to DispM pin#120 (WakeAWT)1210TWReq.10Pin# 129 ContA to ProcH pin#109 (TestTW) Also the10mb Ethernet board will be wired to this task from pin#1201311TWReq.11Pin# 132 ContA to DispY pin#120 (WakeDWT)1412TWReq.12Pin# 133 ContA to DskEth pin#117 (DiskTW)1513TWReq.13Pin# 136 ContA1614TWReq.14Pin# 137 ContA1715TWReq.15 Pin# 140 ContA to MemX pin#132 (TWReq15) Task SwitchingWhen device hardware requires service from a task, it activates its wakeup request line at t0.Wakeup requests are priority-encoded, and the highest priority request (BNT or "Best Next Task")is clocked at t2 and competes with the current task (CTASK) for control of the machine. If BNT ishigher priority than CTASK, or if the current (non-emulator) instruction has BLOCK = 1, a taskswitch will take place; in this case, CTASK will be loaded from BNT at t4. This implies that theshortest delay from a wakeup request to the first instruction of the associated task is two cycles.The 16 Wakeup[task] FF decodes allow any task to be woken, just as though a hardware device hadactivated its wakeup line. A minimum of two cycles elapses after the instruction containing Wakeupbefore the task executes its first instruction. The task responding to a Wakeup must not blocksooner than the second instruction, or it will get reawakened.When a task has been woken by a FF decoded Notify[task] or has executed one or moreinstructions and then deferred to a higher priority task, the fact that it is runnable is remembered ina Ready flipflop. The Ready flipflop is cleared only when its task is restarted again after a higherlevel task blocks.Task # 0 has no Ready flipflop and cannot block; the BLOCK bit in the instruction is interpreted as StackSelectfor the emulator.Task switching may occur after every instruction unless explicitly disabled by the TaskingOfffunction. The TaskingOn function reverses the effect of TaskingOff. TaskingOff is "atomic"; aninstruction containing TaskingOff will be held if a task switch is pending; the next instruction willbe executed in sequence without any intervening task switches. TaskingOn is not immediatelyeffective; at least two more instructions will be executed by the same task before task switching canoccur.����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������î¶ïfªpô�€î##qî5pô�îG?ïfñî¶ïbtî¶ï^‰pô�€î¬î¢î˜�îð&î¶ï\¾î¬îî¶ïZó�î1�î¬îŽî¶ïY)�î1�î¬î˜ô�î¶ïW^�î1�î¬î˜ð%î¶ïU”�î1�î¬î˜ð(î¶ïSÉ�î1�î¬î˜ð(î¶ïQþ�î1�î¬î˜î¶ïP4�î1�î¬î˜ð+î¶ïNi�î1�î¬î˜ð+î¶ïLžî1�î¬î˜ð2î¶ïJÔî1�î¬î˜ð*î¶ïI î1î¬î˜ð1î¢ïG?ð;î¶ïEtî1î¬î˜ð*î¶ïC©î1î¬î˜ð)î¶ïAßî1î¬î˜ î¶ï@î1î¬î˜ î¶ï>Jî1î¬î˜ð*î¶ï90t î¶ï5¾pô�Öð%ô�×ð7ï51s�ï5¾p�î¶ï3ôô�“ô�”ðAî> ï3þ�ç�ï3ô�îA2ï3þ"�ï3ô�îD«ï3þ�ç�ï3ô�î¶ï2)ô�…ô�†ï1œs�ï2)pðRî¶ï0_ô�›ð%ô�œð9î¶ï.”ô�›ô�œð8ï.s�ï.”pî¶ï,Éô�±ô�²ðNî¶ï)Wô�…ð_î¶ï'ô�€ð\ô�î¶ï%Âô�»ð9ô�¼ð&î¶ï#øô�ð>î¶ï †ô�òðKô�óî¶ï»ô�„ðGô�…î¶ïðô�”ô�•ðTî¶ï&ô�îyïdsô�ð)ô�‘ðFîyïô�î¶ïµpô�æð$ô�çð9î¶ïêô�¦ðDô�§î¶ï ô�šð?ô�›ð&î¶ïUô�Êô�ËðEî¶ïŠô�‹ðKô�Œî¶ï À������� Ü����¶ y>è]’ ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Dorado Hardware ManualControl SectionAugust 1, 198527Next Address GenerationRead this with Figure 6 in front of you.For the most part, instruction memory (IMX) addressing paths are 16 bits wide, although only 12bits are presently used; the extra width allows for future expansion to 13 or 14 bits, whensufficiently fast 4kx1 ECL RAMS are economically available; there are no plans to utilize theremaining 2 bits, but since nearly all hardware components in the control data paths are packaged4/chip, the extra two bits are almost free. Also, the 16-bit wide Link register can be used to holdfull word data items.The various registers and data paths that contain IMX addresses are numbered 0:15, where bits 4:15are significant for the 4k-word microstore, while the quadrant bits 2:3 are not used until we go to a16k microstore. This numbering conveniently word-aligns the bits while also allowing for futureexpansion. The discussion below assumes a 4k-word microstore.Dorado does not have an incrementing instruction-address counter. Instead, the address of the nextinstruction is determined by modifying the Current Instruction Address (CIA) in various ways. TheTentative Next Instruction Address (TNIA) is determined from JCN[0:7] in the instructionaccording to rules in Figure 6. TNIA addresses IM for the fetch of the next instruction unless atask switch occurs. If a task switch occurs, the program counter for the highest priority competingtask (BNPC or "Best Next PC") addresses IM. ����������������������������������������î¶ïfªpô�€î##qî5pô�îG?ïfñî¶ïbtîï^¬qô�Xð(î¶ï[:pô� ðHô�¡î¶ïYoô�êðPô�ë î¶ïW¥ô�ÏðYô�Ðî¶ïUÚô�›ðTô�œî¶ïTô�–ðGô�—î¶ïREô�î¶ïNÓô�‚ ô�ƒðWî¶ïMô�‰ðZô�Š î¶ïK>ô�²ðLô�³î¶ïIsô�ð>î¶ïFô�‡ð8ô�ˆð+î¶ïD7ô�†ð+î&/ïCàþ�ý�ïD7�î+YïCàþ�„�ïD7� î2QïCàþ�ïD7�ô�‡î¶ïBþ�ç�ïBl�ôîMïBþ"�ïBl�î>ïBþ�„�ïBl� î¼ïBþ�ïBl�ô ð!î¶ï@¡ô�£ð@ô�¤ð!î¶ï>×ô�•ô�–ðFî¶ï=ô�ð,ÿ�������Ø����¶9 =è.þ�Î����������������������������������������������������������������������������������������������������Dorado Hardware ManualControl SectionAugust 1, 198528IMX is viewed as containing 64 pages of 64 instructions. Values in JCN are provided for thefollowing kinds of branches:Local branches to any of the 64 locations in the current page;Global branches to location 0 on any of the 64 pages of the current quadrant;Long branches to any location in the quadrant using the 8-bit FF field to extend JCN (normalinterpretation of FF is disabled);Conditional branches to any of 14 even locations in the current page, if the selected condition isfalse, or to the adjacent odd location, if the condition is true (7 branch conditions areavailable);IFU jumps are made of 8 bits from the ifu, 2 bits from JCN, and 2 bits from CIA.Return to the address in Link;Branch conditions may also be specified in FF. Several dispatches may also be specified in FF.These 'OR' bits into the branch address computed by the following instruction.If IM is expanded to 16k words, branching from one quadrant to another will only be possible byloading the Link register with a 14-bit address and then returning; jumps, calls, and IFUJumps willbe confined to the current 4k-word IM quadrant.Conditional BranchesIM is organized in two banks, with odd addresses in one bank, even in the other. For this reasonconditional branches select between an even-odd pair of instructions (i.e., between the two banks)according to branch conditions.Alternatively, a conditional branch may be encoded in FF in conjunction with any addressing modeexcept a long branch in JCN. When this is done, the result of the branch test is ORed withTNIA[15].This implies that for both FF-encoded and JCN-encoded branch conditions, the false target addressis even and the true target is odd.It is possible to conditionally branch using only JCN, while using FF for an unrelated function, orto encode a branch condition in FF while using any addressing mode in JCN. If branch conditionsare encoded in both FF and JCN, the branch test results are OR'ed, providing further flexibility.ÿ����������������������î¶ïfªpô�€î##qî5pô�îG?ïfñî¶ïbô�Àð@ô�Áî¶ï`Sô�îyï]µq pð0îyï[qpð>îyïXxqô�pô�ðHîyïV®ô�ð"îyïTqô�„pðAô�…îyïREô�îð*ô�ïð/îyïPz îyïMÜqô�ñpô�òð>îyïK>qpô�î¶ïGÌô�¹ðEô�ºî¶ïFô�ð8qpî¶ïBô�—ðSô�˜î¶ï@Åô�‹ô�ŒðEî¶ï>úô�ð/î¶ï9átî¶ï6opô�•ðQô�–î¶ï4¤ô�£ô�¤ðNî¶ï2Úô�î¶ï/hô�‡ð2ô�ˆð.î¶ï-ô�ÃðBô�Äî¶ï+Òî¶ï(`ô�Šô�‹ðUî¶ï&–ô�ð#î¶ï#$ô�“ô�”ð^î¶ï!Yô�†ô�‡ðDî¶ïô�¥ðBô�¦ÿ�������ê����¶H=èHÃ�Ù������������������������������������������������������������������������������Dorado Hardware ManualControl SectionAugust 1, 198529The branch condition encodings are:Table 13: Branch ConditionsJCN[5:7]FFBranch Condition060ALU=0161ALU<0262ALUcarry'363Cnt=0&-1 (decrements count after testing)464R<0 (RM or STK, whichever is selected, not overruled by RIsId)565R Odd (RM or STK, whichever is selected, not overruled by RIsId)666IOAtten' (non-emulator) or ReSchedule (emulator)67OverflowALU=0 and ALU<0 are the results of the last ALU operation executed by the current task.ALUcarry' (the saved carry-out of the ALU) and Overflow are the result of the last arithmetic ALUoperation executed by the current task (ALU_A may be stored in ALUFM as either an arithmeticor logical operation, so programmers should be wary of smashing these branch conditions whenALU_A is used.). These are saved in a RAM and may be frozen by the FreezeBC function forone cycle. In other words, the branch conditions are ordinarily loaded into the RAM at t3, but ifFreezeBC is present, then the RAM is not loaded and values from the previous instruction for thesame task will apply.The IOAtten' branch condition tests the task-specific IOAttention signal optionally generated by theio device associated with the current (non-emulator) task.Subroutines and the Link RegisterDorado provides single-level subroutines by means of the (task-specific) Link register. A Calloccurs on any instruction whose destination address is 0 mod 16 before any modification of TNIAdue to branch conditions or dispatches. On a Call, Return, or IFUJump, Link is loaded withCIA+1.Link may be loaded and read by programs, so deeper subroutine nesting is possible, if Link issaved/restored across calls.ÿ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������î¶ïfªpô�€î##qî5pô�îG?ïfñî¶ïbð#î!˜ï]Øtô�Xî ÈïZfuî~î!Yô�î:ïW;s�î~î!Yî:ïU·�î~î!Yî:ïT3�î~î!Yî:ïR¯�î~î!Yvsî:ïQ+�î~î!Yð'vsî:ïO§�î~î!Yô�ûð(ô�ü�vsî:ïN#�î~î!Yô�ð0î:ïLž�î~î!Yî¶ïIPpô�×ð9ô�Øî¶ïG…ô�‡ð?ô�ˆq pî¶ïE»ô�”ð1ô�•ð+î¶ïCðô�»ð3ô�¼ð)î¶ïB%ô�¥ð.ô�¦ð+î¶ï@[ô�šð5ô�›ð$ï?Îs�ï@[pî¶ï>ô�–ðCô�—î¶ï<Æô�î¶ï9Tô�Šô�‹ðXî¶ï7‰ô�ð:î¶ï2ptð!î¶ï.þpô�Ñð8ô�Òð'î¶ï-3ô�˜ð+ô�™ð4î¶ï+iô�ÅðVô�Æî¶ï)žî¶ï&,ô�½ð2ô�¾ð+î¶ï$aô������������¶$>èCñ�õ����������������������Dorado Hardware ManualControl SectionAugust 1, 198530DispatchesSeveral FF decodes are dispatches which OR various bits with TNIA[8:15] during the followinginstruction. The dispatch bits must be stable by t2.Dispatches are:BigBDispatch_BB[8:15] (256-way dispatch)BDispatch_BB[13:15] (8-way dispatch)MultiplyOR's Q[14] into TNIA[14] (The value of Q[14] is captured in a flipflop at t2 of theinstruction containing the Multiply function and is OR'ed into TNIA[14] during the nextinstruction for the same task.)Example:BDispatch_T;*T=7Branch[300];*branches to 300 OR 7 (IMX location 307)The two B dispatches load Link register from B, then OR appropriate bits of Link into TNIAduring the next instruction for the task. Since Link is task-specific, this works correctly across taskswitching. The Q-bit is only loaded during a multiply, and tasks other than task 0 are not allowedto use the multiply function.IFU AddressingThe IFU supplies ten bits of opcode starting address to the processor. During the last instruction ofevery opcode, exit to the next opcode is accomplished by IFUJump[n] (n = 0 to 3) which selectsamong four entry locations for the next opcode. The starting address supplied by the IFU is usedfor TNIA[4:13] and TNIA[14:15] are set to [n]. If the IFU is unprepared, it supplies a trap addressinstead of a starting address, and control goes to a reserved location in microstore. See page 30 table14 for the locations reserved. IFUJump's always load Link with CIA+1. This is necessary to implement the following conditionalexit feature for opcodes.If an FF-encoded branch condition is true in the same instruction as an IFUJump, IFU advance tothe next opcode is disabled. This kludge allows an opcode with common and uncommon exitconditions to finish, for example, with IFUJump[2,condition]. If the condition is false (commoncase), then the IFU advances normally to the next opcode, starting at location 2 of the entry vector.Otherwise (uncommon case), control continues at location 3 of the entry vector, but the IFU doesnot advance, so emulation of the current opcode can continue.������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������î¶ïfªpô�€î##qî5pô�îG?ïfñî¶ïbt î¶ï^¬pô�Äq pð2qî¶ï\ápô�ð3ï\Ts�ï\áp�î¶ïY“î:ïV®s îî:ïU îî:ïS_îô�¶ð;ô�·ïRÒ�ïS_îïQ¸ô�’ð#ô�“ð4îïPWô�î¶ïMpî:ïJ�îî:ïH6îð(î¶ïDÄô�ÂðZî¶ïBùô�’ðRô�“î¶ïA.ô�‘ðQô�’î¶ï?dô�î¶ï:Kt î¶ï6Ùpô�ô�‚ðMî¶ï5ô�žô�ŸðLî¶ï3Cô�•ðQô�–î¶ï1yô�‰ð6ô�Šð.î¶ï/®ô�ô�‚ðRî¶ï-äô�î¶ï*rô�ˆô�‰ðEî¶ï(§ô�î¶ï%5ô�ðDô�Žî¶ï#jô�Ãð)ô�Äð/î¶ï! ô�µð'ô�¶ð9î¶ïÕô�ˆ ô�‰ðZî¶ïô�ðGô�žî¶ï@ô�ð=ÿ�������8����¶ù=èL�ï����������������������������������Dorado Hardware ManualControl SectionAugust 1, 198531IFU trap addresses and other reserved locations in the microstore are as follows:Table 14: Reserved Locations in the MicrostoreReasonLocationsCommentReschedule request*14-17Indicates that some previous instruction executed the ReSchedulefunction.IFUM parity error*74-77Indicates a hardware failure in the IFUM storage.IFU not ready*34-37The instructions in this vector should contain IFUJump[n], waiting forthe IFU to become ready.IFU data parity error *4-7Parity wrong on data from cache.IFU map fault *0-3The IFU buffers the fact of a map fault and completes all opcodes inthe pipe ahead of the one experiencing the fault. Upon dispatch tothe first instruction for the opcode affected by the fault, this trapoccurs.Midas Call command 7776Midas Crash detect 7777*Ifu traps OR the 1's complement of the instruction set into bits 8:9 of the trap address, so actual trap locations forReschedule, for example, are 14-17, 114-117, 214-217, and 314-317.IM and TPC AccessSee figures 6 and 7.IM is read and written by programs using a special decode of JCN in conjunction with the RSTKfield of the instruction; TPC is also read and written using a special JCN decode.After the read or write instruction, control passes to the next sequential instruction, i.e., to CIA+1(with wrap-around at 64-word page boundaries). CIA+1 also winds up in Link.Total time for an IM or TPC read or write operation is 6 clocks (i.e., thrice as long as a normalinstruction).A 34 (+2 parity)-bit IM word is read as four 9-bit quantities. The read address is taken from Link.Data must be read from Link[7:15] in the instruction immediately after the IM read; this data isinverted; Link[0:6] contain 1's, so that when the entire word is 1's complemented the desired datawill have leading 0's. The byte select is RSTK[2:3].IM writes also take the write address from Link, 16 bits of data from B and 2 bits from RSTK; thehalf-word affected is also specified in RSTK.Any task can read or write TPC for an arbitrary task other than itself (an attempt to set TPC of therunning task is unpredictable). The task number is B[12:15], and data is taken from or written intoLink. The assembly language notations for these are RdTPC_B and LdTPC_B. After RdTPC_B,the 16 bits of data in Link are 1's complemented.����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������î¶ïfªpô�€î##qî5pô�îG?ïfñî¶ïbðQînï^¬tô�Xð/îxï[€vîRî'¶îxïXxsô�€îRî%5ô�ðô�ñð$î%5ïWîxïUMô�€îRî%5ô�ð(îxïS‚ô�€îRî%5ô�ô�Žð6î%5ïR"ô�îxïPWô�€îRî%5îxïNŒîRî%5ô�ˆô�‰ð5î%5ïM,ô�žð&ô�Ÿî%5ïKËô�Âô�Ãð,î%5ïJjîxïHŸô�€îRîxïFÕîRî¶ïBô�¢ð3ô�£ðDî¶ï@[ô�ðBî¶ï<Ætî:ï9Tqî¶ï5âpô�–ô�—ðGî¶ï4ô�ðRî¶ï0¥ô�•ð:ô�–ð,î¶ï.Úô�ðLî¶ï+iô�§ðZô�¨î¶ï)žî¶ï&,ô�ƒðHô�„î¶ï$aqô�¹ð(ô�ºð+pî¶ï"—ô�ð@ô�žð"î¶ï Ìô�ð5î¶ïZô�ˆð0ô�‰ð1î¶ïô�ð-î¶ïô�‡ð`ô�ˆî¶ïSô�Šô�‹ðUî¶ïˆô�ŽðYî¶ï¾ô�ð1ÿ������� ����¶w>èU”������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Dorado Hardware ManualControl SectionAugust 1, 198532HoldMany events in the memory system, StkError and the hold simulator in the processor, and severalIFU error conditions generate hold (The IFU error conditions cause a one-cycle hold if anIFUJump occurs on the first cycle of the error.). The control section itself forces hold when a taskswitch occurs concurrent with TaskingOff. This signal, clocked at t1, occurs when the currentinstruction cannot be completed. Its effect on the hardware is to suspend the current instruction,while completing parts of the previous instruction that have been pipelined into the current cycle.Approximately, it converts the current instruction into a Goto[.] while preserving branch conditions.Higher priority tasks are not prevented from running when the current task is experiencing Hold.RemarkThe fact that the address of the next instruction is needed at t0, while Hold is not generated until t1 means thatconcurrence of Hold and BLOCK with a switch to a lower priority task produces an anomalous situation called "NextLies". The hardware disables clocks to CIA, TPC, and MIR when this occurs, so that the current instruction is repeated.Program Control of the DMuxDorado contains a large number of multiplexors called mufflers which allow a selected signal from aset of up to 2048 signals to be observed on a one-wire bus called the DMux located at Pin # 186on the left side panel for all of the boards. This provides a passive method by which the Baseboardsection or the external Midas debugger can examine internal control signals and registers nototherwise observable.The particular DMux signal is selected by shifting in an 11-bit address one bit at-a-time. Eachboard with mufflers contains a 12-bit address register that responds to the shifted address bits; thehighest bit is ignored for the purposes of selecting the signal to be read. "Dorado DebuggingInterface" discusses a clever generator algorithm that allows all 2048 signals to be read into a tablein 2048+11 shift-read cycles.In addition, the DMux address can also be executed as a control function. In this case the full 12-bit address determines what function is executed. This "manifold" mechanism is used to controlpower supplies, set clock rate, enable/disable error halt conditions, and test IM without involvingother hardware.The DMux facility can also be controlled directly by Dorado programs by means of theMidasStrobe_B and UseDMD functions. Essentially, the DMux address mechanism is controlledexternally by the Baseboard or by Midas operating through the Baseboard when Dorado isn'trunning, and by Dorado when Dorado is running.The MidasStrobe_B function causes B[4] to be shifted out as an address bit. This takes threecycles, so the program must execute three more instructions before doing another MidasStrobe_Bfunction. The DMux signal selected by the last 11 address bits shifted out is read on B[0] when thePd_ALUFMEM function is executed.The UseDMD function causes the current DMux address to be executed as a manifold operation.ÿ��î¶ïfªpô�€î##qî5pô�îG?ïfñî¶ïbtî¶ï^¬pô�›ðSô�œî¶ï\áô�îð1ô�ïð(î¶ï[ô�ðeî¶ïYLô�ÏðDïX¿s�ïYLp�ô�Ðî¶ïWô�£ðBô�¤ð!î¶ïU·ô� ô�¡ðJî¶ïSìô�Œô�ðTî¶ïPzô�¥qpðCî¶ïLXvî¶ïG…sô�¸ð>ô�¹ïFø�ïG…ð%ïFø�ïG… î¶ïEÞô�›ô�œðTî¶ïD7ô�„ðNô�…ð*î¶ï@¡tô�î¶ï=/pô�€ð!ô�ðBî¶ï;eô�”ô�•ðFî¶ï9šô�‚ð!ô�ƒðCî¶ï7Ðô�ÞðOô�ß î¶ï6ô�î¶ï2“ô�· ô�¸ðRî¶ï0Èô�˜ ô�™ð[î¶ï.þô�ÂðKô�Ãî¶ï-3ô�”ô�•ðPî¶ï+iô�î¶ï'÷ô�ŽðWô�î¶ï&,ô�«ð_î¶ï$aô�¨ô�©ðPî¶ï"—ô�î¶ï%ôð(ôð,î¶ïZô�ªð:ô�«î¶ïô�Öð1ô�×ð(î¶ïÅô�ð.î¶ïSô�Ãð]î¶ïˆô�¤ð#ô�¥ð;î¶ï¾ô�…ð:ô�†ð*î¶ïóô�î¶ï ô�¡ð9ô�¢ð"ÿ�������þ����¶ :>èZÑ+������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Dorado Hardware ManualControl SectionAugust 1, 198533The following subroutine reads the DMux signal selected by the address in T:Subroutine;ReadDMux:Cnt_13S;RdDMuxLp:MidasStrobe_T;*Shift out address in T[4]Noop;Noop;T_(T) lsh 1, Goto[RdDMuxLp,Cnt#0&-1];T_ALUFMEM;*T[0] returns selected DMux addressReturn;ÿ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������î¶ïfªpô�€î##qî5pô�îG?ïfñî¶ïbðLî:ï^Ïs î:ï]Kî¬ï[Çî:ïZCî¬ïX¿ î"sî¬ïW;î¬ïU·î¬ïT3ð%î¬ïR¯ î"sð#î¬ïQ+ÿ�������2����¶Q5K�I������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������MemBase *Md *Time from0Time fromAddressingCache dataMain storage16<1582Ad<errorsPiper>><<<rrrrrrrrrrrrrBMuxPMaskerRFast output busmapPipex 16 wordssyndromeGeneratesingle bitCorrectEC bitsGenerateFast input busDbufDataEcDataEcStoragedataCacheAdAdMapPipeVAPipeMissColEncodermemoryaddressCacheadderBaseBaseMarPAd====PPP..<<<<1818181818r18r3rrrrrT5AB192023242728315t1t3t4t14t3t5 ort35 - t48t36 - t51t35 - t50t29 - t44t3 - t19t5 - t51MissHitt5t57ReferenceRegistersReferenceD1Memory.silFigure 8Overall Structure of the Memory System7/11/851677 rows x 4 col(256k chips)4096k x 16 words>SINSOUTFIN77 rows x 4 col6..2121..27Real page Flags64K x 1928281681618���î7tïbð î!Vïðîuïa<ð îKtïaƒðîH‚uïegð î5pïe®ð îïe®ð î9ïe®ðîGïc.þ�G«î*Èïd‘þV�Gî*Èïbçþ�GòîÈïd‘þ9�GîÈïbçþ�Gòî.etï_Jðî-ïZ&þÇ�$î7Iï\îþ9�$î7|ïY>ðî0WïDþ�$VîC‚ïOßþ�$îDætïOtðî5ïNŸþ�$î/ÉïF&þ�$î4ÉïSþ�$î/ÉïU&þ�$î3¬ï>^þ�$î4;ï/‚þ�$î+åï=ôþ�$«î'sï=Ðþr�$îï(%þ ä�$î Vïeþ�$î Vï ]þ•�$îdï*Èðî �ï+3þ�$î<ï=ôðî-Iï_µþ�$î!Vï²þ�$îäïyþ�$î"sïH_þ�$î;-ï>^þ�$î+Wï>^þ�$îï_µþ�$î"sï_µþ�$î)ï1ºþ�$«î#ïGBþ�$î+Wï/‚ðî-|ï+®ðî rtïäðîïþ�$ŽîÇïëþ�$•îrïëþ�$•î �ïHðîÇïëþÎ�$îÇï]þ«�$î |ï;ðîÈïðî8eïOËðî'sï5 ðî'sï: ðîï$uðî!Vïtðî«ï'<ðî9ïðî&Wïuðî(ï.uðî/Éï@Ëðîïtðî9ïtðîÈï.uðîï.uðî"sïAYðî :ïAYðî"sïH’ðî#ïKmþ�$ˆî#ïD{þ�$²î!åïHþ�$«î!åtïbðî!ž|ï]¯ðîVï1ºþ�$«îï³þÇ�$îïºþ�$9î(tïVðîºïVðîï€ðî«ï–þ��$î¬ïD{þr�$îïÏþ y�$î(ïÖðî$¬ï"–þV�$î$¬ï%þy�$î(ï ðî-ï%þ�$•î$¬ï%þ�$•î&åï"ºþ�$Çîï7ð î!åïºþ�$!åî!åï>‚þ�$î rïðî rïºðî�ïsð îïðîVï,ºðîÇï-×ðîÈïbðî!åïJ-ðîï)eðî ï!žðî ï*þ�$«î9ï*þ�$9î«ï!žðî �ï)eðî Vï&žðî Èï:ðî :ï;»ðîVï&žðî%Èï:žðî&Wï/Éðî'sï8Ðþk�$î;»ï8ôþ�$«î=ôï?{þ�$•î:žïA×ðî/Éï@-ðî*Èï?{þ�$•î5Wï?{þ�$•î/:ïA×ðîBôïA×þ�$UîAIï?{þ�$]îAIï?{þy�$îDŸï?žþ�$9îAIïA´þU�$î;»ïDþ�$î9‚ï?{þ�$•î9‚ï?{þ•�$î9‚ïCíþr�$îA×ï@-ðî:åï@-ðî<×ïFØðî<×ïSðî<×ïT-ðî=fïUJðî/:ïVõðî/:ïXðî2Iï\Êðî-ïbðî3¬ïZJþ�$«î8|ï]¯ðî0åïO þ²�$î$¬ï*^þ�$]î-ï*þ�$9î$¬ï1—þV�$î*ÈïCíþ �$î:tïSðî0WïS|þ +�$î7×ïE þ�$•î7×ïE þ y�$îE-ïE-þ�$rî7×ïI{þ V�$îC‚ïIŸþ�$«î@-ïIŸþ�$«î<×ïIŸþ�$«î9‚ïIŸþ�$«îC;pïK‘ðî?æïK‘ðî<ïK‘ðî9;ïK‘ðî8ôïM‚þ�$«î<IïM‚þ�$«î?žïM‚þ�$«îBôïM‚þ�$«î0WïO þ�$îBfïM_þ9�$îDŸïKJþ�$9îBfïK&þ]�$îBfïK&þ�$]î?ïK&þ�$]î?ïK&þ]�$îAIïKJþ�$9î?ïM_þ9�$î;»ïM_þ9�$î=ôïKJþ�$9î;»ïK&þ]�$î;»ïK&þ�$]î8eïK&þ�$]î8eïK&þ]�$î:žïKJþ�$9î8eïM_þ9�$îDïM‚þ�$Uî@»ïM‚þ�$Uî=fïM‚þ�$Uî:ïM‚þ�$Uî9‚ïP´þ�$@î9‚ïP´þ@�$îDŸïPØþ�$î9‚ïVÑþ�$î,s|ï]¯ðî-×ïZJþ�$«î-ïVCþ�$î-ïVCþë�$î4ÉïVfþ�$äî0Wï[Ñþ�$]î0Wï[ÑþÎ�$î0Wï^ þ«�$î&Wï ¹þ�$€îï �þ�$9îïÏþ�$ëîïÏþë�$î%Èïòþ�$Çîï–þÇ�$î9ï!zþÈ�$î9ï*^þÈ�$îÈï>^þ«�$î'sï5žþ�$äîÈï5{þÏ�$îÈï5{þ�$ î ÈïDŸþ�$Çî¬ïGBþ�$î!ïJ þ�$‡î$óïJ-þ�$dî!ïKmþä�$îï æðîrïHþ�$rî äïþ�$ëî äïþ]�$îï+þ�$Çî äïÏþ9�$îÈïóþ�$«îïeþ�$9îäïAþ�$î�ïþ�$Uîäïìþ@�$îäïìþ�$yî9ï!zþ�$ îï!žþ�$äî9ï, þ�$yî9ï, þ@�$î Vï,,þ�$Uî9ï/^þ�$î ï/‚þ�$î ï0zþÎ�$îï1ºþ�$/:î�ï1—þr�$î¹ï]¯ðî5tï>;ðî.¬ï&žþ�$îï&zþÏ�$î1sï0žþ�$�î-ï0zþ•�$î.ï>^þ�$î0åï>^þ�$î*Èï?{þ �$î-|ï,Êðîï"Êðî&Wï)Aþ�$î'sï<%þ]�$î'sï:{þ $�$î'sï6Ëðî'sï8uðîòtï_Jðî#Öï_ðî#ïGôðî"sïHðîïðî-ï/^þd�$îGfï/^þ�$)Ðî>‚ïY þ �$î>‚ïVõþ�$9î=ô|ïS¯ðî!Vï4^þ�$î"stï3óðî+Wï"ºþ�$Çî*È|ïuðî*Èï)Aþ�$î+åtï(×ðîÈïºþ�$rî$¬ï*^þV�$îï]þ�$î!åï Gþ�$9î*:ï Gþ�$9îï Gþ�$9î|ïtðîsïtðî!Vïtðî%Èïtðî)¬ïtðîÖtïVðî9;ï]þ�$äî8¬ï_µþ�$î:Wï_Jðî7ï[õþ�$9î!žïVðî&ïVðî4Éï=fðî2Iï>‚ðî2Iï=fðî/:ï>‚ðî/:ï=fðî,sï>‚ðî,sï=fðî4Éï>‚ðîKï\ƒðîJ»ïC‚ðîJtï4;ðîIŸï&žðîÇïFØðîÇï@»ðîÇï?Wð îÇï ð îÇï+ð îÇïóð îÇï+ðîÇï3óðîIŸuï,sðîCÉï,sðîC‚tïHðîIXïHðîuï` ð îïd‘þ«�Gîsïbçþ�GòîÇïbçþ�Gòî(ïbçþ�Gòî!åï€þ�$«î0åtï[õð îH‚uïdJð î!ïJ þä�$îBïðî#rï+ðîäïÇð&îVï3Bþ �$îäï3Bþ�$]îVï4^þ�$îBuï9ðî'stï(×ðî!åï þ�$«îäï8ðîÈï#Öðîï$óðîV|ï»ðîtïðîÖï3¬ðî ï8ðî;tïQðî3¬ïLôðî3ïQôðî$óï*Èð î*Èï*Èðî&ï.ðî1sïE»ðî1sïT¼ðî¬ïþ�$-×îïkþ²�$îÈïVðîïÁþ�$î ïˆþ�$îòïðîVï,,ðî«ï,—þ�$îºï3óðÿ�������‰ä��Ç]K´dµØ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Figure 945678910111213141516171819202122232425262728293031VAxxxStored in address section<>Row><4k-wordCacheMunchWord in256-wordPagexxxxxxxxC2C3C4C5C6C7C8R2R3R4R5R6R7R8Word in pageC1R1C0R0xxCache, Map, and Storage Addressing<><>Map Addressing101112131415RPRPRPRPRPRP24252627VAVAVAVA00010203040506070809RPRPRPRPRPRPRPRPRPRPReal page from Map><Page256-wordR2C2R4R3R5R6R7R8C4C3C8C7C6C5C5C6C7C8C3C4R8R7R6R5R3R4C2R2M1M0M0M1xxR1C1C1R1R0C064k ic's256k ic's64k-bit ic's in Map256k-bit ic's in MapVA31302928272625242322212019181716151413121110987654D1MemAddr.silx = unusedCx = columnRx = rowVirtual Addressing7/11/85<>ColStorage Addressing3130292827262524232221201918171615141312111098765445678910111213141516171819202122232425262728293031VABRMar4567891011121314150123Mar + BR = VAStorage size3210151413121110987654MarBRVA3130292827262524232221201918171615141312111098765445678910111213141516171819202122232425262728293031Virtual AddressingBmux,,Mar + BR = VA456789101112131415Bmux,,MarBmux(long Fetch)(Normal Fetch)765423VNVsAd.0-sAd.7CacheA AddressingCache4k-wordVA31302928272625242322212019181716151413121110987654CacheD Addressing4567891011121323Dad.0-Dad.13 (Bits 2 and 3 not used)Dad.0 and Dad.1 are made up from Hit or Victim.Dad.0-Dad.13103287654104567823xxMapAd.0-MapAd.8��î#rïðîï@—þ?�$î@-ï>;þ�$€îï>þ?4�$îï>þ�$¤î%:ï>;þ�$�Õî'sï>;þ�$�Žî)¬ï>;þ�$�Žî+åï>;þ�$�Žî4Éï>;þ�$�Žî2ï>;þ�$�Žî0Wï>;þ�$�Žî.ï>;þ�$�Õî=ôï>;þ�$�Žî;»ï>;þ�$�Žî9‚ï>;þ�$�Žî7Iï>;þ�$�Õîrï>;þ�$�Õî«ï>;þ�$�Žîäï>;þ�$�Žîï>;þ�$�Žî#ï>;þ�$�Žî Èï>;þ�$�Žîï>;þ�$�ŽîVï>;þ�$�Õî Gï>;þ�$�Õî€ï>;þ�$�Žî¹ï>;þ�$�Žîòï>;þ�$�Žîï>;þ�$�ŽîÖï>;þ�$�Žîï>;þ�$�Žîòtï>Éðîrï>Éðî«ï>Éðîäï>Éðîï>Éðî Vï>ÉðîHï>Éðîï>Éðîï>Éðîòï>Éðîsï>Éðî¬ï>Éðîï>Éðîï>Éðî!Vï>Éðî#ï>Éðî%Èï>Éðî(ï>Éðî*:ï>Éðî,sï>Éðî.eï>Éðî0žï>Éðî2×ï>Éðî5ï>Éðî7×ï>Éðî:ï>Éðî<Iï>Éðî>‚ï>ÉðîBpï>‚ðîï8Bþ?�$î+åï8eþ�$�Žî4Éï8eþ�$�Žî2ï8eþ�$�Žî0Wï8eþ�$�Žî.ï8eþ�$�Õî=ôï8eþ�$�Žî;»ï8eþ�$�Žî9‚ï8eþ�$�ŽîÖï8eþ�$�Žîï8eþ�$�Žîï8eþ�$9î7Iï8eþ�$9îòtï8ôðîrï8ôðî«ï8ôðî'sï8eþ�$�Žî%:ï8eþ�$îrï8eþ�$�Õî«ï8eþ�$�Žîäï8eþ�$�Žîï8eþ�$�Žî#ï8eþ�$�Žî Èï8eþ�$�Žîï8eþ�$�ŽîVï8eþ�$�Õî Gï8eþ�$�Õî€ï8eþ�$�Žî¹ï8eþ�$�Žîòï8eþ�$�Žîï8eþ�$9î)¬ï8eþ�$9îï9‚ðîVï9íþ +�$î|ï6<ðî ï9íþ¹�$î$ï6<ðî-tï<Iðî7Iï9íþ9�$î=ï9íþ€�$î?|ï6<ðî7Iï6<ðîBpï9‚ðîBï8ðî:tï8ôðî9Éï:ðîBfpïðîBfïäðî�Žïþ?�$î?žï,þ�$€î�Žï,þ�$€îÇï,þ�$�Žîdï,þ�$�Žî :ï,þ�$�Žî"sï,þ�$�Žîï,þ�$�ŽîVï,þ�$�Žîï,þ�$�Žîäï,þ�$�Õî8ôï,þ�$�Žî;-ï,þ�$�Žî=fï,þ�$�Žî/Éï,þ�$�Žî2ï,þ�$�Žî4;ï,þ�$�Žî+Wï,þ�$�Žî)ï,þ�$�Žî&åï,þ�$�Žî$¬ï,þ�$�Õî.etïsðî0žïsðî2×ïsðî5ïsðî7×ïsðî9Éïsðî<Iïsðî>‚ïsðî-ï,þ�$€îï,þ�$€îïºðî Èïºðî#ïºðî%:ïºðî'sïºðî)¬ïºðî+åïºðîÈï,þ�$�Õî+ï,þ�$€î¹ïºðîòïºðîrïºðî«ïºðîäïºðîïºðîVïºðî2ïðî€ïºðî �ïºðîÇïºðîŽïºðîïsðî«ïsðî�ï,þ�$€î9ï,þ�$€î rï,þ�$€î«ï,þ�$€î+rïÖð"î rïþ9�$î r|ïfðî,sïfðî�ïðî,sïðîVpï(ðî@-ï8eþ�$9îrïÝþ2�$î(Htï�ðî*Èï�ðî-Iï�ðî/Éï�ðî2Iï�ðî4Éï�ðî(Hïðî*Èïðî-Iïðî/Éïðî2Iïðî4Éïðî7Iï�ðî9Éï�ðî<Iï�ðî>Éï�ðî7Iïðî9Éïðî<Iïðî>ÉïðîHï�ðîÈï�ðîHï�ðîÈï�ðîHï�ðîÈï�ðîHï�ðî Èï�ðî#Hï�ðî%Èï�ðîÈïðîHïðîÈïðîHïðîÈïðîHïðîHïðî Èïðî#Hïðî%Èïðîïðî¹ïþ �$î',ïþH�$î5W|ïXðîrïXðîC;pï�ðîC;ï«ðîtï ðî!ï ðî&ï ðî#ï ðî(ï ðî+ï ðî-ï ðî0ï ðî5ï ðî2ï ðî?ï ðî<ï ðî:ï ðî7ï ðî7ï«ðî:ï«ðî<ï«ðî?ï«ðî2ï«ðî5ï«ðî0ï«ðî-ï«ðî+ï«ðî(ï«ðî#ï«ðî&ï«ðî!ï«ðîï«ðîÈï ðîHï ðîHï«ðîÈï«ðîï ðîï ðîï ðîï ðîï«ðîï«ðîHï«ðîÈï«ðî ¹ï ðî +ï«ð î9ïrþ�$îºïrþ�$î:ïrþ�$îóïrþ�$îóïrþ�$î$óïrþ�$î'sïrþ�$î)óïrþ�$î.óïrþ�$î1sïrþ�$î3óïrþ�$î8ôïrþ�$î;tïrþ�$î=ôïrþ�$î�ïþ�$î-ïþ�$î rïóþ�$òîsïrþ�$îsï+þ�$«î"sï+þ�$«î,sï+þ�$òîòï¬ðîrïHðî ïþ �$î6»ï,þ�$�ÕîBfpï$óðî=ôtï%:ðî;»ï%:ðî9‚ï%:ðî7Iï%:ðî4‚ï%:ðî2Iï%:ðî0ï%:ðî-×ï%:ðî+åï%:ðî)¬ï%:ðî'sï%:ðî%:ï%:ðî#ï%:ðî Èï%:ðîï%:ðîï%:ðîï%:ðîäï%:ðîdï%:ðîrï%:ðîòï%:ðî¹ï%:ðîÈï%:ðî ï%:ðîVï%:ðîï%:ðîäï%:ðîdï%:ðîï$¬þ�$�ŽîGï$¬þ�$�Žî€ï$¬þ�$�Žîdï$¬þ�$�Žî+ï$¬þ�$�Žîòï$¬þ�$�Žî ¹ï$¬þ�$�ÕîÈï$¬þ�$�Õîï$¬þ�$�Žî :ï$¬þ�$�Žî"sï$¬þ�$�Žîï$¬þ�$�ŽîVï$¬þ�$�Žîï$¬þ�$�Žîäï$¬þ�$�Õî6»ï$¬þ�$�Õî8ôï$¬þ�$�Žî;-ï$¬þ�$�Žî=fï$¬þ�$�Žî-ï$¬þ�$�Õî/Éï$¬þ�$�Žî2ï$¬þ�$�Žî4;ï$¬þ�$�Žî+Wï$¬þ�$�Žî)ï$¬þ�$�Žî&åï$¬þ�$�Žî$¬ï$¬þ�$�Õî�Žï$ˆþ�$¤î�Žï$ˆþ?4�$î?žï$¬þ�$€î�Žï'þ?�$îrïëþ2�$îrï�þ�$î@tï�þ�$îrïVþ�$«î6tïVþ�$«î6tïrþ�$îAuïGð î0žtïºð î0WïÖðî0WïóðîpïRÊðî�ï³þ ä�$îÖï³þÝ�$îAuï+ðî%:|ï6<ðî(ï6<ðî%:ï9‚þ�$�Žî(Hï9íþd�$î&žtï9‚ðî%:ï9íþ�$îpï«ðî>‚tïFIðî<IïFIðî:ïFIðî7×ïFIðî5ïFIðî2×ïFIðî0žïFIðî.eïFIðî,sïFIðî*:ïFIðî(ïFIðî%ÈïFIðî#ïFIðî!VïFIðîïFIðîïFIðî¬ïFIðîsïFIðîòïFIðîïFIðîïFIðîHïFIðî VïFIðîïFIðîäïFIðî«ïFIðîrïFIðîòïFIðîïE»þ�$�ŽîÖïE»þ�$�ŽîïE»þ�$�ŽîòïE»þ�$�Žî¹ïE»þ�$�Žî€ïE»þ�$�Žî GïE»þ�$�ÕîVïE»þ�$�ÕîïE»þ�$�Žî ÈïE»þ�$�Žî#ïE»þ�$�ŽîïE»þ�$�ŽîäïE»þ�$�Žî«ïE»þ�$�ŽîrïE»þ�$�Õî7IïE»þ�$�Õî9‚ïE»þ�$�Žî;»ïE»þ�$�Žî=ôïE»þ�$�Žî.ïE»þ�$�Õî0WïE»þ�$�Žî2ïE»þ�$�Žî4ÉïE»þ�$�Žî+åïE»þ�$�Žî)¬ïE»þ�$�Žî'sïE»þ�$�Žî%:ïE»þ�$�ÕîïE˜þ�$¤îïE˜þ?4�$î@-ïE»þ�$€îïHþ?�$îïLBþ?�$î@-ïIæþ�$€îïIÂþ?4�$îïIÂþ�$¤î%:ïIæþ�$�Õî'sïIæþ�$�Žî)¬ïIæþ�$�Žî+åïIæþ�$�Žî4ÉïIæþ�$�Žî2ïIæþ�$�Žî0WïIæþ�$�Žî.ïIæþ�$�Õî=ôïIæþ�$�Žî;»ïIæþ�$�Žî9‚ïIæþ�$�Žî7IïIæþ�$�ÕîrïIæþ�$�Õî«ïIæþ�$�ŽîäïIæþ�$�ŽîïIæþ�$�Žî#ïIæþ�$�Žî ÈïIæþ�$�ŽîïIæþ�$�ŽîVïIæþ�$�Õî GïIæþ�$�Õî€ïIæþ�$�Žî¹ïIæþ�$�ŽîòïIæþ�$�ŽîïIæþ�$�ŽîÖïIæþ�$�ŽîïIæþ�$�ŽîòïJtðîrïJtðî«ïJtðîäïJtðîïJtðî VïJtðîHïJtðîïJtðîïJtðîòïJtðîsïJtðî¬ïJtðîïJtðîïJtðî!VïJtðî#ïJtðî%ÈïJtðî(ïJtðî*:ïJtðî,sïJtðî.eïJtðî0žïJtðî2×ïJtðî5ïJtðî7×ïJtðî:ïJtðî<IïJtðî>‚ïJtðîïNXþ�$�Žî ÈïNXþ�$�Žî#ïNXþ�$�Žî7IïNXþ�$�Žî9‚ïNXþ�$�Žî;»ïNXþ�$�Žî=ôïNXþ�$�Žî.ïNXþ�$�Žî0WïNXþ�$�Žî2ïNXþ�$�Žî4ÉïNXþ�$�Žî+åïNXþ�$�Žî)¬ïNXþ�$�Žî'sïNXþ�$�Žî%:ïNXþ�$�Õî@-ïNXþ�$€îA×pïFðîAïIæðîAIïNŸðî%ÈtïNæðî(HïNæðî*ïNæðî,ºïNæðî.óïNæðî1,ïNæðî3ïNæðî5WïNæðî7×ïNæðî9ÉïNæðî<IïNæðî>‚ïNæðîsïNæðîeïNæðî!žïNæðî#ÖïNæðîVïNXþ�$€îVïN4þ#Ö�$îVïP´þ#Ö�$îÖpïRÊð î�Žtï ðîVïaþ#Ö�$îVï^˜þ#Ö�$îVï^¼þ�$€î#Öï_Jðî!žï_Jðîeï_Jðîsï_Jðî>‚ï_Jðî<Iï_Jðî9Éï_Jðî7×ï_Jðî5Wï_Jðî3ï_Jðî1,ï_Jðî.óï_Jðî,ºï_Jðî*ï_Jðî(Hï_Jðî%Èï_Jðî-IpïaÊðîAïZJðîA×ïVfðî@-ï^¼þ�$€î%:ï^¼þ�$�Õî'sï^¼þ�$�Žî)¬ï^¼þ�$�Žî+åï^¼þ�$�Žî4Éï^¼þ�$�Žî2ï^¼þ�$�Žî0Wï^¼þ�$�Žî.ï^¼þ�$�Žî=ôï^¼þ�$�Žî;»ï^¼þ�$�Žî9‚ï^¼þ�$�Žî7Iï^¼þ�$�Žî#ï^¼þ�$�Žî Èï^¼þ�$�Žîï^¼þ�$�Žî>‚tïZØðî<IïZØðî:ïZØðî7×ïZØðî5ïZØðî2×ïZØðî0žïZØðî.eïZØðî,sïZØðî*:ïZØðî(ïZØðî%ÈïZØðî#ïZØðî!VïZØðîïZØðîïZØðî¬ïZØðîsïZØðîòïZØðîïZØðîïZØðîHïZØðî VïZØðîïZØðîäïZØðî«ïZØðîrïZØðîòïZØðîïZJþ�$�ŽîÖïZJþ�$�ŽîïZJþ�$�ŽîòïZJþ�$�Žî¹ïZJþ�$�Žî€ïZJþ�$�Žî GïZJþ�$�ÕîVïZJþ�$�ÕîïZJþ�$�Žî ÈïZJþ�$�Žî#ïZJþ�$�ŽîïZJþ�$�ŽîäïZJþ�$�Žî«ïZJþ�$�ŽîrïZJþ�$�Õî7IïZJþ�$�Õî9‚ïZJþ�$�Žî;»ïZJþ�$�Žî=ôïZJþ�$�Žî.ïZJþ�$�Õî0WïZJþ�$�Žî2ïZJþ�$�Žî4ÉïZJþ�$�Žî+åïZJþ�$�Žî)¬ïZJþ�$�Žî'sïZJþ�$�Žî%:ïZJþ�$�ÕîïZ&þ�$¤îïZ&þ?4�$î@-ïZJþ�$€îï\§þ?�$îïX|þ?�$î@-ïVþ�$€îïUüþ?4�$îïUüþ�$¤î%:ïVþ�$�Õî'sïVþ�$�Žî)¬ïVþ�$�Žî+åïVþ�$�Žî4ÉïVþ�$�Žî2ïVþ�$�Žî0WïVþ�$�Žî.ïVþ�$�Õî=ôïVþ�$�Žî;»ïVþ�$�Žî9‚ïVþ�$�Žî7IïVþ�$�ÕîrïVþ�$�Õî«ïVþ�$�ŽîäïVþ�$�ŽîïVþ�$�Žî#ïVþ�$�Žî ÈïVþ�$�ŽîïVþ�$�ŽîVïVþ�$�Õî GïVþ�$�Õî€ïVþ�$�Žî¹ïVþ�$�ŽîòïVþ�$�ŽîïVþ�$�ŽîÖïVþ�$�ŽîïVþ�$�ŽîòïVðîrïVðî«ïVðîäïVðîïVðî VïVðîHïVðîïVðîïVðîòïVðîsïVðî¬ïVðîïVðîïVðî!VïVðî#ïVðî%ÈïVðî(ïVðî*:ïVðî,sïVðî.eïVðî0žïVðî2×ïVðî5ïVðî7×ïVðî:ïVðî<IïVðî>‚ïVðî äpïdÙðîïdÙðîïaþ]�$îï^¼þ�$€îï^˜þÈ�$îï^˜þ�$¤îrï^¼þ�$�Õî«ï^¼þ�$�Žîäï^¼þ�$�Žîï^¼þ�$�ŽîVï^¼þ�$�Õî Gï^¼þ�$�Õî€ï^¼þ�$�Žî¹ï^¼þ�$�Žîòï^¼þ�$�Žîï^¼þ�$�ŽîÖï^¼þ�$�Žîï^¼þ�$�Žîòtï_Jðîrï_Jðî«ï_Jðîäï_Jðîï_Jðî Vï_JðîHï_Jðîï_Jðîï_Jðîòï_Jðîsï_Jðî¬ï_JðîAIpï_Jð î GïaÊðî%:ï9Éþ�$�Žî%:ï9Éþ�$�Õî2ïe ðî0åïRÊðî5žtï8ôðî3eï8ôðî1,ï8ôðî.¬ï8ôðî*:ï8ôðî,sï8ôðî&Wï;»ðî,sï:žðîÈpïAðî@-ï-þ�$9îBï,ºðîBï.ðî%:ï-þ�$î'sï-þ�$�Žî7Iï-þ�$î9‚ï-þ�$�Žî;»ï-þ�$�Žî=ôï-þ�$�Žî.ï-þ�$�Õî0Wï-þ�$�Žî2ï-þ�$�Žî4Éï-þ�$�Žî+åï-þ�$�ŽîBï1ºðî>‚tï2ðî<Iï2ðî:ï2ðî7×ï2ðî5ï2ðî2×ï2ðî0žï2ðî.eï2ðî,sï2ðî*:ï2ðî(ï2ðî%Èï2ðî#ï2ðî!Vï2ðîï2ðîï2ðî¬ï2ðîsï2ðîòï2ðîï2ðîï2ðîHï2ðî Vï2ðîï2ðîäï2ðî«ï2ðîrï2ðîòï2ðîï1sþ�$�ŽîÖï1sþ�$�Žîï1sþ�$�Žîòï1sþ�$�Žî¹ï1sþ�$�Žî€ï1sþ�$�Žî Gï1sþ�$�ÕîVï1sþ�$�Õîï1sþ�$�Žî Èï1sþ�$�Žî#ï1sþ�$�Žîï1sþ�$�Žîäï1sþ�$�Žî«ï1sþ�$�Žîrï1sþ�$�Õî7Iï1sþ�$�Õî9‚ï1sþ�$�Žî;»ï1sþ�$�Žî=ôï1sþ�$�Žî.ï1sþ�$�Õî0Wï1sþ�$�Žî2ï1sþ�$�Žî4Éï1sþ�$�Žî+åï1sþ�$�Žî)¬ï1sþ�$�Žî'sï1sþ�$�Žî%:ï1sþ�$�Õîï1Pþ�$¤îï1Pþ?4�$î@-ï1sþ�$€îï3Ðþ?�$îÈpï4Éðî)¬ï-þ�$î*:tï.ðî,ºï.ðî.óï.ðî1,ï.ðî3eï.ðî5žï.ðî7ï.ðî9Éï.ðî<Iï.ðî>;ï.ðî&Wï.ðî(ï.ðî�ï.óð$î%:ï,Þþ:�$î%:ï-þ�$î%:ï-þ�$«î�ï-Ið/î.ï/‚ðî�Žï#%þ-�$î-ï Èþ�$€î�Žï ¥þ-%�$î$¬ï Èþ�$�Õî&åï Èþ�$�Žî)ï Èþ�$�Žî+Wï Èþ�$�Žî-ï Èþ�$�Õîäï Èþ�$�Õîï Èþ�$�ŽîVï Èþ�$�Žîï Èþ�$�Žî"sï Èþ�$�Žî :ï Èþ�$�Žîï Èþ�$�ŽîÈï Èþ�$�Õî ¹ï Èþ�$�Õîòï Èþ�$�Žî+ï Èþ�$�Žîdï Èþ�$�Žî€ï Èþ�$�ŽîGï Èþ�$�Žîï Èþ�$�Žî�Žï þ�$ÇîÈï!žðîVï!žðî Èï!žðîï!žðî,,ï!žðî)óï!žðî'ºï!žðî%ï!žðî#ï!žðî ï!žðîï!žðîrï!žðîòï!žðî+ï!žðîdï!žðîï!žðî�ï!žðî9ï!žðî«ï!žðîï!žðîÇï!Vþ�$�Žî.¬ï!žðÿ�������öä���Ž+K&bX(����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������BusyRefMapTestSyndrome is xor'ed with the checkbits on storage writes><TestSyndromeWPDirtyStoreFlushNoWake = never wakeup fault taskWMiss = wakeup fault task on every missWMissM3M2M1M0----------IFURefRefCacheSubTaskFaultSRN for first fault----LoadedBeingVacantDirtyDisBR = "disable base registers", prevents base registers from being added to MarFDMiss = "force dirty miss", causes each reference to miss and store the victim, even if not dirtyDisCFDisBRThe read out of VA is in the same bit positions as base register load via BrLo_ and BrHi_0123456789101112131415McrVMcrNVUseMcrV = Use McrV as the victim and McrNV as the next victim for all cache missesSRN for first faultFault----RefTypeRefType:0 = undef.3 = Map_ or non storage op.MapBuf1 = storage read (Fetch_, Store_, PreFetch_, IOFetch_, IFU fetch)Column ofVictimStore'B_Pipe1(B_VaLo)B_Pipe0(B_VaHi)B on Map_2 = storage write (IOStore_ or dirty victim write)--DisCF = "disable cache flags", causes cache flags to read out false and prevents writing themNext VictimDirtyVacantBeingLoadedVictimNoRefDisEC'Mcr[0:10] loaded from MarMux, Mcr[13:15] from BMuxASRN[0:3]ASRN[0:3]B_Pipe3'B_Pipe2'B_Pipe4'B_Config'B_FaultInfo'(B_Errors')(B_Map')Quadword'No. faults - 1No. faults - 17 is no fault7 is no fault<>VA[4:15]EmuProcSRN[0:3]<><><><ProcSRN[0:3]>B_Pipe5(B_PRef)Trouble'MemError'ECFault'Bit in word<>Word code'><ParitySyndrome<>dVA_VicFDMissUseMcrVDisHoldReportSE'NoWakedVA_Vic = put contents of cache address memory addressed by row of last reference and columnof Victim into Pipe0 and Pipe1>1514131211109876543210VA[16:31]<1514131211109876543210<>>><<1514131211109876543210Real page no. (RP)<>15141312111098765432101514131211109876543210WP15141312111098765432101514131211109876543210--------------WP------1514131211109876543210LoadTestSyndrome1514131211109876543210LoadMcr--1514131211109876543210Emu><<>MapTroubleMemErrorEcFaulttruefalsexPage faulttruetruexMap parity errorfalsefalsefalseNo errorfalsetruexUncorrectable error (DE)falsefalsetrueCorrectable error (SE)ReportSE' = when true, wakeup fault task on correctable errors (SE's), provided NoWake is falseWord CodeDisHold = prevent hold from occurringNoRef = prevent storage references011101110111Meaningword 0word 1word 2word 3otheruncorrectableChip SizeMapDirtybMapParityM0, M1, M2, or M3 indicates that a storage boardpair is plugged into slot 0, 1, 2, or 3.Chip Size0 = 4kx1 ic's1 = 16kx1 ic's2 = 64kx1 ic's3 = 256kx1 ic'sTaskD1MemReg.silFigure 10The Pipe and Other Memory RegistersReverseda1111Pipe5[0:7] are in the Pipe, Pipe5[8:15] are values read from cache address section during last ref.CFlags_A'ProcTag6/26/80��î¹tï;tðî�ïH‚ðî+ïIðîÈï"ºð;î,,|ï"ƒðî äï"ƒðî äï&3þ«�$îtï%ÈðîïH‚ðîdïH‚ðîï;tðîï<ðîÈïHð îÈïð'îAïðî:ï5Wðî6,ï5Wðî2ï5Wðî.ï5WðîA×ï%Èðî=ôï%Èðî:ï%Èðî6,ï%Èðî2ï%Èðî!åï<ðî¬ï;tðîï<ðîäïXŸðî-Iïdðî?žïòðîEtï+ðîHï+ðî8¬ï*ðî8ôï+žðî0åï+ðî-ï+ðîÈïòðQîÈï+ðbî-ïðî)¬ïðîÈï[õðYî äïeCþ>;�$îLïc.þ�$9î äïc þ>^�$î äïc þ�$]î«ïb þ�$î%:ïb þ�$î4Éïb þ�$îÈïb þ�$îïb þ�$î!Vïb þ�$î)ïb þ�$î-ïb þ�$î0åïb þ�$î8¬ïb þ�$î@tïb þ�$îDXïb þ�$îH;ïb þ�$îïaÊðîrïaÊðîVïaÊðî:ïaÊðîïaÊðî#ïaÊðî&åïaÊðî*ÈïaÊðî.¬ïaÊðî2ïaÊðî6,ïaÊðî:ïaÊðî=ôïaÊðîA×ïaÊðîE»ïaÊðîIŸïaÊðîVïðî#ÖïðîÈïðRî?WïXŸðî-ïXðîE»ï%ÈðîIŸï%ÈðîïXŸðîÈïU‘ðîVïU‘ð îVïR<ðî+ï<ðîVïTtðAî&žï<ð î'ºï;tðîºï<ðî�pï_Jðî¹ï]Ÿðî�ïd‘ðî�ïbçðîrïLfð îVtïSXð2î9ÉïðîÈïÖð]î=ôï<ðî-ï<ðî1,ï<ðî9;ï<ðî8ôï;tðîFØï<ðî5ïðî"sï&3þ Ö�$î-ï%ÈðîÈïð2î"sï5Wð îsï5Âþr�$î(ï5Âþr�$î(ï]þ��$îsï]þr�$î"sïòð î-ïJtþ�$îLïJtþ�$îrpïO»ðî¹ïWÊðîrïIŸðîrï5ð îUï9ðîrïGôðîrïNðî&WtïH‚ð î2×ïY.ðî3¬ï€ðî3ïXð î3¬ïdð îs|ï`wðîKï`wðîºïd'þr�$î2tïc¼ðî7Iïd'þ�$î-×ïY.ðîÈï5Wðî+ï5ÂþU�$îHï5Âþ�$î ä|ï2ðîVï2ðîsï2ðî+žï2ðî äïðîHï]þ�$î+ï]þU�$îVïðîsïðîtïòðî+å|ïðîrpï<ðîrï:åðîÈtïGôðîHïIðîºïGôðî"ºïIðî!åïGôðî1ºïGôðî-ïHíþ+�$î7×ïHíþr�$î-|ïE=ðî;tïE=ðî?WtïH‚ð î<ïHíþ€�$îEtïHíþ€�$îG|ïE=ðî<ïE=ðîH‚tïH‚ðî:žïJtðî-ïJßþ V�$î@-ïJßþò�$î-|ïG/ðîKïG/ðî¹tï¬ðî�ïðî+ï¬ðîïðîï¬ðîÈïðî2ï¬ðî1sïðîDXï¬ðîE»ïðîIŸï¬ðîHÉïðîÈïdð\îäïHðîsïb þ�$î<ïb þ�$î<ï]çþ�$îsï]çþ�$îK|ï[¾ðîIŸtï]ðîE»ï]ðîA×ï]ðî=ôï]ðî:ï]ðî6,ï]ðî2ï]ðî.¬ï]ðî*Èï]ðî&åï]ðî#ï]ðîï]ðî:ï]ðîVï]ðîrï]ðîï]ðîH;ï]çþ�$îDXï]çþ�$î@tï]çþ�$î8¬ï]çþ�$î0åï]çþ�$î-ï]çþ�$î)ï]çþ�$î!Vï]çþ�$îï]çþ�$îÈï]çþ�$î4Éï]çþ�$î%:ï]çþ�$î«ï]çþ�$î äï^Qþ�$]î äï^Qþ>^�$îLï^uþ�$9î äï`Šþ>;�$î*ï_ð î äï_nþ�$î0ï_nþ�$î ä|ï[¾ðî<ïWƒþ�$îsïWƒþ�$îIŸtïVðîE»ïVðîA×ïVðî=ôïVðî:ïVðî6,ïVðî2ïVðî.¬ïVðî*ÈïVðî&åïVðî#ïVðîïVðî:ïVðîVïVðîrïVðîïVðîH;ïWƒþ�$îDXïWƒþ�$î@tïWƒþ�$î8¬ïWƒþ�$�Õî0åïWƒþ�$î-ïWƒþ�$î)ïWƒþ�$î!VïWƒþ�$îïWƒþ�$îÈïWƒþ�$�Õî4ÉïWƒþ�$�Õî%:ïWƒþ�$î«ïWƒþ�$î äïWíþ�$]î äïWíþ>^�$î äïZ&þ>;�$îLïXþ�$9îsïY þÖ�$î&WïY þd�$îs|ïUZðî+žïUZðî0åïY þ«�$î:WïY þò�$î<IïY þÇ�$îIŸïY þ€�$î;tïUZðîKïUZðî0åïUZðî<ïUZðî<ïMÊþ�$îsïMÊþ�$îIŸtïLôðîE»ïLôðîA×ïLôðî=ôïLôðî:ïLôðî6,ïLôðî2ïLôðî.¬ïLôðî*ÈïLôðî&åïLôðî#ïLôðîïLôðî:ïLôðîVïLôðîrïLôðîïLôðîH;ïMÊþ�$îDXïMÊþ�$î@tïMÊþ�$î8¬ïMÊþ�$î0åïMÊþ�$î-ïMÊþ�$î)ïMÊþ�$î!VïMÊþ�$îïMÊþ�$îÈïMÊþ�$î4ÉïMÊþ�$î%:ïMÊþ�$î«ïMÊþ�$î äïN4þ�$]î äïN4þ>^�$îLïNXþ�$9î äïPmþ>;�$î'sïNæðî äïOQþH�$î2ïOQþ�$î ä|ïK¡ðîKïK¡ðî<ïGfþ�$îsïGfþ�$îIŸtïFðîE»ïFðîA×ïFðî=ôïFðî:ïFðî6,ïFðî2ïFðî.¬ïFðî*ÈïFðî&åïFðî#ïFðîïFðî:ïFðîVïFðîrïFðîïFðîH;ïGfþ�$îDXïGfþ�$î@tïGfþ�$î8¬ïGfþ�$î0åïGfþ�$î-ïGfþ�$î)ïGfþ�$î!VïGfþ�$îïGfþ�$îÈïGfþ�$î4ÉïGfþ�$�Žî%:ïGfþ�$î«ïGfþ�$î äïGÑþ�$]î äïGÑþ>^�$îLïGôþ�$€î äïJ þ>;�$î<ï:åþ�$îsï:åþ�$îIŸï:ðîE»ï:ðîA×ï:ðî=ôï:ðî:ï:ðî6,ï:ðî2ï:ðî.¬ï:ðî*Èï:ðî&åï:ðî#ï:ðîï:ðî:ï:ðîVï:ðîrï:ðîï:ðîH;ï:åþ�$îDXï:åþ�$î@tï:åþ�$î8¬ï:åþ�$î0åï:åþ�$î-ï:åþ�$î)ï:åþ�$î!Vï:åþ�$îï:åþ�$îÈï:åþ�$î4Éï:åþ�$î%:ï:åþ�$î«ï:åþ�$î äï;Pþ�$]î äï;Pþ>^�$îLï;tþ�$9î äï=‰þ>;�$î6,ï<ðî<ï4;þ�$îsï4;þ�$îIŸï3eðîE»ï3eðîA×ï3eðî=ôï3eðî:ï3eðî6,ï3eðî2ï3eðî.¬ï3eðî*Èï3eðî&åï3eðî#ï3eðîï3eðî:ï3eðîVï3eðîrï3eðîï3eðîH;ï4;þ�$îDXï4;þ�$î@tï4;þ�$î8¬ï4;þ�$î0åï4;þ�$î-ï4;þ�$î)ï4;þ�$î!Vï4;þ�$îï4;þ�$îÈï4;þ�$î4Éï4;þ�$î%:ï4;þ�$î«ï4;þ�$î äï4¥þ�$]î äï4¥þ>^�$îLï4Éþ�$9î äï6Þþ>;�$î<ï)óþ�$îsï)óþ�$îIŸï)ðîE»ï)ðîA×ï)ðî=ôï)ðî:ï)ðî6,ï)ðî2ï)ðî.¬ï)ðî*Èï)ðî&åï)ðî#ï)ðîï)ðî:ï)ðîVï)ðîrï)ðîï)ðîH;ï)óþ�$îDXï)óþ�$î@tï)óþ�$î8¬ï)óþ�$dî0åï)óþ�$î-ï)óþ�$î)ï)óþ�$î!Vï)óþ�$îï)óþ�$îÈï)óþ�$î4Éï)óþ�$î%:ï)óþ�$î«ï)óþ�$î äï*^þ�$]î äï*^þ>^�$îLï*þ�$9î äï,—þ>;�$î+ï+ðîï+ðîóï+ðîÖï+ðî"ºï+ðî&žï+ðî*:ï+ðî5åï+ðîIXï+ðîAIï+ðî=ï+ðî<ï$¬þ�$îsï$¬þ�$�ÕîIŸï#ÖðîE»ï#ÖðîA×ï#Öðî=ôï#Öðî:ï#Öðî6,ï#Öðî2ï#Öðî.¬ï#Öðî*Èï#Öðî&åï#Öðî#ï#Öðîï#Öðî:ï#ÖðîVï#Öðîrï#Öðîï#ÖðîH;ï$¬þ�$îDXï$¬þ�$î@tï$¬þ�$î8¬ï$¬þ�$î0åï$¬þ�$î-ï$¬þ�$�Õî)ï$¬þ�$�Õî!Vï$¬þ�$�Õîï$¬þ�$�ÕîÈï$¬þ�$�Õî4Éï$¬þ�$î%:ï$¬þ�$�Õî«ï$¬þ�$�Õî äï%þ�$]î äï%þ>^�$îLï%:þ�$9î äï'Oþ>;�$îrpï&ðîrï$eðî<ïþ�$îsïþ�$îIŸtï,ðîE»ï,ðîA×ï,ðî=ôï,ðî:ï,ðî6,ï,ðî2ï,ðî.¬ï,ðî*Èï,ðî&åï,ðî#ï,ðîï,ðî:ï,ðîVï,ðîrï,ðîï,ðîH;ïþ�$îDXïþ�$î@tïþ�$î8¬ïþ�$î0åïþ�$î-ïþ�$î)ïþ�$î!Vïþ�$îïþ�$îÈïþ�$î4Éïþ�$î%:ïþ�$î«ïþ�$î äïlþ�$]î äïlþ>^�$îLïþ�$9î äï ¥þ>;�$î+pïðî=tïðî<ï Öþ�$îsï Öþ�$îIŸï �ðîE»ï �ðîA×ï �ðî=ôï �ðî:ï �ðî6,ï �ðî2ï �ðî.¬ï �ðî*Èï �ðî&åï �ðî#ï �ðîï �ðî:ï �ðîVï �ðîrï �ðîï �ðîH;ï Öþ�$îDXï Öþ�$î@tï Öþ�$î8¬ï Öþ�$î0åï Öþ�$î-ï Öþ�$î)ï Öþ�$î!Vï Öþ�$îï Öþ�$îÈï Öþ�$î4Éï Öþ�$î%:ï Öþ�$î«ï Öþ�$î äï@þ�$]î äï@þ>^�$îLïdþ�$9î äï yþ>;�$î-ï€ðî0åï]þ9�$î:åï]þ«�$î;»|ïðî0åïðî<ï]þÇ�$îIæï]þ9�$î<ïðîKïðîÈuïEtð îïEtðî :ïEtðî+tïDðî¬ïDðî!žïDðî%ÈïDð î+ïBôðî¬ïBôðî!žïBôðî%ÈïBôðî+ïA×ðî¬ïA×ðî ïA×ðî%ÈïA×ðî+ï@»ðî¬ï@»ðî!žï@»ðî%Èï@»ðî+ï?žðî¬ï?žðî ï?žðî%Èï?žðîÈïdð_î8uïE-ð îÈtïºð%îÈïð"î9ÉïCÉðî9ÉïBðî9ÉïAðî9Éï@tðî?uïE-ðî?žtïCÉðî?žïBðî?žïAðî?žï@tðî9;ï?Wðî?žï?Wð î=ôï5Wð îE-ï5åðîDŸï4ÉðîIï5åðîH‚ï4Éðîï2ð0îï0åð(î1sï2ð î7Iï2ð î7Iï0åðî7Iï/Éðî7Iï.¬ðî#ïXŸðîBôuïðî"srïð îHï+ð#î2tïIðî��ïh¼ðîïc¼ðîrïc¼ðîVïc¼ðî:ïc¼ðîÈï8ôðcî¹pï+Wð îtï<ðîÈï;tðîDXuïòð������� Jä����òLfgç³������������������������������������������������������������������������������00010203040506070809101112131415WORD0DROW1514131211100908070605040302010000010203040506070809101112131415WORDDROW1514131211100908070605040302010012301234567xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx007206106307046247147346026227127326067266166367013212112313052253153352032233133332073272172373015214114315054255155354034235135334075474174375016217117316057256156357037136236337076277177376Check bits are EXOR ofdata bits marked xand number ofones inSyndrome isandfurthermoreTHEN0ALWAYSALWAYSNO ERRORNot 0ODDsyndrome bitsSINGLE ERROR (data bit)Bits 4,5,6 give bad word:4 5 6word0 1 11 0 11 1 01 1 101230 0 0 00 0 0 11 1 1 01 1 1 1...Bits 3,2,1,0 give bad bit:3 2 1 0bit00011415...Bad bit will be corrected iferror correction is enabledNot 0ODDin SyndromeSINGLE ERROR (check bit)Syndromebad check bit20010004002001000400200176543210Not 0ODDsyndrome bits4,5,6 have 0or 1 ones onTRIPLE ERROR!!(but no data bits will be changed)Not 0EVENALWAYSDOUBLE ERRORNo data bits will be changed.Syndrome is nonsense.Syndrome is nonsense.No data bits will be changed.4,5,6 have 2or 3 ones onexactly 1 oneInterpretation of SYNDROMEcomputed check bitsTestSyndromemessy EXORnetwork>Quad-wordin Cache>>r(usually zero)>>Quad-wordin storagecheck bitsnetworkEXORmessy >computed check bitsr>>>SYNDROME>qin CacheQuad-word>EnableqPipe 4rrin storage/4x1688other stuffErrorCorrectorcdeffedcSYNDROMEfor errorin bitIfSYNDROMEisD1ErrCorr.sil9/5/79Figure 11Error Correction���îŽtïQôðîŽïPØðîŽïO»ðîŽïNŸðîŽïM‚ðîŽïLfðîŽïKJðîŽïJ-ðîŽïIðîŽïGôðîŽïFØðîŽïE»ðîŽïDŸðîŽïC‚ðîŽïBfðîŽïAIðîÇpïNXðîÇïLðîÇïKðîÇïIXðîÇïFðîrïSXþò�Gîrï@»þ�Gäîrï@tþò�Gîrï,,þò�Gîrï,sþ�Gäîrï?þò�GîÇï5ðîÇï6»ðîÇï8eðîÇï:ðîŽtï-ðîŽï.ðîŽï/:ðîŽï0WðîŽï1sðîŽï2ðîŽï3¬ðîŽï4ÉðîŽï5åðîŽï7ðîŽï8ðîŽï9;ðîŽï:WðîŽï;tðîŽï<ðîŽï=ðîŽï)eðîŽï(HðîŽï',ðîŽï&ðîŽï$óðîŽï#ÖðîŽï"ºðîŽï!žðîŽï ðîŽïeðîŽïHðîŽï,ðîŽïðîŽïóðîŽïÖðîŽïºðîÇpï%ÈðîÇï$ðîÇï"sðîÇï Èðîrï*Èþò�Gîrï+þ�Gäîrïäþò�Gîrïþò�Gîrïäþ�Gäîrïþò�GîÇï€ðîÇï+ðîÇïÖðîÇïðîŽtïrðîŽïŽðîŽï«ðîŽïÇðîŽïäðîŽï �ðîŽïðîŽï9ðîŽï VðîŽïrðîŽïðîŽï«ðîŽïÈðîŽïäðîŽïðîŽïðîÇpï1ºðîÇïsðîÇï +ðîŽïRíþV�$îäïrþ�$NŸîŽïQÑþV�$îŽïP´þV�$îŽïO˜þV�$îŽïN{þV�$îŽïM_þV�$îŽïLBþV�$îŽïK&þV�$îŽïJ þV�$îŽïHíþV�$îŽïGÑþV�$îŽïF´þV�$îŽïE˜þV�$îŽïD{þV�$îŽïC_þV�$îŽïBBþV�$îŽïA&þV�$îŽï,ÞþV�$îŽï-úþV�$îŽï/þV�$îŽï03þV�$îŽï1PþV�$îŽï2lþV�$îŽï3‰þV�$îŽï4¥þV�$îŽï5ÂþV�$îŽï6ÞþV�$îŽï7ûþV�$îŽï9þV�$îŽï:4þV�$îŽï;PþV�$îŽï<mþV�$îŽï=‰þV�$îŽï>¦þV�$îŽï*^þV�$îŽï)AþV�$îŽï(%þV�$îŽï'þV�$îŽï%ìþV�$îŽï$ÏþV�$îŽï#³þV�$îŽï"–þV�$îŽï!zþV�$îŽï ]þV�$îŽïAþV�$îŽï%þV�$îŽïþV�$îŽïìþV�$îŽïÏþV�$îŽï³þV�$îŽï–þV�$îŽïNþV�$îŽïkþV�$îŽï‡þV�$îŽï¤þV�$îŽïÀþV�$îŽï ÝþV�$îŽï ùþV�$îŽïþV�$îŽï 2þV�$îŽïOþV�$îŽïkþV�$îŽïˆþV�$îŽï¤þV�$îŽïÁþV�$îŽïÝþV�$îŽïúþV�$îŽïþV�$î �ïSXðî«ïSXðî VïSXðî�ïSXðî«ïSXðîVïSXðîïSXðî«ïSXðî �tïPØðî �ïNŸðî �ïLfðî �ïJ-ðî �ïGôðî �ïE»ðî �ïC‚ðî �ïAIðî �ï-ðî �ï/:ðî �ï1sðî �ï3¬ðî �ï5åðî �ï8ðî �ï:Wðî �ï<ðî �ï(Hðî �ï&ðî �ï#Öðî �ï!žðî �ïeðî �ï,ðî �ïóðî �ïºðî �ïrðî �ï«ðî �ïäðî �ïðî �ï Vðî �ïðî �ïÈðî �ïðî«ïO»ðî«ïNŸðî«ïKJðî«ïJ-ðî«ïFØðî«ïE»ðî«ïBfðî«ïAIðî«ï-ðî«ï.ðî«ï1sðî«ï2ðî«ï5åðî«ï7ðî«ï:Wðî«ï;tðî«ï',ðî«ï&ðî«ï"ºðî«ï!žðî«ïHðî«ï,ðî«ïÖðî«ïºðî«ïrðî«ïŽðî«ïäðî«ï �ðî«ï Vðî«ïrðî«ïÈðî«ïäðîÈïrþ�$PØî VïLfðî VïM‚ðî VïKJðî VïJ-ðî VïAIðî VïBfðî VïDŸðî VïC‚ðî Vï/:ðî Vï0Wðî Vï.ðî Vï-ðî Vï5åðî Vï7ðî Vï9;ðî Vï8ðî Vï#Öðî Vï$óðî Vï"ºðî Vï!žðî Vïºðî VïÖðî Vïðî Vïóðî Vï«ðî VïÇðî VïŽðî Vïrðî Vï Vðî Vïrðî Vï«ðî Vïðî�ïGôðî�ïIðî�ïFØðî�ïE»ðî�ïAIðî�ïBfðî�ïDŸðî�ïC‚ðî�ï/:ðî�ï0Wðî�ï.ðî�ï-ðî�ï1sðî�ï2ðî�ï4Éðî�ï3¬ðî�ïeðî�ï ðî�ïHðî�ï,ðî�ïºðî�ïÖðî�ïðî�ïóðî�ï«ðî�ïÇðî�ïŽðî�ïrðî�ïäðî�ï �ðî�ï9ðî�ïðî«ï3¬ðî«ï4Éðî«ï2ðî«ï1sðî«ï-ðî«ï.ðî«ï0Wðî«ï/:ðî«ï8ðî«ï9;ðî«ï7ðî«ï5åðî«ï:Wðî«ï;tðî«ï=ðî«ï<ðî«ï(Hðî«ï)eðî«ï',ðî«ï&ðî«ï!žðî«ï"ºðî«ï$óðî«ï#Öðî«ïóðî«ïðî«ïÖðî«ïºðî«ï,ðî«ïHðî«ï ðî«ïeðî«ïðî«ï9ðî«ï �ðî«ïäðî«ïrðî«ïŽðî«ïÇðî«ï«ðî«ïðî«ï«ðî«ïrðî«ï Vðî«ïÈðî«ïäðî«ïðî«ïðîVïeðîVï ðîVïHðîVï,ðîVïºðîVïÖðîVïðîVïóðîVï#ÖðîVï$óðîVï"ºðîVï!žðîVï&ðîVï',ðîVï)eðîVï(HðîVïðîVïðîVïäðîVïÈðîVï VðîVïrðîVï«ðîVïðîVï«ðîVïÇðîVïŽðîVïrðîVïäðîVï �ðîVï9ðîVïðîVïGôðîVïIðîVïFØðîVïE»ðîVïAIðîVïBfðîVïDŸðîVïC‚ðîVïLfðîVïM‚ðîVïKJðîVïJ-ðîVïNŸðîVïO»ðîVïQôðîVïPØðîÈïrþ�$PØîïPØðîïQôðîïO»ðîïNŸðîïJ-ðîïKJðîïM‚ðîïLfðîïC‚ðîïDŸðîïBfðîïAIðîïE»ðîïFØðîïIðîïGôðîï3¬ðîï4Éðîï2ðîï1sðîï-ðîï.ðîï0Wðîï/:ðîï8ðîï9;ðîï7ðîï5åðîï:Wðîï;tðîï=ðîï<ðîïðîïðîïäðîïÈðîï Vðîïrðîï«ðîïðîï«ðîïÇðîïŽðîïrðîïäðîï �ðîï9ðîïðî«ïQôðî«ïNŸðî«ïLfðî«ïKJðî«ïGôðî«ïFØðî«ïDŸðî«ïAIðî«ï-ðî«ï0Wðî«ï2ðî«ï3¬ðî«ï7ðî«ï8ðî«ï:Wðî«ï=ðî«ï)eðî«ï&ðî«ï#Öðî«ï"ºðî«ïeðî«ïHðî«ïðî«ïºðî«ïðî«ïäðî«ï«ðî«ï Vðî«ï9ðî«ïäðî«ï«ðî«ïŽðî rïrþ�$PØîÈïrþ�$PØîïQôðîïPØðîïO»ðîïNŸðîïM‚ðîïLfðîïKJðîïJ-ðîïIðîïGôðîïFØðîïE»ðîïDŸðîïC‚ðîïBfðîïAIðîï=ðîï<ðîï;tðîï:Wðîï9;ðîï8ðîï7ðîï5åðîï4Éðîï3¬ðîï2ðîï1sðîï0Wðîï/:ðîï.ðîï-ðîï)eðîï(Hðîï',ðîï&ðîï$óðîï#Öðîï"ºðîï!žðîï ðîïeðîïHðîï,ðîïðîïóðîïÖðîïºðîïðîïðîïäðîïÈðîï«ðîïðîïrðîï Vðîï9ðîïðîï �ðîïäðîïÇðîï«ðîïŽðîïrðî rïU&þ V�$îïSþ�$9îrïSþ�$9îïSþ�$9îrïSþ�$9îïSþ�$9î �ïVõðî �ïUØðî!ï?æþ-×�Gî(ïBfð î(ïAIðî(ï@-ðî0åïAIðî0åï@-ðîBï@-ðî$ï=ôðî)¬ï=ôðî2ï=ôðî:åï=ôðî!ï=Bþ-×�$î#ï;-ðî*Èï;-ðî0åï;-ð î:åï;-ðî:åï9‚ðî=ï7×ðîAï7×ðî=ï6,ðî=ï5ðî=ï3óðî=ï2×ðîBï6,ðîBï5ðîBï3óðîBï2×ðîAï2×þ�$î=ï7´þ«�$î=ï-×ðî=ï,ºðî=ï)eðî=ï(Hðî?Wpï+åðî?Wï+Wðî?Wï*ÈðîBï(Hþ�$Vî:åtï1,ðî=ï/‚ðîBï/‚ðîBï-×ðîBï,ºðîBï)eðîBï(HðîC;pï+åðîC;ï+WðîC;ï*Èðî=ï/^þ«�$î!ï$Ïþ-×�$î:åtï&žðî:åï%ðî#ï"ºðî*Èï"ºðî0åï!žðî:åï"ºðî=ï!ðîDXï!ð îCÉïþ�$î>Éïeðî>ÉïHðî>Éï,ðî>Éïðî>Éïóðî>ÉïÖðî>Éïºðî>ÉïðîGïðîGïºðîGïÖðîGïóðîGïðîGï,ðîGïHðîGïeðî!ïAþ-×�$î#ï+ðî*Èï+ðî1sï+ð î1sïðî1sïòðî:åï+ðî:åïð"î!ïAþ-×�$î#ï+ðî*Èï+ðî3ï+ðî:åï+ðî:åï ðî:åïòðî:åïòðî'sïdþ�$8î0Wïdþ�$8î9Éïdþ�G8î!ïdþ�$8î!ï@þ-×�$îNæï@þ�$8Bî!ïC_þ-ú�$î:åïòðî0åï:ðî0åï8ôðî0åï"ºð î+åpïDXðîrïZJþ�$rîVïZ&þ�$•î9ï]|þ�$îVï[õþ�$«î9ï[Ñþ@�$î9ï[Ñþ�$ÎîÈtï[õðî9ï^ þ�$Îî9ï^ þ@�$îVï^.þ�$«î9ï_µþ�$îÈï^.ðî rï]ðî rï[õðî rïZØðî|ïY>ðîVïd'þ�$îrï`õþ�$UîVï`Ñþ@�$îVï`Ñþ�$yîätïb ð îäïaƒðîVï^˜þ�$îVïZ&þ�$îrï\îþÇ�$îÖ|ïY>ðîÖï[vðîï^¼þ�$9î ï[vðîVuï_Øðî&åï[õþ�$äî&åï[Ñþ«�$î-ï[Ñþ�$ î&åïdµþÎ�$îrïc þs�$î%È|ïZZðî%Èï_Zðî&åï_'þ«�$î'stïb ð î'sï`õð î'sï]Ÿð î2ï`Cþ�$î2ïdµþ�$î3ï`õðî3ïbðî3ïc.ðî2ï`Cþ�$•î8ï`gþ�$rî-ïc þr�$î0å|ï_Zðî0åtï\ƒðî0Wï\_þ�$Îî0Wï\_þ@�$î;tï\ƒþ�$«î0Wï^ þ�$î4Éï^.þ�$9î4;|ïZèðî4ÉïY.þ�$Uî4ÉïY þÇ�$î-ï^ þ«�$î/:ïVõþ�$9î/:ïVÑþV�$î6,ïUZðî6,ïS!ðî=ïdµþ9�$îDXïaƒþ�$Uî=ïa`þ]�$î=ïa`þ�$yî/:ïc þ�$ëî/:ïeÑþ �$î9Éïc.þ�$Çî9Éïc þU�$î<ï_Zðî=ïY þ ��$îGïWƒþ�$«î=ïW_þ $�$î=ïW_þ�$Îî@ttïWƒðîBïY þ�$yî<|ïT=ðî?Wï]!ðîH;tïbðîH;ïc.ð îGïa`þ�$yîGïa`þ]�$îNXïaƒþ�$UîGïdµþ9�$îF|ï_Zðî?æï^.þ�$Uî>;tï]ðîB|ï]!ðî9ÉïP´þ ä�$îGïNŸþ�$9î9ÉïN{þ�$î9ÉïN{þ�$]î>ÉtïO-ðîBïPØþ�$«îB|ïM’ðî<ïPØþ�$9î<ïM’ðîVï_'þ�$îVï\îþ�$î'stï\ƒð îïb ðîïc¼ðî$¬ï^¼ðî;tïXŸðî9ÉïSðîDXïc þÇ�$î>;ïc.ðî>;ïbð î=ï ìþ V�$î :|ï[vðî :ï[vðî¬ï[vðî¬ï[vðî7ïUZðî7ïUZðî7ïUZðî7ïUZðî#ï^ þä�$î$¬ï]Ÿþ�$î:WïWíþU�$î;»ïWƒþ�$îtïU‘ðîäïTtð îºïSXðî$ïBfðî!žïAIðî$ï@-ðî>Éuïòð î@tï�Õðî!žrïGð îïð�������§ä��Ç�ÕLBe ~������������������������������������������������������������������������������������������Dorado Hardware ManualMemory SectionAugust 1, 198534Memory Section Dorado supports a linear 22-bit to 28-bit virtual address space and contains a cache to increasememory performance. We currently use a 25 bit + parity virtual address with 256 word pages.All memory addressing is done in terms of virtual addresses; later sections deal with the map andpage faults. Figure 8 is a picture of the memory system; Figure 9 shows cache, map, and storageaddressing. As Figure 8 suggests, the memory system is organized into three more-or-lessindependent parts: storage, cache data, and addressing.Inputs to the memory system are NEXT (the task that will control the processor in the next cycle)from the control section, subtask from io devices, Mar (driven from A or by the IFU), MemBase,B, the fast input bus, and an assortment of control signals. Outputs are B, Md to the processor,the F/G registers for the IFU, the fast output bus (data, task, and subtask), and Hold.The processor references the memory by providing a base register number (MemBase) and 16-bitdisplacement (Mar) from which a 28-bit virtual address VA is computed; the kind of reference isencoded in the ASEL field of the instruction in conjunction with FF[0:1]. Subsequently, cachereferences transfer single 16-bit words between processor and cache; fast I/O referencesindependently transfer 256-bit munches between I/O devices and storage. There is a weakcoupling between the two data sections, since sometimes data must be loaded into the cache fromstorage, or returned to storage.The storage pipeline allows new requests every 8 cycles, but requires 28 cycles to complete a read.The state of the pipeline is recorded in a ring buffer called the pipe, where new entries areassigned for each storage reference. The processor can read the pipe for fault reporting or foraccess to internal state of the memory system.Memory AddressingProcessor memory references supply (explicitly) a 16-bit displacement D on Mar and (implicitly) a5-bit task-specific base register number MemBase. MemBase addresses 1 of 32 28-bit baseregisters. The full virtual address VA[4:31] is BR[MemBase]+D. D is an unsigned number.The 28 bits in BR, VA, etc. are numbered 4:31 in the discussion here, consistent with the hardwaredrawings. This numbering conveniently relates to word boundaries.Note that although the VA path is 28 bits wide, limitations imposed by cache and map geometry limitusable virtual memory to only 224 words.MemBase can be loaded from the five low bits of FF, and the FlipMemBase function loadsMemBase from its current value xor 1. The intent is to point base registers at active structures inthe virtual space, so that memory references may specify a small displacement of 16 bits ratherthan full 28-bit VA's. In any cycle with no processor memory reference, the IFU may make one. IFU references alwaysuse base register 31.Programmers may think of Mar as an extension of A since, when driven by the processor, Mar contains thesame information as A.����������������������������������������������������î¶ïfªpô�€î#$q î5pô�îFHïfñî¶ïa×r p�î¶ï^eô�ðWô�®î¶ï\›ô�¡ðUô�¢î¶ïZÐô�ô�ŽðAî¶ïYô�ô�ŽðSî¶ïW;ô�îô�ïðCî¶ïUpô�ð7î¶ïQþô�‡ðZô�ˆî¶ïP4ô�ŽðCô�î¶ïNiô�šðRô�›î¶ïLžô�ðWî¶ïI-ô�•ð\î¶ïGbô�–ð7qpð&î¶ïE—ô�ªô�«ðBî¶ïCÍô!ðMô" î¶ïBô�åqpô�æð2î¶ï@7ô�ŽðDô�î¶ï>mô�î¶ï:ûô�ˆðOô�‰î¶ï90ô�Èð%ô�Éð8î¶ï7fô�®ð$ô�¯ð<î¶ï5›ô�ð.î¶ï0‚sî¶ï-pô�ŠðFq�pî¶ï+Eô�÷ð(ô�øð/î¶ï){ô�Õð?ô�Öîyï&¹tô�Åô�Æu�tðLîyï%Xô�ðBîyï"ºô�°ð;ô�±ð(îyï!ô�ï! ï!î¶ïÄpô�Ëð;ô�Ìî¶ïùô�”ðAô�•ð"î¶ï/ô�¬ð:ô�ð%î¶ïdô�î¶ïòô�†ðGô�‡î¶ï(ô�îyïftô�‡ðDô�ˆð#îyïô��������Ì����¶â=ñY)*��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Dorado Hardware ManualMemory SectionAugust 1, 198535The base register addressed by MemBase can be loaded using BrLo_A and BrHi_A functions. Processor Memory ReferencesMemory references are initiated only by the processor or IFU. This section discusses whathappens only when references proceed unhindered. Subsequent sections deal with map faults,data errors, and delays due to Hold.Processor references (encoded in the ASEL and FF[0:1] instruction fields as discussed in the"Processor Section" chapter) have priority over IFU references, and are as follows:Fetch_Initiates one-word fetch at VA. Data can be retrieved in anysubsequent instruction by loading Md into R or T, onto A or B datapaths, or masking in a shift operation.Store_Stores data on B into VA.LongFetch_A fetch for which the complete 28-bit VA is(B[4:15],,Mar[0:15])+BR[MemBase].IFetch_A fetch for which BR[24:31] are replaced by Id from the IFU. WhenBR[24:31] are 0 (i.e., when BR points at a page boundary), this isequivalent to BR+Mar+Id, saving 1 instruction in many cases.PreFetch_Moves the 16-word munch containing VA to the cache.DummyRef_Loads the pipe with VA for the reference without initiating cache,map, or storage activity.Flush_Removes a munch containing VA (if any) from the cache, storing itfirst if dirty (emulator or fault task only).Map_Loads the map entry for the page containing VA from B and clearsRef; action is modified by the ReadMap function discussed later(emulator or fault task only).IOFetch_Initiates transfer of munch from memory to io device via fast outputbus (io task only).IOStore_Initiates transfer of munch from io device to memory via fast inputbus (io task only).(Inside the memory system, there are three other reference types: IFU reads, dirty cache victim writes, andFlushStore fake-reads that result from Flush_ references which hit dirty cache entries.)The notation for these memory references has been confusing to people who first start writingmicroprograms. The following examples show how each type of reference would appear in amicroprogram:Fetch_T;*Start a fetch with D coming from T via MarT_Md;*Read memory data for the last fetch into TStore_Rtemp, DBuf_T;*Start a store with D coming from an RM*address via Mar and memory data from T via B.PreFetch_Rtemp;ÿ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������î¶ïfªpô�€î#$q î5pô�îFHïfñî¶ïbô�°ô�±ðOô�î¶ï]Øsî¶ïZfpô�ßq pðDô�àî¶ïXœô�¼ðSô�½î¶ïVÑô�ð$î¶ïS_ô�ÐðKô�Ñî¶ïQ”ô�ðSîxïNöîJôùxøÿúÿôð"î*ïM,ô�—ð;ô�˜î*ïKaô�ð'îxïHÃîJùxøÿúÿîxïF$ù�ø�ú� îJôzô{ð$î*ïDZð!îxïA¼îJô�…ð(ô�†î*ï?ñô�Âð:ô�Ãî*ï>&ôôî*ï<\îjï:‘ô�ùxøÿúÿð3îxï7óîJô�Âùxøÿúÿù�ø�ú�ùxøÿúÿô�Ãð$î*ï6(ô�îxï3ŠîJô�¦ùxøÿúÿô�§ð'î*ï1¿ô�ð-îxï/!îJô�¥ùxøÿúÿô�¦ð)î*ï-Vqpô�êð,ô�ëî*ï+Œô�îxï(îù�ø�ú�îJô�™ùxøÿúÿô�šð)î*ï'#ô�îxï$…ù�ø�ú�îJô�«ùxøÿúÿô�¬ð(î*ï"ºô�îxï btô�ˆô�‰ðRîxïô�ðXî¶ï³pô�·ù�ø�ú�ðOô�¸ î¶ïèô�Àð+ô�Áð-î¶ïî:ï\tî!ô�ð+î:ïØî!ð+î:ïTô�€î!ô�ð!î!ïóð.î:ïo�������ì����¶L=ñX¿U������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Dorado Hardware ManualMemory SectionAugust 1, 198536Flush_Rtemp;IOFetch_Rtemp;IOStore_Rtemp;Map_Rtemp, MapBuf_T;*Start a map write with D coming from an RM*address (Rtemp) via Mar, data from T via BRMap_Rtemp;*Start a map read with D coming from an Rm*address (Rtemp) via Mar.LongFetch_Rtemp, B_T;*Start a fetch reference with*VA = BR[4:31]+(T[4:15],,Rtemp[0:15]).IFetch_Stack;*Start a fetch reference with Id replacing BR[24:31]*and with D coming from Stack.IFetch_Stack, TisId;*Start a fetch as above and also advance the IFU to the*next item of _Id.The tricky cases above are Store_, Map_, and LongFetch_, which must be accompanied byanother clause that puts required data onto B. DBuf_ and MapBuf_ are synonyms for B_, anddo not represent functions encoded in FF; these synonyms are used to indicate that the implicitlyloaded buffer registers (DBuf on MemD and MapBuf on MemX) will wind up holding the data.The encoding of these references in the instruction was discussed in the "Processor" section under"ASEL: A Source/Destination Control". The ten possible memory reference types have thefollowing properties:Fetch_, IFetch_, and LongFetch_These three are collectively called "fetches" and differ only in the way VA is computed. In anysubsequent instruction, memory data Md may be read. If Md isn't ready, Hold occurs, asdiscussed below. If the munch containing VA is in the cache and the cache isn't busy, Md will beready at t3 of the instruction following the fetch, with the following implications:If Md is loaded directly into RM or T (loaded between t3 and t4), it can be read in theinstruction after the fetch without causing Hold. This is called a deferred reference.If Md is read onto A or B (needed before t2) or into the ALU masker by a shift (neededbefore t3), it is not ready until the second instruction after the fetch (Hold occurs if Mdis referenced in the first instruction.). This is called an immediate reference.The above timing is minimum, and delays may be longer if data is not in the cache or if the cacheis still busy with an earlier reference.Md remains valid until and during the next fetch by the task. If a Store_ intervenes between theFetch_ and its associated _Md, then _Md will be held until the Store_ completes but will thendeliver data for the fetch exactly as though no Store_ had intervened.Store_Store_ loads the memory section's DBuf register from B data in the same instruction. On a hit,DBuf is passed to the cache data section during the next cycle. On a miss DBuf remains busyduring storage access and is written into the cache afterwards.Because DBuf is neither task-specific nor reference-specific, any Store_, even by another task,holds during DBuf-busy. However, barring misses, Store_'s in consecutive instructions neverÿ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������î¶ïfªpô�€î#$q î5pô�îFHïfñî:ïbAtî:ï`½ î:ï_9 î:ï]µô�€î!ô�ð%î!ï\Tð+î:ïZÐ î!ð*î!ïYoî:ïWëô�€î!ô�î!ïVŠð&î:ïUî!ð4î!ïS¦î:ïR"ô�€î!ô�òô�óî!ïPÁô�î¶ïMrpô�Íô�Îð;î¶ïK¨ô�–ð+ô�—ð/î¶ïIÝô�ŽðAô�î¶ïHô�˜ð0ô�™ð(î¶ïD ô�ŠðAô�‹ð!î¶ïBÖô�×ð.ô�Øð)î¶ïAô�î¶ï<Æqî¶ï9Tpô�šð#ô�›ð=î¶ï7‰ô�Üð#ô�Ýð4î¶ï5¾ô�ƒð2ô�„ð/î¶ï3ôô� ï3gt�ï3ôpðIîxï0¥ô�•ð7ï0t�ï0¥pô�–ï0t�ï0¥pîxï.Úô�Ìð+ô�Íqp îxï+iô�†ð*ï*Üt�ï+ipô�‡îxï)žô�•ï)t�ï)žpðOô�–îxï'Óô�ð=qp î¶ï$aô�ðGô�‚î¶ï"—ô�ð(î¶ï%ô�‰ð*ô�Šð7î¶ïZô�–ð'ô�—ð6î¶ïô�ðFî¶ïJqî¶ïØpô�˜ð!ô�™ð>î¶ï ô�§ð8ô�¨ð$î¶ïCô�ð?î¶ïÑô�ÁðAô�Âî¶ïô�Ðð\ÿ������� â����¶ ¿<ñ]LE��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Dorado Hardware ManualMemory SectionAugust 1, 198537hold. A fetch or _Md by the same task will also hold for an unfinished Store_.PreFetch_PreFetch_ is useful for loading the cache with data needed in the near future. PreFetch_ doesnot clobber Md and never causes a map fault, so it can be used after a fetch before reading Md.IOFetch_An IOFetch_ is initiated by the processor on behalf of a fast output device. When ready toaccept a munch, a device controller wakes up a task to start its memory reference and do otherhousekeeping.An IOFetch_ transfers the entire munch of which the requested address is a part (in 16 clocks,each transferring 16 data+2 parity bits); the low 4 bits of VA are ignored by the hardware. If notin the cache, the munch comes direct from storage, and no cache entry is made. If in the cacheand not dirty, the munch is still transferred from storage. Only when in the cache and dirty is themunch sent from the cache to the device (but with the same timing as if it had come fromstorage). In any case, no further interaction with the processor occurs once the reference has beenstarted. As a result, requested data not in the cache (the normal case) is handled entirely bystorage, so processor references proceed unhindered barring cache misses.The destination device for an IOFetch_ identifies itself by means of the task and subtask suppliedwith the munch (= task and subtask that issued IOFetch_). The fast output bus, task, andsubtask are bussed to all fast output devices. In addition, a Fault signal is supplied with the data(correctable single errors never cause this fault signal); the device may do whatever it likes withthis information. More information relevant to IOFetch_ is in the "Fast IO" chapter.IOFetch_ does not disturb Md used by fetches, DBuf used by Store_, or MapBuf used by Map_.There is no way to encode either IOFetch_ or IOStore_ in an emulator or fault task instruction, and thereshould never be any reason for doing this.IOStore_IOStore_ is similar to IOFetch_. The processor always passes the reference to storage. Thecache is never used, but a munch in the cache is unconditionally removed (without being stored ifdirty). A munch is passed from device to memory over the fast input bus, while the memorysupplies the task and subtask of the IOStore_ to the device for identification purposes. Thedevice must supply a munch (in 16 clocks, each transferring 16 bits) when the memory systemasks for it.The Carry20 function may be useful with IOFetch_ and IOStore_. This function forces thecarry-in to bit 11 of the ALU to be 1, so a value can be incremented by 16.Map_Writes data into the Map from the Bmux.ÿ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������î¶ïfªpô�€î#$q î5pô�îFHïfñî¶ïbðOî¶ï]Øqî¶ïZfpô� ðAô�¡î¶ïXœô�“ðLô�”î¶ïTVqî¶ïPäpô�»ô�¼ð@î¶ïOô�£ô�¤ðFî¶ïMOî¶ïIÝô�©ô�ª�qp�qpð8î¶ïHô�ð"ô�‚ðAî¶ïFHô�—ô�˜ðHî¶ïD}ô�„ð]ô�…î¶ïB²ô�Çô�ÈðIî¶ï@èô�…ð3ô�†ð1î¶ï?ô�»ðSô�¼î¶ï=Sô�ðIî¶ï9áô�†ðHô�‡î¶ï8ô�Çð.ô�Èð+î¶ï6Kô�ð\ô�î¶ï4ô�£ð1ô�¤ð2î¶ï2¶ô�ðUî¶ï/Dô�‚ð!ô�ƒð9îyï,ƒtô�‹ðRô�Œîyï+"ô�ð*î¶ï'�qî¶ï#Žpô�¿ð%ô�Àð7î¶ï!Ãô�‡ð'ô�ˆð:î¶ïøô�²ðSô�³î¶ï.ô�Ãô�ÄðQî¶ïcô�±ð)ô�²ð2î¶ï™ô�î¶ï'ô�ÆðMô�Ç î¶ï\ô�ðKî¶ïqî¶ï ¥pð'ÿ������� v����¶ ^<ñZ ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Dorado Hardware ManualMemory SectionAugust 1, 198538Flush_Flush_ unconditionally removes a munch containing VA from the cache, storing it first if dirty. Itis a no-op if no munch containing VA is in the cache; it immediately sets Vacant in the cacheentry and is finished on a clean hit; it gives rise to a FlushStore reference on a dirty hit.Only task 0 or task 17 instructions can encode Flush_, using the private pipe entry (0 or 1) pointed at byProcSRN. The FlushStore triggered, if any, uses the ring-buffer part of the pipe. FlushStore turns onBeingLoaded in the cache entry and trundles through a (useless but harmless) storage access to the itembeing flushed; when this finishes Vacant is set in the cache entry; then the dirty-victim is written intostorage.Unfortunately, Flush_ clobbers the Victim and NextV fields in the cache row, which causes the cache towork less efficiently for awhile.DummyRef_DummyRef_ writes VA into the pipe entry for the reference without initiating cache, map, orstorage activity. This is provided for reading base registers and so diagnostic microcode canexercise VA paths of the memory system without disturbing cache or memory. Note: it isnecessary to hold until any preceding private pipe entry fetch or Store_ has finished by issuing_Mdreasons for this are discussed in "The Pipe" section.IFU ReferencesThe F and G data registers shown in the IFU picture (Figure 11) are physically part of thememory system on the MemD board. The memory system fetches words referenced by the IFUdirectly into these registers. The IFU may have up to two references in progress at-a-time, but thesecond of these is only issued when the memory system is about to deliver data for the firstreference. An IFU reference cannot be initiated when the processor is either using Mar or referencing thePipe; for simplicity of decoding, the hardware disables IFU references when the processor is eithermaking a reference or doing one of the functions 1208 to 1278 (CFlags_A', BrLo_A, BrHi_A,LoadTestSyndrome, or ProcSRN_B); or 1608 to 1678 (B_FaultInfo', B_Pipei, or B_Config').The IFU is not prevented from making references while the processor is experiencing Hold, unlessthe instruction being held is making a reference or doing one of the functions mentioned above.Memory Timing and HoldMemory system control is divided into three more or less autonomous parts: address, cache data,and storage sections. The storage section, in turn, has several automata that may be operatingsimultaneously on different references. Every reference requires one cycle in the address section,but thereafter an I/O reference normally deals only with storage, a cache reference only with thecache data section. Address and cache data sections can handle one reference per cycle if all goeswell. Thus, barring I/O activity and cache misses, the processor can make a fetch or storereference every cycle and never be held.If the memory is unready to accept a reference or deliver Md, it inhibits execution with hold(which converts the instruction into a Goto[.] while freezing branch conditions, dispatches, etc.).ÿ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������î¶ïfªpô�€î#$q î5pô�îFHïfñî¶ïbqî¶ï^¬pô�€ð1ô�ð2î¶ï\áô�ªðDô�«qpî¶ï[ô�Ûð.ô�Üð/îyïXUtô�ô�‘ðWîyïVôô�¬ð+ô�ð<îyïU”u tô�ªô�«ðEîyïT3ô�´ô�µutðAîyïRÒîyïP4ô�¡ðGô�¢îyïNÓô�ð!î¶ïJ±qî¶ïG?pô�¶ðAô�·î¶ïEtô�Îô�ÏðGî¶ïC©ô�Íð?ô�Îî¶ïAßô�¦ð2ô�§ð.î¶ï@ô�ð9î¶ï;Ïs î¶ï8]pô�ÈðZî¶ï6’ô�¡ô�¢ðIî¶ï4Çô�€ô�ðQî¶ï2ýô�ÂðNô�à î¶ï12ô� î¶ï-Àô�¥ðZô�¦î¶ï+öô�‚ð7ô�ƒð,î¶ï*+ô�±ð4ï)žt�ï*+pï)žt�ï*+pô�²î¶ï(`ô�Óð'ï'Ót�ï(`pï'Ót�ï(`pô�Ôq�pî¶ï%ô�ƒðFô�„î¶ï#Gô�œð=ô�ð"î¶ï.sô�î¶ï¼pô�—ô�˜ð?î¶ïñô�³ô�´ðIî¶ï'ô�–ð'ô�—ð<î¶ï\ô�–ðAô�—î¶ï‘ô�‰ðMô�Šî¶ïÇô�Ôð+ô�Õð0î¶ïüô�ð(î¶ïŠô�½ðXô�¾�qî¶ï Àpô�¬ð$ô�ð?�������2����¶ y=ñ]’I������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Dorado Hardware ManualMemory SectionAugust 1, 198539The processor attempts the instruction again in the next cycle, unless a task switch occurs. If thememory is still not ready, hold continues. If a task switch occurs, the instruction is reexecutedwhen control returns to the task; thus task switching is invisible to hold.In the discussion below, cache references are ones that normally get passed from the addresssection to the cache data section, unless they miss (fetches, stores, and IFU fetches), while storagereferences unconditionally get passed to storage (IOFetch_, IOStore_, Map_, FlushStore arisingfrom Flush_ with dirty hit, and dirty-victim writes). PreFetch_ and DummyRef_ don't fall intoeither category.Situations When Hold OccursA fetch, store, or _Md is held after a preceding fetch or store by the same task has missed untilall 16 words of the cache entry are loaded from storage (about 28 cycles).Store_ is held if DBuf is busy with data not yet handed to the cache data or storage sections.LongFetch_ (unfortunately) is also held in this case. Since DBuf is not task-specific, this holdwill occur even when the preceding Store_ was by another task.An immediate _Md is held in the cycle after a fetch or store, and in the cycle after a deferred_Md.Any reference or _Md is held if the address section is busy in one of the ways discussed below.B_Pipe0 thru 5 is held when coincident with any memory system use of the pipe. Each memorysystem access uses the pipe for one cycle but locks out the processor for two cycles. The memorysystem accesses the pipe t2 to t4 following any reference, so B_Pipe0 thru 5 will be held in theinstruction after any reference. Storage reads and writes access the pipe twice more; referencesthat load the cache from storage access the pipe a third time.Map_, LoadMcr, LoadTestSyndrome, and ProcSRN_ are not held for MapBuf busy; the programhas to handle these situations itself by polling MapBufBusy or waiting long enough.In the processor section, stack overflow and underflow and the hold simulator may cause holds; inthe control section TaskingOff or an IFUJump in conjunction with the onset of one of the rareIFU error conditions may cause one-cycle holds; there is also a backpanel signal calledExtHoldReq to which nothing is presently connectedthis is reserved for input/output devicesthat may need to generate hold in some situation. All of these reasons for hold are discussed inthe appropriate chapters.Address Section BusyThe address section can normally be busy only if some previous reference has not yet been passedto the cache data section (for a cache reference that hits) or to storage (for a storage reference, ora cache reference or PreFetch_ that misses). A reference is passed on immediately unless eitherits destination is busy or the being-loaded condition discussed below occurs.The address section is always busy in the two cycles after a miss, or in the cycle after a Flush_,Map_, IOFetch_, or IOStore_.������������������������������������������������������������������������������������î¶ïfªpô�€î#$q î5pô�îFHïfñî¶ïbô�“ðdî¶ï`Sô�«ð<ô�¬ð&î¶ï^‰ô�ðKî¶ï[ô�Íqpô�Îð3î¶ïYLô�ð"ô�ð<qî¶ïW pô�«ð1ô�¬ð#î¶ïU·ô�“ô�”ðHî¶ïSìô�î¶ïO§qî¶ïL5pô�–ð&ô�—ð;î¶ïJjô�ðJî¶ïFøô�®ô�¯ðMî¶ïE-ô�ðWô�® î¶ïCcô�ð>î¶ï?ñô�¤ð3ô�¥ð,î¶ï>&î¶ï:´ô�˜ô�™ðOî¶ï7Bqô�pð@ô�‘î¶ï5xô�‰ð)ô�Šð8î¶ï3ô�¤ï3 t�ï3pï3 t�ï3pô�¥qpî¶ï1ãô�ªð)ô�«ð8î¶ï0ô�ð>î¶ï,¦ô� ô�ð$qpî¶ï*Ûô�ð1q pî¶ï'iô�„ô�…ðHî¶ï%Ÿô�¥ðXô�¦î¶ï#Ôôð8ôî¶ï" ô�¹ð\î¶ï ?ô�˜ðGô�™î¶ïtô�î¶ï[qî¶ïépô�†ðTô�‡î¶ïô�ðcô�î¶ïTô�šô�›ðOî¶ï‰ô�ðMî¶ï ô�›ðLô�œî¶ïMô�ÿ�������¬����¶=ñ])����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Dorado Hardware ManualMemory SectionAugust 1, 198540There are six other ways for the address section to be busy:(1)A cache reference or PreFetch_ that misses, or a FlushStore, transfers storage data intothe cache. At the end of this reference, as the first data word arrives, storage takesanother address section cycle.(2)The preceding cache reference hit but cannot be passed to the cache data section becausethe data section is busy transferring munches to/from storage (or to an io device if anIOFetch_ finds dirty data in the cache). Total time to fetch a munch from storage isabout 28 cycles, but the cache data section is busy only during the last 10 of these cycles(9 for PreFetch or IOFetch_ with dirty hit), while data is written into the cache. Thecache data section is free during the interim.(3)The preceding storage reference, or cache reference or PreFetch_ that missed has notbeen passed on to storage because the storage section is busy. Storage is busy if itreceived a reference less than 8 cycles previously, and may be busy longer as follows:successive cache references must be 10 cycles apart;successive write references must be 11 cycles apart;with 4k storage ic's, successive references must be 13 cycles apart.(4)A cache write (caused by a miss with a dirty victim or FlushStore) ties up the addresssection until the storage reference for the write is started; this happens 8 cycles after thestorage reference for the miss or FlushStore is started. Note that the new munch fetchstarts before the dirty victim store and that hold terminates right after the store is started.(5)A reference giving rise to a cache write that follows any other cache miss will tie up theaddress section until the previous miss is finished.(6)The address section is busy in the cycle after any reference that hits a cache row in whichany column is being loaded from storage.Any reference except IOFetch_, DummyRef_, or Map_ that hits a cache row in whichany column is being loaded from storage remains in the address section until theBeingLoaded flag is turned offi.e., for the first 19 of the 28 cycles required to service amiss, the reference is suspended in the address section; during the last 9 cycles of themiss, when the munch is transferred into the cache data section, the reference proceeds(except that a fetch or store will still be held because the cache data section is busyduring these 9 cycles). This is believed to be very infrequent.References to storage arise as follows:A cache miss (from a cache reference or PreFetch_) causes a storage read.A cache reference or PreFetch_ miss with dirty victim also causes a storage writeimmediately after the read.A Flush_ which gets a dirty hit causes a FlushStore read reference which in turn causesa storage write of the dirty victim.every io reference causes a storage read or write.A Map_ causes a reference to storage (actually only the map is referenced, but thetiming is the same as for a full storage reference).The following table shows the activity in various parts of the memory system during a fetch thatmisses in the cache and displaces a dirty victim; the memory system is assumed idle initially and����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������î¶ïfªpô�€î#$q î5pô�îFHïfñî¶ïbð<î·ï_€îxô�žðSô�Ÿîxï]µô�Âð)ô�Ãð.îxï[êô�î·ïYLîxô�†ðCô�‡îxïWô�©ðGô�ªîxïU·ô�«ðJô�¬ îxïSìô�‹ð#ô�Œð8îxïR"ô�¦ðBô�§îxïPWô�ð.î·ïM¹îxô�¸ðPô�¹îxïKîô�Çð?ô�ÈîxïJ#ô�²ðCô�³î:ïG…ô�ð4î:ïE»ð4î:ïCððDî·ïARîxô�§ô�¨ð7îxï?‡ô�’ð1ô�“ð,îxï=¼ô�žô�Ÿð>îxï;òô�‹qpðJqp�î·ï9Tîxô�’ðSô�“îxï7‰ô�ð4î·ï4ëîxô�ðFô�‚îxï3 qô� pîxï0‚ô�˜ðJô�™îxï.·qô�ñ pð<ô�ò îxï,íq pô�‹ð;ô�Œîxï+"ô�¯ðQô�°îxï)Wô�¡ð,ô�¢ð+îxï'ô�ÁðRô�Âîxï%Âô�ð@î¶ï"Pð'îxï²ðIîxïô�æô�çð@îxïIô�îxï«ô�‘ðPô�’îxïàô�ð$îxïBð2îxï¤ô�ÌðJô�ÍîxïÙô�ð4î¶ïgô�šð[ô�›î¶ï œô�—ðCô�˜�������j����¶ U<ñ]¶C������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Dorado Hardware ManualMemory SectionAugust 1, 198541nothing unusual happens.Table 15: Timing of a Dirty Miss Time Time(Cycles)Activity of Fetch(Cycles)Activity of Dirty-Victim Write 0Fetch_ starts 1in address section 2-9in address section (wait for map) 3-18in ST automaton (generatesyndrome, transport to storage) 2-9in map automaton *10-17in map automaton * 7-14in memory automaton *15-22in memory automaton *14-21in Ec1 automaton22-29in Ec1 automaton **21-28in Ec2 automaton29-36in Ec2 automaton ** 27_Md succeeds* The map automaton continues busy for two cycles after a reference is passed to the memory automaton becauseit is necessary for the Map storage chips to complete their cycle.** The work of the dirty-victim write is complete after it has finished with the memory automaton, but itmarches through Ec1 and Ec2 anyway for fault reporting.The MapVA is transformed into a real address by the map on the way to storage. The hardware is easilymodifiable to create a page size of either 256, 1024, or 4096 words and to use either 16k, 64k, or256k ic's for map storage. The table below shows the virtual memory (VM) sizes achievable withdifferent map configurations. Table 16: Map Configurations ICPageVMAddressedSizeSizeSizeBy64k256225VA[8:23]Current configuration64k1k226VA[6:21]requires 16k-word cache64k4k228VA[4:19]requires 16k-word cache256k28226VA[6:23]256k210228VA[4:23]The cache handles virtual addresses, so the map is never involved in cache references unless theymiss.A consequence of virtual addresses in the cache is that it is illegal to map several virtual pagesinto the same real page (unless all instances are write-protected). This restriction prevents cacheand storage from becoming inconsistent.A map entry contains a 16-bit real page number (RP) and three flags called Dirty, Ref, and WP,which have the following significance:������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������î¶ïfªpô�€î#$q î5pô�îFHïfñî¶ïbî!Ùï^vô�Fð!îyï[€uô�€î)WîyïZ î½î)Wî1œô�îyïWtô�€î½ô�îyïV!ô�€î½î)Wî1œô�î)WïTÀô�€î1œô�î1œïS_îyïQþô�€î½î)Wî1œô�îyïPžô�€î½î)Wî1œô�îyïO=î½ô�€î)Wî1œô�îyïMÜî½ô�€î)Wî1œô�îyïL{ô�€î½ô�îyïIÝô�ƒð[ô�„îyïH|ô�ðBîyïEÞô�½ð(ô�¾ðAîyïD}ô�ð7î¶ï?‡sî¶ï<pô�•ð3ô�–ð,î¶ï:Kô�“ð#ô�”ð?î¶ï8€ô�ô�ðNî¶ï6µô�î ®ï2psô�Xî:ï-3qô�€î½î@î!Ãî:ï+iî½î@î!Ãî:ï(sî½î@�ï(§vî!Ãï(sî'¶ô�î:ï&Opî½î@�ï&Ütî!Ãï&Opî'¶î:ï$…î½î@�ï%tî!Ãï$…pî'¶î:ï"ºî½�ï#Gt�î@ï"ºp�ï#Gtî!Ãï"ºpî:ï ïî½�ï!|tî@ï ïp�ï!|tî!Ãï ïpî¶ï}ô�”ð,ùxøÿúÿ�ù�ø�ú�ô�•î¶ï³î¶ïAô�ªðHô�«î¶ïvô�Ÿô� ðEî¶ï¬ô�ð'î¶ï:ô�—ð=ô�˜ qpqpqp�î¶ïoô�ð&�������L����¶(<ñXã������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Dorado Hardware ManualMemory SectionAugust 1, 198542WPwrite-protects the page; a fault occurs if a write is attempted.Dirtyindicates that storage has been modified; set by any IOStore_ or by a dirty-victim write; Store_ does not set Dirty.Refindicates that the page has been referenced; set by any storage reference exceptMap_; cleared by Map_.The combination WP=true with Dirty=true makes no sense, and encodes the Vacant state of themap entry. A map entry is vacant if it has no corresponding page in real memory.FaultsEvery storage reference causes a mapping operation. If mapping reveals something other thanVacant, the reference proceeds normally. Otherwise, the storage reference is aborted, andMapTrouble is reported as discussed later. There are two kinds of faults:Page faultreference to a vacant map entry (WP = true, Dirty = true)WP faultStore_ that misses, IOStore_, or dirty-victim write with WP true. (Dirty-victim WP faults should not occur if the map and cache are handled asproposed below.)Writing the MapMap_, which can only be encoded in a task 0 or task 17 microinstruction, is used to write themap; like other storage references, it returns previous map contents in the pipe, where they can beread. Map_ first writes B[0:15] and TIOA[0:1] into MapBuf (a buffer register on the MemX board) andturns on MapBufBusy in the pipe; 9 cycles later (barring delays) MapBuf has been written into theMap entry addressed by the appropriate bits of VA and MapBufBusy is turned off.B[0:15] are the real page number, TIOA.0 is WP, and TIOA.1 is Dirty. Map_ zeroes Ref, andthere is no direct way to write a map entry with Ref=1; a fetch, Store_, or PreFetch_ to theappropriate page after loading the map entry will set Ref=1. Note that if the real address spaceis less than 224 words (216 pages), high order RP bits are ignored during references though theyare kept in the map and appear in the pipe.Map_ never wakes up the fault task.If previous map contents indicated Vacant or had a parity error, MapTrouble will be true in the pipe butnot reported to the fault task. Quadword and syndrome in the pipe, not written by Map_, contain previousvalues.ÿ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������î¶ïfªpô�€î#$q î5pô�îFHïfñîxïbîûð@îxï^¬îûô�¶ð=ô�·îüï\áô�ð(îxïYoîûô�’ð?ô�“îüïW¥ô�î¶ïT3ô�‹ð7ô�Œqpî¶ïRhô�ðQî¶ïN#qî¶ïK„pô�·ô�¸ð>î¶ïIºqpô�÷ðDô�øî¶ïGïq pô�ð@îxïEQô�€ î½ô�ð0îxïB²ô�€î½ô�¡ð5ô�¢î½ï@èô�»ð6ô�¼î½ï?ô�î¶ï:Øqî¶ï7fpô�© ô�ªðRî¶ï5›ô�ƒðGô�„î¶ï3Ðô�î¶ï0_ô�‡ð'ô�ˆqpð*î¶ï.”ô�q pðEô�‚î¶ï,Éô�ðOî¶ï)Wô�¤ð/ô�¥ð+î¶ï'ô�ð!ô�®ð;î¶ï%Âô�”ð[ô�•î¶ï#øô� ï$…tï#øpô�¡ï$…tï#øpðEî¶ï"-ô�ð+î¶ï»ð#îyïùtô�™ð#utô�šu tîyï™ô�‰ô�Š�ututð3îyï8�������t����¶<ñNö����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Dorado Hardware ManualMemory SectionAugust 1, 198543Reading the MapEvery storage reference causes mapping and returns old contents of the relevant map entry in thepipe. I.e., Ref and Dirty may change as a result of a referenceold values appear in the pipe.A ReadMap function accompanying Map_ prevents the map entry from being modified, so thatold contents can be read from the pipe without also smashing the map entry.Flushing One Page From the CacheAny cache reference or PreFetch_ that misses or any IOFetch_ or IOStore_ sets Ref in the map;IOStore_'s set Dirty as well. If the victim for the miss or hit for the Flush_ is dirty, Ref andDirty for its map entry also get set. However, Store_ does not set Dirty in the map entry untilthat munch is chosen as victim.Almost any change to a map entry requires a flush, again because of problems with dirty cacheentries. The following examples illustrate this point:Before changing RP, a flush prevents dirty victims from being written into the previousreal page (if the old page had WP false).Before turning on WP, a flush prevents dirty cache entries from being written into thenow write-protected page.Before turning off WP, a flush prevents multiple cache entries for a munch, one write-protected, the other not (The cache will not work correctly, if there are multiple entriesfor the same munch.).Before sampling Ref, flushing is required so that subsequent references to the page willset Ref=1 and so that dirty munches in the cache will not erroneously set Ref=1 whenthey are displaced.Before clearing Dirty, a flush prevents dirty munches subsequently displaced from thecache from erroneously setting Dirty again.To flush a 256-word page from the cache, 16 Flush_ references may be made, one to each munchof the page. Flush_ invalidates any existing cache entry for the munch (and stores the munch ifdirty).Map Hardware DetailsThe map and its control are on the MemX board. Physically, map storage consists of 21 64k x 1 MOS RAM's, 16bits for the real page (RP), Write protect (WP), Reference (REF), a duplicate of the Dirty bit and an odd parity bit.Dirty is duplicated so map parity won't change when both Dirty bits are set. Ideally Ref should also be duplicated, butit is not, and Ref is not checked by map parity. The parity written on Map_ is the exclusive-or of the two B byteparity bits and TIOA.0 (i.e., WP). Parity failure on any map read will cause MapTrouble and MemError and wakeupthe fault task when appropriate.The MOS RAM's in the map require refresh, carried out like the storage refresh.ÿ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������î¶ïfªpô�€î#$q î5pô�îFHïfñî¶ïbqî¶ï^¬pô�ô�ðBî¶ï\áô�¤ð_î¶ïYoô�ŸðPô� î¶ïW¥ô�ðKî¶ïS_qî¶ïOípô�ˆðQô�‰î¶ïN#ô�¥ð,ô�¦ð5î¶ïLXô�œô�ðOî¶ïJô�î¶ïGô�¤ð8ô�¥ð%î¶ïEQô�ð7îyïB²ô�ðNô�žîyï@èô�ð)îyï>Jô�§ðRô�¨îyï<ô�îyï9áô�£ðKô�¤ îyï8ô�œô�ðFîyï6Kô�îyï3ô�ðSô�žîyï1ãô�“ðIô�” îyï0ô�îyï-zô�·ð'ô�¸ð.îyï+¯ô�ð+î¶ï(=ô�…ðAô�†î¶ï&sô�“ð`î¶ï$¨î¶ï!Yuô�î¶ï»tô�”ðmî¶ïZô�“ðAô�”utî¶ï¼utô�€ð4ututô�î¶ï[ô�– ô�—utð`î¶ïúô�utô�u tut î¶ïšô�î¶ïnðO������� ����¶K<ñTÀ ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Dorado Hardware ManualMemory SectionAugust 1, 198544The PipeInformation about each reference is recorded in the 16-word pipe memory. Pipe layout is shownin Figure 10, which you should have in front of you while reading this section. The processorreads the pipe with the B_Pipe0, B_Pipe1, B_Pipe2, B_Pipe3, B_Pipe4, or B_Pipe5 functions. The EmulatorFault, NFaults, and SRNFirstFault stuff in Pipe2, which duplicate what B_FaultInfo wouldread back, is not part of the pipe, although it is read by B_Pipe2'; B_Pipe2' is simply a convenient decodefor reading it backthis will be discussed in the section on fault handling, not here. Similarly, Dirty,Vacant, WP, BeingLoaded, NextVictim, and Victim stuff in Pipe5 is not part of the pipe and is read back byB_Pipe5 purely for decoding convenience. The Task, SubTask, VA, and cache control stuff in Pipe0, 1, 2, and 5 is used both internally bythe memory system and externally by the processor. Map and error stuff in Pipe3 and 4 is solelyfor memory management and diagnostic activities carried out by the processor.Two main problems in dealing with the pipe are:Finding the pipe entry for a particular reference;Knowing when various bits become valid;How the Pipe Is AddressedSystem microcode is expected to use the pipe in only two situations: fault handling by task 17 (the"fault task") and reading map or base registers by task 0 (the "emulator"). Other tasks will notread the pipe. This rigid view of how the pipe will be used during system operation hasmotivated the implementation discussed below.Pipe entries are addressed by 4-bit storage reference numbers, or SRNs, assigned to each storagereference. All task 0 and task 17 references except PreFetch_ with miss use the SRN contained inProcSRN exclusively; all other references share SRN's 2 to 17, which form a ring buffer addressedby an invisible register called ASRN.To read a pipe entry, first ProcSRN_B addresses the pipe entry, then the contents of that entryare read with B_Pipei. In system microcode, the Task 0 is expected to keep the value 0 inProcSRN to avoid smashing the ring buffer on references; if the fault task 17 needs to make areference, it will normally load ProcSRN with 1 and use that SRN for the reference; the fault taskwill manipulate ProcSRN however it likes to examine the pipe but always restore it to 0 beforeblocking; other tasks will not use ProcSRN. This implementation is welded to the assumption thatonly the fault task will probe the pipe when io tasks are running.To I/O task references and emulator PreFetch_'es that miss, the cache address section's SRN,called ASRN, is assigned at t2. ASRN will be advanced to the next ring value if the referencestarts the map. In all other cases ASRN remains unchanged and is used by the next reference aswell.A reference starts the map unless it is a DummyRef_, a cache reference or PreFetch_ that hits, ora Flush_ that misses or gets a clean hit. A convenient way to guarantee that the map is startedwithout worrying about the contents of the cache is to do a Map_ in the emulator or anIOFetch_ in any other task. The reasoning behind this treatment of ASRN is explained in thesection on fault reporting.����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������î¶ïfªpô�€î$…q î5pô�îFHïfñî¶ïbrî¶ï^¬pô�’ô�“ð>î¶ï\áô�©ð#ô�ªð;î¶ï[ô�¦ðOô�§ ô�îyïXUsô�±tststsð1ô�²îyïVôô�‡ðdô�ˆîyïU”ô�µðLô�¶ts�îyïT3tsô�€tst st stsð"ô�îyïRÒô�ð*î¶ïOƒpô�qpqpô�žð7î¶ïM¹ô�ðJô�Žî¶ïKîô�ðMî¶ïH|ð/î:ïEÞð2î:ïDð'î¶ï?Îqî¶ï<\pô�‚ð[ô�ƒî¶ï:‘ô�ŸðKô� î¶ï8Æô�ÞðTô�ßî¶ï6üô�ð-î¶ï3Šô�¥ð$qô�¦pð#î¶ï1¿ô�€ô�ðBî¶ï/õô�‚ô�ƒðCî¶ï.*ô�ð%î¶ï*¸ô� ð_î¶ï(îô�Ãq�pô�Äð9î¶ï'#ô�©ðEô�ªî¶ï%Xô�„ðHô�…î¶ï#Žô�¤ô�¥ð?î¶ï!Ãô�€ðMô�î¶ïøô�ðBî¶ï‡ô�ºô�»ðFî¶ï¼ô�¦ï/s�ï¼pð@î¶ïñô�ð0ô�ð/î¶ï'î¶ïµô�‚ð^ô�ƒî¶ïêô�šô�›ðBî¶ï ô�Þð*ô�ßð,î¶ïUô�¤ðKô�¥î¶ïŠô�ÿ�������‚����¶C=ñ[ÈG����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Dorado Hardware ManualMemory SectionAugust 1, 198545Tasks 1 to 16 generally cannot find out the SRN for their last reference. Even if this weredetermined somehow by polling all the pipe entries, there would be no assurance that, meanwhile,a higher priority task didn't clobber the pipe entry.Because of its single pipe entry, the task 0 must wait for an earlier reference to finish or fault,before starting another. Of all task 0 references, only a fetch, Store_, or PreFetch_ might fault.However, PreFetch_ doesn't use the private pipe entry, so only a preceding fetch or Store_ mightstill be in progress when a new reference is issued. If the new reference is another fetch orStore_, it will hold until the preceding one finishes (no problem). Hence, the only restrictionimposed by the private pipe entry is that the task 0 must cause hold with _Md before issuingMap_, Flush_, or DummyRef_, if a fetch or Store_ might still be in progress.When the Pipe is AccessedConceptually, the pipe is a history memory of events that happen in the memory system, it is usedonly for debugging. It is 6 words wide by 16 locations. Each memory or pipe reference stores thefollowing information:VA (28 bits)Task (4 bits),Subtask (2 bits),Cache control bits, (15 Bits)The 20 bits of map informationThe error correction-detection information. (12 Bits)The memory system needs one cycle for each of these accesses.Faults and ErrorsErrorsSeveral events cause memory errors from which the system does not recover. Errors halt theprocessor if the MemoryPE error is enabled (see "Error Handling"). If MemoryPE is disabled, theprogram will continue without any error indication. MemoryPE conditions are:Byte parity errors from the cache data memory (checked on write of a dirty victim, not on_Md or IFU reads); the processor checks Md parity and the IFU checks F/G parity;Byte parity errors from fast input bus;Cache address memory parity errors.FaultsOther events cause faults. A fault condition is indicated in the MapTrouble, MemError, andEcFault fields of Pipe4 when it occurs; in addition, the fault task is woken to deal with thesituation unless NoWake is true in Mcr. The encoding of the various errors is as follows:����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������î¶ïfªpô�€î$…q î5pô�îFHïfñî¶ïbô�Æð/ô�Çð-î¶ï`Sô�‡ðEô�ˆî¶ï^‰ô�ð5î¶ï[ô�«ðRô�¬î¶ïYLô�™ð3ô�šð0î¶ïWô�†ðPô�‡î¶ïU·ô�Àð)ô�Áð5î¶ïSìô�´ð5ô�µð+î¶ïR"ô�¯ð4ô�°ð(î¶ïPWô�ðLî¶ïLqî¶ïHŸpô�‚ô�ƒðFî¶ïFÕô�ð,ô�‘ð4î¶ïE ô�î¶ïC@î¶ïAu î¶ï?ªî¶ï=àî¶ï<î¶ï:Kð6î¶ï6µð=î¶ï2prî¶ï.*qî¶ï*¸pô�¾ô�¿ð@î¶ï(îô�‚qpð*ô�ƒqpî¶ï'#ô�ð5qpîyï$…ô�§ð&ô�¨ð3îyï"ºô�áð5ô�âîyï ô�ð'îyï}ð#î¶ï8qî¶ïÆpô�Ìqpð)qpô�Íî¶ïûqpô�Èð7ô�Éî¶ï1ô�Úqpô�Ûð;�������¦����¶ê=ñV!�ö��������������������Dorado Hardware ManualMemory SectionAugust 1, 198546Table 17: Fault IndicationsKind of ErrorNameMapTroubleMemErrorEcFaultMap parity errorMapPE11Page faultPageFlt10Write-protectWPFlt10Single errorSE001Double errorDE011In the above table, WPFlt and PageFlt have the same encoding; these must be distinguished bymeans of the Store' bit in Pipe5 and the WP bit in Pipe4; WPFlt can only occur for Store_,IOStore_, or dirty-victim stores that encounter WP true.MapTrouble might be true and reported to the fault task on a fetch or store that misses or anIOFetch_, IOStore_, FlushStore, or dirty-victim write. Flush_ and DummyRef_ never causeMapTrouble. Map_, PreFetch_, or IFU fetches might record MapTrouble in the pipe but neverwake the fault task. Map faults on IFU fetches are reported instead to the IFU, which buffers thefault indication until an IFUJump occurs to an opcode with at least one instruction byte in theword affected by the map fault; then a trap occurs, as discussed in "Instruction Fetch Unit".SE and DE may occur on any cache reference or PreFetch_ that misses or on an IOFetch_.Map_, IOStore_, DummyRef_, and Flush_ never cause these errors. Also note that fault taskwakeup on an SE requires not only NoWake false but also ReportSE true in Mcr; the faultindication transmitted with the munch for an IOFetch_ is set only for DE, never for SE.The special things about a fault are:If a program obeys the rules given earlier, hold will occur until any fault is reported oruntil the program can proceed safely.EmulatorFault in B_FaultInfo is set true if a fault is described by the emulator or faulttask pipe entry (0 or 1) pointed at by ProcSRN;FirstFaultSRN in B_FaultInfo is loaded if FaultCnt is -1 (indicating no faults) or ifFirstFaultSRN was previously zero;FaultCnt in B_FaultInfo is incremented;B_FaultInfo stuff is updated and the fault task is woken at the end of the storagepipeline, but sufficiently in advance of hold termination that it will surely run first. Forthis reason, any operation that might fault is illegal with tasking off.References leave the pipeline in the order that they entered.Pipe entries identified by EmulatorFault, FirstFaultSRN, and FaultCnt representcomplete storage references;The task that faulted is not blocked; hold terminates as though no fault had occurred;the task will continue unless the fault task 17 changes its PC.The fault task 17 is expected to read B_FaultInfo, service all faults it describes, service stackunderflow or overflow, then block. Because it is highest priority, the fault task cannot do muchcomputing (io tasks that are lower priority have to be serviced); probably it should not make anyÿ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������î¶ïfªpô�€î$…q î5pô�îFHïfñî!–ïbrô�Xî:ï^¬qô�€îðî#$ î,Éî5î:ï\pîðqî&-p�î/D�î6Ù�î:ïZC îðqî&,p�î/D�î6Ù�î:ïXxîðqî&,p�î/D�î6Ù�î:ïV®îðqî&,p�î/D�î6Ù�î:ïTãîðqî&,p�î/D�î6Ù�î¶ïPžô� qpqp ô�¡ð)î¶ïNÓô�¶qpô�·�qpqpî¶ïMô�ð0qpî¶ïI–q pô�°ô�±ð5î¶ïGÌô�¿ðRô�Àî¶ïFq pô�šð0q pô�› î¶ïD7ô�‚ ô�ƒðTî¶ïBlô�§ô�¨ðFî¶ï@¡ô�ÃðCô�Äî¶ï=/qpô�¼qpð.ô�½î¶ï;eô�¤ðEô�¥î¶ï9šô�Èqpqpô�Éqpî¶ï7Ðô�åð5ô�æqpqp�î¶ï4^ô�ð%îyï1Uô�›ðKô�œîyï/‹ô�ð%îyï,íqpô�™ð:ô�šîyï+"ô�ð/îyï(„qpô�Êô�Ëqpð#îyï&¹qpô�îyï$qpîyï!}ô�Õð@qpîyï²ô�‘ðYô�’îyïçô�ðHîyïIð=îyï«ô:qp�ô;�qpqp îyïàô�îyïBô�©ð*ô�ªð,îyïwô�ð?î¶ïô�Âð:ô�Ãð'î¶ï ;ô�žðMô�Ÿî¶ïpô�‘ô�’ðI������� x����¶)=ñ\âq����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Dorado Hardware ManualMemory SectionAugust 1, 198547memory references itself. Its normal actions are:crash (uncorrectable data errors, map faults by tasks other than the emulator);block letting the task that faulted continue (correctable data errors); orchange the TPC of the emulator to an appropriate trap routine (emulator map faults,stack overflow or underflow).EmulatorFault and FaultCnt are automatically reset by B_FaultInfo. These can be read withoutreset in B_Pipe2 (primarily for use by Midas).Several faults could occur while the fault task is running (due to references initiated before thefault task was awakened). In this case, when the fault task blocks, it will continue because of thepending wakeup, and so service the faults. Only while the fault task is running or while tasking isoff is it possible for FaultCnt to become greater than one.Error Correction Faults For error correction purposes, 16 word munches are divided into four quadwords, each containing64 data and 8 check bits.At the end of a storage read, the hardware indicates DE after a double-error or SE after a singleerror as discussed earlier. The SE or DE indication is unambiguous assuming at most two bits inerror in any 64-bit quadword; for an odd number of errors greater than 2, the hardwareerroneously reports an SE; for an even number of errors greater than 2, DE is reported. If severalquadwords in a munch suffer errors, the hardware reports the first DE, if any, or the last SE, if noDE's.Error correction can be enabled/disabled by the LoadTestSyndrome function. When enabled, thehardware will correct any single error. For double errors the hardware does not modify any bitsfrom storage. The normal mode of operation is: single error correction and double error reporting.The absolute address of the quadword containing the reported error isRP[0:15]..VA[24:27]..quadword[0:1].SE and DE are derived from the 8-bit syndrome field in Pipe4. Syndrome = 0 means no error;neither DE nor SE should be true in this case. Syndrome non-0 with an odd number of 1'sshould have SE indicated. Syndrome non-0 with an even number of 1's or an invalid word codeshould have DE indicated.See Figure 11 for the correspondence between syndrome and bits within the quadword.����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������î¶ïfªpô�€î$…q î5pô�îFHïfñî¶ïbð2îyï_ðOîyï\ðJîyïYô�ºô�»ð>îyïW;ô�î¶ïSÉqpô�žqpô�Ÿð?î¶ïQþô�ð.î¶ïNŒô�ª ô�«ðTî¶ïLÂô�ô�ðGî¶ïJ÷ô�„ð"ô�…ðBî¶ïI-ô�qpî¶ïDçqrî¶ïAupô�–ð'qpqpô�— î¶ï?ªô�î¶ï<8ô�•ðXô�–î¶ï:nô�ðDqpî¶ï8£ô�ðð$ô�ñð2î¶ï6Ùô�ð-ô�‚ð6î¶ï5ô�ð=qpô�‚qp î¶ï3Cî¶ï1yô�™ðOô�šî¶ï/®ô�—ð>ô�˜ð"î¶ï-äô�…ðbî¶ï*rô>ð3ô?î¶ï(§ð#î¶ï%5ô�’ô�“ðAî¶ï#jô�»ðTô�¼î¶ï! ô�’ð@ô�“î¶ïÕô�î¶ïcqðS�������Ö����¶<ñKï�ç��������������������������������������������������Dorado Hardware ManualMemory SectionAugust 1, 198548For single errors the syndrome specifies exactly which of the 64 data bits or 8 check bits was inerror. If syndrome has a single one in it, then the corresponding checkbit was in error. Whensyndrome contains more than one 1 bit, then syndrome[4:6] indicate which word in the quadwordsuffered the error as follows:word 0011word 1101word 2110word 3111The other four values of syndrome[4:6] are impossible for an SE and are reported as a DE.Syndrome[0:3] indicates the bit position within that word; unfortunately these bits are reversed, sothat the bit number is given when the bits are taken in the order 3, 2, 1, 0. Syndrome[7] is theparity of the syndrome, and a double error is indicated by a non-zero syndrome having evenparity.Dirty is set in the cache after a Store_ that misses, despite any fault, so when that munch ischosen as victim, it will be written back into storage. StorageStorage is organized into modules consisting of two identical boards per module. The modulesappear in the chasis as shown in Figure 2. Depending on whether 64k-bit or 256k-bit IC's areused, a module stores 1 million (64k chips ) or 4 million (256k chips) 16 bit words. A Doradocan have up to 4 modules, for a maximum of 16 million words. Every module must the same sizememory chips, it is illegal to mix module sizes.The module in slot 0 supplies the first quarter of real memory; slot 1, second quarter; slot 2, thirdquarter; and slot 3, fourth quarter. In other words, real memory addresses are not interleavedamong modules and the address range covered by a particular module cannot be controlled by themicrocode.The B_Config' function (Figure 10) returns M0, M1, M2, and M3 which are true only when amodule is plugged into the corresponding storage board slot. ChipSize indicates what size ic's areused on the storage boards. The memory system automatically adjusts itself to operate accordingto the IC size in use on the storage boards.MOS RAMs used on storage boards (and in the map) must be refreshed at regular intervals, elsethey drop data. This occurs during refresh references once every 16 ms. Every MOS RAM onevery storage board participates in every refresh reference, and one row of data is refreshed eachtime. This means that 256 (64k RAMs), or 1024 (256k RAMs) refresh references are required torefresh all data (So the refresh period is 2 or 4 msthe specification on both 64k and 256k RAMsis a 2 ms refresh period at the maximum operating temperature (85o C). The dominant leakageterm is exponential in temperature so the refresh period can be doubled each 5o C drop inoperating temperature. Because the specification is conservative and because we have no intentionof operating anywhere near 85o C, a 4 ms refresh period should be adequate.ÿ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������î¶ïfªpô�€î$…q î5pô�îFHïfñî¶ïbô�ðZô�žî¶ï`Sô�¬ô�ðWî¶ï^‰ô�‹ô�ŒðLî¶ï\¾ô�î:ïYLô�€îî:ïWîî:ïU·îî:ïSìîî¶ïPzô�Ê ô�ËðKî¶ïMô�‰ðWô�Šî¶ïK>ô�›ð%ô�œð<î¶ïIsô�Àô�ÁðQî¶ïG¨î¶ïD7ô�»ð!ô�¼ð=î¶ïBlô�ð9î¶ï>&rî¶ï:´pô�°qpô�±ð<î¶ï8êô�¨ð@ô�©î¶ï7ô�›ðUô�œ î¶ï5Uô�‚ô�ƒðUî¶ï3Šô�ð0î¶ï0ô�…ðGô�†î¶ï.Mô�±ð%ô�²ð:î¶ï,ƒô�„ô�…ðIî¶ï*¸ î¶ï'Fô�©ð+qpqpqpô�ª�qpî¶ï%|ô�Œð>qpô�î¶ï#±ô�–ðKô�—î¶ï!æô�ð,î¶ïtô�“ô�”ðPî¶ïªô�¥ðEu�pî¶ïßô�—ðSô�˜î¶ïô�Œð'ô�ð7î¶ïJô�ƒð1ô�„ð/î¶ïô�ô�žð;ïs�ïpî¶ïµô�Îð)ô�Ïð%ïBs�ïµp î¶ïêô�…ðbî¶ï ô�ïs�ï pð-ÿ�����������¶Ù<ñX29��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Dorado Hardware ManualMemory SectionAugust 1, 198549The CacheThe physical cache structure consists of 256 entries in an array of 64 rows by 4 columns. Eachentry holds 15 address bits, a parity bit for the address bits, four flag bits, and one munch of data(one munch = 256 data bits or 16 words). Hence, the cache holds a total of 4k words of data.The address section is implemented with 256-word RAM's, but only 64 words are presently used. The datasection uses 1kx1 RAM's for storage. When sufficiently fast 4kx1 ECL RAM's become available, weplanned to use them in the cache data section and utilize all 256 words in the address section. In this case,the cache geometry will be 256 rows by 4 columns (16k words in the data section). We found that the 4kcache was so efficient that upgrading to 16k cache was not necessaryThe cache address section stores 4 flag bits, 15 VA bits, and 1 parity bit. The cache implements a225-word virtual memory.An address VA, if in the cache at all, must be in one of the four columns of the row addressed byVA[22:27]. References compare the appropriate 15 VA bits with the values stored in each of the 4columns to determine which cache entry, if any, contains VA.The VNV (Victim Next-Victim) memory contains two two-bit entries for each row of the cache.The Victim field specifies the cache column displaced if a miss occurs in this row. The NextVfield is the next victim. When a miss or a hit in Victim occurs, Victim_NextV is done. When amiss, hit in Victim, or hit in NextV occurs, NextV_Victim.0',,NextV.1' is done. This strategy isnot perfect, since there is a 50-50 guess on the ordering of the third and fourth replacements.This treatment of VNV is used for fetches, Store_, PreFetch_, and IFU fetches but not forIOFetch_, IOStore_, or Map_, which don't use the cache.On a Flush_, Victim is written with 0 on a miss or with the column of the hit and NextV iswritten with Victim.0',,NextV.1'. If the Flush_ hit a dirty cache entry, then a FlushStore referenceis fabricated which will wind up writing Victim (= column hit by the Flush_) back into storage.The FlushStore reference will also do Victim_NextV and NextV_Victim.0',,NextV.1' again. Thismeans that the VNV entry for the row touched by a Flush_ is effectively garbaged, whichprobably won't affect performance much.The UseMcrV feature allows Victim and NextV to be replaced by McrV and McrNV for diagnostic useonly.Associated with each cache entry are four flag bits that keep track of its state, as follows:Dirty - set by Store_, cleared when loaded from storage. This bit does not implyanything about the map's Dirty bit. The cache Dirty bit causes a storage write when theentry is chosen as victim, and the map's Dirty bit is set at that time.Vacant - set by hit on Flush_, hit on IOStore_, or Store_ into a write-protected entry,cleared when the entry is loaded from storage. Vacant is not set after an SE or DE.Vacant prevents the entry from matching any VA presented to the cache.WriteProtect - a copy of the map's WP bit. It is copied from the map when the cacheentry is loaded and not subsequently changed. If a Store_ is attempted into a write-protected entry, the entry is invalidated, there is a cache fault, and a write protect faultwill be reported by the map.BeingLoaded - set while an entry is waiting for data from storage. Any reference thathits in the same row will remain in the cache address section until the bit goes off; anyÿ����������������������������������������������������������������������������������������������������������������������î¶ïfªpô�€î$…q î5pô�îFHïfñî¶ïbrî¶ï^¬pô�£ðKô�¤î¶ï\áô�‰ðOô�Šî¶ï[ô�žð0ô�Ÿð-îyïXUsô�‰ð^ô�ŠîyïVôô�Æð*ô�Çð6îyïU”ô�„ð9ô�…ð5îyïT3ô�“ðGô�”îyïRÒô�ðDî¶ïOƒpô�‡ðcî¶ïM¹�ïNFsïM¹pô�î¶ïJGô�ƒð.ô�„ð3î¶ïH|ô�ð9ô�‚ð(î¶ïF²ô�ð<î¶ïC@ô�¤îåïBéþ�ý�ïC@�î}ïBéþ"�ïC@�îÛïBéþ�ý�ïC@�ô�¥ð+î¶ïAuô�©qpð?ô�ªqî¶ï?ªpô�ð&ô�‘ð9î¶ï=àô�¤ð,ô�¥ð5î¶ï<ô�·ô�¸ðBî¶ï:Kô�ÍðQô�Îî¶ï8€ô�ð7î¶ï5ô�³ðMô�´î¶ï3Cô�€ðBô�ð#î¶ï1yô�”ð(ô�•ð7î¶ï/®ô�—ðPô�˜î¶ï-äô�Ø ô�ÙðIî¶ï,ô�ð'îyï)Wsô�£tsð!ô�¤tstsîyï'÷î¶ï$¨pô�âðFô�ãîxï" qpô�Õð=ô�Öîxï ?ô�ŒðTô�îxïtô�ðGîxïÖqpô�›ðQîxïô�¿ô�Àð:îxïAô�ðFîxï£qpô�ð1ô�žîxïØô�²ô�³ðFîxï ô�Ÿð\îxïCô�îxï ¥q pô�«ð8ô�¬îxïÚô�—ô�˜ðR������� Š����¶“=ñ\xl��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Dorado Hardware ManualMemory SectionAugust 1, 198550reference or _Md following the one which hit a row being loaded will be held.RemarkAt the end of a miss, data from the MSA boards are loaded into the cache 16 bits/clock. Not until all 16 words ofthe munch have been loaded into cache is Md loaded and the task (which has been held) allowed to continue. InitializationThis section outlines the order in which parts of the memory system can be initialized.ClocksThe instruction decoding flipflops of the memory section are enabled when the processor clocksare enabled. All other memory clocks are enabled by a signal called RunRefresh.When RunRefresh is true, clocks internal to the memory system always happen, even if theprocessor is halted. When RunRefresh is false, memory clocks run with the processor. Except forlow-level debugging of the memory system itself, RunRefresh should be true. Otherwise, storagewill not retain data at breakpoints.Mcr RegisterThe Memory Control Register (Mcr) contains fields that affect the memory system (see Figure 10).Mcr is intended to facilitate testing, and in some cases initialization. The register can be loadedwith the Mcr_ function and read back over the DMux. Bits in Mcr are as follows:dVA_VicOn each reference, write the cache address entry selected by the row of VAand column of Victim (Note: Victim determines the column, even on a hit)into VA of the pipe, so that VA[4:21] in the pipe contain the address fromthe cache. Also prevent both map and storage automata from starting(which prevents ring buffer pipe entries from being allocated to these aswell). FDMiss should always be true when dVA_Vic is true.FDMiss"Force dirty miss" forces each cache reference to miss and store the victim,even if not dirty. Misses caused by FDMiss do not cause Hold.UseMcrVUse McrV as victim and McrNV as next victim for all cache misses insteadof Victim and NextV from VNV.McrVThe two-bit victim, or cache column used on a miss, when UseMcrV istrue.McrNVThe two bit next-victim when UseMcrV is true.DisBR"Disable base registers" prevents base registers from being added to D incomputing VA and prevents BR from being written.DisCF"Disable cache flags" forces cache flags to read out as zeroes and preventsthem from being written.��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������î¶ïfªpô�€î$…q î5pô�îFHïfñîxïbô�ôð8ô�õî¶ï]ûtî¶ï[:sô�‘ð#ô�’ðOî¶ïY¶ô�½ð?ô�¾ð+ô�î¶ïTÀr î¶ïQNpðWî¶ïMqî¶ïI–pô�¥ô�¦ðOî¶ïGÌô�ðEq p�î¶ïDZô�Óð6ô�Ôð"î¶ïBô�„ðUô�…î¶ï@Åô�•ô�–ðLî¶ï>úô�ð$î¶ï:´qî¶ï7Bpô�î‰ï6ëþU�ï7B�îï6ëþ�ý�ï7B�î+ï6ëþ�ï7B�ô�‚ðEî¶ï5xô�žô�Ÿð^î¶ï3ô�ðPîxï1qî~pô�ˆð*ô�‰î~ï/Dô�Šð1ô�‹î~ï-zô�‘ô�’ð3î~ï+¯ô�Öð!ô�×ð#î~ï)äô�¹ð3ô�ºî~ï(ô�ð:îxï%|qî~pô�‹ô�Œð.î~ï#±ô�ð>îxï!qî~pô�Žð9ô�î~ïHô�îxïªqî~pô�Âô�Ãð'î~ïßîxïAqî~pô�ð-îxï£qî~pô�ªðAô�«q�pî~ïØô�ð0îxï:qî~pô�šð7ô�›î~ïoô�ÿ�������ä����¶(=ñXã*��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Dorado Hardware ManualMemory SectionAugust 1, 198551DisHold"Disable Hold" unconditionally prevents hold and BLretry from occurring.NoRefDisable storage references.WMissWakeup fault task on every miss.ReportSE'Don't wake up fault task after (correctable) single errors.NoWakeNever wakeup fault task.During normal operation every bit in Mcr should be 0, except possibly ReportSE', if correctableerrors are not being monitored. It is illegal to load Mcr while references are in progress.TestingThe memory system of the Dorado is designed so that each board can be run with the boards above removed. Themain memory diagnostic MemA can be broken down into 4 parts:1. MemC board.2. MemX board.3. MemD board.4. Storage boards. (MSA)Each part of MemA can be run alone.MemA runs all of the 4 tests and takes about 5 minutes with 64k memory chips. (21 minutes with 256k chips)MemMisc is a test of the map and long fetches.To test a memory system fully you need to run: Testall, MemA, and MemMisc.ÿ������������������������������������î¶ïfªpô�€î$…q î5pô�îFHïfñîxïbqî~pô�šð0ô�›îxï_€qî~pô�îxï\áqî~pîxïZCqî~pð;îxïW¥qî~pî¶ïTô� ðFqpô�¡î¶ïRÒô�âð6ô�ãð&î¶ïM¹rî¶ïJ±pô�Xðlî¶ïI-ð<î¶ïG¨ î¶ïF$ î¶ïD î¶ïCî¶ïA˜ð#î¶ï>ðjî¶ï;ˆð.î¶ï8€ðJ�������Ü����¶6µBÛ1V�€����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Instruction Fetch Unit OrganizationBMux.0..15Jump displacementPcJpAdder>>>>>>baiiWantIfuRef'pTo memory>>>Jump displacement H if LengthK=2; SignK extends H.0=BMux.0..15ToProcessor=SignK supplies top 11 bitsTwoAlphaK..NK if LengthK=1;PC PipelineTypeJumpMSignMLengthMIfuRBaseSel'MemBMTypePauseK'TypeJumpK'TwoAlphaMTwoAlphaKMemBKRBaseSelK'LengthK'SignKNKNMSignXLengthXNXTwoAlphaXJHIfuAddr'InstrAddrK'FGpp918{GDv'}{PcFG.15}FGefcdFGParityErrBrkInsTestH8>>>>>>>>>>t1t0t0,t1t0t0t0t1t3t1t0,t1efcddcfeefcdRamParityErrMemoryTo IFUFGAlphaMCache>InsSet28igh>To control section>>To processor sectionTo processor section2311418SectionPCX'Junk'IFUMRH'IFUMLH'M-LevelX-LevelK-LevelTrapAddr'101TrapConditionTrapAddressF>RamParity.0other bitsother bitsother bitsRamParity.1RamParity.2IFUM1024 wordsRamParityErrInsSet..74Not ReadyInsSet..34RescheduleInsSet..14FGParityErrInsSet..04K FaultInsSet..00Lowest priorityHighest prioritypIfuFaultTo IFUhgId.signghId.0..3Alpha/Betat0AlphaX.0..3AlphaX.4..7t0Id.4..7pppToProcessorSection15Mar.1..15'16PcFPcFGPcJPcMPcX>>>>>>>>>>>>>>>>>>>>>>>x 27 bitsD1IFU.silFigure 129/5/79���îrïrð#îtï]Ÿð î+ï\Êðî+ïZØðîäï\§þò�$îïZµþ9�$îEt|ïUðîÖï]|þ+�$îïZJþ�$UîÖïZ&þN�$îÖïZ&þ�$yîdtï[fðîï[Ñþ�$îï[þ�$Uîï\§þò�$î¬ï`Cþ+�$î#Öï]Ÿþ�$Çî¬ï]|þN�$î¬ï]|þ�$ëî¬ïYQþ�$ëî¬ïYQþN�$î#ÖïYuþ�$Çî¬ï\þ+�$îïZØþ�$+îï^ßþ«�$îïZµþ«�$î|ï[/ðîïWðîóïX!ðîóïYÌðî¹ïXöðî¹ïWðî+žï]!ðî+žï]!ðî+ï[/ðî#Öï^ßþ9�$î+ï\Úðî$ï`Šþò�$î$etï`®ðî-×ï_µþÇ�$î5ž|ï\ðî9Éuï_Jð î%|ïWðî&žï\þ+�$î*ÈïYuþ�$Çî&žïYQþN�$î&žïYQþ�$ëî#ÖïZµþÇ�$î-IïYQþ�$ëî-IïYQþN�$î1sïYuþ�$Çî-Iï\þ+�$î,,ïWðî*ÈïZµþ€�$î2×ïWðî3óï\þ+�$î8ïYuþ�$Çî3óïYQþN�$î3óïYQþ�$ëî1sïZµþ€�$î+tïc.ðîòïaÊð!îGï`®ðî8ïZµþd�$î>ÉïU‘þ�$î?WïXæð î>ÉïXÃþ«�$îAuïW<ðî?WïVð îGtïaÊðîòï_‘ðîòï`®ðî8eï;Pþ€�$î?æï9Éþ�$«î8eï9¥þ¤�$î8eï9¥þ�$Îî8eï6Þþ�$Îî8eï6Þþ¤�$î?æï7þ�$«î8eï8‰þ€�$î ÈpïUðî.ótï,sð î0žï1sðî0ï7Iðî.óï&åðî0Wï)¬ðî"ºï/‚ðî"ºï-ð î/:ï4;ð î"ºï4Éð î"ºï*:ðî"ºï'sð î"ºï7×ðî"ºï2Iðî"ºï:žðî1sï:ðî:Wï1sðî:ï7Iðî;tï:ðî9;ï4;ð î.eï2³þ€�$î5åï1,þ�$«î.eï1 þ¤�$î.eï1 þ�$Îî.eï6Þþ�$Îî.eï6Þþ¤�$î5åï7þ�$«î.eï8‰þ€�$î.eï(%þ€�$î5åï&žþ�$«î.eï&zþ¤�$î.eï)Aþ�$Îî.eï)Aþ¤�$î5åï)eþ�$«î.eï*ìþ€�$î.eï$Ïþ€�$î5åï#Hþ�$«î.eï#%þ¤�$î.eï5{þ€�$î5åï3óþ�$«î.eï9¥þ�$Îî.eï9¥þ¤�$î5åï9Éþ�$«î.eï;Pþ€�$î.eï-³þ€�$î5åï,,þ�$«î.eï, þ¤�$î.eï, þ�$Îî8eï1 þ�$Îî8eï1 þ¤�$î?æï1,þ�$«î8eï2³þ€�$î?æï3óþ�$«î8eï5{þ€�$îï7%þ+�$îÈï5þ�$9îï4ìþN�$îï4ìþ�$]îï<%þ�$]îï<%þN�$îÈï<Iþ�$9îï>^þ+�$îVïLôþ�$òîïLÑþ�$îHpï5WðîHï<ðîïNÃþ9�$îïLÑþ9�$îïE˜þ9�$îïGÑþ9�$îïE˜þ�$]îVïE»þ�$9î¹ïM;þ�$�Gî¹ïMÊþ�$�Gî¹ïNXþ�$�Gî¹ïGþ�$�Gî¹ïFþ�$�Gî¹ïFþ�$�Gî0tï#ðî"ºï$óðîdïLþ�$�ÕîdïKûþ��$îÈïKþ�$òîÈïJßþ�$îdïGÑþ�$�ùîdïH¦þ��$îÈïGÑþ�$îÈïIÂþ�$îdïGôþ�$�î€pïM;ðî€ïFðîdïJQþG�$î¬|ïF ðîGï2çðîÈïIæþ�$îtïKðî¹ïO-þ�$�Žî+ïPðîºuïFðîäïDŸð î Ötï6»ðî Gï/ìþ€�$î Gï03þÇ�$î Gï0zþÇ�$î Gï0ÂþÇ�$î Gï1 þÇ�$î Gï1PþÇ�$î Gï1—þÇ�$î Gï1ÞþÇ�$î Gï2%þ€�$î€|ï.uðî€ï.uðî ï.uðî ï.uðî Gï0þ�$«îòtï1,ðîï6—þŽ�$î +ï:{þr�$î +ï<mþr�$î+ï=Bþ��$î +ï;»þ�$«î+ï;—þ$�$î+ï;—þ�$ÎîGï<ðî+ï;Pþ��$î +ï9Éþ�$«î+ï9¥þ$�$î+ï9¥þ�$ÎîÖï:ðî ï8‰þ�$îï8¬ðîHï9;þ�$î�ï:Wðî«ï=Bþò�$î|ï9’ðîï2Yðî€ï8¼ðî€ï6Ëðî€ï4Ùðî€ï2çðîHïHKðîHïG/ðîHïFðîHïDöðîºuï>Éðîºï3óðî :ïXðî(HïXðî.¬ïXðî5žïXðî!ï`gðîï=fðîÖïM;ðîHïFðî*ï3þ€�$î*ïzþÇ�$î*ïÁþÇ�$î*ïþÇ�$î*ïOþÇ�$î*ï–þÇ�$î*ïÝþÇ�$î*ï%þÇ�$î*ïlþ€�$î,º|ï¼ðî,ºï¼ðî-Iï¼ðî-Iï¼ðî-IïØðî-IïØðî,ºïØðî,ºïØðî*ïˆþ€�$î*ïAþÇ�$î*ïúþÇ�$î*ï³þÇ�$î*ïkþÇ�$î*ï$þÇ�$î*ïÝþÇ�$î*ï–þÇ�$î*ïOþ€�$î*ïkþ€�$î*ï²þÇ�$î*ïúþÇ�$î*ïAþÇ�$î*ïˆþÇ�$î*ïÏþÇ�$î*ïþÇ�$î*ï]þÇ�$î*ï¤þ€�$î,ºïôðî,ºïôðî-Iïôðî-Iïôðî0ïOþ�$î0ïkþ�$î0ïˆþ�$î1,ï«þ�$Çî1,ïkþV�$î2ItïðîUïT-þ:�GîïBôþ�GîUïBþ�GîUïBþ�GÈî9pïQôðîuïIæðîtïJtðî ï5åþ�$€î.eï<mþ¤�$î.eï>þ€�$î0Wï<×ðî8eï>þ€�$î8eï<mþ¤�$îïdþ +�Gîïdþ�G&WîÈï=Bþ�$îGïMíþÖ�$îŽïNðî �|ïJ=ðî ï9¥þ�$î«ï6 þ«�$î«ï6,þ�$9îÈï6 þ9�$îï8Bþ�$]îï8BþN�$îÈï8eþ�$9îï:{þ+�$î+tï8ôðîÈï9^þ9�$îäï8ôþ�$îï:ðîï6»ðîäï5žþ�$î",ï1Þþ9�$î",ï,Þþ9�$î",ï/^þV�$î!åï4¥þ€�$î,º|ï4ðî*ï4’ðî*ï4’ðî-Iï7´þ�$î!åï7´þä�$î5åï=Bþ€�$î5åï1Þþ€�$î5åï4¥þ€�$î5åï7´þ€�$î.eï3Ðþ€�$î8eï3Ðþ€�$î",ï:{þ9�$î5åï:{þ€�$î5åï#úþ«�$î;tï Jðî=fuï#ðî!åï*þ€�$î!åï'Oþ€�$î5åï*þd�$î5åï'Oþ«�$î;t|ï&gðî;tï#Ÿðî=fuï)¬ðî=fï&åðî)¬ï7Iþ�$î)etï8eðî.eï3óþ�$«î8eï3óþ�$«î)¬ï)¬þ�$î)eï*Èðî)¬ï&åþ�$î)eï(ðî)¬ï4;þ�$î)eï5Wðî)¬ï:þ�$î)eï;-ðî)¬ï1sþ�$î)eï2ðî)¬ï<×þ�$î)eï=ôðî)¬ï,sþ�$î?æuïUðî9ÉtïZØðî9ÉïYuðî9ÉïXðî9ÉïVðî.eï#Hþ�$«î.¬pïBðî8eïBðî%:ïBðî!åï$ÏþÇ�$î#tï#Hð î#ï#%þ«�$î)¬ï"sþ�$Uî)¬ï#úþ¹�$î+Wï#þ�$î*Èï$¬ðî)eï-ðî5åï,Þþd�$îuï+žðî9ï*ð î ï+žðî ¹ï*ðîŽïF´þŽ�$îÖtïFØðî �|ïCðî",ïlþV�$î"ºtïðî$¬ïäð î$¬ïð î$¬ïð î"ºï¬ðî",ïˆþV�$î",ï¤þV�$î"ºïÈðî!åï«þ�G%ÈîÈpï+ðîdtï)ð î9ï)ðî ¹ï)ð î9ï(ð î ¹ï(ð î9ï&åð î ¹ï&åð î9ï%Èðî ¹ï%Èð î9ï$¬ðî ¹ï$¬ð îuï$¬ðîÖï)ðî.eï&žþ�$«î¬|ïL½ðîïPmþ�$î+tïP‘ðîuïPðîBf|ï=.ðîBfï=.ðîE»tï2ðîBf|ï.¼ðîBfï.¼ðîE»tï@tðîDŸï1Þþ¹�$îDŸï@Pþ¹�$î?æï1ÞþÇ�$î.eï<þ�$«î5åï<þ�$«î8eï<þ�$«î?æï<þ�$«îuï=ð î;tïAIðî?æï?žþ�$«î8eï?žþ�$«î8eï?{þ¤�$î8eïA&þ€�$î8ôtï?æðî8ôï<×ðî?æï@PþÇ�$î6tï=Bþ�$2î6tï@Pþò�$î1ºuï>‚ðîAï>Éþ�$«îAï>¦þÇ�$î?æï=Bþr�$î?æï:{þ«�$îAï:{þ�$‡îAï;ÞþÇ�$î?æï7´þÇ�$îBï7´þ�$ëîBï:{þ«�$îDXï9Éþ�$ÖîDXï<´þ��$îE»tï<×ðîIX|ï< ðîIXï9ðîIXï..ðîFuï8ðîDï7ð îDŸï5åðî%:ï^uþ�$î$¬tï_Jðî.óï_Øð î$óïZJþ�$î$eï[fðî Èpï^.ðî :ïZðî'ºïZðî.ïZðî5ïZðî9ÉïYQþ��$î9ÉïWíþ��$î9ÉïVŠþ��$î=|ïWðî=ïU¡ðî=ïT=ðî=ïRÚðî-Iï9’ðî-Iï6Ëðî-Iï4ðî-Iï0õðî-Iï..ðî-Iï).ðî-Iï&gðî-Iï#Ÿðî-Iï JðîC;ï9’ðîC;ï:õðîC;ï8.ðîC;ï6Ëðî7Iï4ðî7Iï6Ëðî7Iï0õðî7Iï..ðîï;tþ +�Gî7Iï9’ðî7Iï< ðîï]|þò�$îÖï1 þ9�$î:tï'ºð î?Wuïð î!årï«ð î?Wuïdðÿ�������Cä��9dJ bç Œ������������������������������������������������������������������������������������������������������������������������������������������������������������������MEMORYSYSTEM//ISJ-LEVEL2 BITSM LEVELX LEVELPCFGPCMPCXPCJIFU DATATO BYTEPOINTSTO WORDOP AT JOP AT MOP AT XNKH181+1+1+1PCFPOINTSTO BMUX16 BITSHDVMDVBRKINSTESTIFUBMUXIFUBMUX16 BITS8 BITS + SIGN EXTENDNXILXINSTRUCTION SETIS.0ADDERBMUXBMUXENABLE16 BITS16 BITS16 BITSINSTRADDR10 BITSRAMPARITY3 BITSM LEVELILNMEMB01342MXSIGNRBASESELTYPATYJMPM LEVELK LEVELMEM FAULTTO IFUMAR16 BITSVALID RAM = JDV + NO PROBLEMSKREADY = FOR AN _IFU DATA THE FOLLOWING THINGS WILL COME OUT OF THE IFU ON IFU DATA:DURING A JUMP YOU WILL ONLY GET INSTRUCTION LENGTH FOR AN _ ID.JDV + LENGTH = 1JDV + HDV + LENGTH = 2JDV + HDV + FGDV + LENGTH = 3KREADY = KREADY = JDVEXECPTIONADDRESSPROCESSORRAM OUTPUT27 BIT/1K RAMFDVFGDVKREADY0:30:1ALPHA 0:7ALPHA 0:3F-BYTE 0:7G-BYTE 0:7F-BYTE 8:15G-BYTE 8:15TO CONTROLPageDateRevDesignerProjectFileXEROX1CSLVEST<PHYLUM>DORADOIFU BLOCK DIAGRAMIFUBLOCKDIAGRAM.SIL1. ENCODED CONSTANT (N)2. 3. BETA4. INSTRUCTION LENGTH0:30:10:9N= 17 MEANS THAT THERE IS NO CONSTANTIF YOU DO SEVERAL _IFU DATA'S YOU WILL EVEUTALLY ONLY GET THE INSTRUCTION LENGTH(COULD BE TWO FOUR BIT QUANTITIES IF 2ALPHA BIT SET)FG 0:7 + PARITYPCFG.15GDV'S1S28 BITS + PARITY"H" LOADSAT T1X0X1X2X3GDVIFU DATA GOES TO THE PROCESSOR AND ALSO TO THE MEMORY SYSTEMPCFG.15IS.0XOR WITHPCFG.15"J" LOADS AT T0D5-14-82��î¬tïZØðî¬ïY¼ðîsïM_ðîäïLBðîÈïIæþ V�$î$ïGÑþ�$9îÈïGþ y�$îÈïGþ�$]îïGÑþ�$9îVïH_ðîÈïJ ðîsïJ þ�$ÇîHïKJðî��ïGþë�$î��ïA´þ�$î��ïAþ$�$îúï7´þH�$î$Aï4‚þ�$Uîúï4^þk�$îÖï4^þ�$yîï5Âðî]ï-%þ�$yî]ï-%þ r�$î$¬ï-Iþ�$Uî]ï0zþ r�$î%ï.eðî ìï$ˆþ�$Àî(%ï0zþ9�$î/^ï-Iþ�$Uî(%ï-%þ]�$î(%ï-%þ�$yî(%ï4^þ�$yî(%ï4^þ]�$î/^ï4‚þ�$Uî(%ï7´þ9�$î ìï0Âþ�$Àî+zï0žþ�$äî(ïGþ9�$î/:ïD{þ�$Uî(ïDXþ]�$î(ïDXþ�$yîsïOtþ ä�$î+WïHþ�$€î+Wï7×þ�$¤î&åïC;þ•�$î&åïC;þ�$]îˆïK&þ�$�ùî8ïYuþ�$yî8ïYuþ ²�$îBïY˜þ�$Uî8ï\Êþ �$îBïP´þ�$Uî8ïP‘þ�$yî8eïDXþ�$yî8eïDXþ k�$îBïD{þ�$Uî8eïGþ G�$î8Bï7´þ �$îBÐï4‚þ�$Uî8Bï4^þ ²�$î8Bï4^þ�$yî8Bï-%þ�$yî8Bï-%þ ²�$îBÐï-Iþ�$Uî8Bï0zþ �$î9;ïQÑðî9^ï5žðî9^ï.eðî9;ïE˜ðî+zï',þ�$î"–ï'þ �$î"–ï$eþ�$ÇîÏïÖðî=ïQCðî<ï[Cðî<ïZ&ðî&Wï[þë�$î=ïE˜ðî=Ðï5žðî=Ðï.eðî<ï7´þ�$Èî<´ï0žþ�$äî<ïBþÇ�$îCÉïBþ9�$îJ»ï=Bþ�$äîFï=þN�$îFï=þ�$ îEtï?æþ@�$îEtï=Ðþ�$äîCÉïAþÎ�$îCÉï>Éþ�$�$îBï>^ðîBï@—ðîGïC;ðîJ»ïAþd�$îLïAþ�$ÏîCïR<þ +�$îLïR<þ�$ îBï[þ –�$î<ïGÑþ�$äîDæïFþ�$î?æïIæþ�$î?æïGÑþ�$9î8ïSæþ ²�$î8ïP‘þ ²�$îBïR<þ�Ž�$îC;ïSXþ�Ž�$îDXïSXþ�$ëî?WïVþ�$î?WïT þ�$9îBïSXþ�Ž�$îDæïT ðîC;ïGBðîDXï\îðîBï\<þ�$îCÉï\<þ�$yî>;ï_‘þ²�$î>;ï]5þ�$€î9;ïZµðîCÉïIæþ�$îC;ïVþ�$îBïSXþ«�$î=ïR_ðî:{ï&ðî:žï$Ïðî&åïR_þ�$�$î&ÁïRƒþ�$�$î&žïR¦þ�$�$î&åïS4þ�$�$î&ÁïSþ�$�$î&žïRíþ�$�$î&zïRÊþ�$�$îF&ïBBþ�$�$îFIïBfþ�$�$îFmïB‰þ�$�$îFïBþ�$�$îFmïBÐþ�$�$îFIïBôþ�$�$îF&ïCþ�$�$î"sï#þ�$�$î"Oï"Þþ�$�$î",ï"ºþ�$�$î"ï"–þ�$�$î!åï"sþ�$�$î!Áï"Oþ�$�$î!žï",þ�$�$î+åï1 þ�$�$î+Áï0åþ�$�$î+žï0Âþ�$�$î+zï0žþ�$�$î+Wï0Âþ�$�$î+3ï0åþ�$�$î+ï1 þ�$�$î+Áï8Bþ�$�$î+žï8þ�$�$î+zï7ûþ�$�$î+Wï7×þ�$�$î+3ï7ûþ�$�$î+ï8þ�$�$î*ìï8Bþ�$�$î+ÁïH;þ�$�$î+žïHþ�$�$î+zïGôþ�$�$î+WïGÑþ�$�$î+3ïGôþ�$�$î+ïHþ�$�$î*ìïH;þ�$�$î+WïGôþ�$�Gî&åïZµþ�$�$î&ÁïZØþ�$�$î&žïZüþ�$�$î&åï[Šþ�$�$î&Áï[fþ�$�$î&žï[Cþ�$�$î&zï[þ�$�$îC;ïQÑþ�$�$îCïQôþ�$�$îBôïRþ�$�$îC;ïR¦þ�$�$îCïRƒþ�$�$îBôïR_þ�$�$îBÐïR<þ�$�$îC;ïZµþ�$�$îCïZØþ�$�$îBôïZüþ�$�$îC;ï[Šþ�$�$îCï[fþ�$�$îBôï[Cþ�$�$îBÐï[þ�$�$î=ï1 þ�$�$î<ûï0åþ�$�$î<×ï0Âþ�$�$î<´ï0žþ�$�$î<ï0Âþ�$�$î<mï0åþ�$�$î<Iï1 þ�$�$î<ûï8Bþ�$�$î<×ï8þ�$�$î<´ï7ûþ�$�$î<ï7×þ�$�$î<mï7ûþ�$�$î<Iï8þ�$�$î<%ï8Bþ�$�$î<ûïH;þ�$�$î<×ïHþ�$�$î<´ïGôþ�$�$î<ïGÑþ�$�$î<mïGôþ�$�$î<IïHþ�$�$î<%ïH;þ�$�$î@PïH;þ�$�$î@-ïHþ�$�$î@ ïGôþ�$�$î?æïGÑþ�$�$î?ÂïGôþ�$�$î?žïHþ�$�$î?{ïH;þ�$�$î?ÂïTtþ�$�$î?žïTQþ�$�$î?{ïT-þ�$�$î?WïT þ�$�$î?4ïT-þ�$�$î?ïTQþ�$�$î>íïTtþ�$�$î>¦ï]Xþ�$�$î>‚ï]5þ�$�$î>^ï]þ�$�$î>;ï\îþ�$�$î>ï]þ�$�$î=ôï]5þ�$�$î=Ðï]Xþ�$�$î!Vï1 þ�$�$î!3ï0åþ�$�$î!ï0Âþ�$�$î ìï0žþ�$�$î Èï0Âþ�$�$î ¥ï0åþ�$�$î ï1 þ�$�$îÝïJtþ�$�$îºïJQþ�$�$î–ïJ-þ�$�$îsïJ þ�$�$îOïJ-þ�$�$î+ïJQþ�$�$îïJtþ�$�$îÝïKmþ�$�$îºïKJþ�$�$î–ïK&þ�$�$îsïKþ�$�$îOïK&þ�$�$î,ïKJþ�$�$îïKmþ�$�$îóïKmþ�$�$îÏïKJþ�$�$î¬ïK&þ�$�$îˆïKþ�$�$îeïK&þ�$�$îAïKJþ�$�$îïKmþ�$�$î>^ï_‘þ�G�$î=ï(lþ�$�$î<ûï(Hþ�$�$î<×ï(%þ�$�$î<´ï(þ�$�$î<ï(%þ�$�$î<mï(Hþ�$�$î<Iï(lþ�$�$îBÐïSXþ�G�$îBÐï\<þ�$�$î1—ïA´þ�$�$î1sïAþ�$�$î1PïAmþ�$�$î1,ïAIþ�$�$î1 ïAmþ�$�$î0åïAþ�$�$î0ÂïA´þ�$�$î4ï8Bþ�$�$î3óï8þ�$�$î3Ðï7ûþ�$�$î3¬ï7×þ�$�$î3‰ï7ûþ�$�$î3eï8þ�$�$î3Bï8Bþ�$�$î1—ï7´þä�$î5{ï4‚þ�$Uî1—ï4^þ�$î1—ï4^þ�$yî4ìï?æðî2³ï5žðîÝïLþ�$�$îºïKûþ�$�$î–ïKØþ�$�$îsïK´þ�$�$îOïK‘þ�$�$î+ïKmþ�$�$îïKJþ�$�$î¬ïKûþ]�$î&åïJ˜þ�$�ŽîsïK&þ�$�Gî&åïKþ�$îïJßþë�$îlïJ þ�$�ÕîóïJßþ�$�$î–ïOtþ�$�$îÈïOtþ‡�$î��ïXæþ�$îïUµþ�$Uî��ïU‘þ@�$î��ïU‘þ�$yîäïU‘þ�$yîäïU‘þ@�$î�ïUµþ�$UîäïXæþ�$îïVÑðî ïVÑðî�Žï[Cðî rï[CðîÇïOtþ²�$îÇïOtþ�$@î«ïO˜þ�$îÇïYQþ�$òî«ïY þ�$9î2ïYuþ�$�$îïYQþ�$�$îëïY.þ�$�$îÇïY þ�$�$î¤ïY.þ�$�$î€ïYQþ�$�$î]ïYuþ�$�$îïYuþ�$�$îòïYQþ�$�$îÏïY.þ�$�$î«ïY þ�$�$î‡ïY.þ�$�$îdïYQþ�$�$î@ïYuþ�$�$îÇïY.þ�$�$î=ï+þ�$�$î<ûï*ìþ�$�$î<×ï*Èþ�$�$î<´ï*¥þ�$�$î<ï*þ�$�$î<mï*^þ�$�$î<Iï*:þ�$�$î=ôï*:ðî#lï",ðî<´ï(³þ�$•î<´ï(%þ�$�²î,ºï%¥þ�$€î$ˆï%þV�$î$eï$Ïþ�$�Õî",ï$Aþ�$�$î$Ïï$Ïþ�$�$î$¬ï$¬þ�$�$î$ˆï$ˆþ�$�$î$eï$eþ�$�$î$Aï$ˆþ�$�$î$ï$¬þ�$�$î#úï$Ïþ�$�$î$ˆï%þ�$�$î$eï$eþ�$�Gî$eï$¬þ�$�Gî#ï$Ïþ�$�$î"Þï$¬þ�$�$î"ºï$ˆþ�$�$î"–ï$eþ�$�$î"sï$ˆþ�$�$î"Oï$¬þ�$�$î",ï$Ïþ�$�$î!ï-%þ�$�$î"ºï'þ�k�$îúï$eþ�$äî"sï ìþ�$�$î"Oï Èþ�$�$î",ï ¥þ�$�$î"ï þ�$�$î!åï ¥þ�$�$î!Áï Èþ�$�$î!žï ìþ�$�$îzï+3ðî!zï+zðîïM_ðî(ïUþ9�$î/ÉïP´þ�$rî(ïP‘þ9�$î(ïP´þ�$rî&žïRÊþò�$î*ïVõðî+ïU&þ�$«î+zïU‘þ�$�$î+WïUmþ�$�$î+3ïUJþ�$�$î+ïU&þ�$�$î*ìïUJþ�$�$î*ÈïUmþ�$�$î*¥ïU‘þ�$�$î0WïQÑþ�$�$î03ïQôþ�$�$î0ïRþ�$�$î0WïR¦þ�$�$î03ïRƒþ�$�$î0ïR_þ�$�$î/ìïR<þ�$�$î/ÉïR<þV�$îFûïAðî<´ïf<ðî?ÂïfÊþ€�$îLï[Cþ�$«î@»ïc¼ð îFIïg ðîDXïY˜ðîDXïP´ðî�ŽïE ð î�ŽïCíðî«ïA´þ�$î9ïE ð î9ïCíðî VïA´þ�$î$ïA´þ�$îïA´þ�$î9ï5{ðî��ï4;þ�$yî��ï4;þë�$îÇï8ôþ�$ÀîÖï1 þ�$�$î³ï0åþ�$�$îï0Âþ�$�$îlï0žþ�$�$îHï0Âþ�$�$î%ï0åþ�$�$îï1 þ�$�$îlï0Âþ�$î!åpïEPðî!VïA´þ�$î"sï7´þ�$ �îïEPðîïA´þ�$î¬ï7×þ�$ Oî¬ï@tþ�$@î2ï/Éþ�$�$îï/¥þ�$�$îëï/‚þ�$�$îÇï/^þ�$�$î¤ï/‚þ�$�$î€ï/¥þ�$�$î]ï/Éþ�$�$î ï8Bþ�$�$îóï8þ�$�$îÏï7ûþ�$�$î¬ï7×þ�$�$îˆï7ûþ�$�$îeï8þ�$�$îAï8Bþ�$�$î"Þï8Bþ�$�$î"ºï8þ�$�$î"–ï7ûþ�$�$î"sï7×þ�$�$î"Oï7ûþ�$�$î",ï8þ�$�$î"ï8Bþ�$�$î ätïEtðîïCíðîïBÐðîïA´ðîˆïC;þ�$�$îAïC;þ�$�$îdïC_þ�$�$îkïC¦þ�$�$îïCÉþ�$�$î³ïCíþ�$�$î³ïBôþ�$�$îïCþ�$�$îÖïBôþ�$�$îúïBôþ�$�$îïCþ�$�$îïCÉþ�$�$îúïCíþ�$�$îÖïCíþ�$�$îúïCíþ�$�$îóïCíþ�G�$îóïCíþ�$�$îÏïCíþ�$�$î¬ïCÉþ�$�$îóïBôþ�$�$îïBôþ�$�$îÏïBôþ�$�$î¬ïCþ�$�$îdïC‚þ�$�$îAïC¦þ�$�$îˆïC¦þ�$�$îkïC‚þ�$�$îkïC;þ�$�Gî*¥ï5žþ�$�$î*^ï5žþ�$�$î*ï5Âþ�$�$î)ˆï6 þ�$�$î)¬ï6,þ�$�$î)Ðï6Pþ�$�$î)Ðï5Wþ�$�$î)¬ï5{þ�$�$î)óï5Wþ�$�$î*ï5Wþ�$�$î*:ï5{þ�$�$î*:ï6,þ�$�$î*ï6Pþ�$�$î)óï6Pþ�$�$î*ï6Pþ�$�$î+ï6Pþ�G�$î+ï6Pþ�$�$î*ìï6Pþ�$�$î*Èï6,þ�$�$î+ï5Wþ�$�$î+3ï5Wþ�$�$î*ìï5Wþ�$�$î*Èï5{þ�$�$î*ï5åþ�$�$î*^ï6 þ�$�$î*¥ï6 þ�$�$î)ˆï5åþ�$�$î)ˆï5žþ�$�Gî*ï.‰þ�$�$î*:ï.‰þ�$�$î*^ï.¬þ�$�$î)eï.óþ�$�$î)ˆï/þ�$�$î)¬ï/:þ�$�$î)¬ï.Aþ�$�$î)ˆï.eþ�$�$î)Ðï.Aþ�$�$î)óï.Aþ�$�$î*ï.eþ�$�$î*ï/þ�$�$î)óï/:þ�$�$î)Ðï/:þ�$�$î)óï/:þ�$�$î*ìï/:þ�G�$î*ìï/:þ�$�$î*Èï/:þ�$�$î*¥ï/þ�$�$î*ìï.Aþ�$�$î+ï.Aþ�$�$î*Èï.Aþ�$�$î*¥ï.eþ�$�$î*^ï.Ðþ�$�$î*:ï.óþ�$�$î*ï.óþ�$�$î)eï.Ðþ�$�$î)eï.‰þ�$�GîpïDÂðî,,ï5ðî+åï.ðîC_ïe þ�$�ùîBfïeÑþ�$òîBfïe®þ�G�$îBïeÑþ�G�$îBôïeõþ�G�$îC;ïfþ�G�$îC‚ïf<þ�G�$îCÉïf`þ�G�$îDïfƒþ�G�$îDXïf§þ�G�$îDXïfÊþ�G�$îDïfîþ�G�$îCÉïgþ�G�$îC‚ïg5þ�G�$îC;ïgYþ�G�$îBôïg|þ�G�$îBïg þ�G�$îBfïgÃþ�G�$îBBïfÊþ�$�$îìïAþ�$@îÁtïF&ðîïE ðîÁïCíðîÁïBÐðîïA´þ�$îÈïF&ðîÈïE ðîÈïCíðîïA´þ�$îïF&ðîïE ðîÈïA´þ�$îVïF&ðîVïE ðîVïCíðîVïBÐðî�ï8þ�$ –î��ï7þÇ�$î ï4^þ�$Uîäï7ûþ�$ ¹îÇï4^þ�$Uîrï5žðî9ï>;ðîÇï/^þ�$�î«ï@ þ�$«îäï@ þ�$«îï@ þ�$«îäï@ þ�$«î&WïXæþU�$î/^ïX|þ�$�$î/‚ïXŸþ�$�$î/¥ïXÃþ�$�$î/ÉïXæþ�$�$î/¥ïY þ�$�$î/‚ïY.þ�$�$î/^ïYQþ�$�$î)ïXæþ«�$î0WïX|ð î0WïW_ðî,sï`Ñðî-lï[Cþ�$�î-×ï[®þ�$�$î-³ï[Šþ�$�$î-ï[fþ�$�$î-lï[Cþ�$�$î-Iï[fþ�$�$î-%ï[Šþ�$�$î-ï[®þ�$�$î.eï]Ãðî-×ï^˜þ�$�$î-³ï^uþ�$�$î-ï^Qþ�$�$î-lï^.þ�$�$î-Iï^ þ�$�$î-%ï]çþ�$�$î-ï]Ãþ�$�$îrïeðîrï,ð îrïºðKîÝï Àð@î ï,ðî ïðî ïóðîrïð îrïóð î2ïKûþ�$‡î2ïKûþ�$î5åïLþ�$dî2ïM_þä�$î/‚ïA&þ2�$î03ï?æðîï<%ð îï; ðîŽï9;þ�$�²î"ï ¥þ�$î Àï.¬ð îkï0žþ�$ÀîÖï0åþ�$�$î²ï0Âþ�$�$îï0žþ�$�$îkï0zþ�$�$îHï0žþ�$�$î$ï0Âþ�$�$î�ï0åþ�$�$îVï0åþ�$�$î2ï0Âþ�$�$îï0žþ�$�$îëï0zþ�$�$îÈï0žþ�$�$î¤ï0Âþ�$�$îï0åþ�$�$îëï0žþ�$äîOï8Bþ�$�$î+ï8þ�$�$îï7ûþ�$�$îäï7×þ�$�$îÁï7ûþ�$�$îï8þ�$�$îyï8Bþ�$�$îkï8Bþ�$�$îHï8þ�$�$î$ï7ûþ�$�$î�ï7×þ�$�$îÝï7ûþ�$�$î¹ï8þ�$�$î–ï8Bþ�$�$îùï9^þ�$�$îÖï9;þ�$�$î²ï9þ�$�$îŽï8ôþ�$�$îkï9þ�$�$îGï9;þ�$�$î$ï9^þ�$�$î2ï9^þ�$�$îï9;þ�$�$îëï9þ�$�$îÇï8ôþ�$�$î¤ï9þ�$�$î€ï9;þ�$�$î]ï9^þ�$�$îŽï9þ�$�$î!Vï$Ïþ�$�$î!3ï$¬þ�$�$î!ï$ˆþ�$�$î ìï$eþ�$�$î Èï$ˆþ�$�$î ¥ï$¬þ�$�$î ï$Ïþ�$�$îeï$Ïþ�$�$îAï$¬þ�$�$îï$ˆþ�$�$îúï$eþ�$�$îÖï$ˆþ�$�$î³ï$¬þ�$�$îï$Ïþ�$�$îï?æð îïHíð îÈïIæþr�$îBïFþ9�$îCÉï>Éþ«�$îFïFþ+�$îFïBþ�Ž�$îD{ïfÊþ¤�$î ï7´þ«�$îºï4‚þ�$Uî ï4^þ«�$îºï4^þ�$�$îˆï8Bþ�$�$îdï8þ�$�$îAï7ûþ�$�$îï7×þ�$�$îúï7ûþ�$�$îÖï8þ�$�$î³ï8Bþ�$�$îï@tþ�$@îï7×þ�$ Oîäï7×þ�$ Oîäï@tþ�$@îOï8Bþ�$�$î,ï8þ�$�$îï7ûþ�$�$îäï7×þ�$�$îÁï7ûþ�$�$îï8þ�$�$îzï8Bþ�$�$îOï8Bþ�$�$î+ï8þ�$�$îï7ûþ�$�$îäï7×þ�$�$îÁï7ûþ�$�$îï8þ�$�$îzï8Bþ�$�$îäï@tþ�$@îäï7×þ�$ Oî«ï7×þ�$ Oî«ï@tþ�$@îï8Bþ�$�$îòï8þ�$�$îÏï7ûþ�$�$î«ï7×þ�$�$îˆï7ûþ�$�$îdï8þ�$�$îAï8Bþ�$�$î2%ïM_þ�$�$î2%ïKûþ�$�$î2×ïO ðî2%ïNæþ�$�$î2%ïPJþ�$�$î2ïPJþä�$î5åïO þ�$dî2ïNæþ�$î2ïNæþ�$‡î5åïPJþ�$�$î4;ïMíþ�$�$î4ïMÊþ�$�$î3óïM¦þ�$�$î3ÐïM‚þ�$�$î3¬ïM¦þ�$�$î3‰ïMÊþ�$�$î3eïMíþ�$�$î3ÐïM‚þ�$dî0ÂïN4þ�$î0ÂïK&þ�$2î0ÂïKþ]�$î3ïJ þ�$î3ÐïJ þ�$òî4¥ïJQþ�G�$î4^ïJ-þ�G�$î4ïJ þ�G�$î3BïGôþ�$�$î4¥ïIæþ�$�$î4ÉïJ þ�$�Gî4‚ïI{þ�$�$î4¥ïIŸþ�$�Gî4‚ïIXþ�$�$î4^ïIþ�$�Gî4;ïHÉþ�$�Gî4ïH‚þ�$�Gî3óïH_þ�$�$î3ÐïH;þ�$�$î3¬ïHþ�$�$î3‰ïGôþ�$�$î3eïGÑþ�$�$î3eïGÑþ�$�$î2³ïH‚þ�$�Gî2ïHÉþ�$�Gî3ïHþ�$�$î2ûïH;þ�$�$î2×ïH_þ�$�$î2³ïH‚þ�$�$î2lïIþ�$�Gî2IïIXþ�$�Gî2%ïIŸþ�$�kî2ïJ þ�$�kî2ûïIæþ�$î2×ïJ þ�$�$î2³ïJ þ�$�$î2ïJ-þ�$�$î2lïJ-þ�$�$î2IïJQþ�$�$î2%ïJQþ�$�$î3eïC;þ�$�Gî7´ï?æþ�$@î3¬ïBÐðî3eïBÐþ�$�Žî3eïBþ€�$î5åïA&þ�$�²î1ºï; ðî6PïAþ�$�$î6,ïAmþ�$�$î6 ïAIþ�$�$î5åïA&þ�$�$î5ÂïAIþ�$�$î5žïAmþ�$�$î5{ïAþ�$�$î1,ïBþ9�$î1,ïA&þ�$�Õî1,ï>^þ�$@î1,ï>;þd�$î2ï<þ�$Îî5åï>^þ�$@î4^ï>;þ«�$î4^ï<´þ�$«î4^ï<þ�$�$îïC_ðî!åïC_ðî$óï',ð î$óï%Èð îVïZØð îVï^.ð îVïY.ðîVï\ƒðî�Žï-×ð îOïOtþ�$�$îsïK&þ�$kîOïO˜þ�$�$î–ïO˜þ�$�$î–ïOQþ�$�$îOïOQþ�$�$îÖïJtþ�$�$î³ïJQþ�$�$îïJ-þ�$�$îlïJ þ�$�$îHïJ-þ�$�$î%ïJQþ�$�$îïJtþ�$�$î��ï�Õþ�Grî��ï�ŽþNX�Gî«ï�Õþ�Grîrï�Õþ�Grî!Vï�Õþ�Grî:åï�Õþ�Grî>;ï�Õþ�GrîGï�Õþ�GrîGïðî>Éïðî;tïðî3ïðî9ïðî0åï�Õþ�Grî!åïðîpïUðî��ï�þNX�GîH;ï«ðîï«ðî3¬tïòðî%:ïðîÇpï«ðîï9ðî!åtïòðîNXï�Õþ�GrîrïòðîrïHðî¤ï²þ�$�$î]ï²þ�$�$î€ïÖþ�$�$î‡ïþ�$�$î«ïAþ�$�$îÎïdþ�$�$îÎïkþ�$�$î«ïþ�$�$îòïkþ�$�$îïkþ�$�$î9ïþ�$�$î9ïAþ�$�$îïdþ�$�$îòïdþ�$�$îïdþ�$�$îïdþ�G�$îïdþ�$�$îëïdþ�$�$îÇïAþ�$�$îïkþ�$�$î2ïkþ�$�$îëïkþ�$�$îÇïþ�$�$î€ïúþ�$�$î]ïþ�$�$î¤ïþ�$�$î‡ïúþ�$�$î‡ï²þ�$�Gîrïð îrïòðîVï)óðî!Vï)óðîUï1ºðî9ï=Ðþä�$îrïòð%î�ï7ûþ�$�Gî$ïAþ�$�$îÝïdðPî«ïHð5îäïSðî&WïQCþ�$îïPØþ�$rîïP´þÇ�$î&WïP´þ�$@î:ï\_þV�$î:ïY þV�$î:ïZµþV�$î:ï^ þV�$î:ïUJþ�$ îrïU&þ]�$îrïU&þ�$ ²îrï_µþÇ�$îäïVõðîäïUØðîïVõðîïUØðî«ïU&þ�Ž�$î:ïVÑþ�$î:ïUµþ�$îÈï\_þÎ�$îÈïSþ�$ rîÈïRíþ«�$îï_'þÇ�$îsïO»þ�$UîïM‚ðî(ïE»ðî+WïFIðî+WïE-ðîï^.ðîï\ƒðîïZØðîïY.ðî/‚ï?æþ�$@î/‚ï?Âþ�$î2ï?Âþ�$�$î4^ïAþy�$î4^ï?Âþ�$@î4‚ï?ÂþU�$î5åï?{þ�$�Gî1,ï?{þ�$�Gî2ï?Âþ�$�$î2ï>;þ�$�$î3¬ï?þ9�$î3¬ï?4þ�$¤î3¬ïA×þ�$�Žî2IïBBþd�$î2IïAþ�$�Õî2³ïA´þ�$�$î2ïAþ�$�$î2lïAmþ�$�$î2IïAIþ�$�$î2%ïAmþ�$�$î2ïAþ�$�$î1ÞïA´þ�$�$î2IïAmþ�$�$î2×ï?æþ�$dî2³ïA&þ�$�$î2³ï?Âþ�G�$î1,ïAûþ�$�²î3¬ï7ûþ�$Çî3eïC_þ�$rî2ûïLBðîÝï$Aþ¤�$îVïVÑþ9�$î¹ï +ð<î)¬ïSXðî)¬ïQðî)¬ïR<ðî2IïRÊðî5åïA´þ�$î]ï8Ðþ�$îNï7×þ�$�$î¹ï8þ�$�$î•ï7ûþ�$�$îrï7×þ�$�$îNï7´þ�$�$î+ï7×þ�$�$îï7ûþ�$�$îäï8þ�$�$îNï7ûþ�$�²îNï8¬þ�$�$îŽï9Éþ�$@îÇï7þ�$�$îïH‚ðî;tpï«ðî>Étïòðÿ�������ä�����ŽNŸh.Þ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Dorado Hardware ManualInstruction Fetch UnitAugust 1, 198552Instruction Fetch Unit The instruction fetch unit, or IFU, decodes a stream of bytes from memory into a sequence of 8-bit opcodes and operands using a writeable decoding memory, and presents the results to theprocessor for efficient interpretation. The next section contains an overview of IFU function,supplemented by details in later sections.Read this chapter with Figure 12 in front of you.Overview of OperationThe IFU handles four independent instruction sets. Opcodes are 8-bit bytes, which may befollowed in memory by 0, 1, or 2 operand bytes. The total length of an operation is 1, 2, or 3bytes. The first operand byte is called a (Alpha), the second b (Beta).The term PC refers to the displacement of an opcode byte from the codebase, which is BR 31.PC's are 16-bit items, where 0:14 are an unsigned word displacement relative to the codebase, andbit 15 selects the byte. In other words, codebase points at a 32k segment of virtual memory; a PCselects a byte in this segment. The PC's are named PCF, PCM, and PCX, where the final letter inthe name denotes the level in the IFU pipeline.For Alto compatibility reasons, we currently have the following kludge. Instruction sets 0 and 1treat byte 0 in the selected word as bits 0:7, 1 as bits 8:15; instruction sets 2 and 3 treat byte 0 asbits 8:15, 1 as 0:7. Eventually, this may be changed so that all instruction sets use 0 for the bytein 0:7 and 1 for 8:15.The IFU is started by first selecting an instruction set (InsSetOrEvent_B function) and thenloading the F-level PC (PCF_B function). The IFU then starts fetching the byte stream startingat the word BR[31] + PCF[0:14], byte PCF[15], from the cache and prepares opcodes forinterpretation by the processor.Bytes from the cache then march through the IFU pipeline beginning with the F and G full-wordbuffer registers on the MemD board; single bytes from F/G then move into J and H on the IFUboard. InsSet[0:1] and the opcode byte in J address the decoding memory, IFUM, a 1024-word x24-bit (+3 parity) RAM containing the information in the table below. Although IFUM iswriteable, it will normally be loaded with the microprogram and not subsequently changed(Diagnostics are, of course, an exception.).������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������î¶ïfªpô�€î"sqî5pô�îFHïfñî¶ïa×rp�î¶ï^eô�ðBô�‘î¶ï\›ô�Áð?ô�Âî¶ïZÐô�Ãð,ô�Äð3î¶ïYô�ð*îðïU”qô�Xð1î¶ïPzsô�î¶ïMpô�ÑðRô�Òî¶ïK>ô�¡ ô�¢ðTî¶ïIsô�ð)t�pt�pî¶ïFô�ªqpð6ô�«�qpî¶ïD7ô�‡ô�ˆðEî¶ïBlô�„ð]ô�…î¶ï@¡ô�ðLô�‚î¶ï>×ô�ð/î¶ï;eô�ð_ô�žî¶ï9šô�‹ðdô�Œî¶ï7Ðô�ðVô�‘î¶ï6ô�î¶ï2“ô�Óô�ÔðAî¶ï0Èô�˜ð(ô�™ð7î¶ï.þô�éð2ô�êð#î¶ï-3ô�î¶ï)Áô�ˆ ô�‰ðOî¶ï'÷ô�Œð9ô�ð"î¶ï&,ô�‹ð]î¶ï$aô�Òð!ô�Óð6î¶ï"—ô�êô�ëð=î¶ï Ìô�ð,ÿ� ������ì����¶ …=ñG†�ì����������������������������������������Dorado Hardware ManualInstruction Fetch UnitAugust 1, 198553Table 18: IFUM FieldsNameBit Size ContentsLength' 2Opcode length: 1, 2 or 3 bytes (0 length is illegal).TPause' 1The opcode is of type pause.TJump' 1The opcode is of type jump.IFaddr'10TNIA[4:13] of the first instruction to be executed in interpreting this opcode(TNIA[14:15] from the IFUJump in the exit of the previous opcode).RBaseB' 1RBase initialization.MemB 3MemBase initialization.Sign 1Operand sign extension.Packeda 1Packed a, use the Alpha byte as two 4 bit nibbles.N 4Operand encoded in the opcode.Length', TPause', TJump', Sign, Packeda, and N are used by the IFU to prepare operands and tosequence correctly to the next opcode; IFaddr' is passed to the control section; and the processoruses MemB and RBaseB' to initialize MemBase and RBase when the microcode for the opcodecommences.Length' determines the number of operand bytes; a for a two or three-byte instruction will be inH, while b for a three-byte instruction will be in F/G, when the assembled instruction is ready toproceed. The assembled instruction and a then drop into the M level.IFU JumpsIFU jumps are often talked about in simple terms, but a lot of things have to be in place beforean Ifu jump can work.1. Ifu memory has to be loaded with values that decode the 8 bit opcodes in the "J" register. The"J" register address 1 of 256 different locations in the Ifu memory.2. Virtual Memory must be loaded with the high level program that we are going to run. (Cedar,Mesa, Lisp... etc.)3. Instruction Memory must have microcode loaded that correspond with the opcodes that arebeing decoded.4. The IFU - F/G, H, and J registers must be loaded. This is accomplished by a PCF_Binstruction.IFUJump[n] causes the Ifu memory to decode the opcode in "J" and produce a 10 bit value usedto make a Instruction Memory address. where TNIA[4:13]_IFaddr, TNIA[14:15]_n (n is a 2 bitfield) is the location of the entry instruction. IFaddr may be overruled by a trap address whenappropriate.Instructions that implement the opcode then reference operands in sequence using the A_Id,RisId, or TisId operations discussed in "Processor Section" or the IFetch_ operation discussed in"Memory Section," which read operands from the X level. The operand sequence delivered bythe IFU in response to _Id is as follows:ÿ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������î¶ïfªpô�€î"sqî5pô�îFHïfñî%9ïbsô�Xîï_£uîô�ùxøÿúÿùøZîï]Kvùxøÿîô�€ùxøÿúÿîžùøZúÿô�ð/îï[¤ù�ø�ú�ùxøÿúÿ�îô�€ùxøÿúÿîžùxøÿúÿô�wv�îïZ ù�ø�ú�ùxøÿúÿ�îô�€ùxøÿúÿîžùxøÿúÿô�wv�îïXœù�ø�ú�îùxøÿúÿîžô ùxøÿúÿð2ô!î~ïW;ô�ðBîïU·ù�ø�ú�îô�€ùxøÿúÿ�ù�ø�ú��îžô�îïT3îô�€ùxøÿúÿîžùøZúÿô�îïR¯îô�€ùxøÿúÿîžùøZúÿô�îïQùxøÿt�îvô�€ùxøÿúÿîžùøZúÿô��t�vð*îïO`�îô�€ùxøÿúÿîžùøZúÿô�î¶ïLqô�Œù�ø�ú�ô�t�pq�pð/î¶ïJGô�”ô�•qpð4î¶ïH|ô�«qpqpð;ô�¬î¶ïF² î¶ïC@qpô�’ð)t�pð)ô�“î¶ïAuô�ˆô�‰�t�pðXî¶ï?ªô�ð(t�pî¶ï<8sî¶ï8êpô�•ð;ô�–ð%î¶ï7ô�î¶ï3Šô�‰ô�Šð[î¶ï1¿ô�ðDî¶ï/õô�’ð<ô�“ð"î¶ï.*ô�î¶ï,_ô�¼ðZî¶ï*•ô� î¶ï(Êô�Ïð:ô�Ðî¶ï'�î¶ï#jô�Œð8ô�ð$î¶ï! ô�˜ð[î¶ïÕô�¥ð2qpô�¦î¶ïî¶ï™ô�Ìð5ô�Íð%î¶ïÎô�–ð$ô�—ð=î¶ïô�¥ðMô�¦î¶ï9ô�ð)ÿ� ������ (����¶ò<ñS«��������������������������������������������������������������������������������������������������������������������������������������������������������������������������Dorado Hardware ManualInstruction Fetch UnitAugust 1, 198554Table 19: Operand Sequence for _IdTypeLengthPackedaSequence0IllegalJump1Length, Length, Length, . . .Packeda, sign, and N determine jump displacement.Jump2Length, Length, Length, . . .Packeda and N are unused; sign extends the sign of a for the jumpdisplacement.Jump3IllegalRegular1N if N ne 178, Length, Length, Length, . . .Packeda and sign are unused.Regular20N if N ne 178, a, Length, Length, . . .a is sign-extended if sign = 1.Regular21N if N ne 178, a[0:3], a[4:7], Length, Length, . . .Sign is unused.Regular30N if N ne 178, a, b, Length, Length, . . .a is sign-extended if sign = 1.Regular31N if N ne 178, a[0:3], a[4:7], b, Length, Length, . . .Sign is unused.PausexxSame as regularRegular and pause opcodes have an optional 4-bit operand N that is delivered first (N isn't supplied when N= 178). This is followed by a and b, if they exist; a is sign-extended when sign = 1 or split into two 4-bit nibbles if Packeda = 1. Subsequently, _Id delivers Length. For jumps, all of these operands areconsumed in computing the jump displacement, and _Id delivers Length.The normal opcode references all of its N, a, and b operands; however, except on three-byteopcodes, the IFU hardware does not require that these operands be referencedthe processorcould exit to the next opcode without reading all the operands, if that was desirable for somereason. However, for opcodes of length 3, the processor must consume the a byte with _Id (botha[0:3] and a[4:7] if Packeda=1) before going to the next opcode with an IFUJumpit does notsuffice to consume the last a byte with _Id concurrent with IFUJump.The types of opcodes are distinguished as follows: A pause has no successor, and the IFU mustbe restarted with PCF_B before the next IFUJump. A regular's successor is the byte following itslast operand; a jump's successor is determined by adding a displacement to the current PC asfollows:If Length=1, then Sign.Packeda.N forms a six-bit signed displacement. In other words,the jump is to any byte in the range PC408 to PC+378.If Length=2, then Packeda and N are unused; the jump displacement is a, if sign is 0,or sign-extended a, if sign is 1.A jump with Length=3 is illegal.The IFU pipeline (F/G, H, and J) follows the instruction stream and fills up when it is five or sixbytes ahead of the current opcode. When a pause opcode is recognized, further memoryreferences are not made. When a jump opcode is recognized in J, the IFU discards any bytes inF, G, and H and refills these levels with bytes along the jump path.������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������î¶ïfªpô�€î"sqî5pô�îFHïfñî!Gïbsô�Xð#î:ï^¬wî½î@t�î!Ãwî:ï\Tv�î�î‡�î!Ãî:ïZÐî�î‡�î!Ãwô�vî!ÃïYLwt�wvw�vî:ïW¥î�î‡�î!Ãwvî!ÃïV!wt�vô�ˆw�vwvt�vô�‰î!ÃïTî:ïSî�î‡�î!Ãî:ïQ”î�î‡�î!Ãw�vô�w�vïQ�ïQ”wvî!ÃïOÊwt�vwvî:ïMÿî�î‡�î!Ãw�vw�vïMr�ïMÿt�vwvî!ÃïL5t�vwvî:ïJjî�î‡�î!Ãw�vw�vïIÝ�ïJjt�vt�vwvî!ÃïHÃwv î:ïGî�î‡�î!Ãw�vw�vïFŽ�ïGt�vt�vwvî!ÃïEQt�vwvî:ïC†î�î‡�î!Ãw�vw�vïBù�ïC†t�vt�vt�vwvî!ÃïAßwv î:ï@[î�î‡�î!Ãîyï>&wvô�€wvô�ð(w�vw�vw�îyï<¢vô�€ï<�ï<¢t�vô��t�vt�vwvîyï:Øô�ªwt�vð"wvð#ô�«îyï9Tô�ð>wv�î¶ï6pô�¹ð+t�pt�pô�º î¶ï4:ô�Åð#qpð&ô�Æ î¶ï2pô�·ð%ô�¸ð9î¶ï0¥ô�„ô�…ð-t�pî¶ï.Út�pô�˜ t�pt�pqpô�™ð%qî¶ï-pô�t�pð'î¶ï)žô�šð6qpð#î¶ï'Óô�„ð4qpð"ô�…î¶ï& ô�½qpðEô�¾î¶ï$>îyï Ìô�‘qpq t�qpô�’ð0îyïô�ð*ïuv�ïpïuv�ïp�îyï³ô�”qpqt�pq�pô�•t�pqpîyïèô�t�pqpîyïvqp î¶ïô�…ô�†ðFî¶ï:ô�ñð+qpô�òî¶ïoô�•ô�–�qpð9î¶ï ¥ô�ðD� ������ &����¶ ^<ñZ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Dorado Hardware ManualInstruction Fetch UnitAugust 1, 198555The B_PCX' function reads PC (inverted) for the current opcode. Note that PCF_B does notaffect the value of PCX; B_PCX' continues to read the displacement of the current opcode, whichdoes not change until an IFUJump is done.An opcode that conditionally jumps can be encoded in IFUM with type either jump or regular. Ifencoded as type jump, when the condition is false, the program must issue PCF_B to restart theIFU at the fall-through address. Similarly, if regular, PCF_B must be issued to restart at thejump address.Following PCF_B, the IFU flushes its pipeline; it is illegal for either the instruction containingPCF_B or the one immediately after it to do an IFUJump, but any subsequent instruction canissue an IFUJump; however, the processor will spin uselessly at the IFU "NotReady" trap untilthe fifth cycle after PCF_B (earliest) or later (longer opcodes, cache misses, Mar traffic).Table 20: IFU FF DecodesNameActionIFUResetHalt and clear the IFU pipeline and clear errors, testing features, and BrkPending (i.e.,BrkIns); Reschedule condition and instruction set are not cleared.B_IFUMLH'Read the high-order IFUM word, InsSet, and IdCnt onto B (low-true) as follows:FieldB bitsIdCnt 0:2Count of _Id's since start of opcodeInsSet 3:4Instruction set numberPackeda 5Packed aIFaddr' 6:15Starting addressIFUMLH_BLoad the high-order IFUM word from B, where the Packeda and IFaddr fields are inthe same form as B_IFUMLH'. Must have at least one intervening instruction after apreceding BrkIns_ or InsSetorEvent_.IFUMRH_BLoad the low-order IFUM word from B in the format given below:FieldB bitsSign 0IPar.0 1Even parity over N, MemB[1:2], and IFAD[0:1]IPar.1 2Even parity over IFAD[2:9]IPar.2 3Even parity on Packeda, Sign, Length', MemB.0,RBaseB', TPause, and TJumpLength' 4:5Instruction length (low true)RBaseB' 61-bit RBase initializationMemB 7:93-bit MemBase initializationTPause' 10Type pause (low true)TJump' 11Type jump (low true)N12:154-bit operandB_IFUMRH'Read IFUM fields in the same format as IFUMRH_B (inverted).PCF_BLoad PCF at t3, clear and restart the pipeline. Reload F/G, H, and J.B_PCX'Read PC for the currently executing opcode (inverted).BrkIns_BLoad BrkIns from B[0:7], and set BrkPending. BrkIns replaces the next opcode loadedinto J; then BrkPending is cleared. BrkIns also addresses IFUM on IFUMLH/RH_ andB_IFUMLH'/RH'.InsSetOrEvent_BIf B[0]=1, then B[6:7] are loaded into the InsSet register at t3; if B[0]=0, then B[4:15]control event counters. ÿ����î¶ïfªpô�€î"sqî5pô�îFHïfñî¶ïbô�ªô�«ð=î¶ï`Sô�ƒðBô�„î¶ï^‰ô�ð)î¶ï[ô�‡ô�ˆqpð/qpqpî¶ïYLô�™ô�š�qpðJî¶ïWô�¶ð0qpô�·î¶ïU·ô�î¶ïREô�©ðbî¶ïPzô�ªðZî¶ïN°ô�¤ð]î¶ïLåô�üð@ô�ýî!«ïHŸsô�XîxïEtuîùøZúÿîxïC@vù�ø�ú�îô�œùøZúÿô�ðQîïAßô�ðBîxï@îô�×ùøZúÿð7ô�Øî¡ï>Jwù�ø�ú�î$îô�î¡ï<vî$îô�€î'¶ô�î¡ï;î$îô�€î'¶ ô� î¡ï9št�î$îvô�€î'¶ô��t�î¡ï8vî$îô�€î'¶ô�îxï6(ùøZúÿîô�šùøZúÿð6t�vô�›îï4¤ô�œðSîï3Cô�ð$îxï1yîùøZúÿð>î¡ï/®wù�ø�ú�î$îî¡ï-ävî$îô�€î¡ï,ƒî$îî'¶ô�ð,î¡ï+"î$îô�€î'¶ô�î¡ï)žî$îô�€î'¶ô�t�vî.¶ï(î¡ï&¹î$îô�€î'¶ ô�î¡ï%Xî$îô�€î'¶ô�î¡ï#øî$îô�€î'¶ô�î¡ï"—î$îô�€î'¶ô�î¡ï!6î$îô�€î'¶ô�î¡ïÕ�î$îî.¶îxïùøZúÿîùøZúÿð;îxï@îùøZúÿï³�ï@ð8îxïuîùøZúÿð6îxï«îô�›ùøZúÿð,ô�œð(îïJô�…ðBô�†îïé îxïîô�–ùøZúÿô�—ð%ï’�ïîïwô�� ������ ü����¶T<ñU·Á������������������������������������������������������������������������������������������������������������������������������Dorado Hardware ManualInstruction Fetch UnitAugust 1, 198556Table 20: IFU FF Decodes (continued)NameActionRescheduleCause a reschedule trap on the second or third "successful" IFUJump. "Successful"means that an IFUJump is not trapped for some other reason such as not-ready. Thesecond IFUJump will be trapped if it does not occur in the instruction immediately afterthe first successful IFUJump; otherwise, the third successful IFUJump will be trapped.The trap instruction is executed as though it were the first instruction of the rescheduledopcode, and _Id and IFUJump will work as though that opcode were in progress.Also set the Reschedule branch condition (emulator only) to true.RescheduleNowRescheduleNow is guaranteed to trap the next successful IFUJump, so long as the nextIFUJump appears in the second cycle after RescheduleNow, or later. The Reschedulebranch condition is not affected.NoRescheduleTurn off the Reschedule trap and branch condition.IFUTest_BLoad the test-control register from B (load with 0 or do IFUReset when not testing) asfollows:FieldB bitsTestFG 0:7Substituted for cache dataTestFGParity 8Substituted for cache parity bitTestFault 9Substituted for memory fault signalTestMemAck 10Substituted for memory MemAck signalTestMakeF_D 11Substituted for memory MakeF_D signalTestFH' 12enable FHCP and t1 when IFUTick executedTestSH' 13enable SHCP and t2 when IFUTick executedTestEn 14test enableIFUTickTick the IFU's clock once according to TestFH and TestSH in the IFUTest register. Thisis used for debugging only, the IfuSimple microdiagnostic used this function to run withthe absence of a memory system installed.The IFUJump Entry VectorAn IFUJump[n], encoded in the JCN field of the instruction, sends control to an address partlydetermined by the IFU (10 bits) and partly by the IFUJump clause [n] (2 bits). The four possibletargets of an IFUJump[n], where n =0 to 3 are called an "entry vector".Use of MemBX and the Duplicate Stk RegionsSince about 70% of all calls return before calling any other procedure, if a caller's base registersand stack were left untouched, then this information would neither have to be saved during thecall nor restored during the return in most cases.The hardware that supports this idea consists of the MemBX register, pointing at one of fourblocks of 4 base registers each, and StkP, pointing at one of four stacks of 64 registers each.During a procedure call, StkP and MemBX may be advanced by 1 region, leaving the caller's stateintact; if the callee makes nested calls, then eventually the MemBX and Stk regions would beexhausted and some would have to be saved and (eventually) restored. However, if the calleereturns without too many nested calls, then its caller's state would still be intact.Trapsÿ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������î¶ïfªpô�€î"sqî5pô�îFHïfñî$ïbsô�Xð%îxï^òuîùøZúÿîxï\¾v îô�¼ùøZúÿwvô�½îï[]ô�œô�ðEîïYüô�†ðXîïXœô�¥ð,ô�¦ð*îïW;ô�‰ðKô�ŠîïUÚô�ÈðMîïTô�ðAîxïREîô�—ùøZúÿô�˜wvð(îïPäô�¤ô�¥ð@îïOƒô�ð!îxïM¹îùøZúÿð2îxïKîîô�”ùøZúÿô�•ðAîïJî¡ïHÃwù�ø�ú�î$îô�î¡ïFøvî%žô�€î.¶ ô�î¡ïE—î%žô�€î.¶ ô�î¡ïD7î%žô�€î.¶ ô�î¡ïBÖ î%žô�€î.¶ ô�î¡ïAu î%žô�€î.¶ ô�î¡ï@î%žô�€î.¶ô�âô�ãï?‡�ï@î¡ï>mî%žô�€î.¶ô�ç ï=à�ï>mî¡ï<Æî%žô�€î.¶ô�îxï:ûùøZúÿîô�…ùøZúÿðVîï9šô�Œ ô�ðMîï89ô�ð)î¶ï3Csù�ø�ú�î¶ï/Ñpô�£ðAô�¤î¶ï.ô�…ô�†ðTî¶ï,<ô�ðGî¶ï'#sð*î¶ï#±pô� ô�¡ðYî¶ï!æô�£ð(ô�¤ð6î¶ï ô�ð2î¶ïªô�¾ð\î¶ïßô�Áð*ô�Âð5î¶ïô�„ð_î¶ïJô�¸ðSô�¹î¶ïô�´ð-ô�µð/î¶ïµô�ðUî¶ï›s� ������ à����¶T=ñY·������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Dorado Hardware ManualInstruction Fetch UnitAugust 1, 198557The IFU may trap for not ready, reschedule request, map faults, cache data errors, and IFUMparity errors. When a trap condition occurs, the IFU substitutes a trap address for IFaddr on thenext IFUJump.IFU trap Locations in the MicrostoreReasonLocationsCommentReschedule request*14-17Indicates that some previous instruction executed the ReSchedulefunction.IFUM parity error*74-77Indicates a hardware failure in the IFUM storage.IFU not ready*34-37The instructions in this vector should contain IFUJump[n], waitingfor the IFU to become ready.IFU data parity error *4-7Parity wrong on data from cache.IFU map fault *0-3The IFU buffers the fact of a map fault and completes allopcodes in the pipe ahead of the one experiencing the fault.Upon dispatch to the first instruction for the opcode affected bythe fault, this trap occurs.*Each trap has 4 locations in microstore reserved. A map fault for IFUJump0 would go tolocation 0 in microstore, IFUJump1 would go to location 1, IFUJump2 would go to location 2,and IFUJump3 would go to location 3. Each trap vector is dispatched into by IFUJump exactly as though it were an opcode. The relative priority of traps is as follows: IFUM parity error is highest, then NotReady,reschedule, cache data parity error, and map fault.The NotReady trap occurs whenever the IFU does not have both an opcode and its associatedoperands (a, b) ready for the processor. Since PCX, MemBase, and RBase are invalid, the trapmicrocode must wait for the IFU to become ready. If the IFU detects bad parity on any read ofIFUM, the IFUJump to the opcode affected by this parity error will trap to the IFUM parityerror trap location.The IFU will trap at the cache data parity error location, if it detected invalid parity on any bytesent by the memory system. PCX will always correctly point at the opcode that would have beenexecuted next had the trap not occurred; however, the opcode and operands pointed at by PCXare not necessarily the ones that suffered the parity error. This occurs because the Opcodes arefetched ahead of PCX. The most confusing case occurs when the opcode following PCX was ajump; in this case the opcode fetched by the jump may have caused the parity error,.The IFU will hold an IFUJump in the cycle prior to a cache data parity error or IFUM parityerror trap.The Reschedule function is used by I/O tasks to request service by the emulator (task 0). TheIFU will honor this trap request on the second IFUJump after it is executed. The RescheduleNowfunction is like the Reschedule function, but the IFU honors it on the first IFUJump after it isexecuted, rather than the second.An IFU fetch may experience a map fault. The memory system does not report map faultsÿ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������î¶ïfªpô�€î"sqî5pô�îFHïfñî·ïbô�°ð[î·ï`Sô�Œð5ô�ð-î·ï^‰ô�îcïYLsô�Xð$îxïV!wîRî'¶îxïSvô�€îRî%5ô�›ð7î%5ïQ¸îxïOíô�€îRî%5ô�ð(îxïN#ô�€îRî%5ô�ð*î%5ïLÂô�îxïJ÷ô�€îRî%5îxïI-îRî%5ô�Ùô�Úî%5ïGÌô�Êô�Ëð#î%5ïFkô�˜ô�™ð'î%5ïE ô�î¶ï?ñpô�Øð4ô�Ùð#î¶ï>&ô�¨ð"ô�©ð9î¶ï<\ô�ð'î¶ï8êðUî¶ï5xô�ãðLô�äî¶ï3ô�ð3î¶ï0;ô�¯ðNô�° î¶ï.qô�œ t�pt�pô�ð@î¶ï,¦ô� qpð"ô�‘ð.î¶ï*Ûô�µð+ô�¶ð/î¶ï)ô�î¶ï%Ÿô�’ð[ô�“î¶ï#Ôô�Œð+ô�ð3î¶ï" ô�Ÿô� ðNî¶ï ?ô�¡ðaî¶ïtô�¤ð5ô�¥ð$î¶ïªô�ðTî¶ï8ô�¦ð?ô�§î¶ïmô� î¶ïûô�¦ð?ô�§î¶ï1ô�€ð(qpô�î¶ïfô�¤ðFô�¥�qpî¶ï›ô�ð!î¶ïô�Æô�ÇðF� ������ Þ����¶ ¿<ñ]L?��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Dorado Hardware ManualInstruction Fetch UnitAugust 1, 198558caused by in IFU memory fetch to the fault task (task 17). Instead, it signals the IFU that a mapfault has occurred, and the IFU passes this indication through its pipeline. Eventually, theIFUJump instruction that would have sent control to the opcode affected by the map fault willinstead transfer to the map fault trap vector.An IFU fetch may experience single or double storage failures. Unlike map faults, these arereported to the fault task just as on processor fetches. The memory system pipeline will finishloading the cache munch just as though the data were ok, and the cache entries will have validbyte parity. The IFU will continue running just as though no error had occurred.However, the fault task will be woken soon enough that it will run before the IFU's F/G registeris loaded with a byte from the bad munch. Hence, the fault task will run before the emulatorcan possibly execute an IFUJump to the byte that suffered the error.For a recoverable error, the fault task can simply carry out some logging action and block; noharm will occur because the IFU will actually have gotten valid data, and the cache will containvalid data. For an irrecoverable error, the fault task must clear the bad cache munch and use theRescheduleNow function to trap the next IFUJump to code for dealing with the irrecoverableerror.ÿ��������������������������������������������������������������������������������������������������������������������������������������������î¶ïfªpô�€î"sqî5pô�îFHïfñî¶ïbô�‰ð*ô�Šð8î¶ï`Sô�Ûð>ô�Üî¶ï^‰ô�¨ð#ô�©ð:î¶ï\¾ô�ð.î¶ïYLô�Áð\î¶ïWô�¬ð`î¶ïU·ô�¥ô�¦ð?î¶ïSìô�ðQî¶ïPzô�ô�ŽðAî¶ïN°ô�Ÿô� ðNî¶ïLåô�ðDî¶ïIsô�°ô�±ðBî¶ïG¨ô�ð2ô�žð.î¶ïEÞô�‹ð<ô�Œð&î¶ïDô�¼ð2ô�½ð(î¶ïBIÿ� ������t����¶B<ñ& �‰����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Dorado Hardware ManualInstruction Fetch UnitAugust 1, 198559IFU ResetThe processor can reset the IFU by executing the IFUReset function. This clears all IFU errorconditions, prevents further IFU memory references, clears the BrkIns_ feature, and generallyputs the IFU in a clean and operable state. The Reschedule feature is not affected by IFUReset.ReschedulingI/O tasks request service from the Task 0 by first indicating a request in some way (Presently anRM location is used as a 16-bit table in which 1's indicate requests.), then executing theReschedule function. The IFU and the processor store the reschedule condition in flipflops whichremain set until the NoReschedule function turns them off.The next IFUJump after Reschedule transfers to the entry vector for the opcode as usual; thereschedule trap address will drop into the IFAddr register at t2 of this instruction, and the firstIFUJump after that will dispatch into the reschedule trap vector. This means that secondIFUJump will trap unless the second IFUJump occurs on the instruction immediately after thefirst IFUJump, in which case the trap will not occur until the third IFUJump. IFUJump's thatexperience a NotReady trap are not counted. The entry vector at the reschedule trap location is entered as though it were the next opcode.When Reschedule is used by I/O tasks to request the wakeup of another process, this fact isunimportant. However, the other use of Reschedule is in continuation from map (and other)faults. In this application, the reschedule trap will wind up restoring the IFU state by executingan appropriate number of _Id's and eventually branching back to the instruction that experiencedthe fault. When the reschedule trap vector is entered, the IFU is in an undefined state except for PCX', andPCF_B is needed to restart the IFU at the continuation address.BreakpointsBrkIns_B implements debugging breakpoints straightforwardly. The idea is that a one-byteopcode, BrkP, is used to transfer control to a debugger while saving emulator state needed tocontinue later, and another opcode, Continue, is used to continue from breakpoints (For Mesa,BrkP and Continue are special cases of Xfer.).BrkP may be substituted for any opcode in a program. The debugger gets control when BrkP isexecuted, saves state, and eventually can execute Continue to restore state from values saved byBrkP.Reading and Writing IFUMIn addition to its function related to breakpoints, BrkIns_B is used to address IFUM whenreading or writing that memory.When IFUM is loaded, it is addressed by the instruction set InsSet[0:1] and BrkIns. The datamust remain on B for two cycles, so tasking must be disabled and the instruction following the������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������î¶ïfªpô�€î"sqî5pô�îFHïfñî¶ïbrî¶ï^¬pô�¢ðCô�£î¶ï\áô�ÅðSô�Æ î¶ï[ô�ô�ðQî¶ïUýrî¶ïR‹pô�•ð,ô�–ð5î¶ïPÁô�ò ô�óðLî¶ïNöô�…ô�†ðDî¶ïM,ô�ð:î¶ïIºô�µqpð&ô�¶ð.î¶ïGïô�©ð?ïGbs�ïGïpô�ªî¶ïF$ô�çô�èðLî¶ïDZô�°ô�±ðOî¶ïBô�£ðXô�¤î¶ï@Åô�ð,î¶ï=Sô�Áô�Âð%qð!p�î¶ï;ˆô�Àð'ô�Áð4î¶ï9½ô�¿ô�Àð@î¶ï7óô�šô�›ðSî¶ï6(ô�Šô�‹ðKî¶ï4^ô�î¶ï0ìô�…ð<ô�†ð%î¶ï/!ô�ð?î¶ï*r î¶ï&–pô�æðNô�ç î¶ï$Ëô�¼ð,ô�½ð1î¶ï#ô�°ðWô�±î¶ï!6ô�ð.î¶ïÄô�—ð+ô�˜ð1î¶ïùô�¦ð)ô�§ð7î¶ï/î¶ïrô�î·ï¤pô�×ðDô�Øî·ïÙô�î·ïôô�°ðXô�±î·ïMô�¨ð0ô�©ð.� ������ ˜����¶=ñ]������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Dorado Hardware ManualInstruction Fetch UnitAugust 1, 198560one with IFUMRH_ or IFUMLH _ must put the same data on B.WriteIFUM:IFUReset;*Stop future IFU fetches and clear the pipeT_41C;Cnt_T;IFUReset, GoTo[.,Cnt#0&1];*Reset after previously issued fetches completeInsSetOrEvent_RMaddr0;*Load 2 instruction set bits forming IFUM addressBrkIns_RMAddr1;*Load 8 opcode bits forming IFUM addressTaskingOff;*Ensure no B glitch below and let BrkIns_ settle for 1 cycleIFUMLH_RMdataHi;*Write high part of IFUMB_RMdataHi;*Keep data good a little longer (mustn't glitch)IFUMRH_RMdataLo;*Write low part of IFUMB_RMdataLo, TaskingOn;*Keep data good a little longerIFUReset, Return;*Clear BrkInsReadIFUM:IFUReset;*Stop future IFU fetches and clear the pipeT_41C;Cnt_T;IFUReset, GoTo[.,Cnt#0&1];*Reset after previously issued fetches completeBrkIns_RMaddr1;*Load 8 opcode bits forming IFUM addressInsSetOrEvent_RMaddr0;*Load 2 instruction set bits forming IFUM addressNoop;*Two instructions must elapse after loading BrkIns*one after loading InsSet (?Two noops after loading InsSet*might be better since this is a tight path?)RMdataHi_IFUMLH;*Read IFUM into RM.RMdataLo_IFUMRH;IFUReset, Return;*Clear BrkInsIFU TestingThe IFU test control register is loaded by the IFUTest_B function; when not testing, this registershould contain 1, and it is loaded with 1 by the IFUReset function. IFUTest.15 disables theperiodic wakeup request to the Junk task. when IFUTest.15 is 0, the junk wakeups occur 60times/sec and are dismissed by any IFUTest_ function. (The Junk task wakeup is wired to task 2and is used to keep the time of day clock)IFUTest.14 (TestEn) enables IFU test mode; it is illegal for this bit to change from 0 to 1 whenthe IFU is active because, if this occurred in the same cycle that an IFU memory reference wasissued, then the IFU would pollute the Mar bus indefinitely, making the memory system unusableby the processor.The test features aim at two situations. First, they allow the IFU clocks to be controlled by aprogram, so a diagnostic can slowly step the IFU through its stages. Secondly, they allow datasupplied by a diagnostic to be substituted for signals that would otherwise come from the memorysystem. This allows the IFU to be tested in the absence of the memory system, which allowsscope probes to be inserted easily and decouples IFU problems from memory system problems.The IFUSimple microdiagnostic is designed to run without the memory system removed.The TestFH' and TestSH' bits in the IFUTest register enable the first-half-cycle and second-half-cycle clocks, respectively, which will occur between t2 and t4 of the cycle after the one issuing theIFUTick function. Thus, the IFU can be stepped through a PCF_B function as follows:ÿ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������î¶ïfªpô�€î"sqî5pô�îFHïfñî·ïbð9î Èï]µs îüï\Tî&•ð+îüïZóîüïY“îüïX2ô�€î&•ô�ð)îüïVÑî&•ð1îüïUpî&•ð(îüïT î&•ô�Àô�Áð)îüïR¯î&•ô�îüïQN î&•ð0îüïOíî&•îüïNŒô�€î&•ô�îüïM,ô�€î&•ô�îyïJîüïI-î&•ð+îüïGÌîüïFkîüïE ô�€î&•ô�ð)îüïC©î&•ð(îüïBIî&•ð1îüï@èî&•ð2î&•ï?‡ô�ýð:î&•ï>&ô�ð-îüï<Æî&•îüï;eîüï:ô�€î&•ô�î¶ï5r î¶ï1œpô�Œô�ðVî¶ï/Ñô�½ ô�¾ðNî¶ï.ô�Çð#ô�Èð6î¶ï,<ô�ô�Žð@î¶ï*rô�ð*î¶ï'�ô�šðYô�›î¶ï%5ô�ŸðEô� î¶ï#jô�†ð.ô�‡ð0î¶ï! ô�î¶ï.ô�®ðJô�¯î¶ïcô�© ô�ªðTî¶ï™ô�‡ð`î¶ïÎô�´ô�µð<î¶ïô�¨ð&ô�©ð4î¶ï9ô�ðSî¶ïÇô�˜ð?ô�™ð"î¶ïüô�ð6ïos�ïüpïos�ïüp qpô�Žî¶ï2ô�ïðT� ������ Ä����¶ ë<ñZ L������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Dorado Hardware ManualInstruction Fetch UnitAugust 1, 198561TaskingOff;IFUTest_TestEn;IFUTick;PCF_value;where PCF_value is just an exampleany other IFU function or an IFUJump could be usedinstead.The IFU's memory interface is simulated by the TestFG, TestParity, TestFault, TestMemAck, andTestMakeF_D bits in IFUTest. Memory references are not issued by the IFU when TestEn istrue. TestFG and TestParity are substituted for the FG byte and parity bit from the memorysystem; the other signals are control signals sent by the memory system in response to IFUreferences. They are supposed to work as follows:MemAck occurs at t2 of a cycle in which the IFU makes a reference at t1, iff the memory systemaccepted the reference; if the memory system was busy and did not accept the reference, thenMemAck does not occur, and the IFU should repeat its reference. The absence of MemAck servesapproximately the same purpose for the IFU that Hold serves for the processor.MakeF_D occurs at t1 of a cycle in which the memory system loads F at t3; in the event of a mapfault, MakeF_D occurs at t1 of the cycle in which the memory system would have loaded F at t3if the map fault had not occurred. The IFU can try to start a reference at t1, even though it hasan unfinished reference in progress. The memory system will accept the reference iff MakeF_Doccurs; otherwise, it will refuse the reference. In other words, the IFU's second reference starts att1 iff the first reference will deliver data at t3.Fault is concurrent with MakeF_D and indicates that the IFU reference experienced a map fault.In other words, a memory reference can be simulated with the IFU test feature by (1) ticking theIFU through a cycle in which it makes a reference; (2) ticking the TestMemAck response of thememory system with IFUTest_B and IFUTick; (3) ticking TestMakeF_D; (4) ticking with TestFGand TestParity holding simulated memory data.Details of Pipe OperationThe IFU is a six-stage pipeline, starting with words fetched from memory, and ending withopcode starting addresses delivered to the control section and operands delivered to the processor.The levels are named: F, G, H, J, M and X. Each level has a data-valid bit indicating whether ornot it contains something useful.PCF, PCJ, PCM, and PCX are PC's for the corresponding pipe levels (except that PCF is a wordPC rather than a byte PC). PCF, PCM, and PCX are independent of each other since jumps andPCF_ may result in these all being different; PCJ is related to PCF by the number of valid bytesin the F/G/H levels; the hardware also uses PCFG, which contains PCF plus the number of validbytes in the F/G levels. Operationally, F/G are a FIFO in which PCF is the write pointer,incremented as words are fetched from the cache, and PCFG is the read pointer, incremented asbytes are moved from F/G into J/H. Note that there is no PCH because PCH would equalPCJ+1.ÿ����������������������������������������������������������������������������������������������������������������������������������������������������������������������î¶ïfªpô�€î"sqî5pô�îFHïfñî:ïbAs î:ï`àî:ï_€î:ï^ î¶ï[:pô�ºð?ô�»î¶ïYoî¶ïUýô�Œð6ô�ð'î¶ïT3ô�©ð7ô�ªð!î¶ïRhô�´ðGô�µî¶ïPžô�Ñô�ÒðAî¶ïNÓô�ð2î¶ïKaqpô�ïJÔs�ïKapð$ô�‘ïJÔs�ïKapî¶ïI–ô�´ð5ô�µð'î¶ïGÌqpô�ð>ô�‚qpî¶ïFô�ðNî¶ïBqpô�‚ïBs�ïBpð3ïBs�ïBp ô�ƒî¶ï@Åô�‘qpï@8s�ï@Åpð<ô�’ï@8s�î¶ï>úpô�‘ô�’ð9ï>ms�ï>úpî¶ï=/ô�˜ð0ô�™ð-î¶ï;eô�‡ð1ô�ˆð5î¶ï9š�ï9 s�ï9špô�ð/ï9 s�ï9šp�î¶ï6Kqpô�‘qpð%ô�’î¶ï2Úô�ð\ô�î¶ï1ô�žô�Ÿð'q pî¶ï/Dô�‰ð6q pô�Š qî¶ï-zpô�q pî¶ï(`rî¶ï$îpô�Õô�ÖðMî¶ï#$ô�Œð*ô�ð9î¶ï!Yô�†ð<ô�‡ð%î¶ïô�ð!î¶ïô�ô�ðBî¶ïRô�Šô�‹ðKî¶ï‡ô�ŠðQô�‹î¶ï½ô�„ð]î¶ïòô�Àô�ÁðRî¶ï(ô�˜ð)ô�™ð4î¶ï]ô�»ð6ô�¼î¶ï’ÿ� ������Z����¶K=ñXÀ]��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Dorado Hardware ManualInstruction Fetch UnitAugust 1, 198562Pipe control is straightforward in principle. The F and G levels are 16-bit registers filled from thecache. Following PCF_B, if there is space in the pipeline for another word, the IFU will start areference at t1 of any cycle in which the processor is not using Mar (so as many as 2 IFUreferences can be outstanding). Cache words are stored in F at t1, then dropped into G at t2;bytes drop into H at t3 or J at t4; there are bypass paths to get bytes directly from F/G into Jwhen H is invalid. As the processor executes opcodes, F and G become invalid, and the IFUrefills them from memory automatically. This continues until the IFU is reset by the processor, orencounters a pause opcode.The F and G registers are physically located on the MemD board. The four bytes in F/G are inputs to amultiplexor controlled by the IFU, and the multiplexor output is sent across the backplane to the IFU.BrkIns[0:7] or IFUTest[0:7] replace F/G data when using breakpoints, reading/writing IFUM, or using IFUtest features.The J and H levels are one byte wide. For one-byte opcodes it is possible to consider H and J asindependent levels of the pipe; however for two or three-byte opcodes, it is appropriate toconsider J/H as a single level in which J holds the opcode and H holds a.If J is invalid, then it will be loaded from the next opcode (which may be in G, F, or H accordingto various conditions) at an even clock (t0) and H will be loaded from the byte after the opcode(which is always in G) at the following odd clock (t1); if the byte after the opcode isn't ready, itwill drop into H at the next odd clock after it is ready. The InsSet and J registers address IFUMand IFUM outputs reveal whether the byte in H is a (Length = 2 or 3) or the next opcode(Length = 1).The conditions under which the M level can be loaded from J are that M is invalid (or about tobecome invalid) and:Length = 1 -or-Length = 2 and H is valid -or-Length = 3 and H is valid and either F or G is valid.If these conditions are met, then the M level is loaded (t2) with information from IFUM and witha, if Length = 2 or 3. If Length = 3, then b will drop from G into H (t3).If Length < 3, then the H/J level is now free to work on the next opcode. If Length = 1 and thenext opcode happens to be in H, then H will drop into J at the same time (t2); otherwise, J willbe loaded from the next opcode in F/G when it is ready.When the processor does an IFUJump[n], level M presents information needed by the nextopcode as follows:IFaddr is TNIA[4:13] for the IFUJump;MemBase is set to 0.MemBX.MemB[1:2] or 348+MemB[1:2];RBase is set to 0 or 1;N, Sign, Length, Packeda, and a are loaded into the X level;b is loaded into the M level if Length = 3.Referencing IFU operands with A_Id, TisId, or RisId affects the IFU in two ways: it causes theIFU to advance to the next item of Id, and for a 3 byte instruction when a is taken (a[4:7] whenPackeda = 1) it causes b to drop from M to X, freeing M for the next instruction.������������������������î¶ïfªpô�€î"sqî5pô�îFHïfñî¶ïbô�„ð]ô�…î¶ï`Sô�“ð>ô�”ð#î¶ï^‰ô�Ëô�Ìï]üs�ï^‰pðJî¶ï\¾ô�¬ð,ô�ï\1s�ï\¾pï\1s�ï\¾p�î¶ïZóô�£ïZfs�ïZópô�¤ïZfs�ïZópð>î¶ïY)ô�®ô�¯ðGî¶ïW^ô�‚ð'ô�ƒð<î¶ïU”ô�qpîyïRÒsô�‹ô�ŒðQîyïQqô�¯ðEô�°ð!îyïPô�ð7ô�‘ð0îyïN°ô� î¶ïKapô�‡ô�ˆðBî¶ïI–ô�àð[î¶ïGÌô�ðGt�p�î¶ïDZô�‚ð<ô�ƒð&î¶ïBô�šð*ïBs�ïBpð*ô�› î¶ï@Åô�—ô�˜ð!ï@8s�ï@Åpð/î¶ï>úô�‹ðIô�Œî¶ï=/ô�·ð-ô�¸t�pð%î¶ï;eô�î¶ï7óô�–ð^î¶ï6(ô�î:ï2¶î:ï0ìî:ï/!ð5î¶ï+¯ô�ˆð:ï+"s�ï+¯pô�‰î¶ï)ät�pô�ð+t�pï)Ws�ï)äpî¶ï&–ô�„qpðDô�…î¶ï$Ëô�—ð>ô�˜ï$>s�ï$Ëpî¶ï#ô�ð7î¶ïô�ÜðQô�Ýî¶ïÄô�î:ïRð%î:ï‡ð)ïús�ï‡p î:ï½î:ïòt�pt�pî:ï(t�pð*î¶ï¶ô�˜ð*ô�™ð4î¶ï ëô�‹ô�Œð8t�p t�p î¶ï t�pô�t�pð9ÿ� ������è����¶Ù<ñ\2o��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Dorado Hardware ManualInstruction Fetch UnitAugust 1, 198563IFetch_ also uses Id, as discussed in memory section, but does not advance the IFU to the nextitem of Id.For a one or two-byte opcode, it is permissible for the processor to do an IFUJump beforereferencing any operands with _Id; this will advance normally to the next opcode. However, fora three-byte opcode the processor must reference all of a, so that b drops into X, before doing anIFUJump.When a pause or jump is recognized, the IFU may already have filled the F and G levelserroneously (i.e., 4 bytes ahead). These levels are flushed and refilled along the jump path.ÿ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������î¶ïfªpô�€î"sqî5pô�îFHïfñî¶ïbô�šð"ô�›ð<î¶ï`Sô� î¶ï\áô�ÌðDô�Íî¶ï[ô�’ð"ô�“ð=î¶ïYLô�…ð8t�p t�pô�†î¶ïWî¶ïTô�Ùqpqpð3ô�Úî¶ïREô�Íð#ô�Îð;� ������|����¶Qþ<ñ �[������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Dorado Hardware ManualSlow IOAugust 1, 198564Slow IO (Input/Output)The slow I/O facility allows data transfers between the processor and any of up to 256independently addressed I/O registers. It is intended that the slow I/O facility will be used toload and read control information associated with high speed I/O devices (> 20 x 106 bits/sec),which will then use the fast I/O system for their data transfers. Low speed devices (< 20 x 106bits/sec) will use the slow io bus for all phases of their operation. Very slow or polled devicesmay be driven directly from an emulator.Device controllers for Dorado interact with the processor by exchanging data over a 16 data +2parity bits bidirectional bus called IOB ("Input/Output Bus"). There may be a total of up to 256I/O registers in all controllers connected to a single system. The unique 8-bit device numbersassigned to particular devices or uses that appear in every system are discussed in subsequentchapters and summarized in the table below.Table 21: I/O Register AddressesNumberNameComment10DiskControlDisk control register11DiskMuffDisk muffler control12DiskDataDisk FIFO data13DiskRamDisk format RAM14DiskTagDisk tag register15EDataEthernet input or output data16EControlEthernet control and status360PixelClockDDC pixel clock361MixerDDC mixer (Dorado Display Controller)362CMapDDC CMap363DWTFlag* (DispM analog of DWTFlag)364DHTFlag* (DispM analog of DHTFlag)365BMapDDC BMap366NLCB* (DispM analog of NLCB)367Statics* (DispM analog of Statics)370StatusDDC muffler and OIS data372MiniMixerDDC MiniMixer373DWTFlagDDC word task control374DHTFlagDDC horizontal task control375HRamDDC horizontal waveform control376NLCBDDC next line control block377StaticsDDC debugging controlÿ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������î¶ïfªpô�€î&•qî4]pô�îG?ïfñî¶ïa×rî³ïa€þ�ž�ïa×�îHïa€þY�ïa×�î¶ï^epðVî¶ï\›ô�«ðHô�¬î¶ïZÐô�ªðHô�« ï[]s�ïZÐp î¶ïYô�˜ð`ïY’s�î¶ïW;pô�¥ðSô�¦î¶ïUpô�ð(î¶ïQþô�ð/ô�žð/î¶ïP4ô�‹ô�Œî%ïOÝþ�„�ïP4�î)ïOÝþ�ïP4�î-ÞïOÝþ�ç�ïP4�ð(î¶ïNiqô�²pð=ô�³î¶ïLžô�Áð;ô�Âð#î¶ïJÔô�ð+î»ïGbtô�Xð!îyïCðqîî"sîÚï@èpî î"sô�îÚï?îî"sîÚï=Sîî"s îÚï;ˆîî"sîÚï9½îî"sîÚï7óîî"sîÚï6(îî"sîÚï4^î î"sîÚï2“îî"s î+Œï2<þ�ï2“�î1ï2<þ�ï2“�î6”ï2<þ�ý�ï2“� îÚï0Èîî"sîÚï.þî�î"sð"îÚï-3î�î"sð"îÚï+iîî"sîÚï)žî�î"sîÚï'Óî�î"sð"îÚï& îî"sîÚï$>îî"sîÚï"sîî"sîÚï ©îî"sîÚïÞîî"sîÚïîî"sîÚïIîî"sÿ�������Ö����¶<ñM k����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Dorado Hardware ManualSlow IOAugust 1, 198565Input/Output FunctionsIn most cases, a task will need to do many sequential I/O operations to the same I/O register.The 8-bit task-specific register TIOA holds the device address being referenced by each task.TIOA is loaded at t2 from B[0:7] by the TIOA_B function, or TIOA[5:7] can be loaded fromFF[5:7] while preserving TIOA[0:4] by the TIOA_small constant function. Pd_Input,Pd_InputNoPE, or Output_B functions can be issued in the instruction immediately following theone that loads TIOA.Most input registers include odd byte parity with IOB data. The Pd_Input function reads IOBdata and checks parity. The Pd_InputNoPE function reads IOB data without a parity check; thisis useful when determining whether a device exists (IOB has bad parity if a nonexistent register isselected). The enabling and timing of parity error halts is discussed in the "Errors" chapter.The Output_B function sends 16 bits of data with parity to the I/O register selected by TIOA.Many controllers check the parity and report parity errors as part of their status.The tasks reserved for standard peripherals are given in the table below.Table 22: Task AssignmentsNumberNameComment0EMUThe emulator1CONSpecial task for restarting emulator after faults2JNKJunk task (awakened every 32 ms by the signal "Pendulum")3DHTDisplay horizontal task4AHTDispM terminal interface horizontal task6EOTEthernet output task7EITEthernet input task118AWTDispM terminal interface word task128SIMTask simulator (for debugging only)138DWTDisplay word task148DSKDisk I/O178FLTThe fault taskSubTasksWhen an I/O device sees Next becoming equal to its task, it can (optionally) present a two-bitSubTask number as well.The processor, control, and memory sections clock SubTask into flipflops at t0. The processorOR's SubTask [0:1] into RBase[2:3] and into MemBase[2:3]. This allows the same microcode tocontrol several identical I/O devices concurrently. Each device, represented by a SubTask, gets itsown RM region with 16 RM locations and its own pair of MemBase registers; if only SubTask[0]is driven, then two RM regions and four MemBase registers are available to each subtask. Note also that when the debugging processor (Baseboard microcomputer or Alto running Midas)asserts the Freeze signal, the affect of the subtask on RBase[2:3] is disabled, but subtask continues����������������������������������������������������������������������������������������������������������������������������������������������������������������������������î¶ïfªpô�€î&•qî4]pô�îG?ïfñî¶ïbtî¶ï^¬pô�ªô�«ðWî¶ï\áô�Ìô�ÍðTî¶ïYoô�¶ïXâs�ïYopð$ô�·î¶ïW¥ôDð"ôEð0î¶ïUÚô�ƒð#ô�„ð;î¶ïTô�î¶ïPžô�¥ô�¦ðHî¶ïNÓô�ð<ô�Žð"î¶ïMô�‹ð+ô�Œð8î¶ïK>ô�Åð3ô�Æð,î¶ïGÌô�§ô�¨ðHî¶ïFô�ðSî¶ïBðIî!Hï?tô�Xîyï;«qîî²îÚï89pîî²ô�îÚï6oîî²ð1îÚï4¤îî²ô�ô�‘u�pîÚï2Úîî²ô�îÚï1îî²ð(îÚï/Dîî²îÚï-zîî²îÚï+¯ï+"s�îï+¯pî²ð"îÚï)äï)Ws�îï)äpî²ð#îÚï(ï's�îï(pî²îÚï&Oï%Âs�îï&Opî²îÚï$…ï#øs�îï$…pî² î¶ïtî¶ïpô�«ô�¬ðBî¶ïRô�î¶ïàô�µðMïSs�ïàpî¶ïô�¢ô�£ðEî¶ïKô�ô�‘ðJî¶ï€ô�’ð\î¶ï¶ô�æð9ô�çô�î¶ïDô�žðDô�Ÿî¶ï yô�Œqpô�ðSÿ������� T����¶ 2=ñ]ÙU������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Dorado Hardware ManualSlow IOAugust 1, 198566to affect MemBase[2:3].In the memory section, the task and SubTask that issued an IOFetch_ is bussed to fast outputdevices with data from storage. The device receiving the data identifies itself by means of thisinformation. IOStore_'s are handled similarly.A task presenting SubTask signals generally must Block at the same location each iteration sincethere is only a single TPC value for all of the SubTasks. Hence, the full generality of tasking isunavailablethe microcode for these tasks must be coded as though the wakeup mechanism werea priority interrupt.ÿ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������î¶ïfªpô�€î&•qî4]pô�îG?ïfñî¶ïbî¶ï^¬ô�«ðFô�¬î¶ï\áðaî¶ï[ô�ð/î¶ïW¥ô�¥ð,qô�¦ð*pî¶ïUÚô�˜ô�™ðVî¶ïTô�ðVô�î¶ïREô�ÿ�������d����¶Qþ<ñ �O������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Dorado Hardware ManualFast IOAugust 1, 198567Fast IO The Fast IO is used by the Dispy and DispM boards to drive the black/white and color displays.The fast input/output system provides high-bandwidth data transfers between storage and I/Odevices. Transfers occur in units of one munch (= 16 words). One word is transferred everyclock, for a peak bandwidth of 533 x 106 bits/second. A fast device is also interfaced to the slowI/O system, from which it receives its control information, since there is no way for the device tocommunicate directly with the processor using the fast I/O system.A single transaction of the fast I/O system transfers exactly one munch. Successive transactionsare completely independent of each other, whether they involve the same or different devices, asfar as the I/O system is concerned. The only relationship between transactions is that storagereferences of two transactions occur in the order that they were issued.Each fast I/O transaction is initiated by an IOFetch_ or IOStore_ reference coded in ASEL.Once this instruction has been executed, the transaction proceeds without further interaction withthe processor (except for fault reporting). The transaction itself involves a storage reference, andtransport of the data between main storage and the device. In the case of a fetch, transporthappens at the end of the reference, after the munch has been error-corrected. For a store,transport happens at the beginning of the reference, in parallel with mapping the VA and startingthe storage chips. As a result of this difference, the transport for a fetch may overlap or evenfollow the transport for a following store.TransportThe device is only concerned with the transport of the data, and has no way of knowing exactlyhow or when the storage reference take place. The transport happens in 16 clocks, eachtransporting a single word using the Fin bus (IOFetch_) or Fout bus (IOStore_). The two bussesare independent, and transport can be happening on both of them simultaneously.The two busses have much in common. Both have Task and Subtask lines, on which the memorypresents the task and subtask involved in the transport about to begin and a Next signal used forsynchronization. The Fout bus has a Fault line which is high at the time the last word of thetransaction is delivered if there was a memory fault during the fetch (other than a corrected singleerror).Both data busses are 18 bits wide: 16 data bits, numbered 0..15, and two byte partiy bits,numbered 16 (bits 0..7) and 17 (bits 8..15). The parity bits have the same timing as the data bits.A device is invited to check the parity of data on Fin, and is required to generate parity for dataon Fout.Wakeups The normal interface between a device and its task involves one wakeup for each munchtransferred. The device must keep track of the number of wakeups it has issued, since data maynot arrive from storage for several microseconds, but there is no way to stop the data fromarriving once the task has started the memory reference.����������������������î¶ïfªpô�€î&•qî5 pô�îFHïfñî¶ïa×rp�î¶ï^eô�ô�‘ðVî¶ïZÐô�ÃðWô�Äî¶ïYô�¤ð/ô�¥ð.î¶ïW;ô�ð'ïWÈs�ïW;p ô�Žð-î¶ïUpô�ð"ô�ðAî¶ïS¦ô�ðBî¶ïP4ô�£ð$ô�¤ð=î¶ïNiô�šô�›ðFî¶ïLžô�¶ô�·ðJî¶ïJÔô�ðHî¶ïGbô�Áð5ô�Âð%î¶ïE—ô�—ðAô�˜ð!î¶ïCÍô�™ðCô�šð"î¶ïBqpô�Äð2ô�Åð"î¶ï@7ô�ÈðOô�Éî¶ï>mô�ð)ô�Žð8î¶ï<¢ô�ð\ô�®î¶ï:Øô�ð+î¶ï5¾tî¶ï2Lpô�œð%ô�ð9î¶ï0‚ô�ïô�ððQî¶ï.·ô�…ð7ô�†ð(î¶ï,íô�ðOî¶ï){ô�‡ð7ô�ˆð#î¶ï'°ô�‘ð@ô�’ð!î¶ï%åô�ªô�«ðIî¶ï$ô�ˆðQô�‰î¶ï"Pî¶ïÞô�áô�âð>î¶ïô�ð,ô�Žð8î¶ïIô�’ð/ô�“ð4î¶ï~ô�î¶ïetî¶ïópô�ñð?ô�òî¶ï)ô�•ð+ô�–ð4î¶ï ^ô�Ïð#ô�Ðð8î¶ï“ô�ð8�������ê����¶L=ñ\¿/����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Disk ControllerTagRegisterControlRegister16-wordFIFOFormatRAMSubsectorSequencePROM4ReadPROMSequenceWrite884OtherControls>IOB12>DriveTagCylinderTagHeadTagControlTag12TagBusWordCounter>1216-word>>>16TagTW6Divider4>>SubsectorCounterSectorTWiiiselectedbabaIndexTWqqcdeffedc18>NotOnLineNotReadyNotSelectedHeadOvflSeekIncDevCheckcdeffedcReadOnlyFIFOControlFifoUnderflowFifoOverflowRdFifoTWWrFifoTWShiftRegister>iSelectErrorsFromDiskDrivesTo DiskDrives>DriveErrorsFromController<<IOBParityErrFifoParityErrIOB18Fifo18D1Disk.silDaisy chain cableDaisy chain cable>Radial cable iSelected.0Selected.1Selected.2Selected.3Selected.iBitClock.iData.iSubsecIndex.i16>><Sequence.i<Select.i<ReadDataErr>16Subsec.iIndex.iSubsec.iIndex.i>>&StatusCylinderOffsetNoTerminator<>MuffRegister168MufflerMultiplexorsDMuxAddress84fedcMultiplexor controls11<<>DMuxData>DMuxDataDMuxClockBoardSelectBoardSelectabFigure 139/5/79��î ÈrïUðîHïT þG�$îHïJ˜þk�$îºïI4þ�$îºïI4þ²�$îHïIXþ�$äîºïMþŽ�$îHï6 þŽ�$îHï2%þ�$îrïTßþ�$îrïTßþù�$îHïUþ�$äîrïXÃþÖ�$î%ïGÑþd�$î+åïDþ�$äî%ïCíþ‡�$î%ïCíþ�$îdïZµþ�$îdïZµþ@�$îïZØþ�$äîdï^˜þ�$îótïO»ðîÖïNðîïK‘ðîHïIæðîÖï4‚ðîòï2×ðîïVfðîdïUJðî&ïFIð îòï\<ðî ïZØðîïZðî ï]Xðî ï_Øðîòïa<ðîdïc™þ�$îï_Øþ�$äîdï_µþ@�$îdï_µþ�$î ïbXðî«ïZnþ�$îïa§þ�$îï`gþ�$dîï\§þ�$îï\§þ�$‡îï^ þ�Ž�$îï`Cþ�Ž�$îï]Ÿþ�$Uîï^˜þ�$î:ïXæþ�$Öî+ï`õþ�$«îäïb ðî+ï[õþ�$«îäï]Ÿðîï_µþ9�$îï_þ�$«îºï`®ðîäï_Øðîäï^¼ðîV|ïS!ðî€tïVõðîÖïWƒðî:|ï\ðîHïTßþk�$î#ïUþ�$äîHïXÃþG�$î#ÖïO˜þ r�$î#ÖïN4þ r�$î#ÖïLÑþ r�$î#ÖïKmþ r�$î&tïO»ðî&ïNXðî&ïLôðî&ïK‘ð î#ïRþ ¹�$î%ÈïRÊðî(×ïR<ðî&WïQþ�$î¬ïW<ðîÖïU‘ðîHïVÑþ��$î,|ïS!ðîïVfþ�$îótïWƒðîïWƒðîïPØþ�$îÈïNþ�$î#ïJ»þ�$ rîïP´þ«�$îÈïOßþ€�$î9ïNÃþ�$î¬|ïKðî¬ïMðî,ïL/ðî.óïNþ�$dî.etïOtðî"sïIŸþ�$î@»ïIæðî!žïFþ�$¹î!žïEßþä�$î#HïEtþ�$î#ïFðî&åïE-ðî+åïEßþ�$î-ïEtþ�$î,ºïFðî$e|ïB/ðî-×ïB/ðî.óïCíþ�$î.óïCíþ‡�$î5WïDþ�$äî.óïGÑþd�$î/‚tïFIð î0ïE-ðî@»ïDæðî äï,,þ Ö�Gî1ºuïDðî(HïDðî7ïDðî7×tïDðî6»ïC¦þd�$î5WïEßþÇ�$î=|ïB/ðî=ïB/ðî0ïBBþ�$Îî3óï@—þ�$yîäï ;ðîäï ;ðîAtïAðî/‚|ï?®ðî3eï?®ðî5žï1ƒðî5žï1ƒðî5ï1ƒðî5ï1ƒðî2ï53þU�$î2ï4ìþ�$î2ï4¥þ�$î2ï4^þ�$î2ï4þä�$î2ï3Ðþ�$î2ï3‰þ�$î2ï3Bþ�$î2ï2ûþU�$î8eï4þ�Õ�$î2ï/¥þU�$î2ï/ìþ�$î2ï03þ�$î2ï0zþ�$î2ï0Âþä�$î2ï1 þ�$î2ï1Pþ�$î2ï1—þ�$î2ï1ÞþU�$î5ï..ðî5ï..ðî5žï..ðî5žï..ðî9;ï0åþ�$UîÈï4þ€�$îÖï3¬þ�$îHtï4Éðî+|ï0gðî8¬ï$þV�$î8¬ïˆþV�$î8¬ïÁþV�$î8¬ï]þV�$î8¬ïùþV�$î8¬ï–þV�$î9Étï«ð î9ÉïHðî:ïeðî9Éïäðî9Éïðî9Éïðî8eï0Âþ�Õ�$î5ž|ï&õðî5žï&õðî5ï&õðî5ï&õðî2ï*¥þU�$î2ï*^þ�$î2ï*þ�$î2ï)Ðþ�$î2ï)ˆþä�$î2ï)Aþ�$î2ï(úþ�$î2ï(³þ�$î2ï(lþU�$î8eï,Þþ�Õ�$î2ï+ÁþU�$î2ï, þ�$î2ï,Pþ�$î2ï,—þ�$î2ï,Þþä�$î2ï-%þ�$î2ï-lþ�$î2ï-³þ�$î2ï-úþU�$î5ï*Jðî5ï*Jðî5žï*Jðî5žï*Jðî9Étï¹ðî«ï:ðîHï6Þþ�$kîHï6Þþ²�$îÖï7þ�$GîHï<%þŽ�$îï8¬ðî9‚ï8ôð î9‚ï7ðî@»ï=ðî@»ï?ðîÖï4þ+�$îï6 þG�$î#Hï2Iþ�$äîï2%þk�$îï2%þ�$îeï4‚ðîï3ðîä|ï0gðî1ºï!3þ9�$î1ºïÏþ9�$î1ºïlþ9�$î1ºïþ9�$î8ôïþ�$î8ôï‘ðî7Itï"sðîBôuïðîBôïòðîBôïÖðîBôïºðî-ïNŸþÈ�Gî@-ïNæðî@-ïMÊðî>;|ïKðîºï*ìþä�$îºï)ˆþä�$îsï(%þd�$îï6,þ�$�Õî7tï#ðî9;ï)¬þ�$Uî8eï)ˆþ�Õ�$îHï2%þŽ�$îÖï2Iþ�$äîBôuï2IðîBôï1,ðîBôï0ð î€|ï0gðîÖï0gðî9Étï2ðî9Éï+Wð î+ï5þò�Gî+åï5Wðî.eï4Éþ�$î-×ï5åðî+Wï-×þ«�Gî+åï.ðî.óï-þ�$î.eï.eðî=uï€ð î-IïKJþ�G9î2ïO-ðî+Wïrþ �Gî,sïºðî7I|ïæðî9‚ïAþ€�$î?æï!3þ9�$î?æï yþ]�$î¹uï,sðî2tï!Vð î2ïóð î2ïð î2ï,ð îóï)¬ð îóï/Éð îóï.ðîóï(Hð îÖï8Ðþ',�$îÖï7lþ's�$îÖï8Ðþ's�$î?žï'Oþ¤�$îBï'sþ�$î?æï<mþ9�$îHïUþ�$äîHïJ»þ�$ rîïNþ�$îïO-ðîdïVfþ�$î9;ï2lþ�$î9;ï+3þÇ�$îÖï;—þ€�$îVï;—þ�$yîÖï:4þä�$îºï:4þ�$yîºï=‰þ)�$îVï>íþ*�$îBï þ�$ºî;»ïBþ�$î;»ïB‰þd�$î |ï%Øðî"ºï$uðîºï( ðîótï+ð îº|ï'<ðîótï,sðîº|ï*Jðî9‚tï:žðî9ïK&þ€�$î|ïGvðîïJ»þ�$îtïKØðî1ºï/‚þ�Gî1ºï(Hþ�Gî#Öï)Ðþ�Ž�$î$eï&žþ�$Uî#Öï&zþ�²�$î#Öï&zþ�$yî$eï(úþV�$î&ï)ðî$eï'OþV�$î&ï'sðî(×ïBfðî(×ï@»ðî+å|ï%Jðî+åï#ŸðîBôuï+ðîBôïHðî€ïVÑþò�$î9ïVþG�Gî(×ïBBþ9�$î(×ï@—þH�$î8ôï:{þ�$î8¬ïëþV�$î9Étïðî8¬ïOþV�$î9Éïsðî8eïrþ�G Gî#Hï4þ‡�$î#H|ï0gðîsï(þ�Gîºï,Pþ�$îsï/¥þV�$îºï-úþò�$î Èï/Éþ�$€î$¬ï.þ�$î€ï#%þÇ�$î+ïuðîHï$ÏþG�$îï!žþ�$UîHï!zþk�$îHï!zþ�$yîdtï#ðîï!åðîòï"ºþ�$îdï!VðîÈï"ºþ�$îï#Öðîäïþ�$�îäïþd�$îäïÏþd�$îäïˆþd�$îäïúþd�$îäï²þd�$îäïkþd�$îäï$þd�$îäïÝþd�$îäï–þd�$îäïOþd�$îäïþd�$îäïÁþd�$îäïyþd�$îäï2þd�$îäïAþd�$îäï]þd�$îäï¤þd�$îÈuïdðîÈïHðîHïÁþ�$yîHïÁþk�$îïäþ�$UîHï þG�$î«tïÖðîÖï,ðîïAþr�$îï#%þr�$îïeþ�$dîï ¥þ�Õ�$îï!Áþ�Õ�$îï!åþ�$dîÖï :þ�$9îÈïÖþ�$îïóðîÈï,þ�$îïðîÖ|ïæðîÖïæðîeïæðîeïæðîsï¤þò�$î",ïzþ€�$î :uï!Vðîïkþ G�$îºïºþ�$dîstïðîï¤þ�$îïVþ�$rîï2þ@�$îï2þ�$•î€ïkþ$�$î9ïHþ�GBî¹ïðî€|ï»ðîï»ðî ïlþ«�$î+ï¼ðî�ïþ�$îHï–þÖ�$îÖï!3þÈ�$î+žïHþ�$îäï$þÝ�$îäïäþ�$dî«ïÈþ�$Çî«ï¤þ€�$îrï ùþ ¹�$îïÏþ Ö�$îäuïòðî#Ö|ïðî uïðî äï¤þ +�$îï¤þ�$@î+ïÈð îrtïðî"sïðî=|ï>Ùðî=ï>Ùðî?WïAmþ€�$î?WïDÂþ€�$î"sïI{þ$e�$î"srï�ð î=uïdðÿ�������~ä��9dAbXž������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Dorado Hardware ManualDisk Controller August 1, 198568Disk ControllerThis chapter describes the Dorado disk controller, which uses the Slow I/O system to control upto four Century Data Trident disk drives. Either the 80x106-byte T-80, 300x106-byte T-300 or the315x106-byte T-315 drives can be used. Keep Figure 13 in view while reading this chapter.The disk controller uses task 148 and the first five values of the TIOA addresses 108 - 148 . TheEthernet controller, on the same logic board, uses the other two 158 - 168. TIOA assignments are as follows:108DiskControlOutput_B to control register118DiskMuffOutput_B muffler control and Pd_Input to read muffler128DiskDataPd_Input to read FIFO or Output_B to write FIFO data138DiskRamOutput_B to format RAM148DiskTagOutput_B to tag register158EthDataPd_Input to read FIFO or Output_B to write FIFO data168EthCtrlOutput_B to control registerNote: other tasks must not select these TIOA addresses at any time; doing so may cause the disk controller tomalfunction.The controller is interfaced to the disk drives by a daisy chain cable bussed to all drives and by anindependent radial cable to each drive. The radial cables contain the following signals:data line (bidirectional, differentially driven)data clock (from drive, differentially driven)subsector/index line (from drive)selected line (from drive)select line (from controller)sequence line (from controller, controlled by the baseboard for drive 0 and groundedfor other drives)two VCC lines and scope trigger (from controller)The daisy-chain cable contains the following signals:16 control "tags" driven by the controller and received by the selected drive9 error and status signals from the drive as follows:CylOffset'ReadOnly'NoTerminatorHeadOvfl'SeekInc'DevCheck'NotOnLineNotReadyIndex'ÿ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������î¶ïfªpô�Xî" qî0ëpîG?ïfñî¶ïa×rô�î¶ï^epô�˜ð!ô�™ð>î¶ï\›ô�Šð5ô�‹ï](s�ï\›pï](s�ï\›pî¶ïZÐï[]s�ïZÐpô�ð!îpïW^qô�Xð2î¶ïSìpô�•ïS_�ïSìð3ïS_�ïSìïS_�ïSìô�–î¶ïQþô�ðCïQq�ïQþïQq�ïQþ�î¶ïNFð"îyïJÔïJGs�îûïJÔp î îyïI ïH|s�îûïI pî ð5îyïG?ïF²s�îûïG?pî ð4îyïEtïDçs�îûïEtpî îyïC©ïCs�îûïC©pî îyïAßïARs�îûïAßpî ð4îyï@ï?‡s�îûï@pî îxï=vtsô�¢tð$sô�£ð7îxï<î¶ï8Æpô�„ð2ô�…qpî¶ï6üô�qpðAîyï3ôð0îyï2)ð.îyï0_ð!îyï.”îyï,Éîyï*ÿô�÷ð-ô�øð'î¬ï)4ô�îyï'ið1î¶ï$að5îyï!YðMîyïð5î¬ïÄ î¬ïùî¬ï/î¬ïdî¬ïšî¬ïÏî¬ïî¬ï:î¬ïoÿ�����������¶(<éXã5����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Dorado Hardware ManualDisk Controller August 1, 198569The controller or's the NoTerminator error (which means that the daisy-chain cable isn'tterminated) into the NotOnLine error; the other error indications are discussed later.Disk AddressingThe disk system is accessed through a many level addressing scheme. First a particular disk driveis selected. Then a data surface or head and a cylinder are selected (5 surfaces, 815 cylinders on aT-80). Each cylinder is further divided into sectors which consist of blocks.Table 23: T-80 Specifications and CharacteristicsCapacity82.1 million 8-bit bytes unformattedTransfer rate9.67 x 106 bits/sec (= one 16-bit word/1.65 ms)Cylinder positioning time6 ms cylinder to cylinder maximum (3 ms typical)30 ms average55 ms maximumRotational speed3600 rpm (16.66 ms/revolution)Sector length selection12-bit increments through jumpers on sector boardDensities370 cylinders/inch6060 bits/inch max. recording densityDisk pack characteristicsIBM 3336-type components5 recording surfaces plus 1 servo surface815 cylinders/surfaceOperating methodsModified frequency modulation recordingLinear positioning motor with cylinder following servoMechanical specificationsSize - 17.8" wide x 10.5" high x 32" deepWeight - 230 lbs.Error rateRecoverable: 1 error/1010 bitsIrrecoverable: 1 error/1013 bitsPositioning: 1 error/106 seeksPack start/stop time20 sec start time20 sec stop time (with dynamic braking)Controls and indicatorsReady IndicatorOff = disk not spinningFlashing = spinning up/downOn = ReadyFault IndicatorStart/Stop switchRead-only switchDegate switch (inside the drive; takes disk off-line for testing)ÿ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������î¶ïfªpô�Xî" qî0ëpîG?ïfñî¶ïbô ô ðJî¶ï`Sô�ðVî¶ï\uî¶ïXœpô�Šð0ô�‹ð2î¶ïVÑô�ˆð!ô�‰qpqpð-î¶ïUô�ð.qpqp�î�ïQvô�Fð2î·ïMÿsîQô�ð$î·ïKËô�€îQô�ïLX�ïKËð"w�sî·ïIsô�€îQ�ô�ð/îQïHîQïF²î·ïD}ô�€îQô�î·ïBIô�€îQô�ð+î·ï@îQîQï>³ð%î·ï<ô�€îQô�îQï;ð)îQï9½î·ï7‰ô�€îQô�îQï6(ð6î·ï3ôô�€îQô�ð%îQï2“î·ï0_ô�€ îQô� ï0ìï0_îQï.·ï/Dï.·îQï-ï-�ï-î·ï*Ûô�€îQô�îQï){ð'î·ï'Fô�€îQô� î ¶ï%åî ¶ï$…î ¶ï#$ îQï!ÃîQï bîQïîQï¡ðAÿ�������t����¶<éN� ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Dorado Hardware ManualDisk Controller August 1, 198570Table 23: T-315 Specifications and CharacteristicsCapacity315.2 million 8-bit bytes unformattedTransfer rate1209 K Bytes/secondSingle Track Positioning time5 ms max.Average Positioning time25 msMaximun Positioning time50 ms Rotational speed3600 rpm (16.66 ms/revolution)Sector length selection12-bit increments through switches on control boardDensities712 cylinders/inch6363 bits/inch max. recording densityOperating methodsWinchester read and write recordingLinear positioning motorMechanical specificationsSize - 17.8" wide x 10.5" high x 32" deepWeight - 135 lbs.Error rateRecoverable: 1 error/1010 bitsIrrecoverable: 1 error/1013 bitsPositioning: 1 error/106 seeksPack start/stop time25 sec start time30 sec stop time (with dynamic braking)Controls and indicatorsReady IndicatorOff = disk not spinningFlashing = spinning up/downOn = ReadyFault IndicatorStart/Stop switchWrite Protect switchDegate switch (inside the drive; takes disk off-line for testing)Access for A channel or B channel (The Dorado uses the A channel)General Microcode OrganizationThis section gives a general overview of how the disk controller microcode is organized.The disk drive generates subsector and index pulses on one line in the radial cable; the controllerdistinguishes these according to pulse width. In the normal Idle loop, the controller looks only atthese pulses from the connected drives. A four-bit counter for each drive counts down subsectorpulses and generates sector pulses. Upon either a sector or an index pulse from the selected drive,the controller generates a disk task wakeup. The disk task then either increments (sector wakeup)or zeroes (index wakeup) its microcode sector counter, clears the wakeup condition, checks for anew command, and blocks.Because there are no hardware sector counters, the disk task must maintain a sector counter itself;this implies that the rotational position is generally unknown on all deselected drives.ÿ����������������������������������������������î¶ïfªpô�Xî" qî0ëpîG?ïfñîºïbAvô�Fð3î·ï_9sîQô�ð%î·ï]ô�€îQô�î·ïZÐô�€îQ�ô�î·ïXœô�€îQô�î·ïVgô�€îQô�î·ïT3ô�€îQô�î·ïQþô�€îQô�ð-î·ïOÊîQîQïNið%î·ïL5ô�€îQ ô�îQïJÔî·ïHŸô�€îQô�ð%îQïG?î·ïE ô�€ îQô� ïE—ïE îQïCcïCðïCcîQïA¼ïBI�ïA¼î·ï?‡ô�€îQô�îQï>&ð'î·ï;òô�€îQô� î ¶ï:‘î ¶ï90î ¶ï7Ð îQï6oîQï5îQï3îQï2LðAîQï0ìðAî¶ï+Euô�Xî¶ï'Ópô�ðXî¶ï$aô�‘qpqpô�’ð7î¶ï"—ô�‹ô�ŒðGî¶ï Ìô�”ð3ô�•ð-î¶ïô�†qpð:qpî¶ï7ô�Š ô�‹ðTî¶ïlô�žðSô�Ÿî¶ï¢ô�î¶ï0ô�ŠðSô�‹î¶ïeô�ðX�������Ò����¶<éSí!��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Dorado Hardware ManualDisk Controller August 1, 198571Task WakeupsThe controller may wakeup the disk task for many conditions; the disk task must detemine thecause and take appropriate action, which must in some way cause the wakeup to go away.In general, there are two ways to determine the wakeup condition: read the wakeup condition, orassume the condition knowing the state of the disk task (which implies the state of the controller).When expecting a sector or index wakeup, the disk task must test carefully to count sectorsreliably, but in the middle of word transfer operations, it will assume the wakeup reason tominimize overhead. The various conditions are as follows: IndexTW, SectorTW, TagTW,RdFifoTW, and WrFifoTW; these wakeup conditions are detailed in the "Muffler Input" section.Control RegisterThe DiskControl register is a collection of flip-flops defining the state of the controller; on Outputto DiskControl, IOB is interpreted as follows:B[5]Clear EnableRunB[6]Set DebugModeB[7]Set BlockTilIndexB[8:9]Operation for first block of sector, where the operations are:0 = Done (finished with all blocks in this sector)1 = Write2 = Read and check3 = ReadB[10:11]Operation for second block of sector, as above.B[12:13]Operation for third block of sector, as above.B[14:15]Operation for fourth block of sector, as above.EnableRun determines whether the controller is active at all. It is initially cleared by IOReset,and can only be set by completing the loading of the format RAM (see below).DebugMode allows the controller to be exercised by diagnostics when no disk is present; in thiscase, diagnostic microcode provides fake disk bit-clocks and data. The flip-flop is cleared byDisableRun.BlockTilIndex can be set to disable sector and index task wakeups until (a) the selected drive isready, and (b) an index pulse is received from the drive. It is cleared by an index wakeup. Thisis useful after switching drives or executing a ReZero operation, either of which causes thecontroller to lose sector synchronization with the drive. BlockTillIndex prevents the wakeupconditions from being set until these conditions are met, but does not clear any such wakeups thathave already occurred. To prevent races, it is necessary to clear SectorTW and IndexTW, then setBlockTillIndex, then clear SectorTW again.A request for a sector transfer is initiated by loading bits 8 and 9 of the control register with anon-zero value. Then the controller will wait until the next sector pulse to set the "Active" flip-flop and execute the transfer. Once a transfer has been started, it may be aborted by loading anew value into the control register twice. The first will clear the Active flip-flop, and the secondwill load the control register. (When Active, the control register is enabled for shifting commandsrather than loading of io data.)��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������î¶ïfªpô�Xî" qî0ëpîG?ïfñî¶ïbuî¶ï^¬pô�©ð"ô�ªð:î¶ï\áô�ÝðPô�Þî¶ïYoô�‡ð`î¶ïW¥ô�ˆð7ô�‰ð-î¶ïUÚô�Ðð,ô�Ñð/î¶ïTô�Ðð,ô�Ñð0î¶ïREô�íô�îðBî¶ïPzô�’ðLô�“î¶ïL5uô�Xî¶ïHÃpô�„ðPô�…î¶ïFøô�ð.îxïDsîô�FîxïBîîxïAîîxï?‡îð>î'ï>Jô�ð2î'ï=î'ï;Ïî'ï:‘îxï9 îô�Fð/îxï7‰îð.îxï6îð/î¶ï2“pô�¡ðOô�¢î¶ï0Èô�ðLî¶ï-Vô�žð/ô�Ÿð0î¶ï+Œô�Äð#ô�Åð<î¶ï)Á î¶ï&Oô�¢ð4ô�£ð-î¶ï$…ô�ð)ô�Žð9î¶ï"ºô�ÜðHô�Ýî¶ï ïô�Öð]î¶ï%ô�†ð%ô�‡qpî¶ïZô�†ð<ô�‡ð%î¶ïô�ð*î¶ïô�¤ð,ô�¥ð7î¶ïSô�–ô�—qpð'î¶ïˆô�ŸðSô� î¶ï¾ô�“ô�”ðSî¶ïóô�ˆðdî¶ï)ô�ÿ�������,����¶â=éY)*��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Dorado Hardware ManualDisk Controller August 1, 198572Format RAM and Sequence PROMsThe format RAM is a 16-word by 12-bit register that holds commands and delay counts used bythe controller during a transfer. Words within the RAM are used according to the followingtable; the example values are appropriate for Alto Diablo disk emulation (2-word header, 8-wordlabel, and 256-word data record).ExampleAddrDescription Value00Word count of the first block000101Word count of the second block000702Word count of the third block037703Word count of the fourth block000004Control tag command for a read operation010405Control tag command for a write operation020406Control tag command to set Head Select000407Control tag command to zero the tag bus000008Word count to write zeroes before writing the 1st block of a sector003309Word count to write zeroes before writing the sucessive blocks000610Word count to wait before reading the 1st block of a sector001111Word count to wait before reading the sucessive blocks000212Word count of ECC words plus one000213Word count of 2000114Word count of 1 (minimum count)000015Not used0000There are two sequence PROMs, one for reading (or checking) and one for writing. The PROMsare addressed by a program counter that is initialized to zero at the beginning of a sector and isincremented upon completion of each PROM program action. Either the read PROM or thewrite PROM is selected according to the operation being performed on the current block.The sequence PROMs are clocked by WordClock, which is derived from the disk bit clock, whichin turn is derived from timing information pre-recorded on the disk pack. The subsector pulsesgenerated by the drive are also derived from this timing information. This enables very preciseplacement of the data on the disk, in a manner that is independent of the disk's rotational velocityor the Dorado's clock rate.ÿ����������������������������������������������������������������������������������������������������������������������������������������������������������î¶ïfªpô�Xî" qî0ëpîG?ïfñî¶ïbuî¶ï^¬pô�—ð.ô�˜ð-î¶ï\áô�Àð3ô�Áð(î¶ï[ô�–ô�—ðMî¶ïYLô�ð!î9 ïVDtîïUî î9 ô�Fî]ïR‹sî î:_î]ïQNî î:_î]ïPî î:_î]ïNÓî î:_î]ïM•î ð(î:_î]ïLXî ð)î:_î]ïKî ð&î:_î]ïIÝî ð'î:_î]ïHŸî ðCî:_î]ïGbî ð>î:_î]ïF$î ð;î:_î]ïDçî ð6î:_î]ïC©î î:_î]ïBlî î:_î]ïA.î î:_î]ï?ñî î:_î¶ï<¢pô�Šð1ô�‹ð*î¶ï:Øô�šô�›ðPî¶ï9 ô�¾ð8ô�¿î¶ï7Bô�ïðWî¶ï3Ðô�‰ð=ô�Šî¶ï2ô�Ÿð:ô� ð%î¶ï0;ô�£ô�¤ðPî¶ï.qô�„ðEô�…î¶ï,¦ô�ÿ�������f����¶*”<é=w��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Dorado Hardware ManualDisk Controller August 1, 198573The read and write sequence PROMs are described in the following tables.Write Sequence PROMDurationAddrDescription(WordClocks)00Issue tag command in RAM[6] (head select)101Delay (wait for head select to settle)RAM[13]+102Issue tag command in RAM[5] (write command)103Write long preamble for first blockRAM[8]+104Write sync word105Write data for first blockRAM[0]+106Write first ECC wordRAM[14]+107Write second ECC word and 2 postamble wordsRAM[12]+108Advance control register to the operation for the next blockRAM[14]+109Issue tag command in RAM[5] (write command)110Write short preamble for second blockRAM[9]+111Write sync word112Write data for second blockRAM[1]+113Write first ECC wordRAM[14]+114Write second ECC word and 2 postamble wordsRAM[12]+115Advance control register to the operation for the next blockRAM[14]+116-22Same as 09-15, except step 19 uses RAM[2]+123-29Same as 09-15, except step 26 uses RAM[3]+130Zero the tag bus131Not usedRead Sequence PROMDurationAddrDescription(WordClocks)00Issue tag command in RAM[6] (head select)101Delay (wait for head select to settle)RAM[13]+102Delay (skip over early part of preamble)RAM[10]+103Issue tag command in RAM[4] (read command)1Note: WordClocks cease until controller has read sync word from disk04Read data for first blockRAM[0]+105Read ECC wordsRAM[13]+106Compute first word of ECC remainder, issue tag command in RAM[6]107Compute second word of ECC remainderRAM[14]+108Advance control register to the operation for the next blockRAM[14]+109Delay (skip over early part of preamble)RAM[11]+110Issue tag command in RAM[4] (read command)1Note: WordClocks cease until controller has read sync word from disk11Read data for second blockRAM[1]+112Read ECC wordsRAM[13]+113Compute first word of ECC remainder, issue tag command in RAM[6]114Compute second word of ECC remainderRAM[14]+115Advance control register to the operation for the next blockRAM[14]+116-22Same as 09-15, except step 18 uses RAM[2]+123-29Same as 09-15, except step 25 uses RAM[3]+130Zero the tag bus131Not usedTag RegisterThe 16-bit tag register drives the tag bus on the daisy-chain cable; all disk drive commands areinitiated through the tag register. The tag register is sometimes loaded from IOB via an Outputcommand to DiskTag, sometimes from the format RAM. Loading a Head Tag, Cylinder Tag, orControl Tag into the tag register (from either source) activates a timing circuit that handles alltiming requirements of the Trident drive as follows: Only the tag bus bits are enabled for thefirst 200 ns; then the Tag[0:3] bits are also enabled for 1.2 ms; finally, the Tag[0:3] bits aredisabled again and the TagTW flip-flop is set to wakeup the disk task (indicating completion ofthe Tag instruction). The Drive Select Tag (Tag[0]) does not activate the timing circuit, since thetimer counts disk clock cycles, but disk clocks are invalid during drive select changes.������������������������������������������������������������������������������������������������������������������î¶ïfªpô�Xî" qî0ëpîG?ïfñî¶ïbô�ðHîï_tô�Fî9 îï]Øî î9 î]ï[]sî ð)î:_�î]ïZ î ð&î:_î]ïXâî ð+î:_�î]ïW¥î ð#î:_î]ïVgî î:_�î]ïU*î î:_î]ïSìî î:_î]ïR¯î ð+î:_î]ïQqî ð<î:_î]ïP4î ð+î:_�î]ïNöî ð%î:_î]ïM¹î î:_�î]ïL{î î:_î]ïK>î î:_î]ïJ�î ð+î:_î]ïHÃî ð<î:_î]ïG…î ð+î]ïFHî ð+î]ïE î î:_�î]ïCÍî îï@ètî9 îï?ªî î9 î]ï=/sî ð)î:_�î]ï;òî ð&î:_î]ï:´î ð(î:_î]ï9wî ð*î:_�î ï89tðDî]ï6üsî î:_î]ï5¾î î:_î]ï4î ð@î:_�î]ï3Cî ð$î:_î]ï2î ð<î:_î]ï0Èî ð(î:_î]ï/‹î ð*î:_�î ï.MtðDî]ï-sî î:_î]ï+Òî î:_î]ï*•î ð@î:_�î]ï)Wî ð$î:_î]ï(î ð<î:_î]ï&Üî ð+î]ï%Ÿî ð+î]ï$aî î:_�î]ï#$î î¶ïuô�Xî¶ïpô�¥ðHô�¦î¶ïÅô�ð#ô�žð=î¶ïúô�”ð=ô�•î¶ï0ô�³ðQô�´î¶ïeô�©ð"ô�ªð=î¶ï›ô�Íð>w�p ô�Îî¶ïÐô�£ð\ô�¤î¶ïô�’ðdî¶ï ;ô�ðXÿ�������Ž����¶ô<é[½��������������������������������������������������������������������������������������������������������������������������������������Dorado Hardware ManualDisk Controller August 1, 198574Bits 4 through 15 of the tag register are interpreted according to the following table:Tag[0]Drive select and subsector countTag[4:15] are interpreted by the controller to effect drive select or subsectorcounter changes. The tag timing and wakeup circuit is not activated; firmwaremust take care of the timing by first loading Tag[4:15] as desired but withTag[0:3] equal 0, then or-ing in the Tag[0] bit and outputting again. 4:9Subsector countDivide the 117 subsector pulses from disk by subsector count+1 to form Sector pulses(Tag[4:5] are presently unimplemented).Tag[4:9] = 3 yields 29 sectors large enough for 256-word data blocksTag[4:9] = 6 yields 16 sectors large enough for 512-word data blocksTag[4:9] = 148 yields 9 sectors large enough for 1024-word data blocks 10Load subsector from Tag[4:9] for the drive selected prior to the execution of this taginstruction.11:15Drive selectThe basic controller handles up to 4 disk drives; additional units may beaccommodated by adding drive dependent logic on an additional board and connectingit in in place of drive 3. To allow this, the 5 bit drive select field is interpreted asfollows. 0 - 3select drive 0 to 3, respectively 4 - 368select drive 3378don't select any driveTag[1]Head TagLoads a register in the drive that selects the head to be used during subsequentread/write commands. A Tag wakeup occurs at completion (1.6 ms). 4:7Unused 8Off Cylindermay be activated during a read to attempt recovery of unreadable data.It causes cylinder positioning to be offset 80 micro-inches. 9Determines direction of offset if bit 8 is set.10:15Head numbervalues from 0 to 4 are valid for a T-80, 0 to 19 for a T-300. Thedrive will turn on "EndOfCylinder" (alias HeadOverflow) error if an invalid headaddress is issued.Tag[2]Cylinder TagCauses the drive to seek to the specified cylinder. A Tag wakeup occurs afterthe tag timing sequence has completed (1.6 ms), and the NotReady status bit israised until the seek has completed (3 to 55 ms depending on the seek distance). 4:15Cylinder number (0 to 814 for Trident disks presently in use). An illegal cylindernumber will cause DeviceCheck to be raised.Tag[3]Control TagA Tag wakeup occurs at command completion (1.6 ms) and upon completion ofthe last read/write operation in a sector. Generally, Control Tag commands areissued only by the controller itself (using tag commands from the format RAM)rather than by the microcode; Device Check Reset and ReZero are anexception.ÿ������������������î¶ïfªpô�Xî" qî0ëpîG?ïfñî¶ïbô�ðWîxï^¬îûîûï\áô�Çô�Èð3îûï[ô�™ô�šð=îûïYLô�Ðô�Ñð:îûïWô�ðEîûïTÀsô�€î~ô�î~ïS_ô�‚ðFô�ƒ î~ïQþô�ð'î~ïPžðDî~ïO=ðDî~ïMÜïMO�ïMÜð8îûïK¨ô�€î~ô�•ð0tsô�–î~ïJGîûïHî~ô�î~ïF²ôð1ôî~ïEQô�€ô�ð<î~ïCðô�–ô�—ðHî~ïBî@ï@~ô�€î"sô�î@ï?Aô�€ï>´�î"sï?Aô�î@ï=™ï=�î"sï=™îxï:Kpîûîûï8€ô�Žô�ð=îûï6µô�ð=w�pîûï3ôsô�€î~îûï1¿î~ô�‰ô�Šð6î~ï0_ô�ð<îûï.*ô�€î~ ô�ð%îûï+öî~ô� ô�¡ð0î~ï*•ô�¿ð7ô�Àî~ï)4ô�îxï%åpîûîûï$ô�žô�Ÿð/îûï"Pô�—ð%ô�˜w�pð"îûï †ô�‚ð9ô�ƒîûïÄsô�€î~ô�ªð:ô�«î~ïcô�ð+îxïpîû îûïJô�ð/w�pqpô�‘ îûïô�Šð>ô�‹îûïµô�ŒðMîûïêôôð%îûï ������� î����¶Ù:X2]��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Dorado Hardware ManualDisk Controller August 1, 198575 4AltoLeaderspecial flag to the controller that allows disks written by an Alto TriconController to be read. This bit should only be used for the Alto Trident simulation. 5Unused 6Strobe Latecauses data recovery circuits within the drive to sample data early withinthe data bit time (for recovery when the drive is experiencing excessive read errors). 7Strobe Earlylike StrobeLate except in the obvious way. 8Writeturns on the write circuits. 9Readturns on the read circuits. 10Unused 11Reset Head registerzeroes the head address register in the drive. 12Device Check Resetresets all latched error conditions in the drive. 13Head Selectturns on the head selection circuits, in conjunction with a Read orWrite. 14ReZerorepositions the heads to cylinder 0 (if the heads are loaded) and resets thehead address register; resets SeekIncomplete and DeviceCheck error conditions. 15Head Advanceincrements the head address register in the drive.FIFO RegisterData to/from the disk is buffered through a 16-word FIFO (25 ms of buffer), which isread/written with Pd_Input/Output_B when TIOA selects DiskData. Each FIFO word holds 16data bits, 2 parity bits, and a 2-bit field indicating that the next word to be read is either write,read, or read-and-check type data. During output to the disk, the controller checks parity bothwhen receiving data on the io bus and again when reading the FIFO. During a disk read, parityis computed before writing into the FIFO, is passed through the FIFO, and is then written on theio bus for the processor to test.Muffler InputDorado uses a multiplexor scheme called the muffler system for reading miscellaneous logicsignals during debugging from the Alto or baseboard. The disk controller also allows a muffleraddress to be specified on an Output to the DiskMuff register; in this way, any DskEth boardsignal available through the multiplexors (mufflers) is also available for firmware sampling. Otherbits of the DiskMuff register output specify other operations as follows:B[0]Simulate read data of 1 for 1 cycle (for use by diagnostic programs)B[1]Simulate read clock of 1 for 1 cycle (for use by diagnostic programs)B[2]Clear CompareErrdone by disk task if a read&compare is found to be OKB[3]Set ReadDataErrdone by disk task to inhibit future writesB[4]Clear the index wakeup flip-flopB[5]Clear the sector wakeup flip-flopB[6]Clear the tag wakeup flip-flopB[7]Clear all error flip-flops within the controller (not the disk drive)B[8:15]Muffler addresssignals are enumerated belowFollowing an output to the DiskMuff register, the firmware must wait one cycle before inputtingthe selected muffler signal with Pd_Input. The state of the signal selected will be driven onIOB[15], and the remaining bits will be zero. For the purpose of examination from Midas, thesignals are grouped into 16-bit words, as shown in the following table. The bits within each wordand an appropriate explanation follow:ÿ��������������������������������������������������î¶ïfªpô�Xî" qî0ëpîG?ïfñîûïbAsô�€î~ô�˜ô�™ð'î~ï`àô�’ð'ô�“ð.îûï^¬ô�€î~îûï\wî~ô�‡ô�ˆð?î~ï[ô�›ð(ô�œð.îûïXâô�€î~ô�ð1îûïV®ô�€î~ ô�îûïTyô�€î~ ô�îûïREô�€î~îûïPî~ô�ðBîûïMÜô�€î~ô�ð>îûïK¨ô�€î~ô�ÇðHô�Èî~ïJGîûïHô�€î~ô�Ÿð2ô� î~ïF²ô�ðNîûïD}ô�€î~ô�ð;î¶ï@[uô�Xî¶ï<épôð)ôw�pî¶ï;ô�’ô�“ðGî¶ï9Tô� ðeî¶ï7‰ô�§ð4ô�¨ð,î¶ï5¾ô�‘ðWô�’î¶ï3ôô�‡ð;ô�ˆð%î¶ï2)ô�ð!î¶ï-äuô�Xî¶ï*rpô�Üð>ô�Ýî¶ï(§ô�£ðUô�¤ î¶ï&Üô�°ðOô�±î¶ï%ô�‰ð<ô�Šð(î¶ï#Gô�ðIîxï ©sî ô�FðEîxïkî ðFîxï.î ðFîxïðî ð:îxï³î îxïuî ð!îxï8î îxïúî ðEîxï½î ð,î¶ïnpô�˜ð#ô�™ð<î¶ï¤ô�¾ð[ô�¿î¶ïÙô�¨ðYô�©î¶ïô�‰ð6ô�Šð,î¶ïDô�ð&�������Î����¶ý<é\c��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Dorado Hardware ManualDisk Controller August 1, 198576KSTATEvarious bits indicating the state of the controller 000TempSensesee "Dorado Debugging Interface" document 001IndexTWdisk task wakeup is due to an index pulse; index pulses occur once/diskrevolution (16.7 ms) and are used to synchronize the hardware subsector counterand the firmware sector counter. An index pulse also causes a SectorTW. 002SectorTWdisk task wakeup is due to a sector pulse. To maintain a reliable sector countin a race-free manner, the microcode must (a) check for SectorTW, and uponfinding it set increment the sector number and clear SectorTW; (b) check forIndexTW, and upon finding it set zero the sector number and clear bothIndexTW and SectorTW. 003TagTWdisk task wakeup is due to completion of a Head Tag, Cylinder Tag, or ControlTag command. This occurs 1.6 ms after issuing an Output to the DiskTagregister, and also upon completion of the last read/write transfer in a sector. 004RdFifoTWdisk task wakeup is due to presence of at least 3 words in the FIFO during anormal read or 1 word during a read-and-check. During a normal read, anInput that reduces the FIFO below 3 words will drop RdFifoTW in time for aBlock to take effect on the 5th cycle following the Input; this permits a 2-cycleloop (Input, Block). During a read-and-check, an Input that empties the FIFOwill drop RdFifoTW in time for a Block to take effect on the 3rd cyclefollowing the Input; this permits a 4-cycle loop (Input, no-op, no-op, Block). 005WrFifoTWdisk task wakeup is due to space for at least 4 words in the FIFO. An Outputthat reduces the free space below 4 words will drop WrFifoTW in time for aBlock to take effect on the 5th cycle following the Output; this permits a 2-cycleloop (Output, Block). WrFifoTW is enabled to occur by selectingTIOA[DiskData] when a write command is in progress; it is disabled byTIOA[DiskControl], which the microcode executes after outputting the last dataword of a block. One more WrFifoTW will occur after all data has actuallybeen sent to the disk. 006ReadDataData bit from the disk (available for diagnostics) 007WriteDataData bit to the disk (available for diagnostics) 010EnableRunFormat RAM has been written, and wakeups are enabled 011DebugModeController has been placed in debug mode 012RdOnlyBlock'The controller is processing a block in normal read mode 013WriteBlock'The controller is processing a block in write mode 014CheckBlock'The controller is processing a block in read and check mode 015ActiveThe controller is processing a command for the current sector016:017Select.0..1The address of the currently selected drive unitKSTATvarious bits indicating the status of the drive/controller. The controller will turnon WriteInhibit for the remainder of the sector after any of the following errorsare detected, but will still go through all the motions of word transfers. 020SeekIncThe disk drive has not correctly positioned the heads within the last 700 ms. AReZero command must be issued to clear this error. 021HeadOvflThe head address given to the disk drive is invalid (i.e., greater than 4 for a T-80 drive). 022DevCheckOne of the following errors occurred:Head select, Cylinder select, or Write command and disk not readyIllegal cylinder address.Offset active and cylinder select command.Read-Only and Write.Certain errors during writing, such as more than one head selected, notransitions of encoded data or heads more than 80 micro-inches off cylinder.A ReZero command may be necessary to clear this error.����������������������������î¶ïfªpô�Xî" qî0ëpîG?ïfñîxïbî\ô�ð3îÙï`Ssô�€î\îô�ð&îÙï^¬ô�€î\îô�ßðCîï]Kô�Œð0ô�îï[êô�Îð$ô�Ïð$îÙïZCô�€î\îô�˜ð*ô�™ð!îïXâô�¨ô�©ð4îïWô�«ô�¬ð0îïV!ô�Üô�Ýð"tîïTÀsô�îÙïSô�€î\îô�‹ð>ô�Œ îïQ”ô�Âw�sô�ÃîïPô�µô�¶ð=îÙïNiô�€î\îô�šô�›ð2îïMô�·ô�¸ð3îïK¨ô�”ð<ô�• îïJGô�’ð%ô�“ð,îïHæô�—ðMîïG…ô�Öð)ô�×îïF$ô�¸ð0ô�¹îÙïD}ô�€î\îô�Œð+ô�îïCô�¤ô�¥ð/îïA¼ô�ƒô�„ðJîï@[ôCôDð3îï>úô�íô�îð0îï=™ô�£ð5ô�¤îï<8ô�«ð8ô�¬îï:Øô�îÙï90ô�€î\îô�ð.îÙï7‰ô�€î\îô�ð,îÙï5âô�€î\îô�ð.îÙï4:ô�€î\î ô�îÙï2“ô�€î\îô�ð5îÙï0ìô�€î\ îô�ð/îÙï/Dô�€î\ îô�ð8îÙï-ô�€î\îô�ð:îÙï+öî\ îð0îxï(§pî\ô�žð)ô�Ÿð,î\ï&Üô�¥ð!ô�¦ð0î\ï%ô�ðJîÙï"Psô�€î\îô�‰ð9ô�Šîï ïô�ð2îÙïHô�€î\îô�ð0ô�Žîïçô� îÙï@ô�€î\îô�ð"î bïßðAî bï~î bïð*î bï½î bï\ô�Ýð4ô�Þî bïûô�›ô�œð.îïTô�ð6ÿ������� ä����¶1:'UÚÛ��������������������������������������������������������������������������Dorado Hardware ManualDisk Controller August 1, 198577 023NotSelectedThe selected drive is in "off-line" test mode or the selected drive is not poweredup 024NotOnLineThe drive is in test mode or the heads are not loaded 025NotReadyThere is a cylinder seek in progress or the heads are not loaded 026SectorOvflThe controller detected that a command was active when the next sector pulseoccurred. This error implies either a hardware malfunction or a discrepancybetween the sector format of the drive and the word count the program thinks isappropriate. 027FifoUnderflowEither the FIFO became empty while writing (task got behind) or the FIFO hadtoo many words taken out of it while readng (microcode word count or wakeuperror). 030FifoOverflowEither the FIFO became full while reading (task got behind) or the FIFO hadtoo many words put into it during writing (microcode word count or wakeuperror). 031ReadDataErrA flip-flop in the controller for latching one of three errors:CompareErra read-and-check operation was executed on a block, and themicrocode did not issue ClearCompareErr before thebeginning of the next block.ECCErrorthe microcode can set the ReadDataErr flag if it determinesthat the ECC words after reading one block are non-zero inorder to inhibit future writes.ECCComputeErrThe ECC hardware within the disk controllerfailed to generate a single "1" bit (i.e., a hardwaremalfunction). 032ReadOnlyThe "Read-Only" switch on the drive is on. 033CylinderOffsetThe cylinder position is currently offset. This is a mode used for recovery ofbad data. 034IOBParityErrThe controller detected bad parity on the IOB bus. 035FifoParityErrThe controller detected bad parity on the data out of the FIFO. 036WriteErrOR of errors on muffler addresses 020-035 037ReadErrOR of errors on muffler addresses 020-031 and 034-035KRAMcontents of the format RAM040:043Address of format RAM word044:057contents of format RAM wordKTAGcontents of the tag register060:07720 bit value last loaded into the tag registerKFIFOstate of the io control logic 100ShiftInThe controller is currently shifting data into the FIFO 101ShiftOutThe controller is currently shifting data out of the FIFO 102ComputeECCThe controller is currently shifting data and computing the ECC checksum 103NextBlockOccurs between blocks within a sector 104LoadTagIndicates that the next word read from the format RAM should be loaded intothe tag register as opposed to the count register 105CntDone'Indicates that the count register is again zero, and a new value from the formatRAM will be loaded next 106OutRegFullThe holding register on the input to the FIFO has been loaded, but nottransferred into the FIFO.��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������î¶ïfªpô�Xî" qî0ëpîG?ïfñîÙïbAsô�€î\ îô�„ô�…ð:îï`àîÙï_9ô�€î\îô�ð2îÙï]’ô�€î\îô�ð;îÙï[êô�€î\ îô� ð#ô�¡ð&îïZŠô�»ô�¼ð/îïY)ô�ð&ô�‚ð)îïWÈîÙïV!ô�€î\îô�…ðFîïTÀô� ô�Žð=îïS_îÙïQ¸ô�€î\îô�›ð5ô�œîïPWô�®ð?ô�¯ îïNöîÙïMOô�€î\ î�ô�ð>î bïK¨ î(§ô�ð7ô�î(§ïJGôJôKð%î(§ïHæô�î bïG?î(§ô� ô�¡ð&î(§ïEÞô�™ô�šð2î(§ïD}ô�î bïBÖî.¶ô�æô�çî(§ïAuô%ô&ð,î(§ï@îÙï>mô�€î\îô�ð'îÙï<Æô�€î\ îô�¡ô�¢ðCîï;eô�îÙï9½ô�€î\îô�ð/îÙï8ô�€î\îô�ð<îÙï6oô�€î\îô�ð'îÙï4Çô�€î\îô�ð3îxï1ypî\îÙï.·sî\îÙï-î\îxï)Ápî\îÙï'�sî\ð.îxï#±pî\îÙï Ìsô�€î\îsô�ð4îÙïÞô�€î\îsô�ð6îÙïðô�€î\ îsô�Øð&ô�ÙîÙïô�€î\îsô�îÙïô�€î\îsô�–ð6ô�—îï‘ô�ð1îÙïÆô�€î\îsô�ð'ô�îïBô�îÙïwô�€î\ îsô�Øð*ô�Ùîïóô�ÿ������� „����¶Ð8ÆW;º��������������������������������������������������������������������������������������������������������������������������������������������Dorado Hardware ManualDisk Controller August 1, 198578 107InRegFullThe holding register out of the FIFO has been loaded, but not read viaPd_Input or loaded into the output shift register.110:113FifoWaddrThe 4-bit address indicating where the next word will be written into the FIFO114:117FifoRaddrThe 4-bit address indicating where the next word will be read from the FIFO.if FifoWaddr equals FifoRaddr then the FIFO is defined as empty.Error Detection and CorrectionTo allow high data density and a few surface imperfections during manufacture, Trident diskpacks are not required to be perfect. A disk pack is defined as suitable when no more than threebad areas occur on any data surface; a bad area is defined as one which could potentially causeread errors of no more than 11 bits in length. To correct errors arising from these imperfectionsas well as other (infrequent) read errors, the controller implements an error detection andcorrection scheme which will detect (with very high probability) errors of any length, and willallow correction of any burst error of 11 bits or less.Error correction is accomplished through a mixture of disk controller hardware (for ECCgeneration and checking) and system software/firmware (for error recovery). This is acompromise between capability, speed, and cost. ÿ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������î¶ïfªpô�Xî" qî0ëpîG?ïfñîÙïbsô�€î\îsô�Ûô�Üð.îï`šô�ð2îÙï^Ïî\îsô�‘ð+ô�’ð#îÙï\áî\îsô�œð8ô�îï[]ô�ð@î¶ïW;uô�Xî¶ïSÉpô�Èô�Éð=î¶ïQþô�Šð2ô�‹ð/î¶ïP4ô�Ÿô� ðPî¶ïNiô�•ð#ô�–ð?î¶ïLžô�ñðGô�òî¶ïJÔô�ºðJô�»î¶ïI ô�ð7î¶ïE»ôð*ôð-î¶ïD7ô#ð#ô$ð3î¶ïB²ô�ð1�������"����¶Bk<ñ% �›����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Figure 14Display ControllerD1Display.sil18Fout>>T0T1ROdd1616REvenFIFO256 x 32RAM>>T1pAReaderPtrBReaderPtrAWriterPtrBWriterPtrFIFO is written during FH andis read during the SH; readsalternate between channelA and channel B (irrespectiveof whether or not the channelwants the FIFO).>>>>7ACanReadFIFOAWritingFIFO>>1HWindowChannelOnChannelOffCursor video1st FIFORead2nd FIFORead<><><><><>32LeftMargin15><><Width<>16CursorX><18128 words ofFIFO used by A,128 by B.NLCB16 x 12RAM12CLCB<>RAMHRamHRamAddrHRamOut1024 x 33>>32FIB>>32SIB32>SR8A or B channel timing (in pixel clocks, not to scale)3>10Permuter>32>8SR>32SIB32>FIBT0DblCursorDataAItem.0AItem.1AItem.3BItem.0AOnBOndcAItem.2PolarityMiniMixer256 x 4 RAM48>4AItem[4:7]8dcCursorDataAItem.0BItem.0PolarityefcddcVBlankHBlankdc1AltoVideoPClkPClkVariousregisters>of NLCB and CLCB registersNLCBAddr412ItemClk'sPClk/2hg18IOBp16RIOBRIOBT3See Figure 15 for layoutHorizontal Blanking<>Visibleleft margin<Horizontal Sync<>8/30/81RIOB>>RIOBMiniMix7-WireInterfacepTo TerminalHSyncHBlankVSyncVBlank6VCWSyncGenerator3pVisible data>Visibleright margin><Visible ScanAItemSizeBItemSizeDispYDispM(not including independent terminal interface)ppDACpVideoGrey-scaleAItemBItemppB BufferA BufferC Buffer24BitModeAOnBOnCMap AddrDoradoCMap Addr88CMap256 x 8RIOB88RIOB256 x 8DoradoRIOBDoradoBMap AddrBMap AddrBMapGreenOutputReg1024 x 24DACpGreenVideoVideopDACRegOutputBlueBlue888VideopDACRegOutputRedRed88Mixer(AMap)Mixer AddrMixer Addr10A8B2/A6B4BBypass88410AItemBItemPixelClockSystempppPixelClkAItemClkBItemClkpVCOCrystalBackpaneljumperPixelClkRegRIOBVCOPixelClkVCOp>>>>>>>Video��î$rïð î!åïdðî<uïð î ï6—þò�$î�ï3þ�$î ï2ûþ�$î ï2ûþ�$Àî ï-³þ�$yî ï-³þ�$î�ï-×þ�$Uî ï1 þò�$î�ï4¥þ�$î Öï4;þ�$î Gtï5Wðîï4Éðîò|ï0õðîäï/‚þ�$Gîäï/^þ+�$îòï+®ðî uï6»ðî ï1,ðî�ï4¥þ +�$î«tï4Éðîdï4;þ�$îÖï5Wðî«ï.óþ�$îï0ðî«ï/‚ðî+ï6 þÖ�$îï-×þ�$Vî+ï-³þù�$î+ï-³þ�$yî�ï/^þ +�$îpï2×ðîºtï0åðîï/Éðî|ï+®ðîï0õðî¬uï6,ðî9|ï0õðî Vï(%þ ��$î ätï(Hð î Vï&Áþ ��$î äï&åð î Vï%^þ ��$î äï%ð î Vï#úþ ��$î äï$ð îVï#Hþ�$ÖîVï&3þ¹�$îÖï%Èþ�$îï-ðîï,sðîï+Wðîï*:ðîï)ðîï(ðî:|ï$uðî:ï#ðî:ï!®ðî:ï Jðîtï&åðî ï, þ ¹�$î+ï,,ðî ï*¥þ ¹�$î+ï*ÈðîVï)óþ�$îVï+zþÇ�$îï+zþ�$]î:|ï(Xðî:ï&õðîºï+þ�$îstï,,ðîVï` ðî(ï]ðî)óï[õðî>Éï\Êðî?æï[®ðî�ï_µþF�$î2×ïZJþ�$UîHïZ‘þ�$Vî3eï\ƒðî:åïZ‘þ�$Uî,ïaƒðîºï`gðîÖï^.þ�$9î$eï^.þ�$9î"sïaƒðî#ï`gðî*ï^.þ�$«î�|ïb°ðî :ïb°ðî*ï_èðîJtïb°ðî�ï[/ðî+ï[/ðîHï[/ðîºï[/ðîHïW“ðî1ºïW“ðî rtï^uðî�ï^ßþ+�$î Öï^ßþr�$îºï^uð îHï^ßþ+�$îï^ßþG�$î!ï^uðîÖï^ßþò�$î"sï^ßþò�$î#H|ï[/ðîÖï[/ðî$eï^ßþ9�$î(Hï^ßþ9�$î)eï[/ðî$eï[/ðî3¬tï^uðî*ï^ßþä�$î*|ï[/ðî?žï[/ðî6,tïZØðîeïZØðîHï[CþÖ�$î#Öï[Cþ��$î2×ï[Cþ�$î7ï[CþU�$î9É|ïW“ðî2×ïW“ðî&åtï^uðîï,sðîï+Wðîï*:ð îï-³þ�Ž�$î«ï)óþ�$äîï)Ðþ�²�$î ïFûþÖ�$îdïBfþ�$¹î ïBBþù�$î ïBBþ�$Ýî«pïEtðî«tïCÉðî€ïBðîdïDÂþ�$îïDXþ�$îòïEtðîdpïEtðî ï`Šþ9�$î�|ï\Úðî+ï\Úðî�ï`Šþ�$î€tï:ðî ï9¥þ�$Ýî ï9¥þù�$îdï9Éþ�$¹î«pï<×ðî ï@ßþÖ�$îdï?þ�$òî ï>íþù�$î ï>íþ�$î Ötï?Wðîdï<%þU�$îºï=Bþ«�$îdï;tþ�$òîºï;PþÎ�$îºï;Pþ�$îHï;»ðîï;-ðîï;»þ�$î9ï<×ðîdï;Þþ+�$î ï>^þÖ�$î r|ï8.ðîï8uðîeï1sþ�$îÖtï2ðî+åï3‰þ�$î.óï0žþ�$î+åï0zþ2�$î+åï0zþ�$2î,ºï1sðî |ï..ðî1sï..ðî.óï1Þþ�$î2ï0zþ�$2î2ï0zþ2�$î5žï0žþ�$î2ï3‰þ�$î/Étï2ðî0Wï1sþ�$î3eï1sðî7ï1sþ�$î6tï2ðî9;ï3‰þ�$î<Iï0žþ�$î9;ï0zþ2�$î9;ï0zþ�$2î8|ï..ðî5žï1Þþ�$î:tï1sðî=ï1sþ�$î=fï2ðî Vï>‚þ�$�ŽîpïXXð5îï;tþ�$îÇtï<ðîï?žþ�$î r|ï<Yðîdï@ þ+�$î€tï@»ðîï1Þþ�$î!žï3‰þÖ�$î'sï0žþ�$î!žï0zþù�$î!žï0zþ�$2î",ï1sðî'sï1Þþr�$î)ï1sþ�$î*È|ï..ðî(tï2ðî*È|ï2ðî=ftï6tðî=ï5Wþ�$î:ï5Wðî5žï5Âþ�$î8|ï2ðî9;ï4^þ�$2î9;ï4^þ2�$î<Iï4‚þ�$î9;ï7lþ�$î6ttï6tðî7ï5Wþ�$î3eï5Wðî0Wï5Wþ�$î/Éï6tðî2ï7lþ�$î5žï4‚þ�$î2ï4^þ2�$î2ï4^þ�$2î.óï5Âþ�$î1s|ï2ðî,ºtï5Wðî+åï4^þ�$2î+åï4^þ2�$î.óï4‚þ�$î+åï7lþ�$î*:ï1Þþ�$î*:ï5Âþ«�$î,ºuï7×ðî3eï7×ðî:ïR¦þ�$îóïN{þV�$î:ïMþ�$î:ïK´þ�$î:ïJQþ�$îtïT-ð îïRÊðîïQfðîÈïNŸðîÈïM;ðîÈïKØðîÈïJtðîs|ïMKðîsïMKðî:ïOßþ�$îrtïPØðîrïO-ðî:ïQCþ�$î:ïT þ�$î#HïOQþd�$î*ïIÂþ€�$î2ïFIþ�$î*ïF&þ¤�$î*ïF&þ�$Àî+pïH;ð î+tïFØðî#ïGÑþò�$î'sïGfþ�$î',ïH‚ðî$eïO-þ�$î$ïPðî)e|ïD ðî4‚ïGþ�$dî4;tïH‚ðî5{ïFð î2ïGÑþ ¹�$î;»ïHíþò�$î=ïE-þ�$äî;»ïE þ�$î;»ïE þ�$î?WïFþ�$î?ïGðî-|ïPðî-ïPðî%ÈïT þ€�$î%ÈïR¦þ�$î%ÈïQCþ9�$î&tïT-ð î&ïRÊðî&ïQfðî/ÉïR¦þ�$î0ïQðî5W|ïNöðî5WïO„ðî5åïO=ðî5åïO=ðî8¬ïQÑþ9�$î:åïSÃþÇ�$î=ïPJþ�$î:åïP&þë�$î:åïP&þ�$Àî<×ïJËðî<×ïJËðî5åïN4þ€�$î5åïLŠþ€�$î6ttïNXðî6tïLðî?žïM_þ�Õ�$î@tïM_þ�$ëî@tïP&þ�$î=ïQÑþä�$îA|ïNhðîAïNhðîDŸïP‘þ�$îDXtïQðîE-ïQð î/ÉïPûþÖ�$î;-uïSæðî;»ïIŸðîïFûþd�$îdïBfþ�$¹îïBBþ‡�$îïBBþ�$ÝîdtïDðîÖïBôð îä|ïAðîòuï?Wðî€ïH_þ�$î ïK´þÖ�$îdïJ-þ�$«î ïJ þù�$î ïJ þ�$Îî ÖtïJtðîÇïGôþ�$î€ïIðîdïDÂþ+�$îïDXþ�$î€ïEtðî8¬uï7×ð îï&Wþ�$€î4ÉïF&þò�$îïKØðî |ïE=ðî ïE=ðî€ïH_þ�Õ�$î VïGþ�$î�tïT-ðîŽïSþ�$îòïSŸðîò|ïOËðî¹ïS|þr�$î +ïTßþ9�$îdïR<þ�$Çî +ïRþ]�$î +ïRþ�$ëî9tïT-ðîÈïSþ�$îdïS|þò�$îrïSŸðîÇïH‚ðî ¹uïUðîòï@tðî tïeõðî�ïf`þV�$îäïf`þ ¹�$î!V|ï_èðî)eï_èðî$etïdðî#Öïbçðî!Vïbçþ�$¹î!V|ïb°ðîK‘ï^.þ�$äî!Vïf`þd�$î5žïf`þò�$î«ïcuþ�$òî¬ïcuþ�$òîÖtïdðî«ïdnþÇ�$îïdnþ�$î«|ï`¾ðîï`¾ðî=uï«ðîrïP´þŽ�$îrïO þG�$î%ÈtïM;ðî%ïMþ+�$î)¬ïLþ�$Uî(|ïK¡ðî(ïIhðî$tïGôðî)¬ïN4þ+�$î-×ïIæþ�$rî5WïGôðî9Épï@tðî9Éï>Éð î8¬ïC¦þÇ�$î@tï<þ�$9î8¬ï<mþë�$î8¬ï<mþ�$]îCÉ|ï< ðî@tï@Pþy�$îA×ï?æþ�$îGftï?æðî1sïAIðî1sï?æðî1sï>‚ðî1sï=ðî-ïA&þ«�$î-ï?Âþ«�$î-ï>^þ«�$î-ï<ûþ«�$îAïAðî¬pï@-ðî#Hï?æþ�$òîeï?Âþ�$î%Èï?Wðî%Èï=ð î$óïA´þÇ�$î$óï<mþë�$î$óï<mþ�$kî,ºï<þ�$Gî#Hï@—þ«�$îdï<%þ¹�$îï<%þ�$‡îï=‰þÖ�$îäï;»þ�$îtï<×ðîJt|ïMKðîC‚ïPûþò�$îdï<þ�$€î2×tïc.ðî@»ï^.þ�$«î*ïc™þÇ�$î8eïc™þV�$î?ž|ï_èðîDtïc¼ðîBôïb ðî@»ïc™þ9�$îH;ïc™þ�$îJt|ï_èðî@»ï_èðî!Vïc™þò�$î(ïc™þ«�$î.tïeõðî�ï^.þ�$äî6»ï^ßþ ��$îeï6»ð îeï5Wð îï6—þŽ�$îï53þŽ�$î$¬ï5Âþ�Õ�$î%ï3¬þ�$9î$¬ï4Éþ�$€îï"sþL�Gîòrï#ðîòï Èðî€tï Èð.îCÉ|ï2ðîCÉï..ðî<Iï5Âþ€�$î<Iï1Þþ€�$îAIpïFIðîAïGÑþä�$îDæïFþ�$òîAïEßþ�$îAïEßþ�$î=ïFûþU�$îJt|ïCKðîDæïFûþŽ�$îE»tïGðîE»ïH;ð î?žï5åðî?žï2ðî9|ï¼ðî9ï ‚ðîpïÈðîï:ðî Öïºðî ïˆþ«�$î9ïsþ�$9î ïOþÎ�$î ïOþ�$]î ïˆþ�$î ïÁþò�$î ïOþ«�$î9ï9þ�$9î ïþÎ�$î ïþ�$]î�ïlþŽ�$î�ï 2þŽ�$î€ïÈþ�$Çî€ï¤þ�$îuïÈð î€ïðî€ï ðî$epïð î$eï¬ðî$eïð î#Öïˆþ�$î,sïsþ�$9î#ÖïOþÀ�$î#ÖïOþ�$]î#Öï3þ�$î,sïºþ�$î#Öï–þÀ�$î#Öï–þ�$Àî9ïlþ�$îÖïþ�$îŽtïðîŽï äðîÖïÈþ�$î ï«þ�$9îï«þ�$9î1ºpïäðî1ºï:ðî0WïúþÇ�$î8ïdþ�$¹î0WïAþë�$î0WïAþ�$Ýî,sïlþ�Õ�$î-Iï¬þ�$äî,sïˆþ�ù�$î-Iïzþ�$îóïˆþä�$î :tï¬ðî.¬ï,ðî.óïþ�$î.óï rþ�$î.¬ï ðî :ïðîóïëþä�$î-Iï Ýþ�$î,sïëþ�ù�$î-Iïþ�$äî,sïÏþ�Õ�$î0Wï¤þ�$Ýî0Wï¤þë�$î8ïÇþ�$¹î0Wï]þÇ�$î1ºpïðî#Öïùþ�$Àî#ÖïùþÀ�$î,sïþ�$î#Öï –þ�$î#Öï ²þ�$]î#Öï ²þÀ�$î,sï Öþ�$9î#Öïëþ�$î$eïðî.óïäþ�$î :tïðîóï]þä�$î-IïOþ�$î,sï]þ�ù�$î-Iïþ�$äî,sïAþ�Õ�$î0Wïùþ�$î0Wïùþë�$î0WïëþÇ�$î#Öïkþ�$Àî#ÖïkþÀ�$î,sïþ�$î#Öïþ�$î#Öï$þ�$]î#Öï$þÀ�$î,sïHþ�$9î#Öï]þ�$î$epïðî$eïdð î$eïdð î1ºï Gðî<×ïsðî<×ïÈðî<×ïðî0žï9ð î<ïúþ�$îBïHþ�$Öî<ï$þ@�$î<ï$þ�$ùî8ïzþä�$î8ï]þ€�$î:žï]þ�$@îDï]þ�$îDï]þ�$îGôïþ�$òîDïOþä�$îDXïÈðîJ-|ïƒðîH‚tïHðîH‚ï,ðîGôï3þ9�$îGôï –þ9�$îH‚ï ðîJ-|ïæðîDXpï +ðîDï ²þä�$îGôïäþ�$òîDïÀþ�$îDïÀþ�$î<ï‡þ�$ùî<ï‡þ@�$îBï«þ�$Öî<ï]þ�$î<×ï€ðî<×ï +ðî8ï Ýþä�$î<×ï ÖðîH‚tï«ðî8ïˆþ€�$î:žï �þ�$«î9‚ïþ�$î9;ï,ðî9;ïðî9‚ïòþ�$î9‚ï rþ�$î9;ï ðîGôïþ9�$îH‚ïðîJ-|ïXðîDXpïðîDï$þä�$îGôïVþ�$òîDï2þ�$îDï2þ�$î<ïùþ�$ùî<ïùþ@�$îBïþ�$Öî<ïÏþ�$î<×ïòðî<×ïðî8ïOþä�$î<×ïHðîH‚tïðî9‚ïäþ�$î9;ïðî8ïùþ�$î9;ï9ðî9‚ïþ�$î2pïÖðî1sï+ðî$eïÖð î$eïÖð î.etïðîï+þ�$rîuïð îï¤þ ��$îïAþV�$î9ï 2þä�$îï Öþ�$rîïÏþÝ�$îï–þ9�$îVï–þ�$kîVïÝþ+�$îrï ¹ðîºtïVðîï:þ�$îïrþ�$îºï€ðîïdþ�$îºïðî¬ïòðî :ïÖþ�$î«ïðî«ï Vðî;Þpï*¥ðî;Þï(úðî;Þï'Oðî@ßï'þ�$Gî;Pï&åþ²�$î;Pï&åþ�$kîG‰|ï'§ðîG‰ï%µðîG‰ï#Ãðî@ßï+Wþ«�$î@ßï)eþ«�$î@ßï'sþ«�$îBftï+zðîB‰ï)ˆðîB‰ï'—ðî7%|ï%µðî9íï)eþd�$î5{ï'—þ�$Uî1Ptï*^ðî1Pï(%ðî1 ï(þr�$î1Puï%ìð î1Pï$ÏðîäpïÖðîäï+ðîï]þò�$î�ïþ�$äîïyþ�$îïyþ�$îäï²þ+�$îätïÖðî�ïkþ«�$î9pï�ðî«ïÎþr�$îï+þ�$Çî«ïþ•�$î«ïþ�$ëîòtïŽðî|ï»ðî5{ï)eþ�²�$î5åï%µðî#HïIæþ�$î"ºï¼ðî"ºïØðî"ºï‘ðî"ºï ðî"ºïðî"ºï;ðîïWƒþL�Gî5žïPûþ�G�$îeïA´þä�$îeï?Âþä�$îBï3þò�$îBïþò�$îBï –þò�$î6,ï)eþ�Ž�$î6»ï)eþ�G�$î1 ï*:þr�$î ïH_þ�$�$î;Pï,,þŽ�$î3ïB‰þ²�$î3ïB‰þ�$ yî3ïOßþ‡�$î9¥ïOßþ�$òî3‰tïBôðîïkþò�$ÿ�������Bä��LŠfƒH������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Figure 15Display Controller IO RegistersD1DispReg.sil151413121110987654321001234567891011121314150123456789101112131415151413121110987654321001234567891011121314151514131211109876543210012345678910111213141515141312111098765432100123456789101112131415--MufAddr[5:11]<>XSyncEnableFakePixelClockUseFake------DWTShutupDHTShutupNLCBAddr[0:3]<>NLCB data<>KeepHRam'WriteHRam'LoadHRamAddr------------------------><HSyncHBlankHalfLine--------------------------SetBNextWCBSetANextMustBe----------------------IOFetchSignalMustBe00BeMustMustBe0Set/ClrFlagAddress[0:7]<>Data[0:7]><--------<>KeepMixer'WriteMixer'LoadMixerAddr--<>--><Addr[0:9]Hi/LoData----------------------------PixelClockResetCurWCB><--AddrLoadWriteKeep1514131211109876543210--------Address[0:7] OR Data[0:7]<>377 (Y)367 (M)DDC**Addr[1:10]375 (Y)HRam374 (Y)373 (Y)DWTFlag*8/29/81372 (Y)MiniMixer360 (M)PixelClk361 (M)Mixer362 (M)CMap365 (M)BMapRed[4:7]Blue[0:7]<>Green[0:7]Red[0:3]<<>>01370 (Y)----1514131211109876543210MapInLo1>><<Red[0:3]Green[0:7]0123456789101112131415><Blue[0:7]Red[4:7]><ColorMonitor Type<>TIOAOutputTIOAInput376 (Y)366 (M)364 (M)363 (M)361 (M)360 (M)TIOAInputNoPEData*Data** Parallel registers DispY/DispM0VCW*VBlankVSyncOddFld111BMargin10--AMargin*Left margin count (negative)<>2AWidth*12BWidthWidth count (negative)<>3AFifoAddr*13BFifoAddrFifo Address (even)<>414BScanPolarity*ResolutionSize8Size4Size2Size15MixerMode24BitBBypassA8B215Cursor position (negative)<>CursorX*6--16CursorLo*7--17CursorHi*Cursor data [8:15]Cursor data [0:7]<<>>TerminalTerminalMufflerMultiplierDivisor<<** Only starred bits or fields are usedon DispM; all others are ignoredStatics**NLCB**Status**MapInHi**AScan**DHTFlag**WCB*0*Map'Map'Map���î#rïäð îVï9ðîC‚uïäð î=ïLfþ�$îïLfþ�$îJ-tïKJðîFIïKJðîBfïKJðî>‚ïKJðî:žïKJðî6»ïKJðî3ïKJðî/:ïKJðî+WïKJðî'sïKJðî#ïKJðî¬ïKJðîÈïKJðîäïKJðîïKJðîïKJðîHÉïLfþ�$îDæïLfþ�$îAïLfþ�$î9;ïLfþ�$î1sïLfþ�$î-ïLfþ�$î)¬ïLfþ�$î!åïLfþ�$îïLfþ�$îVïLfþ�$î5WïLfþ�$î%ÈïLfþ�$î:ïLfþ�$îrïLÑþ�$]îrïLÑþ>^�$îLïLôþ�$9îrï^ þ>;�$îrïeŠþ>;�$îLï`õþ�$rîrï`Ñþ>^�$îrïaþ�$•î:ï` þ�$dî%Èï` þ�$dî5Wï` þ�$dîVï` þ�$dîï` þ�$dî!åï` þ�$dî)¬ï` þ�$dî-ï` þ�$dî9;ï` þ�$dîAï` þ�$dîï_Jðîï_Jðîäï_JðîÈï_Jðî¬ï_Jðî#ï_Jðî'sï_Jðî*Èï_Jðî/:ï_Jðî3ï_Jðî6»ï_Jðî:žï_Jðî>‚ï_JðîBfï_JðîFIï_JðîJ-ï_Jðîï` þ�$dî=ï` þ�$dîrïJ˜þ>;�$îLïGþ�$îrïFûþ>^�$îrïFûþ�$Àî:ïFþ�$î%ÈïFþ�$î5WïFþ�$îVïFþ�$îïFþ�$î!åïFþ�$î)¬ïFþ�$î-ïFþ�$î1sïFþ�$î9;ïFþ�$îAïFþ�$îDæïFþ�$îHÉïFþ�$îïE»ðîïE»ðîäïE»ðîÈïE»ðî¬ïE»ðî#ïE»ðî'sïE»ðî+WïE»ðî/:ïE»ðî3ïE»ðî6»ïE»ðî:žïE»ðî>‚ïE»ðîBfïE»ðîFIïE»ðîJ-ïE»ðî=ïFþ�$î=ï@»þ�$îï@»þ�$îJ-ï?æðîFIï?æðîBfï?æðî>‚ï?æðî:žï?æðî6»ï?æðî3ï?æðî/:ï?æðî+Wï?æðî'sï?æðî#ï?æðî¬ï?æðîÈï?æðîäï?æðîï?æðîï?æðîHÉï@»þ�$îDæï@»þ�$îAï@»þ�$î9;ï@»þ�$î1sï@»þ�$î-ï@»þ�$î)¬ï@»þ�$î!åï@»þ�$îï@»þ�$îVï@»þ�$î5Wï@»þ�$î%Èï@»þ�$î:ï@»þ�$îrïA&þ�$îrïA&þ>^�$îLïAIþ�$äîrïE þ>;�$îrï>íþ>;�$îLï;-þ�$äîrï; þ>^�$îrï; þ�$î:ï:žþ�$î%Èï:žþ�$î5Wï:žþ�$îVï:žþ�$îï:žþ�$î!åï:žþ�$î)¬ï:žþ�$î-ï:žþ�$î1sï:žþ�$î9;ï:žþ�$îAï:žþ�$îDæï:žþ�$îHÉï:žþ�$îï9Éðîï9Éðîäï9ÉðîÈï9Éðî¬ï9Éðî#ï9Éðî'sï9Éðî+Wï9Éðî/:ï9Éðî3ï9Éðî6»ï9Éðî:žï9Éðî>‚ï9ÉðîBfï9ÉðîFIï9ÉðîJ-ï9Éðîï:žþ�$î=ï:žþ�$î=ï4‚þ�$îï4‚þ�$îJ-ï3¬ðîFIï3¬ðîBfï3¬ðî>‚ï3¬ðî:žï3¬ðî6»ï3¬ðî3ï3¬ðî/:ï3¬ðî+Wï3¬ðî'sï3¬ðî#ï3¬ðî¬ï3¬ðîÈï3¬ðîäï3¬ðîï3¬ðîï3¬ðîHÉï4‚þ�$îDæï4‚þ�$îAï4‚þ�$î9;ï4‚þ�$î1sï4‚þ�$î-ï4‚þ�$î)¬ï4‚þ�$î!åï4‚þ�$îï4‚þ�$îVï4‚þ�$î5Wï4‚þ�$î%Èï4‚þ�$î:ï4‚þ�$îrï4ìþ�$îrï4ìþ>^�$îLï5þ�$äîrï8Ðþ>;�$îrïÏþ>;�$îLïþ�$Uîrïzþ>^�$îrïzþ�$yî:ïþ�$î%Èïþ�$î5Wïþ�$îVïþ�$îïþ�$î!åïþ�$î)¬ïþ�$î-ïþ�$î1sïþ�$î9;ïþ�$îAïþ�$îDæïþ�$îHÉïþ�$îï:ðîï:ðîäï:ðîÈï:ðî¬ï:ðî#ï:ðî'sï:ðî+Wï:ðî/:ï:ðî3ï:ðî6»ï:ðî:žï:ðî>‚ï:ðîBfï:ðîFIï:ðîJ-ï:ðîïþ�$î=ïþ�$î=ï þ�$îï þ�$îJ-ïeðîFIïeðîBfïeðî>‚ïeðî:žïeðî6»ïeðî3ïeðî/:ïeðî+Wïeðî'sïeðî#ïeðî¬ïeðîÈïeðîäïeðîïeðîïeðîHÉï þ�$îDæï þ�$îAï þ�$î9;ï þ�$î1sï þ�$î-ï þ�$î)¬ï þ�$î!åï þ�$îï þ�$îVï þ�$î5Wï þ�$î%Èï þ�$î:ï þ�$îrï ìþ�$yîrï ìþ>^�$îLï!þ�$Uîrï$Aþ>;�$îrï,—þ>;�$îLï&žþ�$îrï&zþ>^�$îrï&zþ�$@î:ï&þ�$î%Èï&þ�$î5Wï&þ�$îVï&þ�$îï&þ�$î!åï&þ�$î1sï&þ�$î9;ï&þ�$îAï&þ�$îDæï&þ�$îHÉï&þ�$îï%:ðîï%:ðîäï%:ðîÈï%:ðî¬ï%:ðî#ï%:ðî'sï%:ðî+Wï%:ðî/:ï%:ðî3ï%:ðî6»ï%:ðî:žï%:ðî>‚ï%:ðîBfï%:ðîFIï%:ðîJ-ï%:ðî=ï&þ�$îïb ðîVïb ð îVïc þ r�$î$¬ïc þä�$îV|ï_Zðî,sï_Zðî.tïc.ðî.ïbðî2ïc¼ðî2ïb ðî2ïaƒðî5åïd‘ðî5åïcuðî:WïbXðî>;ïbXðîBïbXðîFïc¼ðîEtïb ðîIŸïd‘ðîIïcuðîï\ƒð îrï\îþ+�$î¬ï\îþU�$îr|ïY>ðîäïY>ðî2tï\ƒð îï\îþH�$î8ï\îþ�$î|ïY>ðîK‘ïY>ðîïGþ�$îïHíþ.¬�$î�tïIXðî�ïH;ðî+ïIXðî+ïH;ðîïIŸðîïH‚ðîïGfðî:ïH‚ðîeïIXðîeïGfðî#HïGfðî',ïGfðî*ÈïGfðî.¬ïGfðî2×ïGfðî6»ïGfðî:žïGfðî>‚ïGfðî#HïIXðî%ÈïIÂþ+�$î9ÉïIÂþä�$îK‘|ïFðî%ÈïFðîAItïGfðîE-ïGfðîIïGfðîÖïBðîºïBðîïBðîïBðîeïBðî#HïBðî',ïBðî*ÈïBðî.óïBðî2×ïBðî6»ïBðî:žïBðî>‚ïBðîBfïCÉðîA×ïBðîA×ïAðîFïCÉðîE»ïBðîIŸïCÉðîJ-ïBðîÖï<ðîºï<ðîï<ðîï<ðîeï<ðî#Hï<ðî',ï<ðî+ï<ðî.óï<ðî2ï<ðî6»ï<ðî9‚ï=ðî9‚ï<ðî=ôï=ðî>‚ï<ðî>Éï;tðîBfï;tðîBï<ðîAï=ðîEtï=ðîFï<ðîFIï;tðîIï=ðîIŸï;tðîdï6tðîrï6Þþ«�$î!åï6Þþ«�$îr|ï3.ðî,sï3.ðî:Wtï6tð î-ï6Þþ€�$î?æï6ÞþÈ�$îK‘|ï3.ðî-ï3.ðîÖtï",ðîºï",ðîï",ðîï",ðî|ïæðî<ïæðîï&žþ�$îï*¥þ.¬�$îHtï)óðîHï(×ðî+ï)óðî+ï(×ðîVï*ðîVï)eðîVï(HðîÈï)eðî|ï&ðîK‘ï&ðî¬tï+ðî!åï+zþ�$î9;ï+zþ�$îG|ï'Êðî!åï'Êðî2tï+ð îIï+ðîIXï+ðîºïðîïðîïðîeïðî#Hïðî',ïðî+ïðî.óïðî2×ïðî6»ïðî:žïðî>‚ïðîBfïðîFIïðî5åïbXðî5åïa<ðîDæï` þ�$dîHÉï` þ�$dîIXïbXðî1sï` þ�$dîHÉï<ðî=ï"–þÖ�$îGï"–þŽ�$îK‘|ïæðî=ïæðîtï0Wðîï/:ðîï1sðîäï0åðî�ï0åðî=ï.eþ�$îJ-ï-ðîFIï-ðîBfï-ðî>‚ï-ðî:žï-ðî6»ï-ðî3ï-ðî/:ï-ðî+Wï-ðî'sï-ðî#ï-ðî¬ï-ðîÈï-ðîäï-ðîï-ðîï-ðîHÉï.eþ�$îDæï.eþ�$îAï.eþ�$î9;ï.eþ�$î1sï.eþ�$î-ï.eþ�$î)¬ï.eþ�$î!åï.eþ�$îï.eþ�$îVï.eþ�$î5Wï.eþ�$î%Èï.eþ�$î:ï.eþ�$îrï.Ðþ�$îrï.Ðþ>^�$îLï.óþ�$äîrï2³þ>;�$îï.eþ�$îeï0Wðî#ï0Wðî'sï0Wðî+ï0Wðî7ï0Wðî-×ï0ÂþÇ�$îDæï0ÂþÇ�$î-|ï-ðîK‘ï-ðîpïdðîïbXðîIŸtïa<ðîFpïa<ðî4;tïIXð îpïH;ðî«ïH;ðîïCÉðîï=ðî«ï<ðîDæuï€ðîpï5åðî«ï5åð îï!åðî«ï!åðîï(ðî«ï(ðîï/:ðî«ï/:ðîï0åðî«ï0åðî$tï)eðî7ï)eð îï)ÐþŽ�$î(ï)Ðþr�$î-ï)Ðþ ��$î<ï)Ðþ«�$î-|ï&ðî-ï&ðîï(³þ.¬�$î)¬tï',ð îC;ï',ðîï'—þ�$î/:ï'—þ ä�$î=ï'—þŽ�$îGï'—þ��$î|ï#æðî=ï#æðî<ï#æðîK‘ï#æðî)¬ï&þ�$î-ï&þ�$îMÊtï)eðîMÊï',ðîLï+zþ«�$îMÊï*þ�$îpïðîtï ðîï ðî=ïþ�$îïþ�$îJ-ïÇðîFIïÇðîBfïÇðî>‚ïÇðî:žïÇðî6»ïÇðî3ïÇðî/:ïÇðî+WïÇðî'sïÇðî#ïÇðî¬ïÇðîÈïÇðîäïÇðîïÇðîïÇðîHÉïþ�$îDæïþ�$îAïþ�$î9;ïþ�$î1sïþ�$î-ïþ�$î)¬ïþ�$î!åïþ�$îïþ�$îVïþ�$î5Wïþ�$î%Èïþ�$î:ïþ�$îrï þ�$yîrï þ>^�$îLï +þ�$Uîrï]þ>;�$î«pïðîtï GðîK‘|ïðî<ïðî=ïðîïðîGï ²þ��$î=ï ²þŽ�$î/:ï ²þ ä�$îï ²þ�$îC;tï Gðî)¬ï Gð îrïëþ>;�$îLï¹þ�$Uîrï–þ>^�$îrï–þ�$yî%Èï+þ�$î5Wï+þ�$îï+þ�$î!åï+þ�$î)¬ï+þ�$î-ï+þ�$î1sï+þ�$î9;ï+þ�$îAï+þ�$îDæï+þ�$îHÉï+þ�$îï Vðîï Vðîäï VðîÈï Vðî¬ï Vðî#ï Vðî'sï Vðî+Wï Vðî/:ï Vðî3ï Vðî6»ï Vðî:žï Vðî>‚ï VðîBfï VðîFIï VðîJ-ï Vðîï+þ�$î=ï+þ�$î-|ïðî-ïðî<ïAþ«�$î-ïAþ ��$î(ïAþr�$îïAþŽ�$î7tïÖð î$ïÖðîK‘|ïðîïðîtïòðîVïÖðîrïAþä�$îäïAþ�$îr|ïðîsïðîpïfÊðî«ïfÊðîïÈðî«ïÈðî«ïUðî«ïSXðîïBðîï;tðîïðîï ðîïäðî«ïäð î�tï+ðî�ï ¹ðîïGð î��ïþMÊ�Gî��ïþMÊ�GîïLôþ�$9îrï[Ñþ>;�$î�ïZ‘ðî«ïZ‘ðîAïZ‘ðîEtïZ‘ðîHÉïZ‘ðîrïZ&þ>;�$î�ïXæðî:ïXæðîsïXæðî:ïZ‘ðîsïZ‘ðîrïX|þ>;�$î«ïXæðî-ïXæðîïYQþr�$î:ïYQþ�$î|ïU¡ðîK‘ïU¡ðî�tïW<ðî«ïW<ðî:ïW<ðîsïW<ðî-×ïW<ðîrïVÑþ>;�$îïW¦þH�$î8eïW¦þH�$î|ïSöðîK‘ïSöðî�tïU‘ðî«ïU‘ð î:ïU‘ðîsïU‘ð î7IïU‘ðî-ïUüþV�$î@tïUüþ9�$î-ïUüþ +�$î-|ïRLðîK‘ïRLðîrïU&þ>;�$î�tïSæðî:ïSæðîsïSæðî1ºïSæð î7ïSæð î=ïSæðîAïSæðîE»ïSæðîIXïSæðîrïS|þ>;�$î�ïR<ðî«ïR<ð î=ïR<ðîE-ïR<ðîIŸïR<ðîrïQÑþ>;�$î:ïP‘ðî-ïP‘ðîïPûþH�$î9‚ïPûþ+�$î|ïMKðîK‘ïMKðîrïP&þ>;�$îstïP‘ðî�ïNæðî«ïNæðî:ïNæðîsïNæð îrïN{þ>;�$î�ïM;ðî«ïM;ðî:ïM;ðîsïM;ð î8ôïNæðî8ôïM;ðî|ïK¡ðîïIöðîK‘ïK¡ðîK‘ïIöðî=ïSþ�$îAïSþ�$îDæïSþ�$îHÉïSþ�$î5WïSþ�$î1sïSþ�$î-ïSþ�$î�tïHðî�ï Öðî:ï+þ�$îVï+þ�$îIïHðî+ï",ð îC;ï",ðîï"–þ9�$î/Éï"–þ V�$î-|ïK¡ðî-ïIöðî-ïOQþ Ö�$î-ïM¦þ Ö�$îA×ïOQþ Ö�$îA×ïM¦þ �$îtïð'î9ï€ð î«pïbçð î9ïSæðî«ïðî«ï ð î«tïSæðî«pïBð îE»tïAðîJtïAðî�ï/Éðîäï/Éðîï0Wð�������¡ä����ÎN{f`s����������������������������������������������������������������������������������������������������������������������Dorado Hardware ManualDisplay ControllerAugust 1, 198579Display ControllerThe Dorado Display Controller (DDC) uses the fast I/O system to obtain representations of videoimages from storage; it then transforms these representations into control signals for monitors. Itsthree design objectives are:(1) To handle a variety of color, grey-level, and binary (black-and-white) monitors;(2) To utilize the full power of the fast io system in producing high-bandwidth computergraphics;(3) To allow various compromises in color and resolution for experimental purposes.Clock rates, video signals, and other monitor waveforms should be controllable bymicrocode.There are two independent video channels capable of running in a variety of modes. Twochannels allow text to be displayed on one channel, graphics on another, or the main picture onone, cursor on the other.The DDC must LF (large format) monitors which are standard for most systems. Bit maps,display control blocks, and monitor control blocks, similar to those used on the Alto, provide thesoftware interface to the DDC. The "seven-wire" video interface makes provision for one or morelow bandwidth input devices (keyboard, pointing device, etc.); our current provisions for keyboardand mouse input are also discussed in this chapter.Keep Figure 14 in view while reading this chapter.Operational OverviewVideo scan lines are encoded in bitmaps, which are contiguous blocks of virtual memory; the twochannels, A and B, have independent bitmaps and data paths in the DDC. The high-priorityDWT (Display Word Task) runs on behalf of either A or B using the subtask mechanism; ittransmits each bitmap to a FIFO consisting of 15 munches/channel. The bitmap stream emergingfrom the FIFO is then sorted into items (1, 2, 4, or 8 bits wide) for each channel which arecombined, mapped, and transformed into pixels (picture cells) on the screen.In addition to the two channels, the DDC supports a programmable cursor that is 16 pixels x 1bit/pixel wide.A lower priority DHT (Display Horizontal Task) handles horizontal and vertical retrace and setsup starting addresses and munch counts, cursor data, and formatting information in the NLCB(Next Line Control Block) for the DDC. The NLCB is then copied into the CLCB (Current LineControl Block) during horizontal retrace prior to the next scan line.The rate-of-flow of items is governed by the resolution and pixel clock period. Resolution may beindependently programmed for each channel so that items flow at 1/4, 1/2, or 1 times the pixelclock period. If the DispM board is present, then the pixel clock period is also progammable;otherwise, it is determined by a crystal oscillator on the DispY board, which must have afrequency appropriate for the monitor being driven. The current crystal used is 50 mhz for the LFdisplay.������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������î¶ïfªpô�€î" qî3fpô�îG?ïfñî¶ïa×rî¶ï^epô�ˆîï^þ�ï^e�îœï^þ�ï^e�î¨ï^þ�ý�ï^e�ô�‰ð.î¶ï\›ô�ŠðBô�‹ð#î¶ïZÐô�îyïW^ô�ãô�äð=îyïU”ô�‹ô�Œð8îyïSÉîyïQþô�Íô�Îð?îyïP4ô�íô�îð2îyïNi î¶ïJ÷ô�Ù qpô�Úð>î¶ïI-ô�œô�ðIî¶ïGbô�î¶ïCðô�Èô�ÉðPî¶ïB%ô�•ð+ô�–ð7î¶ï@[ô�‚ð0ô�ƒð0î¶ï>ô�†ô�‡ðUî¶ï<Æô�ð3îtï9Tqô�Xð2î¶ï4:sô�î¶ï0Èpô�’qp ô�“ð-î¶ï.þô�»ðYî¶ï-3qpô�Áð>ô�Âî¶ï+iô�‡ðBô�ˆî¶ï)žô�¾ô�¿qpð5î¶ï'Óô�ð'qpî¶ï$aô�¢ðGô�£î¶ï"—ô�î¶ï%ô�¢qpð-ô�£î¶ïZô�´ðRô�µqî¶ïpô�„ð!ô�…ð(qp î¶ïÅô�ðEî¶ïSô�Šð(ô�‹q pqpî¶ïˆô�Ÿð7ô� ð'î¶ï¾ô�¬ð!ô�ð=î¶ïóô�çðYî¶ï)ô�„ô�…ðDî¶ï ^ÿ� ������ ����¶ <ñZôD����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Dorado Hardware ManualDisplay ControllerAugust 1, 198580Items can be treated in one of three ways: First, an LF monitor can be driven. Second, itemscan be mapped through the 256-word x 4-bit MiniMixer into video data for a black-and-white orgrey-level monitor. Third, items may be mapped by the Mixer (or A color map), a 1024-word x24-bit RAM, into signals for a color or grey-level monitor. A variety of modes determine whichbits from the A and B items address the mixer. Mixer output consisting of 8 bits for each of thered, green, and blue guns is then digital-to-analog converted for color monitors. Additionally,there is a 24-bit/pixel mode in which the Dorado supplies 8 bits for each of the three colors; thecolors are independently mapped through the Mixer and two additional 256-word x 8-bit RAMscalled the BMap and the CMap.The DDC is implemented on two Dorado main logic boards, called DispY and DispM. DispYcontains all the logic necessary for vertical and horizontal sweep control, channel data paths, andvideo data for binary and grey-level monitors running at a fixed pixel clock rate. DispM containsthe color maps, the programmable pixel clock, and the three DACs for driving a color monitor.Additionally, DispM contains an independent terminal controller that is structurally similar to aone-channel, one bit/pixel DispY but is specialized to driving a 7-wire terminal.Thus there are two principal DDC configurations. On a Dorado with only a 7-wire terminal andno color monitor, only the DispY board is present; it is programmed for Alto terminal emulation,and only a small subset of its capabilities are used. However, on a Dorado with both a 7-wireterminal and a color monitor, the DispM board is also present; all of DispY and the colorhardware on DispM are used to drive the color monitor, and the independent controller onDispM is used to drive the 7-wire terminal.Video Data PathFast IO Interface and FIFOThe fast io system delivers data to the DDC at a rate of 16 bits/clock; words are receivedalternately in the REven (t1) and ROdd (t2) registers shown in Figure 14, then written into theFIFO, a 256-word x 32-bit RAM, during the first half of the next Dorado cycle (t2 to t3), leavingthe second half of the cycle free for read access by the video channels. In other words, the REvenand ROdd registers widen the data path from 16 to 32 bits to allow sufficient time to both writeand read the FIFO in one cycle.The 256 double-words in the FIFO are divided evenly among the two channels, so each has bufferstorage for 16 munches. Each channel has write and read pointers that address the FIFO whenappropriate.Write pointers are initialized once during vertical retrace and then sequence through addresses forthe entire display field; a write pointer is incremented after each double-word write for itschannel, so that the next word to be written is addressed at all times. Since the fast io systemdelivers only one munch at a time, there is never any problem in deciding which of the two writepointers should address the FIFO.Read pointers, however, are initialized during each horizontal retrace, so that the correct firstdouble-word is read at the start of every scan line. This is required because the fast io systemalways delivers complete munches, but unused double words may appear at the end of the last����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������î¶ïfªpô�€î" qî3fpô�îG?ïfñî¶ïbô�¡ðXô�¢î¶ï`Sô�“ð+qpô�”ð$î¶ï^‰ô� ð6qpô�¡î¶ï\¾ô�™ð;ô�šð$î¶ïZóô�ðZô�î¶ïY)ô�¼ð`î¶ïW^ô�‘ð;ô�’ð'î¶ïU”ô� ô�¡ðBî¶ïSÉô�î¶ïPWô�¦ðHô�§ î¶ïNŒô�šô�›ðSî¶ïLÂô�Š ô�‹ðXî¶ïJ÷ô�¤ð@ô�¥î¶ïI-ô�ðTô�®î¶ïGbô�ðQî¶ïCðô�’ð=ô�“î¶ïB%ô�ŒðUô� î¶ï@[ô�¨ô�©ð@î¶ï>ô�ÕðSô�Öî¶ï<Æô�ÔðJô�Õ î¶ï:ûô�ð+î¶ï5âsî¶ï1œqî¶ï.*pô�Ôô�ÕðHî¶ï,_ô�ªï+Òt�ï,_pï+Òt�ï,_pð,ô�«î¶ï*•ô�ð7ô�‘ï*t�ï*•pï*t�ï*•p î¶ï(Êô�ðLô�‚î¶ï'�ô�—ð`î¶ï%5ô�î¶ï ïô�ðAô�‚î¶ï%ô�¡ð\î¶ïZî¶ïèô�Œð3ô�ð0î¶ïô�áð)ô�âð4î¶ïSô�¨ð,ô�©ð5î¶ïˆô�Šô�‹ðFî¶ï¾ô�ð!î¶ïLô�Èð.ô�Éð3î¶ï ô�©ð:ô�ªð'î¶ï·ô�¬ðDô�ÿ� ������ ����¶p=ñ\›I������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Dorado Hardware ManualDisplay ControllerAugust 1, 198581munch for the previous scan line, or at the beginning of the first munch for the current scan line;the read pointer has to be reinitialized to skip over these. FIFO reads alternate between channelsA and B, so the data rate for one channel is limited to 32 bits/2 cycles (=16 bits/cycle).Item FormationAt the output end of the FIFO there is a multiplexor shared by both channels and, for eachchannel, two intermediate buffers (FIB and SIB), and a shift register SR. The multiplexorpermutes the 32-bit quantity emerging from the FIFO so that when the double-word has marchedthrough FIB and SIB and is finally loaded into SR, successive shifts will produce successive itemsof the selected size (8, 4, 2, or 1 bits).The SR is tapped as follows:SR.0Item[0] for item sizes 1, 2, 4, or 8;SR.16Item[1] for sizes 2, 4, or 8, gated to 0 for size 1;SR.8, SR.24Item[2:3] for sizes 4 or 8, gated to 0 for sizes 1 or 2;SR.4, SR.12, SR.20, SR.28Item[4:7] for size 8, gated to 0 for sizes 1, 2, or 4.All eight Item bits are gated to 0 if the channel is off. It is useful to think at this point that,regardless of a channel's item size, an 8-bit wide item is produced, whose bits contain non-zerodata only in those positions dictated by the item size; i.e., for size 1 only the most significant bitmay be non-zero; size 2 allows data in the topmost two bits, etc.The SR loads on the item clock after its last item has been used; the item clock rate is the pixelclock rate divided by the resolution (1, 2, or 4 for full, half, or quarter, respectively). Hence, for8, 4, 2, or 1-bit items, SR will be shifted 3, 7, 15, or 31 times, repectively, and be reloaded fromSIB on the following item clock.The 8-bit items from the two channels are then presented to either the Mixer section on theDispM board or the MiniMixer or LF video interface on the DispY board.MixerNote: A8B2 means A Channel 8 bits and B Channel 2 bits.A6B4 means A Channel 6 bits and B Channel 4 bits.The Mixer is controlled by the A8B2, BBypass, and 24Bit mode controls. It is a 1024-word x 24-bit RAM for which the 10 bits of address required may be obtained from two possible sourcedistributions, depending upon the A8B2 mode. When A8B2 is true, the address consists ofAItem[0:7] and BItem[0:1]; when false (called A6B4), the address is AItem[0:5] and BItem[0:3].Another mode, the BBypass mode, can be enabled independently for the B channel. If B isbypassed, none of its bits contribute to the Mixer address. Instead, they bypass the mixer andaddress a 256 x 8 RAM, the BMap, whose outputs are ORed with the mixer outputs for the blueDAC. For example, with ASize=8, BSize=4, BBypass true, and A8B2 true, and with appropriatevalues in the Mixer RAM, the controller may be thought of as three 4/bits pixel channels drivingthree color guns. One channel is bypassed data from B, while the other two are mapped throughthe Mixer.������������������������������������������������������������������������������������������������������������������������������������î¶ïfªpô�€î" qî3fpô�îG?ïfñî¶ïbô�‰ð+ô�Šð8î¶ï`Sô�‹ðcî¶ï^‰ô�àô�áðAî¶ïZCqô� î¶ïVÑpô�½ô�¾ð=î¶ïUô�Øð#qpqpqpô�Ùî¶ïS<ô�‰ð.ô�Šð.î¶ïQqô�Žð=ô�ð%î¶ïO§ô�ð*î¶ïL5îyïHÃî"sð%îyïFøî"sð4îyïE-ô�€ î"sô�ìð/îyïCcô�€î"sô�ð-î¶ï?ñô�«ð)ô�¬ð;î¶ï>&ô�©ð2ô�ªð.î¶ï<\ô�—ðVô�˜î¶ï:‘ô�ðAî¶ï7ô�˜q pð2ô�™î¶ï5Uô�“ ô�”ð]î¶ï3Šô�–ô�—ðLî¶ï1¿ô�î¶ï.Mô�ÃðBô�Äî¶ï,ƒô�ðFî¶ï(=qî¶ï$Ëpî+ï$tþ�ï$Ë�î!/ï$tþ�°�ï$Ë� î)+ï$tþ�ç�ï$Ë�î1ï$tþ�°�ï$Ë�î¶ï# îÂï"ªþ�ï#�îÆï"ªþ�°�ï#� î$Âï"ªþ�ç�ï#�î,¥ï"ªþ�°�ï#�î¶ïkô�Žqpqpqpô�î¶ï¡ô�²ô�³ðIî¶ïÖô�Öð,ô�×ð,î¶ïô�² ô�³ðPî¶ïšô�ÃðDô�Äî¶ïÏô�ð<ô�®ð#î¶ïô�ô�ðAî¶ï:ô�ˆð[î¶ïoô�ô�ŽðDî¶ï ¥ô�ô�ŽðLî¶ïÚô� ÿ� ������|����¶“<ñ\xl��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Dorado Hardware ManualDisplay ControllerAugust 1, 19858224Bit mode, used in conjunction with BBypass mode, is used to run a three-channel color displaydirectly from memory. In this mode, items from the A channel alternately address the Mixer(called the AMap in this mode) and another 256 x 8 RAM called the CMap. Meanwhile, the Bchannel runs at half the A channel rate and addresses the BMap as described above. (That is, theB channel must be set to one-half the resolution of the A channel.) With suitable values in thecolor maps, the AMap, BMap, and CMap independently generate outputs for the red, blue, andgreen DACs respectively.After routing as dictated by the mixer modes, chosen items are loaded into the map addressregisters, causing the color maps to produce a new video value every pixel clock (every two pixelclocks in 24Bit mode), and these values are latched in the three 8-bit mixer output registers.Three very fast DAC modules then produce a Red-Green-Blue triple of analog signals for a colormonitor, or up to three grey-level video signals. In conjunction with the sync, blank, andcomposite waveforms produced by the monitor control circuitry, these signals can drive a widevariety of monitors attached to the Dorado.Alto Video InterfaceA small circuit on the DispY board produces video for an Alto monitor. This circuit ORsCursorData, AItem[0], and BItem[0], then XORs by the polarity, and finally ORs with the verticaland horizontal blanking signals.This interface was originally designed and used for the small Alto type of display on the firstDorados. There is a ECO out to wire the LF display data from the MiniMixer to the old Altodata because of a slow path in the MiniMixer.Date: Tue, 2 Jul 85 11:01 PDTFrom: Vest.PASubject: DispY ECOTo: DoradoCore^.paReply-To: Vest.PAThere is a problem with the DispY board when running a black and white display only. The MiniMixer on page 20 of the DispY board will sometimes pick bits when the Dorado is first turnedon. It usually goes away in a couple of minutes, but not always.The problem is best seen when running the CRT test from the net with the alternate pixel on andoff pattern. If you cool the MB 7071 chip at location f04 the display will usually go fuzzy andsometimes completly black.Here is the change:Cut and lift C05.6Add wire from C05.6 to e03.15Remove MB 7071 chip at location f04.Mark the board Revision DDMiniMixer������������������������������������������������������������������������������������������������������������������������������������������������������������î¶ïfªpô�€î" qî3fpô�îG?ïfñî¶ïbô�ˆðDô�‰î¶ï`Sô�¹ô�ºð=î¶ï^‰ô�™ð0ô�šð)î¶ï\¾ô�‡ô�ˆðIî¶ïZóô�ô�žðKî¶ïY)ô�¡ðPô�¢ î¶ïW^ô�î¶ïSìô�ÉðZî¶ïR"ô�”ð.ô�•ð3î¶ïPWô�Éô�ÊðHî¶ïNŒô�ð^î¶ïLÂô�âð[î¶ïJ÷ô�µðVô�¶î¶ïI-ô�ð+î¶ïDçqî¶ï@¡pô�Ôð1ô�Õð'î¶ï>×ô�ð>ô�Žð"î¶ï=ô�î¶ï9wô�¹ð*ô�ºð5î¶ï7¬ô�ªð'ô�«ð3î¶ï5âô�ð-î¶ï2Lî¶ï0‚î¶ï.·î¶ï,íî¶ï+"î¶ï'ô�†ð]î¶ï%Âô�£ð\î¶ï#øô�ð@î¶ï bô�†ð2ô�‡ð-î¶ï˜ô�«ðJô�¬î¶ïÍô�î¶ï8î1ï£î1ïØî1ï ð$î¶ïxî¶ï ãq� ������ d����¶ œ=ñ]o�÷������������������Dorado Hardware ManualDisplay ControllerAugust 1, 198583A small video mixer on the DispY board, not to be confused with the large Mixer on the DispMboard, can drive either a DAC or the seven-wire interface discussed later. The MiniMixer is a 256word x 4-bit RAM addressed by a combination of AItem, BItem, and state bits, as shown inFigure 14. On every pixel clock, dDAC[0:3] are loaded from MiniMixer output, while dDAC[4:7]are loaded directly from AItem[4:7]. The MiniMixer aims at experiments with mixing channelsand driving grey level monitors.Horizontal and Vertical ControlEvery monitor requires horizontal synchronizing and blanking waveforms. Interlaced monitorsmust be able to distinguish fractions of a scan line to implement interlacing. In general, theduration and phasing of sync/blank waveforms is unique to a given monitor. The DDC uses the1024-word x 3-bit HRam (Horizontal RAM) to control horizontal sync/blank.The DDC has a set of registers called the CLCB (Current Line Control Block) which controlsvideo generation for the current scan line. The DHT sets up parameters for the next scan line inNLCB (Next Line Control Block), a 16-word x 12-bit RAM. The first 32 pixel clocks ofhorizontal blanking are called the HWindow; during HWindow parameters for the next line arecopied from NLCB into CLCB. Vertical control is also handled through the NLCB.The interpretation of fields in NLCB and HRam are shown in Figure 15 and loading will bediscussed in the "Slow IO Interface" section; the use of the different information is discussed here.The top part of Figure 14 shows how horizontal timing is controlled.Line Control BlocksThe fields in NLCB/CLCB are interpreted as follows, where a denotes that the item is channel-specific (i.e., copies exist for both A and B channels):aPolarity. A single bit, used only for binary monitors, that inverts black and white(APolarity and BPolarity are or'ed by the hardware).aResolution. A 2-bit field that controls item clock generation; values of 0, 2, and 3cause quarter, half, and full resolution, respectively.aItemSize. A 4-bit field unary encoded as aSize1, aSize2, aSize4, or aSize8, denotingbits/pixel for the channel; setting multiple bits is illegal.aLeftMargin. A 12-bit field in units of pixel clocks specifying 31 less than the numberof pixel clocks to wait after HWindow completes before turning the channel on. Thisvalue is not a straightforward constant, but depends upon monitor-specific horizontalblanking time. If the horizontal blanking time is B pixel clocks and the desiredbeginning of data is L pixel clocks after the end of horizontal blanking, thenaLeftMargin should be loaded with B+L3231 = B+L63, independent ofresolution. Since L may be 0, this implies that the horizontal blanking time for themonitor must be greater than 63 pixel clocks. Since high-speed monitors typically havegreater than 4 ms horizontal blanking times, and are this fast only with high speed pixelclocks, this restriction is not expected to be significant.������������������������������������������î¶ïfªpô�€î" qî3fpô�îG?ïfñî¶ïbô�ð+ô�ð1î¶ï`Sô�‚ð\ô�ƒî¶ï^‰ô�ÁðFô�Âî¶ï\¾ô�‡ ô�ˆðSî¶ïZóô�ªðGô�«î¶ïY)ô�î¶ïTsî¶ïPžpô�Âô�ÃðOî¶ïNÓô�Âð_î¶ïMô�‘ð"ô�’ð:î¶ïK>ô�qpð3î¶ïGÌô�´ô�µð#qpð,î¶ïFô�Žð<ô�ð%î¶ïD7qpô�âð%ô�ãð,î¶ïBlô�ªð"ô�«�qpð1î¶ï@¡ô�ðOî¶ï=/ô�¼ðPô�½î¶ï;eô�€ð5ô�ð0î¶ï9šô�ðDî¶ï5Uqî¶ï1ãpô�›ð:u�pô�œî¶ï0ô�ð8îyï,Oþ�ñ�ï,¦u�îjï,Oþ™�ï,¦pô�É ô�ÊðAîyï*Ûô�ð4îyï'þ�ñ�ï'iu�îjï'þg�ï'ip ô�¾ð#ô�¿ð(îyï%Ÿô�ð7îyï!Öþ�ñ�ï"-u�îjï!Öþ(�ï"-pô�Ÿð"u�pu�pu�pô� u�pîyï bô�ð=îyï™þ�ñ�ïðu�îjï™þÊ�ïðp ô�šô�›ð3îyï&ô�¬ð%ô�ð/îyï[ô�Îð,ô�Ïð)îyï‘ô�ñðQîyïÆôð#ôð+îyïûu�pôôð/îyï1ô�ÂðMô�Ãîyïfô�œð4ô�ð#îyï›ô�—u�pð.ô�˜îyïÑô�ð;ÿ� ������Ö����¶Š=ñ[l��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Dorado Hardware ManualDisplay ControllerAugust 1, 198584Note: For a monitor connected via the 7-wire interface, aLeftMargin must be B+L68, ratherthan B+L63, because video signals are delayed from horizontal control waveforms by 5 pixelclocks.Note: The value loaded into aLeftMargin must actually be the negative of the left margin countcomputed above.aWidth. A 12-bit counter that counts at the pixel clock rate as soon as the channel turnson; when the counter runs out (or when horizontal retrace starts, whichever is earliest),the channel is turned off. Precisely, if the channel is to run for W pixel clocks, the widthcounter must be loaded with (W+255).aFifoAddr. An 8-bit quantity pointing to the munch and word within the munch for thefirst FIFO read for the next scan line; this must be an even number becausedoublewords are fetched from the FIFO. Firmware must keep track of the number ofused munches for any given line and advance aFifoAddr by exactly the right amount,adjusting for munch boundaries, interlacing, and data breakage. The CLCB register foraFifoAddr is the channel read pointer itself.MixerModes. A set of bits that control the mixer; these are not channel-specific. Thesewill normally be changed infrequently, maybe at the field rate or during displayinitialization. However, they are in the NLCB to allow modes to change on the fly.Vertical Control Word (VCW). A word controlling the vertical retrace operation of themonitor; it contains the vertical blank bit, vertical sync bit, and interlace field bitdiscussed in the "Vertical Waveform Generator" section below.Cursor and CursorX. The 12-bit CursorX value is loaded into a counter which startscounting at the end of HWindow. When the counter runs out, the 16-bit Cursor value isshifted out onto the CursorVideo line. This is used by the Alto video interface and inthe MiniMixer address. Precisely, if horizontal blanking is B pixels in duration, and theleftmost bit of the cursor is to appear X pixels beyond the end of horizontal blanking,then the CursorX register must be loaded with (B+X+226), or (B+X+221) whenusing the 7-wire interface.Horizontal Waveform GeneratorThe 1024-word x 3-bit HRam contains control information for these waveforms. Under normaloperation, HRam is addressed by a 12-bit counter (HRamAddr[0:11]) which is reset at the leadingedge of horizontal sync and then increments every pixel clock until the next leading edge ofhorizontal sync; HRamAddr[1:10] address the RAM, and the output is loaded into the HRamOutregister every other pixel clock. The three bits in HRamOut control horizontal sync, horizontalblank, and half-line; these three bits are combined and level shifted by a logic networkappropriate for the monitor being driven.The 1024-word HRam imposes the uninteresting restriction that there be fewer than 2048 pixels/scan line.As shown in the diagram at the top of Figure 14, horizontal blanking (HBlank) is true from theend of one scan line to the beginning of the next. During horizontal blanking, HSync is turnedon to initiate the horizontal retrace and turned off again when horizontal retrace is finished.HBlank then continues for a monitor-specific interval. Note that if a channel's visible left marginÿ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������î¶ïfªpô�€î" qî3fpô�îG?ïfñî;ïbvtô�—ô�˜u�tð!î;ï`šô�™ô�šðOî;ï_9î;ï\wvtô�Œu�tvtô�î;ïZóô�îyïWNþ�ñ�ïW¥u�îjïWNþ½�ïW¥pô�ƒô�„ðPîyïUÚô�£ðYîyïTô�ð;ô�‚ð"îyïREô�ð%îyïN|þ�ñ�ïNÓu�îjïN|þ–�ïNÓpô�‚ð.ô�ƒîyïMôôð4îyïK>ô�¤ðQîyïIsô�¬ð,u�pô�îyïG¨ô�œð5ô�ð!îyïEÞu�pô�ð,îyïBþ�ïBl ô� ô�‘ð(qpîyï@¡ô�ð9ôîyï>×ô�¾ðGô�¿îyï;þ¯�ï;eô�ð4ô�žîyï9šô�êðSô�ëîyï7Ðô�ð=îyï4þ¹�ï4^ô�¶ð:ô�·îyï2“ô�…ô�†ðCîyï0Èô�¢ðTô�£îyï.þô�”ðEô�•îyï-3ô�¦ô�§ðKîyï+iô�žô�Ÿð.îyï)žô�î¶ï%Xqî¶ï!æpô�§ð#ô�¨ð7î¶ï ô�‹ð_î¶ïQô�Çð1ô�Èð+î¶ï‡ô�‘ð8ô�’ð"î¶ï¼ô�¨ðDô�©î¶ïñô ôðNî¶ï'ô�ð)îyïetô�žðFô�Ÿð"î¶ïpô� ô�žðSî¶ïLô�›ô�œðYî¶ï ô�Ïð)ô�Ðð6î¶ï·ô�Žð]ô�ÿ� ������°����¶p=ñ\›p������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Dorado Hardware ManualDisplay ControllerAugust 1, 198585is non-zero, then the horizontal scan will begin before that channel is producing any data; in thiscase, the video channel outputs zero items to the mixing stages until the channel is turned on.Due to an implementation error, when the 7-wire interface is being driven from DispY, the value ofHBlank[i] may differ from HBlank[i1] only when i is even, where i is HRamAddr[1:10].Vertical Waveform GeneratorOnly 2:1 interlaced monitors are supported in this design, but more complicated vertical controlcould be provided, if desired. To support 2:1 interlace, HRam contains a waveform calledHalfLine, which is a pulse at the horizontal line frequency, 180o out of phase with HSync.Vertical control is handled by DHT through the NVCW word in the NLCB, which specifieswhether or not vertical blank or retrace should begin or end during the next scan line. The DHTmicrocode must keep track of scan lines to enable vertical signals at the appropriate times.The three VCW bits are called VBlank, VSync, and OddField. VSync enables vertical sync tobegin on the next line, and the OddField bit chooses either HSync or HalfLine on which to dovertical syncing (OddField=1 implies HalfLine phasing for vertical sync). This phase willalternate from the start of the line to the middle of the line and back for successive fields. Theblanking signal for the monitor is VBlank ORed with HBlank.Pixel Clock SystemThe programmable pixel clock on the DispM board, if present, determines the fundamental videodata rate for a given monitor. The pixel clock is controlled by loading the PixelClk register viathe slow I/O system. Seven-Wire Video InterfaceSo that a number of different controller and terminal types may be freely interconnected inDolphin and Dorado-based systems, a common interface between terminals and controllers hasbeen defined. This interface assumes that a terminal contains a raster-scanned bitmap display andone or more low bandwidth input devices (keyboard, pointing device, etc.) The DDC transmitsdigital video and sync to the terminal over six pairs of a seven-pair cable. The input data isencoded by a microcomputer in the terminal and sent back serially over the seventh pair (the"back channel"). Video and control (sync) are time-multiplexed, and four bits are transmitted inparallel to reduce the cable bandwidth required.While the description in the following sections assumes a display having one bit/pixel, the basicsignalling mechanism may be extended to support gray-level or color displays.Video OutputThe four output lines are interpreted as either a 4-bit nibble of video or four control signalsaccording to the phases of the two clock signals; the DDC places data on the data lines at thefalling edge of ClkA, and the terminal samples this data on the rising edge of ClkA. If ClkB is 1at this time, the nibble is interpreted as four bits of video, else as sync and control information.ÿ����������������������������������������������������������������������������������������������������î¶ïfªpô�€î" qî3fpô�îG?ïfñî¶ïbô�’ð7ô�“ð,î¶ï`Sô�±ð1ô�²ð.îyï]’tô�ÄðBô�Åîyï\1v�tô�v�t v�tv�tî¶ïXqî¶ïTpô�¥ðXô�¦î¶ïRÒô�Üô�ÝðGî¶ïPäô�×ð!ô�ØïQq�ïPäî¶ïMrô�Ëð"ô�Ìð3î¶ïK¨ô�‰ð8ô�Šð(î¶ïIÝô�àô�áðIî¶ïFkô�·qpqpqpð!î¶ïD ô�¢ðAô�£î¶ïBÖô�òðUô�óî¶ïAô�›ô�œðKî¶ï?Aô�ð;î¶ï:'sî¶ï6µpô�ð]î¶ï4ëô�¡ðHô�¢î¶ï3 ô�î¶ï.sî¶ï*•pô�Òô�Óð>î¶ï(Êô�º ô�»ðOî¶ï'�ô�ˆ ô�‰ðTî¶ï%5ô�£ð;ô�¤ð!î¶ï#jô�»ðWô�¼î¶ï! ô�ºðAô�»î¶ïÕô�—ðaî¶ïô�ð0î¶ï™ô�¢ô�£ðEî¶ïÎô�ðMî¶ïˆqî¶ïpô�Äð_î¶ïLô�¬ðHô�î¶ï ô�‹ô�ŒðIî¶ï·ô�Ÿô� ð]� ������œ����¶p=ñ\› ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Dorado Hardware ManualDisplay ControllerAugust 1, 198586ClkA and ClkB are transmitted in quadrature so that the terminal can reconstitute a clock at thevideo bit rate.When a nibble is interpreted as control information, bit 2 is reserved for horizontal sync and bit 3for vertical sync, while 0:1 are undefined; different types of terminals may use 0:1 for anypurpose.A circuit on the DispY board drives the seven-wire interface from the MiniMixer/Alto data.MinMixer[0]/Alto data is serial-to-parallel converted into four-bit nibbles, which are held in aregister for transmission. Sync, blank, and clock phases are generated in accordance with theseven-wire interface specification.Back Channel (Keyboard data)Data from low bandwidth input devices (keyboards and mouse) at the terminal are transmittedserially over the back channel. Data are clocked by the terminal on the rising edge of thehorizontal blank pulse and are sampled by DHT during the subsequent scan line after HWindow.The terminal microcomputer perpetually cycles through all possible keys on the keyboard (as wellas mouse buttons and keyset paddles), detecting changes in state of the keys; the state of thekeyboard then exists in seven 16-bit words, and a back channel message is defined for each.Whenever one of these words changes value, it is sent to the Dorado in a message. Table 24: Terminal Microcomputer MessagesMessageTypeComments00BIllegalignored01BKeyboard word 0 (corresponds to Alto memory location 1077034B)02BKeyboard word 1 (Alto 177035B)03BKeyboard word 2 (Alto 177036B)04BKeyboard word 3 (Alto 177037B)05BMouse buttons and keyset (Alto 177033B)06B8-bit changes in X-coordinate (0:7 of the message body) and Y-coordinate (8:15 of themessage body), represented in excess-200B notation07BIllegalignored10BKeyboard word 4 (Star keyboards only; no Alto analogue)11BKeyboard word 5 (Star)12B16BIllegalignored17BBoot message. Actually, depressing the boot button jams the data to one continuously, ratherthan generating a valid terminal message. Furthermore, when the boot button is let up, theremay be as many as 8 bits of garbage following the last consecutive one bit; these must beignored by the firmware. The firmware should also ignore boot button pushes less than 10 msin duration, as these may be caused by noise or contact bounce.ÿ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������î¶ïfªpô�€î" qî3fpô�îG?ïfñî¶ïbô�šð\ô�›î¶ï`Sô�î¶ï\áô�‡ô�ˆð^î¶ï[ô�Ùô�ÚðJî¶ïYLî¶ïUÚô�ÐðAô�Ñî¶ïTô�ÄðVô�Å î¶ïREô�Áð9ô�Âð%î¶ïPzô�ð#î¶ïL5qî¶ïHÃpô�²ð0ô�³ð+î¶ïFøô�ÑðWô�Òî¶ïE-ô�ŽðMô�î¶ïA¼ô�ð`î¶ï?ñô�½ô�¾ðJî¶ï>&ô�Éô�ÊðDî¶ï<\ô�ðSîûï8]wô�Fð)îyï5¾vîyï4^îî’ï1Utîî’ï/‹îô�ð>î’ï-Àîî’ï+öîî’ï*+îî’ï(`îð'î’ï&–îô�Õð;ô�Öîï%5ô�ð2î’ï#jîî’ï! îð7î’ïÕîî’ïîî’ï@îô�ðDô�îïßô�‹ðEô�Œîï~ô�¤ô�¥ðHîïô�€ð2ô�ð*îï½ô�ð?� ������ ����¶š=ñQq��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Dorado Hardware ManualDisplay ControllerAugust 1, 198587Processor Task ManagementThis section outlines the implementation requirements of DHT and DWT and discusses thehardware associated with task wakeups and DWT subtask arbitration between the two channels.Since DHT must do a lot of processing, it runs at low priority and is awakened once/scan line atthe end of HWindow.DWT is a very high priority task which may run on behalf of either channel: channel A issubtask 0; channel B, subtask 2. Since it uses the subtask mechanism, DWT must always block atthe same instruction each iteration.DWT lowers its wakeup request at the onset of the DWTStart instruction, and the DDCremembers that DWT is in progress. No further DWT wakeups will be generated while the taskis running or is preempted by a higher priority task. Whenever DWT blocks, a counter isinitialized to a constant value N and counts once per Dorado cycle; when the counter runs out,DWT wakeups are allowed again. This counter has two purposes. First, within a munch loop itspaces out IOFetch references to the memory system by 8 or more cycles (depending upon N,which is adjustable through a hardware SIP component), so as not to clog the memory pipeline.Second, the decision to generate subsequent DWT wakeups is based upon the state of flags thatmay be altered by output commands; these commands take time to get from the processor to theDDC and alter the state. Other tasks may have the processor while these state changes take effect.After N cycles have elapsed, DWT will be woken whenever aWantsDWT is true for one of thechannels. Two channel-specific flags are involved in DWT wakeup control: aCurrentWCBFlag istrue when a is actively moving words into the FIFO; aNextWCBFlag is set true by DHT after ithas loaded the munch address and munch count into DWTnextaddr and DWTnextcount for a.After fetching the last munch for a scan line, DWT clears aCurrentWCBFlag and blocks unlessaNextWCBFlag is true. In other words, aWantsDWT whenIf only AWantsDWT or only BWantsDWT, no conflict arises and the requesting channel getsDWT. However, if both channels want DWT, the channel that ran least recently will run next.Note: Neither DWT nor DHT drives the IOAtten branch condition.Slow I/O InterfaceDDC manages all control functions via the slow I/O system. At this point you should studyFigure 15, which shows the format of the various output and input commands; there are sixoutput devices and one input device on the DispY board, and eight output devices and one inputdevice on the DispM board (if present). Output commands are handled uniformly: TIOA isclocked into a register at t1; the register output is decoded and identified as one of the DDCcommands; if the processor is doing an Output_B, then at t3 IOB data from the processor isclocked into a register and one of the "TIOA command" pulses occurs from t3 to t5, at whichpoint the desired action is complete.The IOB data received at t3 of an Output_B will remain in the DDC buffer register (RIOB) untilthe next output command. This is useful for debugging and for muffler readout of the NLCB(because an NLCB address can be loaded into RIOB for multiple cycles).����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������î¶ïfªpô�€î" qî3fpô�îG?ïfñî¶ïbsî¶ï^¬pô�ßð8ô�àî¶ï\áô�«ð-ô�¬ð.î¶ïYoô�ô�‘ðMî¶ïW¥ô�î¶ïTô�Áô�Âð>î¶ïREô�‡ ô�ˆðUî¶ïPzô�ð$î¶ïLåô�ô ô�õðIî¶ïKô�”ðBô�•î¶ïIPô�ÕðKô�Öî¶ïG…ô�£ð<ô�¤ð"î¶ïE»ô�•ð,ô�–ð1î¶ïCðô�²ðYî¶ïB%ô� ô�¡ð@î¶ï@[ô� ð/ô�¡ð.î¶ï>ô�’ð6ô�“ð&î¶ï<Æô�ð.ô�‚ð5î¶ï9Tô� ð%ô�¡u�pî¶ï7‰ô�ðIô��u�pî¶ï5¾ô� u�pð"ô�Žu�pð'î¶ï3ôô�¬ô�ð7u�p�î¶ï2)ô�¥ð:u�pô�¦î¶ï0_u�pô�ð&u�pî¶ï,íô�Áô�Âð>î¶ï+"ô�£ð$ô�¤ð8î¶ï'°qpô�ð:î¶ï"—sî¶ï%pô�½ð!ô�¾ð9î¶ïZô�Çð(ô�Èð1î¶ïô�ð&ô�Žð8î¶ïÅô�¹ð'ô�ºð1î¶ïúô�¸ïmt�ïúpô�¹ð)î¶ï0ô�½ð:ï£t�ï0pô�¾î¶ïeô�°ô�±ð>ïØt�ïepïØt�ïep î¶ï›ô�ð%î¶ï)ô�‰ô�Š ïœt�ï)pðCî¶ï ^ô�«ðUô�¬î¶ï“ô�ðF� ������|����¶L=ñ\¿\����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Dorado Hardware ManualDisplay ControllerAugust 1, 198588The HRam, MiniMixer, Mixer, BMap, and CMap are RAMs that will generally be loaded duringsystem initialization and not often changed while pictures are being displayed. The programmablepixel clock will also be loaded during initialization, if it is being used instead of the fixed crystaloscillator.The HRam, Mixer (AMap), BMap, and CMap addresses each have two independent sources: theDorado slow io system and the video system. Video system addressing is disabled during loadingfrom the Dorado. The output commands to each of these RAMs are interpreted as follows: TheKeep' bit is saved in a flipflop loaded by every RAM output command; as long as Keep' is true(i.e., low), video system addressing is off. If LoadAddr is true, then IOB[4:15] are loaded into theRAM address register. If Write' is true (i.e., low), the currently-addressed word of the RAM iswritten from the data field; additionally, the RAM address register increments after writing, so theRAM can be loaded sequentially at high speed. A RAM output command with Keep' false (i.e.,high) releases the RAM from Dorado control and returns it to the video system.The MiniMixer is loaded by a single output instruction that specifies both the address and data tobe loaded. During the command pulse from t3 to t5 of the Output_B instruction, the videochannel address to the MiniMixer is replaced by the address being loaded, so if the video channelis active, garbage may appear at the output during this cycle.The 16-word x 12-bit NLCB is also loaded by single output instructions that specify both theaddress and data. For the NLCB, output instructions are only effective when HWindow is notoccurringduring HWindow the RAM address is supplied by a counter that successively copiesthe NLCB words into CLCB. The format of each of the words in NLCB is shown in Figure 15.Note that any NLCB output operation will dismiss the wakeup request for DHT, and DHT mustnot block any sooner than the fourth instruction after the first NLCB output operation is issued.The Statics output command is used for debugging and initialization. Two bits in the Staticsregister called DHTShutUp and DWTShutUp. Three other fields called FakePClk, UseFakePClk,and MufAddr are used for debugging. When UseFakePClk is true, the regular pixel clock isdegated; if FakePClk is true, then a pixel clock will occur at t5 of the Statics output command;otherwise no clock occurs. Every Statics command also loads the hardware signal addressed byMufAddr into a flipflop (at t5) which can be read by the Status input command discussed below.In combination, the fake pixel clock and muffler readout features allow diagnostic firmware tocheckout most of the internal data paths in the DDCby simulating a very slow pixel clock and"stepping" the DDC through various states, the diagnostic can check nearly all of the data pathsbetween fake pixel clocks. The hardware signals selected by MufAddr[5:11] are given in the tablebelow.ÿ������������������������������������������������î¶ïfªpô�€î" qî3fpô�îG?ïfñî¶ïbô�ð*ô�‘ð.î¶ï`Sô�…ô�†ðHî¶ï^‰ô�˜ðYô�™ î¶ï\¾ î¶ïYLô�–ð!ô�—ð6î¶ïWô�ðWô�î¶ïU·ô�Œð0ô�ð,î¶ïSìô�–ðOô�— î¶ïR"ô�ˆð$ô�‰ðAî¶ïPWô�¤ð(ô�¥ð8î¶ïNŒô�†ð:ô�‡ð*î¶ïLÂô�“ô�”ðTî¶ïJ÷ô�ðNî¶ïG…ô�‰ð*ô�Šð8î¶ïE»ô�Ãð)ô�ÄïE.t�ïE»pïE.t�ïE»pð'î¶ïCðô�‰ð/ô�Šð2î¶ïB%ô�ð>î¶ï>³ô�½ð\î¶ï<éô�ªô�«ðAî¶ï;t�pô�®ð*ô�¯ð&î¶ï9Tô�“ð:ô�”î¶ï7‰ô�“ð;ô�”î¶ï5¾ô�›ð@ô�œð!î¶ï2Lô�¾ô�¿ðCî¶ï0‚ô�†ô�‡ð5qpq p�î¶ï.·ô�Ãqpô�ÄðNî¶ï,íô�£ô�¤ð,ï,`t�ï,ípî¶ï+"ô�©ô�ªðKî¶ï)Wô�’ï(Êt�ï)Wp�ô�“ð?î¶ï'ô�·ô�¸ð@î¶ï%Âô�›ð+ô�œt�pð)î¶ï#øô�ð`î¶ï"-ô�Šðaî¶ï bÿ� ������Ð����¶ =ñGð-��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Dorado Hardware ManualDisplay ControllerAugust 1, 198589Table 25: DDC Muffler SignalsMufAddrSignalMufAddrSignal 0ACurrentWCBFlag 70AFifoFull 01:07AReaderPtr[1:7] 71BFifoFull 10ANextWCBFlag 72ASize8 11:17AWriterPtr[1:7] 73ASize8-4 20BCurrentWCBFlag 74ASize8-4-2 21:27BReaderPtr[1:7] 75BSize8 30BNextWCBFlag 76BSize8-4 31:37BWriterPtr[1:7] 77BSize8-4-2 40:47AItem[0:7] 100AOn 50:57BItem[0:7] 101BOn 60:63AServicePtr[1:4]102:103ARes[0:1] 64:67BServicePtr[1:4]104:105BRes[0:1] 106MonitorTypeMuffler 106 (MonitorType) is the only one of interest during normal operation. It identifies thetype of monitor connected via the 7-wire interface: zero denotes an Alto-style monitor (not usedsince 1982); one denotes an LF (large format) monitor.A single input device called Status is implemented. It is used to return the currently selectedmuffler bit and the seven-wire interface received data bit.The MapInLo and MapInHi input devices read the current values output from the color maps(Mixer, BMap, and CMap, whichever are active). When the color maps are controlled by thevideo system, these outputs change too rapidly for reading them to be useful (unless the DDC isbeing single-stepped by means of UseFakePixelClk). However, when the color maps arecontrolled by the Dorado, this input device can be used to read out the color map entriesaddressed by their respective RAM address registers.MapInHi[0] is the 7-wire terminal input bit for the independent terminal interface on DispM; itsposition corresponds to Status[0] on DispY (see below). MapInHi[1] is a constant 1 if a DispMboard is installed; if DispM is not installed, an Input from the nonexistent register yields a zerovalue. This enables microcode to detect the presence or absence of a DispM board.MapInLo[0:3] are a 4-bit color monitor type jumpered on the Dorado backpanel.Note: the MapInLo and MapInHi input devices do not generate IOB parity, so they must be read by thePd_InputNoPE function to disable parity checking.ÿ������������������������������������î¶ïfªpô�€î" qî3fpô�îG?ïfñî Kïbsô�Xîyï^¬qî î)Wî0ìîyï[:pô�€î î)Wî0ìîyïYoî î)Wî0ìîyïW¥î î)Wî0ìîyïUÚî î)Wî0ìîyïTî î)Wî0ì îyïREî î)Wî0ìîyïPzî î)Wî0ìîyïN°î î)Wî0ì îyïLåî î)Wî0ìîyïKî î)Wî0ìîyïIPî î)Wî0ìîyïG…î î)Wî0ìî)WïE»î0ì î¶ïBIô�›ð)ô�œð8î¶ï@~ô�žô�ŸðGî¶ï>³ô�ð6î¶ï;Aô�·ð`î¶ï9wô�ð;î¶ï6ô�³ðMô�´ î¶ï4:ô�¶ð!ô�·ð8î¶ï2pô�—ðTô�˜ î¶ï0¥ôð!qpôð!î¶ï.Úô�Ûð?ô�Üî¶ï-ô�ð4î¶ï)žô�™ðUô�š î¶ï'Óô�£ð7ô�¤ð'î¶ï& ô� ðUô�¡ î¶ï$>ô&ô'ð>î¶ï"sô�ðMîyï²vtô�™ðZô�šîyïQô�ð1ÿ� ������Ü����¶.=ñIÝ&����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Dorado Hardware ManualDisplay ControllerAugust 1, 198590DispM Terminal InterfaceThe independent terminal interface on the DispM board functions much the same as a single-channel DispY board, but is specialized to driving a binary monitor via a 7-wire interface. Thedata path is one bit/pixel; the resolution is full; there is no MiniMixer; and the horizontalwaveforms are fixed by a PRom (which must be changed when a different type of 7-wire terminalis installed).Aside from these limitations, the DispM terminal interface operates almost identically to the Achannel of DispY. In particular, the I/O addresses are grouped parallel to the ones on DispY,and the data formats are identical; so a microprogram can initialize TIOA to the correct group andsubsequently use the function that changes only TIOA[5:7] to select registers within that group.This enables practically all the microcode for driving a 7-wire terminal to be shared betweenDispY and DispM.In Figure 15, the DispY io operations that are also defined for DispM are marked with anasterisk. Note that outputs to unused NLCB addresses are ignored.Note: DispM does not have a muffler system. In particular, the MonitorType muffler value is always readfrom DispY. By convention, this refers to the type of 7-wire terminal attached to the Dorado, whether thatterminal is connected to DispY or to DispM. Also by convention, the 7-wire terminal is always connectedto DispM if DispM is installed.������������������������������������������������������������������������������î¶ïfªpô�€î" qî3fpô�îG?ïfñî¶ïbsî¶ï^¬pô�·ðRô�¸î¶ï\áô�¢ðGô�£î¶ï[ô�Øð9ô�Ùð$î¶ïYLô�‡ð,ô�ˆð1î¶ïWô� î¶ïTô�µð]ô�¶î¶ïREô�©ðTô�ª î¶ïPzô�€ð&ô�ð<î¶ïN°ô�ð*ô�®ð6î¶ïLåô�Èð8ô�Éð%î¶ïKô�î¶ïG¨ô�Òð?ô�Óî¶ïEÞô�ðBîyïCvtô�ðFô�‘îyïA¼ô�‡ð3ô�ˆð8îyï@[ô�“ðhîyï>úô�� ������²����¶>×=ñ)4�™��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������15141312111098765432100123456789101112131415D1Ethernet.silFigure 16Ethernet ControllerOutput_BTIOA = 016EthCEthCPd_InputTxCmdEnbl'TxOnTxEOPTxCntDwnRxCmdEnbl'RxOnRxBOP'--TestCmdEnbl'LoopBackNoWakeupsSingleStepTestClockTestColl'TestDataReportCollsHost Address<>RxOnTxOnLoopBackTxCollNoWakeupsTxDataLateSingleStepTxFifoPETxCmdEnbl' enables setting of TxOn and TxEOPRxCmdEnbl' enables setting of RxOn and RxBOP'TestCmdEnbl' enables setting of LoopBack, SingleStep, NoWakeups, TestClock, TestColl', TestData,and ReportCollsHost Address is set by backpanel jumpersPDInputPDNewPDOldEClkEClkEClkFSMPDCarrierPDEvent[0:1]0 No event1 Collision2 Data 03 Data 1PhaseDecoderReceiverFSMRxCollisionRxEOPRxSync'RxIncTransRxCRCResetRxCRCClkRxDataRxCtrl[0:1]RxSRFull'EClkSR1EClkRxDataRxEOPReceiverFIFOefdccdfe211616-wordx 19-bitRAMT1ParityEthData.18IOAtten18EthData[0:17]T1T1IOB18RAM16-wordFIFORxFifoRdPtrRxFifoWrtPtrTxFifoRdPtrTxFifoWrtPtrx 18-bit18TransmitterT118SR1TxDataTxCRCEnblRxDataRxCRCClkRxCRCResetRxCRCErrorCRCTxCRCClkCheckTxOffT1TxFifoPECRCGenFSMTransmitterTxCRCEnblTxCRCClkTxGoneTxGoTxDataTxSRCtrl[0:1]TxEndTxAbortTxStartTxSREmptyGotTxBitwire-orPhaseEncoderTxOffXcCollisionRxCollisionTxGoPEOutputTxCollisionGotTxBitTxCollisionTxOffTxFifoPETxDataLatedcTxAbortabTxFifoEmptyTxEOPTxEnddcTxFifoFullTxEOPbaPDCarrierTxStartReceiverTransmitterRxCollisionRxDataLateRxCRCErrorRxIncTransPd_Input1514131211109876543210EthDTIOA = 015RxCollisionRxDataLateRxCRCErrorRxIncTrans------------------------8/30/81(Receiver status word following end-of-packet)���î=ôï$eþ�$îÖï$eþ�$îKtï#ðîGï#ðîC;ï#ðî?Wï#ðî;tï#ðî7ï#ðî3óï#ðî0ï#ðî,,ï#ðî(Hï#ðî$eï#ðî ï#ðîï#ðîºï#ðîÖï#ðîòï#ðîIŸï$eþ�$îE»ï$eþ�$îA×ï$eþ�$î:ï$eþ�$î2Iï$eþ�$î.eï$eþ�$î*ï$eþ�$î"ºï$eþ�$îóï$eþ�$î+ï$eþ�$î6,ï$eþ�$î&žï$eþ�$îï$eþ�$îHï$Ïþ�$îHï$Ïþ>^�$îM‚ï$óþ�$äîHï(³þ>;�$î¹ïOþ>;�$îLôïþ�$äî¹ïkþ>^�$î¹ïkþ�$îïþ�$î&ïþ�$î5žïþ�$îïþ�$îdïþ�$î",ïþ�$î)óïþ�$î-×ïþ�$î1ºïþ�$î9‚ïþ�$îAIïþ�$îE-ïþ�$îdï+ðîHï+ðî+ï+ðîï+ðîóï+ðî#Öï+ðî'ºï+ðî+žï+ðî/‚ï+ðî3eï+ðî7ï+ðî:åï+ðî>Éï+ðîBï+ðîFï+ðîJtï+ðîHïþ�$î=fïþ�$îBôuïðî%:rïŽð î!åïäðîÇpï$óðî9ï(Hð î+ï&žðîïðî9ïÖðîòtï'sðîdï&Wðîdï%:ðîºï&Wðîï&WðîVï'sðîï&Wðîï%:ðîóï'sðî¬ï&Wðî¬ï%:ðî#ï&Wðî&åï&Wðî+åï&Wðî/:ï'sðî/:ï&Wðî/:ï%:ðî3ï&åðî3ï%Èðî;tï'sðî:åï&Wðî;-ï%:ðî6tï&åðî6»ï%Èðî>‚ï&åðî>‚ï%ÈðîBfï&åðîBfï%ÈðîFï&åðîFï%ÈðîIŸï&åðîJtï%Èðîdïóðî�ï]þ�$î!žï]þ9�$î�|ïðî,ºïðî.etïóðî2Iïóðî6,ïðî6,ïdðî9Éïóðî>Éïðî>;ïóðî>‚ïÖðîBïðîBïóðîBïÖðîE»ïðîFïdðîJ-ïðîIæïóðîJ-ïÖðîïð,îï¬ð-îï!åð`îrï ÈðîÈïð(îIïþ�$îòïb5þ«�$î€ïbXðî ïcàþ€�$îï`õþ�$î ï`Ñþ¤�$î ï`Ñþ�$2îïb5þd�$îï`Ñþ�$2îï`Ñþ¤�$îï`õþ�$îïcàþ€�$îsïcàþ€�$îóï`õþ�$îsï`Ñþ¤�$îsï`Ñþ�$2îïbXðîïb5þr�$îóïb5þ+�$îïbXðî äuïdJðîÈïdJðîºïdJðîòï`gþ�$òîòï`Cþ +�$îïcàþ�$îï^ßþ@�$îï^ßþ�$$î!tï_‘ðî&Wïbð î&Wï`®ðî%:ï`Šþä�$î%:ïaîþä�$î%:ï_þ�$�î&žï_ðî&žï]çðî&žï\Êð î&žï[®ð î ÈïbXðî :ï`õðî.ïcàþd�$î4‚ïWƒþ�$€î.ïW_þ‡�$î.ïW_þ�$¤î/:ï^.ðî0Wï]ðî4‚ïcQþ +�$î5žïcuðî4‚ï`Šþ r�$î5žï[ðî5žï`®ðî4‚ï_'þ +�$î4‚ï]Ãþ r�$î4‚ï\_þ r�$î4‚ïY˜þ r�$î4‚ïX5þ r�$î5žï_Jð î5žï]çð î5žï\ƒðî5žïbðî5žïY¼ðî5žïXXð î�uïZ‘ðî ïWþ�$2î ïWþ¤�$îïW<þ�$î ïZ&þ€�$î tïXðî9ïXþ�$îòïY.ðîïX|þ€�$î VuïSŸðî ïP&þ�$2î ïP&þ¤�$îïPJþ�$î ïS4þ€�$î«ïXþ�$îïQŠþ€�$îïZ&þŽ�$îïPJþ�$ �îïP&þ²�$îïP&þ�$ $î4‚ïaîþ +�$î4‚ïZüþ r�$îòïX|þ�$î9tïXŸðîòïQŠþ�$î9ïQðîïWÊðîºïVfðîº|ïFYðîºïFYðîHïFYðîHïFYðîïHíþ«�$îïS¯ðîïS¯ðîïS¯ðîïS¯ðîdïUJþ�$UîÖïVCþ9�$î«ïUØþ�$îdïShðî«ïQþ�$îdïNöðîïUèðîtïT¼ðîäïSŸðîºïRƒðîïUmþr�$îïQŠþ�$îºïP&þ�$2îºïP&þ¤�$î :ïPJþ�$îºïS4þ€�$îuïSŸðîòtïSŸðî :ïQŠþ�$î!ïQð î(×uïQðî!ïT þ�$2î!ïT þ¤�$î#ïT-þ�$î!ïWþ€�$îsïUþ�$îä|ïRÚðî$¬tïU‘ð î#ïUmþ ��$î!åuïWƒðîºï\þ�$îÖïZJþ�$òîºïZØþ�$€îòïBBþ�$2îòïBBþ¤�$îrïBfþ�$îòïEPþ€�$îòïC¦þ��$îÈïE»ðî€tïCÉðî �ïC;þ�$î r|ïAðîäïH;þ�$€îïGþ�$òîäïI{þ�$îätï?æðîÈïBðîäïCÉðî9ï>íþ�$Àî9ï>íþ²�$îÈï?þ�$î9ïG‰þŽ�$îÈï\ÊðîÈï[fðîï\§þ9�$îï[Cþ9�$îòïJ-ðîòïHÉðî«ïH¦þ9�$î«ïJ þ9�$îïAðîrïC¦þÇ�$îïC;þ�$î�|ïAðîtïFðîVïDæðîÈïC¦þÇ�$îïEPþ€�$îïBfþ�$îïBBþ¤�$îïBBþ�$2îduïE»ðîsïC;þ�$î+|ïAðîtïC;ðîäïC;þ�$î|ïAðîºtïCÉðîºïAIþ�$€îï?æð îHï?Âþd�$îºïA&þò�$î0åïT þ�$î0åïR¦þ�$î0åïQCþ�$î1,ïT-ðî1,ïRÊðî1,ïQfð î9‚ïUmþ�$î=ïPþ�$Žî9‚ïOßþÀ�$î9‚ïOßþ�$²î=ôïRÊð î:WïSŸðîHï>^þd�$îï>‚ðî¬ïBBþä�$î#ï<þ�$dî¬ï;Þþ�$î¬ï;Þþ�$‡î#ï?Âþ�$î9ÉïQôðî=ïR¦þ9�$îHï<ûþd�$îï=ðîïCÉþ�$dîïHíþd�$îsïJ˜þ€�$îóïGþ�$îsïG‰þ¤�$îsïG‰þ�$2îHuïKðîóïHíþŽ�$î ÈtïIðîïGÑþd�$îïJ þ«�$îïIÂþ«�$îïI{þ«�$îïI4þ«�$îïH¦þ«�$îïH_þ«�$îïHþ«�$îdïW_þd�$îdïWþ«�$îdïVÑþ«�$îdïVŠþ«�$îdïVCþò�$îdïUüþ«�$îdïUµþ«�$îdïUmþ«�$î Èï?žðî Èï>‚ðîÈï6—þ +�$îÈï2lþ r�$îÈï3Ðþ +�$îÈï53þ r�$îÈï7ûþ +�$îï4;ðîdï1—þ�$Àîdï1—þ‡�$îdï:4þd�$îï6»ðîÈï5žðîäï8ð îäï6»ðîäï5Wðîäï3óðîäï9‚ðîäï2ð îÈï1ºþ�$î¹ï9‚ðî¹ï8ðî¹ï6»ðî¹ï5Wð î¹ï3óðî¹ï9^þ«�$î¹ï7ûþ«�$î¹ï6—þ«�$î¹ï53þ«�$î¹ï3Ðþ«�$î$¬ï9‚þ�$ GîÈï9^þä�$î#HuïDXðî3¬ï=þ�$Çî-IïDÂþd�$î-Iï<ûþ‡�$î-Iï<ûþ�$ëî.ótïAIðî.eï?žðîïC¦þ9�$î&žïBBþ«�$î&žïBfðî&žï@ßþ«�$î&žïAðî&žï?{þ«�$î&žï?žðî&žï>þ«�$î&žï>;ðî3¬ïCþ�$î4ÉïC;ðî3¬ïA´þ�$î4ÉïA×ðî3¬ï@Pþ�$î4Éï@tðî(Hï:žðî(Hï9;ðî(Hï7×ðî(Hï6tð î(ï6Pþ«�$î(ï7´þŽ�$î(Hï9þG�$î(Hï:{þd�$î.¬ï9Éþ�$�Õî.¬ï9¥þ�Õ�$î.¬ï6Pþ�$�ùî.¬ï7%þ�Õ�$î-ï8ôþ�$�Gî-ï8Ðþ9�$î-ï7´þ�$�kî-ï7ûþ9�$î/:|ï5õðî/:ï5õðî2ï8‰þŽ�$î2×tï8¬ðî/‚|ï0gðî/‚ï0gðî(ï3ÐþÇ�$î(ï2%þÇ�$î(Htï3óðî(Hï2Iðî1ºï2ûþò�$î2ï3ðî,|ï+®ðî,ï+®ðîï/þ«�$îVtï/:ð îï-lþ«�$îVï-ðî/‚|ï,ƒðî/‚ï,ƒðîóï.Aþ�$î tï0ð î :ï/ìþ�$î&Wï1 þ«�$î(ï/:þ�$òî&Wï/þÎ�$î&Wï/þ�$î(ï/ìþ�$î)ï1 þ«�$î*Èï/:þ�$òî)ï/þÎ�$î)ï/þ�$î*Èï/ìþ��$î1ºï/þÖ�$î2Iï/:ðî pïM‚ðî ï*ðîdï_'þ9�$îï\_þ€�$îïZüþ€�$îdtï_Jðîdï]çð îdï\ƒð îdï[ð îï]Ãþ€�$î ï_üþ�Õ�$îrïZJþ�$ÖîIïÖþ�$î9pïðî=fïÖþ�$îHïÖþ�$îJttï�ðîFï�ðîBï�ðî>Éï�ðî:åï�ðî7ï�ðî3eï�ðî/‚ï�ðî+žï�ðî'ºï�ðî#Öï�ðîóï�ðîï�ðî+ï�ðîHï�ðîdï�ðîE-ïÖþ�$îAIïÖþ�$î9‚ïÖþ�$î)óïÖþ�$î",ïÖþ�$îdïÖþ�$îïÖþ�$î5žïÖþ�$î&ïÖþ�$îïÖþ�$î¹ïAþ�$î¹ïAþ>^�$îLôïdþ�$äî¹ï$þ>;�$îpï9ðî9ïäð î/:tïðî-×ï9ð î-×ïÖþ�$î1ºïÖþ�$î7Iïäðî6»ïÈðî6»ï«ðî?ïäðî>‚ïÈðî=ôï«ðîJ»ïäðîJtïÈðîIæï«ðîFïÈðîBïÈðî:åïÈðî3ïÈðî+WïÈðî'sïÈðî#ïÈðî¬ïÈðîÈïÈðîäïÈðîïÈðîïÈðîDXuï«ðî9tï Vð.�������ÿä��9«Kmc¼ 6������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Dorado Hardware ManualEthernet ControllerAugust 1, 198591Ethernet ControllerAn Ethernet is the principal means of communication between a Dorado and the outside world.An Ethernet is a broadcast multi-access packet switched network which can connect up to 256stations separated by as much as 1 kilometer with a 3 mHz channel. The 'Ether' is a passivecoaxial cable to which each station is connected through a transceiver that is high-impedance whenreceiving, low impedance when driving.Read this chapter with Figure 16 in view.Ethernet PacketsEthernet data are encoded in packets. Packets are preceded by a low signal (i.e., silence) on theEther; they begin with a one-bit prefixed by the transmitter, called the start bit. Bits in the packetare phase encoded, where the bit cell time is nominally 340 ns; phase encoded signals have onedata transition per bit cell and its direction (low-to-high = 1) is the value of the bit. Midwaybetween these there may be a setup transition, so that the next data transition can be in the correctdirection.Packets end when no transitions are detected for more than 1.5 bit times and the Ether is low.Collisions are transmissions that overlap in time and cause malformed and undecodable bits.Transmitters jam the Ether with a continuous high for several bit times after participating in acollision. Collisions are of four types: too many transitions, in which two transitions occur within.25 bit times; too few transitions, in which a transition occurs between 1.25 and 1.5 bit times afterthe last one; end-of-packet (EOP), in which no transitions occur for more than 1.5 bit times andthe Ether is low; and jam, which is the same as EOP except that the Ether is high.In a well-formed packet that does not experience a collision, the start bit is immediately followedby an 8-bit destination host number, then an 8-bit source host number. This is followed by anindefinite number of 16-bit data words, a 16-bit checksum, and finally silence.Even when transmitted without a source-detected collision, a packet may fail to reach itsdestination; packets are delivered only with high probability. Stations requiring a lower residualerror rate must follow mutually agreed upon communication protocols.When the sender of a packet detects a collision, some method is needed to arbitrate (withoutcommunication) its use of the Ether with other stations contending for it. The algorithm used onthe Ethernet, called the 'binary exponential backoff collision algorithm,' is discussed in the abovereferences. It involves waiting a random interval and then reattempting transmission. The (ideal)distribution of the random intervals depends upon many factors.��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������î¶ïfªpô�€î",qî3Špô�îG?ïfñî¶ïa×rî¶ï^epô�¡ ô�¢ðPî¶ï\›ô�¸ô�¹ðAî¶ïZÐô�¶ðOô�·î¶ïYô�‚ð0ô�ƒð2î¶ïW;ô�ð&î ïSÉqô�Xð)î¶ïN°sô�î¶ïK>pô�›qpô�œð$î¶ïIsô�‚ð0ô�ƒqpî¶ïG¨ô�¨qô�©pðMî¶ïEÞqô�«pô�¬ðEî¶ïDô�‚qpð,ô�ƒî¶ïBI î¶ï>×ô�«ð^î¶ï=q pô�Øð;ô�Ùî¶ï;Aô�²qpô�³ðLî¶ï9wô�“ð*qpô�”î¶ï7¬ô�qpô�‘ð,î¶ï5âô� qpðEî¶ï4ô�qpð8î¶ï0¥ô�“ð2ô�”ð1î¶ï.Úô�¤ð9ô�¥ð%î¶ï-ô�ðOî¶ï)žô�þô�ÿð<î¶ï'Óô�³qð1p�ô�´ð$î¶ï& ô�ðDî¶ï"—ô�¿ð0ô�Àð,î¶ï Ìô�ðYô�î¶ïô�˜ðJô�™î¶ï7ô�ð"ô�ŽðAî¶ïlô�ð?������� ~����¶%=ñLæ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Dorado Hardware ManualEthernet ControllerAugust 1, 198592Controller OverviewThe Ethernet controller is a slow I/O device packaged with the disk controller on the DskEthlogic board. These two devices require more edge pins than are available in an MSA-I/O slot, sothe board must be mounted in a Fast I/O slot (see Figure 2).A cable connects the controller to a red transceiver outside the Dorado enclosure; this transceiveris almost identical to the ones used for Altos and other computers, the difference being that it uses+12 volts rather than +15. Dorado transceivers are painted bright red and have large blocklettering saying "Dorado only". Plugging in the wrong type of transceiver will not damageanything; it just won't work. The cable between the controller and the transceiver containstwisted-pair signals for receiver data, transmitter data, collision, +5 v, and +12 v.The controller has independent transmitter and receiver sections. Because these two sections arecompletely independent, the Dorado can receive its own transmissions. This is an important aid inhardware and software debugging and simplifies the device driver, which need not check forsending to itself. Furthermore, the receiver can receive consecutive packets separated by theminimum inter-packet spacing (510 ns). This means that the Dorado can receive, without loss,streams of packets directed to it by mulitple hosts and packets that immediately follow broadcasts.This capability is important for servers and other high-performance applications.The controller uses two tasks, one for the transmitter (EOT for Ethernet Output Task) and one forthe receiver (EIT for Ethernet Input Task). The receiver task is higher priority. To permit twoinstruction/wakeup loops, a wakeup request is removed whenever the Next bus says the task isabout to run. This simple strategy can be fooled into removing a request when NextLies occurs,but this is harmless since the required service rate is low. To avoid a spurious wakeup, a wakeupis not requested again until after the task has blocked. A debugging control bit can be set whichprevents wakeups even when all other conditions are satisfied.The transmitter and receiver each have 16-word x 20-bit Fifos. The bits are 16 data + 2 parity +2 spare (the receiver uses one of the spare bits). Each Fifo has read and write pointers,multiplexed into the address inputs of the storage chips, to select the next location to be read orwritten; these pointers are zeroed by IOReset. A Fifo is empty when the pointers are equal andfull when (WritePtr+1) mod 16 equals ReadPtr. There are bus registers between the Fifos andIOB. Service requests from the Ether side of a Fifo are given priority. The Fifos are synchronousto t1.The basic clock for transmitting and receiving data from the Ether, called EtherClk, originatesfrom a 23.5 MHz crystal oscillator. The memory system's Pendulum clock (period 16 ms) is alsoused to time retransmissions after a collision, as discussed later.The receiver runs continually; its phase decoder (PD) samples the Ether every EtherClk; a finitestate machine (FSM) driven by the samples detects the presence or absence of packets on theEther, zero/one transitions, and collisions. Another FSM accumulates the status of the packet andcontrols a shift register that assembles 16-bit words from the incoming data. Words in the shiftregister are written into the receiver's Fifo together with odd parity on each byte; the status iswritten into the Fifo after the last word of each packet and marked to distinguish it from datawords. This allows the receiver to handle back-to-back packets; microcode decides what to dowith each packet as it is read from the Fifo. EtherClk is used for receiver stages through the shiftregister; data in the shift register is synchronized to the Dorado system clock as it is written intoÿ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������î¶ïfªpô�€î",qî3Špô�îG?ïfñî¶ïbsî¶ï^¬pô�·ð>ô�¸î¶ï\áô�‹ðLô�Œî¶ï[ô�ð<î¶ïW¥ô�—ð%qpô�˜ð#î¶ïUÚô�ð2ô�‚ð3î¶ïTô�¼ð/ô�½ð,î¶ïREô�Ùô�Úð:î¶ïPzô�Öô�×ð>î¶ïN°ô�ðUî¶ïK>ô�¥q pqpô�¦î¶ïIsô�€ðFô�î¶ïG¨ô�Îð2ô�Ïð(î¶ïEÞô�Íô�ÎðKî¶ïDô�°ðWô�±î¶ïBIô�Šð3ô�‹ð0î¶ï@~ô�ðQî¶ï=ô�ƒð?ô�„�î2cï<µþ�ç�ï=�î8ï<µþ�ï=�î<Éï<µþ�ç�ï=�î¶ï;Aô�žî.ï:êþ�ç�ï;A�îéï:êþ�„�ï;A�ô�Ÿ�î"Ìï:êþ�ç�ï;A�ð;î¶ï9wô�¬ð-ô�ð/î¶ï7¬ô�–ð1ô�—ð.î¶ï5âô�Œð[ô�î¶ï4ô�ô�‘ð\î¶ï2Lô�ð>î¶ï.Úô�ð!ô�‚ð@î¶ï-ô�çðJô�èî¶ï+Eô�šð`ô�›î¶ï){ô�–ô�—ðHî¶ï'°ô�¥ð$ô�¦qpî¶ï%åô�ô�‚ðDî¶ï$ô�ï#Žt�ï$p�î¶ï Ìô�¼ð3ô�½qpî¶ïô�™ð9qpî¶ï7ô�ðCî¶ïÅô�¤ð#qpô�¥î¶ïúô�¹ð)ô�ºð2î¶ï0ô�…ð,ô�†ð6î¶ïeô�¡ð(ô�¢ð9î¶ï›ô�±ð?ô�²ð#î¶ïÐô�¬ô�ðJî¶ïô�³ðJô�´î¶ï ;ô�†ð7ô�‡ð.î¶ïpô�˜ð$ô�™ðAÿ�������&����¶)=ñ\â—������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Dorado Hardware ManualEthernet ControllerAugust 1, 198593the Fifo.When the transmitter is turned on, it attempts to send one packet and then must be restarted bymicrocode. The EOT fills the Fifo; the transmitter FSM loads the shift register from the Fifo andsupplies a serial bit stream to the phase encoder (PE). Transmitter status is read directly from thecontroller status registers (unlike receiver status, which travels through the data path). Data issynchronized to EtherClk between the output of the shift register and the input of the PE. Acollision may be detected by either the transceiver or the PD. The occurrence of a collision iscaptured, synchronized, and used to abort the outgoing packet after jamming the Ether briefly.The controller has a number of features to help debugging. All of the interesting internal state isavailable via the IOB and the muffler system. The transceiver can be disconnected and PE outputinternally connected to PD input under firmware control. Task wakeups can be disabledpermitting the controller to be driven entirely from emulator-level software. The internal clockcan be single-stepped. These features permit the construction of a simulation program whichcompares its predictions with what the controller is actually doing.ReceiverMost of the receiver runs continuously, tracking traffic on the Ether. The PD reports what it seesto the receiver FSM, which assembles packets in the shift register and buffers them in the Fifo.As words emerge from the Fifo into the bus register, they are either discarded or generate awakeup request under control of the wakeup logic. Following the last data word of each packet asit travels through the Fifo are the CRC word and a status word. IOAtten branches when a statusword is present in the receiver bus register. Data and status are synchronized to the Dorado clockbetween the output of the shift register and the input of the Fifo.The peculiar placement of status bits in Figure 16 eases emulation of the Alto Ethernet controller.The PD is a FSM which takes in raw phase-encoded serial data and produces phase decoderevents and carrier. Phase decoder events are 'saw a zero bit', 'saw a one bit', and 'saw amalformed bit'. Carrier indicates that the PD is seeing transitions on the Ether (i.e. the Ether is inuse). Since the PD is completely digital, it can be single-stepped for debugging. Receivercollision detection, a by-product of this decoding technique, works as well as transceiver collisiondetection.The receiver control is another FSM that takes in PD output and produces control and statussignals. RxSRCtrl controls the shift register and the bit counter. The bit counter decrementswhen a data bit is shifted into the shift register and resets to -1 when the status is parallel loadedinto the shift register. RxSRFull' is low when the next shift will make the register full. RxEOPtravels in parallel with each Fifo word and is true if the word is an ending status word. This bit iscalled EthData.18 when it is in the bus register where it can be tested with IOAtten.Writing data or status from the shift register into the Fifo has priority over loading the busregister from the Fifo. Byte parity is computed at the shift register output and travels with thedata through the Fifo and the bus register, down IOB and into the processor where it is checked.The optimum point at which to synchronize received data with the Dorado clock system would beat the input to the PD, where there is only one signal to synchronize, except that this would makeproper operation of the PD depend upon the Dorado clock period. The next best sync point is��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������î¶ïfªpô�€î",qî3Špô�îG?ïfñî¶ïbî¶ï^¬ô�—ð6ô�˜ð)î¶ï\áô�„ðYô�…î¶ï[ô�‹ð$qô�Œpð/î¶ïYLô�·ô�¸ðRî¶ïWô�°ðZô�±î¶ïU·ô�¢ðaî¶ïSìô�²ð#ô�³ð;î¶ïPzô�ô�ŽðPî¶ïN°ô�…ð.ô�†ð2î¶ïLåô�øðVî¶ïKô�¬ô�ðEî¶ïIPô�ÅðAô�Æî¶ïG…ô�ðDî¶ïBlsî¶ï>úpô�‰ ô�ŠðXî¶ï=/ô�¢ðBô�£î¶ï;eô�Ãð=ô�Äî¶ï9šô�€ô�ðMî¶ï7Ðô�ŒðXô�î¶ï6ô�…ðBô�†ð!î¶ï4:ô�ðCîyï1ytô�Ïð3ô�Ðð1î¶ï.*pô�ÃðOô�Äî¶ï,_ô�Üð"ô�Ýð9î¶ï*•ô�ð'ô�‚ð@î¶ï(Êô�Ùô�ÚðVî¶ï'�ô�šðZô�› î¶ï%5 î¶ï!Ãô�»ð[î¶ïøô�¹ô�ºð@î¶ï.ô�ðLô�‘î¶ïcô�—ð#ô�˜ð?î¶ï™ô�€ ô�ð\î¶ïÎô�ðUî¶ï\ô�Ìô�ÍðRî¶ï‘ô�¥ðYô�¦î¶ïÇô�ð8ô�‘ð(î¶ïUô�‡ô�ˆð@î¶ïŠô�‡ð]ô�ˆî¶ï Àô�ŸðNô� ÿ�������N����¶ y=ñ]’A����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Dorado Hardware ManualEthernet ControllerAugust 1, 198594the PD output where the number of signals has only grown to three. The problem here is thatthe PD can produce events faster than they can be synchronized to the Dorado clock withoutbuffering. Consequently, synchronization takes place after the shift register where the number ofsignals exceeds 20. This is not as unfortunate as it seems because status and data use the samepaths and can share a single synchronizer, RxSRDump, which produces RxFifoWE' each timeRxFSM pulses RxSync'. This leaves only RxCollision and PDCarrier which must be synchronizedfor the transmitter. RxCollision shares a synchronizer with XcCollision, and PDCarrier's is asimple level synchronizer.A receiver data-late occurs when the receiver FSM requests a Fifo write and the Fifo is full. Inthis case the write does not happen and the data is lost. RxDataLate is cleared after an end-of-packet status word is successfully written into the Fifo. This status has the data late error bit setso that the EIT is notified that the preceding packet was bad.EIT wakeup requests occur when the bus register contains an interesting word (provided that theEIT is currently blocked, as discussed earlier). Words are interesting if they emerge from the Fifointo the bus register while RxOn and RxBOP are true and NoWakeups is false. RxBOP is setafter the status word for a packet is discarded, so that the next word out of the Fifo (presumablythe first word of the next packet) can generate a wakeup. It is reset by the EIT to discard theremaining words of a rejected packet (usually because the address didn't match). The receivermay be reset at any time by clearing RxOn. No more wakeups are generated and every word isdiscarded as it emerges from the Fifo. When RxOn is next set, the receiver will continue todiscard words until it has discarded a status word. It will then set RxBOP, and the next word(first word of the first packet after turning on the receiver) will cause a wakeup.TransmitterWhen the transmitter is turned on, it attempts to send one packet and then must be restarted bymicrocode. At the request of the wakeup logic, the EOT fills the Fifo using Output_B to the busregister. The transmitter FSM loads the shift register from the Fifo and supplies a serial bitstream to the PE. Transmitter status is read directly from the controller status registers (unlikereceiver status, which travels through the data path). Data is synchronized to the Ether clockbetween shift register output and PE input.EOT wakeups occur when the bus register is empty, TxOn is true, and TxEOP, TxCntDwn, andNoWakeups are false (provided that EOT is blocked, as discussed earlier). After delivering thelast word of a packet, EOT wakeups are disabled by setting TxEOP. While counting down acollision retransmission interval, firmware can disable wakeups until the next tick of Pendulum bysetting TxCntDwn. The transmitter may be reset at any time by clearing TxOn, which stopswakeup requests and shuts down the PE within 2 bit times.The binary exponential backoff collision algorithm must be implemented in microcode. Thecontroller merely provides a way to generate a wakeup on the next rising edge of Pendulum,making the grain size of countdown intervals 16 ms for the Dorado (compared to 38 ms for Altosand Novas). Note that setting TxCntDwn prevents a wakeup; for one to actually occur whenPendulum clears it, the bus register must be empty and TxEOP must be false. Pendulum isconsidered to be a foreign signal so it is synchronized before being applied to the reset input ofTxCntDwn.������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������î¶ïfªpô�€î",qî3Špô�îG?ïfñî¶ïbô� ô�¡ðEî¶ï`Sô�ºô�»ðTî¶ï^‰ô�•ð_ô�–î¶ï\¾ô�£ðJô�¤î¶ïZóô�¾ô�¿ðBî¶ïY)ô�„ô�…ðPî¶ïW^ô�Éð7ô�Êð'î¶ïU”ô�î¶ïR"ô�™ð<ô�šð%î¶ïPWô�ðVô�ž î¶ïNŒô�•ðSô�–î¶ïLÂô�ð>î¶ïIPô�– ô�—ðUî¶ïG…ô�†ðVô�‡ î¶ïE»ô�ªô�«ð9î¶ïCðô�’ðQô�“î¶ïB%ô�¥ðTô�¦î¶ï@[ô�³ðHô�´î¶ï>ô�—ð.ô�˜ð-î¶ï<Æô�½ðYô�¾î¶ï:ûô�«ðLô�¬î¶ï90ô�ðSî¶ï4s î¶ï0¥pô�—ð6ô�˜ð)î¶ï.Úô�‡ðUô�ˆ î¶ï-ô�Âð$ô�Ãð;î¶ï+Eô�«ô�¬ðQî¶ï){ô�»ô�¼ðAî¶ï'°ô�ð+î¶ï$>ô�ô�žð:î¶ï"sô�ªð?ô�«î¶ï ©ô�¹ô�ºðBî¶ïÞô�Œð?ô�ð#î¶ïô�Ãô�ÄðGî¶ïIô�ð9î¶ï×ô�ÓðYî¶ïô�Àô�ÁðIî¶ïBô�•ð0u�pð!u�p�ô�– î¶ïwô�½ô�¾qpð)î¶ïô�ÄðUô�Åî¶ïâô�ô�žðUî¶ï �������,����¶Ð<ñ[;M����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Dorado Hardware ManualEthernet ControllerAugust 1, 198595Loading the shift register from the Fifo has priority over writing into the Fifo from the busregister. Byte parity is computed in the processor and travels with the data down IOB into thebus register, and through the Fifo to the shift register where it is checked.The transmitter control is a FSM which takes in start, end, and abort signals and produces controlsignals. TxSRCtrl controls the shift register and bit counter. The bit counter decrements when adata bit is shifted into the shift register and resets to -1 when the next word is parallel loaded intothe shift register. TxSREmpty' is low when the next shift will make the register empty. TxDatawire-or's the start bit at the beginning of each packet. TxGone clears TxEOP to cause a wakeupat the end of each packet. The transmitter starts when the Fifo is full or, if the packet is less than15 words long, when TxEOP is true. The transmitter ends normally when the Fifo is empty andTxEOP is true. The transmitter aborts when a collision, Fifo parity error or data late occurs.TxAbort can be tested with IOAtten.A transmitter data late occurs when the TxFSM requests a Fifo read and the Fifo is empty butTxEOP is false. The PE sends one random bit and then stops. The resulting packet has an illegallength and probably a bad CRC.The PE inverts and latches TxData at the start of each bit cell and inverts the latched value 1/2bit time later. TxGo, synchronized to the beginning of a bit cell, enables the PE. The PEassumes that a data bit is available long before it is needed and acknowledges each bit afterlatching it by generating TxGotBit.A collision may be detected by either the transceiver or PD. The occurrence of a collision iscaptured, synchronized, and used to abort the outgoing packet. The output of the first stage ofthe TxCollision synchronizer is wire-or'ed with PD output to jam the Ether after a collision. Thejam lasts for one or two bit times, being the delay through the TxCollision synchronizer, TxFSM,and TxGo synchronizer.ClocksThe controller needs a clock with a nominal frequency of eight times the Ether bit rate. TheSingleStep control bit selects either the 23.53 mHz crystal oscillator or single Dorado clocksinjected under program control. The clocks for the Ether-synchronous parts of the controller areconstructed from this basic clock.The slowest Dorado clock period at which the transmitter works is 42.5 ns. Disabling the Doradosystem clocks while TxOn is true causes a transmitter data late. If TxGo is true, the packet ischopped off, causing an incomplete transmission and probably a runt bit. When the clock isreenabled, the PE sends a few fragmentary bits and then the data late aborts the packet.The slowest Dorado clock period at which the receiver works is 85 ns. Disabling the Doradosystem clocks causes a receiver data late. The next packet that arrives after the clock is reenabledreports the data late.ÿ������������������������������������������������������������������������������������î¶ïfªpô�€î",qî3Špô�îG?ïfñî¶ïbô�ÈðUô�Éî¶ï`Sô�¥ðVô�¦î¶ï^‰ô�ðMî¶ï[ô�ˆðMô�‰î¶ïYLô�ð2ô�‘ð0î¶ïWô�†ðAô�‡ð&î¶ïU·ô�–ô�—ðMî¶ïSìô�”ô�•ðRî¶ïR"ô�„ð]ô�… î¶ïPWô�”ô�•ðTî¶ïNŒô�» ô�¼ðQî¶ïLÂô�ð#î¶ïIPô�£ô�¤ð>î¶ïG…ô�„ðRô�…î¶ïE»ô�î¶ïBIô�›ô�œðOî¶ï@~ô�ÉðOô�Êî¶ï>³ô�Çð3ô�Èð*î¶ï<éô�ð#î¶ï9wô�·ô�¸ðLî¶ï7¬ô�£ð#ô�¤ð=î¶ï5âô�ð*ô�ð8î¶ï4ô�‘ð`î¶ï2Lô�î¶ï-3sî¶ï)Ápô�µðHô�¶î¶ï'÷ô�ÛðPô�Ü î¶ï&,ô�—ðaî¶ï$aô�ð"î¶ï ïô�Šô�‹ðNî¶ï%ô�ð]ô�®î¶ïZô�ÀðIô�Áî¶ïô�ðô�ñð;î¶ïô�¸ðFô�¹î¶ïSô�Œð/ô�ð6î¶ïˆô�ÿ�������¬����¶A=ñSÊ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Dorado Hardware ManualEthernet ControllerAugust 1, 198596Task WakeupsThe controller is designed for two completely independent tasks, with the receiver higher priority.Two IOAs select data and status/control registers. IOAtten may be tested to decide whether awakeup request is just for another word or something special (ending status for the receiver, or PEaborted for the transmitter).Task wakeups must, on the average, be serviced within 5.44 ms. The transmitter and receiver eachhave 17 words of buffering (bus register + 15 Fifo + shift register) so the variance can be quitelargeaccumulated delay of up to about 90 ms is tolerable, while longer delay will cause a datalate error.ÿ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������î¶ïfªpô�€î",qî3Špô�îG?ïfñî¶ïbsî¶ï^¬pô�ðcî¶ï\áô�¯ð?ô�°î¶ï[ô�ƒðDô�„î¶ïYLô�î¶ïUÚô�†ð;u�pô�‡î¶ïTô�’ðXô�“î¶ïREô�¢ô�£u�pð4î¶ïPzô� ÿ�������²����¶Ni=ñ¢�Z��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Dorado Hardware ManualEthernet ControllerAugust 1, 198597Muffler InputAll muffled signals on the DskEth board are accessible to Dorado firmware. The method bywhich a particular signal is selected and read out is discussed in the "Muffler Input" section of the"Disk Controller" chapter. Signal addresses 1208 to 1778 for the Ethernet controller areenumerated below. Unless it is obvious, signals which are specific to the receiver or transmitterhave Rx or Tx respectively somewhere in their names.Table 26: Ethernet Muffler SignalsWord BitNameMeaningERX0 120PDNew1/8 bit time sample of PD input signal 121PDOldPDNew delayed one sample time122:125PDCnt[0:3]Number of samples since last data transition 126PDCntCtrlIncrements or clears PDCnt 127ReportCollisionsControl register bit that enables PD collision reporting 130RxBOP"Beginning Of Packet" enables receiver data wakeups 131EthData.18Marks status word terminating a packet 132 133RxCRCErrorOutput of receiver CRC checker 134RxDataLateReceiver Fifo overflowed 135RxBusRegFullWord in BusReg can be read with Pd_Input 136RxFifoFullReceiver Fifo is full 137RxFifoEmptyReceiver Fifo is emptyETX140:142TxState[0:2]State of transmitter FSM 143TxEOPTransmitter data wakeups are disabled 144TxBusRegFull'Word is waiting to be written into the transmitter Fifo 145TxGoneTransmitter FSM is shut down 146TxSREmpty'Transmitter shift register is empty 147TxCntDwn'Transmitter wakeups disabled until next pendulum clock 150TxCRCEnblShift/compute control for transmitter CRC 151TxGoEnable PE 152TxDataSerial data input to PE153:154TxSRCtrl[0:1]Transmitter shift register control 155PEOutputPhase Encoder (PE) output 156TxFifoFullTransmitter Fifo is full 157TxFifoEmptyTransmitter Fifo is emptyERX1160:162RxState[0:2]State of receiver FSM 163RxCollisionReceiver-detected collision 164PDCarrierThe Ether is in use165:166PDEvent[0:1]PD output (no event, collision, 0, and 1) 167RxSRFull'Receiver shift register is full 170RxEOPMarks status word terminating a packet 171RxSync'True for one cycle triggering write of SR into Fifo 172RxIncTransReceiver incomplete transmission 173RxCRCResetResets receiver CRC chip 174RxCRCClkClocks receiver CRC ship 175RxDataSerial data output from RxFSM176:177RxSRCtrl[0:1]Receiver shift register control����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������î¶ïfªpô�€î",qî3Špô�îG?ïfñî¶ïbsî¶ï^¬pô�½ ô�¾ðNî¶ï\áô�‚ô�ƒðIî¶ï[ôð0ïZŠt�ï[pïZŠt�ï[pôî¶ïYLô�¢ðJô�£î¶ïWô�ð4î!_ïS_vô�Fð#îyïPÁwîyïO`ô�€înî"tîyïLÂtîyïKaînî"tô�ð&îyïJ�ô�€înî"tô�îyïHŸîn î"tð,îyïG?ô�€înî"t ô�îyïEÞô�€înî"tô�ð1îyïD}ô�€înî"t ô�ð)îyïCô�€în î"tô�ð!îyïA¼ô�€în�îyï@[în î"tô�îyï>úô�€în î"tô�îyï=™ô�€înî"tô�ð$îyï<8ô�€în î"tô�îyï:Øô�€în î"tô� îyï89îyï6Ùînî"tîyï5xô�€înî"t ô�îyï4ô�€înî"tô�ð3îyï2¶ô�€înî"t ô�îyï1Uô�€în î"t ô�îyï/õô�€înî"t ô�ð+îyï.”ô�€înî"tô�îyï-3ô�€înî"tô�îyï+Òô�€înî"tô�îyï*rînî"tð"îyï)ô�€înî"tô�îyï'°ô�€în î"t ô�îyï&Oô�€în î"t ô� îyï#±îyï"Pînî"tîyï ïô�€în î"tô� îyïô�€înî"tô�îyï.înî"tð)îyïÍô�€înî"tô�îyïlô�€înî"tô�ð!îyïô�€înî"tô�ð/îyï«ô�€în î"tô�îyïJô�€în î"tô�îyïéô�€înî"tô�îyïˆô�€înî"tô�îyï(înî"t������� ����¶<ñU÷������������������Dorado Hardware ManualEthernet ControllerAugust 1, 198598IOB RegistersTIOA equals 158 selects the IOB registers (called EthD). The transmitter bus register is loaded byOutput_B and the receiver bus register is read with Pd_Input. At end-of-packet, after the lastdata word, the receiver delivers first the CRC word and then a status word containing thefollowing bits:RxCollisionReceiver-detected collision occurred (can happen only if ReportCollisions has been setin the control word).RxDataLateReceiver data-late occurredone or more words of the last packet were lost.RxCRCErrorCRC was incorrect in last packet.RxIncTransLast packet did not end on a word boundary.Control RegisterTIOA equals 168 selects either the (write-only) control register (EthC), discussed here, or the(read-only) status register (also called EthC), discussed in the next section. The control registerhas three fields: transmitter, receiver, and test. Bits in a field are decoded only if the command-enable bit for the field is true. Control bits with a single quote as their last character are truewhen zero.TxCmdEnbl'enables decoding of transmitter commands.TxOnenables the transmitter. The transmitter may be reset at any time by clearing this bit.Cleared by IOReset.TxEOPdisables transmitter wakeups. EOT sets this bit after outputing the last word of apacket. It is cleared by the controller when the PE shuts down after an abort ornormal end. Cleared by TxOn=0.TxCntDwndisables transmitter wakeups. Set by EOT to time a retransmission interval after acollision; cleared by the controller when the next rising edge of Pendulum occurs(period = 16 ms). N.B. the binary exponential backoff is done by firmware. Clearedby TxOn=0.RxCmdEnbl'enables decoding of receiver commands.RxOnenables the receiver, which may be turned off at any time by clearing this bit.Cleared by IOReset.RxBOP'disables receiver wakeups. Cleared by EIT to discard the currently arriving packet; setby the controller when the first word of the next packet is available. Cleared byRxOn=0.TestCmdEnbl'enables decoding of test commandsLoopBackdisconnects the transceiver, loops PE output to PD input, and enables TestColl'.Cleared by IOReset.SingleStepdisables the 23.53 mHz oscillator. NoWakeupsdisables all controller wakeups. Cleared by IOReset.TestClockinjects a single Dorado clock pulse (t3 of the Output instruction) into the EtherClklogic. SingleStep must already be set.TestColl'injects a single Dorado clock pulse (t3 of the Output instruction) into the collisionsynchronizer. LoopBack must already be set.TestDatawire ORs with PD input. LoopBack must already be set and TxOn must already befalse. Do not issue TestClock in an instruction that changes TestData. Cleared byIOReset.����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������î¶ïfªpô�€î",qî3Špô�îG?ïfñî¶ïbsî¶ï^¬pô�† ï^t�ï^¬pð>ô�‡î¶ï\áô�¨ô�©ðFî¶ï[ô�ßðYî¶ïYLô�îxïV!t î@ô�‘ðVî@ïTÀô�îxïR‹ î@ô�ûô�üð9îxïPW î@ô�ð!îxïN# î@ð+î¶ïI-sî¶ïE»pô�Í ïE.t�ïE»pðPî¶ïCðô�ªð/ô�«ð5î¶ïB%ô�–ðOô�—î¶ï@[ô�©ô�ªðIî¶ï>ô� îxï;et î@ð)îxï90î@ô�‡ðEô�ˆî@ï7Ðô�îxï5›î@ô�¯ðSî@ï4:ô�ô�®ð4î@ï2Úô�îxï0¥î@ô�«ðQô�¬î@ï/Dô�¼ô�½ð<î@ï-Àô�ƒu�tð(ô�„î@ï,<ô� îxï* î@ð&îxï'Óî@ô�ÎðEô�Ï î@ï&sô�îxï$>î@ô�ðXî@ï"Ýô�±ð1ô�²ð!î@ï!}îxïHî@ô�ð!îxïî@ô�Ôð%ô�Õð+î@ï³ô�îxï~ î@ð$îxïJî@ð5îxïî@ô�§ð&ï‰�ïô�¨ð-î@ïnô�ð'îxï:î@ô�¯ð&ï�ï:ô�° î@ï’ô�ð,îxï ^î@ô�’ðKô�“î@ïýô�¤ðPô�¥î@ï œ������� Ä����¶ y<ñ]’[������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Dorado Hardware ManualEthernet ControllerAugust 1, 198599ReportCollisionsallows the PD to report malformed bits as collisions. Cleared by IOReset.Status RegisterTIOA of 168 also selects the (read-only) status register. The bits in this register are the mostinteresting to the microcode. Less interesting state is available from the mufflers.Host Addrthe host address set by pullups on the backplane.RxOnthe receiver is enabled.TxOnthe transmitter is enabled.LoopBackthe interface is looped back.TxCollthe current output packet was aborted by a collision.NoWakeupsall wakeups are disabled.TxDataLatethe current output packet was aborted by a data late.SingleStepthe 23.53 mHz oscillator is disabled.TxFifoPEthe current output packet was aborted by a parity error.ÿ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������î¶ïfªpô�€î",qî3Špô�îG?ïfñîxïbAtî@ðJî¶ï]Ksî¶ïYÙpô�¹ô�ºïYLt�ïYÙpðVî¶ïXô�ðUîxïTãtô�€î@ô�ð.îxïR¯î@îxïPzî@îxïNFî@îxïLî@ð5îxïIÝî@îxïG¨ î@ð5îxïEt î@ð%îxïC@î@ð8�������þ����¶C<ñ$î�q����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Dorado Hardware ManualOther IO and Event CountersAugust 1, 1985100Other IO and Event Counters In addition to the disk, ethernet, and display controllers discussed in earlier chapters, Doradocontains a general input/output interface and a junk task wakeup located on the IFU board; thetwo registers used in this interface may alternatively be used as event counters in performancemonitoring, and that use is also discussed here.Since the IFU board is not interfaced to the IOB, it cannot use the slow io system to control thesefeatures, so functions are used instead.Junk Task WakeupThe IFU board contains a circuit which wakes up the junk task (task 1) every 32 ms. The wakeupis dismissed by the AckJunkTW_B function; this function interprets B[15] as follows: a 1 enableswakeups; a 0 disables them; B[0:14] are ignored. The junk task can dismiss the wakeup by doingIFUTest_B with any value on B (but B[15] must be 0 to reenable the wakeup at the next 32 mstick).Junk task microcode will, among other things, maintain a Real Time clock.General IOThe General IO is not normally used except by the Event counters microdiagnostic. There is aturn-around jumper on the right side of the IFU board to run the diagnostic.A 16-bit register called GenIn (synonym EventCntA) is used for general input; it can be read withthe B_GenIn (synonym B_EventCntA) function but cannot be written by firmware. When usedfor general input, GenIn is written with information that is TTL-to-ECL converted from thebackpanel.A 16-bit register called GenOut (synonym EventCntB) is used for general output; it can be eitherread with the B_GenOut (synonym B_EventCntB) function or written with the GenOut_B(synonym EventCntB_B) function. GenOut is connected to the backpanel through ECL-to-TTLconverters.The choice of using one of these registers for general I/O or for event counting is determined bythe InsSetOrEvent_B function.Event CountersThe GenIn and GenOut registers can alternatively be used as event counters. They cannot, ofcourse, be used simultaneously for general I/O. The registers are setup for either I/O or eventcounting by the InsSetOrEvent_B function, where B[0:15] are interpreted as follows:����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������î·ïfªpô�€îQqî2ýpô�îE˜ïfñî·ïa×rp�î·ï^eô�Å ô�ÆðUî·ï\›ô�¥ qpqpô�¦î·ïZÐô�½ð>ô�¾q pî·ïYô�ð0î·ïU”ô�„ðcî·ïSÉô�ð(î·ïN°sî·ïK>pô�…ð,ô�†ð$t�p î·ïIsô�‡ðaî·ïG¨ô�‹ô�ŒðJî·ïEÞô�šð5ô�›ð$t�p�î·ïDî·ï@¡ô�ðIî·ï;ˆs î·ï8pô�®ð#ô�¯ð9î·ï6Kô�ðLî·ï2¶ô�„ðaî·ï0ìô�•ðXî·ï/!ô�ÑðZî·ï-V î·ï)äô�ð`î·ï(ô�åðRî·ï&Oô�¡ðMô�¢ î·ï$… î·ï!ô� ô�‘ðWî·ïHô�î·ï/s î·ï½pô�¯ðAô�°î·ïòô�¥ðZô�¦î·ï(ô�ðS�������Ž����·á<ðU*�Ý����������������������������������������������������������������������Dorado Hardware ManualOther IO and Event CountersAugust 1, 1985101If B[0] is 1, then InsSet[0:1] are loaded as discussed in the "Instruction Fetch Unit" chapter. IfB[0] is 0, then its the general io/event counters as follows:B[4] enables counting of EventCntAB[5] enables counting of EventCntBB[8:10] select the event type to be counted by EventCntA as follows:0True (i.e., every cycle)1Hold2Processor memory reference (not held)3Good IFUJump (i.e., not held and not an exception)4Miss5-7Backpanel events A, C, and E, respectivelyB[12:14] select the event type to be counted by EventCntB as follows:0True1Hold2Successful IFU memory reference3IFUJump that wasn't ready4Miss5-7Backpanel events B, C, and D, respectivelyB[15] causes the event to be counted for all cycles if 1 or only for emulator or fault task cycles if 0.To use the event counters, you first stop them counting and read their current values; then youtell them what to count and start them counting and your system running. Note that they neverget reset, but just keep counting from wherever they areit's up to the user to worry aboutcounter turnover.ÿ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������î·ïfªpô�€îQqî2ýpô�îE˜ïfñî·ïbô�¡ô�¢ðVî·ï`Sô�ð=î·ï](uð"î·ïZóð"î·ïX¿ðDî·ïVŠ�î¬î·ïU*�î¬î·ïSÉ�î¬ð%î·ïRh�î¬ð2î·ïQ�î¬î·ïO§î¬ð*î·ïMrðEî·ïK>�î¬î·ïIÝ�î¬î·ïH|�î¬î·ïG�î¬î·ïE»�î¬î·ïDZî¬ð*î·ïB%ô�÷ðVô�øî·ï>×pô�¢ô�£ðYî·ï=ô�–ð&ô�—ð8î·ï;Aô�Æð!ô�Çð:î·ï9wô��������`����·90<ð.Û�¢��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Dorado Hardware ManualError HandlingAugust 1, 1985102Error HandlingIn addition to single-error correction and double-error detection on data from storage, Dorado alsogenerates, stores, and checks parity for a number of internal memories and data paths. Thegeneral concepts on handling various kinds of detected failures are as follows:(1) Failures of the processor or control sections should generally halt Dorado because thesesections must be operational before any kind of error analysis or recovery firmware can beeffective.(2) Failures arising from memory and I/O sections should generally result in a fault task wakeupand be handled by microcode. In some situations, such as map parity errors, it is especiallyimportant to report errors this way rather than immediately halting because firmware/softwaremay be able to bypass the hardware affected by the failure and continue normal operation until aconvenient time for repair occurs. In other situations, the firmware may be able to diagnose thefailure and leave more information for the hardware maintainers before halting.(3) IFU section failures and memory section failures detected by the IFU should generally bebuffered through to the affected IFUJump, then reported via a trap; in this way, if it is possible torecover from the failure, then it will be possible to restart the IFU at the next opcode andcontinue.(4) Memories and data paths involving many parts should generally be parity checked. It is notobvious that this is always a good idea because extra parts in the parity logic will be an additionalsource of failures, but instantly detecting and localizing a failure seems preferable to continuingcomputation to an erroneous and undetected result.(5) When Dorado halts due to a failure, information available on mufflers and in the 16-bits ofpassively available error status (ESTAT) should localize the cause of the error as precisely aspossible.Since the MECL-10K logic family has a fast 9-input parity ladder component, the hardware usesparity on 8-bit bytes in most places; there is usually insufficient time to compute parity over largerunits. IM and MIR, two exceptions, compute parity over the 17-bits of data in each half of aninstruction; and the cache address section computes parity over the 15 address bits and WP bit.Odd parity is used throughout the machine, except that the cache address section and IFUM useeven parity. Odd parity means that the number of ones in the data unit, including the parity bit,should be odd, if the data is ok.The control processor (Midas or the baseboard microcomputer) independently enables variouskinds of error-halt conditions by executing a manifold operation discussed in the "DoradoDebugging Interface" document. It also has to initialize RM, T, the cache address and datasections, the Map, and IFUM to have valid parity before trying to run programs. Reasons for thiswill be apparent from the discussion below.When Dorado halts, error indicators in ESTAT indicate the primary reason for the halt, andmuffler signals available to the control processor further define the halt condition; ESTAT alsoshows the halt-enables. Midas will automatically prettyprint a message describing the reasons foran error halt. The exact conditions that cause error halts are detailed in the sections below; the������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������î¶ïfªpô�€î#q î2ýpô�îFïfñî¶ïa×r î¶ï^epô�‚ðIô�ƒî¶ï\›ô�ËðJô�Ìî¶ïZÐô�ðOî¶ïW^ô�Íô�ÎðPî¶ïU”ô�Ýð'ô�Þð3î¶ïSÉ î¶ïPWô�ðaî¶ïNŒô�Åð6ô�Æð'î¶ïLÂô�ÃðKô�Äî¶ïJ÷ô�ð`î¶ïI-ô�™ð<ô�šð%î¶ïGbô�ðOî¶ïCðô�°ðZô�±î¶ïB%ô�ðeî¶ï@[ô�Ðð=ô�Ñî¶ï>î¶ï;ô�”ðLô�•î¶ï9Tô�ˆô�‰ðYî¶ï7‰ô�«ðcî¶ï5¾ô�ð2î¶ï2Lô�›ðJô�œî¶ï0‚ô�ÉðOô�Êî¶ï.·î¶ï+Eô�™ô�šðTî¶ï){ô�‚ô�ƒðIî¶ï'°ô�¢ð#ô�£ð;î¶ï%åô�¥ô�¦ðKî¶ï"sô�—ðTô�˜î¶ï ©ô�Žð1ô�ð1î¶ïÞô�ð!î¶ïlô�Î ô�ÏðOî¶ï¢ô�óô�ôðFî¶ï×ô�Éð[î¶ïô�ƒð7ô�„ð*î¶ïBô�ð+î¶ïÐô�Êð#ô�Ëð7î¶ïô�°ð[ô�±î¶ï ;ô�–ô�—ðJî¶ïpô�žð$ô�Ÿð?�������þ����¶)<ñ\â)����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Dorado Hardware ManualError HandlingAugust 1, 1985103table here shows the ESTAT and muffler information which is relevant.Table 27: Error-Related SignalsESTATESTAT Task ErrorEnableExperiencingRelated Muffler Signals Bit Bit Haltand MeaningRAMPERAMPEenTask2BkSTK, RM, or T parity failure.RmPerr and TmPerr mufflers on each processorboard indicate which byte of RM/STK or T had aparity failure. StkSelSaved indicates that RmPerr appliesto STK rather than RM.MdPEMdPEenprocessor-detected Md parity failureTask2Bkif immediate _Md (_MDSaved false)Task3Bkif deferred _Md (_MDSaved true)MdPerr muffler on each processor boardshows which byte of Md failed.IMrhPEIMrhPEenCTDparity failure of IM[17:33]IMlhPEIMlhPEenCTDparity failure of IM[0:16]IOBPEIOBPEenTask2BkPd_Input parity failure if IOBoutSaved falseTask2BkOutput_B parity failure if IOBoutSaved trueIOPerr mufflers on each processor board showwhich byte failed.MemoryPEMemoryPEencache address section parity failure,cache data parity failure on write ofdirty victim or dirty Flush_ hit, orfast input bus parity failure.Processor ErrorsThe processor has parity ladders on each byte of the following:input to RM/STKgenerate parity for write of RM/STKinput to Tgenerate parity for write of TBgenerate parity for DBuf_B, MapBuf_B, Output_B, IM_BIOBcheck parity for Pd_Input and Output_BMdcheck parity for _MdRcheck parity for _RM/STK (unless bypassed from Pd orMd or replaced by _Id)Tcheck parity for _T (unless bypassed from Pd or Md orreplaced by _Id)Input ladders to RM/STK and T generate parity stored with data in the RAM; these ladders arenot used for detecting errors.The processor computes parity on its internal B bus (alub). The generated parity may betransmitted onto IOB when an Output_B function is executed; Store_ references write B data andparity in the cache; parity for IM writes and map writes is computed from B parity. None of theother B destinations either check or store B parity. External B sources do not generate parity.Parity on R/T is checked only when the R/T data path is sourced from the RAM, not whenbypassing from Md or Pd is occurring, and not when R/T is sourced from Id. A detected failure����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������î¶ïfªpô�€î#q î2ýpô�îFïfñî¶ïbðEî 5ï]Øsô�XîyïZtî îô�€îyïYLî îî(¨ô�îyïWëô�€î îî(¨ô�îyïUMuî îî(¨î(¨ïSìtutuî(¨ïR‹ð.î(¨ïQ+ô�ßt uô�àtuî(¨ïOÊô�îyïMÿî î(¨ð$îïLžî(¨ð!îïK>î(¨î(¨ïIÝtuî(¨ïH|îyïF²î îî(¨îyïDçî îî(¨îyïCî îî(¨t uîïA¼î(¨t uî(¨ï@[tuð&î(¨ï>úîyï=/î î�î(¨ð%î(¨ï;Ïð%î(¨ï:nð$î(¨ï9 î¶ï4sî¶ï0¥pð?î:ï-3ô�€îRô�î:ï+iô�€ îRô�î:ï)ž�îRð4î:ï'ÓîRð&î:ï& îRî:ï$>�îRð4îRï"sî:ï ©�îRð5îRïÞî¶ïlô�”ð9ô�•ð#î¶ï¢ô�î¶ï0ô�äðJô�å î¶ïeô�‚ð1ô�ƒð-î¶ï›ô�‹ð;ô�Œð%î¶ïÐô�°ô�±ðLî¶ï ^ô�¹ðMô�ºî¶ï“ô�ŒðVô��������ˆ����¶L<ñ\¿F������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Dorado Hardware ManualError HandlingAugust 1, 1985104causes the RAMPE error halt, which indicates that some byte of RM, STK, or T had bad parity. Md parity is checked whenever _Md is done; a failure causes the MdPE error-halt when enabled.I/O devices (optionally) compute and send odd parity with each byte of data; the processor checksparity when the Pd_Input function is executed, but not when the Pd_InputNoPE function isexecuted. When enabled, an IOBPE error halts the processor at t4 of the instruction that sufferedthe error; Task2Bk shows the task that executed the instruction. The processor also checks IOBparity on Output_B, and an error halts at t4 as for Pd_Input.The processor does not generate or check parity on the A, Mar, or Pd data paths. Any failures ofthe A, Mar, B, Pd, or shifter multiplexing or of the ALU go undetected; failures of Q, Cnt,RBase, MemBase, ALUFM, or branch conditions go undetected.Control Section ErrorsThe control section stores parity with each 17-bit half of data in IM. When IM is written, the twobyte-parity bits on B are xor'ed with the 17th data bit to compute the odd parity bit written intoIM. It is possible to specify that bad (even) parity be written into IM, and this artifice is used tocreate breakpoints; bad parity from both halves of IM is assumed to be a deliberately setbreakpoint by Midas.IM RAM output is loaded into MIR and parity ladders on each 17-bit half give rise to errorindicators that, when enabled, will halt the processor after t2 of the instruction suffering an error.For testing purposes, halt-on-error can be independently enabled for each half of MIR. Both theunbuffered output of the MIR parity ladders and values buffered at t2 appear in ESTAT. Thebuffered values show the cause of an error halt, and the unbuffered signals allow Midas to detectparity errors in MIR before executing instructions or when displaying the contents of IM.The special MIRDebug feature discussed in the "Dorado Debugging Interface" document preventsMIR from being loaded at t2 when MIR parity is bad. In other words, when the MIRDebugfeature is being used, all of the t2 clocks in the machine will occur except the ones to MIR. Thisfeature prevents the instruction that suffered an error from being overwritten at the expense ofbeing unable to continue execution after the error. MIRDebug can be enabled/disabled by thecontrol processor.IFU ErrorsThe IFU never halts the processor; any errors it detects are buffered until an IFUJump transferscontrol to a trap location. The errors it detects, discussed in "IFU Section", are parity failures onbytes from the cache, IFUM parity failures, and map parity failures on IFU fetches.Memory System ErrorsThere is no parity checking on Mar or on data in BR, so any failure in the address computationfor a reference goes undetected. However, valid parity is stored with VA in the cache, and anyfailure detected will cause the MemoryPE error to occur, halting the system (if MemoryPE isenabled).ÿ��������������������������������������������������������������������î¶ïfªpô�€î#q î2ýpô�îFïfñî¶ïbô�” qpð<ô�•ô�î·ï_9ô�‡ô�ˆð#qpî·ï[êô�ô�‚ðAî·ïZCô�ÄðXî·ïXœô�†qpïXu�ïXœpô�‡ î·ïVÑô� qpô�žð>î·ïU*ô�ð+ïTu�ïU*pî¶ïQÛô�‡ð2ô�ˆð/î¶ïPô�ÄðSô�Åî¶ïNFô�ð:î¶ïI-sî¶ïE»pô�ƒð:ô�„ð)î¶ïCðô�•ðQô�–î¶ïB%ô�Žðfî¶ï@[ô�æð@ô�çî¶ï>ô�î¶ï;ô�»ðTô�¼î¶ï9Tô�”ð7qpï8Çu�ï9Tpô�•î¶ï7‰ô�ô�ðKî¶ï5¾ô�¨ðDï51u�ï5¾pî¶ï3ôô�ð4ô�‘ð-î¶ï2)ô�ðð5ô�ñð$î¶ï.·ô�‚ô�ƒðHî¶ï,íô�²ï,`u�ï,ípð.ô�³î¶ï+"ô�Œð#ï*•u�ï+"pô�ð)î¶ï)Wô�®ð7ô�¯ð)î¶ï'ô�¥ô�¦ðMî¶ï%Âô�î¶ï ©s î¶ï7pô�—ô�˜ðSî¶ïlô�‹ô�ŒðZî¶ï¢ô�ðSî¶ïˆsî¶ïpô�˜ô�™ðLî¶ïLô�¡ðPô�¢î¶ï ô�Âô�ÃðKî¶ï·�������¼����¶p=ñ\›@������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Dorado Hardware ManualError HandlingAugust 1, 1985105Parity is also stored in the Map (computed from B parity) and an error causes a fault task wakeupin most situations (Exceptions: IFU references and Map_ references do not wakeup the fault taskwhen a map parity error occurs).The cache data section stores valid parity with each byte of data. When a munch is loaded fromstorage, the error corrector carries out single-error correction and double error detection using thesyndrome and recomputes parity on each 8-bit byte of data stored in the cache. When a wordfrom B is Store_'d in the cache, byte parity on B is stored with the data.A MemoryPE error occurs if, when storing a dirty victim back into storage, the memory systemdetects bad parity on data from the cache.The IFU and processor also check parity of data from the cache, as discussed previously.Sources of FailuresIn a full 4-module storage configuration, Dorado will have 1173 MOS storage, about 700 Schottky-TTL, 3000 MECL-10K, and 60 MECL-3 DIPs, and about 1500 SIPs (7-resistor packages). Thislogic is connected with over 100,000 stitch-welded, multiwire, or PC connections on each logicboard connect to sidepanels through about 2500 edge pins. Sockets are used for all the memorychips except for 256k chips in the machine; other parts are soldered in. Given all these potentialsources of failure, reliable operation has been a surprising achievement.Initial debugging of new machines has been slow and difficult, requiring expertise not easilyavailable in a production environment. In addition to mechanical assembly, board stuffing, andtesting for shorts and opens both before and after stuffing, each machine has averaged about oneman month of expert technician time to repair other malfunctions before it could be released tousers.Once released, the Dorados have been pretty reliable. During a 100-day period (6 October 1980to 14 January 1981) the CSL technicians kept records of service calls made for approximately 15Dorados in service at that time. The following summarizes the 43 service calls that were made.37 daysmean time between service calls per machine.45 days mean time between failures (some service calls were for microcode or softwareproblems).2.5 hours per machine per month average service time.13% of failures and 5% of time reseating logic boards in the chasis (connectors notmaking contact).11% of failures and 17% of time on open nets.13% of failures and 12% of time repairing 16k MOS RAM failures (standardconfiguration was 2 modules).37% of failures and 28% of time replacing other DIPs and SIPs.5% of failures and 10% of time on T80 problems.������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������î¶ïfªpô�€î#q î2ýpô�îFïfñî¶ïbô�… ô�†ðSî¶ï`Sô�‚ð/ô�ƒð1î¶ï^‰ô�î¶ï[ô�’ðPô�“î¶ïYLô�ô�ðYî¶ïWô�§ð&ô�¨ð5î¶ïU·ô�ðJî¶ïREô�¥ðUô�¦î¶ïPzô�ð*î¶ïMô�ðð'ô�ñð1î¶ïGïsô�î¶ïD}pô�€ô�ðWî¶ïB²ô�¦ð+ô�§ð-î¶ï@èô�»ðXô�¼î¶ï?ô�™ð:ô�šð$î¶ï=Sô�ô�ðHî¶ï;ˆô�ðIî¶ï8ô�ÑðVô�Òî¶ï6Kô�¦ ô�§ðQî¶ï4ô�”ðMô�•î¶ï2¶ô�Ÿô� ðVî¶ï0ìî¶ï-zô�šð^î¶ï+¯ô�›ð,ô�œð3î¶ï)äô�¤ð:ô�¥ð%îyï&sô�€î¢ô�ð(îyï$>ô�¦ð6ô�§îyï"s îyï ?ô�ð5îyïÍô�Óô�ÔðDîyïô�îyïÎð-îyï\ô.ð5ô/îyï‘ô�îyï]ð>îyï ëð/������� V����¶ ¤<ñZg ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Dorado Hardware ManualError HandlingAugust 1, 198510613% of failures and 11% of time on power supply failures.2% of failures and 2% of time on Terminal and display problems.4% of failures and 20% of time on repairing boards damaged during manufacturing oroverheating.The power supply failures were due to problems that have since been corrected, and most of theservice calls for microcode or software problems would not happen in the more matureenvironment we have today. However, the other failures are believed to be representative. Notethat none of the MOS RAM failures was the reason for a service call. These were found whentesting a machine with diagnostics after a service call had been made for some other reason.Error CorrectionReliability has been improved by error-correction on storage. The Dorado error-correction unit of64 data and 8 check bits (quadword), guards 1152 MOS RAMs from single failures, but almost noother parts on storage boards or in the error corrector are guarded.The failure summary above indicates, for a small sample, that 16k MOS RAMs, accounting for 6%of all DIPs and SIPs (because the 15 Dorados had 2-module configurations, half the maximum)average about 4 times the failure rate of other parts and account for about 1.5failures/year/Doradothis would become 3 failures/year with a 4-module configuration. If wecontinue to do this well, a Dorado with error correction should run for years withoutuncorrectable MOS RAM failures. The manufacturer's literature indicates that the dominantfailure mode appears to be single-bit failures with row and column addressing failures affectingmany bits somewhat less frequent, but we don't know the distribution of these.If MOS failures do become significant, different strategies may be needed for single- and multi-address failure modes. With a multi-address failure, another failure in the same quadword causesa double error; but many single-address failures can occur in the same quadword without doubleerrors.The failure model used below shows that with no periodic testing and replacement of bad MOSRAMs, fatal failure statistics of the 1152 RAMs would approximate those of a 108 RAMuncorrected store. By thoroughly testing storage and replacing bad parts 4 times more often thanthe mean time to total failure of a part (defined below), the likelihood of an uncorrectable RAMfailure crashing the system can be made insignificant compared with other sources of failure.Although system software could bypass all pages affected by a multi-address RAM failure, theentire module, 25% of storage, would be eliminated, so this is impractical except on an emergencybasis. Continuing execution despite a multi-address RAM failure will result in a double errorwhen any other coincident storage failure occurs in the same quadword; 1/16 of future failureswill do this.��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������î¶ïfªpô�€î#q î2ýpô�îFïfñîyïbð9îyï_éð?îyï]µô�®ðRîyï[êî¶ïXxô�–ð%ô�—ð9î¶ïV®ô ðHôî¶ïTãô�“ðGô�”î¶ïSô� ðEô�¡î¶ïQNô�ÉðTô�Êî¶ïL5sô�î¶ïHÃpô�†ð1ô�‡ð1î¶ïFøô�†ô�‡ðPî¶ïE-ô�ðDî¶ïA¼ô�„ô�…ðDî¶ï?ñô�¥ô�¦ðGî¶ï>&ôhðOî¶ï<\ô�±ðYô�²î¶ï:‘ô ôðGî¶ï8Æô�ÖðMô�×î¶ï6üô�ð.ô�®ð2î¶ï51ô�ðNî¶ï1¿ô�¢ô�£ðGî¶ï/õô�ðQô�î¶ï.*ô�–ðOô�—î¶ï,_î¶ï(îô�ŸðPô� î¶ï'#ô�òô�óðAî¶ï%Xô�ô�ðNî¶ï#Žô�•ðHô�–î¶ï!Ãô�ÌðTô�Íî¶ïQô�¹ð;ô�ºð!î¶ï‡ô�Šð$ô�‹ð=î¶ï¼ô�¹ð4ô�ºð*î¶ïñô�¬ðNô�î¶ï'ô�ÿ������� ����¶à<ñQ+����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Dorado Hardware ManualGlossaryAugust 1, 1985107Glossary a - the first 8-bit operand of a two-byte or longer opcode.b - the second 8-bit operand of a three-byte or longer opcode.bypassing - a number of memories and task-specific registers in Dorado (RM, STK, and T, forexample) are written with data that might be needed before the write occurs. These areimplemented so that data about-to-be-written is substituted for data read from the register ormemory when appropriate. This substitution is called bypassing and enables Dorado to runconsiderably faster than would otherwise be possible.cache entry - a munch together with VA of the munch and 4 flag bits. For a 64 row x 4 columncache, VA[28:31] are the word in the munch, VA[22:27] address the row, and VA[7:21] are storedin the cache entry.column - one of 4 groups of 64 (expandable to 256) cache entries. The cache column in which aword with VA resides is determined by comparing VA[7:21] with the corresponding bits stored inthe four columns at row VA[22:27]. Thus a memory word may occupy one of 4 locations in thecache.control processor - the microcomputer on Dorado's baseboard, or the Midas program operatingDorado from an Alto.dirty - a cache entry is dirty if the information in it differs from information in storage, because astore has been done into the cache, and storage has not yet been updated. A page is dirty if astore has been done into the page since its map dirty bit was cleared.emulator - the lowest priority task, number 0, always awake. The emulator is distinguished by thefact that it cannot block, can use Stk, and has a private pipe entry. Primarily the emulator taskwill implement instruction sets.entry vector - the exit microinstruction of an opcode sends control to the first microinstruction ofthe next opcode by means of IFUJump[n] (n = 0 to 3), where n chooses one of 4 entrymicroinstructions for the next opcode; these four microinstructions are the next opcode's entryvector.fault task - the highest priority task, number 15, woken whenever a memory fault or stack erroroccurs.hit - a reference which finds the desired word in the cache.Midas - the Alto program used for loading and debugging Dorado remotely.miss - a reference which does not find the desired word in the cache.module - the unit in which storage is packaged, either 64K, 256K, or 1M words. A machine mayhave 1 to 4 modules.ÿ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������î¶ïfªpô�€î%åqî5pô�îE˜ïfñî¶ïa×rp�î¶ï^es�pð:î¶ïZós�pð=î¶ïWqpô�¯ô�°ð;î¶ïU·ô�ñð:ô�òî¶ïSìô�Èð/ô�Éð/î¶ïR"ô�Øð5ô�Ù�qpî¶ïPWô�ð5î¶ïLåqô�Ž p ô�ðHî¶ïKô�ð+ô�‘ð3î¶ïIPô�î¶ïEÞqpô�’ð@ô�“î¶ïDô�ð"ô�‘ð<î¶ïBIô�–ð6ô�—ð%î¶ï@~î¶ï=qô�·pô�¸ðHî¶ï;Aô�î¶ï7Ðqpô�Žq pô�ðEî¶ï6ô�£ð;ô�¤qp î¶ï4:ô�ðFî¶ï0Èqô�ˆ pô�‰ð7î¶ï.þô�Ÿðbî¶ï-3ô�q�î¶ï)Áô�—pð.ô�˜ð)î¶ï'÷ô�Ýô�ÞðDî¶ï&,ô�¾ðGô�¿qî¶ï$ap�î¶ï ïqô�Ÿ pô� ðUî¶ï%î¶ï³qpô�ð9î¶ïAqpðCî¶ïÏqpðAî¶ï]qpô�ð>ô�î¶ï’ô�������� V����¶K<ñXÀ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Dorado Hardware ManualGlossaryAugust 1, 1985108MTBF - mean time between failures.munch - 256 bits, or 16 machine words; the unit of data for main storage.parity - the parity of a data unit is the exclusive-or of all bits in the data unit; parity has theproperty that changing any single bit in the data unit will also change the parity, so it can be usedto detect single failures. A data unit has odd parity when the number of 1's in the unit is odd,even parity when the number of 1's is even. Dorado uses odd parity everywhere, which meansthat the number of 1's in the data unit including its associated parity bit should be odd when datais correct.PC - "program counter". In this manual PC refers to the 16-bit byte displacements relative to BR31 (the codebase) which are maintained by the IFU for the current instruction set. This termshould be distinguished from TPC, which refers to the address of the next microinstruction for atask.pipe - a 16-entry memory which records the state of the last few storage references.quadrant - one of the four 4k-word regions in a 16k-word control store.RAM - "random access memory"; selected words in the memory can be both read and written.reference - a reference to the memory, initiated by the processor or by the IFU. A processorreference transfers a single word between the cache and the processor; an io reference transfers amunch between storage and an io device.ROM - "read-only memory"; the contents of the memory are specified when the hardware isconstructed and cannot be modified during program execution. ROM elements used on Doradocan be reprogrammed with a special device constructed for the purpose.row - one of the 64 or 256 groups of 4 cache entries. The cache row in which a word resides isdetermined by bits 20..27 of its virtual address.storage - the main memory of the machine, organized in munches of 256 bits, or 16 machinewords.storage reference - a reference to the storage, initiated as a result of a memory reference. Aprocessor reference causes a storage reference if there is a cache miss or if the FDMiss control istrue in the memory control register; an io reference always causes a storage reference.storage reference number (SRN) - an address of a pipe entry which identifies a particular storagereference.subtask - a two-bit number presented by an io device to the processor and memory system whileits task is running. The processor OR's subtask with RBase[3]..RSTK[1] in determining the RMaddress and with MemBase[2:3] in determining the base register selection. The memory systembuffers the subtask for fast io devices, and then sends it over the Fin or Fout bus as part of deviceidentification.tag - The extra bit in Md readout which complements for successive Fetch_'es and Store_'s bythe same task. Agreement of the bit in Md with the current value equals reference finished.ÿ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������î¶ïfªpô�€î%åqî5pô�îE˜ïfñî¶ïbqpî¶ï^¬qpðDî¶ï[:qô�³pô�´ðMî¶ïYoô�…ð!ô�†ðDî¶ïW¥ô�¡ð"ô�¢ q pð+î¶ïUÚqô�© pô�ªð6î¶ïTô�†ð1ô�‡ð2î¶ïREô� î¶ïNÓqpô�„ô�…ðIî¶ïMô�´ðMô�µî¶ïK>ô�˜ð.ô�™ð2î¶ïIsî¶ïFqpô�ðPî¶ïBqpð?î¶ï?qô�§pð4ô�¨î¶ï;«qpô�ºô�»ðIqî¶ï9ápô�ð=ô�žqpî¶ï8ô�ð'î¶ï4¤qô�Ápð.ô�Âð#î¶ï2Úô�œð)ô�ð0î¶ï1ô�ðFî¶ï-qpô�—ð!ô�˜ð;î¶ï+Òô�ð1î¶ï(`qpô�¼ð:ô�½î¶ï&–î¶ï#$qô�Ãpô�ÄðLî¶ï!Yô�–ô�—ð8qp î¶ïô�ðWî¶ïqô�pðCî¶ïR î¶ïàqô�– pð*ô�—ð)î¶ïô�¢ð]î¶ïKô�©ð>ô�ªî¶ï€ô�ðJô�‚î¶ï¶î¶ïDqô�£pð!ô�¤ð5î¶ï yô�¿ð3ô�Àð)�������4����¶ 2<ñ]Ù+������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Dorado Hardware ManualGlossaryAugust 1, 1985109task - one of the 16 priority scheduled tasks. Special tasks are the emulator (task 0, lowestpriority) and the fault task (task 15, highest priority). Other tasks are paired with io controllers.VA - virtual address.Vacant - a cache entry or map entry which does not contain valid data.Victim (Vic) memory - stores 4 bits for each cache row. Two of the bits specify the victim whichwill be chosen if a reference to that row results in a miss, and the other two are the next victim.victim - on a processor reference that causes a cache miss, the cache entry chosen to be replacedby the referenced data.WP - write protected. Map entries and cache entries have bits with this name.��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������î¶ïfªpô�€î%åqî5pô�îE˜ïfñî¶ïbqô�ËpðHô�Ìî¶ï`Sô�Ÿðfî¶ï\áqpô�î¶ïYoqpð@î¶ïUýqô�“p�qpô�”ð2qpî¶ïT3ô�–ðJô�—î¶ïPÁqpô�šð/ô�›ð,î¶ïNöô�î¶ïK„qpðL�������Ø����¶K=<ñÎ�_����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������R oddJCNFFBLOCKASELLCBSELALUFRSTKALU carryALU[15]{BSEL, FF}Md *Md *Md *QTFF[4:7]FF[4:7]>>TRSHIFTER161616>>{LC}16ALUFM>>{xxx} Source of ControlTask-Specific**{LC}{BSEL}ControlBAALUAddress LogicFF[4:7]0,,FFFF,,0FF,-1-1,,FF{ASEL}{ALUF}Q16R'T'Programmer's View>>>>ALU=0ALU<0SubTaskALU rsh 1ALU lsh 1To devices16R < 0>IOBALUFMShCTIOA, StkPAMuxAMuxBMuxFFRF_WF_ShC_SubTaskShiftControlsRMSTKRSTK[0:3]{FF}RSTK[1:3]StkpSaved StkpRQFF[4:7]Md*T{FF}>>>>>>>>>>>>>>>>>>>ShC16168B+RBaseCnt>>>>>>>>B>Stkp>>>>>>>>>>T*MemBase*TIOA*CntOverflowCnt=0&-1oPipe0Pipe1Pipe2'Pipe3'Pipe4'ConfigDBufooFaultInfo'gh>hgLinkRWCPRegoMemCMemDIFUControlBMuxghoPointers16IOBIOAB>>>>>>>>>>ALUBrLo_BrHi_CFlags_ghMarMuxLoadMcrAB>Mar+>>>>>>>>>>>>>>>>>>>>>>>MapBuf_>>DBuf_MemX>>Store_Map_LoadMcrLoadTestSyndromeFetch_Store_Map_PreFetch_IOFetch_IOStore_MemoryIFU>>To ProcessorTo ControlMd*Fout>>>>>Fin>IFUFetch>10161681681616F/GF/G>16{FF}{FF,ASEL}{ASEL}MultiplyDivideCDivideQ lsh 1Q rsh 1{BSEL}DoradoFigure 1From devices{JCN,FF}>>>>>RdTPC_LdTPC_IM_Link_{FF}MOS_GenOut_BrkIns_>{ASEL}MemX{FF}{shift mask}Md*/0Carry'IOAtten'>>>>{FF}o>IFUTest_{FF}{FF}MemBX>FF[6:7]BR{ASEL}IdPdPipe5'PdA_IdRisIdA_IdTisIdPdId{ASEL}{FF}ProcSRN_B[12:15]IFaddr>B[3:7]MemBIFUMRH_IFUMLH_Id0 or 1by IFU256 x 16256 x 16PCX'Junk'IFUMLH'IFUMRH'BMux>D1ProgView.sil87/28/85012345677654321021001221001233210��îtïKØðîDXï ðî3ï ðî(ïðî%:ï ðîï ðîVï ðî�ï ðîï ðîÇïòþ�$UîGïdþ�$îEtïdþ�$îC;ïdþ�$îAïdþ�$î>Éïdþ�$î<ïdþ�$î:Wïdþ�$î8ïdþ�$î5åïdþ�$î3¬ïdþ�$î1sïdþ�$î/:ïdþ�$î-ïdþ�$î*Èïdþ�$î(ïdþ�$î&Wïdþ�$î$ïdþ�$î!åïdþ�$î¬ïdþ�$îsïdþ�$î:ïdþ�$îïdþ�$îÈïdþ�$îVïdþ�$îïdþ�$î äïdþ�$î«ïdþ�$î�ïdþ�$î rïdþ�$îïdþ�$î9ïdþ�$îÖïT¼ð îdïZJðî GïVfð î#Hï6tðîïGðîäï)eðî4Éï<×þ�$�Žî#Hï3ðî#Hï4Éðîdï\Êþ�$î%:ï`®ðî;tï\ƒþ�$Çî7×ï\_þÀ�$î7×ï\_þ�$ëîï]Xðîdï_µþU�$îºï\Êþ�$îdï\§þy�$îï]5þù�$îÖï]Ÿþ�$îÈ|ï[/ðîÈïY…ðî#tïBfðî#Hï8ðî2ï3óþ�$äîï<mþ«�$îÈï8þ�$rîï7ûþ�$•î«pï9‚ðîï:Âþ]�$îï9þ]�$îtï:Wðîsï9Éþ�$î Öï:Wþ�$î ¹ï:Âþ«�$îdï:åðîdï9;ðî ¹ï9þ«�$î Öï8¬þ�$î¹|ï7ðî¹ï5gðîï'ºþ�$�îï'—þ•�$îäï*ìþ•�$î9tï&žðî",ï*ðî2ï=fþ�$Uî2ï=Bþr�$î2ï<´þr�$î3ï?ðî1s|ï1<ðî1sï7 ðî«tïGðîäïòð î«pï«ðîVïOtðî rtïDŸðî&åï9;ðî3ï=ôðî3ï4‚ðî3ï:åðî3epï7×ðî7ï3Ðþ�$ î2ï3Ðþr�$î#Hï,PþG�$î#Hï-úþG�$î«ïO-þ�$9îïOßþ�$¤îïOßþ$�$îïPþ�$€î«tïM‚ð îïM_þ�$ÎîïM_þy�$îsïM‚þ�$«îïO þV�$îòïQôðî#Hï1sðî#Hï.ðî#Hï,sðî#Hï/Éðî&åïKJðî3ïAðîdïYQþU�$îºïVþ�$ÇîdïVŠþy�$îpïW<ðî ¹ïWíþ«�$îdïWƒþ�$îtïXðîï,—þr�$î!žï)óþ�$îï:åðîï9;ðî¬rïäðî�|ï&gðîHïT=ðî5žï&zþ•�$îBï%ðî�ïMKðî ïE»þ�$+î8etï4‚ðî8eï3eðî rïNðî<×ï=Bþ9�$î<×ï>íþ9�$î=fï=fð î=fï;»ð î;»uï&Wð î8ôï7×þ�$î9‚tï8eðîïJ»ðî�|ïJ=ðî«ïòþ�$Uîïòþ�$Uî:ïòþ�$Uî!åïòþ�$Uî(ïòþ�$Uî*Èï€þ�$Çî<ïòþ�$UîIæïdþ�$îLïdþ�$îÇïÏþK‘�$îNXïòþ�$UîÇï$þK‘�$î=ftï?ðî<×ï@—þ9�$î=fï@»ðî=fïE»ðî=fïDð îrï3Bþr�$îrï3eðîrï1—þr�$îrï1ºðîrï/ìþr�$îrï0ðîäï1—þ«�$îï/ìþÇ�$îï0ðî ï1—þG�$îï1 þ�$îuï3eðîï1ºðîï0ðîï7ûþ«�$î+Wï_üþ«�$î-ïb5þŽ�$î*:tïe ðî2ï@—þr�$î«uï2Iðî«ï1,ðîrpïIæðîïK´þV�$îsïH‚þ�$UîïH_þy�$îïH_þ�$yîïGBþV�$îsïDþ�$UîïCíþy�$îïCíþ�$yîrïEtðî VïJ þÇ�$î VïE»þ�$rî VïE˜þÇ�$î ïGÑþÇ�$î¹ïRíþ�$îVïO-þ�$äî¹tïSð îïA´þ�$¤îsïJ˜þ�Ž�$îïE»þ�$�îsïE˜þ�²�$îïBÐþä�$îï?žþ�$Uîï?{þ�$îï?{þ�$yîïA´þ�Ž�$î"sïBBþ�$î-ï]çþ�$rî(ï+Wþ�$ Vî(ïE˜þÇ�$î'sïJ-ðîï>‚ð î«ï@-ðîï@ þ9�$îVï@—þ9�$î ï=ôþ�$ÇîVï=Ðþ]�$îVï=Ðþ�$ëî ï?{þÇ�$î Vï>‚þ�$Žî VïA&þÇ�$î�ïBôð î7ï=fþ�$Uî5žï+zþr�$î#ï7ûþ��$îïH_þÖ�$îÖïE»þ�$äî#ïGfðî#ïDðî#ïE»ðî#ïIðîï)Aþ G�$îÖï(Hþ�$äîóï*ðîHïIŸðîïKØþ�$«î�|ïFYðî�ïAçðî rïDöðî rïCKðî'sïE=ðî'sïC’ðî'sïAçðî'sï@=ðî'sï>’ðî'sï4Kðî'sï2 ðî'sï0õðî'sï/Jðî'sï- ðî'sï+õðî'sï*Jðî'sï( ðîºï%‘ðîºï'<ðî(ïAIþ�$äîäï1 þ�$îäï.óþ�$äî ï3ÐþU�$î äï/‚þ�$rî ï/^þy�$î ï/^þ�$•î Öpï0åðîrï1,þ�$î�tï1ºðî=fïCíþ«�$îäï.óþ�$Žîï>^þ9�$îòï^.ðîï@»ðî GïXðî +ï>ÉðîdpïPØðîòï]Ÿðî%:ï`Šþ�$î*:|ï[/ðî*:ï\Úðî+åï\Lðî�ï=vðîrïBÐþä�$î9ï<Yðî9ï:®ðî9ï;Ëðî9ï? ðî rïA&þä�$î �tïAIðî9|ï=vðî«pï@»ðîÇ|ï/’ðîÇï-çðîÇï,<ðî rï-çðîÈï,<ðîÈï-çðî Vï(%þ�$î9ï'<ðî9ï%‘ðî Vï*þÇ�$îïH¦þr�$îÖï*^þ��$îºïCðîºïD¯ðîdïVþ�$ÇîÈpï)eðîÖïGBþ ¹�$î.eï`gðî-×ï^¼ðî6,ï(ðî7ï&åðî=ftïBfðî#ï4¥þ��$î8eï2IðîÖï`gðîÇï#%þ�$îÇï!zþ�$îÇïÏþ�$îÇï%þ�$îÇïzþ�$îÇïÏþ�$îÇï$þ�$îÇïzþ�$îäïþ�$ äîäpïäðîÇtï#HðîÇï!žðîÇïóðîÇïHðîÇïðîÇïHðî ï¤þr�$î ïÈðîpï:ðî&ïþ9�$î&ï³þ9�$î-Iïþ�$9îAïðîÇtïð î+ï)Aþ �$î5ž|ï!ðî5žï!ðîBfï ‘ðî*Èï#úþ9�$î-ï Øðî-ï Øðî:WïOþ«�$î:Wï¤þ«�$î:åtïsðî:åïÈðîAï¬þ�$äî&ï]þ9�$î-IpïðîòuïrðîVïrðî/:ïºðî@»ïºðîpï ðî&å|ï Øðî&åï Øðî)pï#ðî)¬ï#úþ«�$îïdþ�$Çî7×ï$þ«�Gî=fïE˜þ«�$î=ïBBþò�$î=fïGBþ«�$î=ftïGfðî7ï8Bþ �$î<×ï;—þ9�$î=ï9íþò�$îDï?ÂþG�$îDæï?Wþ�$îEtï?æðî<Ipï$eðî<Iï(×ðîïUØþ�$�ÕîïYuþ�$�Õî äï[õþ�$+îtï_ðîÇï^ßþ�$î äï^ þ€�$îBô|ï4’ðîBôï6<ðîBôï7çðîBôï9’ðîBôï;=ðîBôï<çðîBôï>’ðîBôï@=ðîBôïAçðîBôïC’ðî=ftï8eðî«ïóþ7�Gî6tïS|þU�$î7ïQôðî7ïPJðî7ïLôðîDï7Iþ�$9îï:Wþ�$+îÈï:4þG�$îï>^þH�$î+Wï;Pþ9�$î5žï&žþ�$�î3ï$¬þ�$¹î3ï$ˆþÇ�$î+å|ïLvðî+åïLvðî0WpïO»ðî7tïNŸðî:ï&žþ�$�î-pï;tðî-ï5ðî's|ï:®ðî(ï=fþ�$€î7tïSŸðî>;ï^QþÇ�$îAï[þ�$Uî>;ïZüþë�$î>;ïZüþ�$yî?Wï\<ðî5W|ïKèðî2ïþŽ�$î2ï]þŽ�$î2ï³þŽ�$î2ïþŽ�$îdïdþ�$ÇîÇïuðîÇïÊðîÇïðîÇïtðîÇïÊðîÇïðîÇïtðîÇïÊðî,,ïXðî,,ïðî,,ïðî,,ïXðî1sïØðî?æïŸðî?æïôðî7ïXðî7ïðî7ïðî7ïXðîòïôðîHïôðîïôðîHtïÈðîV|ïôðîsï¤þd�$î"sïôðîòtïÈðîdï¤þr�$îsïdþ�$Çî,uïrðî%È|ï Jðî/:ï JðîuïVðî:ïðî:ïVðî:ï:ðî@tïYßþò�$îGfïMÊþ�$9î@tïM¦þ�$î@tïM¦þ�$]îAïSæðîAïRÊðîAïQðîAïP‘ð îAïOtðîAïNXðîApïWƒðî7×ï_'þ�$îï\§þd�$îïT˜þ‡�$îïT˜þ�$2î ÈïWÊðîºïWíþä�$îºï^ þ�$î.|ïT„ðî*ÈïRLðî2ï_üþ9�$î9Éï_Jþ�$�Õî/ÉuïZJðî/ÉïWÊð îH;tïUðîH;ïQfðî=|ïWÚðî=ïZðîLïQ/ðîLôïO„ðîM;ïM’ðî;-tïVõðî?W|ïS!ðîAuïUðî.|ïWðî+WtïXXðî*:ïZJþ�$î*ïWÊþ�$îJ»ïRÊþ�$î*ÈïBBþd�$î,sïA×ðî*ï-³þd�$î,,ï-Iðî?Wï(þ�$dî@-ï(×ðî?Wï#þ�$«î@-ï$eðîKØïSXðîKJïPØþ�$îKØïQfðîJ»ïTtþ�$îKJïUðîGfïT¼þd�GîGfïSþ«�GîH;ïSXðîGfïQþ«�GîóïXŸþ�Gî:ïXæðî!žï\Êþ�G9î!žï^¼þ ¹�Gî$óïZ‘þ G�Gî$óïXþ G�Gî$óïUØþ G�Gî rï,þ9�GîºïÈþ�GrîïþÇ�Gî:ïÈþ�Grî:ïþ9�Gî0ï¬þ�GGî-×ïdþ¹�GîC;ïþ�GîHï*ÈþŽ�Gî¬ïFþ+�GîïFØþr�Gîäï)þr�Gîs|ïUðî=ïVþ�$dî=ôtïVõðî%:ï :þ�Gäî%:ï#Öþ«�Gî0Wï :þ�Gäî/:ï#Öþ�Gî#ï6,þ��Gî$óïT¼þ�$î rïMÊþ«�Gî«ï,þ�Gî,sï«ðîÈï,ð î&ïþ9�$îïðîGuïZJðîGïY.ðîGïXðîGïVõðîGïUØðî9tï-×ðî#rïŽðî#ï9ðî;»uïbðîDXtïVðîIŸ|ïJðîIŸïôðîIŸïŸðîIŸïJðîDïÊðîE-ïþ�$€îE»tïðîE-ïúþŽ�$îE»ïÈðîE»ïsðîE»ïðîE-ï¤þŽ�$îE-ïOþŽ�$îE-ïúþŽ�$îAïVþ�Gî2ïðî3ï,ðî3ïðî2ï]þŽ�$î3ïðî7I|ïðî:ï(þ +�Gî&åtï<ðîòuïðîBôtï5åðî@»ï4‚ðî=fï:ðî8eï5žðî<ï+Wðî6tïN{þ«�$î6tïLÑþd�$î6tïP&þd�$î6tïQÑþd�$î<|ïN!ðî<ïLvðî<IïJËðî<ïI!ðî9tïðîï'ºþ�$�î-×pïO-ðî/:ïO»þ�Gdî.eïOtþÇ�Gî2ï²þŽ�$î7I|ïðî3tïÖðî2ïþ�$ Gî?æïHðî7ï!åðî/‚ïbXþ�GÇîºïa`þ@�$îHpïaƒðî#Öïb5þ€�$î*:|ï^…ðîºïaƒþ�$òî#Öïaƒþ�$òîHtïbXðîºïb5þ��$îºïcQþ�$î8¬pï]ðîºtïJ»ðîdï+ðîäï+ðîÇïóðîGfï?æðî,uïBðîsïDðîsï%:ðîºï&žðîtïHÉðî%ÈïZØðîºï-×ðîHï,ºðî:uïsðîdïPûþ¹�$îdïO»þ�$Çî«ïQÑþ¹�$î«ïPmþ¹�$îïR_þ��$îïQCþ�Ž�$îòtïP‘ðî%ÈïXXðî+Wï]çþ�$«î%:ïcàþ�$î*:|ï`0ðî)óïdÙþŽ�Gî%tïdðî%:ï_ðî3ïÖðî3ï+ðî¬ïFØðîÇuïQfðîÇïPJðî6tïKØþ�$äîVtïHÉðîVïDXðî"sïCíþ�$î"sïE˜þ�$î"sïHÉþ�Gî#Hï/¥þG�$î#Hï1PþG�$î#Hï2ûþG�$î(ï2%þ€�$î+ï4ìþ€�$î+Wï;tþ�$Hî+ï$þ�$òî-ï]ÃþŽ�$î2ï]çþ�$rî+WïO˜þ�Õ�$î&ï,ðî&ïðî&ïÖðî&ï+ðî;tï]ÃþÇ�$î9ÉïS|þ�$2î9Éï[Šþr�$îAï\§þÇ�$îCÉïZþ�$Çî;-ïVþG�Gî;-ïTtþ¹�Gî;-ïT¼ðî?|ïPèðîAuïäðî+WtïZØðîBuï€ðî)¬ï²þ�$Îî=tï Gðî?Wï GðîAï GðîCÉï GðîFï GðîH;ï GðîJtï GðîLï Gðî:åï Gðî8¬ï Gðî6tï Gðî4;ï Gðî2ï Gðî/Éï Gðî-ï Gðî+Wï Gðî&åï Gðî$¬ï Gðî"sï GðîÈï Gðîï Gðî :ï Gðîï GðîVï Gðîï Gðî9ï Gðîrï Gðî«ï Gðîäï Gðî �ï GðîÇï GðîŽï GðîUï Gð�������2ä��€M‚c¼ ¦������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Front ViewTop View+5 Volt-5 Volt-2 Volt+12 VoltFanFanqqqqqqqr.625 inr4.5 in.qrq13 in.3.5 in.Fast or slow I/OFast or slow I/OFast or slow I/OFast or slow I/ODispY (Display controller)DskEth (Disk/Ethernet controller)Storage odd or Slow I/OStorage odd or Slow I/OStorage even or Slow I/OStorage evenStorage evenStorage oddStorage oddIFU (Instruction Fetch Unit)BaseB (Baseboard)Storage even or Slow I/Oqr15.5 inqr10.5 inrqPower SuppliesNot toScaleMemC (Memory addressing)MemD (Cache data and EC)The +5 V supply and one fan are controlled by a switch; -5 V, +12 V, and-2 V supplies, the other four fans, and the disk logic and spindle powerBaseB and ContB boards are equipped with temperature sensors that arerepetitively monitored by the baseboard microcomputer; most other boardsmicrocomputer will shut down the three power supplies that it controls.The microcomputer also monitors power supplies; when any voltage or currentdeviates from its allowed range, the microcomputer shuts off power tothe three supplies that it controls. 2315 246 71 24 21ic's of random logic1kx1 ECL RAM's16x4 ECL RAM's256x4 ECL RAM'sThe following shows approximate component count:11 Logic boards:8 Storage boards:10561152ic's of random logic15 in.<>PanelWiringPanelWiringFive 240 CFM (free air) fans estimated to produce375 CFM airflow in the enclosure.Estimated temperature rise of the exiting air is about8 degrees C.Power consumption on each logic board averagesabout 85 watts, on each storage board about 55watts.On each board -5 V power is distributed byfingers reaching across the board on the topside from the back, -2 V power by fingersreaching across the board on the bottom fromthe back. +5 V and +12 V reach across the boardfrom the front on top and bottom. The powerfingers on the bottom feed through to thecomponent side on the top.1600SIP'sThe +5 V supply is used for TTL/ECL conversions andD1CardCage.silFigure 2Card CageSideSideNormal MECL-10000 DIP's are connected to the groundplane and -5V supply. Logic nets are terminatedthrough 100-ohm resistors at one or both ends to the-2V supply. The resistors are in low-profile SIPs thatmount between the DIPs (144 8-pin SIPs per board).ContB (microstore)ContA (branching and tasking)+12 V x 10 A64k x 1 MOS Ram's64k x 1 MOS Ram's(100 ohm terminator resistors)7/11/85is halted. In the event some temperature exceeds 44 degreees C thehave temperature sensors that can be monitored when the Doradoare controlled by the baseboard microcomputer (Located on the BaseBoard)ProcH (Processor bits 0-7)ProcL (processor bits 8-15)DispM (Display color controller)MemX (Map and control)for TTL components. The +12 volts is used for the Ethernet box which is red the Dorado computer.-2 V x 150 A-5 V 300 A+5 V300 A��îï+žð î3¬ï)¬ðî#tï.óðî%:ï1—þ�$î&Wï0žþ�$î%:ï0zþ@�$î%:ï0zþ�$@î%:ïP&þ�$î&WïO-þ�$î%:ïO þ@�$î%:ïO þ�$@îFïP&þ�$îGïO-þ�$îFïO þ@�$îFïO þ�$@îFï1—þ�$îGï0žþ�$îFï0zþ@�$îFï0zþ�$@î#ïPJðîEtïPJðîDæï.óðî-ïO˜þ�$î3ïNþ�$«î-ïMíþ@�$î-ïMíþ�$Îî8ïO˜þ«�$î>ÉïNþ�$«î8ïMíþÎ�$î8ïMíþ�$Îî/:ïO»ðî:WïO»ðî-|ïI¯ðî/:ïI¯ðî0åïI¯ðî9;ïI¯ðî:åïI¯ðî<ïI¯ðîH;ïO˜þ«�$îH;ï1 þ«�$îH;ïKZðîH;ï-çðîÖtïcuðîH;ïI{þ«�$îH;|ïFYðîGtïKØðîH;|ïE=ðîH;ï2YðîH;ï1<ðîHÉïBfþ�$9îHÉï5žþ�$ �îGtï@-ðîGï2×ðî%Èï0åþ!z�Gî%Èï0åþ�GÖî%ÈïOtþ!ž�GîGï0åþ�GÖî +ïbçþ�Gî rï`õþÖ�Gî rïdÙþÖ�Gî rï_þÖ�Gî rï]þÖ�Gî rï[þÖ�Gî rïY.þÖ�Gî rïW<þÖ�Gî rïUJþÖ�Gî rïSXþÖ�Gî ¹ïQfþ�Gî ¹ïOtþ�Gî rïM‚þÖ�Gî rïIŸþÖ�Gî +ïGþ�Gî rïE»þÖ�Gî ¹ïCÉþ�Gî ¹ïA×þ�Gî ¹ï?æþ�Gî rï=ôþÖ�Gî rï<þ�Gî rï8þÖ�Gî +ï7×þd�Žîïegðîïcuðîïaƒðîï_‘ðîï[®ðîïY¼ð!îïWÊðîïSæðîïUØðîïJ-ðîïNðîïPðîïLðîïBfðîï8¬ðî ¹ï:þH�GîïQôðî +ï.eþ�Ž8ôî +ï-×þ�ŽîHïdüþ�$îóïegþ�$«îóï`®þ�$9îe|ï^…ðîeïaÚðîÖïg5þ€�$îŽï8Bþ�$îätïO»ðî«ïQfþ�$òî«ï5åþ�$Hî|ïb÷ðîï5 ðîÖï-úþÇ�$î�tï1sðî«ï2þ�$Uî«ï.eþ�$Çî|ï*Øðîï4ðîrpï5Wðî ¹ïK‘þ�Gî��uï:žðî��ï9‚ðîHïc þU�$îtïDXðîïH;ðî#ÖïeõðHî#ÖïdÙðHî#ÖïbðEî#Öï`õðHî#Öï]ŸðGî#Öï\<ðKî#ÖïZØðEî#ÖïY¼ð$îäï"ºðîäï",ðîäï!ðîäïóðîäïÖðîäïºðî9ï",ðî9ï!ðî9ïóðî9ïÖðî9ï%ð0îäuï#Öðîï#Öðîtï",ðîï!ðîäï",ðî5åï,ºðî9;ï-%þ ä�$î%Èï,,þ�$9îGï,,þ�$9î%Èï-%þ�$î%È|ï)uðîFï)uðîGï5{þ9�$îHÉïLôþ�$ÇîHÉïIŸþ�$9î!åtï@-ðî!åï?ðîCÉï@-ðîCÉï?ðî&åïI{þ�Ž�$î(ïI{þ�Ž�$î)ïI{þ�Ž�$î*:ïI{þ�Ž�$î+WïI{þ�Ž�$î,sïI{þ�Ž�$î-ïI{þ�Ž�$î.¬ïI{þ�Ž�$î/ÉïI{þ�Ž�$î0åïI{þ�Ž�$î2ïI{þ�Ž�$î3ïI{þ�Ž�$î4;ïI{þ�Ž�$î5WïI{þ�Ž�$î6tïI{þ�Ž�$î7ïI{þ�Ž�$î8¬ïI{þ�Ž�$î9ÉïI{þ�Ž�$î:åïI{þ�Ž�$î<ïI{þ�Ž�$î=ïI{þ�Ž�$î>;ïI{þ�Ž�$î?WïI{þ�Ž�$î@tïI{þ�Ž�$îAïI{þ�Ž�$îBïI{þ�Ž�$îCÉïI{þ�Ž�$îDæïI{þ�Ž�$îFïI{þ�Ž�$îEtï5{þ�Ž�$îDXï5{þ�Ž�$îC;ï5{þ�Ž�$îBï5{þ�Ž�$îAï5{þ�Ž�$î?æï5{þ�Ž�$î>Éï5{þ�Ž�$î=ï5{þ�Ž�$î<ï5{þ�Ž�$î;tï5{þ�Ž�$î:Wï5{þ�Ž�$î9;ï5{þ�Ž�$î8ï5{þ�Ž�$î7ï5{þ�Ž�$î5åï5{þ�Ž�$î4Éï5{þ�Ž�$î3¬ï5{þ�Ž�$î2ï5{þ�Ž�$î1sï5{þ�Ž�$î0Wï5{þ�Ž�$î/:ï5{þ�Ž�$î.ï5{þ�Ž�$î-ï5{þ�Ž�$î+åï5{þ�Ž�$î*Èï5{þ�Ž�$î)¬ï5{þ�Ž�$î(ï5{þ�Ž�$î'sï5{þ�Ž�$î&Wï5{þ�Ž�$î(ïKJð1î(ïJ-ð!î.ïLfþ�$«î/ÉïLfþ�$«î1sïLfþ�$«î9ÉïLfþ�$«î;tïLfþ�$«î=ïLfþ�$«î(ïGôð6î(ïFØðî(ïE-ð.î(ïDð.î(ïBôðî(ïAIð*î(ï@-ð,î(ï?ð)î(ï=ôð,î(ï<×ð0î(ï;»ð,î(ï:žð)î(ï9‚ðîäïðî9ïðîïòð3î?Wuïðî$rïðî#ïrð î!åtïAIðîCÉïAIðîïð3îïð0îïdð4îïHð7îï+ð2îï:žðîï<ðî:ï3eðîï.þ�Ž8ôî +ïg5þd�$î +ïgþd�Žî,ï-×þd�Žîäï!ðî9ïºðî ïVðî@tuïòðî#Ötï^¼ðCî#Öï_Øð>î#ÖïcuðHîï@tðîï>‚ðîï]Ÿð îïFIðîïÖðîï ð8îï€ðî:ï1ºðî«ï3eðî«ï2Iðîòï3ðîòï2ðî Öï4Éþ+�Gî�ï1,þ�Gäî Öï0åþr�Gî Öï0åþ�G+îï0åþ�G+îï0åþr�GîHï1,þ�Gäîï4Éþ+�Gîdï4Éþ�Gîsï1,þ�Gäîdï0åþV�Gîdï0åþ�G+������� ¾ä����PmeŠ•����������������������To devices>SubTaskALU carryALU[15]FF[4:7]ALUFM8Task-Specific**ControlAddress Logic{ALUF}Q16Hardware ViewRSTK[0:3]oQAlua8X2XConstantFF0/-1AlubALUTIOA&StkPAluaAluaAlub16FFFF[5:7]2FF[6:7]IFUMemBAlubShifter16{ASEL}(FF}{BSEL}{FF}IOBALU lsh 1ALU rsh 1ALUFM{FF}{Shift mask}{LC}{LC}RF_ShC_WF_Cnt_BCnt_SCMemBX_SCMemBase_SCIFUJumpIFUJumpRBase_SCRSTK[1:3]StkpAlubShCo{FF}Md*RinTinMd*FF[4:7]16>>RTRTShCRTRT>>>>>>>>>dMd*dMd*AlubMd*>>>>>>>>>>>>>>>>>>>>CntStkpRBase>>>>>>>>>>>>MemBXMemRMSTKTIOA*A_SCB_const+>>>>>>>>16T*Base*FF[3:7]dMd*>>>Shift controlsMd*SHASHB{BSEL}{FF}Cnt'Pointers'RinTinT>>>>>>>>>>{FF}gh>>>>>>TQRQhgoProcessor16{BSEL}{Shift mask}MultiplyDivideCDivideQ lsh 1Q rsh 1A_Md1616Figure 35>To memory>16To memoryIOBIOABMux16>SubTaskTo/from Memory, Control, and IFU8>>denotes multiplexor latch>>denotes multiplexor>denotes register or memory>>odenotes multiplexor with inverted outputshgooQRTIdRisIdA_IdTisIdA_IdIddPddPddPd>>>>FF[4:7]2{FF}>B[12:15]RBase_BPointers_B>B[3:7]Pointers_BMemBase_BCarry20XorCarryXorSavedCarry0 or 1Mar'256 x 16256 x 16D1Processor.sil8/31/79��îBfuï"ºð î�|ï*ðî rtïNðîï*:ð îï0žðî5Wï?þ�$�ÕîïY.ðîïY þ²�$î:ïY¼þ�$îï8ôþ�$¹îï8Ðþ•�$îï8Ðþ�$Ýî9ï<%þ•�$îïQCþ�Ž�$î3ï?æþ�$Uî3ïCþ•�$î3ïCþr�$î3ï?Âþr�$î3¬ïAðîE-ï$óðîDXï$eþ�$îäïòð î«pï«ðî9Éï"–þ�$Nî9Éï"–þ•�$î9Éï&Áþr�$îVïPðî7ï?æþ�$Uî3¬tï@tðî«ïO-þ�$9îïO˜þ�$îïO˜þ$�$îïO»þ�$äîïS|þ��$î+ïLôþ�$�ŽîòïMÊð îïM_þ�$ÎîïM_þ �$îïM‚þ�$«îïO þä�$î9ïI{þ•�$î3¬ïC;ðîï/^þU�$îrï,,þ�$Uîï, þy�$îï, þ�$yî9pï-ðîï-Iþ�$î:tï-×ðî!Vrï«ð îï=‰þr�$îïLÑþÖ�$îòïIþ�$äîïHíþù�$îïHíþ�$îïH_þÖ�$îòïDŸþ�$äîïD{þù�$îïD{þ�$îïT þ9�$îVïO-þ�$�îtïT-ð îïBÐþr�$îï>‚þ�$rîï>^þ•�$îï>^þ�$•îïF´þ�Ž�$îïFØþ�$äîïJ˜þ�Ž�$îòïK&þ�Ž�$îïFØþ�$rîòïF´þ�²�$î+WïGôþ�$9î)ïCíþ9�$î*:ïE þ�$î+WïC‚þ�$9î+WïDðî+WïK´þä�$î&åïLfðî/Éï=ôðî(ï?žðî*ÈïA×ðîsï4^þr�$îsï2³þr�$î+Wï3eþ�$9îsï3¬ðîï4‚ðîï2×ðî/Éï:žðî3ï>íþr�$î7ï9‚þ�$Žî3ï9^þ�$²î3ópï;»ðî9;tïFIð î7ï<%þV�$î9ïb5þr�$îÇïbXðî9ï`Šþr�$î9ï^ßþr�$îÇï`®ðîÇï_ðîïb|þä�$îï^¼þ�$äîï^˜þ�$îï^˜þ�$î:ï` þ�$îVï`®ðîï`ŠþÇ�$îäïb5þä�$îïbXðî1ºï%Èðî7ï#þ�$äî7ï$ÏþÇ�$î8ï$óþ�$î/‚ï_Øþ�$î0Wï`gðî.eï`Cþä�$î#ï`gðî/:ïbðîïZØðî(uï=ôðîDXï?žþ�$îDætï@-ðî)¬ïO-ðî*:ïPJðî)¬ï1ºðî*:ï0žðî9;ï?žðî9;ïA&þ«�$î9;ïAIð î9;ïBÐþ«�$î9;ïBôð î9;ïD{þ«�$î9;ïDŸðî<ï:{þU�$î?æï9‚þ�$ äî?Wï7×ðî=ï6»ðî ïDŸðî Öï7Iðî8eïdnþŽ�$î=ôï_‘þ�$�î8eï_nþ²�$î8eï_nþ�$$î«ï`Šþr�$îäuïbXðîäï_ðîäï`®ðîïZØðîïY.ðî«ïXþ�$äî Èï^uðî)¬ïc¼ð î)¬ïbðî«ïQÑþ��$îïP&þŽ�$îòïQÑþ+�$î�ŽïQfðî�ŽïO»ðî9ïBBþr�$î«tï?ð î«ï>íþ«�$î«ï@»ðî«ï@—þd�$îVïA´þò�$î Gï>‚þ�$UîVï>^þ�$îVï>^þ�$yî«ïA&þr�$îÇïBfðî/:ï=ôþ�$ äî/:ï=Ðþä�$î)ïAIþ�$�î/:ï:{þä�$î¬ïDÂþä�$î¬ïAûþä�$î¬ï@Pþä�$î#ïEPþÇ�$î#ïAmþÇ�$î&åïLBþr�$î9;ïF&þ«�$î9;ï?{þ«�$î9;ï=Ðþ«�$î9;ï=ôðî7Iï1ºþ�$äî7Iï3eðî6,ï0žðî&åïHíþr�$î&åï9^þr�$î&åï7´þr�$î :ï5Wðî ïH‚ðî äï;-ðîHïQôðîHïPJðîïZJðî?æï@ þ�$îäï1ºþ�$äî |ïWðî ïUZðî :tïFðî :ïDæðî :ïBðî :ï@tðî¬ïFmþä�$î#ïCÉþ�$äî#ï?Wþ�$äî«ï]çþ�$Žî«pï_Øðî&åtï9‚ðî&åï7×ðî&åïJ»ðî&åïIðî«ï?þ�$rî*:|ïJ=ðî*:ïH’ðî*:ïFèðî*:ïE=ðî*:ï5®ðî*:ï4ðî*:ï2Yðî*:ï0®ðî"sï/ÙðîÇtïGfðîÇï:ðîdï-×ðîÈï3eðî2|ï6Ëðî2ï: ðî>Éï6Ëðî>Éï8uðî>Éï: ðî>Éï;Ëðî>Éï=vðî>Éï? ðî>Éï@Ëðî>ÉïBvðî6,ï\“ðî6,ï^>ðî6,ï_èðî"sïB½ðî"sïAðî"sï>Kðî"sï< ðîÈï0®ðîÈï/ðîeï53þ+�$î"sï1ƒðîòpïYuðîòï@-ðî«ïQfðî5å|ï Jðî5åï!õðî6,ï/ðî6,ï0®ðî:žï0 ðî7Iï3Ðþr�$î8eï5{þU�$î:žï1Êðî ï^…ðî ï\Úðî ï[/ðî¬ï\Úðî¬ï^…ðî(ï_nþ@�$î#Hï`CþG�$î'sï\“ðî)pï_‘ðî9ÉïbðîïKðîÈïFðî:Wï$eðî;tï"ºðî"suïT¼ðî!Vï1,ðîäpï?Wðî Gï@ þd�$î |ï<Yðî ï>’ðî9ï<çðî9ï;=ðî ïC’ðî ïEËðî ïN!ðî ïLvðîÈï:žþ�$îVtï;-ðîÈpï:žðî9‚ï`õðî:žï_‘ðî2Itïc¼ðî9ï3eðî |ï6<ðî ï8uðî ï/’ðîVuïc¼ðî8etï5žðî$eïEtðî$eïAðîï]çðî Öï\ƒðî1,ï4‚ðî1,ï2×ð î2Iïc™þ��$î7Iïaîþ�$î3ï9^þr�$î«ï=‰þ�G�$îòï8ôþ�$¹î«ï8Ðþ�k�$î«ï8Ðþ�$Ýîòï; þ+�$î«ïJ˜þ�G�$îòïFIþ�$rî«ïF&þ�k�$î«ïF&þ�$•îòïH_þ�$î#ïRíþ�G�$î#ÖïO-þ�$äî#ïO þ�k�$î#ïO þ�$îïHíþd�$î,ïGôþ�$îäïGÑþ�k�$îäïGÑþ�$Àî,ïIÂþd�$îóïK‘ðî#ïLŠþ�G�$î#ÖïHÉþ�$äî#ïH¦þ�k�$î#ïH¦þ�$î#ÖïJ˜þ€�$îï; þ�$îäï=Ðþ�G�$î,ï:þ�$äîäï9íþ�k�$îäï9íþ�$î,ï;Þþd�$îÖï:Wðî#Öï:Âþ�$î%:ï:åðîÈ|ï7YðîÈï9ðî;»ï6—þ�G�$î<ï2×þ�$äî;»ï2³þ�k�$î;»ï2³þ�$î"sï8.ðîÈïE=ðîÈïcQþ�G�$îï_‘þ�$äîÈï_nþ�k�$îÈï_nþ�$îïa`þ€�$îäïKmþ�G�$îÈïF ðîºïP&þÖ�$îºïQÑþÖ�$î"sïFðî"sïG½ðî"sïLvðî"sïN!ðîï:4þ��$î"sï6„ðî+åïD{þU�$î tïVðî«ï4ìþ�G�$îòï2þ�$î«ï1Þþ�k�$î«ï1Þþ�$2îòï3Bþ�$î(ïaþ�$î(ï_‘þ�$«î.¬ï_‘þ�$«î3óïaƒþ�$î#ï<ûþ�G�$î#Öï9;þ�$äî#ï9þ�k�$î#ï9þ�$î:å|ïƒðî:åïƒðî2ï Èþ�$Uî2ï ¥þV�$îFïôðîFIï!ðî)óïðî)óïXðî)óï ðî)óï!®ðî&åtï",ðî&åï#³þ+�$î&åï%^þ+�$î+ïeþ�$9î&žï"þr�$î&žï ]þr�$îrï-³þ��$î&åï6 þr�$î&åï6,ðî#Öï4^þ€�$î#ï6Pþ�G�$î#Öï2þ�$äî#ï2lþ�k�$î#ï2lþ�$î&åï ðî&åï#Öðî&åï%þ�$�î+ï"ºþd�Gî,sïVþ�G«î'ºïNþ�$î,ºï þ«�Gî.e|ïƒðî.eïƒðî0Wpï :ðî0åï ¥þ«�$î"ºrïVð îDætï ÈðîDXï :þ�$î<×ï þ G�Gî:ï0Wðî8ôï1sðî«ï3þ��Gî9ï9Éþr�Gî9ïGþr�GîVïJ-þŽ�GîHuï'ºðîHï&žðîHï%ðîHï$eðîHï#Hðî"sïSŸðî rïMÊþ«�Gî.¬ïGÑþd�$î0WtïGfðî.¬ï.‰þ�$î0Wï.ðî/:ïaÊþ�Gî4;ïegþ«�Gî:åïd‘þ�Gî"ºrï �ðî=ôïaÊþä�Gî?æïa<þ�$dîAtïbðîE»|ï^>ðîBôuï_Øð îF|ïRÚðî5ïUØþ�Gdî6»tïVðîBôuïTtð îAIpï ÈðîAIï$óðî,sïþd�Gî?žïVðîCÉïþ�$«îDŸtïVðîE»|ïƒðî<ï4¥þ�Ž�$î<ï4¥þ�$ùî4‚tïe®ðî.¬uïð îäïBôþ�$«îrtïBôðîVïzþ�$ÝîVïzþ�k�$îïþ�$¹îVï3þ�G�$î9|ïðî9ïæðîäïÏþ•�$îäï–þr�$îdtïHðî9|ïæðî9ï‘ðîVïþ�$äîVï²þÇ�$îäï–þr�$îäïAþr�$î«tïHðî«ï ¥þò�$îï,þ�$î«ïþ�$î«ïþ�$Àîï³þÇ�$îŽ|ïðî«tïHðî9|ï ðî9ïtðîVtïÖðîVï+þ�$äîäïÏþr�$îäï$þr�$îVïAþÇ�$î«ïÖð)îï³þÇ�$îï³þ9�$î>;ï"ºþ�$+î8ï(lþÇ�$î:å|ï%Jðî:åï%Jðî=ï(lþ9�$î?Wï$óþ�$î>;ï$¬þä�Gî'ºïT þ�$î'ºïUmþ�$î'ºïW¦þ�$î'ºïY þ�$î+WïVõþ�$î+WïSXþ�$î+WtïXðî+WïTtðî-ïVfþH�Gî+åïXXþ«�Gî-ïUþ�Gî+åïT¼þò�Gî(HïU‘ðî(HïY.ðî(HïWÊðîsïJtðîóuïFðîóïEtðîÈï8eðîÈï7IðîÖtï<×ðîHï<þ�GîAï@-ðîÇï<IðîÇïIŸðî Öï-³þG�$îäï3‰þ«�$î'ºïMíþ�$î#ÖïPûþä�$î*:|ïPZðî*:ïQ½ðî*:ïSöðî*:ïUZðîÈï/‚þ�$�Õî9tïPJðî4‚ïbðî:åï0ðîdïS|þG�$î |ïOËðîòtïSŸðî«ïOtþ�$Gî�ŽuïRÊðî�ŽïSæð î/Éï^˜þ€�$î6,|ïZèðî7Iï]Ÿþ�$9î0tï^¼ðî)uï]Xð î)ï\<ð î2ïFØðî2ïE»ðî2ïGôð îÈï+Wþ�$�Õî9tïQôðî=pïVðî«tïE-ðî«ïIŸðî:ïY¼þ�$îïX5þ�$îïX5þ�$îïXXþ�$äîï\þä�$îïZ&þÖ�$î«ïZ&þr�$î&åïE˜þ9�$î&åïE þ9�$î&åïD{þ9�$î&åïCíþ9�$î&åïC_þ9�$î&åïBÐþ9�$î&åïBBþ9�$î&åïA´þ9�$î1,ï4^þ�$î1,ï2³þ�$î/:ï#úþÇ�$î1sï%¥þŽ�$îïZµþŽ�$î¬ïKmþä�$î+Wï7%þä�$î/:ï$þ�$îBuïðîDXïòðÿ�������&ä���ŽòJßdÙ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������ShData[i]'Mask[i]'Shift' orMdShift andShiftShift Data PathsControlMask[i] = LMask[i] or RMask[i]Mask[i]RESULT[i]AMux[i]BMux[i]MdAcdALUababbaBP = A[8:11] = number of bits to the left of the fieldS = A[12:15] = number of bits in the field - 1ALUF[0:2] controls maskingALUFMvariable by BitBlt (or elsewhere), while ALUFMlocation 14 contains controls for the Not-Aoperation normally used with shifts.By convention ALUFM location 15 is used as aThe hardware actually uses two inputs ofthese is the normal ALU path, and theother is either Md (on a replace-with-Mdshift) or 0. The multiplexor select ischanged to the Md/0 path when thebit is being masked out.SHA.iSHB.ioShift 8Shift 4Shift 2Shift 1The final stage is an inverting 2-in multiplexor whichis disabled when no shift is taking place.The first stage of shifter multiplexing selectsFieldSHASHBShiftRMaskLMaskCountShC bits:234:78:1112:15P+S+115-S16-P-S-116-P-S-1PB[2]B[3]B[4:7]B[8:11]B[12:15]RF_AWF_AShC_BFF[4:7]FF[4:7]FF[0:3]Shift controls come from ShCShift controls come from FFFunctions thatload ShCthe microinstruction that shiftsThe values for RMask, LMask, and Shift Count are and'ed by 17-octal.The 32-bit quantity SHA[0:15]..SHB[0:15] are left-cycled by theshift count and the right-most 16 bits are the shift data.Derivation of Shift Controls16+ALUF[3]R.iT.iR.iT.iA[2]A[2]A[3]A[3]>>>>>>>>>>>>>>between R and T. When shift control istaken from ShC, ShC[2] = 1 selects T for SHAand ShC[3] = 1 selects T for SHB. When the>>The 32-bit quantity SHA..SHB is then left-shiftedshift 4, and shift 2 controls.through an 8-in multiplexor controlled by the shift 8,shift is FF-controlled, SHA and SHB are takenfrom BSEL as shown in the table below.BSEL.0=1BSEL.1BSEL.2when BSEL.0 is 1, and thesource for B is changed to Q.RF_ and WF_ are intended for use with "reasonable" values of P and S.undefinedPdthe Pd multiplexor when shifting. One ofexcept when BSEL.0 is 1 inD1Shifter.silFigure 4Shifter9/5/79��îstïZJð î0WïPØðî0WïRƒð î0WïKØðî9;ïS|þ«�$î:åïR_þ�$�$îVïXðî Èpï=ðî)ótïY¼ðî+åï[fþ�$Çî)¬ïGfðî0WïJ-ðî0WïT¼ð î#ïY.ðî#ïPJðî0WïNðî)ïXŸðî:W|ïPZðî:WïPZðî*:pïSæðî0WïK´þÎ�$î0WïMíþÎ�$î0WïR_þÎ�$î7|ïPèðî7ïPèðî/:ïT˜þÇ�$î"sïY þ@�$î#ïP&þŽ�$î(ïM_þ�$î(ïM_þÎ�$î/:ïM‚þ�$ äî(ï[Cþ«�$î :ïVvðî :ïVvðî7ïJ=ðî7ïJ=ðîÈïWíþ•�$îÈïZ&þ r�$î)tïO»ðîÈï#Hð5îÈï",ð.î)¬ïFIðî(ïa`þ«�$î/:ï^.þ�$Uî(ï^ þÎ�$î(ï^ þ�$yî)¬pï_ðî0åtï`õð.î0åï_Øð+î0åï^¼ð$î0åïbð,î2ïC‚ð(î2ïAIð%î2ï@-ð(î2ï?ð'î2ï=ôð!î2ï<×ðîŽï\_þU�$îŽïZµþU�$îäï[Cþ«�$î ï[fðîŽïWíþU�$îŽïVCþU�$îäïW_þ«�$î ïWƒðî9ï[Cþ�$î9ïZµþ�$î9ïZ&þ�$î9ïY˜þ�$î9ïY þ�$î9ïX|þ�$î9ïWíþ�$î9ïW_þ�$îVïVfþ�$ŽîïZµþ«�$î:ïXŸþ�$Uî:ïY¼ðîVïY˜þä�$îïT¼ðîïSŸðîïRƒðîïVõðî�ïBôð6î�ïA×ð*îäïY¼þ�$äîäïUJþ�$äî�ïO-ð/îÈï4‚ðîsï4‚ðîï4‚ðî$ï5ðî+Wï4‚ðî3¬ï4‚ðî«ï6 þ(�$î$ï3óðî«ï3Bþ(�$î9ï1ºð îï1ºðîï1ºðî$¬ï1ºðî+åï1ºðî3¬ï1ºðî«ï1—þ(�$î#Öï0ðî3¬ï0ðî«ï/^þ(�$î#ï-×ðî*:ï-×ðî4Éï-×ðî«ï-%þ(�$îsï+žðîï+žðî$ï+žðî+Wï+žðî3ï+žðîVï0ðîVï-×ðîVï+žðî«ï*ìþ(�$î«ï*^þ(�$î«ï3Ðþ(�$î$ï(×ðî+Wï(×ðî«ï(%þ(�$î3ï(×ðî9;ï1—þ�$î:Wï+þ�$«î9;ï*ìþ@�$î:Wï.Aþ�Ž�$î;tï.óðî9;ï*^þ�$î:Wï(Hþ�$9î9;ï(%þ@�$î;tï(×ðîrï1—þ@�$îrï+þ�$«îrï*ìþ�$î äï.Aþ�²�$îŽï.eðî9ï-Iðî;tï,ºð îÈïóðDîÈïÖð@îÈïºð:îVpïäðîï_µþ �$îtï_Øð îŽï\ƒðîŽïZØðîŽïXðîŽïVfðî=ïRíþÇ�$î=ïT þÇ�$î=ïU&þÇ�$î=ïVCþÇ�$î=ïW_þÇ�$î=ïX|þÇ�$î=ïY˜þÇ�$î=ïZµþÇ�$î?æïQôþ�$ �î9;ïLÑþ�Ž�$î9ÉïLÑþ�$²î9ÉïR_þ�$î?æïVÑþr�$îsï-×ðîsï0ðîï0ðîï-×ðîÇ|ïX¯ðîÇïWðîÇïT=ðîÇïR“ðî'sïUZðî'sïLvðî>ÉïO=ðî>ÉïPZðî>ÉïQvðî>ÉïR“ðî>ÉïS¯ðî>ÉïTÌðî>ÉïUèðî>ÉïWðî�tïNð'î�ïLôð,î�ïKØð+î|ïVvðîeïT=ðî�tïGfð1î�ïE-ðî�ïFIð6î�ïJ»ð-î�ïIŸð&î9ï(×ðîäï(×ðîsï(×ðî«ï(Hþ�$ äîÈï(Hþ�$ äîVï(Hþ�$ äî!åï(Hþ�$ äî)ï(Hþ�$ äî0åï(Hþ�$ äî8¬ï(Hþ�$ äî:Wï)Aþ�Ž�$î;tï'ºðî;tï&žðîÈïðEî*:ï0ð îAïVõðî2ïBfð)î;tï-×ðî=uï+ð î#rï«ðî#Öïrðî>Éuï€ðÿ�������¤ä���€H_`®ç��������������������������������������������������������������������������������������������������������������������������������������������TNIACIALinkJCNFFIFUAdQ[14]MIRTPCITPCOBNPCCIACIAIncLinkBLinkBMuxIMFFReadyBNTWakeupNextCTaskCTDTLinkAd<rrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrr>>>>>rrCPStrbStartCycleStartCycleStartCycleSwitchT0T0T0T2T0SwitchT0T1T0TPCBypassPh3%4PErT0T2T3T2RSTK[2:3]rCBrRIMIMOutTPCAdT0T1T2T3T4T4T3T2T1T0T0T1T2T3T4T4T3T2T1T0T0T1T2T3T4T4T3T2T1T0T0T1T2T3T4CPRegUseCPRegRAPEncTLink*TPC*+1rrProcessorControlTPIMOutWriteT3WriteT3D1Control.silFigure 5Control Section9/5/79��î6ttïWƒðîAIï^.ðî=fï^.ðî:ï^.ðî7Iï^.ðî3ï^.ðî/:ï^.ðî0åï[fþ�$9î4;ï[fþ�$9î7ï[fþ�$9î:åï[fþ�$9î>;ï[fþ�$9îAï[fþ�$9î8eïdÙðî7ïaîþU�$î6tïSðî7ïT-þ�$Çî6PïJ-ðî7ïQÑþr�$î<ïGfþ�$ î8eïC‚ðî9Éï@»þ�$9î7ïVCþ«�$î>;ï@»þ�$«î<ï9‚þ�$Çî;Pï8eðî:{ï0žðî<ï7%þÇ�$îCÉï7%þ�$*ìî3ï.Ðþ9�$î9Éï,ºþ�$9î6—ï",ðî7ï ìþ V�$îDæï ìþ�$BBî.¬ïM_þ �$î.¬ï&þ�$'sî*:ï&þ�$9î0Âïðî+WïsþÇ�Gî.ïÖðî"sï–þÈ�$î+åï,ºþ�$9î*Èï,ºþ�$9î)¬ï,ºþ�$9î(ï,ºþ�$9î.¬ïdðî<ï;—þU�$îAï^.ðî«ï[fþ�$9î«ïaîþ'�$î$ïWƒðîrïP&þÈ�$îyïLôðîrïNþ�$ÇîHïWƒðîïTtþÇ�Gî :ïO þ9�$îïFIðîïBôþ�$Çî–ïA×ðîVï;-ðî«ï4‚ðî/:ïþ�$9î2ïþ�$Çî,sï#Hþ�$Çî7ï#Hþ�$Çî*:ï*þ�$9î<ï>‚þ�$9î9ÉïE-þ�$9î:åï_Øþ�$9î7ï_Øþ�$9î>;ï_Øþ�$UîAï_Øþ�$9î«ï_Øþ�$9î«ïXŸþ�$ÇîrïSþ�$«îVï6,þ�$9î7ïY.þ�$9î Vï[þ«�Gîsï9íþŽ�$îï9íþ�$$îïMíþ9�$îäï[Cþ�$]îäï]|þÇ�$î¬ï@»þ�$äîï@—þ²�$îÈïJ þ�$ÎîÈïK´þä�$îïGôþ�$9îrï[Cþ�$]î9ï]|þ]�$î9ïKØþ�$Èî9ïK´þ9�$î9ï8eþ�$rî0z|ï ðîäï5 ðî«ï5 ðîÈï2çðîï;Ëðîï?®ðîïD¯ðî:ïFèðîäïFèðîäïJËðîäïOËðîïQvðî«ïQvðîïUZðîVïX!ðîïX!ðî äïX!ðîï\“ðî0WïX!ðî3¬ïX!ðî7ïX!ðî:WïX!ðî=ïX!ðîAïX!ðîAï\“ðî=ï\“ðî:Wï\“ðî7ï\“ðî8¬ïb°ðî7ïUèðî7ïPèðî7ïMðî7ïHðî7ïD ðî;tïD ðî=ï=vðî9;ï=vðî;tï;=ðî;tï6<ðî;tï.uðî;tï"Êðî9;ï)uðî4Éï)uðî2ï"Êðî7ï"Êðî7ï ðî7ïðî1sïXðî1sïtðî+åïtðî+åïðî+åï ðî.ï"Êðî)¬ï"Êðî)¬ï'<ðî(ï)uðî)ï)uðî*:ï)uðî+Wï)uðî.¬ï;ðî.¬ïíðî.¬ï WðîïLvðîïJ=ðî&WïKZðî4ïKZðî0åï)Aþ•�$î4ï%‘ðîï>Éþä�GîÈï>íþ�$Îî"sïºþ�$-î:ï;Ëðîäï9ðîsï<Iþ�$ÇîVï/ìþ³�$î%Èuïðî¹ï7×ð î äï>‚ð îïQð îrïIŸðî9ïA×ðîïLôðîÈïWƒðî3¬ïSðî3¬ïJ-ðî4Éï@-ðî8ï8eðî8ï0žðî5WïdÙðî0WïFØð î%Èï",ðî äïT-ðî7ïeÑþr�$î;tïdÙþ�$î7ïdµþ•�$î7ïdµþ�$@îrïW_þ�$@î9ïMíþr�$î«ïLôþ�$î9ïLÑþ•�$î9ïLÑþ�$@îäïBÐþr�$îVïA×þ�$îäïA´þ•�$îäïA´þ�$@î:ï<%þr�$î¬ï;-þ�$î:ï; þ•�$î:ï; þ�$@î)óï#%þ��$î.óï",þ�$î)óï"þ$�$î)óï"þ�$@î*:ïzþr�$î.¬ïþ�$î*:ï]þ•�$î*:ï]þ�$@î/Éïzþr�$î4;ïþ�$î/Éï]þ•�$î/Éï]þ�$@î5Wï#%þr�$î9Éï",þ�$î5Wï"þ•�$î5Wï"þ�$@î9Éï1—þr�$î>;ï0žþ�$î9Éï0zþ•�$î9Éï0zþ�$@î9Éï9^þr�$î>;ï8eþ�$î9Éï8Bþ•�$î9Éï8Bþ�$@î5WïK&þr�$î9ÉïJ-þ�$î5WïJ þ•�$î5WïJ þ�$@î5WïN{þ�$@î5WïT þr�$î9ÉïSþ�$î5WïRíþ•�$î5WïRíþ�$@îäïWƒþ�$îrïX|þr�$î:ïT¼þ�$Çî«ïT¼þ�$ÇîrïJ-þ�$Çî7|ï'<ðî/:ï þ�$9î#ï yþ"s�$î6tïGþ«�Gî8¬ï@tþ«�Gî9ÉïNŸþ�$î7ïKJþ�$Uî7ïGfþ�$Çîï?þ�$Çîsï8eþ�$Çî2ï%Èþ�Gî9Éï.Ðþ9�$î4;ï,sþ«�Gî,sïeþ�$Çî7ïeþ�$Çî2ïºþ�$Çî5WïO˜þr�$î9;ïbþ�$Çî9;ïeõþ�$Çî+Wïþ V�Gî#ï.ÐþV�$î)ï%Èþ«�Gîï8þr�Gî,sïºþ�$Çî.ïëþ9�$î0WïÖþ�$9î.ï²þ]�$î.ï²þ�$]î-úïþ¤�$î0zïþ�$¤î-úïþ¤�$î-úïþ�$¤î/:ïþ�$9î7ï&þ�$Çî5Wï)Ðþr�$î9Éï(×þ�$î5Wï(×þ�$î5Wï(³þ•�$î5WïN{þ•�$îrïW_þ•�$î :ïLôþ�GrîÈï@—þ«�$îuïWƒðî5žï)Ðþ�$�kî5žï*þ•�$î5åï*:þ�$�Gî:Wï)Aþ�$@î5åï*^þ•�$î5žïO˜þ�$�kî5žïOßþr�$î:ïNÃþ�$@î9ÉïNÃþ�k�$î5åïOßþ�$�kî5åïP&þ•�$î:WïO þ�$@î:ïO þ�k�$î7ïP&þ�$ëî7ï*^þ�$]îVïIæþŽ�Gîï;-ðî4Éïðî:Wï",ðî$ï,ºðî$ï+žðî9Éï(úþ�k�$î:ï(úþ�$@î:ï)Aþ�k�$î'sï,sþŽ�Gî0žïÏþ¹�$î?Wïòþ�$*Èî-ï[Cþ�$]î-|ïX!ðî,ºtï^.ðî,sï[þ:�GîAïaîþ9�$î>;ïc þ«�$îïW_þ•�$î&åuï%ðî(×tï(×ðî(ïNŸðî+žïO þ ¹�$îrï ðîäï ðî Vï ðîÈï ðî:ï ðîïòðî¬ïòðî:ïòðîÈïòðî Vïòðî:ï Öðî¬ï Öðîï Öðî#ï Öðî(ï Öðî0åï ¹ðî,sï ¹ðî(ï ¹ðî#ï ¹ðîï ¹ðî(ïðî,sïðî0åïðî5Wïðî9ÉïðîBï€ðî>;ï€ðî9Éï€ðî5Wï€ðî0åï€ðî9Éïdðî>;ïdðîBïdðîGïdðîK‘ïdðîÖï yþÇ�$î Gï yþÇ�$î¹ï yþÇ�$î+ï yþÇ�$î+ï]þÇ�$î¹ï]þÇ�$îï]þÇ�$îï@þÇ�$îï@þÇ�$îï]þÇ�$î ï@þÇ�$î ï $þÇ�$î$óï $þÇ�$î$óï@þÇ�$î)eï $þÇ�$î)eï þÇ�$î-×ï þÇ�$î-×ï $þÇ�$î2Iï þÇ�$î2IïëþÇ�$î6»ïëþÇ�$î6»ï þÇ�$î;-ïëþÇ�$î;-ïÎþÇ�$î?žïÎþÇ�$î?žïëþÇ�$îDïÎþÇ�$îH‚ïÎþÇ�$îFï þ�$[î#ï þ�$!Vî*Èïðî%Èuï+ðî;ttï<×ðîVïQfðî6 ï(×ðî6tïNŸðîVï0þ�$äî<ï&þ�$ î;-ï3óðî0åï)eþ�$«î"sï1 þÏ�$î<ï5žþ�$Çî;t|ï2|ðî,sïzþ�$Îî+åïXðî Èï%þ«�$î¬tï,ð î:ïHðî9;ïh™þÈ�$îsïWƒþ�$îïWƒþ�$îïX|þr�$î5Wï,ºþ�$9î3ï&þ�$î*^ï",ðî<ï1ºþ�$«î8uïM;ðî8¬ïLðî8ï'sðî8¬ï&Wðî@tïòð î$órïrðî"ºï€ðîAuï�Õðÿ�������Òä��r�ÕH_gç��110001000BRANCH CONDITIONALU = 0ALU < 0FUNCTIONSubroutine ReturnunusedRead TPCWriteTPCunusedunusedGlobal CallLong Jump/CallR is resultTNIA:01234567JCNADDRESS BITSADDRESS BITSADDRESS BITS01111Return001111BRANCHCONDITIONADDRESS BITSRETURNFUNCTIONNUMBERNEXTRead Instruction MemoryWrite Instruction MemoryIFU JumpLocal Jump/CallNext Address FormationJCN[5:7]0123456JCN[2:4]0123456Conditional BranchReturnRSTK[2:3]0123RSTK.0RSTK.1RSTK.2RSTK.3ALUF.0ALUF.1ALUF.2ALUF.3BSEL.0Par.16BSEL.1BSEL.2LC.0LC.1LC.2ASEL.0ASEL.1ASEL.2BLOCKFF.0FF.1FF.2FF.3FF.4FF.5FF.6FF.7Par.17JCN.0JCN.1JCN.2JCN.3JCN.4JCN.5JCN.6JCN.77when B_Link executed infollowing microinstruction.ConditionalJump/Callotherwise, it is a jump.before any modification of TNIA by branchA long, local, or conditional branch is a call iff,write the right half.Good (odd) parity is writtenif RSTK.1 is 0, else bad (even)parity is written.The most significant bit ofdata is RSTK.2 and the leastsignificant 16 bits are B[0:15].JCN.7JCN.6JCN.5JCN.4JCN.3JCN.2JCN.1JCN.0FF.0FF.1FF.2FF.3FF.4FF.5FF.6FF.7BLOCKRSTK.0RSTK.1RSTK.2RSTK.3ALUF.0ALUF.1ALUF.2ALUF.3BSEL.0BSEL.1BSEL.2LC.0LC.1LC.2ASEL.0ASEL.1ASEL.2RSTK.2B.0B.1B.2B.3B.4B.5B.6B.7B.8B.9B.10B.11B.12B.13B.14B.15Data appears on B[7:15]Cnt=0&-1 (decrement Cnt after testing)R < 0R odd-or-FF6061626364656667--Address is in Link.Address is in Link.Figure 6Carry'IOAtten' (non-emulator) -or- Reschedule (emulator)RSTK.3 is 1 to writethe left half of IM, 0 to0001x111undefined234567891011121314151514131211109876543223456789101112131415151413121110987654322345678910111213141515141312111098765432CIA[2:3]CIA[2:3]CIA[2:3]Link[2:15]CIA[2:9]JCN[2:7]JCN[2:7]000000FF[0:7]JCN[4:7]CIA[2:9]RJCN[3:4]0JCN[1:2]JCN[3:4]InstrAddr[4:13]15141312111098765432CIA[10:15] + 1CIA[2:9]Loaded into Link by Call, Return, or IFUJumpconditions or dispatches, TNIA[12:15] is 0;# 000xD1Branching.sil# 1116/26/80Overflow��îäï_ðîäïZðîäïUðîäïPðîï_ðîïZðîïUðîVïUðî ïUðîÈuï=fðîÈtï;»ðîÈï:žðî�uï.óðîrtï-Iðîrï,,ðîrï(×ðîrï'ºðîrï+ðîrï)óðîÈpïZðîÈïUðîFuïPJðî*ÈpïaÊðîäïbXðîïbXðîVïbXðî ïbXðîÈïbXðî�ïbXðî9ïbXðîrïbXðîäïaÊþ�Gî ïdðîäï_ðîäïZðîÈuïUJðîäpïKðîïKðî�ïKðî9ïKðîrïKðîÈïKðîäïFØðîïFØðîVïFØðîrïFØðî9ïFØðî�ïFØðîuïPJðî�ïO-ð îïPJðîVïKØðîVïJ»ðî �ïFIðî ïGfðîrtï&žðîrïðîÈpïFØðîÈï_ðîrïŽðîVuï=fðî �tï;»ðî �ï:žðî �ï9‚ðî �ï8eðî �ï7Iðî �ï6,ðî �ï5ðîVuï.óðî �tï-Iðî �ï,,ðî �ï+ðî �ï)óðî �ï(×ðî �ï'ºðî �ï&žðî«uï?žðî«ï1,ðîï',ð î :tï$óðî :ï",ðî :ïeðî :ïðî'sï#Öþ�$î+åï#Öþ�$î0Wï#Öþ�$î4Éï#Öþ�$î9;ï#Öþ�$î=ï#Öþ�$îBï#Öþ�$îFï#Öþ�$î#ï&zþ(�$îKï$eþ�$9î#ï$Aþ(%�$î#ï$Aþ�$]î#ï$óðî(ï$óðî,sï$óðî0åï$óðî5Wï$óðî9Éï$óðî>;ï$óðîBï$óðîGï$óðî#ï!zþ�$]î#ï!zþ(%�$îKï!žþ�$9î#ï#³þ(�$îFï!þ�$îBï!þ�$î=ï!þ�$î9;ï!þ�$î4Éï!þ�$î0Wï!þ�$î+åï!þ�$î'sï!þ�$î'sïHþ�$î+åïHþ�$î0WïHþ�$î4ÉïHþ�$î9;ïHþ�$î=ïHþ�$îBïHþ�$îFïHþ�$î#ï ìþ(�$îKïÖþ�$9î#ï³þ(%�$î#ï³þ�$]î#ïìþ�$]î#ïìþ(%�$îKïþ�$9î#ï%þ(�$îFïþ�$îBïþ�$î=ïþ�$î9;ïþ�$î4Éïþ�$î0Wïþ�$î#ï",ðî(ï",ðî,sï",ðî1sï",ðî5åï",ðî:Wï",ðî>;ï",ðîBï",ðîGï",ðî#ïeðî(ïeðî-ïeðî1sïeðî5åïeðî:Wïeðî>ÉïeðîC;ïeðîH;ïeðî#ïðî(ïðî-ïðî1sïðî5åïðî:Wïðî>ÉïðîC;ïðîGïðî �ïðîï!åðîï ÈðîÈpïP‘ðîÈïNæð î*Ètï?žðî*ÈïA×ð)î*ÈïBôð3îïðî!åïHðî!åï+ðî!åïðî5åïHðî5åï+ðî5åïð î«ï€þ�$îï€þ�$îï€þ�$îï€þ�$îsï€þ�$îäï€þ�$î!Vï€þ�$î%Èï€þ�$î9ïëþ�$]îJtï ðîFï ðîAï ðî=ï ðî8¬ï ðî4;ï ðî/Éï ðî*Èï ðî.¬ï€þ�$î3ï€þ�$î7ï€þ�$î<ï€þ�$î@tï€þ�$îDæï€þ�$îIXï€þ�$îMÊï þ�$9î*:ï€þ�$î9ï$þK‘�$î9ïëþK‘�$î9ïëþK‘�$î9ï$þK‘�$î*:ïþ�$îMÊïþ�$9îIXïþ�$îDæïþ�$î@tïþ�$î<ïþ�$î7ïþ�$î3ïþ�$î.¬ïþ�$î9ïëþ�$]î%Èïþ�$î!Vïþ�$îäïþ�$îsïþ�$îïþ�$îïþ�$îïþ�$î«ïþ�$îÇï ðî9ï ðî«ï ðîï ðîï ðîï ðî"sï ðî&åï ðîÇï ðîÇïðî9ïðî«ïðîïðîïðîïðîsïðî!åïðî&Wïðî*Èïðî/:ïðî4;ïðî8¬ïðî=ïðîAïðîEtïðîIæïðîÇïÖðîÇïÖðîÈïÖðî9ïÖðî«ïÖðîïÖðîïÖðî#ïÖðî'sïÖðî+åïÖðî0WïÖðî4;ïÖðî8¬ïÖðî=ïÖðîAïÖðîFïÖðîJtïÖðîï#ðî'sïþ�$î+åïþ�$îÈï8eð&îÈï7IðîÈï6,ðî äuï=fðî9ï=fðî9tï;»ðî9ï:žðî9ï9‚ðî9ï8eðî9ï7Iðî9ï6,ðî9ï5ðî9ï3óðî rï3óðîï$óðîïdðî$¬rïÇðîÈtï9‚ðîÈï5ð2îïHðîï+ðîäpïBðîïBðîïBðî ÖïBðî VïBðî�ïBðî9ïBðîrïBðîÈïBð î%:ï`Ñþ�$îDXï^¼þ�$9î%:ï^˜þA�$î%:ï^˜þ�$]î'sï^¼þ�$�Žî+åï^¼þ�$�Žî.ï^¼þ�$�Žî0Wï^¼þ�$�Žî2ï^¼þ�$�Žî4Éï^¼þ�$�ŽîDXï^¼þ�$�ŽîBï^¼þ�$�Žî?æï^¼þ�$�Žî=ï^¼þ�$�Žî;tï^¼þ�$�Žî9;ï^¼þ�$�Žî&Wtï]ðî(ï]ðî*Èï]ðî-ï]ðî/:ï]ðî1sï]ðî3¬ï]ðî5åï]ðî7ï]ðî9Éï]ðî<ï]ðî>;ï]ðî@tï]ðîBï]ðîBïXðî@tïXðî>;ïXðî<ïXðî9ÉïXðî7ïXðî5åïXðî3¬ïXðî1sïXðî/:ïXðî-ïXðî*ÈïXðî(ïXðî&WïXðî9;ïY¼þ�$�Žî;tïY¼þ�$�Žî=ïY¼þ�$�Žî?æïY¼þ�$�ŽîBïY¼þ�$�ŽîDXïY¼þ�$�Žî4ÉïY¼þ�$�Žî2ïY¼þ�$�Žî0WïY¼þ�$�Žî.ïY¼þ�$�Žî+åïY¼þ�$�Žî'sïY¼þ�$�Žî%:ïY˜þ�$]î%:ïY˜þA�$îDXïY¼þ�$9î%:ï[Ñþ�$î%:ïVÑþ�$îDXïT¼þ�$9î%:ïT˜þA�$î%:ïT˜þ�$]î'sïT¼þ�$�Žî+åïT¼þ�$�Žî.ïT¼þ�$�Žî0WïT¼þ�$�Žî2ïT¼þ�$�Žî4ÉïT¼þ�$�ŽîDXïT¼þ�$�ŽîBïT¼þ�$�Žî?æïT¼þ�$�Žî=ïT¼þ�$�Žî9;ïT¼þ�$�Žî7ïT¼þ�$�Žî&WïSðî(ïSðî*ÈïSðî-ïSðî/:ïSðî1sïSðî3¬ïSðî5åïSðî7ïSðî9ÉïSðî<ïSðî>;ïSðî@tïSðîBïSðîBïNŸðî@tïNŸðî>;ïNŸðî<ïNŸðî9ÉïNŸðî7ïNŸðî5åïNŸðî3¬ïNŸðî1sïNŸðî/:ïNŸðî-ïNŸðî*ÈïNŸðî(ïNŸðî&WïNŸðî9;ïPJþ�$�Žî?æïPJþ�$�ŽîDXïPJþ�$�Žî4ÉïPJþ�$�Žî2ïPJþ�$�Žî0WïPJþ�$�Žî.ïPJþ�$�Žî+åïPJþ�$�Žî'sïPJþ�$�Žî%:ïP&þ�$]î%:ïP&þA�$îDXïPJþ�$9î%:ïR_þ�$î%:ïM_þ�$îDXïKJþ�$9î%:ïK&þA�$î%:ïK&þ�$]î'sïKJþ�$�Žî)¬ïKJþ�$�Žî+åïKJþ�$�Žî.ïKJþ�$�Žî0WïKJþ�$�Žî2ïKJþ�$�Žî4ÉïKJþ�$�ŽîDXïKJþ�$�ŽîBïKJþ�$�Žî?æïKJþ�$�Žî=ïKJþ�$�Žî;tïKJþ�$�Žî9;ïKJþ�$�Žî7ïKJþ�$�Žî&WïIŸðî(ïIŸðî*ÈïIŸðî-ïIŸðî/:ïIŸðî1sïIŸðî3¬ïIŸðî5åïIŸðî7ïIŸðî9ÉïIŸðî<ïIŸðî>;ïIŸðî@tïIŸðîBïIŸðîBïE-ðî@tïE-ðî>;ïE-ðî<ïE-ðî9ÉïE-ðî7ïE-ðî5åïE-ðî3¬ïE-ðî1sïE-ðî/:ïE-ðî-ïE-ðî*ÈïE-ðî(ïE-ðî&WïE-ðî7ïFØþ�$�Žî9;ïFØþ�$�Žî;tïFØþ�$�Žî=ïFØþ�$�ŽîBïFØþ�$�ŽîDXïFØþ�$�Žî4ÉïFØþ�$�Žî2ïFØþ�$�Žî0WïFØþ�$�Žî.ïFØþ�$�Žî+åïFØþ�$�Žî'sïFØþ�$�Žî%:ïF´þ�$]î%:ïF´þA�$îDXïFØþ�$9î%:ïHíþ�$î)¬ïY¼þ�$9î)¬ïT¼þ�$9î)¬ïFØþ�$9î%ïZJðî%ïUJðî%ïGfðî2IïKØð î)¬ï^¼þ�$�Žî7ï^¼þ�$9î,sï_Jðî;tï_Jðî7ïY¼þ�$9î.¬ïZJðî7×ïZJðî:ïZJðî<IïZJðî>‚ïZJðî@»ïZJðîBôïZJðî;tïT¼þ�$9î0åïUJðî=fïUJðî)¬ïPJþ�$�Žî7ïPJþ�$9î-ïPØðî;tïP&þ9�$îBïPJþ�$9î;tïPJþ�$9î=ïPJþ�$9îBôïPØðî=ôïPØðî<IïPØðî7IïPØðî?æïFØþ�$9î@-ïGfðî/:ïGfðîC‚ï*:ðîAIï*:ðî?ï*:ðî<×ï*:ðî:žï*:ðî8eï*:ðî6»ï*:ðî4‚ï*:ðî2Iï*:ðî0ï*:ðî-×ï*:ðî+žï*:ðî)eï*:ðî',ï*:ðî:ï+åþ�$�Žî<Iï+åþ�$�Žî>‚ï+åþ�$�Žî@»ï+åþ�$�ŽîBôï+åþ�$�ŽîE-ï+åþ�$�Žî5žï+åþ�$�Žî3eï+åþ�$�Žî1,ï+åþ�$�Žî.óï+åþ�$�Žî,ºï+åþ�$�Žî*ï+åþ�$�Žî(Hï+åþ�$�Žî&ï+Áþ�$]î&ï+ÁþA�$îE-ï+åþ�$9î&ï-úþ�$î7×ï+åþ�$9î7×ï+Áþ�$î:åï,sðî,ºï,sðî&pï.óð,î*Ètï@»ð+î9uïO-ðî9ÉïðîïNðî:åï9ðîÈtï3óð�������Xä��99K´c. %��������������������������������������������������������������������������������������������t2t1dt1ct1bt1at1t0t2t1dt1ct1bt1at1t0t4t3t2t1t0t4t3t2t1t0Phase 0Phase 0Phase 4Phase 3Phase 2Phase 1Phase 0Phase 4Phase 3Phase 2Phase 1Phase 0CTD_CTASKWRITE TLINKMIR LoadedqqqqMIR LoadedCTD_CTASKCTD_CTASKMIR LoadedMIR LoadedMIR LoadedqqqReturn:qMIR LoadedMIR LoadedqqMIR LoadedMIR LoadedqqqqqqqNormal:StartCyclePhase 0StartCycleStartCyclePhase 0StartCycleCIAInc_CIA+1CTD_CTASKCIAInc_CIA+1StartCycleLINK_CIAIncStartCycleCIAInc_CIA+1LINK_CIAIncLINK_CIAIncCTD_CTASKLink clobbered.LINK_CIAIncCIAInc_CIA+1StartCycleqqMIR LoadedqqqMIR LoadedWRITE TLINKCTD_CTASKPhase 0Phase 1Phase 2Phase 3Phase 4t0t1t1at1bt1ct1dt2CTD_BMux[12:15]qt2t1dt1ct1bt1at1t0Phase 4Phase 3Phase 2Phase 1Phase 0CTD_CTASKWRITE TLINKMIR LoadedqqqMIR LoadedqqStartCycleCIAInc_CIA+1LINK_CIAIncTPCI_TNIA (Link)Write TPCClear TLinkXqqRSTK[1]=0->odd1->evenparityTPIMO_IMTPIM Mux _ IMTPIM Mux _ TPCRSTK[3]=0->right half1->left halfD1InstTiming.silFigure 7Instruction Timing10/8/79Read RMALU operaionWrite RM<><><>Calculate next address<>Fetch next instructiont-1t-2qMIR LoadedFetch Instructionq<>Write IM:Read IM:Read TPC:Write TPC:B[12:15] = address (task number). Data from Link. Link clobberedB[12:15] = address (task number). Data to BLink. Data available on B next cycle ONLYLink = address, RSTK[2:3] = 9-bit byte, data to BLink. Data available on B next cycle ONLY. Link clobbered.Link = address, RSTK[2],,B[0:15] = data,Fetch next instructionLink _ CIAIncWrite TLinkFetch next instructionWrite strobeFetch next instructionFetch next instructionFetch next instructionLink_CIAIncTPIMO_TPCWrite TLinkLink_CIAIncCTD_CTASKCTD_CTASKModify address by b.c.Link_CIAIncCTD_B[12:15]��î?ætï5žðî7ï5žðî.ï5žðî%:ï5žðîVï5žðîrï5žðî ï5žðî?æïE-ðî7ïE-ðî.ïE-ðî%:ïE-ðîVïE-ðîrïE-ðî ïE-ðî.ïUJðî%:ïUJðîVïUJðîrïUJðî ïUJðî?æïc.ðî7ïc.ðî.ïc.ðî%:ïc.ðîVïc.ðîï`õðî¬ïRíþ@�$îïRíþ«�$îÈïSðî/ÉïC‚ðî&åïC‚ðîïC‚ðîïC‚ðîÈïC‚ðî/Éï3óðî&åï3óðîï3óðîï3óðîÈï3óðî.¬ï1ºþ�$«î.¬ï,,þ�$Uî.¬ï.AþÈ�$îBï,,ð î@tï1,þ�$9î@tï.Ðþä�$î@tï.eþ�$«îIXï.eþ�$îAï.óðîBï+ð î@tï+zþÎ�$î?æ|ï)uðî@tï+žþ�$9î?æï/ðîäï3Ðþ;t�$î@tï3óþ�$«î?æï>’ðî@tï;-þ�$9î?æï9ðî@tï; þÎ�$îBtï:žð îIXï=ôþ�$î@tï=ôþ�$«î@tï>^þä�$î@tï@»þ�$9îBï;»ð î@tïC‚þ�$«îäïC_þ?W�$îïKJð îäï`õþ�$«î%Èï`õþ�$«î.¬ï`õþ�$«î7ï`õþ�$«î@tï`õþ�$«îïXŸð î0åïXŸð îBïXŸð î7ï]Ÿþ�$Çî7×ï^˜þd�$î#Öï^˜þÎ�$îäï^˜þÎ�$î%Èï^.þ�$«î@tïY þÎ�$î@tïY þ�$]î?æ|ïWðî.ïWðîäïY þ�$îVïWðîäïY.þ�$9î.¬ïY.þ�$9î.¬ïY þ«�$î.¬ïSþ�$«î%ÈïSþ�$«îäïSþ�$«îïSþ�$«îïSþ�$«îäïRíþ5W�$îïC‚þ�$«îïC‚þ�$«îäïC‚þ�$«î%ÈïC‚þ�$«î.¬ïC‚þ�$«î7ïC‚þ�$«î7ï3óþ�$«î.¬ï3óþ�$«î%Èï3óþ�$«îäï3óþ�$«îï3óþ�$«îï3óþ�$«îrpïU‘ðîïPJþ�$9îäïPJþ�$9îäïMíþä�$îäïM‚þ�$«î%ÈïM‚þ�$îïNþ�$9î |ïKèðîïMíþÎ�$î VtïM‚ð î Vï;»ð îï<%þÎ�$î |ï: ðîï<Iþ�$9îï,ºþ�$9î ï*‘ðîï,—þÎ�$î Vtï,,ð îïJ-ð îäïJ˜þÎ�$îV|ïH’ðîäïJ»þ�$9îrïN!ðîVïN!ðîï@»þ�$9îï1,þ�$9îrï>’ðîrï/ðî :ï@-þ�$�Žî :ï@ þ«�$î+åï@ þ�$�²î.ï;=ðî.¬ï=fþ�$9î.¬ï=ÐþÈ�$î9ïW¦þIX�$î9ïIÂþIX�$î9ï:4þIX�$î€ï(lþIX�$îïK´þÈ�$î9ï3þIX�$î9ïWíþIX�$î9ïJ þIX�$î9ï:{þIX�$î9ï(³þIX�$î9ïzþIX�$î.ï/ðî%Èï,—þ �$î%Èï,—þ�$�²îïKJþ�$îrpïbçðî&åtï`õð î0Wï`õðî8¬ï`õð îïSð îïSðî&åïSð îVïO-ðî0åïY¼ð î@tï]Ÿþ�$ÇîVï?žðî8¬ïC‚ð î-ï;»ðî8¬ï3óð îVï0ðî+åï/‚ðî?Wï0ðîBïY¼ð î?ïGfðî?WïHðîVïÖðî8¬ï",ð î.|ï<ðîrï<ðîïóþ�$«î Vtïdð îïÏþÎ�$î |ïÊðîïóþ�$9îï",þ�$«îï",þ�$«îäï",þ�$«î%Èï",þ�$«î.¬ï",þ�$«î7ï",þ�$«î@tï",þ�$«îäï"þ;t�$î?æï<ðî@tïÖþ�$9î?æïðî@tï³þÎ�$îBtïHð îAï,ðîIXïþ�$î@tïþ�$«î@tïþä�$î@tïeþ�$9îBïdð î.¬ïzþÈ�$î.¬ïóþ�$«îÈï",ðîï",ðîï",ðî&åï",ðî/Éï",ðî ï#Öðîrï#ÖðîVï#Öðî%:ï#Öðî.ï#Öðî7ï#Öðî?æï#Öðî!VïÖðî.¬ï]þä�$î7ïþ�$�Žî7|ï<ðî7ïóþ�$«î7ïdþ�$�Žî.ï@þä�$î?Wtï+ðî6tï+ðî-ï+ðî$¬ï+ðîÈï+ðîäï+ðî �ï+ðî/:ïðî&Wïðîsïðîïðî9ïðî.ï þÈ�$îBïòð î?æï –þä�$î?æï +þ�$rîHÉï +þ�$îAï ¹ðîBïÖð î?æï@þÎ�$î?W|ï;ðî?æïdþ�$9î?WïðîVï]þ;t�$î?æïþ�$«î7ïþ�$«î.ïþ�$«î%:ïþ�$«îVïþ�$«îrïþ�$«î ïþ�$«î ï Gþ�$9î �ïðî ï $þÎ�$îÈtï ¹ð îrïHþ�$«îä|ïðî-ïðî8tïð îÈï+ðî>;ï+ðî*:ï+ðî.ïþ�$rî1sïdð î0åï€ðî$¬|ïðî%:ïHþ�$«î%Èïóþ�$«î%:ï<ðî.¬ïÖþ�$rî.ïHþ�$«î?æïHþ�$«î2×tïGfðî8ôïGôðî8ôïFØðî:WïE»ðî+åï0žðî%Èï+ð î/:ïÖðî#ÖïGfðî)eïFØþ�G9î8eïFØþ�G9î)óïGôð î)óïFØðî<uïðî#Örïrðî ÈïÇðî=uïòðîtï^.ðî+Wï^.ðî9Éï^.ðîä|ïZèðî$¬ïZèðî%ÈïZèðî%Èï^˜þG�$î2×ï^˜þr�$î6tïZèðî>Éï^˜þ«�$î7ïZèðî?WïZèðî¬tï\ƒðîäï\§þ€�$î,sï\§þ9�$îä|ïXöðî-ïXöðîótï[fðîï`õþ�$«îï`õþ�$«î rï`Ñþ9;�$îrïc.ðî ïc.ðîïY.þ�$9î |ïWðîïY þÎ�$î VtïXŸð îäï[õþ�$äî.¬ï[õþ�$9îï[õþ�$+î�ï^.ðîr|ïYÌðîï^˜þ�$îsï^˜þr�$îï\Êþ�$dîïZèðîÈïZèðîrpïGð îrï7ðîrï%Èð îäïð î tïðBî ï%ÈðVî€ï7ðmî9ïGfð(î9ïKØðîÈïO-ð îïNðî/Éï=ôðî"sï@-ðî/Éï.eðî/Éïðî/‚ï +ðî+åïÖðî6tïÖð îAï>‚ðî?Wï?žðîïY¼ð î VïY¼ð î äï[®ðî*:ï ðî!žï+ð�������hä��9òIŸbX“����������������������������������������������������������������������������������������������������������������MemBase *Md *Time from0Time fromAddressingCache dataMain storage16<1582Ad<errorsPiper>><<<rrrrrrrrrrrrrBMuxPMaskerRFast output busmapPipex 16 wordssyndromeGeneratesingle bitCorrectEC bitsGenerateFast input busDbufDataEcDataEcStoragedataCacheAdAdMapPipeVAPipeMissColEncodermemoryaddressCacheadderBaseBaseMarPAd====PPP..<<<<1818181818r18r3rrrrrT5AB192023242728315t1t3t4t14t3t5 ort35 - t48t36 - t51t35 - t50t29 - t44t3 - t19t5 - t51MissHitt5t57ReferenceRegistersReferenceD1Memory.silFigure 8Overall Structure of the Memory System7/11/851677 rows x 4 col(256k chips)4096k x 16 words>SINSOUTFIN77 rows x 4 col6..2121..27Real page Flags64K x 1928281681618���î7tïbð î!Vïðîuïa<ð îKtïaƒðîH‚uïegð î5pïe®ð îïe®ð î9ïe®ðîGïc.þ�G«î*Èïd‘þV�Gî*Èïbçþ�GòîÈïd‘þ9�GîÈïbçþ�Gòî.etï_Jðî-ïZ&þÇ�$î7Iï\îþ9�$î7|ïY>ðî0WïDþ�$VîC‚ïOßþ�$îDætïOtðî5ïNŸþ�$î/ÉïF&þ�$î4ÉïSþ�$î/ÉïU&þ�$î3¬ï>^þ�$î4;ï/‚þ�$î+åï=ôþ�$«î'sï=Ðþr�$îï(%þ ä�$î Vïeþ�$î Vï ]þ•�$îdï*Èðî �ï+3þ�$î<ï=ôðî-Iï_µþ�$î!Vï²þ�$îäïyþ�$î"sïH_þ�$î;-ï>^þ�$î+Wï>^þ�$îï_µþ�$î"sï_µþ�$î)ï1ºþ�$«î#ïGBþ�$î+Wï/‚ðî-|ï+®ðî rtïäðîïþ�$ŽîÇïëþ�$•îrïëþ�$•î �ïHðîÇïëþÎ�$îÇï]þ«�$î |ï;ðîÈïðî8eïOËðî'sï5 ðî'sï: ðîï$uðî!Vïtðî«ï'<ðî9ïðî&Wïuðî(ï.uðî/Éï@Ëðîïtðî9ïtðîÈï.uðîï.uðî"sïAYðî :ïAYðî"sïH’ðî#ïKmþ�$ˆî#ïD{þ�$²î!åïHþ�$«î!åtïbðî!ž|ï]¯ðîVï1ºþ�$«îï³þÇ�$îïºþ�$9î(tïVðîºïVðîï€ðî«ï–þ��$î¬ïD{þr�$îïÏþ y�$î(ïÖðî$¬ï"–þV�$î$¬ï%þy�$î(ï ðî-ï%þ�$•î$¬ï%þ�$•î&åï"ºþ�$Çîï7ð î!åïºþ�$!åî!åï>‚þ�$î rïðî rïºðî�ïsð îïðîVï,ºðîÇï-×ðîÈïbðî!åïJ-ðîï)eðî ï!žðî ï*þ�$«î9ï*þ�$9î«ï!žðî �ï)eðî Vï&žðî Èï:ðî :ï;»ðîVï&žðî%Èï:žðî&Wï/Éðî'sï8Ðþk�$î;»ï8ôþ�$«î=ôï?{þ�$•î:žïA×ðî/Éï@-ðî*Èï?{þ�$•î5Wï?{þ�$•î/:ïA×ðîBôïA×þ�$UîAIï?{þ�$]îAIï?{þy�$îDŸï?žþ�$9îAIïA´þU�$î;»ïDþ�$î9‚ï?{þ�$•î9‚ï?{þ•�$î9‚ïCíþr�$îA×ï@-ðî:åï@-ðî<×ïFØðî<×ïSðî<×ïT-ðî=fïUJðî/:ïVõðî/:ïXðî2Iï\Êðî-ïbðî3¬ïZJþ�$«î8|ï]¯ðî0åïO þ²�$î$¬ï*^þ�$]î-ï*þ�$9î$¬ï1—þV�$î*ÈïCíþ �$î:tïSðî0WïS|þ +�$î7×ïE þ�$•î7×ïE þ y�$îE-ïE-þ�$rî7×ïI{þ V�$îC‚ïIŸþ�$«î@-ïIŸþ�$«î<×ïIŸþ�$«î9‚ïIŸþ�$«îC;pïK‘ðî?æïK‘ðî<ïK‘ðî9;ïK‘ðî8ôïM‚þ�$«î<IïM‚þ�$«î?žïM‚þ�$«îBôïM‚þ�$«î0WïO þ�$îBfïM_þ9�$îDŸïKJþ�$9îBfïK&þ]�$îBfïK&þ�$]î?ïK&þ�$]î?ïK&þ]�$îAIïKJþ�$9î?ïM_þ9�$î;»ïM_þ9�$î=ôïKJþ�$9î;»ïK&þ]�$î;»ïK&þ�$]î8eïK&þ�$]î8eïK&þ]�$î:žïKJþ�$9î8eïM_þ9�$îDïM‚þ�$Uî@»ïM‚þ�$Uî=fïM‚þ�$Uî:ïM‚þ�$Uî9‚ïP´þ�$@î9‚ïP´þ@�$îDŸïPØþ�$î9‚ïVÑþ�$î,s|ï]¯ðî-×ïZJþ�$«î-ïVCþ�$î-ïVCþë�$î4ÉïVfþ�$äî0Wï[Ñþ�$]î0Wï[ÑþÎ�$î0Wï^ þ«�$î&Wï ¹þ�$€îï �þ�$9îïÏþ�$ëîïÏþë�$î%Èïòþ�$Çîï–þÇ�$î9ï!zþÈ�$î9ï*^þÈ�$îÈï>^þ«�$î'sï5žþ�$äîÈï5{þÏ�$îÈï5{þ�$ î ÈïDŸþ�$Çî¬ïGBþ�$î!ïJ þ�$‡î$óïJ-þ�$dî!ïKmþä�$îï æðîrïHþ�$rî äïþ�$ëî äïþ]�$îï+þ�$Çî äïÏþ9�$îÈïóþ�$«îïeþ�$9îäïAþ�$î�ïþ�$Uîäïìþ@�$îäïìþ�$yî9ï!zþ�$ îï!žþ�$äî9ï, þ�$yî9ï, þ@�$î Vï,,þ�$Uî9ï/^þ�$î ï/‚þ�$î ï0zþÎ�$îï1ºþ�$/:î�ï1—þr�$î¹ï]¯ðî5tï>;ðî.¬ï&žþ�$îï&zþÏ�$î1sï0žþ�$�î-ï0zþ•�$î.ï>^þ�$î0åï>^þ�$î*Èï?{þ �$î-|ï,Êðîï"Êðî&Wï)Aþ�$î'sï<%þ]�$î'sï:{þ $�$î'sï6Ëðî'sï8uðîòtï_Jðî#Öï_ðî#ïGôðî"sïHðîïðî-ï/^þd�$îGfï/^þ�$)Ðî>‚ïY þ �$î>‚ïVõþ�$9î=ô|ïS¯ðî!Vï4^þ�$î"stï3óðî+Wï"ºþ�$Çî*È|ïuðî*Èï)Aþ�$î+åtï(×ðîÈïºþ�$rî$¬ï*^þV�$îï]þ�$î!åï Gþ�$9î*:ï Gþ�$9îï Gþ�$9î|ïtðîsïtðî!Vïtðî%Èïtðî)¬ïtðîÖtïVðî9;ï]þ�$äî8¬ï_µþ�$î:Wï_Jðî7ï[õþ�$9î!žïVðî&ïVðî4Éï=fðî2Iï>‚ðî2Iï=fðî/:ï>‚ðî/:ï=fðî,sï>‚ðî,sï=fðî4Éï>‚ðîKï\ƒðîJ»ïC‚ðîJtï4;ðîIŸï&žðîÇïFØðîÇï@»ðîÇï?Wð îÇï ð îÇï+ð îÇïóð îÇï+ðîÇï3óðîIŸuï,sðîCÉï,sðîC‚tïHðîIXïHðîuï` ð îïd‘þ«�Gîsïbçþ�GòîÇïbçþ�Gòî(ïbçþ�Gòî!åï€þ�$«î0åtï[õð îH‚uïdJð î!ïJ þä�$îBïðî#rï+ðîäïÇð&îVï3Bþ �$îäï3Bþ�$]îVï4^þ�$îBuï9ðî'stï(×ðî!åï þ�$«îäï8ðîÈï#Öðîï$óðîV|ï»ðîtïðîÖï3¬ðî ï8ðî;tïQðî3¬ïLôðî3ïQôðî$óï*Èð î*Èï*Èðî&ï.ðî1sïE»ðî1sïT¼ðî¬ïþ�$-×îïkþ²�$îÈïVðîïÁþ�$î ïˆþ�$îòïðîVï,,ðî«ï,—þ�$îºï3óðÿ�������‰ä��Ç]K´dµØ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Figure 945678910111213141516171819202122232425262728293031VAxxxStored in address section<>Row><4k-wordCacheMunchWord in256-wordPagexxxxxxxxC2C3C4C5C6C7C8R2R3R4R5R6R7R8Word in pageC1R1C0R0xxCache, Map, and Storage Addressing<><>Map Addressing101112131415RPRPRPRPRPRP24252627VAVAVAVA00010203040506070809RPRPRPRPRPRPRPRPRPRPReal page from Map><Page256-wordR2C2R4R3R5R6R7R8C4C3C8C7C6C5C5C6C7C8C3C4R8R7R6R5R3R4C2R2M1M0M0M1xxR1C1C1R1R0C064k ic's256k ic's64k-bit ic's in Map256k-bit ic's in MapVA31302928272625242322212019181716151413121110987654D1MemAddr.silx = unusedCx = columnRx = rowVirtual Addressing7/11/85<>ColStorage Addressing3130292827262524232221201918171615141312111098765445678910111213141516171819202122232425262728293031VABRMar4567891011121314150123Mar + BR = VAStorage size3210151413121110987654MarBRVA3130292827262524232221201918171615141312111098765445678910111213141516171819202122232425262728293031Virtual AddressingBmux,,Mar + BR = VA456789101112131415Bmux,,MarBmux(long Fetch)(Normal Fetch)765423VNVsAd.0-sAd.7CacheA AddressingCache4k-wordVA31302928272625242322212019181716151413121110987654CacheD Addressing4567891011121323Dad.0-Dad.13 (Bits 2 and 3 not used)Dad.0 and Dad.1 are made up from Hit or Victim.Dad.0-Dad.13103287654104567823xxMapAd.0-MapAd.8��î#rïðîï@—þ?�$î@-ï>;þ�$€îï>þ?4�$îï>þ�$¤î%:ï>;þ�$�Õî'sï>;þ�$�Žî)¬ï>;þ�$�Žî+åï>;þ�$�Žî4Éï>;þ�$�Žî2ï>;þ�$�Žî0Wï>;þ�$�Žî.ï>;þ�$�Õî=ôï>;þ�$�Žî;»ï>;þ�$�Žî9‚ï>;þ�$�Žî7Iï>;þ�$�Õîrï>;þ�$�Õî«ï>;þ�$�Žîäï>;þ�$�Žîï>;þ�$�Žî#ï>;þ�$�Žî Èï>;þ�$�Žîï>;þ�$�ŽîVï>;þ�$�Õî Gï>;þ�$�Õî€ï>;þ�$�Žî¹ï>;þ�$�Žîòï>;þ�$�Žîï>;þ�$�ŽîÖï>;þ�$�Žîï>;þ�$�Žîòtï>Éðîrï>Éðî«ï>Éðîäï>Éðîï>Éðî Vï>ÉðîHï>Éðîï>Éðîï>Éðîòï>Éðîsï>Éðî¬ï>Éðîï>Éðîï>Éðî!Vï>Éðî#ï>Éðî%Èï>Éðî(ï>Éðî*:ï>Éðî,sï>Éðî.eï>Éðî0žï>Éðî2×ï>Éðî5ï>Éðî7×ï>Éðî:ï>Éðî<Iï>Éðî>‚ï>ÉðîBpï>‚ðîï8Bþ?�$î+åï8eþ�$�Žî4Éï8eþ�$�Žî2ï8eþ�$�Žî0Wï8eþ�$�Žî.ï8eþ�$�Õî=ôï8eþ�$�Žî;»ï8eþ�$�Žî9‚ï8eþ�$�ŽîÖï8eþ�$�Žîï8eþ�$�Žîï8eþ�$9î7Iï8eþ�$9îòtï8ôðîrï8ôðî«ï8ôðî'sï8eþ�$�Žî%:ï8eþ�$îrï8eþ�$�Õî«ï8eþ�$�Žîäï8eþ�$�Žîï8eþ�$�Žî#ï8eþ�$�Žî Èï8eþ�$�Žîï8eþ�$�ŽîVï8eþ�$�Õî Gï8eþ�$�Õî€ï8eþ�$�Žî¹ï8eþ�$�Žîòï8eþ�$�Žîï8eþ�$9î)¬ï8eþ�$9îï9‚ðîVï9íþ +�$î|ï6<ðî ï9íþ¹�$î$ï6<ðî-tï<Iðî7Iï9íþ9�$î=ï9íþ€�$î?|ï6<ðî7Iï6<ðîBpï9‚ðîBï8ðî:tï8ôðî9Éï:ðîBfpïðîBfïäðî�Žïþ?�$î?žï,þ�$€î�Žï,þ�$€îÇï,þ�$�Žîdï,þ�$�Žî :ï,þ�$�Žî"sï,þ�$�Žîï,þ�$�ŽîVï,þ�$�Žîï,þ�$�Žîäï,þ�$�Õî8ôï,þ�$�Žî;-ï,þ�$�Žî=fï,þ�$�Žî/Éï,þ�$�Žî2ï,þ�$�Žî4;ï,þ�$�Žî+Wï,þ�$�Žî)ï,þ�$�Žî&åï,þ�$�Žî$¬ï,þ�$�Õî.etïsðî0žïsðî2×ïsðî5ïsðî7×ïsðî9Éïsðî<Iïsðî>‚ïsðî-ï,þ�$€îï,þ�$€îïºðî Èïºðî#ïºðî%:ïºðî'sïºðî)¬ïºðî+åïºðîÈï,þ�$�Õî+ï,þ�$€î¹ïºðîòïºðîrïºðî«ïºðîäïºðîïºðîVïºðî2ïðî€ïºðî �ïºðîÇïºðîŽïºðîïsðî«ïsðî�ï,þ�$€î9ï,þ�$€î rï,þ�$€î«ï,þ�$€î+rïÖð"î rïþ9�$î r|ïfðî,sïfðî�ïðî,sïðîVpï(ðî@-ï8eþ�$9îrïÝþ2�$î(Htï�ðî*Èï�ðî-Iï�ðî/Éï�ðî2Iï�ðî4Éï�ðî(Hïðî*Èïðî-Iïðî/Éïðî2Iïðî4Éïðî7Iï�ðî9Éï�ðî<Iï�ðî>Éï�ðî7Iïðî9Éïðî<Iïðî>ÉïðîHï�ðîÈï�ðîHï�ðîÈï�ðîHï�ðîÈï�ðîHï�ðî Èï�ðî#Hï�ðî%Èï�ðîÈïðîHïðîÈïðîHïðîÈïðîHïðîHïðî Èïðî#Hïðî%Èïðîïðî¹ïþ �$î',ïþH�$î5W|ïXðîrïXðîC;pï�ðîC;ï«ðîtï ðî!ï ðî&ï ðî#ï ðî(ï ðî+ï ðî-ï ðî0ï ðî5ï ðî2ï ðî?ï ðî<ï ðî:ï ðî7ï ðî7ï«ðî:ï«ðî<ï«ðî?ï«ðî2ï«ðî5ï«ðî0ï«ðî-ï«ðî+ï«ðî(ï«ðî#ï«ðî&ï«ðî!ï«ðîï«ðîÈï ðîHï ðîHï«ðîÈï«ðîï ðîï ðîï ðîï ðîï«ðîï«ðîHï«ðîÈï«ðî ¹ï ðî +ï«ð î9ïrþ�$îºïrþ�$î:ïrþ�$îóïrþ�$îóïrþ�$î$óïrþ�$î'sïrþ�$î)óïrþ�$î.óïrþ�$î1sïrþ�$î3óïrþ�$î8ôïrþ�$î;tïrþ�$î=ôïrþ�$î�ïþ�$î-ïþ�$î rïóþ�$òîsïrþ�$îsï+þ�$«î"sï+þ�$«î,sï+þ�$òîòï¬ðîrïHðî ïþ �$î6»ï,þ�$�ÕîBfpï$óðî=ôtï%:ðî;»ï%:ðî9‚ï%:ðî7Iï%:ðî4‚ï%:ðî2Iï%:ðî0ï%:ðî-×ï%:ðî+åï%:ðî)¬ï%:ðî'sï%:ðî%:ï%:ðî#ï%:ðî Èï%:ðîï%:ðîï%:ðîï%:ðîäï%:ðîdï%:ðîrï%:ðîòï%:ðî¹ï%:ðîÈï%:ðî ï%:ðîVï%:ðîï%:ðîäï%:ðîdï%:ðîï$¬þ�$�ŽîGï$¬þ�$�Žî€ï$¬þ�$�Žîdï$¬þ�$�Žî+ï$¬þ�$�Žîòï$¬þ�$�Žî ¹ï$¬þ�$�ÕîÈï$¬þ�$�Õîï$¬þ�$�Žî :ï$¬þ�$�Žî"sï$¬þ�$�Žîï$¬þ�$�ŽîVï$¬þ�$�Žîï$¬þ�$�Žîäï$¬þ�$�Õî6»ï$¬þ�$�Õî8ôï$¬þ�$�Žî;-ï$¬þ�$�Žî=fï$¬þ�$�Žî-ï$¬þ�$�Õî/Éï$¬þ�$�Žî2ï$¬þ�$�Žî4;ï$¬þ�$�Žî+Wï$¬þ�$�Žî)ï$¬þ�$�Žî&åï$¬þ�$�Žî$¬ï$¬þ�$�Õî�Žï$ˆþ�$¤î�Žï$ˆþ?4�$î?žï$¬þ�$€î�Žï'þ?�$îrïëþ2�$îrï�þ�$î@tï�þ�$îrïVþ�$«î6tïVþ�$«î6tïrþ�$îAuïGð î0žtïºð î0WïÖðî0WïóðîpïRÊðî�ï³þ ä�$îÖï³þÝ�$îAuï+ðî%:|ï6<ðî(ï6<ðî%:ï9‚þ�$�Žî(Hï9íþd�$î&žtï9‚ðî%:ï9íþ�$îpï«ðî>‚tïFIðî<IïFIðî:ïFIðî7×ïFIðî5ïFIðî2×ïFIðî0žïFIðî.eïFIðî,sïFIðî*:ïFIðî(ïFIðî%ÈïFIðî#ïFIðî!VïFIðîïFIðîïFIðî¬ïFIðîsïFIðîòïFIðîïFIðîïFIðîHïFIðî VïFIðîïFIðîäïFIðî«ïFIðîrïFIðîòïFIðîïE»þ�$�ŽîÖïE»þ�$�ŽîïE»þ�$�ŽîòïE»þ�$�Žî¹ïE»þ�$�Žî€ïE»þ�$�Žî GïE»þ�$�ÕîVïE»þ�$�ÕîïE»þ�$�Žî ÈïE»þ�$�Žî#ïE»þ�$�ŽîïE»þ�$�ŽîäïE»þ�$�Žî«ïE»þ�$�ŽîrïE»þ�$�Õî7IïE»þ�$�Õî9‚ïE»þ�$�Žî;»ïE»þ�$�Žî=ôïE»þ�$�Žî.ïE»þ�$�Õî0WïE»þ�$�Žî2ïE»þ�$�Žî4ÉïE»þ�$�Žî+åïE»þ�$�Žî)¬ïE»þ�$�Žî'sïE»þ�$�Žî%:ïE»þ�$�ÕîïE˜þ�$¤îïE˜þ?4�$î@-ïE»þ�$€îïHþ?�$îïLBþ?�$î@-ïIæþ�$€îïIÂþ?4�$îïIÂþ�$¤î%:ïIæþ�$�Õî'sïIæþ�$�Žî)¬ïIæþ�$�Žî+åïIæþ�$�Žî4ÉïIæþ�$�Žî2ïIæþ�$�Žî0WïIæþ�$�Žî.ïIæþ�$�Õî=ôïIæþ�$�Žî;»ïIæþ�$�Žî9‚ïIæþ�$�Žî7IïIæþ�$�ÕîrïIæþ�$�Õî«ïIæþ�$�ŽîäïIæþ�$�ŽîïIæþ�$�Žî#ïIæþ�$�Žî ÈïIæþ�$�ŽîïIæþ�$�ŽîVïIæþ�$�Õî GïIæþ�$�Õî€ïIæþ�$�Žî¹ïIæþ�$�ŽîòïIæþ�$�ŽîïIæþ�$�ŽîÖïIæþ�$�ŽîïIæþ�$�ŽîòïJtðîrïJtðî«ïJtðîäïJtðîïJtðî VïJtðîHïJtðîïJtðîïJtðîòïJtðîsïJtðî¬ïJtðîïJtðîïJtðî!VïJtðî#ïJtðî%ÈïJtðî(ïJtðî*:ïJtðî,sïJtðî.eïJtðî0žïJtðî2×ïJtðî5ïJtðî7×ïJtðî:ïJtðî<IïJtðî>‚ïJtðîïNXþ�$�Žî ÈïNXþ�$�Žî#ïNXþ�$�Žî7IïNXþ�$�Žî9‚ïNXþ�$�Žî;»ïNXþ�$�Žî=ôïNXþ�$�Žî.ïNXþ�$�Žî0WïNXþ�$�Žî2ïNXþ�$�Žî4ÉïNXþ�$�Žî+åïNXþ�$�Žî)¬ïNXþ�$�Žî'sïNXþ�$�Žî%:ïNXþ�$�Õî@-ïNXþ�$€îA×pïFðîAïIæðîAIïNŸðî%ÈtïNæðî(HïNæðî*ïNæðî,ºïNæðî.óïNæðî1,ïNæðî3ïNæðî5WïNæðî7×ïNæðî9ÉïNæðî<IïNæðî>‚ïNæðîsïNæðîeïNæðî!žïNæðî#ÖïNæðîVïNXþ�$€îVïN4þ#Ö�$îVïP´þ#Ö�$îÖpïRÊð î�Žtï ðîVïaþ#Ö�$îVï^˜þ#Ö�$îVï^¼þ�$€î#Öï_Jðî!žï_Jðîeï_Jðîsï_Jðî>‚ï_Jðî<Iï_Jðî9Éï_Jðî7×ï_Jðî5Wï_Jðî3ï_Jðî1,ï_Jðî.óï_Jðî,ºï_Jðî*ï_Jðî(Hï_Jðî%Èï_Jðî-IpïaÊðîAïZJðîA×ïVfðî@-ï^¼þ�$€î%:ï^¼þ�$�Õî'sï^¼þ�$�Žî)¬ï^¼þ�$�Žî+åï^¼þ�$�Žî4Éï^¼þ�$�Žî2ï^¼þ�$�Žî0Wï^¼þ�$�Žî.ï^¼þ�$�Žî=ôï^¼þ�$�Žî;»ï^¼þ�$�Žî9‚ï^¼þ�$�Žî7Iï^¼þ�$�Žî#ï^¼þ�$�Žî Èï^¼þ�$�Žîï^¼þ�$�Žî>‚tïZØðî<IïZØðî:ïZØðî7×ïZØðî5ïZØðî2×ïZØðî0žïZØðî.eïZØðî,sïZØðî*:ïZØðî(ïZØðî%ÈïZØðî#ïZØðî!VïZØðîïZØðîïZØðî¬ïZØðîsïZØðîòïZØðîïZØðîïZØðîHïZØðî VïZØðîïZØðîäïZØðî«ïZØðîrïZØðîòïZØðîïZJþ�$�ŽîÖïZJþ�$�ŽîïZJþ�$�ŽîòïZJþ�$�Žî¹ïZJþ�$�Žî€ïZJþ�$�Žî GïZJþ�$�ÕîVïZJþ�$�ÕîïZJþ�$�Žî ÈïZJþ�$�Žî#ïZJþ�$�ŽîïZJþ�$�ŽîäïZJþ�$�Žî«ïZJþ�$�ŽîrïZJþ�$�Õî7IïZJþ�$�Õî9‚ïZJþ�$�Žî;»ïZJþ�$�Žî=ôïZJþ�$�Žî.ïZJþ�$�Õî0WïZJþ�$�Žî2ïZJþ�$�Žî4ÉïZJþ�$�Žî+åïZJþ�$�Žî)¬ïZJþ�$�Žî'sïZJþ�$�Žî%:ïZJþ�$�ÕîïZ&þ�$¤îïZ&þ?4�$î@-ïZJþ�$€îï\§þ?�$îïX|þ?�$î@-ïVþ�$€îïUüþ?4�$îïUüþ�$¤î%:ïVþ�$�Õî'sïVþ�$�Žî)¬ïVþ�$�Žî+åïVþ�$�Žî4ÉïVþ�$�Žî2ïVþ�$�Žî0WïVþ�$�Žî.ïVþ�$�Õî=ôïVþ�$�Žî;»ïVþ�$�Žî9‚ïVþ�$�Žî7IïVþ�$�ÕîrïVþ�$�Õî«ïVþ�$�ŽîäïVþ�$�ŽîïVþ�$�Žî#ïVþ�$�Žî ÈïVþ�$�ŽîïVþ�$�ŽîVïVþ�$�Õî GïVþ�$�Õî€ïVþ�$�Žî¹ïVþ�$�ŽîòïVþ�$�ŽîïVþ�$�ŽîÖïVþ�$�ŽîïVþ�$�ŽîòïVðîrïVðî«ïVðîäïVðîïVðî VïVðîHïVðîïVðîïVðîòïVðîsïVðî¬ïVðîïVðîïVðî!VïVðî#ïVðî%ÈïVðî(ïVðî*:ïVðî,sïVðî.eïVðî0žïVðî2×ïVðî5ïVðî7×ïVðî:ïVðî<IïVðî>‚ïVðî äpïdÙðîïdÙðîïaþ]�$îï^¼þ�$€îï^˜þÈ�$îï^˜þ�$¤îrï^¼þ�$�Õî«ï^¼þ�$�Žîäï^¼þ�$�Žîï^¼þ�$�ŽîVï^¼þ�$�Õî Gï^¼þ�$�Õî€ï^¼þ�$�Žî¹ï^¼þ�$�Žîòï^¼þ�$�Žîï^¼þ�$�ŽîÖï^¼þ�$�Žîï^¼þ�$�Žîòtï_Jðîrï_Jðî«ï_Jðîäï_Jðîï_Jðî Vï_JðîHï_Jðîï_Jðîï_Jðîòï_Jðîsï_Jðî¬ï_JðîAIpï_Jð î GïaÊðî%:ï9Éþ�$�Žî%:ï9Éþ�$�Õî2ïe ðî0åïRÊðî5žtï8ôðî3eï8ôðî1,ï8ôðî.¬ï8ôðî*:ï8ôðî,sï8ôðî&Wï;»ðî,sï:žðîÈpïAðî@-ï-þ�$9îBï,ºðîBï.ðî%:ï-þ�$î'sï-þ�$�Žî7Iï-þ�$î9‚ï-þ�$�Žî;»ï-þ�$�Žî=ôï-þ�$�Žî.ï-þ�$�Õî0Wï-þ�$�Žî2ï-þ�$�Žî4Éï-þ�$�Žî+åï-þ�$�ŽîBï1ºðî>‚tï2ðî<Iï2ðî:ï2ðî7×ï2ðî5ï2ðî2×ï2ðî0žï2ðî.eï2ðî,sï2ðî*:ï2ðî(ï2ðî%Èï2ðî#ï2ðî!Vï2ðîï2ðîï2ðî¬ï2ðîsï2ðîòï2ðîï2ðîï2ðîHï2ðî Vï2ðîï2ðîäï2ðî«ï2ðîrï2ðîòï2ðîï1sþ�$�ŽîÖï1sþ�$�Žîï1sþ�$�Žîòï1sþ�$�Žî¹ï1sþ�$�Žî€ï1sþ�$�Žî Gï1sþ�$�ÕîVï1sþ�$�Õîï1sþ�$�Žî Èï1sþ�$�Žî#ï1sþ�$�Žîï1sþ�$�Žîäï1sþ�$�Žî«ï1sþ�$�Žîrï1sþ�$�Õî7Iï1sþ�$�Õî9‚ï1sþ�$�Žî;»ï1sþ�$�Žî=ôï1sþ�$�Žî.ï1sþ�$�Õî0Wï1sþ�$�Žî2ï1sþ�$�Žî4Éï1sþ�$�Žî+åï1sþ�$�Žî)¬ï1sþ�$�Žî'sï1sþ�$�Žî%:ï1sþ�$�Õîï1Pþ�$¤îï1Pþ?4�$î@-ï1sþ�$€îï3Ðþ?�$îÈpï4Éðî)¬ï-þ�$î*:tï.ðî,ºï.ðî.óï.ðî1,ï.ðî3eï.ðî5žï.ðî7ï.ðî9Éï.ðî<Iï.ðî>;ï.ðî&Wï.ðî(ï.ðî�ï.óð$î%:ï,Þþ:�$î%:ï-þ�$î%:ï-þ�$«î�ï-Ið/î.ï/‚ðî�Žï#%þ-�$î-ï Èþ�$€î�Žï ¥þ-%�$î$¬ï Èþ�$�Õî&åï Èþ�$�Žî)ï Èþ�$�Žî+Wï Èþ�$�Žî-ï Èþ�$�Õîäï Èþ�$�Õîï Èþ�$�ŽîVï Èþ�$�Žîï Èþ�$�Žî"sï Èþ�$�Žî :ï Èþ�$�Žîï Èþ�$�ŽîÈï Èþ�$�Õî ¹ï Èþ�$�Õîòï Èþ�$�Žî+ï Èþ�$�Žîdï Èþ�$�Žî€ï Èþ�$�ŽîGï Èþ�$�Žîï Èþ�$�Žî�Žï þ�$ÇîÈï!žðîVï!žðî Èï!žðîï!žðî,,ï!žðî)óï!žðî'ºï!žðî%ï!žðî#ï!žðî ï!žðîï!žðîrï!žðîòï!žðî+ï!žðîdï!žðîï!žðî�ï!žðî9ï!žðî«ï!žðîï!žðîÇï!Vþ�$�Žî.¬ï!žðÿ�������öä���Ž+K&bX(����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������BusyRefMapTestSyndrome is xor'ed with the checkbits on storage writes><TestSyndromeWPDirtyStoreFlushNoWake = never wakeup fault taskWMiss = wakeup fault task on every missWMissM3M2M1M0----------IFURefRefCacheSubTaskFaultSRN for first fault----LoadedBeingVacantDirtyDisBR = "disable base registers", prevents base registers from being added to MarFDMiss = "force dirty miss", causes each reference to miss and store the victim, even if not dirtyDisCFDisBRThe read out of VA is in the same bit positions as base register load via BrLo_ and BrHi_0123456789101112131415McrVMcrNVUseMcrV = Use McrV as the victim and McrNV as the next victim for all cache missesSRN for first faultFault----RefTypeRefType:0 = undef.3 = Map_ or non storage op.MapBuf1 = storage read (Fetch_, Store_, PreFetch_, IOFetch_, IFU fetch)Column ofVictimStore'B_Pipe1(B_VaLo)B_Pipe0(B_VaHi)B on Map_2 = storage write (IOStore_ or dirty victim write)--DisCF = "disable cache flags", causes cache flags to read out false and prevents writing themNext VictimDirtyVacantBeingLoadedVictimNoRefDisEC'Mcr[0:10] loaded from MarMux, Mcr[13:15] from BMuxASRN[0:3]ASRN[0:3]B_Pipe3'B_Pipe2'B_Pipe4'B_Config'B_FaultInfo'(B_Errors')(B_Map')Quadword'No. faults - 1No. faults - 17 is no fault7 is no fault<>VA[4:15]EmuProcSRN[0:3]<><><><ProcSRN[0:3]>B_Pipe5(B_PRef)Trouble'MemError'ECFault'Bit in word<>Word code'><ParitySyndrome<>dVA_VicFDMissUseMcrVDisHoldReportSE'NoWakedVA_Vic = put contents of cache address memory addressed by row of last reference and columnof Victim into Pipe0 and Pipe1>1514131211109876543210VA[16:31]<1514131211109876543210<>>><<1514131211109876543210Real page no. (RP)<>15141312111098765432101514131211109876543210WP15141312111098765432101514131211109876543210--------------WP------1514131211109876543210LoadTestSyndrome1514131211109876543210LoadMcr--1514131211109876543210Emu><<>MapTroubleMemErrorEcFaulttruefalsexPage faulttruetruexMap parity errorfalsefalsefalseNo errorfalsetruexUncorrectable error (DE)falsefalsetrueCorrectable error (SE)ReportSE' = when true, wakeup fault task on correctable errors (SE's), provided NoWake is falseWord CodeDisHold = prevent hold from occurringNoRef = prevent storage references011101110111Meaningword 0word 1word 2word 3otheruncorrectableChip SizeMapDirtybMapParityM0, M1, M2, or M3 indicates that a storage boardpair is plugged into slot 0, 1, 2, or 3.Chip Size0 = 4kx1 ic's1 = 16kx1 ic's2 = 64kx1 ic's3 = 256kx1 ic'sTaskD1MemReg.silFigure 10The Pipe and Other Memory RegistersReverseda1111Pipe5[0:7] are in the Pipe, Pipe5[8:15] are values read from cache address section during last ref.CFlags_A'ProcTag6/26/80��î¹tï;tðî�ïH‚ðî+ïIðîÈï"ºð;î,,|ï"ƒðî äï"ƒðî äï&3þ«�$îtï%ÈðîïH‚ðîdïH‚ðîï;tðîï<ðîÈïHð îÈïð'îAïðî:ï5Wðî6,ï5Wðî2ï5Wðî.ï5WðîA×ï%Èðî=ôï%Èðî:ï%Èðî6,ï%Èðî2ï%Èðî!åï<ðî¬ï;tðîï<ðîäïXŸðî-Iïdðî?žïòðîEtï+ðîHï+ðî8¬ï*ðî8ôï+žðî0åï+ðî-ï+ðîÈïòðQîÈï+ðbî-ïðî)¬ïðîÈï[õðYî äïeCþ>;�$îLïc.þ�$9î äïc þ>^�$î äïc þ�$]î«ïb þ�$î%:ïb þ�$î4Éïb þ�$îÈïb þ�$îïb þ�$î!Vïb þ�$î)ïb þ�$î-ïb þ�$î0åïb þ�$î8¬ïb þ�$î@tïb þ�$îDXïb þ�$îH;ïb þ�$îïaÊðîrïaÊðîVïaÊðî:ïaÊðîïaÊðî#ïaÊðî&åïaÊðî*ÈïaÊðî.¬ïaÊðî2ïaÊðî6,ïaÊðî:ïaÊðî=ôïaÊðîA×ïaÊðîE»ïaÊðîIŸïaÊðîVïðî#ÖïðîÈïðRî?WïXŸðî-ïXðîE»ï%ÈðîIŸï%ÈðîïXŸðîÈïU‘ðîVïU‘ð îVïR<ðî+ï<ðîVïTtðAî&žï<ð î'ºï;tðîºï<ðî�pï_Jðî¹ï]Ÿðî�ïd‘ðî�ïbçðîrïLfð îVtïSXð2î9ÉïðîÈïÖð]î=ôï<ðî-ï<ðî1,ï<ðî9;ï<ðî8ôï;tðîFØï<ðî5ïðî"sï&3þ Ö�$î-ï%ÈðîÈïð2î"sï5Wð îsï5Âþr�$î(ï5Âþr�$î(ï]þ��$îsï]þr�$î"sïòð î-ïJtþ�$îLïJtþ�$îrpïO»ðî¹ïWÊðîrïIŸðîrï5ð îUï9ðîrïGôðîrïNðî&WtïH‚ð î2×ïY.ðî3¬ï€ðî3ïXð î3¬ïdð îs|ï`wðîKï`wðîºïd'þr�$î2tïc¼ðî7Iïd'þ�$î-×ïY.ðîÈï5Wðî+ï5ÂþU�$îHï5Âþ�$î ä|ï2ðîVï2ðîsï2ðî+žï2ðî äïðîHï]þ�$î+ï]þU�$îVïðîsïðîtïòðî+å|ïðîrpï<ðîrï:åðîÈtïGôðîHïIðîºïGôðî"ºïIðî!åïGôðî1ºïGôðî-ïHíþ+�$î7×ïHíþr�$î-|ïE=ðî;tïE=ðî?WtïH‚ð î<ïHíþ€�$îEtïHíþ€�$îG|ïE=ðî<ïE=ðîH‚tïH‚ðî:žïJtðî-ïJßþ V�$î@-ïJßþò�$î-|ïG/ðîKïG/ðî¹tï¬ðî�ïðî+ï¬ðîïðîï¬ðîÈïðî2ï¬ðî1sïðîDXï¬ðîE»ïðîIŸï¬ðîHÉïðîÈïdð\îäïHðîsïb þ�$î<ïb þ�$î<ï]çþ�$îsï]çþ�$îK|ï[¾ðîIŸtï]ðîE»ï]ðîA×ï]ðî=ôï]ðî:ï]ðî6,ï]ðî2ï]ðî.¬ï]ðî*Èï]ðî&åï]ðî#ï]ðîï]ðî:ï]ðîVï]ðîrï]ðîï]ðîH;ï]çþ�$îDXï]çþ�$î@tï]çþ�$î8¬ï]çþ�$î0åï]çþ�$î-ï]çþ�$î)ï]çþ�$î!Vï]çþ�$îï]çþ�$îÈï]çþ�$î4Éï]çþ�$î%:ï]çþ�$î«ï]çþ�$î äï^Qþ�$]î äï^Qþ>^�$îLï^uþ�$9î äï`Šþ>;�$î*ï_ð î äï_nþ�$î0ï_nþ�$î ä|ï[¾ðî<ïWƒþ�$îsïWƒþ�$îIŸtïVðîE»ïVðîA×ïVðî=ôïVðî:ïVðî6,ïVðî2ïVðî.¬ïVðî*ÈïVðî&åïVðî#ïVðîïVðî:ïVðîVïVðîrïVðîïVðîH;ïWƒþ�$îDXïWƒþ�$î@tïWƒþ�$î8¬ïWƒþ�$�Õî0åïWƒþ�$î-ïWƒþ�$î)ïWƒþ�$î!VïWƒþ�$îïWƒþ�$îÈïWƒþ�$�Õî4ÉïWƒþ�$�Õî%:ïWƒþ�$î«ïWƒþ�$î äïWíþ�$]î äïWíþ>^�$î äïZ&þ>;�$îLïXþ�$9îsïY þÖ�$î&WïY þd�$îs|ïUZðî+žïUZðî0åïY þ«�$î:WïY þò�$î<IïY þÇ�$îIŸïY þ€�$î;tïUZðîKïUZðî0åïUZðî<ïUZðî<ïMÊþ�$îsïMÊþ�$îIŸtïLôðîE»ïLôðîA×ïLôðî=ôïLôðî:ïLôðî6,ïLôðî2ïLôðî.¬ïLôðî*ÈïLôðî&åïLôðî#ïLôðîïLôðî:ïLôðîVïLôðîrïLôðîïLôðîH;ïMÊþ�$îDXïMÊþ�$î@tïMÊþ�$î8¬ïMÊþ�$î0åïMÊþ�$î-ïMÊþ�$î)ïMÊþ�$î!VïMÊþ�$îïMÊþ�$îÈïMÊþ�$î4ÉïMÊþ�$î%:ïMÊþ�$î«ïMÊþ�$î äïN4þ�$]î äïN4þ>^�$îLïNXþ�$9î äïPmþ>;�$î'sïNæðî äïOQþH�$î2ïOQþ�$î ä|ïK¡ðîKïK¡ðî<ïGfþ�$îsïGfþ�$îIŸtïFðîE»ïFðîA×ïFðî=ôïFðî:ïFðî6,ïFðî2ïFðî.¬ïFðî*ÈïFðî&åïFðî#ïFðîïFðî:ïFðîVïFðîrïFðîïFðîH;ïGfþ�$îDXïGfþ�$î@tïGfþ�$î8¬ïGfþ�$î0åïGfþ�$î-ïGfþ�$î)ïGfþ�$î!VïGfþ�$îïGfþ�$îÈïGfþ�$î4ÉïGfþ�$�Žî%:ïGfþ�$î«ïGfþ�$î äïGÑþ�$]î äïGÑþ>^�$îLïGôþ�$€î äïJ þ>;�$î<ï:åþ�$îsï:åþ�$îIŸï:ðîE»ï:ðîA×ï:ðî=ôï:ðî:ï:ðî6,ï:ðî2ï:ðî.¬ï:ðî*Èï:ðî&åï:ðî#ï:ðîï:ðî:ï:ðîVï:ðîrï:ðîï:ðîH;ï:åþ�$îDXï:åþ�$î@tï:åþ�$î8¬ï:åþ�$î0åï:åþ�$î-ï:åþ�$î)ï:åþ�$î!Vï:åþ�$îï:åþ�$îÈï:åþ�$î4Éï:åþ�$î%:ï:åþ�$î«ï:åþ�$î äï;Pþ�$]î äï;Pþ>^�$îLï;tþ�$9î äï=‰þ>;�$î6,ï<ðî<ï4;þ�$îsï4;þ�$îIŸï3eðîE»ï3eðîA×ï3eðî=ôï3eðî:ï3eðî6,ï3eðî2ï3eðî.¬ï3eðî*Èï3eðî&åï3eðî#ï3eðîï3eðî:ï3eðîVï3eðîrï3eðîï3eðîH;ï4;þ�$îDXï4;þ�$î@tï4;þ�$î8¬ï4;þ�$î0åï4;þ�$î-ï4;þ�$î)ï4;þ�$î!Vï4;þ�$îï4;þ�$îÈï4;þ�$î4Éï4;þ�$î%:ï4;þ�$î«ï4;þ�$î äï4¥þ�$]î äï4¥þ>^�$îLï4Éþ�$9î äï6Þþ>;�$î<ï)óþ�$îsï)óþ�$îIŸï)ðîE»ï)ðîA×ï)ðî=ôï)ðî:ï)ðî6,ï)ðî2ï)ðî.¬ï)ðî*Èï)ðî&åï)ðî#ï)ðîï)ðî:ï)ðîVï)ðîrï)ðîï)ðîH;ï)óþ�$îDXï)óþ�$î@tï)óþ�$î8¬ï)óþ�$dî0åï)óþ�$î-ï)óþ�$î)ï)óþ�$î!Vï)óþ�$îï)óþ�$îÈï)óþ�$î4Éï)óþ�$î%:ï)óþ�$î«ï)óþ�$î äï*^þ�$]î äï*^þ>^�$îLï*þ�$9î äï,—þ>;�$î+ï+ðîï+ðîóï+ðîÖï+ðî"ºï+ðî&žï+ðî*:ï+ðî5åï+ðîIXï+ðîAIï+ðî=ï+ðî<ï$¬þ�$îsï$¬þ�$�ÕîIŸï#ÖðîE»ï#ÖðîA×ï#Öðî=ôï#Öðî:ï#Öðî6,ï#Öðî2ï#Öðî.¬ï#Öðî*Èï#Öðî&åï#Öðî#ï#Öðîï#Öðî:ï#ÖðîVï#Öðîrï#Öðîï#ÖðîH;ï$¬þ�$îDXï$¬þ�$î@tï$¬þ�$î8¬ï$¬þ�$î0åï$¬þ�$î-ï$¬þ�$�Õî)ï$¬þ�$�Õî!Vï$¬þ�$�Õîï$¬þ�$�ÕîÈï$¬þ�$�Õî4Éï$¬þ�$î%:ï$¬þ�$�Õî«ï$¬þ�$�Õî äï%þ�$]î äï%þ>^�$îLï%:þ�$9î äï'Oþ>;�$îrpï&ðîrï$eðî<ïþ�$îsïþ�$îIŸtï,ðîE»ï,ðîA×ï,ðî=ôï,ðî:ï,ðî6,ï,ðî2ï,ðî.¬ï,ðî*Èï,ðî&åï,ðî#ï,ðîï,ðî:ï,ðîVï,ðîrï,ðîï,ðîH;ïþ�$îDXïþ�$î@tïþ�$î8¬ïþ�$î0åïþ�$î-ïþ�$î)ïþ�$î!Vïþ�$îïþ�$îÈïþ�$î4Éïþ�$î%:ïþ�$î«ïþ�$î äïlþ�$]î äïlþ>^�$îLïþ�$9î äï ¥þ>;�$î+pïðî=tïðî<ï Öþ�$îsï Öþ�$îIŸï �ðîE»ï �ðîA×ï �ðî=ôï �ðî:ï �ðî6,ï �ðî2ï �ðî.¬ï �ðî*Èï �ðî&åï �ðî#ï �ðîï �ðî:ï �ðîVï �ðîrï �ðîï �ðîH;ï Öþ�$îDXï Öþ�$î@tï Öþ�$î8¬ï Öþ�$î0åï Öþ�$î-ï Öþ�$î)ï Öþ�$î!Vï Öþ�$îï Öþ�$îÈï Öþ�$î4Éï Öþ�$î%:ï Öþ�$î«ï Öþ�$î äï@þ�$]î äï@þ>^�$îLïdþ�$9î äï yþ>;�$î-ï€ðî0åï]þ9�$î:åï]þ«�$î;»|ïðî0åïðî<ï]þÇ�$îIæï]þ9�$î<ïðîKïðîÈuïEtð îïEtðî :ïEtðî+tïDðî¬ïDðî!žïDðî%ÈïDð î+ïBôðî¬ïBôðî!žïBôðî%ÈïBôðî+ïA×ðî¬ïA×ðî ïA×ðî%ÈïA×ðî+ï@»ðî¬ï@»ðî!žï@»ðî%Èï@»ðî+ï?žðî¬ï?žðî ï?žðî%Èï?žðîÈïdð_î8uïE-ð îÈtïºð%îÈïð"î9ÉïCÉðî9ÉïBðî9ÉïAðî9Éï@tðî?uïE-ðî?žtïCÉðî?žïBðî?žïAðî?žï@tðî9;ï?Wðî?žï?Wð î=ôï5Wð îE-ï5åðîDŸï4ÉðîIï5åðîH‚ï4Éðîï2ð0îï0åð(î1sï2ð î7Iï2ð î7Iï0åðî7Iï/Éðî7Iï.¬ðî#ïXŸðîBôuïðî"srïð îHï+ð#î2tïIðî��ïh¼ðîïc¼ðîrïc¼ðîVïc¼ðî:ïc¼ðîÈï8ôðcî¹pï+Wð îtï<ðîÈï;tðîDXuïòð������� Jä����òLfgç³������������������������������������������������������������������������������00010203040506070809101112131415WORD0DROW1514131211100908070605040302010000010203040506070809101112131415WORDDROW1514131211100908070605040302010012301234567xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx007206106307046247147346026227127326067266166367013212112313052253153352032233133332073272172373015214114315054255155354034235135334075474174375016217117316057256156357037136236337076277177376Check bits are EXOR ofdata bits marked xand number ofones inSyndrome isandfurthermoreTHEN0ALWAYSALWAYSNO ERRORNot 0ODDsyndrome bitsSINGLE ERROR (data bit)Bits 4,5,6 give bad word:4 5 6word0 1 11 0 11 1 01 1 101230 0 0 00 0 0 11 1 1 01 1 1 1...Bits 3,2,1,0 give bad bit:3 2 1 0bit00011415...Bad bit will be corrected iferror correction is enabledNot 0ODDin SyndromeSINGLE ERROR (check bit)Syndromebad check bit20010004002001000400200176543210Not 0ODDsyndrome bits4,5,6 have 0or 1 ones onTRIPLE ERROR!!(but no data bits will be changed)Not 0EVENALWAYSDOUBLE ERRORNo data bits will be changed.Syndrome is nonsense.Syndrome is nonsense.No data bits will be changed.4,5,6 have 2or 3 ones onexactly 1 oneInterpretation of SYNDROMEcomputed check bitsTestSyndromemessy EXORnetwork>Quad-wordin Cache>>r(usually zero)>>Quad-wordin storagecheck bitsnetworkEXORmessy >computed check bitsr>>>SYNDROME>qin CacheQuad-word>EnableqPipe 4rrin storage/4x1688other stuffErrorCorrectorcdeffedcSYNDROMEfor errorin bitIfSYNDROMEisD1ErrCorr.sil9/5/79Figure 11Error Correction���îŽtïQôðîŽïPØðîŽïO»ðîŽïNŸðîŽïM‚ðîŽïLfðîŽïKJðîŽïJ-ðîŽïIðîŽïGôðîŽïFØðîŽïE»ðîŽïDŸðîŽïC‚ðîŽïBfðîŽïAIðîÇpïNXðîÇïLðîÇïKðîÇïIXðîÇïFðîrïSXþò�Gîrï@»þ�Gäîrï@tþò�Gîrï,,þò�Gîrï,sþ�Gäîrï?þò�GîÇï5ðîÇï6»ðîÇï8eðîÇï:ðîŽtï-ðîŽï.ðîŽï/:ðîŽï0WðîŽï1sðîŽï2ðîŽï3¬ðîŽï4ÉðîŽï5åðîŽï7ðîŽï8ðîŽï9;ðîŽï:WðîŽï;tðîŽï<ðîŽï=ðîŽï)eðîŽï(HðîŽï',ðîŽï&ðîŽï$óðîŽï#ÖðîŽï"ºðîŽï!žðîŽï ðîŽïeðîŽïHðîŽï,ðîŽïðîŽïóðîŽïÖðîŽïºðîÇpï%ÈðîÇï$ðîÇï"sðîÇï Èðîrï*Èþò�Gîrï+þ�Gäîrïäþò�Gîrïþò�Gîrïäþ�Gäîrïþò�GîÇï€ðîÇï+ðîÇïÖðîÇïðîŽtïrðîŽïŽðîŽï«ðîŽïÇðîŽïäðîŽï �ðîŽïðîŽï9ðîŽï VðîŽïrðîŽïðîŽï«ðîŽïÈðîŽïäðîŽïðîŽïðîÇpï1ºðîÇïsðîÇï +ðîŽïRíþV�$îäïrþ�$NŸîŽïQÑþV�$îŽïP´þV�$îŽïO˜þV�$îŽïN{þV�$îŽïM_þV�$îŽïLBþV�$îŽïK&þV�$îŽïJ þV�$îŽïHíþV�$îŽïGÑþV�$îŽïF´þV�$îŽïE˜þV�$îŽïD{þV�$îŽïC_þV�$îŽïBBþV�$îŽïA&þV�$îŽï,ÞþV�$îŽï-úþV�$îŽï/þV�$îŽï03þV�$îŽï1PþV�$îŽï2lþV�$îŽï3‰þV�$îŽï4¥þV�$îŽï5ÂþV�$îŽï6ÞþV�$îŽï7ûþV�$îŽï9þV�$îŽï:4þV�$îŽï;PþV�$îŽï<mþV�$îŽï=‰þV�$îŽï>¦þV�$îŽï*^þV�$îŽï)AþV�$îŽï(%þV�$îŽï'þV�$îŽï%ìþV�$îŽï$ÏþV�$îŽï#³þV�$îŽï"–þV�$îŽï!zþV�$îŽï ]þV�$îŽïAþV�$îŽï%þV�$îŽïþV�$îŽïìþV�$îŽïÏþV�$îŽï³þV�$îŽï–þV�$îŽïNþV�$îŽïkþV�$îŽï‡þV�$îŽï¤þV�$îŽïÀþV�$îŽï ÝþV�$îŽï ùþV�$îŽïþV�$îŽï 2þV�$îŽïOþV�$îŽïkþV�$îŽïˆþV�$îŽï¤þV�$îŽïÁþV�$îŽïÝþV�$îŽïúþV�$îŽïþV�$î �ïSXðî«ïSXðî VïSXðî�ïSXðî«ïSXðîVïSXðîïSXðî«ïSXðî �tïPØðî �ïNŸðî �ïLfðî �ïJ-ðî �ïGôðî �ïE»ðî �ïC‚ðî �ïAIðî �ï-ðî �ï/:ðî �ï1sðî �ï3¬ðî �ï5åðî �ï8ðî �ï:Wðî �ï<ðî �ï(Hðî �ï&ðî �ï#Öðî �ï!žðî �ïeðî �ï,ðî �ïóðî �ïºðî �ïrðî �ï«ðî �ïäðî �ïðî �ï Vðî �ïðî �ïÈðî �ïðî«ïO»ðî«ïNŸðî«ïKJðî«ïJ-ðî«ïFØðî«ïE»ðî«ïBfðî«ïAIðî«ï-ðî«ï.ðî«ï1sðî«ï2ðî«ï5åðî«ï7ðî«ï:Wðî«ï;tðî«ï',ðî«ï&ðî«ï"ºðî«ï!žðî«ïHðî«ï,ðî«ïÖðî«ïºðî«ïrðî«ïŽðî«ïäðî«ï �ðî«ï Vðî«ïrðî«ïÈðî«ïäðîÈïrþ�$PØî VïLfðî VïM‚ðî VïKJðî VïJ-ðî VïAIðî VïBfðî VïDŸðî VïC‚ðî Vï/:ðî Vï0Wðî Vï.ðî Vï-ðî Vï5åðî Vï7ðî Vï9;ðî Vï8ðî Vï#Öðî Vï$óðî Vï"ºðî Vï!žðî Vïºðî VïÖðî Vïðî Vïóðî Vï«ðî VïÇðî VïŽðî Vïrðî Vï Vðî Vïrðî Vï«ðî Vïðî�ïGôðî�ïIðî�ïFØðî�ïE»ðî�ïAIðî�ïBfðî�ïDŸðî�ïC‚ðî�ï/:ðî�ï0Wðî�ï.ðî�ï-ðî�ï1sðî�ï2ðî�ï4Éðî�ï3¬ðî�ïeðî�ï ðî�ïHðî�ï,ðî�ïºðî�ïÖðî�ïðî�ïóðî�ï«ðî�ïÇðî�ïŽðî�ïrðî�ïäðî�ï �ðî�ï9ðî�ïðî«ï3¬ðî«ï4Éðî«ï2ðî«ï1sðî«ï-ðî«ï.ðî«ï0Wðî«ï/:ðî«ï8ðî«ï9;ðî«ï7ðî«ï5åðî«ï:Wðî«ï;tðî«ï=ðî«ï<ðî«ï(Hðî«ï)eðî«ï',ðî«ï&ðî«ï!žðî«ï"ºðî«ï$óðî«ï#Öðî«ïóðî«ïðî«ïÖðî«ïºðî«ï,ðî«ïHðî«ï ðî«ïeðî«ïðî«ï9ðî«ï �ðî«ïäðî«ïrðî«ïŽðî«ïÇðî«ï«ðî«ïðî«ï«ðî«ïrðî«ï Vðî«ïÈðî«ïäðî«ïðî«ïðîVïeðîVï ðîVïHðîVï,ðîVïºðîVïÖðîVïðîVïóðîVï#ÖðîVï$óðîVï"ºðîVï!žðîVï&ðîVï',ðîVï)eðîVï(HðîVïðîVïðîVïäðîVïÈðîVï VðîVïrðîVï«ðîVïðîVï«ðîVïÇðîVïŽðîVïrðîVïäðîVï �ðîVï9ðîVïðîVïGôðîVïIðîVïFØðîVïE»ðîVïAIðîVïBfðîVïDŸðîVïC‚ðîVïLfðîVïM‚ðîVïKJðîVïJ-ðîVïNŸðîVïO»ðîVïQôðîVïPØðîÈïrþ�$PØîïPØðîïQôðîïO»ðîïNŸðîïJ-ðîïKJðîïM‚ðîïLfðîïC‚ðîïDŸðîïBfðîïAIðîïE»ðîïFØðîïIðîïGôðîï3¬ðîï4Éðîï2ðîï1sðîï-ðîï.ðîï0Wðîï/:ðîï8ðîï9;ðîï7ðîï5åðîï:Wðîï;tðîï=ðîï<ðîïðîïðîïäðîïÈðîï Vðîïrðîï«ðîïðîï«ðîïÇðîïŽðîïrðîïäðîï �ðîï9ðîïðî«ïQôðî«ïNŸðî«ïLfðî«ïKJðî«ïGôðî«ïFØðî«ïDŸðî«ïAIðî«ï-ðî«ï0Wðî«ï2ðî«ï3¬ðî«ï7ðî«ï8ðî«ï:Wðî«ï=ðî«ï)eðî«ï&ðî«ï#Öðî«ï"ºðî«ïeðî«ïHðî«ïðî«ïºðî«ïðî«ïäðî«ï«ðî«ï Vðî«ï9ðî«ïäðî«ï«ðî«ïŽðî rïrþ�$PØîÈïrþ�$PØîïQôðîïPØðîïO»ðîïNŸðîïM‚ðîïLfðîïKJðîïJ-ðîïIðîïGôðîïFØðîïE»ðîïDŸðîïC‚ðîïBfðîïAIðîï=ðîï<ðîï;tðîï:Wðîï9;ðîï8ðîï7ðîï5åðîï4Éðîï3¬ðîï2ðîï1sðîï0Wðîï/:ðîï.ðîï-ðîï)eðîï(Hðîï',ðîï&ðîï$óðîï#Öðîï"ºðîï!žðîï ðîïeðîïHðîï,ðîïðîïóðîïÖðîïºðîïðîïðîïäðîïÈðîï«ðîïðîïrðîï Vðîï9ðîïðîï �ðîïäðîïÇðîï«ðîïŽðîïrðî rïU&þ V�$îïSþ�$9îrïSþ�$9îïSþ�$9îrïSþ�$9îïSþ�$9î �ïVõðî �ïUØðî!ï?æþ-×�Gî(ïBfð î(ïAIðî(ï@-ðî0åïAIðî0åï@-ðîBï@-ðî$ï=ôðî)¬ï=ôðî2ï=ôðî:åï=ôðî!ï=Bþ-×�$î#ï;-ðî*Èï;-ðî0åï;-ð î:åï;-ðî:åï9‚ðî=ï7×ðîAï7×ðî=ï6,ðî=ï5ðî=ï3óðî=ï2×ðîBï6,ðîBï5ðîBï3óðîBï2×ðîAï2×þ�$î=ï7´þ«�$î=ï-×ðî=ï,ºðî=ï)eðî=ï(Hðî?Wpï+åðî?Wï+Wðî?Wï*ÈðîBï(Hþ�$Vî:åtï1,ðî=ï/‚ðîBï/‚ðîBï-×ðîBï,ºðîBï)eðîBï(HðîC;pï+åðîC;ï+WðîC;ï*Èðî=ï/^þ«�$î!ï$Ïþ-×�$î:åtï&žðî:åï%ðî#ï"ºðî*Èï"ºðî0åï!žðî:åï"ºðî=ï!ðîDXï!ð îCÉïþ�$î>Éïeðî>ÉïHðî>Éï,ðî>Éïðî>Éïóðî>ÉïÖðî>Éïºðî>ÉïðîGïðîGïºðîGïÖðîGïóðîGïðîGï,ðîGïHðîGïeðî!ïAþ-×�$î#ï+ðî*Èï+ðî1sï+ð î1sïðî1sïòðî:åï+ðî:åïð"î!ïAþ-×�$î#ï+ðî*Èï+ðî3ï+ðî:åï+ðî:åï ðî:åïòðî:åïòðî'sïdþ�$8î0Wïdþ�$8î9Éïdþ�G8î!ïdþ�$8î!ï@þ-×�$îNæï@þ�$8Bî!ïC_þ-ú�$î:åïòðî0åï:ðî0åï8ôðî0åï"ºð î+åpïDXðîrïZJþ�$rîVïZ&þ�$•î9ï]|þ�$îVï[õþ�$«î9ï[Ñþ@�$î9ï[Ñþ�$ÎîÈtï[õðî9ï^ þ�$Îî9ï^ þ@�$îVï^.þ�$«î9ï_µþ�$îÈï^.ðî rï]ðî rï[õðî rïZØðî|ïY>ðîVïd'þ�$îrï`õþ�$UîVï`Ñþ@�$îVï`Ñþ�$yîätïb ð îäïaƒðîVï^˜þ�$îVïZ&þ�$îrï\îþÇ�$îÖ|ïY>ðîÖï[vðîï^¼þ�$9î ï[vðîVuï_Øðî&åï[õþ�$äî&åï[Ñþ«�$î-ï[Ñþ�$ î&åïdµþÎ�$îrïc þs�$î%È|ïZZðî%Èï_Zðî&åï_'þ«�$î'stïb ð î'sï`õð î'sï]Ÿð î2ï`Cþ�$î2ïdµþ�$î3ï`õðî3ïbðî3ïc.ðî2ï`Cþ�$•î8ï`gþ�$rî-ïc þr�$î0å|ï_Zðî0åtï\ƒðî0Wï\_þ�$Îî0Wï\_þ@�$î;tï\ƒþ�$«î0Wï^ þ�$î4Éï^.þ�$9î4;|ïZèðî4ÉïY.þ�$Uî4ÉïY þÇ�$î-ï^ þ«�$î/:ïVõþ�$9î/:ïVÑþV�$î6,ïUZðî6,ïS!ðî=ïdµþ9�$îDXïaƒþ�$Uî=ïa`þ]�$î=ïa`þ�$yî/:ïc þ�$ëî/:ïeÑþ �$î9Éïc.þ�$Çî9Éïc þU�$î<ï_Zðî=ïY þ ��$îGïWƒþ�$«î=ïW_þ $�$î=ïW_þ�$Îî@ttïWƒðîBïY þ�$yî<|ïT=ðî?Wï]!ðîH;tïbðîH;ïc.ð îGïa`þ�$yîGïa`þ]�$îNXïaƒþ�$UîGïdµþ9�$îF|ï_Zðî?æï^.þ�$Uî>;tï]ðîB|ï]!ðî9ÉïP´þ ä�$îGïNŸþ�$9î9ÉïN{þ�$î9ÉïN{þ�$]î>ÉtïO-ðîBïPØþ�$«îB|ïM’ðî<ïPØþ�$9î<ïM’ðîVï_'þ�$îVï\îþ�$î'stï\ƒð îïb ðîïc¼ðî$¬ï^¼ðî;tïXŸðî9ÉïSðîDXïc þÇ�$î>;ïc.ðî>;ïbð î=ï ìþ V�$î :|ï[vðî :ï[vðî¬ï[vðî¬ï[vðî7ïUZðî7ïUZðî7ïUZðî7ïUZðî#ï^ þä�$î$¬ï]Ÿþ�$î:WïWíþU�$î;»ïWƒþ�$îtïU‘ðîäïTtð îºïSXðî$ïBfðî!žïAIðî$ï@-ðî>Éuïòð î@tï�Õðî!žrïGð îïð�������§ä��Ç�ÕLBe ~������������������������������������������������������������������������������������������Instruction Fetch Unit OrganizationBMux.0..15Jump displacementPcJpAdder>>>>>>baiiWantIfuRef'pTo memory>>>Jump displacement H if LengthK=2; SignK extends H.0=BMux.0..15ToProcessor=SignK supplies top 11 bitsTwoAlphaK..NK if LengthK=1;PC PipelineTypeJumpMSignMLengthMIfuRBaseSel'MemBMTypePauseK'TypeJumpK'TwoAlphaMTwoAlphaKMemBKRBaseSelK'LengthK'SignKNKNMSignXLengthXNXTwoAlphaXJHIfuAddr'InstrAddrK'FGpp918{GDv'}{PcFG.15}FGefcdFGParityErrBrkInsTestH8>>>>>>>>>>t1t0t0,t1t0t0t0t1t3t1t0,t1efcddcfeefcdRamParityErrMemoryTo IFUFGAlphaMCache>InsSet28igh>To control section>>To processor sectionTo processor section2311418SectionPCX'Junk'IFUMRH'IFUMLH'M-LevelX-LevelK-LevelTrapAddr'101TrapConditionTrapAddressF>RamParity.0other bitsother bitsother bitsRamParity.1RamParity.2IFUM1024 wordsRamParityErrInsSet..74Not ReadyInsSet..34RescheduleInsSet..14FGParityErrInsSet..04K FaultInsSet..00Lowest priorityHighest prioritypIfuFaultTo IFUhgId.signghId.0..3Alpha/Betat0AlphaX.0..3AlphaX.4..7t0Id.4..7pppToProcessorSection15Mar.1..15'16PcFPcFGPcJPcMPcX>>>>>>>>>>>>>>>>>>>>>>>x 27 bitsD1IFU.silFigure 129/5/79���îrïrð#îtï]Ÿð î+ï\Êðî+ïZØðîäï\§þò�$îïZµþ9�$îEt|ïUðîÖï]|þ+�$îïZJþ�$UîÖïZ&þN�$îÖïZ&þ�$yîdtï[fðîï[Ñþ�$îï[þ�$Uîï\§þò�$î¬ï`Cþ+�$î#Öï]Ÿþ�$Çî¬ï]|þN�$î¬ï]|þ�$ëî¬ïYQþ�$ëî¬ïYQþN�$î#ÖïYuþ�$Çî¬ï\þ+�$îïZØþ�$+îï^ßþ«�$îïZµþ«�$î|ï[/ðîïWðîóïX!ðîóïYÌðî¹ïXöðî¹ïWðî+žï]!ðî+žï]!ðî+ï[/ðî#Öï^ßþ9�$î+ï\Úðî$ï`Šþò�$î$etï`®ðî-×ï_µþÇ�$î5ž|ï\ðî9Éuï_Jð î%|ïWðî&žï\þ+�$î*ÈïYuþ�$Çî&žïYQþN�$î&žïYQþ�$ëî#ÖïZµþÇ�$î-IïYQþ�$ëî-IïYQþN�$î1sïYuþ�$Çî-Iï\þ+�$î,,ïWðî*ÈïZµþ€�$î2×ïWðî3óï\þ+�$î8ïYuþ�$Çî3óïYQþN�$î3óïYQþ�$ëî1sïZµþ€�$î+tïc.ðîòïaÊð!îGï`®ðî8ïZµþd�$î>ÉïU‘þ�$î?WïXæð î>ÉïXÃþ«�$îAuïW<ðî?WïVð îGtïaÊðîòï_‘ðîòï`®ðî8eï;Pþ€�$î?æï9Éþ�$«î8eï9¥þ¤�$î8eï9¥þ�$Îî8eï6Þþ�$Îî8eï6Þþ¤�$î?æï7þ�$«î8eï8‰þ€�$î ÈpïUðî.ótï,sð î0žï1sðî0ï7Iðî.óï&åðî0Wï)¬ðî"ºï/‚ðî"ºï-ð î/:ï4;ð î"ºï4Éð î"ºï*:ðî"ºï'sð î"ºï7×ðî"ºï2Iðî"ºï:žðî1sï:ðî:Wï1sðî:ï7Iðî;tï:ðî9;ï4;ð î.eï2³þ€�$î5åï1,þ�$«î.eï1 þ¤�$î.eï1 þ�$Îî.eï6Þþ�$Îî.eï6Þþ¤�$î5åï7þ�$«î.eï8‰þ€�$î.eï(%þ€�$î5åï&žþ�$«î.eï&zþ¤�$î.eï)Aþ�$Îî.eï)Aþ¤�$î5åï)eþ�$«î.eï*ìþ€�$î.eï$Ïþ€�$î5åï#Hþ�$«î.eï#%þ¤�$î.eï5{þ€�$î5åï3óþ�$«î.eï9¥þ�$Îî.eï9¥þ¤�$î5åï9Éþ�$«î.eï;Pþ€�$î.eï-³þ€�$î5åï,,þ�$«î.eï, þ¤�$î.eï, þ�$Îî8eï1 þ�$Îî8eï1 þ¤�$î?æï1,þ�$«î8eï2³þ€�$î?æï3óþ�$«î8eï5{þ€�$îï7%þ+�$îÈï5þ�$9îï4ìþN�$îï4ìþ�$]îï<%þ�$]îï<%þN�$îÈï<Iþ�$9îï>^þ+�$îVïLôþ�$òîïLÑþ�$îHpï5WðîHï<ðîïNÃþ9�$îïLÑþ9�$îïE˜þ9�$îïGÑþ9�$îïE˜þ�$]îVïE»þ�$9î¹ïM;þ�$�Gî¹ïMÊþ�$�Gî¹ïNXþ�$�Gî¹ïGþ�$�Gî¹ïFþ�$�Gî¹ïFþ�$�Gî0tï#ðî"ºï$óðîdïLþ�$�ÕîdïKûþ��$îÈïKþ�$òîÈïJßþ�$îdïGÑþ�$�ùîdïH¦þ��$îÈïGÑþ�$îÈïIÂþ�$îdïGôþ�$�î€pïM;ðî€ïFðîdïJQþG�$î¬|ïF ðîGï2çðîÈïIæþ�$îtïKðî¹ïO-þ�$�Žî+ïPðîºuïFðîäïDŸð î Ötï6»ðî Gï/ìþ€�$î Gï03þÇ�$î Gï0zþÇ�$î Gï0ÂþÇ�$î Gï1 þÇ�$î Gï1PþÇ�$î Gï1—þÇ�$î Gï1ÞþÇ�$î Gï2%þ€�$î€|ï.uðî€ï.uðî ï.uðî ï.uðî Gï0þ�$«îòtï1,ðîï6—þŽ�$î +ï:{þr�$î +ï<mþr�$î+ï=Bþ��$î +ï;»þ�$«î+ï;—þ$�$î+ï;—þ�$ÎîGï<ðî+ï;Pþ��$î +ï9Éþ�$«î+ï9¥þ$�$î+ï9¥þ�$ÎîÖï:ðî ï8‰þ�$îï8¬ðîHï9;þ�$î�ï:Wðî«ï=Bþò�$î|ï9’ðîï2Yðî€ï8¼ðî€ï6Ëðî€ï4Ùðî€ï2çðîHïHKðîHïG/ðîHïFðîHïDöðîºuï>Éðîºï3óðî :ïXðî(HïXðî.¬ïXðî5žïXðî!ï`gðîï=fðîÖïM;ðîHïFðî*ï3þ€�$î*ïzþÇ�$î*ïÁþÇ�$î*ïþÇ�$î*ïOþÇ�$î*ï–þÇ�$î*ïÝþÇ�$î*ï%þÇ�$î*ïlþ€�$î,º|ï¼ðî,ºï¼ðî-Iï¼ðî-Iï¼ðî-IïØðî-IïØðî,ºïØðî,ºïØðî*ïˆþ€�$î*ïAþÇ�$î*ïúþÇ�$î*ï³þÇ�$î*ïkþÇ�$î*ï$þÇ�$î*ïÝþÇ�$î*ï–þÇ�$î*ïOþ€�$î*ïkþ€�$î*ï²þÇ�$î*ïúþÇ�$î*ïAþÇ�$î*ïˆþÇ�$î*ïÏþÇ�$î*ïþÇ�$î*ï]þÇ�$î*ï¤þ€�$î,ºïôðî,ºïôðî-Iïôðî-Iïôðî0ïOþ�$î0ïkþ�$î0ïˆþ�$î1,ï«þ�$Çî1,ïkþV�$î2ItïðîUïT-þ:�GîïBôþ�GîUïBþ�GîUïBþ�GÈî9pïQôðîuïIæðîtïJtðî ï5åþ�$€î.eï<mþ¤�$î.eï>þ€�$î0Wï<×ðî8eï>þ€�$î8eï<mþ¤�$îïdþ +�Gîïdþ�G&WîÈï=Bþ�$îGïMíþÖ�$îŽïNðî �|ïJ=ðî ï9¥þ�$î«ï6 þ«�$î«ï6,þ�$9îÈï6 þ9�$îï8Bþ�$]îï8BþN�$îÈï8eþ�$9îï:{þ+�$î+tï8ôðîÈï9^þ9�$îäï8ôþ�$îï:ðîï6»ðîäï5žþ�$î",ï1Þþ9�$î",ï,Þþ9�$î",ï/^þV�$î!åï4¥þ€�$î,º|ï4ðî*ï4’ðî*ï4’ðî-Iï7´þ�$î!åï7´þä�$î5åï=Bþ€�$î5åï1Þþ€�$î5åï4¥þ€�$î5åï7´þ€�$î.eï3Ðþ€�$î8eï3Ðþ€�$î",ï:{þ9�$î5åï:{þ€�$î5åï#úþ«�$î;tï Jðî=fuï#ðî!åï*þ€�$î!åï'Oþ€�$î5åï*þd�$î5åï'Oþ«�$î;t|ï&gðî;tï#Ÿðî=fuï)¬ðî=fï&åðî)¬ï7Iþ�$î)etï8eðî.eï3óþ�$«î8eï3óþ�$«î)¬ï)¬þ�$î)eï*Èðî)¬ï&åþ�$î)eï(ðî)¬ï4;þ�$î)eï5Wðî)¬ï:þ�$î)eï;-ðî)¬ï1sþ�$î)eï2ðî)¬ï<×þ�$î)eï=ôðî)¬ï,sþ�$î?æuïUðî9ÉtïZØðî9ÉïYuðî9ÉïXðî9ÉïVðî.eï#Hþ�$«î.¬pïBðî8eïBðî%:ïBðî!åï$ÏþÇ�$î#tï#Hð î#ï#%þ«�$î)¬ï"sþ�$Uî)¬ï#úþ¹�$î+Wï#þ�$î*Èï$¬ðî)eï-ðî5åï,Þþd�$îuï+žðî9ï*ð î ï+žðî ¹ï*ðîŽïF´þŽ�$îÖtïFØðî �|ïCðî",ïlþV�$î"ºtïðî$¬ïäð î$¬ïð î$¬ïð î"ºï¬ðî",ïˆþV�$î",ï¤þV�$î"ºïÈðî!åï«þ�G%ÈîÈpï+ðîdtï)ð î9ï)ðî ¹ï)ð î9ï(ð î ¹ï(ð î9ï&åð î ¹ï&åð î9ï%Èðî ¹ï%Èð î9ï$¬ðî ¹ï$¬ð îuï$¬ðîÖï)ðî.eï&žþ�$«î¬|ïL½ðîïPmþ�$î+tïP‘ðîuïPðîBf|ï=.ðîBfï=.ðîE»tï2ðîBf|ï.¼ðîBfï.¼ðîE»tï@tðîDŸï1Þþ¹�$îDŸï@Pþ¹�$î?æï1ÞþÇ�$î.eï<þ�$«î5åï<þ�$«î8eï<þ�$«î?æï<þ�$«îuï=ð î;tïAIðî?æï?žþ�$«î8eï?žþ�$«î8eï?{þ¤�$î8eïA&þ€�$î8ôtï?æðî8ôï<×ðî?æï@PþÇ�$î6tï=Bþ�$2î6tï@Pþò�$î1ºuï>‚ðîAï>Éþ�$«îAï>¦þÇ�$î?æï=Bþr�$î?æï:{þ«�$îAï:{þ�$‡îAï;ÞþÇ�$î?æï7´þÇ�$îBï7´þ�$ëîBï:{þ«�$îDXï9Éþ�$ÖîDXï<´þ��$îE»tï<×ðîIX|ï< ðîIXï9ðîIXï..ðîFuï8ðîDï7ð îDŸï5åðî%:ï^uþ�$î$¬tï_Jðî.óï_Øð î$óïZJþ�$î$eï[fðî Èpï^.ðî :ïZðî'ºïZðî.ïZðî5ïZðî9ÉïYQþ��$î9ÉïWíþ��$î9ÉïVŠþ��$î=|ïWðî=ïU¡ðî=ïT=ðî=ïRÚðî-Iï9’ðî-Iï6Ëðî-Iï4ðî-Iï0õðî-Iï..ðî-Iï).ðî-Iï&gðî-Iï#Ÿðî-Iï JðîC;ï9’ðîC;ï:õðîC;ï8.ðîC;ï6Ëðî7Iï4ðî7Iï6Ëðî7Iï0õðî7Iï..ðîï;tþ +�Gî7Iï9’ðî7Iï< ðîï]|þò�$îÖï1 þ9�$î:tï'ºð î?Wuïð î!årï«ð î?Wuïdðÿ�������Cä��9dJ bç Œ������������������������������������������������������������������������������������������������������������������������������������������������������������������MEMORYSYSTEM//ISJ-LEVEL2 BITSM LEVELX LEVELPCFGPCMPCXPCJIFU DATATO BYTEPOINTSTO WORDOP AT JOP AT MOP AT XNKH181+1+1+1PCFPOINTSTO BMUX16 BITSHDVMDVBRKINSTESTIFUBMUXIFUBMUX16 BITS8 BITS + SIGN EXTENDNXILXINSTRUCTION SETIS.0ADDERBMUXBMUXENABLE16 BITS16 BITS16 BITSINSTRADDR10 BITSRAMPARITY3 BITSM LEVELILNMEMB01342MXSIGNRBASESELTYPATYJMPM LEVELK LEVELMEM FAULTTO IFUMAR16 BITSVALID RAM = JDV + NO PROBLEMSKREADY = FOR AN _IFU DATA THE FOLLOWING THINGS WILL COME OUT OF THE IFU ON IFU DATA:DURING A JUMP YOU WILL ONLY GET INSTRUCTION LENGTH FOR AN _ ID.JDV + LENGTH = 1JDV + HDV + LENGTH = 2JDV + HDV + FGDV + LENGTH = 3KREADY = KREADY = JDVEXECPTIONADDRESSPROCESSORRAM OUTPUT27 BIT/1K RAMFDVFGDVKREADY0:30:1ALPHA 0:7ALPHA 0:3F-BYTE 0:7G-BYTE 0:7F-BYTE 8:15G-BYTE 8:15TO CONTROLPageDateRevDesignerProjectFileXEROX1CSLVEST<PHYLUM>DORADOIFU BLOCK DIAGRAMIFUBLOCKDIAGRAM.SIL1. ENCODED CONSTANT (N)2. 3. BETA4. INSTRUCTION LENGTH0:30:10:9N= 17 MEANS THAT THERE IS NO CONSTANTIF YOU DO SEVERAL _IFU DATA'S YOU WILL EVEUTALLY ONLY GET THE INSTRUCTION LENGTH(COULD BE TWO FOUR BIT QUANTITIES IF 2ALPHA BIT SET)FG 0:7 + PARITYPCFG.15GDV'S1S28 BITS + PARITY"H" LOADSAT T1X0X1X2X3GDVIFU DATA GOES TO THE PROCESSOR AND ALSO TO THE MEMORY SYSTEMPCFG.15IS.0XOR WITHPCFG.15"J" LOADS AT T0D5-14-82��î¬tïZØðî¬ïY¼ðîsïM_ðîäïLBðîÈïIæþ V�$î$ïGÑþ�$9îÈïGþ y�$îÈïGþ�$]îïGÑþ�$9îVïH_ðîÈïJ ðîsïJ þ�$ÇîHïKJðî��ïGþë�$î��ïA´þ�$î��ïAþ$�$îúï7´þH�$î$Aï4‚þ�$Uîúï4^þk�$îÖï4^þ�$yîï5Âðî]ï-%þ�$yî]ï-%þ r�$î$¬ï-Iþ�$Uî]ï0zþ r�$î%ï.eðî ìï$ˆþ�$Àî(%ï0zþ9�$î/^ï-Iþ�$Uî(%ï-%þ]�$î(%ï-%þ�$yî(%ï4^þ�$yî(%ï4^þ]�$î/^ï4‚þ�$Uî(%ï7´þ9�$î ìï0Âþ�$Àî+zï0žþ�$äî(ïGþ9�$î/:ïD{þ�$Uî(ïDXþ]�$î(ïDXþ�$yîsïOtþ ä�$î+WïHþ�$€î+Wï7×þ�$¤î&åïC;þ•�$î&åïC;þ�$]îˆïK&þ�$�ùî8ïYuþ�$yî8ïYuþ ²�$îBïY˜þ�$Uî8ï\Êþ �$îBïP´þ�$Uî8ïP‘þ�$yî8eïDXþ�$yî8eïDXþ k�$îBïD{þ�$Uî8eïGþ G�$î8Bï7´þ �$îBÐï4‚þ�$Uî8Bï4^þ ²�$î8Bï4^þ�$yî8Bï-%þ�$yî8Bï-%þ ²�$îBÐï-Iþ�$Uî8Bï0zþ �$î9;ïQÑðî9^ï5žðî9^ï.eðî9;ïE˜ðî+zï',þ�$î"–ï'þ �$î"–ï$eþ�$ÇîÏïÖðî=ïQCðî<ï[Cðî<ïZ&ðî&Wï[þë�$î=ïE˜ðî=Ðï5žðî=Ðï.eðî<ï7´þ�$Èî<´ï0žþ�$äî<ïBþÇ�$îCÉïBþ9�$îJ»ï=Bþ�$äîFï=þN�$îFï=þ�$ îEtï?æþ@�$îEtï=Ðþ�$äîCÉïAþÎ�$îCÉï>Éþ�$�$îBï>^ðîBï@—ðîGïC;ðîJ»ïAþd�$îLïAþ�$ÏîCïR<þ +�$îLïR<þ�$ îBï[þ –�$î<ïGÑþ�$äîDæïFþ�$î?æïIæþ�$î?æïGÑþ�$9î8ïSæþ ²�$î8ïP‘þ ²�$îBïR<þ�Ž�$îC;ïSXþ�Ž�$îDXïSXþ�$ëî?WïVþ�$î?WïT þ�$9îBïSXþ�Ž�$îDæïT ðîC;ïGBðîDXï\îðîBï\<þ�$îCÉï\<þ�$yî>;ï_‘þ²�$î>;ï]5þ�$€î9;ïZµðîCÉïIæþ�$îC;ïVþ�$îBïSXþ«�$î=ïR_ðî:{ï&ðî:žï$Ïðî&åïR_þ�$�$î&ÁïRƒþ�$�$î&žïR¦þ�$�$î&åïS4þ�$�$î&ÁïSþ�$�$î&žïRíþ�$�$î&zïRÊþ�$�$îF&ïBBþ�$�$îFIïBfþ�$�$îFmïB‰þ�$�$îFïBþ�$�$îFmïBÐþ�$�$îFIïBôþ�$�$îF&ïCþ�$�$î"sï#þ�$�$î"Oï"Þþ�$�$î",ï"ºþ�$�$î"ï"–þ�$�$î!åï"sþ�$�$î!Áï"Oþ�$�$î!žï",þ�$�$î+åï1 þ�$�$î+Áï0åþ�$�$î+žï0Âþ�$�$î+zï0žþ�$�$î+Wï0Âþ�$�$î+3ï0åþ�$�$î+ï1 þ�$�$î+Áï8Bþ�$�$î+žï8þ�$�$î+zï7ûþ�$�$î+Wï7×þ�$�$î+3ï7ûþ�$�$î+ï8þ�$�$î*ìï8Bþ�$�$î+ÁïH;þ�$�$î+žïHþ�$�$î+zïGôþ�$�$î+WïGÑþ�$�$î+3ïGôþ�$�$î+ïHþ�$�$î*ìïH;þ�$�$î+WïGôþ�$�Gî&åïZµþ�$�$î&ÁïZØþ�$�$î&žïZüþ�$�$î&åï[Šþ�$�$î&Áï[fþ�$�$î&žï[Cþ�$�$î&zï[þ�$�$îC;ïQÑþ�$�$îCïQôþ�$�$îBôïRþ�$�$îC;ïR¦þ�$�$îCïRƒþ�$�$îBôïR_þ�$�$îBÐïR<þ�$�$îC;ïZµþ�$�$îCïZØþ�$�$îBôïZüþ�$�$îC;ï[Šþ�$�$îCï[fþ�$�$îBôï[Cþ�$�$îBÐï[þ�$�$î=ï1 þ�$�$î<ûï0åþ�$�$î<×ï0Âþ�$�$î<´ï0žþ�$�$î<ï0Âþ�$�$î<mï0åþ�$�$î<Iï1 þ�$�$î<ûï8Bþ�$�$î<×ï8þ�$�$î<´ï7ûþ�$�$î<ï7×þ�$�$î<mï7ûþ�$�$î<Iï8þ�$�$î<%ï8Bþ�$�$î<ûïH;þ�$�$î<×ïHþ�$�$î<´ïGôþ�$�$î<ïGÑþ�$�$î<mïGôþ�$�$î<IïHþ�$�$î<%ïH;þ�$�$î@PïH;þ�$�$î@-ïHþ�$�$î@ ïGôþ�$�$î?æïGÑþ�$�$î?ÂïGôþ�$�$î?žïHþ�$�$î?{ïH;þ�$�$î?ÂïTtþ�$�$î?žïTQþ�$�$î?{ïT-þ�$�$î?WïT þ�$�$î?4ïT-þ�$�$î?ïTQþ�$�$î>íïTtþ�$�$î>¦ï]Xþ�$�$î>‚ï]5þ�$�$î>^ï]þ�$�$î>;ï\îþ�$�$î>ï]þ�$�$î=ôï]5þ�$�$î=Ðï]Xþ�$�$î!Vï1 þ�$�$î!3ï0åþ�$�$î!ï0Âþ�$�$î ìï0žþ�$�$î Èï0Âþ�$�$î ¥ï0åþ�$�$î ï1 þ�$�$îÝïJtþ�$�$îºïJQþ�$�$î–ïJ-þ�$�$îsïJ þ�$�$îOïJ-þ�$�$î+ïJQþ�$�$îïJtþ�$�$îÝïKmþ�$�$îºïKJþ�$�$î–ïK&þ�$�$îsïKþ�$�$îOïK&þ�$�$î,ïKJþ�$�$îïKmþ�$�$îóïKmþ�$�$îÏïKJþ�$�$î¬ïK&þ�$�$îˆïKþ�$�$îeïK&þ�$�$îAïKJþ�$�$îïKmþ�$�$î>^ï_‘þ�G�$î=ï(lþ�$�$î<ûï(Hþ�$�$î<×ï(%þ�$�$î<´ï(þ�$�$î<ï(%þ�$�$î<mï(Hþ�$�$î<Iï(lþ�$�$îBÐïSXþ�G�$îBÐï\<þ�$�$î1—ïA´þ�$�$î1sïAþ�$�$î1PïAmþ�$�$î1,ïAIþ�$�$î1 ïAmþ�$�$î0åïAþ�$�$î0ÂïA´þ�$�$î4ï8Bþ�$�$î3óï8þ�$�$î3Ðï7ûþ�$�$î3¬ï7×þ�$�$î3‰ï7ûþ�$�$î3eï8þ�$�$î3Bï8Bþ�$�$î1—ï7´þä�$î5{ï4‚þ�$Uî1—ï4^þ�$î1—ï4^þ�$yî4ìï?æðî2³ï5žðîÝïLþ�$�$îºïKûþ�$�$î–ïKØþ�$�$îsïK´þ�$�$îOïK‘þ�$�$î+ïKmþ�$�$îïKJþ�$�$î¬ïKûþ]�$î&åïJ˜þ�$�ŽîsïK&þ�$�Gî&åïKþ�$îïJßþë�$îlïJ þ�$�ÕîóïJßþ�$�$î–ïOtþ�$�$îÈïOtþ‡�$î��ïXæþ�$îïUµþ�$Uî��ïU‘þ@�$î��ïU‘þ�$yîäïU‘þ�$yîäïU‘þ@�$î�ïUµþ�$UîäïXæþ�$îïVÑðî ïVÑðî�Žï[Cðî rï[CðîÇïOtþ²�$îÇïOtþ�$@î«ïO˜þ�$îÇïYQþ�$òî«ïY þ�$9î2ïYuþ�$�$îïYQþ�$�$îëïY.þ�$�$îÇïY þ�$�$î¤ïY.þ�$�$î€ïYQþ�$�$î]ïYuþ�$�$îïYuþ�$�$îòïYQþ�$�$îÏïY.þ�$�$î«ïY þ�$�$î‡ïY.þ�$�$îdïYQþ�$�$î@ïYuþ�$�$îÇïY.þ�$�$î=ï+þ�$�$î<ûï*ìþ�$�$î<×ï*Èþ�$�$î<´ï*¥þ�$�$î<ï*þ�$�$î<mï*^þ�$�$î<Iï*:þ�$�$î=ôï*:ðî#lï",ðî<´ï(³þ�$•î<´ï(%þ�$�²î,ºï%¥þ�$€î$ˆï%þV�$î$eï$Ïþ�$�Õî",ï$Aþ�$�$î$Ïï$Ïþ�$�$î$¬ï$¬þ�$�$î$ˆï$ˆþ�$�$î$eï$eþ�$�$î$Aï$ˆþ�$�$î$ï$¬þ�$�$î#úï$Ïþ�$�$î$ˆï%þ�$�$î$eï$eþ�$�Gî$eï$¬þ�$�Gî#ï$Ïþ�$�$î"Þï$¬þ�$�$î"ºï$ˆþ�$�$î"–ï$eþ�$�$î"sï$ˆþ�$�$î"Oï$¬þ�$�$î",ï$Ïþ�$�$î!ï-%þ�$�$î"ºï'þ�k�$îúï$eþ�$äî"sï ìþ�$�$î"Oï Èþ�$�$î",ï ¥þ�$�$î"ï þ�$�$î!åï ¥þ�$�$î!Áï Èþ�$�$î!žï ìþ�$�$îzï+3ðî!zï+zðîïM_ðî(ïUþ9�$î/ÉïP´þ�$rî(ïP‘þ9�$î(ïP´þ�$rî&žïRÊþò�$î*ïVõðî+ïU&þ�$«î+zïU‘þ�$�$î+WïUmþ�$�$î+3ïUJþ�$�$î+ïU&þ�$�$î*ìïUJþ�$�$î*ÈïUmþ�$�$î*¥ïU‘þ�$�$î0WïQÑþ�$�$î03ïQôþ�$�$î0ïRþ�$�$î0WïR¦þ�$�$î03ïRƒþ�$�$î0ïR_þ�$�$î/ìïR<þ�$�$î/ÉïR<þV�$îFûïAðî<´ïf<ðî?ÂïfÊþ€�$îLï[Cþ�$«î@»ïc¼ð îFIïg ðîDXïY˜ðîDXïP´ðî�ŽïE ð î�ŽïCíðî«ïA´þ�$î9ïE ð î9ïCíðî VïA´þ�$î$ïA´þ�$îïA´þ�$î9ï5{ðî��ï4;þ�$yî��ï4;þë�$îÇï8ôþ�$ÀîÖï1 þ�$�$î³ï0åþ�$�$îï0Âþ�$�$îlï0žþ�$�$îHï0Âþ�$�$î%ï0åþ�$�$îï1 þ�$�$îlï0Âþ�$î!åpïEPðî!VïA´þ�$î"sï7´þ�$ �îïEPðîïA´þ�$î¬ï7×þ�$ Oî¬ï@tþ�$@î2ï/Éþ�$�$îï/¥þ�$�$îëï/‚þ�$�$îÇï/^þ�$�$î¤ï/‚þ�$�$î€ï/¥þ�$�$î]ï/Éþ�$�$î ï8Bþ�$�$îóï8þ�$�$îÏï7ûþ�$�$î¬ï7×þ�$�$îˆï7ûþ�$�$îeï8þ�$�$îAï8Bþ�$�$î"Þï8Bþ�$�$î"ºï8þ�$�$î"–ï7ûþ�$�$î"sï7×þ�$�$î"Oï7ûþ�$�$î",ï8þ�$�$î"ï8Bþ�$�$î ätïEtðîïCíðîïBÐðîïA´ðîˆïC;þ�$�$îAïC;þ�$�$îdïC_þ�$�$îkïC¦þ�$�$îïCÉþ�$�$î³ïCíþ�$�$î³ïBôþ�$�$îïCþ�$�$îÖïBôþ�$�$îúïBôþ�$�$îïCþ�$�$îïCÉþ�$�$îúïCíþ�$�$îÖïCíþ�$�$îúïCíþ�$�$îóïCíþ�G�$îóïCíþ�$�$îÏïCíþ�$�$î¬ïCÉþ�$�$îóïBôþ�$�$îïBôþ�$�$îÏïBôþ�$�$î¬ïCþ�$�$îdïC‚þ�$�$îAïC¦þ�$�$îˆïC¦þ�$�$îkïC‚þ�$�$îkïC;þ�$�Gî*¥ï5žþ�$�$î*^ï5žþ�$�$î*ï5Âþ�$�$î)ˆï6 þ�$�$î)¬ï6,þ�$�$î)Ðï6Pþ�$�$î)Ðï5Wþ�$�$î)¬ï5{þ�$�$î)óï5Wþ�$�$î*ï5Wþ�$�$î*:ï5{þ�$�$î*:ï6,þ�$�$î*ï6Pþ�$�$î)óï6Pþ�$�$î*ï6Pþ�$�$î+ï6Pþ�G�$î+ï6Pþ�$�$î*ìï6Pþ�$�$î*Èï6,þ�$�$î+ï5Wþ�$�$î+3ï5Wþ�$�$î*ìï5Wþ�$�$î*Èï5{þ�$�$î*ï5åþ�$�$î*^ï6 þ�$�$î*¥ï6 þ�$�$î)ˆï5åþ�$�$î)ˆï5žþ�$�Gî*ï.‰þ�$�$î*:ï.‰þ�$�$î*^ï.¬þ�$�$î)eï.óþ�$�$î)ˆï/þ�$�$î)¬ï/:þ�$�$î)¬ï.Aþ�$�$î)ˆï.eþ�$�$î)Ðï.Aþ�$�$î)óï.Aþ�$�$î*ï.eþ�$�$î*ï/þ�$�$î)óï/:þ�$�$î)Ðï/:þ�$�$î)óï/:þ�$�$î*ìï/:þ�G�$î*ìï/:þ�$�$î*Èï/:þ�$�$î*¥ï/þ�$�$î*ìï.Aþ�$�$î+ï.Aþ�$�$î*Èï.Aþ�$�$î*¥ï.eþ�$�$î*^ï.Ðþ�$�$î*:ï.óþ�$�$î*ï.óþ�$�$î)eï.Ðþ�$�$î)eï.‰þ�$�GîpïDÂðî,,ï5ðî+åï.ðîC_ïe þ�$�ùîBfïeÑþ�$òîBfïe®þ�G�$îBïeÑþ�G�$îBôïeõþ�G�$îC;ïfþ�G�$îC‚ïf<þ�G�$îCÉïf`þ�G�$îDïfƒþ�G�$îDXïf§þ�G�$îDXïfÊþ�G�$îDïfîþ�G�$îCÉïgþ�G�$îC‚ïg5þ�G�$îC;ïgYþ�G�$îBôïg|þ�G�$îBïg þ�G�$îBfïgÃþ�G�$îBBïfÊþ�$�$îìïAþ�$@îÁtïF&ðîïE ðîÁïCíðîÁïBÐðîïA´þ�$îÈïF&ðîÈïE ðîÈïCíðîïA´þ�$îïF&ðîïE ðîÈïA´þ�$îVïF&ðîVïE ðîVïCíðîVïBÐðî�ï8þ�$ –î��ï7þÇ�$î ï4^þ�$Uîäï7ûþ�$ ¹îÇï4^þ�$Uîrï5žðî9ï>;ðîÇï/^þ�$�î«ï@ þ�$«îäï@ þ�$«îï@ þ�$«îäï@ þ�$«î&WïXæþU�$î/^ïX|þ�$�$î/‚ïXŸþ�$�$î/¥ïXÃþ�$�$î/ÉïXæþ�$�$î/¥ïY þ�$�$î/‚ïY.þ�$�$î/^ïYQþ�$�$î)ïXæþ«�$î0WïX|ð î0WïW_ðî,sï`Ñðî-lï[Cþ�$�î-×ï[®þ�$�$î-³ï[Šþ�$�$î-ï[fþ�$�$î-lï[Cþ�$�$î-Iï[fþ�$�$î-%ï[Šþ�$�$î-ï[®þ�$�$î.eï]Ãðî-×ï^˜þ�$�$î-³ï^uþ�$�$î-ï^Qþ�$�$î-lï^.þ�$�$î-Iï^ þ�$�$î-%ï]çþ�$�$î-ï]Ãþ�$�$îrïeðîrï,ð îrïºðKîÝï Àð@î ï,ðî ïðî ïóðîrïð îrïóð î2ïKûþ�$‡î2ïKûþ�$î5åïLþ�$dî2ïM_þä�$î/‚ïA&þ2�$î03ï?æðîï<%ð îï; ðîŽï9;þ�$�²î"ï ¥þ�$î Àï.¬ð îkï0žþ�$ÀîÖï0åþ�$�$î²ï0Âþ�$�$îï0žþ�$�$îkï0zþ�$�$îHï0žþ�$�$î$ï0Âþ�$�$î�ï0åþ�$�$îVï0åþ�$�$î2ï0Âþ�$�$îï0žþ�$�$îëï0zþ�$�$îÈï0žþ�$�$î¤ï0Âþ�$�$îï0åþ�$�$îëï0žþ�$äîOï8Bþ�$�$î+ï8þ�$�$îï7ûþ�$�$îäï7×þ�$�$îÁï7ûþ�$�$îï8þ�$�$îyï8Bþ�$�$îkï8Bþ�$�$îHï8þ�$�$î$ï7ûþ�$�$î�ï7×þ�$�$îÝï7ûþ�$�$î¹ï8þ�$�$î–ï8Bþ�$�$îùï9^þ�$�$îÖï9;þ�$�$î²ï9þ�$�$îŽï8ôþ�$�$îkï9þ�$�$îGï9;þ�$�$î$ï9^þ�$�$î2ï9^þ�$�$îï9;þ�$�$îëï9þ�$�$îÇï8ôþ�$�$î¤ï9þ�$�$î€ï9;þ�$�$î]ï9^þ�$�$îŽï9þ�$�$î!Vï$Ïþ�$�$î!3ï$¬þ�$�$î!ï$ˆþ�$�$î ìï$eþ�$�$î Èï$ˆþ�$�$î ¥ï$¬þ�$�$î ï$Ïþ�$�$îeï$Ïþ�$�$îAï$¬þ�$�$îï$ˆþ�$�$îúï$eþ�$�$îÖï$ˆþ�$�$î³ï$¬þ�$�$îï$Ïþ�$�$îï?æð îïHíð îÈïIæþr�$îBïFþ9�$îCÉï>Éþ«�$îFïFþ+�$îFïBþ�Ž�$îD{ïfÊþ¤�$î ï7´þ«�$îºï4‚þ�$Uî ï4^þ«�$îºï4^þ�$�$îˆï8Bþ�$�$îdï8þ�$�$îAï7ûþ�$�$îï7×þ�$�$îúï7ûþ�$�$îÖï8þ�$�$î³ï8Bþ�$�$îï@tþ�$@îï7×þ�$ Oîäï7×þ�$ Oîäï@tþ�$@îOï8Bþ�$�$î,ï8þ�$�$îï7ûþ�$�$îäï7×þ�$�$îÁï7ûþ�$�$îï8þ�$�$îzï8Bþ�$�$îOï8Bþ�$�$î+ï8þ�$�$îï7ûþ�$�$îäï7×þ�$�$îÁï7ûþ�$�$îï8þ�$�$îzï8Bþ�$�$îäï@tþ�$@îäï7×þ�$ Oî«ï7×þ�$ Oî«ï@tþ�$@îï8Bþ�$�$îòï8þ�$�$îÏï7ûþ�$�$î«ï7×þ�$�$îˆï7ûþ�$�$îdï8þ�$�$îAï8Bþ�$�$î2%ïM_þ�$�$î2%ïKûþ�$�$î2×ïO ðî2%ïNæþ�$�$î2%ïPJþ�$�$î2ïPJþä�$î5åïO þ�$dî2ïNæþ�$î2ïNæþ�$‡î5åïPJþ�$�$î4;ïMíþ�$�$î4ïMÊþ�$�$î3óïM¦þ�$�$î3ÐïM‚þ�$�$î3¬ïM¦þ�$�$î3‰ïMÊþ�$�$î3eïMíþ�$�$î3ÐïM‚þ�$dî0ÂïN4þ�$î0ÂïK&þ�$2î0ÂïKþ]�$î3ïJ þ�$î3ÐïJ þ�$òî4¥ïJQþ�G�$î4^ïJ-þ�G�$î4ïJ þ�G�$î3BïGôþ�$�$î4¥ïIæþ�$�$î4ÉïJ þ�$�Gî4‚ïI{þ�$�$î4¥ïIŸþ�$�Gî4‚ïIXþ�$�$î4^ïIþ�$�Gî4;ïHÉþ�$�Gî4ïH‚þ�$�Gî3óïH_þ�$�$î3ÐïH;þ�$�$î3¬ïHþ�$�$î3‰ïGôþ�$�$î3eïGÑþ�$�$î3eïGÑþ�$�$î2³ïH‚þ�$�Gî2ïHÉþ�$�Gî3ïHþ�$�$î2ûïH;þ�$�$î2×ïH_þ�$�$î2³ïH‚þ�$�$î2lïIþ�$�Gî2IïIXþ�$�Gî2%ïIŸþ�$�kî2ïJ þ�$�kî2ûïIæþ�$î2×ïJ þ�$�$î2³ïJ þ�$�$î2ïJ-þ�$�$î2lïJ-þ�$�$î2IïJQþ�$�$î2%ïJQþ�$�$î3eïC;þ�$�Gî7´ï?æþ�$@î3¬ïBÐðî3eïBÐþ�$�Žî3eïBþ€�$î5åïA&þ�$�²î1ºï; ðî6PïAþ�$�$î6,ïAmþ�$�$î6 ïAIþ�$�$î5åïA&þ�$�$î5ÂïAIþ�$�$î5žïAmþ�$�$î5{ïAþ�$�$î1,ïBþ9�$î1,ïA&þ�$�Õî1,ï>^þ�$@î1,ï>;þd�$î2ï<þ�$Îî5åï>^þ�$@î4^ï>;þ«�$î4^ï<´þ�$«î4^ï<þ�$�$îïC_ðî!åïC_ðî$óï',ð î$óï%Èð îVïZØð îVï^.ð îVïY.ðîVï\ƒðî�Žï-×ð îOïOtþ�$�$îsïK&þ�$kîOïO˜þ�$�$î–ïO˜þ�$�$î–ïOQþ�$�$îOïOQþ�$�$îÖïJtþ�$�$î³ïJQþ�$�$îïJ-þ�$�$îlïJ þ�$�$îHïJ-þ�$�$î%ïJQþ�$�$îïJtþ�$�$î��ï�Õþ�Grî��ï�ŽþNX�Gî«ï�Õþ�Grîrï�Õþ�Grî!Vï�Õþ�Grî:åï�Õþ�Grî>;ï�Õþ�GrîGï�Õþ�GrîGïðî>Éïðî;tïðî3ïðî9ïðî0åï�Õþ�Grî!åïðîpïUðî��ï�þNX�GîH;ï«ðîï«ðî3¬tïòðî%:ïðîÇpï«ðîï9ðî!åtïòðîNXï�Õþ�GrîrïòðîrïHðî¤ï²þ�$�$î]ï²þ�$�$î€ïÖþ�$�$î‡ïþ�$�$î«ïAþ�$�$îÎïdþ�$�$îÎïkþ�$�$î«ïþ�$�$îòïkþ�$�$îïkþ�$�$î9ïþ�$�$î9ïAþ�$�$îïdþ�$�$îòïdþ�$�$îïdþ�$�$îïdþ�G�$îïdþ�$�$îëïdþ�$�$îÇïAþ�$�$îïkþ�$�$î2ïkþ�$�$îëïkþ�$�$îÇïþ�$�$î€ïúþ�$�$î]ïþ�$�$î¤ïþ�$�$î‡ïúþ�$�$î‡ï²þ�$�Gîrïð îrïòðîVï)óðî!Vï)óðîUï1ºðî9ï=Ðþä�$îrïòð%î�ï7ûþ�$�Gî$ïAþ�$�$îÝïdðPî«ïHð5îäïSðî&WïQCþ�$îïPØþ�$rîïP´þÇ�$î&WïP´þ�$@î:ï\_þV�$î:ïY þV�$î:ïZµþV�$î:ï^ þV�$î:ïUJþ�$ îrïU&þ]�$îrïU&þ�$ ²îrï_µþÇ�$îäïVõðîäïUØðîïVõðîïUØðî«ïU&þ�Ž�$î:ïVÑþ�$î:ïUµþ�$îÈï\_þÎ�$îÈïSþ�$ rîÈïRíþ«�$îï_'þÇ�$îsïO»þ�$UîïM‚ðî(ïE»ðî+WïFIðî+WïE-ðîï^.ðîï\ƒðîïZØðîïY.ðî/‚ï?æþ�$@î/‚ï?Âþ�$î2ï?Âþ�$�$î4^ïAþy�$î4^ï?Âþ�$@î4‚ï?ÂþU�$î5åï?{þ�$�Gî1,ï?{þ�$�Gî2ï?Âþ�$�$î2ï>;þ�$�$î3¬ï?þ9�$î3¬ï?4þ�$¤î3¬ïA×þ�$�Žî2IïBBþd�$î2IïAþ�$�Õî2³ïA´þ�$�$î2ïAþ�$�$î2lïAmþ�$�$î2IïAIþ�$�$î2%ïAmþ�$�$î2ïAþ�$�$î1ÞïA´þ�$�$î2IïAmþ�$�$î2×ï?æþ�$dî2³ïA&þ�$�$î2³ï?Âþ�G�$î1,ïAûþ�$�²î3¬ï7ûþ�$Çî3eïC_þ�$rî2ûïLBðîÝï$Aþ¤�$îVïVÑþ9�$î¹ï +ð<î)¬ïSXðî)¬ïQðî)¬ïR<ðî2IïRÊðî5åïA´þ�$î]ï8Ðþ�$îNï7×þ�$�$î¹ï8þ�$�$î•ï7ûþ�$�$îrï7×þ�$�$îNï7´þ�$�$î+ï7×þ�$�$îï7ûþ�$�$îäï8þ�$�$îNï7ûþ�$�²îNï8¬þ�$�$îŽï9Éþ�$@îÇï7þ�$�$îïH‚ðî;tpï«ðî>Étïòðÿ�������ä�����ŽNŸh.Þ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Disk ControllerTagRegisterControlRegister16-wordFIFOFormatRAMSubsectorSequencePROM4ReadPROMSequenceWrite884OtherControls>IOB12>DriveTagCylinderTagHeadTagControlTag12TagBusWordCounter>1216-word>>>16TagTW6Divider4>>SubsectorCounterSectorTWiiiselectedbabaIndexTWqqcdeffedc18>NotOnLineNotReadyNotSelectedHeadOvflSeekIncDevCheckcdeffedcReadOnlyFIFOControlFifoUnderflowFifoOverflowRdFifoTWWrFifoTWShiftRegister>iSelectErrorsFromDiskDrivesTo DiskDrives>DriveErrorsFromController<<IOBParityErrFifoParityErrIOB18Fifo18D1Disk.silDaisy chain cableDaisy chain cable>Radial cable iSelected.0Selected.1Selected.2Selected.3Selected.iBitClock.iData.iSubsecIndex.i16>><Sequence.i<Select.i<ReadDataErr>16Subsec.iIndex.iSubsec.iIndex.i>>&StatusCylinderOffsetNoTerminator<>MuffRegister168MufflerMultiplexorsDMuxAddress84fedcMultiplexor controls11<<>DMuxData>DMuxDataDMuxClockBoardSelectBoardSelectabFigure 139/5/79��î ÈrïUðîHïT þG�$îHïJ˜þk�$îºïI4þ�$îºïI4þ²�$îHïIXþ�$äîºïMþŽ�$îHï6 þŽ�$îHï2%þ�$îrïTßþ�$îrïTßþù�$îHïUþ�$äîrïXÃþÖ�$î%ïGÑþd�$î+åïDþ�$äî%ïCíþ‡�$î%ïCíþ�$îdïZµþ�$îdïZµþ@�$îïZØþ�$äîdï^˜þ�$îótïO»ðîÖïNðîïK‘ðîHïIæðîÖï4‚ðîòï2×ðîïVfðîdïUJðî&ïFIð îòï\<ðî ïZØðîïZðî ï]Xðî ï_Øðîòïa<ðîdïc™þ�$îï_Øþ�$äîdï_µþ@�$îdï_µþ�$î ïbXðî«ïZnþ�$îïa§þ�$îï`gþ�$dîï\§þ�$îï\§þ�$‡îï^ þ�Ž�$îï`Cþ�Ž�$îï]Ÿþ�$Uîï^˜þ�$î:ïXæþ�$Öî+ï`õþ�$«îäïb ðî+ï[õþ�$«îäï]Ÿðîï_µþ9�$îï_þ�$«îºï`®ðîäï_Øðîäï^¼ðîV|ïS!ðî€tïVõðîÖïWƒðî:|ï\ðîHïTßþk�$î#ïUþ�$äîHïXÃþG�$î#ÖïO˜þ r�$î#ÖïN4þ r�$î#ÖïLÑþ r�$î#ÖïKmþ r�$î&tïO»ðî&ïNXðî&ïLôðî&ïK‘ð î#ïRþ ¹�$î%ÈïRÊðî(×ïR<ðî&WïQþ�$î¬ïW<ðîÖïU‘ðîHïVÑþ��$î,|ïS!ðîïVfþ�$îótïWƒðîïWƒðîïPØþ�$îÈïNþ�$î#ïJ»þ�$ rîïP´þ«�$îÈïOßþ€�$î9ïNÃþ�$î¬|ïKðî¬ïMðî,ïL/ðî.óïNþ�$dî.etïOtðî"sïIŸþ�$î@»ïIæðî!žïFþ�$¹î!žïEßþä�$î#HïEtþ�$î#ïFðî&åïE-ðî+åïEßþ�$î-ïEtþ�$î,ºïFðî$e|ïB/ðî-×ïB/ðî.óïCíþ�$î.óïCíþ‡�$î5WïDþ�$äî.óïGÑþd�$î/‚tïFIð î0ïE-ðî@»ïDæðî äï,,þ Ö�Gî1ºuïDðî(HïDðî7ïDðî7×tïDðî6»ïC¦þd�$î5WïEßþÇ�$î=|ïB/ðî=ïB/ðî0ïBBþ�$Îî3óï@—þ�$yîäï ;ðîäï ;ðîAtïAðî/‚|ï?®ðî3eï?®ðî5žï1ƒðî5žï1ƒðî5ï1ƒðî5ï1ƒðî2ï53þU�$î2ï4ìþ�$î2ï4¥þ�$î2ï4^þ�$î2ï4þä�$î2ï3Ðþ�$î2ï3‰þ�$î2ï3Bþ�$î2ï2ûþU�$î8eï4þ�Õ�$î2ï/¥þU�$î2ï/ìþ�$î2ï03þ�$î2ï0zþ�$î2ï0Âþä�$î2ï1 þ�$î2ï1Pþ�$î2ï1—þ�$î2ï1ÞþU�$î5ï..ðî5ï..ðî5žï..ðî5žï..ðî9;ï0åþ�$UîÈï4þ€�$îÖï3¬þ�$îHtï4Éðî+|ï0gðî8¬ï$þV�$î8¬ïˆþV�$î8¬ïÁþV�$î8¬ï]þV�$î8¬ïùþV�$î8¬ï–þV�$î9Étï«ð î9ÉïHðî:ïeðî9Éïäðî9Éïðî9Éïðî8eï0Âþ�Õ�$î5ž|ï&õðî5žï&õðî5ï&õðî5ï&õðî2ï*¥þU�$î2ï*^þ�$î2ï*þ�$î2ï)Ðþ�$î2ï)ˆþä�$î2ï)Aþ�$î2ï(úþ�$î2ï(³þ�$î2ï(lþU�$î8eï,Þþ�Õ�$î2ï+ÁþU�$î2ï, þ�$î2ï,Pþ�$î2ï,—þ�$î2ï,Þþä�$î2ï-%þ�$î2ï-lþ�$î2ï-³þ�$î2ï-úþU�$î5ï*Jðî5ï*Jðî5žï*Jðî5žï*Jðî9Étï¹ðî«ï:ðîHï6Þþ�$kîHï6Þþ²�$îÖï7þ�$GîHï<%þŽ�$îï8¬ðî9‚ï8ôð î9‚ï7ðî@»ï=ðî@»ï?ðîÖï4þ+�$îï6 þG�$î#Hï2Iþ�$äîï2%þk�$îï2%þ�$îeï4‚ðîï3ðîä|ï0gðî1ºï!3þ9�$î1ºïÏþ9�$î1ºïlþ9�$î1ºïþ9�$î8ôïþ�$î8ôï‘ðî7Itï"sðîBôuïðîBôïòðîBôïÖðîBôïºðî-ïNŸþÈ�Gî@-ïNæðî@-ïMÊðî>;|ïKðîºï*ìþä�$îºï)ˆþä�$îsï(%þd�$îï6,þ�$�Õî7tï#ðî9;ï)¬þ�$Uî8eï)ˆþ�Õ�$îHï2%þŽ�$îÖï2Iþ�$äîBôuï2IðîBôï1,ðîBôï0ð î€|ï0gðîÖï0gðî9Étï2ðî9Éï+Wð î+ï5þò�Gî+åï5Wðî.eï4Éþ�$î-×ï5åðî+Wï-×þ«�Gî+åï.ðî.óï-þ�$î.eï.eðî=uï€ð î-IïKJþ�G9î2ïO-ðî+Wïrþ �Gî,sïºðî7I|ïæðî9‚ïAþ€�$î?æï!3þ9�$î?æï yþ]�$î¹uï,sðî2tï!Vð î2ïóð î2ïð î2ï,ð îóï)¬ð îóï/Éð îóï.ðîóï(Hð îÖï8Ðþ',�$îÖï7lþ's�$îÖï8Ðþ's�$î?žï'Oþ¤�$îBï'sþ�$î?æï<mþ9�$îHïUþ�$äîHïJ»þ�$ rîïNþ�$îïO-ðîdïVfþ�$î9;ï2lþ�$î9;ï+3þÇ�$îÖï;—þ€�$îVï;—þ�$yîÖï:4þä�$îºï:4þ�$yîºï=‰þ)�$îVï>íþ*�$îBï þ�$ºî;»ïBþ�$î;»ïB‰þd�$î |ï%Øðî"ºï$uðîºï( ðîótï+ð îº|ï'<ðîótï,sðîº|ï*Jðî9‚tï:žðî9ïK&þ€�$î|ïGvðîïJ»þ�$îtïKØðî1ºï/‚þ�Gî1ºï(Hþ�Gî#Öï)Ðþ�Ž�$î$eï&žþ�$Uî#Öï&zþ�²�$î#Öï&zþ�$yî$eï(úþV�$î&ï)ðî$eï'OþV�$î&ï'sðî(×ïBfðî(×ï@»ðî+å|ï%Jðî+åï#ŸðîBôuï+ðîBôïHðî€ïVÑþò�$î9ïVþG�Gî(×ïBBþ9�$î(×ï@—þH�$î8ôï:{þ�$î8¬ïëþV�$î9Étïðî8¬ïOþV�$î9Éïsðî8eïrþ�G Gî#Hï4þ‡�$î#H|ï0gðîsï(þ�Gîºï,Pþ�$îsï/¥þV�$îºï-úþò�$î Èï/Éþ�$€î$¬ï.þ�$î€ï#%þÇ�$î+ïuðîHï$ÏþG�$îï!žþ�$UîHï!zþk�$îHï!zþ�$yîdtï#ðîï!åðîòï"ºþ�$îdï!VðîÈï"ºþ�$îï#Öðîäïþ�$�îäïþd�$îäïÏþd�$îäïˆþd�$îäïúþd�$îäï²þd�$îäïkþd�$îäï$þd�$îäïÝþd�$îäï–þd�$îäïOþd�$îäïþd�$îäïÁþd�$îäïyþd�$îäï2þd�$îäïAþd�$îäï]þd�$îäï¤þd�$îÈuïdðîÈïHðîHïÁþ�$yîHïÁþk�$îïäþ�$UîHï þG�$î«tïÖðîÖï,ðîïAþr�$îï#%þr�$îïeþ�$dîï ¥þ�Õ�$îï!Áþ�Õ�$îï!åþ�$dîÖï :þ�$9îÈïÖþ�$îïóðîÈï,þ�$îïðîÖ|ïæðîÖïæðîeïæðîeïæðîsï¤þò�$î",ïzþ€�$î :uï!Vðîïkþ G�$îºïºþ�$dîstïðîï¤þ�$îïVþ�$rîï2þ@�$îï2þ�$•î€ïkþ$�$î9ïHþ�GBî¹ïðî€|ï»ðîï»ðî ïlþ«�$î+ï¼ðî�ïþ�$îHï–þÖ�$îÖï!3þÈ�$î+žïHþ�$îäï$þÝ�$îäïäþ�$dî«ïÈþ�$Çî«ï¤þ€�$îrï ùþ ¹�$îïÏþ Ö�$îäuïòðî#Ö|ïðî uïðî äï¤þ +�$îï¤þ�$@î+ïÈð îrtïðî"sïðî=|ï>Ùðî=ï>Ùðî?WïAmþ€�$î?WïDÂþ€�$î"sïI{þ$e�$î"srï�ð î=uïdðÿ�������~ä��9dAbXž������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Figure 14Display ControllerD1Display.sil18Fout>>T0T1ROdd1616REvenFIFO256 x 32RAM>>T1pAReaderPtrBReaderPtrAWriterPtrBWriterPtrFIFO is written during FH andis read during the SH; readsalternate between channelA and channel B (irrespectiveof whether or not the channelwants the FIFO).>>>>7ACanReadFIFOAWritingFIFO>>1HWindowChannelOnChannelOffCursor video1st FIFORead2nd FIFORead<><><><><>32LeftMargin15><><Width<>16CursorX><18128 words ofFIFO used by A,128 by B.NLCB16 x 12RAM12CLCB<>RAMHRamHRamAddrHRamOut1024 x 33>>32FIB>>32SIB32>SR8A or B channel timing (in pixel clocks, not to scale)3>10Permuter>32>8SR>32SIB32>FIBT0DblCursorDataAItem.0AItem.1AItem.3BItem.0AOnBOndcAItem.2PolarityMiniMixer256 x 4 RAM48>4AItem[4:7]8dcCursorDataAItem.0BItem.0PolarityefcddcVBlankHBlankdc1AltoVideoPClkPClkVariousregisters>of NLCB and CLCB registersNLCBAddr412ItemClk'sPClk/2hg18IOBp16RIOBRIOBT3See Figure 15 for layoutHorizontal Blanking<>Visibleleft margin<Horizontal Sync<>8/30/81RIOB>>RIOBMiniMix7-WireInterfacepTo TerminalHSyncHBlankVSyncVBlank6VCWSyncGenerator3pVisible data>Visibleright margin><Visible ScanAItemSizeBItemSizeDispYDispM(not including independent terminal interface)ppDACpVideoGrey-scaleAItemBItemppB BufferA BufferC Buffer24BitModeAOnBOnCMap AddrDoradoCMap Addr88CMap256 x 8RIOB88RIOB256 x 8DoradoRIOBDoradoBMap AddrBMap AddrBMapGreenOutputReg1024 x 24DACpGreenVideoVideopDACRegOutputBlueBlue888VideopDACRegOutputRedRed88Mixer(AMap)Mixer AddrMixer Addr10A8B2/A6B4BBypass88410AItemBItemPixelClockSystempppPixelClkAItemClkBItemClkpVCOCrystalBackpaneljumperPixelClkRegRIOBVCOPixelClkVCOp>>>>>>>Video��î$rïð î!åïdðî<uïð î ï6—þò�$î�ï3þ�$î ï2ûþ�$î ï2ûþ�$Àî ï-³þ�$yî ï-³þ�$î�ï-×þ�$Uî ï1 þò�$î�ï4¥þ�$î Öï4;þ�$î Gtï5Wðîï4Éðîò|ï0õðîäï/‚þ�$Gîäï/^þ+�$îòï+®ðî uï6»ðî ï1,ðî�ï4¥þ +�$î«tï4Éðîdï4;þ�$îÖï5Wðî«ï.óþ�$îï0ðî«ï/‚ðî+ï6 þÖ�$îï-×þ�$Vî+ï-³þù�$î+ï-³þ�$yî�ï/^þ +�$îpï2×ðîºtï0åðîï/Éðî|ï+®ðîï0õðî¬uï6,ðî9|ï0õðî Vï(%þ ��$î ätï(Hð î Vï&Áþ ��$î äï&åð î Vï%^þ ��$î äï%ð î Vï#úþ ��$î äï$ð îVï#Hþ�$ÖîVï&3þ¹�$îÖï%Èþ�$îï-ðîï,sðîï+Wðîï*:ðîï)ðîï(ðî:|ï$uðî:ï#ðî:ï!®ðî:ï Jðîtï&åðî ï, þ ¹�$î+ï,,ðî ï*¥þ ¹�$î+ï*ÈðîVï)óþ�$îVï+zþÇ�$îï+zþ�$]î:|ï(Xðî:ï&õðîºï+þ�$îstï,,ðîVï` ðî(ï]ðî)óï[õðî>Éï\Êðî?æï[®ðî�ï_µþF�$î2×ïZJþ�$UîHïZ‘þ�$Vî3eï\ƒðî:åïZ‘þ�$Uî,ïaƒðîºï`gðîÖï^.þ�$9î$eï^.þ�$9î"sïaƒðî#ï`gðî*ï^.þ�$«î�|ïb°ðî :ïb°ðî*ï_èðîJtïb°ðî�ï[/ðî+ï[/ðîHï[/ðîºï[/ðîHïW“ðî1ºïW“ðî rtï^uðî�ï^ßþ+�$î Öï^ßþr�$îºï^uð îHï^ßþ+�$îï^ßþG�$î!ï^uðîÖï^ßþò�$î"sï^ßþò�$î#H|ï[/ðîÖï[/ðî$eï^ßþ9�$î(Hï^ßþ9�$î)eï[/ðî$eï[/ðî3¬tï^uðî*ï^ßþä�$î*|ï[/ðî?žï[/ðî6,tïZØðîeïZØðîHï[CþÖ�$î#Öï[Cþ��$î2×ï[Cþ�$î7ï[CþU�$î9É|ïW“ðî2×ïW“ðî&åtï^uðîï,sðîï+Wðîï*:ð îï-³þ�Ž�$î«ï)óþ�$äîï)Ðþ�²�$î ïFûþÖ�$îdïBfþ�$¹î ïBBþù�$î ïBBþ�$Ýî«pïEtðî«tïCÉðî€ïBðîdïDÂþ�$îïDXþ�$îòïEtðîdpïEtðî ï`Šþ9�$î�|ï\Úðî+ï\Úðî�ï`Šþ�$î€tï:ðî ï9¥þ�$Ýî ï9¥þù�$îdï9Éþ�$¹î«pï<×ðî ï@ßþÖ�$îdï?þ�$òî ï>íþù�$î ï>íþ�$î Ötï?Wðîdï<%þU�$îºï=Bþ«�$îdï;tþ�$òîºï;PþÎ�$îºï;Pþ�$îHï;»ðîï;-ðîï;»þ�$î9ï<×ðîdï;Þþ+�$î ï>^þÖ�$î r|ï8.ðîï8uðîeï1sþ�$îÖtï2ðî+åï3‰þ�$î.óï0žþ�$î+åï0zþ2�$î+åï0zþ�$2î,ºï1sðî |ï..ðî1sï..ðî.óï1Þþ�$î2ï0zþ�$2î2ï0zþ2�$î5žï0žþ�$î2ï3‰þ�$î/Étï2ðî0Wï1sþ�$î3eï1sðî7ï1sþ�$î6tï2ðî9;ï3‰þ�$î<Iï0žþ�$î9;ï0zþ2�$î9;ï0zþ�$2î8|ï..ðî5žï1Þþ�$î:tï1sðî=ï1sþ�$î=fï2ðî Vï>‚þ�$�ŽîpïXXð5îï;tþ�$îÇtï<ðîï?žþ�$î r|ï<Yðîdï@ þ+�$î€tï@»ðîï1Þþ�$î!žï3‰þÖ�$î'sï0žþ�$î!žï0zþù�$î!žï0zþ�$2î",ï1sðî'sï1Þþr�$î)ï1sþ�$î*È|ï..ðî(tï2ðî*È|ï2ðî=ftï6tðî=ï5Wþ�$î:ï5Wðî5žï5Âþ�$î8|ï2ðî9;ï4^þ�$2î9;ï4^þ2�$î<Iï4‚þ�$î9;ï7lþ�$î6ttï6tðî7ï5Wþ�$î3eï5Wðî0Wï5Wþ�$î/Éï6tðî2ï7lþ�$î5žï4‚þ�$î2ï4^þ2�$î2ï4^þ�$2î.óï5Âþ�$î1s|ï2ðî,ºtï5Wðî+åï4^þ�$2î+åï4^þ2�$î.óï4‚þ�$î+åï7lþ�$î*:ï1Þþ�$î*:ï5Âþ«�$î,ºuï7×ðî3eï7×ðî:ïR¦þ�$îóïN{þV�$î:ïMþ�$î:ïK´þ�$î:ïJQþ�$îtïT-ð îïRÊðîïQfðîÈïNŸðîÈïM;ðîÈïKØðîÈïJtðîs|ïMKðîsïMKðî:ïOßþ�$îrtïPØðîrïO-ðî:ïQCþ�$î:ïT þ�$î#HïOQþd�$î*ïIÂþ€�$î2ïFIþ�$î*ïF&þ¤�$î*ïF&þ�$Àî+pïH;ð î+tïFØðî#ïGÑþò�$î'sïGfþ�$î',ïH‚ðî$eïO-þ�$î$ïPðî)e|ïD ðî4‚ïGþ�$dî4;tïH‚ðî5{ïFð î2ïGÑþ ¹�$î;»ïHíþò�$î=ïE-þ�$äî;»ïE þ�$î;»ïE þ�$î?WïFþ�$î?ïGðî-|ïPðî-ïPðî%ÈïT þ€�$î%ÈïR¦þ�$î%ÈïQCþ9�$î&tïT-ð î&ïRÊðî&ïQfðî/ÉïR¦þ�$î0ïQðî5W|ïNöðî5WïO„ðî5åïO=ðî5åïO=ðî8¬ïQÑþ9�$î:åïSÃþÇ�$î=ïPJþ�$î:åïP&þë�$î:åïP&þ�$Àî<×ïJËðî<×ïJËðî5åïN4þ€�$î5åïLŠþ€�$î6ttïNXðî6tïLðî?žïM_þ�Õ�$î@tïM_þ�$ëî@tïP&þ�$î=ïQÑþä�$îA|ïNhðîAïNhðîDŸïP‘þ�$îDXtïQðîE-ïQð î/ÉïPûþÖ�$î;-uïSæðî;»ïIŸðîïFûþd�$îdïBfþ�$¹îïBBþ‡�$îïBBþ�$ÝîdtïDðîÖïBôð îä|ïAðîòuï?Wðî€ïH_þ�$î ïK´þÖ�$îdïJ-þ�$«î ïJ þù�$î ïJ þ�$Îî ÖtïJtðîÇïGôþ�$î€ïIðîdïDÂþ+�$îïDXþ�$î€ïEtðî8¬uï7×ð îï&Wþ�$€î4ÉïF&þò�$îïKØðî |ïE=ðî ïE=ðî€ïH_þ�Õ�$î VïGþ�$î�tïT-ðîŽïSþ�$îòïSŸðîò|ïOËðî¹ïS|þr�$î +ïTßþ9�$îdïR<þ�$Çî +ïRþ]�$î +ïRþ�$ëî9tïT-ðîÈïSþ�$îdïS|þò�$îrïSŸðîÇïH‚ðî ¹uïUðîòï@tðî tïeõðî�ïf`þV�$îäïf`þ ¹�$î!V|ï_èðî)eï_èðî$etïdðî#Öïbçðî!Vïbçþ�$¹î!V|ïb°ðîK‘ï^.þ�$äî!Vïf`þd�$î5žïf`þò�$î«ïcuþ�$òî¬ïcuþ�$òîÖtïdðî«ïdnþÇ�$îïdnþ�$î«|ï`¾ðîï`¾ðî=uï«ðîrïP´þŽ�$îrïO þG�$î%ÈtïM;ðî%ïMþ+�$î)¬ïLþ�$Uî(|ïK¡ðî(ïIhðî$tïGôðî)¬ïN4þ+�$î-×ïIæþ�$rî5WïGôðî9Épï@tðî9Éï>Éð î8¬ïC¦þÇ�$î@tï<þ�$9î8¬ï<mþë�$î8¬ï<mþ�$]îCÉ|ï< ðî@tï@Pþy�$îA×ï?æþ�$îGftï?æðî1sïAIðî1sï?æðî1sï>‚ðî1sï=ðî-ïA&þ«�$î-ï?Âþ«�$î-ï>^þ«�$î-ï<ûþ«�$îAïAðî¬pï@-ðî#Hï?æþ�$òîeï?Âþ�$î%Èï?Wðî%Èï=ð î$óïA´þÇ�$î$óï<mþë�$î$óï<mþ�$kî,ºï<þ�$Gî#Hï@—þ«�$îdï<%þ¹�$îï<%þ�$‡îï=‰þÖ�$îäï;»þ�$îtï<×ðîJt|ïMKðîC‚ïPûþò�$îdï<þ�$€î2×tïc.ðî@»ï^.þ�$«î*ïc™þÇ�$î8eïc™þV�$î?ž|ï_èðîDtïc¼ðîBôïb ðî@»ïc™þ9�$îH;ïc™þ�$îJt|ï_èðî@»ï_èðî!Vïc™þò�$î(ïc™þ«�$î.tïeõðî�ï^.þ�$äî6»ï^ßþ ��$îeï6»ð îeï5Wð îï6—þŽ�$îï53þŽ�$î$¬ï5Âþ�Õ�$î%ï3¬þ�$9î$¬ï4Éþ�$€îï"sþL�Gîòrï#ðîòï Èðî€tï Èð.îCÉ|ï2ðîCÉï..ðî<Iï5Âþ€�$î<Iï1Þþ€�$îAIpïFIðîAïGÑþä�$îDæïFþ�$òîAïEßþ�$îAïEßþ�$î=ïFûþU�$îJt|ïCKðîDæïFûþŽ�$îE»tïGðîE»ïH;ð î?žï5åðî?žï2ðî9|ï¼ðî9ï ‚ðîpïÈðîï:ðî Öïºðî ïˆþ«�$î9ïsþ�$9î ïOþÎ�$î ïOþ�$]î ïˆþ�$î ïÁþò�$î ïOþ«�$î9ï9þ�$9î ïþÎ�$î ïþ�$]î�ïlþŽ�$î�ï 2þŽ�$î€ïÈþ�$Çî€ï¤þ�$îuïÈð î€ïðî€ï ðî$epïð î$eï¬ðî$eïð î#Öïˆþ�$î,sïsþ�$9î#ÖïOþÀ�$î#ÖïOþ�$]î#Öï3þ�$î,sïºþ�$î#Öï–þÀ�$î#Öï–þ�$Àî9ïlþ�$îÖïþ�$îŽtïðîŽï äðîÖïÈþ�$î ï«þ�$9îï«þ�$9î1ºpïäðî1ºï:ðî0WïúþÇ�$î8ïdþ�$¹î0WïAþë�$î0WïAþ�$Ýî,sïlþ�Õ�$î-Iï¬þ�$äî,sïˆþ�ù�$î-Iïzþ�$îóïˆþä�$î :tï¬ðî.¬ï,ðî.óïþ�$î.óï rþ�$î.¬ï ðî :ïðîóïëþä�$î-Iï Ýþ�$î,sïëþ�ù�$î-Iïþ�$äî,sïÏþ�Õ�$î0Wï¤þ�$Ýî0Wï¤þë�$î8ïÇþ�$¹î0Wï]þÇ�$î1ºpïðî#Öïùþ�$Àî#ÖïùþÀ�$î,sïþ�$î#Öï –þ�$î#Öï ²þ�$]î#Öï ²þÀ�$î,sï Öþ�$9î#Öïëþ�$î$eïðî.óïäþ�$î :tïðîóï]þä�$î-IïOþ�$î,sï]þ�ù�$î-Iïþ�$äî,sïAþ�Õ�$î0Wïùþ�$î0Wïùþë�$î0WïëþÇ�$î#Öïkþ�$Àî#ÖïkþÀ�$î,sïþ�$î#Öïþ�$î#Öï$þ�$]î#Öï$þÀ�$î,sïHþ�$9î#Öï]þ�$î$epïðî$eïdð î$eïdð î1ºï Gðî<×ïsðî<×ïÈðî<×ïðî0žï9ð î<ïúþ�$îBïHþ�$Öî<ï$þ@�$î<ï$þ�$ùî8ïzþä�$î8ï]þ€�$î:žï]þ�$@îDï]þ�$îDï]þ�$îGôïþ�$òîDïOþä�$îDXïÈðîJ-|ïƒðîH‚tïHðîH‚ï,ðîGôï3þ9�$îGôï –þ9�$îH‚ï ðîJ-|ïæðîDXpï +ðîDï ²þä�$îGôïäþ�$òîDïÀþ�$îDïÀþ�$î<ï‡þ�$ùî<ï‡þ@�$îBï«þ�$Öî<ï]þ�$î<×ï€ðî<×ï +ðî8ï Ýþä�$î<×ï ÖðîH‚tï«ðî8ïˆþ€�$î:žï �þ�$«î9‚ïþ�$î9;ï,ðî9;ïðî9‚ïòþ�$î9‚ï rþ�$î9;ï ðîGôïþ9�$îH‚ïðîJ-|ïXðîDXpïðîDï$þä�$îGôïVþ�$òîDï2þ�$îDï2þ�$î<ïùþ�$ùî<ïùþ@�$îBïþ�$Öî<ïÏþ�$î<×ïòðî<×ïðî8ïOþä�$î<×ïHðîH‚tïðî9‚ïäþ�$î9;ïðî8ïùþ�$î9;ï9ðî9‚ïþ�$î2pïÖðî1sï+ðî$eïÖð î$eïÖð î.etïðîï+þ�$rîuïð îï¤þ ��$îïAþV�$î9ï 2þä�$îï Öþ�$rîïÏþÝ�$îï–þ9�$îVï–þ�$kîVïÝþ+�$îrï ¹ðîºtïVðîï:þ�$îïrþ�$îºï€ðîïdþ�$îºïðî¬ïòðî :ïÖþ�$î«ïðî«ï Vðî;Þpï*¥ðî;Þï(úðî;Þï'Oðî@ßï'þ�$Gî;Pï&åþ²�$î;Pï&åþ�$kîG‰|ï'§ðîG‰ï%µðîG‰ï#Ãðî@ßï+Wþ«�$î@ßï)eþ«�$î@ßï'sþ«�$îBftï+zðîB‰ï)ˆðîB‰ï'—ðî7%|ï%µðî9íï)eþd�$î5{ï'—þ�$Uî1Ptï*^ðî1Pï(%ðî1 ï(þr�$î1Puï%ìð î1Pï$ÏðîäpïÖðîäï+ðîï]þò�$î�ïþ�$äîïyþ�$îïyþ�$îäï²þ+�$îätïÖðî�ïkþ«�$î9pï�ðî«ïÎþr�$îï+þ�$Çî«ïþ•�$î«ïþ�$ëîòtïŽðî|ï»ðî5{ï)eþ�²�$î5åï%µðî#HïIæþ�$î"ºï¼ðî"ºïØðî"ºï‘ðî"ºï ðî"ºïðî"ºï;ðîïWƒþL�Gî5žïPûþ�G�$îeïA´þä�$îeï?Âþä�$îBï3þò�$îBïþò�$îBï –þò�$î6,ï)eþ�Ž�$î6»ï)eþ�G�$î1 ï*:þr�$î ïH_þ�$�$î;Pï,,þŽ�$î3ïB‰þ²�$î3ïB‰þ�$ yî3ïOßþ‡�$î9¥ïOßþ�$òî3‰tïBôðîïkþò�$ÿ�������Bä��LŠfƒH������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Figure 15Display Controller IO RegistersD1DispReg.sil151413121110987654321001234567891011121314150123456789101112131415151413121110987654321001234567891011121314151514131211109876543210012345678910111213141515141312111098765432100123456789101112131415--MufAddr[5:11]<>XSyncEnableFakePixelClockUseFake------DWTShutupDHTShutupNLCBAddr[0:3]<>NLCB data<>KeepHRam'WriteHRam'LoadHRamAddr------------------------><HSyncHBlankHalfLine--------------------------SetBNextWCBSetANextMustBe----------------------IOFetchSignalMustBe00BeMustMustBe0Set/ClrFlagAddress[0:7]<>Data[0:7]><--------<>KeepMixer'WriteMixer'LoadMixerAddr--<>--><Addr[0:9]Hi/LoData----------------------------PixelClockResetCurWCB><--AddrLoadWriteKeep1514131211109876543210--------Address[0:7] OR Data[0:7]<>377 (Y)367 (M)DDC**Addr[1:10]375 (Y)HRam374 (Y)373 (Y)DWTFlag*8/29/81372 (Y)MiniMixer360 (M)PixelClk361 (M)Mixer362 (M)CMap365 (M)BMapRed[4:7]Blue[0:7]<>Green[0:7]Red[0:3]<<>>01370 (Y)----1514131211109876543210MapInLo1>><<Red[0:3]Green[0:7]0123456789101112131415><Blue[0:7]Red[4:7]><ColorMonitor Type<>TIOAOutputTIOAInput376 (Y)366 (M)364 (M)363 (M)361 (M)360 (M)TIOAInputNoPEData*Data** Parallel registers DispY/DispM0VCW*VBlankVSyncOddFld111BMargin10--AMargin*Left margin count (negative)<>2AWidth*12BWidthWidth count (negative)<>3AFifoAddr*13BFifoAddrFifo Address (even)<>414BScanPolarity*ResolutionSize8Size4Size2Size15MixerMode24BitBBypassA8B215Cursor position (negative)<>CursorX*6--16CursorLo*7--17CursorHi*Cursor data [8:15]Cursor data [0:7]<<>>TerminalTerminalMufflerMultiplierDivisor<<** Only starred bits or fields are usedon DispM; all others are ignoredStatics**NLCB**Status**MapInHi**AScan**DHTFlag**WCB*0*Map'Map'Map���î#rïäð îVï9ðîC‚uïäð î=ïLfþ�$îïLfþ�$îJ-tïKJðîFIïKJðîBfïKJðî>‚ïKJðî:žïKJðî6»ïKJðî3ïKJðî/:ïKJðî+WïKJðî'sïKJðî#ïKJðî¬ïKJðîÈïKJðîäïKJðîïKJðîïKJðîHÉïLfþ�$îDæïLfþ�$îAïLfþ�$î9;ïLfþ�$î1sïLfþ�$î-ïLfþ�$î)¬ïLfþ�$î!åïLfþ�$îïLfþ�$îVïLfþ�$î5WïLfþ�$î%ÈïLfþ�$î:ïLfþ�$îrïLÑþ�$]îrïLÑþ>^�$îLïLôþ�$9îrï^ þ>;�$îrïeŠþ>;�$îLï`õþ�$rîrï`Ñþ>^�$îrïaþ�$•î:ï` þ�$dî%Èï` þ�$dî5Wï` þ�$dîVï` þ�$dîï` þ�$dî!åï` þ�$dî)¬ï` þ�$dî-ï` þ�$dî9;ï` þ�$dîAï` þ�$dîï_Jðîï_Jðîäï_JðîÈï_Jðî¬ï_Jðî#ï_Jðî'sï_Jðî*Èï_Jðî/:ï_Jðî3ï_Jðî6»ï_Jðî:žï_Jðî>‚ï_JðîBfï_JðîFIï_JðîJ-ï_Jðîï` þ�$dî=ï` þ�$dîrïJ˜þ>;�$îLïGþ�$îrïFûþ>^�$îrïFûþ�$Àî:ïFþ�$î%ÈïFþ�$î5WïFþ�$îVïFþ�$îïFþ�$î!åïFþ�$î)¬ïFþ�$î-ïFþ�$î1sïFþ�$î9;ïFþ�$îAïFþ�$îDæïFþ�$îHÉïFþ�$îïE»ðîïE»ðîäïE»ðîÈïE»ðî¬ïE»ðî#ïE»ðî'sïE»ðî+WïE»ðî/:ïE»ðî3ïE»ðî6»ïE»ðî:žïE»ðî>‚ïE»ðîBfïE»ðîFIïE»ðîJ-ïE»ðî=ïFþ�$î=ï@»þ�$îï@»þ�$îJ-ï?æðîFIï?æðîBfï?æðî>‚ï?æðî:žï?æðî6»ï?æðî3ï?æðî/:ï?æðî+Wï?æðî'sï?æðî#ï?æðî¬ï?æðîÈï?æðîäï?æðîï?æðîï?æðîHÉï@»þ�$îDæï@»þ�$îAï@»þ�$î9;ï@»þ�$î1sï@»þ�$î-ï@»þ�$î)¬ï@»þ�$î!åï@»þ�$îï@»þ�$îVï@»þ�$î5Wï@»þ�$î%Èï@»þ�$î:ï@»þ�$îrïA&þ�$îrïA&þ>^�$îLïAIþ�$äîrïE þ>;�$îrï>íþ>;�$îLï;-þ�$äîrï; þ>^�$îrï; þ�$î:ï:žþ�$î%Èï:žþ�$î5Wï:žþ�$îVï:žþ�$îï:žþ�$î!åï:žþ�$î)¬ï:žþ�$î-ï:žþ�$î1sï:žþ�$î9;ï:žþ�$îAï:žþ�$îDæï:žþ�$îHÉï:žþ�$îï9Éðîï9Éðîäï9ÉðîÈï9Éðî¬ï9Éðî#ï9Éðî'sï9Éðî+Wï9Éðî/:ï9Éðî3ï9Éðî6»ï9Éðî:žï9Éðî>‚ï9ÉðîBfï9ÉðîFIï9ÉðîJ-ï9Éðîï:žþ�$î=ï:žþ�$î=ï4‚þ�$îï4‚þ�$îJ-ï3¬ðîFIï3¬ðîBfï3¬ðî>‚ï3¬ðî:žï3¬ðî6»ï3¬ðî3ï3¬ðî/:ï3¬ðî+Wï3¬ðî'sï3¬ðî#ï3¬ðî¬ï3¬ðîÈï3¬ðîäï3¬ðîï3¬ðîï3¬ðîHÉï4‚þ�$îDæï4‚þ�$îAï4‚þ�$î9;ï4‚þ�$î1sï4‚þ�$î-ï4‚þ�$î)¬ï4‚þ�$î!åï4‚þ�$îï4‚þ�$îVï4‚þ�$î5Wï4‚þ�$î%Èï4‚þ�$î:ï4‚þ�$îrï4ìþ�$îrï4ìþ>^�$îLï5þ�$äîrï8Ðþ>;�$îrïÏþ>;�$îLïþ�$Uîrïzþ>^�$îrïzþ�$yî:ïþ�$î%Èïþ�$î5Wïþ�$îVïþ�$îïþ�$î!åïþ�$î)¬ïþ�$î-ïþ�$î1sïþ�$î9;ïþ�$îAïþ�$îDæïþ�$îHÉïþ�$îï:ðîï:ðîäï:ðîÈï:ðî¬ï:ðî#ï:ðî'sï:ðî+Wï:ðî/:ï:ðî3ï:ðî6»ï:ðî:žï:ðî>‚ï:ðîBfï:ðîFIï:ðîJ-ï:ðîïþ�$î=ïþ�$î=ï þ�$îï þ�$îJ-ïeðîFIïeðîBfïeðî>‚ïeðî:žïeðî6»ïeðî3ïeðî/:ïeðî+Wïeðî'sïeðî#ïeðî¬ïeðîÈïeðîäïeðîïeðîïeðîHÉï þ�$îDæï þ�$îAï þ�$î9;ï þ�$î1sï þ�$î-ï þ�$î)¬ï þ�$î!åï þ�$îï þ�$îVï þ�$î5Wï þ�$î%Èï þ�$î:ï þ�$îrï ìþ�$yîrï ìþ>^�$îLï!þ�$Uîrï$Aþ>;�$îrï,—þ>;�$îLï&žþ�$îrï&zþ>^�$îrï&zþ�$@î:ï&þ�$î%Èï&þ�$î5Wï&þ�$îVï&þ�$îï&þ�$î!åï&þ�$î1sï&þ�$î9;ï&þ�$îAï&þ�$îDæï&þ�$îHÉï&þ�$îï%:ðîï%:ðîäï%:ðîÈï%:ðî¬ï%:ðî#ï%:ðî'sï%:ðî+Wï%:ðî/:ï%:ðî3ï%:ðî6»ï%:ðî:žï%:ðî>‚ï%:ðîBfï%:ðîFIï%:ðîJ-ï%:ðî=ï&þ�$îïb ðîVïb ð îVïc þ r�$î$¬ïc þä�$îV|ï_Zðî,sï_Zðî.tïc.ðî.ïbðî2ïc¼ðî2ïb ðî2ïaƒðî5åïd‘ðî5åïcuðî:WïbXðî>;ïbXðîBïbXðîFïc¼ðîEtïb ðîIŸïd‘ðîIïcuðîï\ƒð îrï\îþ+�$î¬ï\îþU�$îr|ïY>ðîäïY>ðî2tï\ƒð îï\îþH�$î8ï\îþ�$î|ïY>ðîK‘ïY>ðîïGþ�$îïHíþ.¬�$î�tïIXðî�ïH;ðî+ïIXðî+ïH;ðîïIŸðîïH‚ðîïGfðî:ïH‚ðîeïIXðîeïGfðî#HïGfðî',ïGfðî*ÈïGfðî.¬ïGfðî2×ïGfðî6»ïGfðî:žïGfðî>‚ïGfðî#HïIXðî%ÈïIÂþ+�$î9ÉïIÂþä�$îK‘|ïFðî%ÈïFðîAItïGfðîE-ïGfðîIïGfðîÖïBðîºïBðîïBðîïBðîeïBðî#HïBðî',ïBðî*ÈïBðî.óïBðî2×ïBðî6»ïBðî:žïBðî>‚ïBðîBfïCÉðîA×ïBðîA×ïAðîFïCÉðîE»ïBðîIŸïCÉðîJ-ïBðîÖï<ðîºï<ðîï<ðîï<ðîeï<ðî#Hï<ðî',ï<ðî+ï<ðî.óï<ðî2ï<ðî6»ï<ðî9‚ï=ðî9‚ï<ðî=ôï=ðî>‚ï<ðî>Éï;tðîBfï;tðîBï<ðîAï=ðîEtï=ðîFï<ðîFIï;tðîIï=ðîIŸï;tðîdï6tðîrï6Þþ«�$î!åï6Þþ«�$îr|ï3.ðî,sï3.ðî:Wtï6tð î-ï6Þþ€�$î?æï6ÞþÈ�$îK‘|ï3.ðî-ï3.ðîÖtï",ðîºï",ðîï",ðîï",ðî|ïæðî<ïæðîï&žþ�$îï*¥þ.¬�$îHtï)óðîHï(×ðî+ï)óðî+ï(×ðîVï*ðîVï)eðîVï(HðîÈï)eðî|ï&ðîK‘ï&ðî¬tï+ðî!åï+zþ�$î9;ï+zþ�$îG|ï'Êðî!åï'Êðî2tï+ð îIï+ðîIXï+ðîºïðîïðîïðîeïðî#Hïðî',ïðî+ïðî.óïðî2×ïðî6»ïðî:žïðî>‚ïðîBfïðîFIïðî5åïbXðî5åïa<ðîDæï` þ�$dîHÉï` þ�$dîIXïbXðî1sï` þ�$dîHÉï<ðî=ï"–þÖ�$îGï"–þŽ�$îK‘|ïæðî=ïæðîtï0Wðîï/:ðîï1sðîäï0åðî�ï0åðî=ï.eþ�$îJ-ï-ðîFIï-ðîBfï-ðî>‚ï-ðî:žï-ðî6»ï-ðî3ï-ðî/:ï-ðî+Wï-ðî'sï-ðî#ï-ðî¬ï-ðîÈï-ðîäï-ðîï-ðîï-ðîHÉï.eþ�$îDæï.eþ�$îAï.eþ�$î9;ï.eþ�$î1sï.eþ�$î-ï.eþ�$î)¬ï.eþ�$î!åï.eþ�$îï.eþ�$îVï.eþ�$î5Wï.eþ�$î%Èï.eþ�$î:ï.eþ�$îrï.Ðþ�$îrï.Ðþ>^�$îLï.óþ�$äîrï2³þ>;�$îï.eþ�$îeï0Wðî#ï0Wðî'sï0Wðî+ï0Wðî7ï0Wðî-×ï0ÂþÇ�$îDæï0ÂþÇ�$î-|ï-ðîK‘ï-ðîpïdðîïbXðîIŸtïa<ðîFpïa<ðî4;tïIXð îpïH;ðî«ïH;ðîïCÉðîï=ðî«ï<ðîDæuï€ðîpï5åðî«ï5åð îï!åðî«ï!åðîï(ðî«ï(ðîï/:ðî«ï/:ðîï0åðî«ï0åðî$tï)eðî7ï)eð îï)ÐþŽ�$î(ï)Ðþr�$î-ï)Ðþ ��$î<ï)Ðþ«�$î-|ï&ðî-ï&ðîï(³þ.¬�$î)¬tï',ð îC;ï',ðîï'—þ�$î/:ï'—þ ä�$î=ï'—þŽ�$îGï'—þ��$î|ï#æðî=ï#æðî<ï#æðîK‘ï#æðî)¬ï&þ�$î-ï&þ�$îMÊtï)eðîMÊï',ðîLï+zþ«�$îMÊï*þ�$îpïðîtï ðîï ðî=ïþ�$îïþ�$îJ-ïÇðîFIïÇðîBfïÇðî>‚ïÇðî:žïÇðî6»ïÇðî3ïÇðî/:ïÇðî+WïÇðî'sïÇðî#ïÇðî¬ïÇðîÈïÇðîäïÇðîïÇðîïÇðîHÉïþ�$îDæïþ�$îAïþ�$î9;ïþ�$î1sïþ�$î-ïþ�$î)¬ïþ�$î!åïþ�$îïþ�$îVïþ�$î5Wïþ�$î%Èïþ�$î:ïþ�$îrï þ�$yîrï þ>^�$îLï +þ�$Uîrï]þ>;�$î«pïðîtï GðîK‘|ïðî<ïðî=ïðîïðîGï ²þ��$î=ï ²þŽ�$î/:ï ²þ ä�$îï ²þ�$îC;tï Gðî)¬ï Gð îrïëþ>;�$îLï¹þ�$Uîrï–þ>^�$îrï–þ�$yî%Èï+þ�$î5Wï+þ�$îï+þ�$î!åï+þ�$î)¬ï+þ�$î-ï+þ�$î1sï+þ�$î9;ï+þ�$îAï+þ�$îDæï+þ�$îHÉï+þ�$îï Vðîï Vðîäï VðîÈï Vðî¬ï Vðî#ï Vðî'sï Vðî+Wï Vðî/:ï Vðî3ï Vðî6»ï Vðî:žï Vðî>‚ï VðîBfï VðîFIï VðîJ-ï Vðîï+þ�$î=ï+þ�$î-|ïðî-ïðî<ïAþ«�$î-ïAþ ��$î(ïAþr�$îïAþŽ�$î7tïÖð î$ïÖðîK‘|ïðîïðîtïòðîVïÖðîrïAþä�$îäïAþ�$îr|ïðîsïðîpïfÊðî«ïfÊðîïÈðî«ïÈðî«ïUðî«ïSXðîïBðîï;tðîïðîï ðîïäðî«ïäð î�tï+ðî�ï ¹ðîïGð î��ïþMÊ�Gî��ïþMÊ�GîïLôþ�$9îrï[Ñþ>;�$î�ïZ‘ðî«ïZ‘ðîAïZ‘ðîEtïZ‘ðîHÉïZ‘ðîrïZ&þ>;�$î�ïXæðî:ïXæðîsïXæðî:ïZ‘ðîsïZ‘ðîrïX|þ>;�$î«ïXæðî-ïXæðîïYQþr�$î:ïYQþ�$î|ïU¡ðîK‘ïU¡ðî�tïW<ðî«ïW<ðî:ïW<ðîsïW<ðî-×ïW<ðîrïVÑþ>;�$îïW¦þH�$î8eïW¦þH�$î|ïSöðîK‘ïSöðî�tïU‘ðî«ïU‘ð î:ïU‘ðîsïU‘ð î7IïU‘ðî-ïUüþV�$î@tïUüþ9�$î-ïUüþ +�$î-|ïRLðîK‘ïRLðîrïU&þ>;�$î�tïSæðî:ïSæðîsïSæðî1ºïSæð î7ïSæð î=ïSæðîAïSæðîE»ïSæðîIXïSæðîrïS|þ>;�$î�ïR<ðî«ïR<ð î=ïR<ðîE-ïR<ðîIŸïR<ðîrïQÑþ>;�$î:ïP‘ðî-ïP‘ðîïPûþH�$î9‚ïPûþ+�$î|ïMKðîK‘ïMKðîrïP&þ>;�$îstïP‘ðî�ïNæðî«ïNæðî:ïNæðîsïNæð îrïN{þ>;�$î�ïM;ðî«ïM;ðî:ïM;ðîsïM;ð î8ôïNæðî8ôïM;ðî|ïK¡ðîïIöðîK‘ïK¡ðîK‘ïIöðî=ïSþ�$îAïSþ�$îDæïSþ�$îHÉïSþ�$î5WïSþ�$î1sïSþ�$î-ïSþ�$î�tïHðî�ï Öðî:ï+þ�$îVï+þ�$îIïHðî+ï",ð îC;ï",ðîï"–þ9�$î/Éï"–þ V�$î-|ïK¡ðî-ïIöðî-ïOQþ Ö�$î-ïM¦þ Ö�$îA×ïOQþ Ö�$îA×ïM¦þ �$îtïð'î9ï€ð î«pïbçð î9ïSæðî«ïðî«ï ð î«tïSæðî«pïBð îE»tïAðîJtïAðî�ï/Éðîäï/Éðîï0Wð�������¡ä����ÎN{f`s����������������������������������������������������������������������������������������������������������������������15141312111098765432100123456789101112131415D1Ethernet.silFigure 16Ethernet ControllerOutput_BTIOA = 016EthCEthCPd_InputTxCmdEnbl'TxOnTxEOPTxCntDwnRxCmdEnbl'RxOnRxBOP'--TestCmdEnbl'LoopBackNoWakeupsSingleStepTestClockTestColl'TestDataReportCollsHost Address<>RxOnTxOnLoopBackTxCollNoWakeupsTxDataLateSingleStepTxFifoPETxCmdEnbl' enables setting of TxOn and TxEOPRxCmdEnbl' enables setting of RxOn and RxBOP'TestCmdEnbl' enables setting of LoopBack, SingleStep, NoWakeups, TestClock, TestColl', TestData,and ReportCollsHost Address is set by backpanel jumpersPDInputPDNewPDOldEClkEClkEClkFSMPDCarrierPDEvent[0:1]0 No event1 Collision2 Data 03 Data 1PhaseDecoderReceiverFSMRxCollisionRxEOPRxSync'RxIncTransRxCRCResetRxCRCClkRxDataRxCtrl[0:1]RxSRFull'EClkSR1EClkRxDataRxEOPReceiverFIFOefdccdfe211616-wordx 19-bitRAMT1ParityEthData.18IOAtten18EthData[0:17]T1T1IOB18RAM16-wordFIFORxFifoRdPtrRxFifoWrtPtrTxFifoRdPtrTxFifoWrtPtrx 18-bit18TransmitterT118SR1TxDataTxCRCEnblRxDataRxCRCClkRxCRCResetRxCRCErrorCRCTxCRCClkCheckTxOffT1TxFifoPECRCGenFSMTransmitterTxCRCEnblTxCRCClkTxGoneTxGoTxDataTxSRCtrl[0:1]TxEndTxAbortTxStartTxSREmptyGotTxBitwire-orPhaseEncoderTxOffXcCollisionRxCollisionTxGoPEOutputTxCollisionGotTxBitTxCollisionTxOffTxFifoPETxDataLatedcTxAbortabTxFifoEmptyTxEOPTxEnddcTxFifoFullTxEOPbaPDCarrierTxStartReceiverTransmitterRxCollisionRxDataLateRxCRCErrorRxIncTransPd_Input1514131211109876543210EthDTIOA = 015RxCollisionRxDataLateRxCRCErrorRxIncTrans------------------------8/30/81(Receiver status word following end-of-packet)���î=ôï$eþ�$îÖï$eþ�$îKtï#ðîGï#ðîC;ï#ðî?Wï#ðî;tï#ðî7ï#ðî3óï#ðî0ï#ðî,,ï#ðî(Hï#ðî$eï#ðî ï#ðîï#ðîºï#ðîÖï#ðîòï#ðîIŸï$eþ�$îE»ï$eþ�$îA×ï$eþ�$î:ï$eþ�$î2Iï$eþ�$î.eï$eþ�$î*ï$eþ�$î"ºï$eþ�$îóï$eþ�$î+ï$eþ�$î6,ï$eþ�$î&žï$eþ�$îï$eþ�$îHï$Ïþ�$îHï$Ïþ>^�$îM‚ï$óþ�$äîHï(³þ>;�$î¹ïOþ>;�$îLôïþ�$äî¹ïkþ>^�$î¹ïkþ�$îïþ�$î&ïþ�$î5žïþ�$îïþ�$îdïþ�$î",ïþ�$î)óïþ�$î-×ïþ�$î1ºïþ�$î9‚ïþ�$îAIïþ�$îE-ïþ�$îdï+ðîHï+ðî+ï+ðîï+ðîóï+ðî#Öï+ðî'ºï+ðî+žï+ðî/‚ï+ðî3eï+ðî7ï+ðî:åï+ðî>Éï+ðîBï+ðîFï+ðîJtï+ðîHïþ�$î=fïþ�$îBôuïðî%:rïŽð î!åïäðîÇpï$óðî9ï(Hð î+ï&žðîïðî9ïÖðîòtï'sðîdï&Wðîdï%:ðîºï&Wðîï&WðîVï'sðîï&Wðîï%:ðîóï'sðî¬ï&Wðî¬ï%:ðî#ï&Wðî&åï&Wðî+åï&Wðî/:ï'sðî/:ï&Wðî/:ï%:ðî3ï&åðî3ï%Èðî;tï'sðî:åï&Wðî;-ï%:ðî6tï&åðî6»ï%Èðî>‚ï&åðî>‚ï%ÈðîBfï&åðîBfï%ÈðîFï&åðîFï%ÈðîIŸï&åðîJtï%Èðîdïóðî�ï]þ�$î!žï]þ9�$î�|ïðî,ºïðî.etïóðî2Iïóðî6,ïðî6,ïdðî9Éïóðî>Éïðî>;ïóðî>‚ïÖðîBïðîBïóðîBïÖðîE»ïðîFïdðîJ-ïðîIæïóðîJ-ïÖðîïð,îï¬ð-îï!åð`îrï ÈðîÈïð(îIïþ�$îòïb5þ«�$î€ïbXðî ïcàþ€�$îï`õþ�$î ï`Ñþ¤�$î ï`Ñþ�$2îïb5þd�$îï`Ñþ�$2îï`Ñþ¤�$îï`õþ�$îïcàþ€�$îsïcàþ€�$îóï`õþ�$îsï`Ñþ¤�$îsï`Ñþ�$2îïbXðîïb5þr�$îóïb5þ+�$îïbXðî äuïdJðîÈïdJðîºïdJðîòï`gþ�$òîòï`Cþ +�$îïcàþ�$îï^ßþ@�$îï^ßþ�$$î!tï_‘ðî&Wïbð î&Wï`®ðî%:ï`Šþä�$î%:ïaîþä�$î%:ï_þ�$�î&žï_ðî&žï]çðî&žï\Êð î&žï[®ð î ÈïbXðî :ï`õðî.ïcàþd�$î4‚ïWƒþ�$€î.ïW_þ‡�$î.ïW_þ�$¤î/:ï^.ðî0Wï]ðî4‚ïcQþ +�$î5žïcuðî4‚ï`Šþ r�$î5žï[ðî5žï`®ðî4‚ï_'þ +�$î4‚ï]Ãþ r�$î4‚ï\_þ r�$î4‚ïY˜þ r�$î4‚ïX5þ r�$î5žï_Jð î5žï]çð î5žï\ƒðî5žïbðî5žïY¼ðî5žïXXð î�uïZ‘ðî ïWþ�$2î ïWþ¤�$îïW<þ�$î ïZ&þ€�$î tïXðî9ïXþ�$îòïY.ðîïX|þ€�$î VuïSŸðî ïP&þ�$2î ïP&þ¤�$îïPJþ�$î ïS4þ€�$î«ïXþ�$îïQŠþ€�$îïZ&þŽ�$îïPJþ�$ �îïP&þ²�$îïP&þ�$ $î4‚ïaîþ +�$î4‚ïZüþ r�$îòïX|þ�$î9tïXŸðîòïQŠþ�$î9ïQðîïWÊðîºïVfðîº|ïFYðîºïFYðîHïFYðîHïFYðîïHíþ«�$îïS¯ðîïS¯ðîïS¯ðîïS¯ðîdïUJþ�$UîÖïVCþ9�$î«ïUØþ�$îdïShðî«ïQþ�$îdïNöðîïUèðîtïT¼ðîäïSŸðîºïRƒðîïUmþr�$îïQŠþ�$îºïP&þ�$2îºïP&þ¤�$î :ïPJþ�$îºïS4þ€�$îuïSŸðîòtïSŸðî :ïQŠþ�$î!ïQð î(×uïQðî!ïT þ�$2î!ïT þ¤�$î#ïT-þ�$î!ïWþ€�$îsïUþ�$îä|ïRÚðî$¬tïU‘ð î#ïUmþ ��$î!åuïWƒðîºï\þ�$îÖïZJþ�$òîºïZØþ�$€îòïBBþ�$2îòïBBþ¤�$îrïBfþ�$îòïEPþ€�$îòïC¦þ��$îÈïE»ðî€tïCÉðî �ïC;þ�$î r|ïAðîäïH;þ�$€îïGþ�$òîäïI{þ�$îätï?æðîÈïBðîäïCÉðî9ï>íþ�$Àî9ï>íþ²�$îÈï?þ�$î9ïG‰þŽ�$îÈï\ÊðîÈï[fðîï\§þ9�$îï[Cþ9�$îòïJ-ðîòïHÉðî«ïH¦þ9�$î«ïJ þ9�$îïAðîrïC¦þÇ�$îïC;þ�$î�|ïAðîtïFðîVïDæðîÈïC¦þÇ�$îïEPþ€�$îïBfþ�$îïBBþ¤�$îïBBþ�$2îduïE»ðîsïC;þ�$î+|ïAðîtïC;ðîäïC;þ�$î|ïAðîºtïCÉðîºïAIþ�$€îï?æð îHï?Âþd�$îºïA&þò�$î0åïT þ�$î0åïR¦þ�$î0åïQCþ�$î1,ïT-ðî1,ïRÊðî1,ïQfð î9‚ïUmþ�$î=ïPþ�$Žî9‚ïOßþÀ�$î9‚ïOßþ�$²î=ôïRÊð î:WïSŸðîHï>^þd�$îï>‚ðî¬ïBBþä�$î#ï<þ�$dî¬ï;Þþ�$î¬ï;Þþ�$‡î#ï?Âþ�$î9ÉïQôðî=ïR¦þ9�$îHï<ûþd�$îï=ðîïCÉþ�$dîïHíþd�$îsïJ˜þ€�$îóïGþ�$îsïG‰þ¤�$îsïG‰þ�$2îHuïKðîóïHíþŽ�$î ÈtïIðîïGÑþd�$îïJ þ«�$îïIÂþ«�$îïI{þ«�$îïI4þ«�$îïH¦þ«�$îïH_þ«�$îïHþ«�$îdïW_þd�$îdïWþ«�$îdïVÑþ«�$îdïVŠþ«�$îdïVCþò�$îdïUüþ«�$îdïUµþ«�$îdïUmþ«�$î Èï?žðî Èï>‚ðîÈï6—þ +�$îÈï2lþ r�$îÈï3Ðþ +�$îÈï53þ r�$îÈï7ûþ +�$îï4;ðîdï1—þ�$Àîdï1—þ‡�$îdï:4þd�$îï6»ðîÈï5žðîäï8ð îäï6»ðîäï5Wðîäï3óðîäï9‚ðîäï2ð îÈï1ºþ�$î¹ï9‚ðî¹ï8ðî¹ï6»ðî¹ï5Wð î¹ï3óðî¹ï9^þ«�$î¹ï7ûþ«�$î¹ï6—þ«�$î¹ï53þ«�$î¹ï3Ðþ«�$î$¬ï9‚þ�$ GîÈï9^þä�$î#HuïDXðî3¬ï=þ�$Çî-IïDÂþd�$î-Iï<ûþ‡�$î-Iï<ûþ�$ëî.ótïAIðî.eï?žðîïC¦þ9�$î&žïBBþ«�$î&žïBfðî&žï@ßþ«�$î&žïAðî&žï?{þ«�$î&žï?žðî&žï>þ«�$î&žï>;ðî3¬ïCþ�$î4ÉïC;ðî3¬ïA´þ�$î4ÉïA×ðî3¬ï@Pþ�$î4Éï@tðî(Hï:žðî(Hï9;ðî(Hï7×ðî(Hï6tð î(ï6Pþ«�$î(ï7´þŽ�$î(Hï9þG�$î(Hï:{þd�$î.¬ï9Éþ�$�Õî.¬ï9¥þ�Õ�$î.¬ï6Pþ�$�ùî.¬ï7%þ�Õ�$î-ï8ôþ�$�Gî-ï8Ðþ9�$î-ï7´þ�$�kî-ï7ûþ9�$î/:|ï5õðî/:ï5õðî2ï8‰þŽ�$î2×tï8¬ðî/‚|ï0gðî/‚ï0gðî(ï3ÐþÇ�$î(ï2%þÇ�$î(Htï3óðî(Hï2Iðî1ºï2ûþò�$î2ï3ðî,|ï+®ðî,ï+®ðîï/þ«�$îVtï/:ð îï-lþ«�$îVï-ðî/‚|ï,ƒðî/‚ï,ƒðîóï.Aþ�$î tï0ð î :ï/ìþ�$î&Wï1 þ«�$î(ï/:þ�$òî&Wï/þÎ�$î&Wï/þ�$î(ï/ìþ�$î)ï1 þ«�$î*Èï/:þ�$òî)ï/þÎ�$î)ï/þ�$î*Èï/ìþ��$î1ºï/þÖ�$î2Iï/:ðî pïM‚ðî ï*ðîdï_'þ9�$îï\_þ€�$îïZüþ€�$îdtï_Jðîdï]çð îdï\ƒð îdï[ð îï]Ãþ€�$î ï_üþ�Õ�$îrïZJþ�$ÖîIïÖþ�$î9pïðî=fïÖþ�$îHïÖþ�$îJttï�ðîFï�ðîBï�ðî>Éï�ðî:åï�ðî7ï�ðî3eï�ðî/‚ï�ðî+žï�ðî'ºï�ðî#Öï�ðîóï�ðîï�ðî+ï�ðîHï�ðîdï�ðîE-ïÖþ�$îAIïÖþ�$î9‚ïÖþ�$î)óïÖþ�$î",ïÖþ�$îdïÖþ�$îïÖþ�$î5žïÖþ�$î&ïÖþ�$îïÖþ�$î¹ïAþ�$î¹ïAþ>^�$îLôïdþ�$äî¹ï$þ>;�$îpï9ðî9ïäð î/:tïðî-×ï9ð î-×ïÖþ�$î1ºïÖþ�$î7Iïäðî6»ïÈðî6»ï«ðî?ïäðî>‚ïÈðî=ôï«ðîJ»ïäðîJtïÈðîIæï«ðîFïÈðîBïÈðî:åïÈðî3ïÈðî+WïÈðî'sïÈðî#ïÈðî¬ïÈðîÈïÈðîäïÈðîïÈðîïÈðîDXuï«ðî9tï Vð.�������ÿä��9«Kmc¼ 6������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������RSTK[0]RSTK[1:3]Meaning01234567No StkP changeStkP_ StkP+2StkP_ StkP+3StkP_ StkP+1ASELFF[0:1]Meaning0123012301230123--------01234567PreFetch_ RM/STKLongFetch_ RM/STKStore_ RM/STKDummyRef_ RM/STKIFetch_ RM/STKFetch_ RM/STKStore_ MdStore_ IdStore_ QStore_ TFetch_ MdFetch_ IdFetch_ QFetch_ TA_ RM/STKA_ IdA_ TShift operationASELMeaning01234567Store_ RM/STKFetch_ RM/STKStore_ TFetch_ TShift operationA_ TA_ IdA_ RM/STKBSELPrimaryExternal01234567MdRM/STKTQ0,,FF377,,FFFF,,0FF,,377----Q_ BLCMeaning01234567No actionT_ PdT_ Md, RM/STK_ PdT_ MdRM/STK_ MdT_ Pd, RM/STK_ MdRM/STK_ PdT_ Pd, RM/STK_ PdLogical357111517213337NOT ANOT A OR NOT BNOT A OR BNOT A AND NOT BNOT BA XNOR B, A EQV B, A=BA OR NOT BNOT A AND BA XOR B, A#BBA OR BA AND NOT BA AND BAA1 (all ones)A0 (all zeroes)6Arithmetic (no carry)Arithmetic (with carry)206236A2*AA+BA+12*A+1A+B+1AALUF[0:2]01234567MeaningShiftNoMaskShiftLMaskShiftRMaskShiftBothMasksShMdNoMaskShMdLMaskShMdRMaskShMdBothMasksSHASHBRMaskLMaskShC bits:234:78:1112:15RF_ AWF_ AShC_ BA[2]A[2]B[2]A[3]A[3]B[3]P+S+116-P-S-1B[4:7]undefined16-P-S-1B[8:11]15-SPB[12:15]CountFF[4:7]FF[4:7]FF[0:3]Shift controls come fromShc when BSEL[0]=0 in themicroinstruction that shiftsShift controls come from FFwhen BSEL[0]=1, and thesource for B is changed to QP=A[8:11]=number of bits to the left of the fieldS=A[12:15]=number of bits in the field - 1020021022023024025026027030031032033034035036037070071072073074075076077A[12:15]_ FF[4:7]A_ RM/STKA_ TA_ MdA_ QXorCarryXorSavedCarryCarry20ModStkPBeforeW--ReadMapPd_ InputPd_ InputNoPERisIdTisIdOutput_ BFlipMemBaseBranch conditionsBigBDispatch_ BBDispatch_ BMultiplyQ_ B--TgetsMdFreezeBCReplace RSTK byNoop100101102105106107122123124125126127PCF_ BIFUTest_ BIFUTick--MemBase_ B[3:7]RBase_ B[12:15]Pointers_ B----CFlags_ A'BrLo_ ABrHi_ ALoadTestSyndromeProcSRN_ B[12:15]130131132133134135136137140141142143144145146147RescheduleNoRescheduleIFUMRH_ BIFUMLH_ BIFUResetBrkIns_ BUseDMDMidasStrobe_ BTaskingOffTaskingOnStkP_ B[8:15]RestoreStkPCnt_ BLink_ B150151152153154155156157Q lsh 1Q rsh 1TIOA[0:7]_ B[0:7]--Hold&TaskSim_ BWF_ ARF_ AShC_ A160161162163164165166167170171172173174175176177B_ FaultInfo'B_ Pipe0 (VaHi)B_ Pipe1 (VaLo)B_ Pipe2'B_ Pipe3' (Map')B_ Pipe4' (Errors')B_ Config'B_ Pipe5B_ PCX'B_ IFUMRH'B_ IFUMLH'B_ DBufB_ RWCPRegB_ Link262263264265266267270271272273274275276277000-17040-57060-67200-17220-37240-47250-53254-57260-61RBase_ FF[4:7]Replace RBase byFF[4:7] for writeTIOA[5:7]_ FF[5:7]MemBaseX_ FF[6:7]MemBX_ FF[6:7]--Pd_ ALUFMRWPd_ ALUFMEMPd_ CntPd_ PointersPd_ TIOA&StkPPd_ ShCPd_ ALU rsh 1Pd_ ALU rcy 1Pd_ ALU brsh 1Pd_ ALU arsh 1Pd_ ALU lsh 1Pd_ ALU lcy 1DivideCDivide300-37340-57FF[4:7] for writeMemBase_ FF[3:7]Cnt_ FF[4:7]Wakeup[FF[4:7]]StkP_ StkP - 4StkP_ StkP - 3StkP_ StkP - 2StkP_ StkP - 1Field:110-17120-21LoadMcr[A,B]103104RescheduleNow113232527313501422362002142221614100711156125131234A - B - 1A - 1A - BValueAddrMeaningMeaningAddrValueALUFM addresses for operationsin standard system microcodeqqD1CribSheet.sil--0 = No ovfl/undfl check1 = Ovfl/undfl checkIOFetch_RM (io)Flush_RM/STK (emu/flt)Map_RM/STK (emu/flt)IOStore_RM (io)BSEL.1BSEL.2Programmers' Crib SheetDerivation of Shift ControlsALUFM Control ValuesALUF Shift DecodesRSTK Decodes for STK OperationsASEL Decodes (FF not ok)ASEL Decodes (FF is ok)BSEL DecodesLC DecodesFF DecodesFigure 17InsSetorEvent_BEventCntB_BB_EventCntA'B_EventCntB'360-77(Notify)7/23/85��î,,tïVðî,,ïSŸð î2×ïSŸðî.eïQôðî.eïPØðî.eïO»ðî.eïNŸðî.eïM‚ðî.eïLfðî.eïKJðî.eïJ-ðî2×ïQôðî2×ïO»ðî2×ïNŸðî2×ïPØðîÖïc.ðî+ïc.ðîäïc.ðîHïaƒðîHï`gðîHï^.ðîHï]ðîHï[õðîHïZØðîHïXŸðîHïWƒðîHïVfðîHïUJðîHïT-ðîHïSðîHïQôðîHïPØðîHïO»ðîHïNŸðîHïM‚ðîHïLfðîHïKJðîHïJ-ðîòïaƒðîòï[õðîòïVfðîòïQôðîòïM‚ðîòïLfðîòïKJðîòïJ-ðîäïaƒðîäï^.ðîäï]ð îäï[õðîäïXŸðîäïWƒð îäïVfð îäïUJð îäïT-ðîäïSðîäïQôð îäïPØð îäïO»ðîäïNŸðîäïM‚ð îäïLfðîäïKJðîäïJ-ðî+åïbçðî2ïbçðî-ïaƒðî-ï`gðî-ï_Jðî-ï^.ðî-ï]ðî-ï[õðî-ïZØðî-ïY¼ðî2ïaƒð î2ï`gð î2ï_Jðî2ï^.ðî2ïY¼ðî2ïZØðî2ï[õðî2ï]ð îÇïc.ðîòïc.ðî ïc.ðîïaƒðîï`gðîï_Jðîï^.ðîï]ðîï[õðîïZØðîïY¼ðîòïaƒðîòï`gðîòï_Jðîòï^.ðîòï]ðîòï[õðîòïZØðîòïY¼ðî ïaƒðî ï`gðî ï^.ðîïUJðîòïUJðîïSŸðîïRƒðîïQfðîïPJðîïO-ðîïNðîïLôðîïKØðîòïSŸð îòïRƒðîòïQfðîòïPJðîòïO-ð îòïNðîòïLôð îòïKØðî:ïE»ðî:ïA×ðî:ï@»ðî:ï?žðî:ï>‚ðî:ï<Iðî:ï;-ðî:ï:ðî:ï4‚ðî:ï2IðîVïBôðîVïA×ðîVï@»ð îVï>‚ðîVï=fðîVï<IðîVï;-ð îVï:ðîVï8ôðîVï7×ðîVï6»ðîVï4‚ðîVï3eðîVï2IðîVï?žð îVï5žðî*ÈïA×ðî*ÈïE»ðî*Èï;»ðî*Èï8ôðî*Èï5žðî0åïBôðî0åïA×ðî0åï@»ðî0åï:ðî0åï8ôðî0åï7×ðî0åï5žðî9ÉïE»ð î<ïDðî<ïBôðî<ïA×ðî<ï@»ðî<ï?žðî<ï>‚ðî<ï=fðî<ï<Iðî@-ïE»ðî@-ïDðî@-ïBôð î@-ïA×ð î@-ï@»ðî@-ï?žð î@-ï>‚ð î@-ï=fð î@-ï<Ið îdï+žðîï+žðî)¬ï+žðî0Wï+žðîÖï)óð îdï)óðîï)óðî#ï)óðî)¬ï)óðî0Wï)óðîÖï(HðîÖï',ðîÖï&ðîdï(Hðîdï',ðîdï&ðîï(Hðîï',ðîï&ðî#ï(Hðî#ï',ðî#ï&ðî)¬ï(Hð î)¬ï',ðî)¬ï&ðî0Wï(Hðî0Wï',ðî0Wï&ðî#ï+žðî#ï#Hðî)¬ï#Hðî0Wï#Hðî5åï)Aþ�$î7ï&þ�$Uî5åï%ìþ@�$î5åï$Aþ�$î7ï#Hþ�$î5åï#%þ@�$î7ï(Hðî7ï',ðî7ï&ðî7ï$eðî7ï#Hðî7ï",ðîï!Vð1îï :ð*îïFðîïDæðîïCÉðîïBðîïAðîï@tðîï?Wðîï>;ðîï=ðîï<ðîï:åðîï9Éðîï8¬ðîï7ðîï6tðîï5Wðîï0åðîï/Éðîï.¬ðîï-ðîï,sðîï+Wðîï*:ðîï)ðî€ïGðî€ïFð î€ïDæðî€ïCÉðî€ïBðî€ïAðî€ï@tð î€ï?Wðî€ï>;ðî€ï=ðî€ï<ðî€ï:åð î€ï9Éð î€ï8¬ðî€ï7ðî€ï6tð î€ï5Wðî€ï2ðî€ï0åðî€ï/Éðî€ï.¬ðî€ï-ðî€ï,sðî€ï+Wðî€ï*:ðî€ï4;ðî€ï)ðîï&åðîï%Èðîï$¬ðîï!Vðîï :ðîïðîïÈðîï¬ðîïðîïsðîïVðîï:ðî€ï&åðî€ï%Èð î€ï$¬ðî€ï"sðî€ï!Vðî€ï :ðî€ïðî€ïðî€ïäðî€ïÈð î€ï¬ðî€ïðî€ïsðî€ï:ðîïðîïðîïäðîïÈðîï«ðîïðîïrðîï Vðîï9ðîïðîï �ðîïäðîïÈðîï¬ðîïðîïsðî€ïäð î€ïÈðî€ï«ð î€ïð î€ïrðî€ï Vð î€ï9ðî€ïðî€ï �ð îïäð îïÈð îï¬ðîïðîïsðîïVðîï:ðîïðîïðîïäðîïÈðîï«ðîïðîïVðîï:ðîïðîïðîïäðîïÈðîï«ðîïðîïrðîï Vðîï9ðîïðîï �ðî&žïäðî&žïÈðî&žï¬ðî&žïðî&žïsðî&žïVðî&žï:ðî&žïðî&žïðî&žïäðî&žïÈðîïrð îï Vðîï9ðîïð îï �ðî+žïäðî+žïÈð î+žï¬ðî+žïðî+žïVð î+žï:ð î+žïðî+žïäð î+žïÈðî8ïÈðî8ï¬ðî8ïðî8ïsðî8ïVðî8ï:ðî8ïðî8ïðî8ïäðî8ïÈðî8ï«ðî8ïðî8ïrðî8ï VðîïGðîï4;ðîï2ðî&žïðî&žïrðî&žï9ðî&žïðî&žï �ðî8ïäðî+žïðî+žïrðî+žï Vðî+žï9ðî+žïðî+žï �ðî<×ïäðî<×ïÈðî<×ï¬ðî<×ïðî<×ïsðî<×ïVð î<×ï:ðî<×ïð î<×ïð î<×ïäðî<×ïÈðî<×ï«ð î<×ïð î<×ïrðî<×ï Vðî8ïðî8ï �ðî€ï3ðî<×ïðî<×ï �ðî<×ïäðî2×ïM‚ðî2×ïLfðî2×ïKJðî2×ïJ-ðîÖï+žðîïðîïäðî€ïVðîï#ðîï"sðî€ï#ð î:ïBôðî:ï=fðî:ï8ôðî:ï7×ðî:ï6»ðî:ï5žðî:ï3eðî*ÈïBôðî*Èï@»ðî*Èï?žðî*Èï>‚ðî*Èï:ðî*Èï7×ðî*Èï6»ðîïBôðîï=fðîï8ôðîHï7×ðîHï6»ðîï5žðîï4‚ðîHï3eðî.eïBôðî.eï@»ðî.eï?žðî.ï>‚ðî.ï:ðî.eï7×ðî.eï6»ðî0åï?žð î0åï>‚ðî0åï6»ðîïDŸðîïDŸðîVïDŸðî0åïDŸðî-ïDŸðî)¬ïDŸðîVï0åðîVï/ÉðîHï0åþ�$€îHï0Âþ€�$î,sï0Âþ9�$îº|ï/ðî.ï/ðîBuïòðî tï_Jðî2ïVðî2ïUðîäï_JðîäïZØðîäï`gðîäïY¼ðî+ïY.þH�Gî8¬ï/‚þ�GîïXæþä�GîdïKþä�Gîï +þ�$îHïIXþ5W�Gîï/:þ5W�GîHïeþ5�Gîdï#Hðîï#HðîHrïdðîÖpï-IðîïGfðî9ÉïGfðî,,ïWƒðî+åïd‘ðîÖïdÙðîÇïdÙðîïVõð îïIð î+ïIŸþ�GVîïeþ�GFØî.¬ï0åþ�$€î"ºrïUð î€tïðî€ïðî+žïsðî+žïðî7ïäþ�$dî&ïäþ�$dî8ïäðîGïðîCÉuï�Õðÿ������� Tä���ÕJ˜egb����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������ÿ TIMESROMAN����������� �����ÿ HELVETICA������������ �����ÿ HELVETICA�����������������ÿ TIMESROMAN������������ �����ÿ TIMESROMAN�����������������ÿLOGO�����������������������ÿ TIMESROMAN���������������ÿ TIMESROMAN����������� ����ÿ TIMESROMAN������������ ����ÿ TIMESROMAN����������� �����ÿ HELVETICA������������� ����ÿ HELVETICA������������ ����ÿ HELVETICA�����������������ÿ HELVETICA����������������ÿGates����������������� �����ÿ TIMESROMAN������������ ����ÿ TIMESROMAN����������� ����ÿ TIMESROMAN���������������ÿHIPPO����������������� �����ÿ TIMESROMAN������������ ����ÿ TIMESROMAN����������� ����ÿ TIMESROMAN���������������ÿ TIMESROMAN����������� ����ÿ TIMESROMAN���������������ÿ TIMESROMAN�����������������ÿ TIMESROMAN������������ ����ÿ TIMESROMAN����������� ����ÿ TIMESROMAN���������������ÿ TIMESROMAN����������� ����ÿ TIMESROMAN����������������ÿ TIMESROMAN���������������ÿ TIMESROMAN���������������ÿHIPPO����������������� �����ÿ TIMESROMAN������������ ����ÿ TIMESROMAN����������� ����ÿ TIMESROMAN���������������ÿ TIMESROMAN����������������ÿ TIMESROMAN����������� ����ÿ TIMESROMAN���������������ÿ TIMESROMAN����������������ÿ TIMESROMAN������������ ����ÿ TIMESROMAN����������� ����ÿ TIMESROMAN���������������ÿ TIMESROMAN����������� ����ÿ TIMESROMAN����������������ÿ TIMESROMAN���������������ÿ TIMESROMAN����������������ÿ TIMESROMAN������������ ����ÿ TIMESROMAN����������� ����ÿ TIMESROMAN����������� ����ÿ TIMESROMAN����������������ÿ TIMESROMAN���������������ÿHIPPO����������������� ��� ��ÿ TIMESROMAN������������ ��� �ÿ TIMESROMAN����������� ��� �ÿ TIMESROMAN�������������� �ÿ TIMESROMAN����������� ��� �ÿHIPPO����������������� ��� �ÿ TIMESROMAN�������������� �ÿ TIMESROMAN��������������� �ÿ TIMESROMAN�������������� ��ÿ TIMESROMAN������������ ��� �ÿ TIMESROMAN����������� ��� �ÿ TIMESROMAN����������� ��� �ÿ TIMESROMAN��������������� �ÿHIPPO����������������� �����ÿ TIMESROMAN������������ ����ÿ TIMESROMAN����������� ����ÿ TIMESROMAN���������������ÿ TIMESROMAN����������������ÿ TIMESROMAN����������� ����ÿHIPPO����������������� �����ÿ TIMESROMAN������������ ����ÿ TIMESROMAN����������� ����ÿ TIMESROMAN���������������ÿ TIMESROMAN����������������ÿ TIMESROMAN���������������ÿ TIMESROMAN����������� ����ÿ TIMESROMAN���������������ÿHIPPO����������������� ��� ��ÿ TIMESROMAN������������ ��� �ÿ TIMESROMAN����������� ��� �ÿ TIMESROMAN�������������� �ÿ TIMESROMAN����������� ��� �ÿ TIMESROMAN��������������� �ÿHIPPO����������������� ��� �ÿ TIMESROMAN�������������� �ÿ TIMESROMAN����������������ÿ TIMESROMAN������������ ����ÿ TIMESROMAN����������� ����ÿ TIMESROMAN���������������ÿ TIMESROMAN����������� ����ÿ TIMESROMAN����������������ÿHIPPO����������������� ����ÿ TIMESROMAN���������������ÿ TIMESROMAN����������������ÿ TIMESROMAN������������ ����ÿ TIMESROMAN����������� ����ÿ TIMESROMAN���������������ÿ TIMESROMAN����������� ����ÿHIPPO����������������� ����ÿ TIMESROMAN�����������������ÿ TIMESROMAN������������ ����ÿ TIMESROMAN����������� ����ÿ TIMESROMAN���������������ÿ TIMESROMAN����������� ����ÿ TIMESROMAN���������������ÿ TIMESROMAN����������������������������������������������������������������������������������������������������������������������������������������������������z�������� ��h�����7�����}��������!��ð���)��À���:��ý���B� �ˆ���L� �T���V�� ���b�����i� �Z���s��Û���y��û���€��À���‘��F���™��¤���¡��Ï���¨��7�����"���²��¼���¸��Q���½��•���Ä��æ���Ë�����Ð��%���×��Â���ß��Õ���ä��ï���ë��Æ���ó�����ø� �����.��� �8���������`��'��2��+��'��0����5����;��í��B��Õ��J��·��L� �â��U��\��h��'��y��-��Š��Ö��’��«��™��»��¡��ö��©� �·��²��×��º� �½��Ã����É��õ��Ð��÷��Ø� �¹��á�� ��ç����ï����õ��Ç��ý� �”����Ö�� ��€����Q������4����:��U��A� �þ��J��?��Q����Y��Á��a��w��e��ä��m��´��u��£��}��‘��…��¥��ˆ��•��Ž��«��•��±��˜��Ñ�� ��¢��«��Ë��±��÷��·��ß��½��Ö��Å��ú��Ë��C��Ó��£��Ú����â� �%��ë��F��ó��e��÷��–�� ��;����¼��#� �·��,��”��4�� ��:��”��B� ���K��à��S��ô��Z� �¤��c��Ó��k��Ú��q��g��u��É��ƒ��ò��‹� �i��•� �¿��Ÿ� �³��©��é��±��¦��´�� ��»��¥��Ã����Æ��#��Ì��^��Ð� �×��Ù��º��à��À��è��ö��ð��õ��ø��ô��ÿ��Õ����¡�� ��À������&��Ô��4��F��<� ���E��.��S� �8��]� �â��f��\��y��'��Š��-��›��Q��§����¿��¢��Ê��–��Ü��;��î��É��ü��ó����������������������������������cÄcè��������������������������������������cÄ��������������������B"""�������?����cÄcÓöZøe=ë-:�ê~eied¼d��Ö¼p������¼t����%ö*ol��ed¼d���Ö¼pÖ����¼t���ê~d¡dÌúdÌ��d݉É��dH�óŽ���ê~d1manpresseditA.cm..�dj���‚ÀhN�ÿÿ���s�hXhXmËm±Ysm²½¤ÖdoôŒ½¨dyu�ÿÿ�ÿÿm²��Öf¤d‚ñdéd‚ê~dàd¼f]dþ¶|�mj/�–�ÿÿ¡cŠÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿDoradoHardwareManual.press�������������������������vest.pa������������������������10-Nov-86 9:25:30 PST:����������������������������������������������������������������������������������������������������������������������������������������������������