ToDicentraUsersDateMay30,19859:59:48pmPDTFromHalMurrayLocationPARCSubjectDicentraManualOrganizationCSLXEROX***DRAFT***Copy/Indigo/Dicentra/Doc/DicentraManual.tioga_///DicentraManual.tiogaCopy/Indigo/Dicentra/Doc/DicentraManual.press_///DicentraManual.pressCommentsandcorrectionsarerequested.Ifyounoticeasectionthatismissing,pleasetellme.IntroductionTheDicentraisaDLionspinoffpackagedinaMultibusenvironment.Itletsusputmorethanoneethernetcontrollerinabox,andletsyouwritesoftwareinMesatocontrolcommercialIOboards.DavidBoggsdesignedmostofthehardwareandnursed4boardsthroughfinallayout.TheroutingwasdoneatVersateconaVAX/Sicardssystem.I'vedonemostofthesoftwareandmicrocode.TimDiebertdesignedtheearlymemoryboardandtheearlyMiscboard.MikeOvertonworkedoutthecurrentpackaging.ThefolksinPARC'sElectronicModelShopbuiltthem.Theidea,ofcourse,wastobeabletobuylotsofwonderfulhardwaresowedidn'thavetodesignit.That'sbeenamixedsuccess.TherearemanymanyMultibusboardsavailable,butmostofthemaretrash.BrowsethroughtheMultibusBuyer'sGuideifyouarecurious.Averyseriousproblemisthatalltheoff-the-shelfboardsseemtocomewithaseriousquirkortwothatchewsupalotoftimemakingthemwork.BoggsandIspentmanyhourschasingasmashedpacketprobleminthe3MBEthernetboard.The3Com10MBboarddoesn'tworkwithsomelengthoffibernet.JimGasbarrospentmanyhoursdiscoveringaknownPALbugintheDiskcontroller.TheAMDmemoryboardwehavedoesn'tpassthememorydiagnostics...Yes,itisfasterthanhavingtodesignsomethingfromscratch,butitisnotassimpleasIwas(naively)expecting.Anothermajorproblemisthatcommercialboardsturnouttobequiteexpensive.That'snotaseriousproblemifyouonlyuseoneboardinawidgetcontroller,butforsomethinglikeamemoryboardthatgetsusedineverysystem,youcansavequiteabitifyoubuildyourown.Goodideas,notsogoodideasp_/ gq_/_/cp_/!q_/+i.049;zp[S gq[Sjp[S+hq[S5pWv gqWvcpWv+h qWv5rOsIU gtF)q!FF"6tF.0q2'FF3FtC)q!CC"6tC.0,q2=CC3\u= g* C %'/)-/&3681=qACs7 g t3) 7m#)+l,2 ;<?@C2* g#} U t#y&%(+G.4(59j;? 0 gq.)HQ  b"$s*x-,127Y<?D<,_ gb5;!i" +_0Y376:U<5>D]* g  "$(P-2)57;V>Cv) gg '*-/5 ;@#C'i g$)NT !$&)R+-43:9;> B!Ee#G gp %<)a+/39>] D! g|Y%#'-k2U67:=$)-!#% -25z7:=>C_| g(!&*.-2459i=0AE g<Y#(,/37;@C. gI R$e(+/ 78M<@.BD g Z=J"&(,H146; D g 2 &).1F236H7<7=>Ad8 g )k" *^.246z8<0 B gQ!$#&*,-2D 8;s=Dim g {!\% ),/2568:4<@Cu  g&o>TVm$:Inter-OfficeMemorandum2ThereweretworeallygoodthingswedidontheDicentraproject.First,weputalotoftimeintotheHistoryBufferontheDebuggerboard.Itpaidforitselfthefirsttimeweusedittochaseanobscurewildbranchbug.Iwon'tgetinvolvedwithanymoremicrocodewithoutone.Second,wedidn'tchangeanyofthemicroinstructiondecoding.ThisletusstealthewholeDLionEmulator.WewererunningMesacodeadayortwoafterthe"last"bugwasremovedfromCP.TherearetwoweakpointsintheDicentra.ThefirstisthattheEmulatormicrocodelivesinexpensivePROM.Itwillbealmostimpossibletoswitchtoanewinstructionsetifwegetanotherbatchofmachinesintothefield.ThesecondproblemisthattheMultibusisquiteslow.ADLiondoesamemorycyclein411ns.TheDicentratakesroughlytwiceaslong.WheretofinditAllDicentrarelatedfileaarestoredon[Indigo].Youwillprobablyhavetobrowsearoundinthesubdirectoriesinordertofindsomething.ThismemoisDicentraManual.press/tiogaon[Indigo]Doc>.It'saTiogaformatfilesodon'texpectittolookreasonableifyoutrytoreaditfromTajo.ThefiguresareinFigs.press.Thelogicprintsarestoredon[Indigo]First>.Thepressfileforeachboardcontainsallthepromlistings,wirelists,prescansandsuch.I'mwillingtoaddhelpfulcommentsandsuchtotheprints.Letmeknowifyouhaveanysuggestions.WhenIeditsomething,Iupdatethedateonthecoversheet.Thismakesiteasytoverifythatyouarenotworkingfromoutofdateprints.TherearespecialversionsofBurdockandMassforusewithDicentras.TheyarestoredonyourfavoriteAMesa/APilotdirectory.YouwillalsoneedTestDebuggerBoard.bcdandTestHistoryBuffer.bcdtocheckoutaDebuggerboard.TheycomefromtheBurdocksubdirectory.CopiesoftheCalaverasversionsofallfourfilesareon[Indigo]Calaveras>.MostofthismemoassumesthatyouarefamiliarwithDLionCPboardsand/ormicrocode.CopiesofGarner'sDandelionHardwareManual(DLionManual*.press)andDandelionMicrocodeReference(DMR.press)arestoredon[Indigo]DLion>.YoucanskipallthechaptersonIOdevices.Ifyouaregoingtodebughardware,youshoulduseBringOvertofetchthefollowingfiles:[Indigo]11.1>DF>Diags.df.[Indigo]11.1>DF>Emulator.df.[Indigo]11.1>DF>ScopeHacks.df.TheBurdockdocumentationis[Indigo]Doc>BurdockManual.press/tioga.Therearetwobootfilesneededfornormalgatewayoperations.OscarDicentra.bootisthegatewayprogram.BootMeAgainDicentra.bootmaybenecessaryifyoustoreabuggyparameterfile.TheversionsthatweareusingatPARCliveon[Nebula].OscarDicentra.pbisthePupversionofthesameOscarDicentra.boot.InstallitonaPupbootserver(IFSorD0)ifyoumightneedtobootyourmachinefroma3MBnet.ConfigurationsOneofthejoysofhavinganiceflexiblebusonthebackplaneisthatyoucaneasilyplugsf ( vfEq_/)Ew[ %'\), .4F9U=?PAC/E[] gz2 C")-r.24a7:3=@EBwE[ g3Hu!0$h%)w+147;<BZ9 gjg"#&0`69;=@CX ga\"&\)*-/p2,5w7;>AdV gTo)<^ ,!$\*k-T0>147 =0CR g>pRRXqRR$9 +0-1i3@47 >@B{DQ gj#!%|(L,2Q36{8>@COy g c+!L%(\.16:);uL* gPtH)`aU $&2j5]7=@BbG3 g%2 #V%' D)`q?DD^t%CDD%)x+:=T>BC gp &(3+-c/:2}37;:>;BEfAi g >) 0O36d8:=A=F gI@''3$'R*-I13a6 :A9C; g*@" %g( /357 >@ D9 gnvq"$ '&(,/2N47@E4- g?  &u* -h04D]2 gB!"(-0g3719m> 0 gD "I$9'>*+,.q.c)X  d#*%("-90K46;p@ , gxw,,k$q,)7lw:,,;@r+ gq+  q!#4r7:0=1?3A)m gm&)a~,[%(r,/c67;<=Ct%J\##\&!\(q) "b0)>f#%*0 7C5D\ g(+-357;9EPU? gg^# )+l14p7;N@XB`DL g!'%-*/4 7V957 }!&9(?)iH)0q !%T)-02@58N:r;@CG, g 3"$&*+-13,5o8<?ACE g [CuB5 g q>)_8Y%&(){-0q257;@!E[== g U*8 $i%+0q25:<*>dBzE#; g Ecn#5%+G.,05n7?9> 9 g,KF f#@%)+026S:V<BD%E8G g?6v#\& ,.1S48O>BD~6 gD? &),233]7:;?4#) 2'm#<$'*,u/4239o>KA2{ gO!#),/1778;9>uAB0 gJ "$%2(I /M2,3647e9;@ BD]/- g$E #p%(*H,057;s=?OBl- g + )A #(-/33`6 :a;A-D)b g0 #l%(<+,0R4^7:=@sD' gIB!#<&6'(,/24E9Q;& g(!$& )-/1384;@Ba$l g  $K'*i./347F:AC" g H)) $%+049 =?JBXD g#&[),N/5r76<6AC g> Q$k%'1*,V.48=>AD1R gP"u&(*y/36[:<<7C gl9}!)%?)+d/5)69<;@A.)#&)q+.< 5 ;?C g[ u6 gj w) TVm$Inter-OfficeMemorandum4NormalOperationsSinceDicentrasdon'tcomewithdisplaysorkeyboards,orevenadisk,normaloperationsareverysimple.Whenyouturnthemon,theybootthemselvesovertheethernetandgotowork.Ifanythinggoeswrong,youwillprobablyfindyourDicentrain915waitingtobeTeledebugged.Dicentrascontainawatchdogtimer.ThismakesthepercevedreliabilityofconnectionlessserverslikeGatewaysmuchhigher,butitisoccasionallyfrustratingwhenitgoesoffwhileyouareTeledebugging.NormalBootingWhenyoupoketheBootButtonorturnonpower,aDicentrafindsandtestsmemory,copiesthegermintomainmemoryfromEPROMontheMiscboard,activatesthewatchdogtimer,andthenstartsrunningtheGerm.108willbeintheMPwhileitistestingthenormal(8banks)ofmemory.Ifyouhave2megabytes,theMPwillbe116(16banks).TheGermloadsthedesiredprogramoverthennet.ThebootfilenumberandwhichdevicetobootfromcanbestoredintheEEROM.ThedefaultistobootOscar,thegatewayprogram,fromthefirst10MBethernetboard.YoucanalsousetheAlt-Bootbuttontomanuallyselectanalternativebootfileordevice.Fineprint:ThepowerupsequenceforcestheCPtoexecutefromit'sPROM.TheMultibusINIT/signal(fromthebootbuttonorwatchdogtimer)don'tresetUseRomintheDebuggerboardsControlPAL.ThisletsyoucantestthebootingpartofnewmicrocodeifyouloaditwithBurdock.MPCodesThe09xxcodesarealldirectfromPilot.SeethePilotdocumentationforthedetails.Thesearethecommonones.915=>WaitingtobeTeleDebugged917=>BeingTeleDebugged920=>Bootinginprogress(shouldblinkto910occasionally)921=>Thedesireddevicedoesn'texist924=>Bootingtimedout925=>MissedapacketwhileBooting(shouldgobackto920soon)928=>WaitingforBootServerThesecodescomefromInitDicentra.mc.Exceptasnoted,thesewillblink.0090=>ControlStoreParityError0091=>Someboarddidn'trespond(likelytobeaMemoryParityError)Youwillgetthisiftheswitchesonthe10MBboardaresetwrong.0092=>UnknownMiscboardInterrupt0093=>CyclesOutofPhase(hardwareormicrocodebuginCP)0100=>TestingMemory(101..10nisnumberofbanksfound)0108=>Found8banks(1board)0116=>Found16banks(2boards)0150=>BusMasterMissing0151=>Interrupt(s)StuckOn0152=>(Partof)MemoryDataBusStuckHigh0153=>(Partof)MemoryDataBusStuckLow0154=>XAckTimeoutbroken(onMiscboard)--doesn'tblinksf ( vfEs^ ge q[)- #)* 1378>;@f Y g:!C$'y*. 58_:@pCOEeXX gU) "%+/428:=CE#T5 g Q)le!&);-05 <4> P g"%&d' /} 629;I>i@D]Nl g uK geqG)hF\$&y)+017;9>ANF' g~7^!p%F'F'%qF')+-15I:<CD g=\!$C&(*p,DD-qD/2459<@@BB g79 #:p%BB&qB'*R,3.158k@Bx;g)a?@O%5)4+-/47p:;g;g:q=};g;g>VA+9 gH#!%+G/3567@8 gp88q88x!'#&-(-0a24;<?BC6q gu3" g3q/)DaP!1$(3*-'0l 9<>lC., g, gwh * g} )6 gk"&b(* ' gj3w"5% g$? gDn~$)+.03" gW )*(=,.}26@8u gBX gB#U');+,,V15''6* -"'),V0x4o68 gB   gBj#%'U.02t0 gB!"$ )7*. gB gBH: gB gB y gBv #'a D gBv #'a gB. o"&K*,309TVm$Inter-OfficeMemorandum50159=>NotEnoughMemory(need2banks)0160=>MemoryBroken0161=>XAckTimeoutDuringScan(paritybitbroken?)0170=>CopyingGerm0171=>BadGermChecksumYouwillgetthisiftheswitchesontheMiscboardaresetwrong.Theyareeasytobump.0898=>UnreasonableprocessorIDfrom3Comboard(fromprocessorhead,doesn'tblink)0899=>AbouttostartrunningGerm--doesn'tblinkOddsandends00xx=>TryingtofindaTimeServer1937=>TryingtofindaTimeServer07xx=>CPUCalibrationfromBootMeAgain.0731meansthattheDicentraCPUisrunningat73.1%ofthespeedofaDLion.OncemostDicentraprogramsareupandrunning,theMPwillshowthe%oftheCPUinuse,andasingledotwillwalkthroughall4decimalpoints-onestepasecond.Alt-BootingIfyouarehavinghardwaretroubleswiththatnetorsoftwaretroubleswiththenormalprogram,youcanusetheAlt-Bootbuttontomanuallyselectadifferentbootfileordifferentdevice.TheAlt-Bootbuttonistestedassoonasthegermstartsrunning.(That'sthefirsttimeyouseea9xxnumber.)Ifitisdown,youwillgetaseriesofnumberslikeAlt-BootingaDLion.Thenumberscyclethroughprettyfast.Don'tbesurprisedifyoudon'tgettherightone.IwaituntiltheonebeforetheoneIwant,andthenletgoassoonasitchanges.Alt-Bootingdisablesthewatchdogtimer.(Youmightbetryingtobootoveraslowphoneline.)Thesequenceofnumbersyouwillseeis0240,0241,0242,0243,0244,0260,0261,0262,0263,0264,0280,0281,0282,0283,0284,1240,1241,...,1283,1284,...2240,2241,...,2283,2284.Thefirstdigitistheboardnumber.Thelastdigitselectsthebootfile.x24xbootsfromthe10MBethernet.x26xbootsoverthephoneline.x28xbootsoverthe3MBnet.Bootingoverthe10MBnetorphonelinesusesNSprotocols.Bootingfroma3MBnetusesPupprotocols(justlikeAltos).0240loadsbootfilenumber25200002000,octal,(thegatewayprogram)fromthefirst10MBethernetboard.Thisisthedefault.1240loadsbootfilenumber25200002000fromthesecond10MBboard.2240loadsbootfilenumber25200002000fromthethird10MBboard.0241loadsbootfilenumber25200002001fromthefirst10MBboard.0242loadsbootfilenumber25200002002fromthefirst10MBboard....1240loadsbootfilenumber25200002000fromthesecond10MBboard.2240loadsbootfilenumber25200002000fromthethird10MBboard.0260loadsbootfilenumber25200002000fromthefirstphoneline.1260loadsbootfilenumber25200002000fromthesecondphoneline.0280loadsPupbootfilenumber140000fromthefirst3MBboard.0281loadsPupbootfilenumber140001fromthefirst3MBboard.BootingoveraphonelinerequiressomemagicintheparameterfileiftheotherendofthephonelineisalsoaDicentra.Asyoucanguess,ittakesalongtimetobootoveraslowphoneline(orthroughaverybusygateway).Oscarsf ( vfEq_' gB?#$] gB[ gB. #(I*fZ0 gBX gBV'4$ ""'),B/357<@BdEeU: gS gB ! #2&*.28"?AFW)(!$<&P) .036X9)?!&),/m1^7<?BWAC9 ga1#L%(*,/1h79 A+BL7t g@e!$(}*o0b14|8:Z<@ CD5 g/<"%(*,.134:d A4% g{ r"c&d(+C.]/261)#"%a')Z-048E<?Cv0 g:!%[(,|.Q15r6:>?Cv.[ gggS#&)M,1369=IA%D, g?4 K"&)--036R9?B g[u g }TVm$Inter-OfficeMemorandum6MostoftheEEROMisusedtoholdamachine'sparameterfile.(Thinkofitasaverysmallfastdisk.)ThiscanbeprocessedwiththenormalUsercmparsingroutines.OnceyougetOscargoing,youcanChattoit.ThereareseveralcommandsinOscarusedtosetuptheEEROM.FetchParmFileisusedtoloadanewparameterfile.SetBootLocationisusedtosetupthedefaultbootdeviceandfilenumber.TypeParmFilewillprintoutthedefaultbootfileandlocationaswellasthecontentsoftheparameterfile.Don'tbesurprisedbyabadchecksummessage.That'snormalifyouhaven'tyetsetupthethebootfilelocationorFetchedaparameterfile.OscaristheGatewayprogram,soitscansthe[Gateway]sectionoftheparameterfile.Ifthereisafatalbuginthere,Oscarwilldiveinto915everytimeyoubootit.SinceOscarisalsotheonlyprogramthatyoucanusetoinstallanewparameterfile,thingsgetabitsitcky.BootMeAgainwillsmashtheparameterfile.Thisisjustahack,soyouhavetowaituntilitstartsrebootingitself.Itwilltakeseveralminutes.729,730,and731arereasonablenumberswhileBootMeAgainisrunning.(BootMeAgainisalsotheCPUspeedcalibrationprogram.TheMPis10timesthe%executionrateofaDLionCPU.730meansthatthisDicentraisrunningat73%ofthespeedofaDLion.)YoucanalsouseEERomTestifyouhaveBurdockhandy.Onthefirst10machines,theEEROMchipsaresocketed.Youcandestroytheparameterfilebyright/leftswappingthem.Bouncingdots,MP,Control-Shift-SwatWhileOscarandmostotherDicentraprogramsarerunning,theMPshowsthepercentageofCPUbeingused.Thedecimalpointshouldtakeastepeverysecond.WhileOscarisinitializingitself,theMPwillread990.Itmayblinkto981whilefindingitsPuphostnumber.Itwillblinkto1937whilefindingthetime.Afterinitializationisfinished,thenumberintheMPisthepercentoftheCPUthat'sbeingused.IfyouleanontheAlt-Bootbutton,all4decimalpointsshouldturnonasawarning.Ifyouholditdownforseveralseconds,youwillgetto915.Thisisjustahackfordebuggingstubbornprograms.981andPupHostnumbersIfyoudon'tunderstandabout981(onDLions),getsomebodywhodoestoexplainittoyou.OscarusesPupprotocols.ItgetsitsPuphostnumberjustlikeDLionsandD0sthatarerunningPilot.(Actually,itdoeswhatD0susedtodo.SDD"fixed"thatforKlamath.)Ifthereisa3MBboard,itusesthePuphostnumberfromthefirst3MBboardonallthe10MBnets.Ifthereisno3MBboard,itasksanameserverforitsPupAddress,andusesthePuphostnumberthatcomesback.Whileitiswaitingforananswer,theMPwillshow981.Thenetnumberthatcomesbackisignored.Thismakesiteasytomovemachinesfromonenettoanotherifthathostnumberisunusedontheothernet,butitalsomakesiteasytogetconfusedifyoumoveamachineandforgettoupdatePup-network.txt.Ifyougeta981,youdon'thaveany3MBboards.Ifyouthinkyouhaveone,itiseitherbroken,ortheswitchesaresetwrong.Currently,Dicentraswithoutany3MBboardsneedanameserveronthenettogetoutof981.Thisisaabitstupidconsideringthatthedesiredinfoisprobablyintheparameterfile,butIhaven'twrittenthecodeyet.Fortunately,therearen'tmanyDicentragatewayswithoutatleastone3MBboard.sf ( vfEq_')mp_'_'q_' 2!%&?,3%5:y<4=?;@fCv] g@Z!$1&+N0c57[) "%](*,90F27A>2?CY] gK+pY]Y]yqY]Y]xY]Y]#LqY]'e),x.[126#<x?Y]Y]@C0W gqWIf* %d(- /2_x7WW8<4@kqWDiV g9 &'*,G.458 >A?E#Tg gfmg$(-|.168<?AnDR gb \PD)$%"$&M),w379<BEN gY\ !$s'v*M,036n9;I>BDGL go=!#'(+2J5 9$;l<>Jz) !'*Q-g.1j26*7:=?B{EH gxP!&,@/R2d5?7:p AcG, g$ t )a*-037v >MD<E gw'  \#%$&*.[05B8:@kAC g ~ #&l)3+3^47j:@5DB6 gpB6B6qB6"%(>.\14L9K;BE@ g Znu=? gq9)F,K &,/ 479=@. 8I g ] $)+-(0 35);} ;"%E'*-0248:6<@vE94& gA1C $#',.2U5 =?$D2 gAM!"%(,800)L:6 %$&'- 1#58:<-=LBD].\ ga #w&(\*,/1^358Z:AA, gu)f gtq&)J "%?'-0"69=9?CEe$p g!)&<< !6$ &),.1v446< >AD M gM  7#&})+y-1q6X9/;uBC g PU #(,a.15.91;C=??C g Is |"#U'8+h-/28;r>ADW g !"$$)!+-25E8:>AD g(@#'"+-0M2.6 <[?BEe gjx#%(+.Y0249:`=\?ABa g >h!#T') #&*.03Z7 9=,@BAC'> gq5Li) !#'#+/0438 :<{>@BE[ gRk #<& (g-.01y7I8;SAD t g i6:z &*\.617=XB]C g TVm$Inter-OfficeMemorandum7ChassisThepowerswitchonthelowerrightofthefrontpaneldoestheobviousthing.ThebuttonmarkedResetabovethepowerswitchdoesn'tdoanything.Theleft/whitebuttonabovetheMPistheBootButton.Pokingitwillrebootthemachine.Theright/redbuttonistheAlt-Bootbutton.ItcanbereadbytheCP.JustlikeonaDLion,theAlt-Bootbuttonisusedatboottimetodirectthemachinetobootfromanalternatedeviceorfile.Thenormalrunningsoftwarewillgointo915ifyouholdintheAlt-Bootbuttonforseveralseconds.(It'slikeControl-Shift-Stop.)TheAlt-Bootbutton"floats"pushed-insoyoucan'trunamachinewithoutitsMP.(Thiswouldn'tbetoohardtofix.)PhysicalThechasisusesabout7inchesofanormal19inchrack.It'sabout20inchesdeep,moreifyoucountthespaceneededbytheconnectorsontheback.Itcomeswithrubberfeet,sotabletopmountingisquitereasonable.Thewholesetupweighsabout55pounds.Youcanmoveitbyhand,butitisheavyandawkward.Youwon'twanttocarryitveryfar.Someoftheboardsdon'tfitintotheirslotsverywell.Pushharder!Yes,youhavetopushrealhard!Sometimesittakestwopeople.CoolingADicentramakesalotofheat.Makesurethereislotsofroomforair.PowerrequirementsADicentraneeds115voltsAC.(Thereisaswitchonthepowersupplyfor230voltoperation,butyouwouldalsohavetochangethefan.)Alightlyloadedmachine(noextraethernetboards)drawsabout2.5amps.Aheavilyloadedmachinewilltaketwicethat.Thepowersupplywillworkon50Hz.Sowillthefansonafewthatwelookedat.Therearelotsofopportunitiesforusingsimilarbutslightlydifferentthingssoyoushouldprobablycheckcarefullybeforeyouactullyplugamachineinto50Hz.(Ihaven'tcheckedthespecsforthepowersupplysinthefirst10machines.)PowersupplyThepowersupplyisbeefyenoughthatyouareunlikelytorunoutofanything:+5@80A,+12@8A-12@8A,-5@5A.ThelimitingfactoristheMolexconnectorsbehindthebackplane.Beware:KeepaneyeontheMolexconnectorsusedtoconnectthewiresfromthepowersupplytothebackplane.Iftheyturnlightbrown,replacethemsoon.Otherwise,theywillturndarkblack.Beware:Thepowersuppliesonthefirst10machinesdon'tprovide-5.Wedon'tprovideanyfancypower(batterybackup,analog...)ontheP2connector.Board/SlotassignmentsThenormalDicentrachassishas9slots.Thebottom2slotsdon'thaveanyP2connectors.sf ( vfEs^ gq[)/io"%'*-u154f6;Y+)rr=#?%).24V) ` #/%'E),167:>A8T4)6%w*0+./247;9<?;A2BLR gmK!"S%y'(+ -j247;8=)BP gL.']#&(+.026/7:~@DDO> g#)",&16;BmD]M gOy "&{,7.'035{uJG gqF)"8#%)+.24r8R:6>nB!EEQ g&l)"d )G+U-1b27::>ACC g A.)7"$),/3g46:=e>@QD]? git!#H&W= ) 5!#',*J-[048<>BC;d g$!Nu8 gq4)["&)-G.1I368u1w g q.')!i$)M*,i0305:D>AyDR, g  #%v*Q,0Q26;7@C* g $&X+/57:>N(])M!#)'/)E+.n1k347j:G<~AC& gV /!&)+. 379<AB% g]{G!%&F+.24n9W>A.D#g g u  gq)+$'w*,,~13u6 8}:4@\" g %)+-e1 8=7?Bw)U$$ *-/C46U9<?B g = mQ8!R%*<-1 7:=?C)k. &"$e'4).2h7q)GR $)/% 5 79o;u u g  q j)d #T$'*/037:=f?l (TVm$Inter-OfficeMemorandum8UnlessyouareusingaDMAdevice,youcanputalmostanyboardinanyslot.TheCPwon'tworkinthebottomslotunlessyouarrangetogrounditsBPRN/.Thebottom2slotsdon'thaveP2connectors,sothat'sabadplacetoputtheCP,Misc,ormemory.Unlessyouhaveasecondmemoryboard,thereisn'tanyneedforaP2connectoronarunningsystem,butsomeofthediagnosticsrequireit.Coolingisseriousconsideration.TheCPrunshottest,sotrytoleaveanemptyslotaboveit.(Ifyouhaveafullsystem,theCPactuallyrunsslightlycoolerifitisinthemiddleofthestackratherthanthetopboard.Iguessthereistoomuchextraroomontopsotheairdoesn'tgetforcedagainstthechips.)TheDebuggerboardneedstogonexttotheCPboard.Ofcourse,youprobablydon'tneedaDebuggerboardinaproductionsystem.Ifyouhaveseveral10MBor3MBboards,thingscangetprettyconfused.Byconvention,thefirstboardgoesnearerthetopandthelastonegoesnearerthebottom.ThusIsuggestthefollowingarrangementforthenormalsystemwith13MBand110MBboard.(Thereisnothingcriticalaboutthissetup.It'satleastasgoodasmostandbetterthansome.)Slot1:Memory(Top)Slot2:(empty)Slot3:CPSlot4:DebuggerSlot5:(empty)Slot6:MiscSlot7:10MBEthernetSlot8:(empty)Slot9:3MBEthernet(Bottom)Or,ifyouhavenoDebuggerboard:Slot1:Memory(Top)Slot2:(empty)Slot3:CPSlot4:(empty)Slot5:MiscSlot6:10MBEthernetSlot7:(empty)Slot8:3MBEthernetSlot9:(empty)(Bottom)Isuggestthatanother10MBor3MBboardbeplaceddirectlyunderthefirstoneifthatslotisopen.Justtomakelifeinteresting,theEEROMchipsontheMiscboardsforthefirst10machinesstickupsohighthatyouhavetoleaveablankslotabovethem.Stitchweldboardsalsoneedaspareslotbelowthemorwiresgetpopedwhentheycatchonthingsasboardsareinsertedorremoved.BusMasterThereare2socketsatthetopofthebackplaneabovetheleftedgeoftheP1connector.Theyareintendedtoprovideparallelpriorityresolution.ThereshouldbeaDIPof15100ohmresistorsupsidedowninU2.Pin15oftheDIP,thecommonconnectiontoall15resistersgoesintopin8/GNDofthesocket.Pin8oftheDIPhasbeenremovedtosavepower/heat.That'ssf ( vfEq_/) "%&),U.3r6-:@< >AD] g!+y2"%o*S+02r7:?R@vC[ g "&R(*-/35j;??BEZ9 gr!x$%')+-"356<@CX g  {DV)n #m&U(+0246:$<$@mCTo g+= gH2!$)>,o1N568k9;>'BDR g U!d%(*,0`379<=@?BVQ gN)K7 !#&(;*,13 7:h@.CL g  !J)!%*.,03'7>={? H gS!$&)_, /%3h5F_)! )+a-27:9;w>ABD gX $';+Q-/e24`79=?CC gtAiK$k?K$>K$N@f  g<#(} /<3:79:=?pARC H gI "$n&*$,28 96:<>C gH K"c#%c'*-M06l8$;1 BmTVm$Inter-OfficeMemorandum9givingaBus-Granttothetop8boards.DebuggingExtendercardstendtobeabitflakey.Don'tbesurprisedifyouhavetroubleswhenyoutrytouseone.Fortunately,itisquitereasonabletodebugthingswithoutanextendercardbyremovingthetoppanelonthechassisandshufflingboardssothattheoneyouwanttoattackwithascopeisontop.Ifyouaregoingtobedoingalotofdebugging,seeMikeOverton.Hehasanewtoppanelthatletsyougetatthetopboardbutwillkeepyoufromdroppingscrewdriversorfingersintothepowerarea.ItalsohasholesfortheMP.Ifyouuseoneofthese,consideraddingapusherfanontheleftsideofthechassis.Things,especiallytheCP,getreallyhotwithoutit.StitchweldingThe(censored)MultibusStitchweldboardsfromInterconnectionTechnologythatweusedon'thavearealgroundplane.Theyalmostworkwellenough,butyouhavetoberealcarefulofthelayoutandeventhen,youwillprobablygetstabbedinthebackwhenchasingthelastbug.Imayhavesolvedthisproblembymanuallysolderingsomeheavywiresonthebackoftheboardrunningaccrossthewholeboardperpendiculartotheexistinggroundtraces.Beware:ThepinnumbersonP3,P4,andP5ofthestitchweldboardsaretop/bottomreversedfromtheMultibusspecs.Theycorrespondtothepinnumbersonthe3Mribboncableconnectors.SkeletonsintheclosetTheMolexconnectorsbringingpowertothebackplaneareaveryweaklinkonaheavilyloadedsystem.Keepaneyeonthem.TheMultibusAandMultibusBPROMsontheCParerunningwayoverspecs.(Keepyourfingerscrossed.)Sometimes,memoryboardsthatrunMemTestforevergetblinking91severyfewhourswhenrunningrealcode.(Idon'thaveanyideas.)The3Com10MBEthernetboardthatweusedoesn'tworkonAstranetwithsomelengthsoffiber.(AnAstranetissubtelydiffernetfromanEthernet.ThinkofitasashortEthernetwithverylongdropcables.Thedifferenceisinthetimingbetweenwhenaboardsendsapacket,andwhenitarrivesbackonthereceivingside.)IthinktheproblemisasimplePROMbug,but3Comisn'tinterestedinfixingit.TheIntelPROMsweusedforCPcontrolstoreonthefirst10machineswerequiteflakey.TheyseemedhappierifVCCwasover5volts,orrather,theywereflakierwhenVCCwaslow.TheCIOchipsontheMISCboardusedforthepulsesclockaren'tspecedtoreadcleanlywhentheyarerunningincountermode.Theresultwouldbeoccasionalconfusionfromtheclocks.Inparticular,thetimeofdayclockwouldtakewildjumps.Ihaven'tseenthisproblemsinceItrackeddownthefineprint.Ifitcomesback,Ithinkthethingtodoischangethepulsesclocktousethetimermode(fromzClk)andignorethereducedperiodbeforethepulsesclocksf ( vfEq_/ glz $sX gqUB)! #&'+-357;9@D]S gX ( $8 +,1 51:K@CTL* g<oQ!O#&),0 6 =?D<J gM "%F(L),/13l7P<A`BH g6=!o&X ,.137:!?,uE g qB=)  %*^-7 ?oB[D@ gDn& #'+v.d36*8<)=?B> g7!$B*+,13}59Q=BD=G g:)'!^/"$*0w47;v=s?CD9% g^= $ -a/1o6z;Cw6)cl #$%(,*@+. 4P8: A5 gy %'N)+1Z3M58"<]? s.e gq+)l U"'$(+O14B5{8!) gS * $&) /] $&)+0g36;>BV gg %)+ 15689:>YC` g5 $H%'*.479,=?ABa g"3 \&;)*.0679p=>+qAuD g~x q])pc qc!$(,<.P035;? B gpEq+ #%%(*.15N9p=Q>q@6Bs) +?!j%j(*-\15$9=?JBm gCzR'"O&)-14 :A&D% g Q #X&+..21K56;>A } g\q"$#$),-1)3|78:<@B g%3 !%(],/4J8<?ZC TVm$Inter-OfficeMemorandum10overflows.MultibusIfyouaregoingfixanythinginsideaDicentra,youhavetounderstandhowaMultibusworks.TheMultibusboardsare6.75by12inches.Thereare2connectorsonthebackplane.ThebigoneiscalledP1,andthesmalleroneiscalledP2.TheP2connectorissemi-optional.Itonlycontainsthe4highorderaddressbits.YoucanbuildaDicentrasystemwithoutanyP2connectors,butitwillbelimitedtoonemegabyte(1/2megaword,oneboard)ofmemory.Figure1showsthepinassignmentsfortheMultibussignalsastheyareusedontheprints.(Theextra1xxand2xonthepinnumberstellthedesignautomationsystemwhichconnectortouse.)TheP1connectorprovides+5,+12,-12,and-5.(The-5isn'tmentionedinmycopyoftheIntelMultibusspecs,butwehaveseveralboardsthatexpectitonpins9and10,sothat'swhereitgoes.)Wedon'tprovideanyfancypower(batterybackup,analog...)ontheP2connector.AddressandDataThedatabusis16bitswide.IndividualbitsarenamedDATF/throughDAT0/.ThesignalsarelowTrue,TRI-State,buttherearesmallpullupsonthebackplanesothingsfloathigh(0)reliably.Beware:DAT0/istheLSB.That'stheIntelway,butitisbackwardsfrommostschematicsthatcomeoutofPARC.Theaddressbusis24bitswide.It'sabyteaddress,notawordaddress.IndividualbitsarenamedAD17/throughADR0/.Again,thesignalsarelowTrue,TRI-State,andthereisasmallpulluponthebackplane.Thefirst20addressbitsareontheP1connector.Thehigh4areontheP2connector.Ifyoudon'thaveanyP2connectors,youarelimitedto1megabyteofmainmemory.(That'soneboard.)EvenifyoudohaveaP2connector,Mesacan'tusemorethan2megabytesofmemory.Thelimitisinthemapflagformat.Theinitializationmicrocodeignoresanymemorybeyondthefirst2megabytes.Itisalsosmartenoughtostopafter1megabyteiftheP2connectorismissing.Beware:Again,ADR0/istheLSB...Beware:Theaddressonthebusisabyteaddress.Mesaiswordoriented.SoiseverythingintheCP.Mostaddressesyouwillseewhendebuggingwillbewordaddresses.Whenyougetanewhardwarewidget,Isuggestthatyoutranslatethebyteaddressesinthedocumentationintowordaddressesassoonaspossible,andscribbletheresultsbackintothedocumentationasareminder.Duringwordtransfers,theloworderbyteistheevenone.Read/WritecyclesSeeFigure2forthebasictimingdiagrams.Everythinginvolvedwithdatatransfersisasynchronous.Foramemoryreadoperation,theprocessorputstheaddressonthebus,waitsfor(atleast)50nsofsetuptime,andthenbringsMRDC/low.Theboardthatrecognizesitsaddressputsthesf@ (? vfEq_/ g sX gqUB)%!&'Z-v0K35| <?A+S gQ) ~!#%*[.f01 8:=Y D<Ox gc"%z&*-$/18C9 BCM gu 8# %(V+,2O6;>? L) g>;$'+.005M7I)3 %9'u)/4'58;3>n@rBH gM;!'),c0 8<@F_ gC)/ <#=&),.236=?AE[B< g.'$ $E(-r0Q4680;:<?GACi@ gckR @"&^*p/u4 :N<9>|@f u=F g'q9)^ '4)+0q5:?B8O gF "@$(V-S/k18r:H>rAD6 gw4,)w`/ % 'c*-0N13(9=@` 2 g9q0 )#,%&)/1|263;w BD.b g =$&+b-0M3 :=e@BQCv, g[ B'" #(+.024 ;S>8AkBE+ g ""%z' .138:X;AC)l g6e!#b&$(4+,. 596<?BE' g!y ",#&;)V,03 ;BL& g 3 'U(*Z-8167:>'?mE$v g#w!)k'!s)o7 A"$+%d(M-g125;f=|> En g{u "N%,F.04 :<>:@CDO1 g\> "(F*-35Z7 @C gC$5 %(,J/2W4 =?k@q)z a"a&)&*,07u g qo))J %, 3X94<?E g L)Uh !$;*G-E/468;?5AkCu g@X%"K'*-14i ;<ADTVm$.Inter-OfficeMemorandum11dataonthebusandpullsdownonXACK/.WhentheprocessornoticesthatXACK/hasgonelow,itlatchesthatdataandraisesMRDC/,andafter50nsofholdtime,itstopsdrivingtheaddress.WhentherespondingboardnoticesthatMRDC/isnolongerlow,itletsgoofXACK/andthedata.Towritememory,theprocessorputstheaddressanddataonthebus,waitsfor(atleast)50nsofsetuptime,andthenbringsMWTC/low.TheboardthatrecognizesitsaddressdoesthewriteandthenpullsdownonXACK/.(ItcanlatchthedataandreturnXACK/earlierifitissmartenough.)WhentheprocessornoticesXACK/hasgonelow,itraisesMWTC/,andafter50nsofholdtime,itstopsdrivingtheaddress.WhentherespondingboardnoticesthatMWTC/isnolongerlow,itletsgoofXACK/..Beware:ThenormalDicentramemoryboardsdonotsupportbyteaddressing.SomeDMAcontrollersrequirethis.Tousethosecontrollers,youhavetobuyabrand-Xmemoryboard.ReadandwritestoIOspacearethesameexceptthattheprocessoruses2differentcontrolsignals:IORC/forreadingandIOWC/forwriting.AllIOoperationscouldhavebeendonewithmemorymapped"memory"readsandwrites,butbyconvention,mostIOdevicesarelocatedinIOaddressspace.SeeMultibusAddresses.mesaforthenormaladdressassignments.Forwordtransfers,BHEN/islowandADR0/ishigh-theaddresspointstotheevenbyteoftheword.Forbytetransfers,BHEN/ishigh,ADR0/isusedtoselectodd/evenbytes,andthedataisontheloworderpartofthebus(DAT7/throughDAT0/).Ifnoboardresponds,thingswillhangforever.ThereisatimerontheMiscboardthatgeneratesafakeXACK/afterabout12microseconds.TheMiscboardalsolatchesmanyofthesignalsthatwereonthebuseachtimeitgeneratesafakeXACK/.ShadowsSomeIOdevices,inparticularthe3Com10MBEthernetboardthatweuse,fillupalotofIOaddressspace.Sincemanyboardsonlydecode16addressbits,thingscouldeasilygetquitecrowded.(Remember,that's16bitsofbyteaddressing,soitisonlyhalfthesizeyoumightthink.)Fortunately,thereisahandytrick.The3Comboardswilldecode20or24addressbits.ThusAD13throughAD10canbeusedforboardselectionandalltheboardswillsharethesamewindowinthesmall16bitaddressspace.Intermsofthe16bitaddressspace,thesecondandthirdboardswillbeintheshadowofthefirstboard.InterruptsThereare8opencollectorinterruptlines:INT7/throughINT0/.ApairofPALsontheCPwatchtheselines,andgenerateamicrocodeinterrupt/trapwhenevertheychange.Themicrocodethenscanstheinterruptlines,andprocessestheonesthatwentdown.(It'slikewatchingfordowntransitionsonakeyboard.)Themicrocode(inexpensivePROM)usesINT0fortheProcesstimeoutclockfromtheMiscboard.INT4isalsoknownbythephonelinedriverinthePROM.INT2issharedbyallthe10MBethernetboards.INT3issharedbyallthe3MBethernetboards.ThesedefinitionsareinDicentraInputOutput.mesa.BusMaster,DMATheMultibusrulesprovidetwowaystoexchangeBusMastership:SerialandParallel.Fortunately,Gatewaysdon'tneedtodothissoyoudon'treallyneedtoreallyunderstandthissection.Beware:Ifyouaregoingtobuyasimplecontroller,Istronglysuggestyouavoid"smart"sf@ (? vfEq_/ gjn`p 9"=', .j4|9;AEC] g~"^(+[.237+:<<?D[ g  "'*E/1H3A7x:d;> @AZ9 g~W)dC#k&(-0358i;l>AOCuV g6E "*'*-14P :<ADTo g: $&)e,//2;49.>BDKER g='"'Y,/I257:ACQ g2S w!%#v(,/ 69>ACOy g kwL)w<!'=+-0@5/88 ?DC*KW g " )y,/703s49?qH)xw"; #=%)-`0+28;<BaG4 gm] %(@-g/2 8<@'CE g`!%(-F024 9=k?DC g% |/14D9= Aj)H % a!$X',-r0138<>s@D? g-@] Q%'*/1D46H:@cD\> g7== "$',2*;)X!$d'-)1O24-7:&<@*DF9 gm0#$ -037:?6BD8R g\!#$I%+,/u5 gq1)3 "$m(,2D689;(=@B%CLE[0 gT'#&+-y2l5o9=eA8C.e gx d s#>%!(Z /1347:=g@<C, g ?#&)-2 49;v=@?+D+ g5 k"~%(;,T2479>&@D)o g  %)+a/)03:575<@&B' gL$&Z(+u$y g q!*)>r %).=38g:<>BD g= #%, 5(;>D< gU/#6' *0>26N9\<A[Dh4 gN 6!Q" )},j3,5hp;44 g !o#%qu g)Iq)?e!I$3')/2 :>A g C5!#^%s($),0_4979b=; Dr Q gw )BuP!#%-) 01Z6;}>8A TVm$Inter-OfficeMemorandum12boardsthatuseDMAunlessyoureallyneedtheperformance.IfyouaregoingtouseDMA,youmustbepreparedtoreadthespecsanddigintothefineprint.Basically,BPRN/(BusPriorityIn)needstobelowbeforeaboardcanusetheBus.Inserialmode,thefirst/topBPRN/iswiredtogroundandBPRO/(BusPriorityOut)ofeachboardisconnectedtoBPRN/ofthenextboard.AnyboardthatwantstousethebusraisesBPRO/tolockoutallthedownstreamboards.Anyboardthatdoesn'twanttousememorycopiesBPRN/toBPRO/.Inparallelmode,BREQ/(BusRequest)islowifaboardwantstousethebusandBPRN/islowifaboardcanusethebus.BUSY/andBCLK/areusedbythebusmasterlogic.Beware:ThereisabugontheCPboard.It'sdoesn'tworkatfullspeedwithDMAdevices.ThechassiscomessetupforParallelpriorityresolution,butthingsgetabitconfusedbecausetheCPdoesn'tgroundBREQ/andtheMiscboardinternallyjumpersBPRN/toBPRO/.ThesolutiontothismessistoassumethatthereisonlyonebusmasterandgroundallBPRN/onallslots.ThisisdonebyremovingtheU1andU2onthebackplane(LS148,LS138),andinsertinga15resistorDIPupsidedownintoU2sothatitpullsdownontheBPRN/thatisprewiredtothefirst8boards.Beware:Don'tputtheCPBoardinthebottomslot.Itdoesn'thaveanyBPRN/.Thefirst10machinesaresetuptousepinsonthebackplaneforserialpriority.TheyarealljumperedtoGNDsoyoucanputtheCPinanyslot.OddsandEndsINIT/islowwhenevertheBootButtonispushed.It'salsosetbytheMiscboardduringpoweruporbysoftwarecommand.It'sisusedtoreinitializeeverything.(Ofcourse,ifthesoftwareturnsiton,"reinitialize"bettermeanletgoofthingslikeINIT/.)CCLK/isa100nsclockthat'salwaysrunning.ItcomesfromtheMiscboard.PROMsandPALsThePROMtechnologyaroundPARCisabitoldfashioned.ExceptforthePROMsontheT1board,allthesmallPROMsandPALsontheDicentrawerewrittenintheAltoenvironment.ThePROMscomefromBCPLprogramsthatgenerateMBfilesdirectly.ThePALsgetturnedintoMBfilesbyDonCurry'sPALASM.ItisanAltoMesaprogram.(I'mpartwaythroughtranslatingitintoCedar.)TheMBfileforthePROMsontheT1boardcomefromaCedarprogram.AlltheMBfilesgetturnedintorealPROMsbyPNewrunningonanAltotalkingtoaPrologM920.Inthelab,nearthePROMsblowerthereisadiskmarked"DicentraPROMs".IthaseverythingneededtomakemorePROMs.BuildingGermPROMsBuildingGermPROMsisquiteeasy.First,youmaketheGerm.ItcanbetestedwithFetch.burdock.ThenyouuseMakeGermMBtoturnDicentra.germintoGerm.mb.(AllthefineprintisincludedinNewGerm.cm.)sf@ (? vfEw_, g n$.'W) q\)P]p!$o')/1'496:<? ADG[ g> \#&I*A,.05,6l:{=?BEEYb g)z!#f'_)1.06&9y>BCW g}u!$'0+.259;>"@CUV gX #|(6+!/16[9;5=BTl g?q#(,13U57g8<@B7DR g b$"6$'m),24:&<?BD}Q gwN)kN!$8([*/R24^6:s=oAYqL')Md $) 0269:2<7AJ g*"%(t,t 27=>D<H gl!$Z')d,/>16Z9=?EG1 g:. ! #O%(*U,>.49>AoE g }HE}"Y$&w)I*.136>;[>,?EeC gwAg)k:Q#^%'P+.0P48:q>)"$.&)+-4R6:?\BE$=E gK;A!$!&u(#*u9 gq6) q#({)//14v68;)>B5 g7#&X'+g-J 46 ;>DC D3X gi !7%/(*,.25W0)aj"&z,-157t:u*? gs*?*?u>*?*?%s*?*?q&)p&&q& !& 'x(*-) $u)pN$u$uq$u$u!#4')m+p/d$u$u0 q2$u$u3p6$u$u7/q8$u$u9;> C" g-` !p#""$q'Y""(u,1p/""0dq"3'9M<.pA""Bq"D&!' gpW!'!'q!'!'yp !'!'!q!'"%'*/t67x8:=A. gk !$)pqPpVq!$-&J*A-1R2{6)npq"Op$%q(b)]+L/Z46}8a;m?AB gf)pffqHff1#' (Y)c,11p7Hff7q:ff;6<=@P  g0p&qup gyppmu8ppq!)pE!!q!!#m' *-14s9 :=?C z g r! ("), 58?*ADG g; TVm$,Inter-OfficeMemorandum13ThenyoutakeGerm.mbovertothePROMblower.ThequirkhereisthatPNewcan'tblow2764s.Actually,itblowsthemjustfine,itjustdiesontheverifypass.So,thereare3commandfiles,oneforeachPROM.TheyarecalledGerm0,Germ1,andGerm2.Expecta"BadBit"messagewheneachoneisfinished.TheEmulatorPROMsontheCPboardknowsthattheGermfitsintoexactly32764s,soifyourGermoverflowsthe3rdPROM,youareintrouble.(IfyoumanagetoshrinktheGermbelow3chips,youcanuseablankoneinthe3rdsocket.)BuildingCPEmulatorPROMsTheproblemisthattheyareexpensive,soyouwanttobereasonablysureyouhavethingsrightbeforeyoumakemanysets.ThefirststepistomakethenewEmulatormicrocode.YoucantestitwithEmulator.burdock.Then,useMakeControlStoreMBtoturnEmulator.fbintoControlStore.mb.(AllthefineprintisinEmulator.cm.)Onceyouarehappywithyournewmicrocode,takeControlStore.mbtothePROMblower.Thereare2commandfilesforblowingCSPROMs.CS2732.cmmakesasetof62732s.(Remember,youneedtouseaslowercrystalandaspecialCPBankPROMtouse2732sontheCPboard.)Unlessyourapplicationisveryspeedcritical,youshouldbeabletodoalotoftestingwithasetofthesePROMs.Makingthereal(bipolar)PROMsisquitetricky.Thefirstproblemisthattheaddresspinsarelabeleddifferentlybetweena3632anda2732.(A10andA11areswapped.OnaRAMthiswouldn'tmatter.)That'snotabigproblem.PNewcanrecoverfromthingslikethat.CS3632.cmisacommandfilethatwillmakeasetof63632s.Unfortunately,Intelneverreallyfiguredouthowtomakethesechips.Ithinktheyhavebeendropped.Fortunately,AMD's27S43isanalternate.Unfortunately,Prologdoesn'tmaketheadapterstoblowthem.So...Tomake27S43s,Iusethecommandfiletomake3632s,butinstead,makeasetof2732s.(Usethewidgetsforblowing2732s.Thecommandfiledoesn'tknowwhatkindofchipyouareblowing.)Thensendthissetofchipsoutandgetthemcopiedinto27S43s.Notethatthecopyisalogicalcopy.Theyreadthe2732susingthe2732pinout,andwritethe27S43susingthe27S43pinout.Thatswapstheaddressbits.Thusyouhavetosendthem2732swrittenwiththeaddressbitspreunswapped.Thatmeansyoucan'ttestthechipsyousendthem.Whenyougetasamplesetof27S43sback,youcanuseBurdocktocomparethemwiththerawEmulator.fb.TherecipeisinthesectionondebuggingtheCP.SoftwareDicentrasruntheKlamathinstructionset.IfyouhaveMesacodethatrunsunderUtilityPilot,itshouldbeprettyeasytogetitrunningonaDicentra.BuildingBootfilesTheonlypartaboutbuildingabootfilethatwillbeunfamiliartomostMesaprogrammersisMakeBoot.It'serrormessagesaresometimesabitobscure.Remember,forUtilityPilot,everythingmustbelockedinmemorysomehow.Otherwiseyouget915edfromPilotControlduringinitialization.Sometimesitishardtofigureoutwhichmoduleitiscomplainingabout.Usually,ascanthroughtheloadmapwilluncoversomethingfishy.sf@ (? vfEq_/)re!#ep%_/_/&fq_/).1Z5 89?CEV g@peVV q"VV#&)*032Q5+:c<4@CTo gtLLv"L$&)+uQ g>yEQ Q uQ Q qM)! '),6/1?3/ :=?BL* gs>I)P!"( /2p47>8p;gH gV ",%* ,/:f=+?BHEF` g C)$H"% ,/:;p>5CC>qCB+B> gCp#p%B>B>&q)AB>B>)*{1|568:;*?& @ g4l8!#%)p/@@/q@347o;O=l?BL> gA e #(+04275B79:W<{>FBE=H g=p=H=Hnq/=H=H:)Jzp7::q"::#%.(- /28d9<?$D9% g ]! $\'(R+/l2.5&7=?pA*9%9%Aq9%Dr7~ gGg!Y'1+I-26:$<?5 g  pf!!"Q$t&3'n+ 48.;?D4/ gpON"%S(,L2T :L?UCE#2 g d  $(*0Y25n0 )O]_!#*,.M26V8>AC%E[.e gZ]"')*027;>B<D, g4{!#%)1+.0w4,,5#q,8;@DF+ gNQ $)&*.L04'69Ba' gm #m&*-1359<7?s%M)8&G!&2),v.1d68>"AD# g r! #(*"03;s gq).g &(l),[/}36#8;?  g 9*-1( ~%'(u gFqt)!F"k%'*-o/\ 67;>  g"u"$+-&/5P=? % g Sa$+2357;?= ~ g6 D!#+&z(:,O.28 9r: B g;#@%+-1 TVm$2Inter-OfficeMemorandum14IusuallylockthingsinmemorybylettingtheBinderPACKthemtogetherwithsomethingelsethatisalreadylocked.AfewALLsintheBootMesafilemightbesimpler,butI'veneverexploredthatapproach.ScantheMakeBootdocumentationintheMesaUser'sGuide,and/oruseOscarorFlukeforexamples.IalsoletSTARTtrapsdomuchoftheinitializationwork.Aliveisamodulethat'snamedUtilityPilotClientImplandEXPORTSPilotClient.Run.UtilityPilot.bootmesamakesUtilityPilotClientImplRESIDENT,sothatspecificnamemustbeused.(YouhavetouseaDIRECTORYstatementinyourconfigtodancearoundthenamechange.)AliveincludesthecodethatbouncesthedotintheMPandwatchestheAlt-BootbuttontogetyoutoCoPilot.Itdoesn'tdoanythingsilly.Ifyouusethisapproach,thenitistrivialtoaddanewmoduletoanexistingbootfile.Yournewmodule'snamewillappearthreetimesinaconfig:firsttoaddaninstanceofittotheconfig,secondtoPACKitwithsomethingthat'salreadylockedinmemory,andthirdtogetitSTARTed.WhensettingupanewDicentrabootfile,youhavetoaddittosomeserver'sbootfilelist.Getagatewaywizardtohelpyou.Onceyouhavebuiltabootfile,youhavetofixitschecksum,andsendittoaserver.InormallymakeacommandfilethatdoestheBind,MakeBoot,FixChecksumsteps,andanothercommandfiletoFTPthenewfiletothebootserver.(Ifyouarebootingfroma3MBnet,youneedtoinsertanothersteptoRunPilotBootToEtherBoottomakethePupformatbootfile.)AccessingtheMultibusDicentraInputOutputcontainsalltheopcodesneededtoaccesstheMultibus.MultibusAddressescontainstheIOaddressesofallthenormalIOdevices.TheInputandOutputopcodesuseaLONGPOINTERtotransferaWORDofdatato/fromIOspace.RawReadandRawWritearesimilar,buttheytransferto/frommemoryratherthanIOspace.Theyarenormallyusedtoaccesshyperspace.Therearealso8specialMesaopcodestodobytetransfersofevenandoddbytestohyperspaceorIOspace.Thereare2specialMesaopcodestoBLTdatato/fromhyperspace,2moretoBLTdatato/fromIOspace,and2moretoBLTdatato/fromasinglewordinIOspace.(Thelatter2areusedbythe3MBethernetboard-thewholepacketispouredthroughasinglelocation.)Thehyperspaceopcodescanalsobeusedtoaccessmainmemorywithoutgoingthroughthemap,butyouprobablydon'twanttodothat.SeeDicentraInputOutput.mesa,MiscDicentra.mc,orIOCopy.mcforthefineprint.RPCThereisversionofCedar'sRPCRuntimethatrun'sonKlamath/Calaveras.YoucanrunLupine(intheMesamode)usingCedaronyourDoradotogeneratethestubs,andthenFTPthemtoaDLiontoCompiletheDicentraversion.Remember,therearen'tanyREFsontheDicentra.Thingsarestraightforwardifyoudon'thaveanyvariablelengthdataorotherthingsthatrequirestorage.ThetrickypartisthethingsthatwouldgetgarbagecollectedinCedar.OntheDicentra,theyarecoppiedoverwhenyoumakethecall.TheygetFREEdwhenyoureturntothestub.Irememberthisasfollows:Thecallerownsthedata,andcan'tpassownershiptoyou.PeekPokeServerFlukeDicentra.bootisasimplePeek/Pokeserver.ItusesRPCviatheMultibusinterface.sf@ (? vfEq_/):#H%M),p0_/_/1;q_/4M7=M@q] g6`p!]]"q$]]%#&)a/2p68=@{CI[ g4!}(G 13w6[[7e9> qAs[[BmZ9 gwW)G)p:WWqW '#$'W /O3968x9>BV gp ZVV!qV'3BTo gpLToTo q "ToTo!P#e&+/359=A$C$EpR gqR"$|(g-/j38<$A{CQ g#k"E'U)/63527j:;@BVOy gnL)9s"$0%)+.|/279;ADSKV g$2'+-P.3J677:<B-CEeI gWpIIIqIX!(|,,15o7"<?CDH gp HH\qvHHE);#T&):+/,0346: >BDC g)SAi)}!#&*#+.069=>{@EAF ? g5n"%(-+2 ;?SB > g7rc!#%)-|/z2449=>.AD]Bu9$ gq5)P#&)0 58=@4- gB "!(4)+.=251)#%p&11'1*q102F7ep8119q1<>A0 g&"% *,/4:A?C.c g9r!#r' / 35u8L9>A, g%i b#.&(l /1I3c7n;m=>Cj+ gQ &%'Q*,/279>@AEe)m g  }")$D(O+/20e257:J=C' g 07$m%) /2 :?B7E#& g|2#'-/x358b>JAEe$w gn)%/19%;b=@u!( gq)L )i,Y/2>AD~1 g>s!%'+10J27:=@C g t*!'i,457;>BD gqp#$|'@*.506&:m=~?OB; g4"$&f*~-K1x38>@GD gM"b&(,w.1557z<@2B g0!D zw%&(,w/2W58;?EoE gqzEEu gaq )E"?)9-/25j7:?  TVm$HInter-OfficeMemorandum15DebuggerBoardTheDebuggerboardcanbeusedfordebuggingmicrocode,andalsoasControlStoreRAMsothatmicrocodecanbeloadedonthefly.Sofar,alltheoperationalprogramswillrunfromnormalControlStorePROMs,soproductionsystemsdon'tneedaDebuggerboard.SwitchesOntheleftswitch,1,2and8shouldbeopen/off.Ontherightswitch,theyshouldallbeopen/off.OverviewandProgrammingMuchofthisdiscussionassumesthatyouarereasonablyfamiliarwiththeCPboard.Normally,theDebuggerboardgetsitsclockfromtheCP.YoucanalsoworkonaDebuggerboardwithoutaCPbyinstallingacrystalinthesocketneartheBurdockconnector.(Normally,thatsocketshouldbeempty.)Thepairof50pinconnectorsarefor(short)ribboncablejumperstotheCPboard.The26pinconnectoronthebackofthecardisfortheBurdockcable.TheotherendplugsintotheBurdockportonaDLionIOPboard.(That'sthesocketatthebottomedgeofthefrontoftheIOPcard.It'soutsideofthestiffener.)Thepinoutwasintendedtouseribboncables,butthereistoomuchcrosstalkforthattowork.TheBurdockportonaDLionissetuptoconnectdirectlytoan8255.Thereare8databits,2addressbits,achipselect,readandwritestrobes,andaresetline.(TheIOPsocketalsohasabootlineandaninterruptrequest,buttheyareonlyusedwhenyouaredebuggingtheDLion.)TheDLioncanreadandwrite4bytewideregisters,sotheDebuggerboardhas4bytewideregistersthatcanbereadandwritten.Register0isthecommandandstatusregister.Register1isthebytewidedatapathtothe2950ontheCP.Register3is2nibblescalledsectionandregister.It'sapointerusedtoaimregister3astherightplace.(Yes,the"register"nameisconfusing.)Section0istheControlStore.Section1istheHistoryBuffer.Register3isthedatapathto/fromtherestofthedebuggerboard.Page18oftheprintsisrequiredreadingatthispoint.WhiletheCPisrunning,accesstoRegisters2and3isswitchedtotheMultibuspath.ThereisnothingtrickyintheStatusbits.Bit0ishardwiredtoa0sothatBurdockcancatchthecasewhereyouaretryingtouseBurdockDLionwhenyoushouldbeusingBurdockDicentra.Bit1(run)ishighiftheCPisrunning.Bit2(HBDN)ishighiftheHistoryBufferisdone.Bit3(BFULL)ishighiftheCPhasn'ttakenitsdatabytefromthe2950yet.Bit4(AFULL)ishighiftheCPhasputabyteforBurdockintothe2950.Bits5,6,and7areC1,C2,andC3fromtheCP.Ifanythingotherthanoneofthemishigh,somethingisbrokenorconfused.ThereareafewtrickypartsintheControlbits.Bit7(INIT)activatesINIT/ontheMultibusbackplane.That'stheBootline.Bit6(CSA)usestheCASregisterontheDebuggerboardtoaddressControlStoreRAMandROM.Whenitisoff,NIAfromtheCPdrivestheControlStoreaddresses.Bit5(RAM)disablestheControlStorePROMsontheCPandactivatestheControlStoreRAMsontheDebuggerboard.Bits1,2,and3(STOP,CLICK,andCYCLE)areusedtohalttheCP.STOPwillstoptheCPimmediately,evenifitisinthemiddleofaClick.CLICKstopsitattheendofthecurrentclick,butONLYIFtheMultibuswillbeidleduringthenextclick.CYCLEstopsitattheendofthecurrentinstruction.Theycanalsobeusedforsf@ (? vfEs_ gq[)E. #%, 3648:?C)Z g8hf #%p'),.0 80>QA CXc g$9pXcXcqBXcXc g 'n,n03^4:uU gqQ) !&(~.136;>C'E#P guL gZ qI)+ #U&#(+. 27':B<>G)(" $&)-N/2*5"7:K=?@E\ g\f !&2'*;.g139j @ C g5dA9)w !$&W*/D28%9<3>>)8~ $%(+,t.06}:^=*@Cj= g5!$h(-@/35J7<_?AKC;o gt\ ! ( */=179C;@(D9 g\7t"B#7M)}mj!#S&(-24769=?AD5 g { #',./366B9<@CwE3 gI!$Y'f),036n8?vA2W gY #!q$( -/208<?K@C0 g#..4)> "&+1I236[9q<?CD, ge+ %).1R69:X?<BD]* gew")$ +.0q 7<=?A)> gF *~#'(s)*-+03'8Q:=">A ' g+$)+3-158&:r;A_Ee% gN:o /"(w#t)B"'&X)i+- .1578:!;>D! gsJ?m!8%'* 48<ACj % gx #0$')^*0i239;*>X?B)~ g.X #%.')-1}3N6I9P<?B?D g ]D! #$'*/2o48l;.<>IAB5D/ g _$$'+-/3>48Q? @EP g )K[!#(+-.3_8<>A+e g Uf "$$(|+-1c6V8p:AZEe gpak!A%)+Y,/26e8;U?A g "n$'H,l05u79<[?!Do gu tr$#(j+$,..02 6D g["6S #%e' /3=457n9!;@2AC gz]c!!H&),<025K;;=?B y g|]!Y#&|(;*/q 6:9<?AD TVm$yInter-OfficeMemorandum16singlestepping.IfyouwritethestopbitswhentheCPisalreadystopped,itwilltaketheappropiatesizedstep.StoppingamachineatotherthantheendofaclickmayletaMultibusdatatransfertimeout.SingleCLICKdoesn'treallymeanquitethat.ItkeepsgoinguntiltheMultibusmachinerycanbestoppedatasafeplace.Normally,that'sonlyafewClicks,butloopsreferencingmemorymaytakealotlonger,orevenforever.ToStoptheCP,BurdockfirsttriesSingleCLICK.Ifthatseemstotaketoolong,ittriesSingleCYCLE.Ifthathangs,youareprobablyinthemiddleofaMultibusreferencetoalocationthatdoesn'texistandyourMiscboardisn'ttimingthingsout.(Perhapsitisn'tpluggedin?).BurdockwillthenswitchtojustplainSTOP.Section0istheControlStore(CS)portionoftheboard.IthasRAMtoholdupto16Kmicroinstructions.EachbankofRAMchipsholds4Kmicroinstructions.Youcanpluginupto4banks.Youonlyneedonefordebugging.TheCSsectionhas16registers.Alltheinterestingonesareread/writesoitisquiteeasytocheckthingsout.Registers0and1aretheCSAregister.ItisusedtoaddressControlStoreRAMonthedebuggerboardandROMontheCP.Registers2through7makeupthe48bitwordofamicroinstruction.TheCPshouldbestoppedwhileyouarewritingcontrolstoretoavoidparityerrors.Register8and9areNIAfromtheCP.(BesurethattheCSAbitintheControlregisterisofforyouwillreadtheCSAregisterratherthanNIA.)Register10(and11through15)iscalledTemp.It'sneededasaholdingregisterwhenreadingthingsfromtheMultibus,butitisalsoahandywaytocheckouttheinternaldatabusfromBurdock.ReadingaCSregisterautomaticallyadjuststheCSregistertopointtothenextinterestingregister.ThisallowsBurdocktoreadawholemicroinstructioninoneblocktransferratherthanhavingtoreadabyte,advancetheregister,readthenextbyte...Seethearrowsnexttothechartonpage18.Similarly,theCSAregisterisbumpedwhentheCSregisterisautomaticallyswitchedfrom8(lastbyteofamicroinstruction)to0(MSBofCSA)soyoucanwriteseveralmicroinstructionsinasinglecalltothe(slow)IOP.ToreadtheCP'sPC,stoptheCP,turnoffCSA,andthenreadCSregisters8and9.ToreadawordfromtheCP'sControlStorePROM,turnoffRAM,turnonCSA,writethedesiredaddressintoCSregsiters0and1,andread/writeCSregisters2through7.TotheControlStoreRAMontheDebuggerboard,turnonRAM,turnonCSA,writethedesiredaddressintoCSregsiters0and1,andread/writeCSregisters2through7.TheDebuggerboardcanforcetheCPtoexecuteanyinstruction.Bewarethisisabittrickybecauseofpipelineing.Todothis,stoptheCP,readsomelocationfromCPRAM,writethedesiredinstructionthere,setCSAtopointtoit,andsinglecycletheCP.Nowrestoretheinstructiontothelocationyouborrowed.Yourinstructionhasn'tbeenexecutedyet,butithasbeenloadedintoMIR.Thenextinstructionexecutedwillbethedesiredone,butitwillalsoloadanotherinstructionintoMIR.BesurethatNIAorCSAispointingataninstructionyoulike.Usingthistechnique,youcanwritetheCP'sPCbyexecutingaGOTO[xx]instruction.Section1istheHistoryBuffer(HB)portionoftheboard.Itisa256wordby24bitlogicanalyzer.Each24bitwordholdsthe16bitPCfromtheCPand8extrabits.(Theextrabitsarewonderful-morelater.)WhiletheHistoryBufferisarmed,thecurrentwordiswrittenoneachclocktick.Oninterestingclocks,theaddressisadvancedtopointtothenextword.Whileallthisishappening,thematcherislookingforaninteresingPC.Whenitfindsone,theHBgetstriggered.AftertheHBistriggered,itwaitsforNmoreadvances,andthendisarmsitselfandsetsHBDone.TheNintheprevioussentenceisacriticalconcept.IfNisbig,thememoryendsupholdingmostlyeventsafterthetrigger.IfNissmall,thememorywillcontaineventsbeforethetriggerpoint.Register0isHBAddr.It'susedtoread/writetheHBmemory.Readingregisters1,2,andsf@ (? vfEq_/ gWE!$'+.02L7W=>AD] g P !?&(x,&/Z146U7:=?A+[ glwYe)^p5!$(^+- 048:k@[W guQ0%)F,R-o04q6: AV g  %2't*-F0 58;@ETo g'd!%+a,/36s8>{@BlR g&WEI.#l&@+.;04;7;>BQ g4;4w!'),125o8N)cU}"/%~*p,<.347#;"<@'BMDL gp +$'+e-8;>zACQEeKW g o X H)?F& "%(' .61`3 :m<,=|>BgEeG4 gawv!"%K'+,124*7~9E>GCuE g_s!%'*B,2409u:>y@CDC g ) #F')/7358M=AEeB> gAT:"\#&)h,/d2*47:=G@BD@ gp$!j$&*U/>3V6:@AE/> gb*!<&7()t.37<AD=H g) "$*h,147y::)4 %*7,.359@:=cw@}::@ q9& gu $#?$i(w24h7:?C7~ g} P!&),:/@3L58/<?A?C5 gX W$ %w*.q0279 Am40 g.s(3*A+092R6}8;>B2 g. |"*$(0 )a> "w%4(J*.H14G7s9?A@COD.f gvm!%*-/368<?BK, gA Cc # *=,v1289<>oCu+ gbwW"$)3,G.]258<AD)p gC #(j).&)Q?"6$&(~-k0 7,<>?AC3%M go A_"o%'*-16:\<A D# gj "$h(B*+,/3,69s,.1?358;t>B'D? gy!&+,13|8B;=0AC g5 !#(w**q0157Q9<@E$ g w"8q` %("* 0u3-7Q8<3?CADGwI gqIIx(7 "$X'*7+/58;@D] g 3#()+/46n8 9o<>tC g|6t!&()+0/)169>B S g+ )HO"$ +v-0t6B;A0BD] lTVm$Inter-OfficeMemorandum173gets24bitsfromthememory.Writingregister1,writesthecurrentPC(NIAorCSA)intothePCportionofthememory,andthedatabytebeingwrittenbythiswriteoperationintotheother8bits.Registers4and5areMatch-thePCthatthematcherislookingfor.Register6isCount.Afterthematchertriggers,Countisincrimentedeachtimeawordiswrittenintothememory.WhenCountreaches0FF,writingisdisabledandHBDNintheStatusregisterisset.Register7istheHBcontrolregister.It'swriteonly.Thereare4HBcontrolbits:3forHBmode,andanothertomanuallytriggerthematcher.TheHBmodechartisonpage13oftheprints.Mode0willshoweveryclock.Normallytherewillbe2tickspercycle,butiftheCPiswaitingforaresponsefromtheMultibus,youwillseethewaitstates.Mode1showseverymicroinstruction.Mode2showsthefirstmicroinstructionofeachclock.Thisisjustahacktocompressdata.Mode3showsthefirstmicroinstructionofeveryEmulatorinstruction.Thatcompressesthingsevenmore.Unfortunately,therearealotofMiscinstructions.LiketheCSsection,theHBregisterautomaticalyadvancestothenextinterestingregisteraftereveryreadorwriteoperation.Again,seethearrowsonpage18.The20pinsocketneartheBurdockcableconnectoristhe8extradatabitsthatgointotheHBmemory.ThedefaultjumperssetupvariousinterestingsignalsfromtheCP.Ifyouwanttoseewhenasignalisreallyhappening,clipleadituptooneofthesebits.Forexample,IusedthistounderstandtheinterruptlatencywhendebuggingtheSDLCmicrocodedrivingthephonelinesontheMiscboardbylookingattheinterruptrequestlines.BurdockexpectstoseeDoIt,Cycle1,Cycle2,andCycle3ontheloworderbits,butitwon'tdomorethatprintoutoflotofcrapifyouconnectupsomethingelse.Thatsocketalsocontainstheoutputfromthematcher.I'veusedittotriggerascopeonanobscureconditionsoIcouldseewhatwasgoingonbeforethehardwaredidsomethingcrazy.ThereisalsoanexternaltriggerandexternaladvancesoyoucanbrewupsomeexternallogictotriggeronsomethingotherthanaPCmatchorcontroladvancingtheHMmemorysoyouwillseeexactlytheeventsyouareinterestedin.Sections2through15don'texist.LogicdetailsThereisonlyoneclockontheDebuggerboard.ThereadandwritestrobesfromtheIOPandthecontrolsignalsfromtheMultibusaresynchronizedbeforetheyareused.Wehadsometroubleswithclockdelaysandskew.TheproblemwasthatRunwasn'tturningofffastenough.That'swhyPrePreArcisusedontheCtrlPAL.Page1istheBurdockinterface.Whenreadingorwriting,theIOPjustflapsthereadorwritestrobe.Itdoesn'twaitforaresponse,but"knows"thatitwillbethereintime.TheCtrlPALdoesmostoftheworkforstartingandstoppingtheCP.TheFFatu127bmakesaonetickwidepulseoutoftheleadingedgeofthewritestrobefromthe8085ontheIOP.WhenBurdockreadsdatafromtherestoftheDebuggerboard(forexample,abyteofControlStore),thePROMscontrollingtheCS(orHB)sectionarefastenoughsothatthedesiredinfogetsbacktotheIOPintime.Page2istheMultibusinterface.Thelow2bitsfromtheswitchesgotoCSBankPROMonpage5.Theyaren'tusedyet,butmightbehandyifyouwantmorethan16Kofcontrolstoreand/orareschemingaboutsomeRAM/ROMoverlayideas.Page3istheSectionregister,theclocks,theBurdock/Multibusswitch,andseveralcontrolsignals.WAddrPisaonetickwidepulseatthestartofawritetoSectionregister.RungoestotheCP.Unlessitison,theCPcan'tdoanything.ReadNIAdetermineswheathertheCPdrivessf@ (? vfEq_' g K@!&H+=,03p8Q:>@ZD<] g"$'+.3581;AD[ g<6T B!%&)F+.i0675c9=?(C`Oq g-v # %0Q25e9e<>@B EeM g0j "%0;2,6 g#"$-&,f1D4:x?VA Cj=? gM3!$(Z+[-/B35#8;?ACBE[; gw![9)l_!%(+H0368'9>3?YC!E#7u g}`i5 #&*[,a039;B14)C#&^+1258p;>&A3R g}"X%&)-M/3:g<?EP1 gR" $] *//) ru+ gGq()3~ *"(-T043X69>NAD&& g~1  h&Q( 05F8V:>>@C%B gbF#%+`. 038,= ?=A# g& #3& !)l #',.36m9v<3?BEPx gw !I'R)/2i368<=AXD< g$'C,/&1468e<}@ADg) g;Lb!#E%)-0s257:D={A g3eS9 'T+y.\4[58:@Dp gq B!&(+0y2E57Ci gbvWp ii!qi'v,I)|"g!$(v*6;=Ba G g0qK"M%'),./3c59?-BJEe go=c#% +1_ 8e>W@C TVm$Inter-OfficeMemorandum18NIA,ortheDebuggerboarddrivesitfromtheCSAregister.Page4isthecontrollogicfortheCSsection.ThehardpartisreadingControlStoreovertheMultibus.YouhavetostoptheCP(byturningoffRun)switchtheControlStoreaddressdriversfromNIAtoCSA,putthedesiredbyteontheDatabus,latchitintoTemp,lettheCPgobacktowork,andthendrivetheMultibusfromTemp.ReadsfromBurdockusethesamesequence,buttheCPisalreadystoppedinthatcase.Page5isCSA,thebankselectionPROM,andtheaddressdriversfortheRAMarray.Page6isthe'245sand'244susedtoreadandwritetheControlStorearrayandNIA/CSA.Pages7through10aretheControlStoredatachips.Page11isthecontrollogicfortheHBsection.Page12isthematcher.Page13istheadvanceandHBCountlogic.TheAdvancePALdoesalltheworkaboutdecodingtheHBModebitsandcooridinatingAdvanceandHBDone.Page14istheHBmemory.TheS157sonthebottomofthepageareonlyuseddruingtestingtowritetheHBmemoryfromBurdock.DebuggingtheControlStoresectionTestDebuggerBoardisaprogramfordebuggingDebuggerboards.AlloftheTestcommandsrununtilyoupoketheSTOPkey.Whileatestisrunning,Tajo'sNotifieristiedup.(Translation:thereisanhourglassinthecursorandthemachinewon'tletyoudoanythingelse.)Eachtestprintsouta!occasionallytoreassureyouthatthingsareworking.TocheckouttheControlStorepartofaboard,startatthetopleftandrunalloftheTestsinatoptobottom,lefttorightorder.Leteachonerunforseveral!!!s.Youcanactuallystartthefirsttest,andthenmouseaheadtostarttherestofthem,andthenjustpokeSTOPtogotothenextone.TheStatuscommandreadsandprintstheStatusregister.ReadStatusandWriteControljustloop(untilyoupoketheSTOPkey)soyoucanscopethings.ManyInitgoesthroughtheparticularread,write,readsequenceusedbyBurdock'sinitializationcode.FlapBootusestheDebuggerboardtoflaptheINIT/lineontheMultibus.Again,itloopsuntilyoupoketheSTOPkey.BootDebuggeejustdoesitonce.TheSectioncommandprintsoutthecurrentvalueoftheSection/Registerregister.TestSectionverifiesthattheSectionpartofthatregistercanbereadandwritten.ReadWriteSection,WriteSection,andReadSectionarescopingloops.TheTestCSRegcommandteststheCSRegister.ItlivesintheCSPROMsonpage4.TestCSRegIncrcheckstoverifythattheauto-incrementfeatureworkscorrectly.(Seethearrowsonthechartonpage18.)ReadWriteCSReg,WriteCSReg,andReadCSRegarescopeloops.TheTestTempcommandteststheTempRegisterwith0andFF.TestTempRippletestsitwithallofthe8bitpatternsthatarepossible.Ifthesework,theinternaldatabusisOK.ReadWriteTemp,WriteTemp,andReadTemparescopeloops.TheNIAcommandprintsoutthecurrentvalueofNIAfromtheCP.ReadNIAisascopeloop.TheCSAcommandprintsoutthecurrentvalueofCSAregister.TestCSAuses0andFFFF.TestCSARipplecountsthroughallpossibledatapatterns.WriteCSA,ReadCSA,andIncrCSAarescopeloops.IncrCSAisactuallyreadingandwritingthelastbyteofthemicrocode,butthat'ssupposedtoincrementCSAwhileitautomaticallyadjustsCSRegbackto0.SetCSAloadsthespecified(hex)valueintoCSA.CSRamprintsthewordofCSRAMpointedtobyCSA.CSRomprintsthewordofCSROM(ontheCP)pointedtobyCSA.BothofthesecommandsautomaticallyincrementCSA(onahealthyboard)soyoucanusethemtopokearoundinRAMorROM.sf@ (? vfEq_/ gwo"|#'9),\)5X!$a&+.1466;4@RC[ g(G] h"%<',.269T>zB*Ye gdJy!&)+."14r79*<@aB_DW gih0h!#s)m,1Q58>A&CV g)G %H&)S)~(9p$ZSS%q'SS(+a-27I9;?CQ g z(j #@%)+1487:BEPM g7L #M)P!9#&/(.135/7=A CDL* gCs!7&*- .1F48|>P@CJ g*  R#+)v,.0}25;>BDH g0I!8%*+/;14&9<uE g?gqB>)#]%,!2j7$9]:=C@/@ gNO!%%&&8(*/y3n89<> > g~c"$'L,0257=lAD=H gA 5# %(l,r.4O6d<%>rCu; gd7z 8 #V&'(*,/,2458h:0?kAC9 g/HX#%)+04*69<?vB8R gj(("z%(B+/1o3_57m:}5) e"&(,2+ 9X< Dr4/ gk #"#&>(,Q069>@ 2 g)1 ")3 154;>3@0 g}J6!#).t/379=r?D'/9 g X,)r"%(-24-6A+ g tg t&)+/w58=:>B )o g #a +[-2&)4 ##f%(u.b0 3e5F7:U?BE%M g Z"% .3A7@ =:@GB# gmKRN' 0!2:<@!*)"/$(.1I25R8 BE gc!"%'*,0n4y7<[?BbD g 8 !(+.`)<" $m);,.15G7:Y@BCI g>)'rI!#(,;-16:;>?B g Z +";'*0z7>AY gy#(+0358:=d DH gA!%G& /38J;=?)A $v(L+Q/&4t8;>@C)% gq!$='){+/2647_@C ~ g+ !+'+ -.38,9<?RAEe g:& TVm$rInter-OfficeMemorandum19TestCStestsbank0ofControlStoreRAM.Ittakesalongtime.WriteCSandReadCSarescopeloops.ClearCSfillsallofbank0with0s.SetCSfillsallofbank0with1s.SendCPDataandEchoneedspecialCPmicrocode.(It'sbeenlost.)Theywereusedfordebuggingthe2950ontheCP.BothsendabytetotheCP,andthenreadabytefromtheCP.TheCPisfastenoughsothatthereisnopointincheckingstatusbits.Echowillcomplainifthebyteitreadsdoesn'tmatchwhatitjustwrote.SendCPDatajustdiscardswhatitreads.FlapStopisascopeloopfordebuggingthestop/runtimingontheDebuggerboard.PokeCountandPokeMatcharescopeloopstostoptheCP,poketheCountorMatchregistersintheHBsection,andlettheCPcontinue.ThisiswhattheArmcommandintheHistoryBufferwindowdoes.Thesecommandsareleftoverfromdebuggingsometimingtroubles.YoushouldbeabletorunthesetestswhileDawnisrunning.Well,almostitwillgetintroubleifyouareunluckyenoughtostopitinthemiddleofamemoryreference.(TheyshouldalsoworkwithMemTestisrunning,buttheyuseSTOPratherthanSingleClick.)TestDebuggerBoardcontainsallthecommandswehaveneededtofixthings.Don'tbetoosurprisedifsomethingyouwantisn'tthere.Ifyouwantitbadlyenough,writeit,orgetaprogrammertohelpyouwriteit.TestingotherbanksofControlStoreTestDebuggerBoardonlychecksthefirstbankofControlStore.Ifyouhaveadditionalbanks,useCPBankTester.It'sontheintactivemenuafteryoustartBurdock.CPBankTesterworksonbothDLionsandDicentras,soitcallsCPKernelroutinestodotheactualreadsandwrites.Unfortunately,theyfixupthebitsthatMassgenerates.OntheDicentra,thatmeansinvertingtheloworder4bits.(OntheDLion,itismuchmorecomplicated-theNIAbitsgetmergedinbetweensomeothers.LookatCPKernelCSDLion,orusetrialanderrorbypullingchipsorshortingawire.)Beware:Thereare3versionsofcodethattestthefirstbankofControlStore:thefirstisTestCSinTestDebuggerBoard,thesecondisTestBank0inCPKernelTester,thethirdisTestBank0inCPBankTester.Theydon'tprintthingsoutinthesameformat.Thereare4TestBankNcommandsinCPBankTester.Eachteststheobviousbank.Whentestingmorethanbank0,thelastfewwordsofeachbankdon'tgettestedbecausethat'swheretheKernellives,anditisneededtoswitch(andunswitch)banksonaDLion.CPKernelTesterisanotherinactivetoolthatcomeswithBurdock.ItismostlyfordebuggingmicrocodeusedintheCPKernel,butitalsocontainsseveralcommandsthatareoccasionallyhandyfordebuggingCPhardwareand/orCPmicrocode.TestMIRreadsandwritessomelocationinControlStorewithapatternthatcontainstwoonebits.(Thatparticularpatternhasvalidparity,sotheparityfixingroutineswon'tchangeanything.)Thepatternshiftsfrom000000000003to000000000006,to00000000000Cto...toC00000000000.IfanybitinMIRisshortedhighorlow,thiswillfindit.(Actually,itisn'ttestingMIR,butrathertheinputstoMIR.)JumpNextfillsbank0ofControlStorewithGOTO[$]instructions.ThepatternonNIAshouldbeconspiciouswhenthingsareworkingright.FillBadParityfillsbank0withinstructionsthatwillcauseabadparitytrap.Eitherofthesecommandsmightbehandywhenchasingobscurewildbranchbugsinmicrocode.DebuggingtheHistoryBuffersectionTestHistoryBufferisaprogramfordebuggingtheHistoryBuffersectionofDebuggerboards.Again,alloftheTestcommandsrununtilyoupoketheSTOPkey.Whileatestisrunning,itprintsouta!occasionallytoreassureyouthatthingsareworking.TocheckouttheHistorysf@ (? vfEq_/)q]"r&*R+/E0n37<?^D] g23WG #s$')-024K8n;[ ) f!&W( 036:1=AkDYe g!/#9&u'*,_.1l4$7K:f;>B DiW g5~kK"H#%):*04\7K:=kC^DV gwl*N "$( 038<7=S)i# %"),d2n79i<BQ g[ #')D,H.1h47D;=VAPM gLH/{ &)+.J03: ;=BN g.: )"'+ 15l9?BL gdj%^z ;$U%+h/3479;@ADKW g!.%'(.w 48=@hCI g !%),1 G4)!"%_,H.s168=:R>BDE g"!s$(*j-T02o6m;?AvCnEC g IGu@ g\q=H)%#&X)f-.4L8y:2=@ ; g +!$*9.N147> 9 gw $1&'h*16]8:/<@D]8R g xw8R8R1q8R!$&*- 4^69?B6 gATOR"3$)m*,A0!3 ;t<{>B D5 gm,O $&4247: <@UBa3\ gAw0) a!#c&),;.15)6< @HBE/9 g) !Y%&-/P9x;>@?- g b!%(),/rq+)FX%Y'# 0427^9?B)o gn! #'),0736":!?JB' gdZ!$"' *=0~4t6{7%M) /$'J* .'127 8q9>-@Z# g+|@")$&+) .3,:'= ?t ! gbc#N(<* 2$8S<9?8C W gYu= m%2(-q0$259 ?D g; { {%).g 47<@XC gC #'-*,w./3Q6:=;>h@B<Ea gv["n$@ *,*/H37:\>AEe gb w%)0,N2 :<=AC g !$)g- 5g8 ;u<? k gCR#%)/359=/A gv[ ut g?q%)=!$*,15:h<BA ~ g!#&)-1/36:<>@"E g#z rN$'*.1m7I9?B) 5TVm$Inter-OfficeMemorandum20Bufferpartofaboard,startatthetopleftandrunalloftheTestsinatoptobottom,lefttorightorder.Leteachonerunforseveral!!!s.Youcanactuallymouseaheadonallofthem,andthenjustpokeSTOPtogotothenextone.TheStatus,Section,NIA,andCSAcommandsarecopiedfromTestDebuggerBoard.Theyjustprintouttheappropiateregister.TestHBReg,andTestHBRegIncrtesttheHBRegister.ItlivesinsidethePROMonpage11.ReadWriteHBReg,WriteHBReg,andReadHBRegarescopeloops.TheBitscommandprintstheHBControlbitsinu40.TestBitsteststhem.TheMatchcommandprintsthecontentsoftheMatchregisteronpage12.TestMatchtestsit.Notethatthisdoesn'ttestthematcher,onlytheMatchregister.SetMatchcopiesCSAintoMatch.The'682sonshouldnowindicateamatch.ClearMatchwritesthecomplimentofCSAintoMatch.TheHABcommandprintsthecontentsoftheHBA(HistoryBufferAddress)register.TestHBAtestsit.TheCountcommandprintsthevalueoftheCountregister.TestCounttestsit.ReadWriteCountisascopeloop.SpinCountsetsthematcherandthenwritesabignumberintoCount.Countshouldcountdownthroughallofitsvaluesandgetto0.KickCountissimilar,butitwritesasmallnumberintoCount.TestMatcheristhebigone.Itchecksallthesideeffectsofthematcher.Ittakesawhile.Unfortunately,ifitdoesn'twork,youdon'tgetmuchtogoon.(Sometimesputtingabreakpointinsidethecodewillhelp.)TheHBcommandprintsoutthewordofHBmemorypointedtobytheHBAregister.TestHBteststhewholeHBmemoryonpage14.WriteHBisascopeloop.Again,TestHistoryBufferhasonlythetoysthatwehaveneededsofar.Don'tbesurprisedifyouwantsomethingthatisn'tthere.Debugging-oddsandendsIfyoudon'thaveaBurdockcablepluggedin,andthesomePALdoesn'tgetclearedonPowerUp,theDebuggerboardcanhangthesystem.I'veforgottenthedetails,butI'llupdatethissectionifIseeitagain.CPBoardTheLEDonthebackoftheCPboardindicatesaControlStoreParityerror.Itgetsreseteverymicroinstruction,sosomethingissolidlybrokenifyouseeanylight.ThereisabugintheBusPrioritylogic.Itworks,butnotatfullspeed.IfyouareusingaDMAdevice,youwillhavetouseaslowercrystal.10MHZworksontheVersatecColorPlotter,butwehaven'texperimentedmuch.(Ithinkitcanbefixedwithafewbluewiresand/oraPROMchange.)Ifyoudon'thaveanyDMAdevices,youwon'thaveanytroubles.CPControlStorePROMsAnormalCPcomeswith4KofcontrolstoreinPROMs.Thereare2setsofstandard28pinEPROMsockets,and8KPROMsarenowavailable,soyoucangetupto16Kofcontrolstoreifsf@ (? vfEq_/ g}1"E$'L*,.0{268;9s;=BEe] g,U %D(+-26:<>@D][ g/\L!Z$iYe) ^" %{,k.3D6CW gb UC)  #&m(+1b263:P<ACS g] "%-0 3Q )$!o#)+-`0c58N)P "(i*!,057:=4DL g+R&!=&*(,16O<@D<KV g+!?&|',B 37:S ACI g?G4)A #)5+.-17G;AE g{C){|# & *S,/4:\AEfAj g qS '*F,147;<?D<? g Z!')*,136,79@B6> g>@j4! ;) 93 "Q&(+K.:24q6<>2AC9 g B #l&)3,.02 :E?@# 8Q gi5)(cw"$(J**,2q79y;>#A4/ gsz"$(4*q0Y1261)!M$o&),.268;5?)A!0 g M Fu, g?2bq)n)?!%5*,/~159=@7E' ga h#&z(-069=@JB& gbs g?q3)p33q3!&#'-[.37r;?c@C gz#$(-/14 6)3Y$(8).0347S;=?B8Epi gqig(.!e"&+p-ii.qi0B4N6^8>VB@ g\W #q%(*\-/%26 7Z:!=cAEp gqUP p#$hq&+.2t58[u gyHuq })mp }q }!"'*p, } }--q/ } }0t1M5L78;m=$BDp gq  =p q p4 q "%4 +Z-0/2478p:7 q ;=BDETVm$Inter-OfficeMemorandum21youaredesperate.LiketheDLion,theEmulatorisabout3K.OntheDicentra,theinitializationmicrocodecan'tbeoverlaid,soitchewsup300words.SupportforSDLCphonelinesisroughly400words,theinterruptdispatcherisroughly100words,andthevariousformsofIOpeeking,pokingandsloshingareroughlyanother100words.(Thereare60wordsunused.)ThenormalDicentraEmulatormicrocodedoesn'tincludeTXTBLT.TheEmulatormicrocodeisinexpensivePROMs.Becauseofthecost,itwilltobeveryinconvenienttomakeanychangestotheinstructionset.Normally,theCPusesa16MHZcrystal.Runningatthisspeed,theCPisslightlyfasterthanaDLionuntilitdoesamemoryreference.Runningatthisspeedrequiresfast,expensivePROMsforthemicrocode.Ifyouaredebuggingmicrocode,youcanuseUVEPROMs,butthatrequiresaslowercrystalandadifferentPROMinCPBank-U28.AccessingmemoryfromCPMicrocodeBeware:Mesamemoryaccessesarewordoriented.Thusalltheaddressbitsareshiftedleftonebitpositionfromwhatyoumightexpect.MAR_startsanormalmemorycycle.Becausethetop4bitsoftheRHregisterarenormallyusedformapflags,theyarenotsenttothebus.0saresenttoAD17throughAD15,the20interestingaddressbitsfromYH/YaresenttoAD14throughADR1,and0issenttoADR0.(RememberthatAD14isontheP2connector,soyoucanonlyaccessonemegabyteofmemoryonasystemwithoutP2connectors.)MAP_startsamapcycle.Exceptforthetiming,itisjustlikeMAP_onaDLion.Because4bitsofthemapflagsnormallyarestoredinRHandeachmapcellinmainmemory,anormalmemoryreferenceislimitedtothefirstmegawordofmemory.Memorybeyondthatiscalledhyperspace.(Theinitializationmicrocodedoesn'ttouchanythinginhyperspace.)RawRefisanFYfunctionusedtoaccesshyperspace.WhenRawRefisasserted,thetopbitofYH/Yisignored,thenext23bitsaresenttoAD17throughADR1,and,ADR0issetto0.Thisadds3moreaddressbits.IO_isanFYfunctionthatstartsareferencetoIOspace.IthasabuiltinRawRefsoyoucancontrolalltheaddressbitsonthebus.ManyIOcontrollersonlydecode16addressbits.Checkthefineprintifitmightmatter.Massdoesn'tcomplainaboutpossiblepagecrossbranchingwhenyoudoanIO_.SincesomanyoftheIOaccessesinvolveaddingsmallconstantsfromtheXBustoabaseregisterwhichisknowntohave0sinthelowbits,thisseemslikeareasonablewaytogo.ThereisanotherIO_usingFZsoyoucandoabranchwhilestartinganIOaccess.OnaDLion,memoryisaslowXBusdevice,soALUoperationsorbranchingonMDdon'thappenintime.OntheDicentra,thedelaysneededtosynchronizeXACK/leaveplentyoftime.Masshasn'tbeenmodifiedtoknowthis,soyoustillhavetouseLOOPHOLE[stw].(MemTestistheonlyplaceIcanthinkofthattakesadvantageofthis.)CPMicrocodedetailsDicentramicrocodeisveryverysimilartotheDLion.Themaindifferencesareeasysinceallyouhavetodoisignorecomplications.OnaDicentra,thereisnotasking.Honestfolks,thedifferencesbetweenthetwomachinesaretrivial.Westolethewholeemulator.Manymodulesrequirednoedits.IfyouwanttoknowhowtoprogramaDicentra,readGarner'sDandelionMicrocodeReference(DMR.press)DandelionHardwareManual(DLionManual*.press)andsf@ (? vfEq_/ gq \)uT"$ ( *-R/58f @f[ g  "&,.C269;)@,BYe g &!$<(+W-2~6i8":=?D]W g( %")+-1UB)d"w)%-p2UBUB3|q74UBUBR)3yZ "p)URR)q,RR-C.Q358C;=#@ADQ g ;!#j% ,N)K$)E/ 037:o<>lCTL gR J# *a0+148q=@pKU gqKUKU= ^!(#*\ 1v4@69gp<KUKU<q@=KUKU@ADFI g,|3]p%II%qI(* uF_ g7wC)J"%B(.S136U;.=@EDAh g I)#q>);"&E+p-01535a7:@?AC=E gV6!;$=& (+-l/248>.BE/; g 1,V"%1(%).3K8:<'=@BW9 g$" z"x )*-0 37%9?A8O gm$ 5)y$&W(-i.0+25x:4<;=d3X)> #),n025v8[;?AC1 gd]$&4+-/29;Az0 gw,0 0 q!y0 0 "&{ .5; ?KEf.b g ndm%(*. 6^:@A, gJn.  v"%'*,/15:?B+ g *DH#2()XH $E%y+-;/b3y47{8=+BD]& gjq 0"S$'+.( 5 8A=?D%J gl #&+1Z5:6=Y@# g~#?$'E)X.3O7;mAWD! g.5. %-&*0+-0 258ZA@2BN){U5"N&*,K/ 6t8,>@C1 g@F #'5+- 5:S=AC gl+"&'*-Q02g4 @q g 2Lt"&,.Hu gqD)  ##<')+037. >4@C gWTt &)*@0>35379DLion>.YoucanskipallthechaptersonIOdevices.Figure3istheDicentraversionofTHEmagicchart.ItshouldbeveryfamiliartoDLionmicrocoders.AllthefunctionsforaccessingIOdeviceshavebeendeleted.Theslotsmarked*havebeenreservedasNOOPsontheDicentrato(slightly)simplifylifeforBurdock.Forexample,thesamemicrocodecanbeusedonbothmachinesinsomecasesbecausethebitpatternforRefreshonaDLionisharmlessonaDicentra.Thedetailsofaccessingmemoryhavebeendescribedabove.Thereareonlyafewothernewoperations.OnaDLion,Bank_has2morecyclesofpipelinedealy:ifyoudoaBank_inc1,youwillexecuteoutofthenewbankonthenextc1.OntheDicentra,thereisonly1cycleofdelay:IfyoudoaBank_inc1,youwillexecuteoutofthenewbankonc3.DebA_writesabyteofdatatothe2950usedtotalktoBurdock._DebBreadsabytefromtheotherhalfofthatchip.TheseareusedonlybyBurdock.TheyoverlaythecorrespondingDLionscodessothesamemicrocodecanbeused.ExtCtrl_writes8bitsofdatafromtheYbustothelatchesdrivingtheMP.(It'sonpage15oftheprints.)Bits0through7areignored.Bits8through11arethedecimalpointsontheMP.Bit12isunused.Bit13isIncMP'.TheMPwillincrementonitsrisingedge.Bit14isZeroMP'.TheMPwillgetclearedwhenitgoeslow.Bit15isBlankMP'.Whenitislow,leading0sintheMPwillbeinvisible._ExtStatreads12bitsofdataontotheXbus.Thehigh8bitsareINT0throughINT7fromtheMultibusbackplane.Bits8through11float.Bit12isAltBootfromtheMP.Bit13isMaster'fromthebusinterfacelogic.(Ifitisn'tonrightafterbooting,thebusprioritylogicisprobablybroken.)Bits14and15areDebAFullandDebBFullfromthe2950usedtotalktoBurdock.(Seepages12and15oftheprints.)Wheneveranyofthe8INTx/linesontheMultibusbackplanechangesstate,thePALsonpage12willgenerateaMesaInterrupt.Themicrocodeinterrupthandlerthenscanstheinterruptlines,andprocessestheonesthatwentdown.(It'slikewatchingfordowntransitionsonakeyboard.)Nowforsomereallyobscurefineprint:Thereisachangewheninterpretingatraptomicrocodelocation0.The01casemeansthattheCPhasbeenbooted(viaINIT/onthebackplaneoftheMultibus.)OnaDLion,thatcasemeanstheemulatorencounteredaparityerrorinmainmemory.NotethatthefirstclickofthetraphandlerwillgetexecutedrepeatedlywhileINIT/islow.SincetherearenoTCbitstogetleftinarandomstate,thefirstinstructionofataskdoesn'tneedaCANCELBR[xx,0F].OnaDLion,readingandwritingduringthesamememorycycledoesanexchange.OntheDicentra,thatcombinationisahacktotestthedatabitsofthememorybus.TheDicentrashouldreadwhatitwrites.TheonlyplaceswheretheDLionEmulatorusesthisfeaturearewhenreturningframesorPSBstothefreelist.OntheDicentra,anextramemorycycleisneeded.(TheExchangewithmemorytrickisalsousedbytheRaventoclearoutthebandbufferasitsendsbitstotheprinter.Idon'tknowofanyotheruses.)OnaDLion,Bank_has2morecyclesofpipelinedelay:whenyoudoaBank_inc1,youwillexecuteoutofthenewbankonthenextc1.OntheDicentra,thereisonly1cycleofdelay:whenyoudoaBank_inc1,youwillexecuteoutofthenewbankonc3.sf@ (? vfEw_' gpq_'$P .o47<A8E] g "%')/O1U3r[)a#W%(,0268;@BY\ g [j!').25}:=@EW gRE "%+-{ 3{9 ;>=DhV gk"M$p'*-359j=BdDTf g&c $!'?)F*oQ) gn#'`*1&59<3?l@CuPC gU M)fj#$'(.2+366869Z=?ADiL gag r"%(*x,26m7:<5?AjEJy g%Nw "%')F+.24 G);0KN "$(+H,/137 ;?@CFV g`K!$_'*-3 6;> D g[&J#u&'B3)&e!%S')T+-049o;>AC@ gRu89 w!$ )r,9-s2469Y>BD> g09 &.)*+.5d79={A=CE== gP!%)&t),n.0z18<=?SB@; g -u 9)X!$&(p+M.1)2M47!:?C7r g Z 2$Z&0)+-/4$7|9<>@B5 g6z' '!$~&)-247<}?AB4$ g$'.147u:<?eA-2| gwA&|0)az""%]'d)/6.;[>ADE.Y goz) $X'-3p8i;}>AL, g4%\_"g%*Z-a0F6R8< CE+ g ()Y#!9$&)#K %r&)q+168s;D="@ DF$l g1"$'U-/2 8;Bt?BV g s)rd#(7*.3y6:<BXD g F $%(+8.k1;3"5;K>gAn0 g_h"m&q*u,179<A C_ g' | #&)+137M<@iA g 3!#\&3)z+-2D37Y99<=ABB p gMu!,#(+B,/[2I57 >TVm$Inter-OfficeMemorandum23OnaDicentra,anIBDispignoresthelow8bitsoftheNIAfieldofthemicroinstruction.(OnaDLion,youcouldORthemtogether.ThiswasonlyusedbySunlight.)CPEmulatorOverivewMostoftheEmulatorcomesfromtheDLionwithlittleornomodifications.Theinitializationisallnew.Unfortunately,itdoesn'tgetoverlaid.Itcheckslotsofthings,initializesvariousconstantsthatliveinUregister,checksmemoryandsetsupthemap,andcopiesthegermfromtheEPROMsontheMiscboardintomainmemory.ThenitconstructsamagicindirectlinkforXFERanddivesintothenormalEmulator.TheDicentraEmulatorcontainsseveralextraIOinstructions.TheyareimplementedinMiscDicentraandIOCopy.Oneinterestingkrock:forKlamath,somebody"fixed"thegermtosaveandrestorethepulsesclockwhengoingtotheDebugger.Thatraiseshavocifyouareusingitforthetimeofdayclock.Ratherthenunfixthegerm(whichwouldrequirecloningabiguglymodule)Ihackedthemicrocodetoignoreattemptstowritethepulsesclock.TherearepatchesinthecodetofreeframesandPSBsbecausetheDicentradoesn'tsupporttheexchangewithmemorytrickthat'susedontheDLion.Readingthepulsesclockisabittricky.ThehardwareontheCIOchipshasanextrabankofFFssoyoucanreadbothhalvesofa16bitcounterinsync,butthereisn'tanywaytosampleapairof16bitcountersatthesametime.Thusthemicrocodereadsthehighword,readsthelowword,andreadsthehighwordagain.Ifbothhighwordsarethesame,thelowwordcouldn'thaveoverflowedanabadtime.InterruptprocessingistheexpectedcomplicationintheDicentraemulator.OntheDLion,thetaskmicrocodewouldORtheinterruptbitsintonWW,andthenturnonMesaInt.TheDicentradoesn'thaveanytaskingsothereisn'tanytaskmicrocodetodothat.ThehardwareturnsonMesaIntwheneveraninterruptlinechanges.InterruptDicentra.mccontainsapreprocessorthatrunsbeforethenormalprocessmachinerylooksatnWW.Itscansfornewinterruptrequestsandforeachoneitfinds,itORsthecorrespondingUregisterintonWW.TheSDLCmicrocodedoesalltheworkofIOCBprocessingtosendandreceivepacketsonaphoneline.ItshouldhavebeenlocatedinanotherCPUonanotherboard,butthiswayavoideddevelopinganotherdebuggingenvironment.TheSDLCmicrocodeisquitestraightforward.ThereisaspecialcasecheckforINT4earlyinInterruptDicentra.mc.IfthephonelineCSBissetup,thepreprocessorjumpsdirectlytotheSDLCmicrocode.ItusestheMiscboardsIntAckfacilitytogetadispatchvector,splitsthevectorinto3bitsofreason-for-interruptand3bitsoflinenumber,convertsthelinenumbertoaCSB,anddispatchestotheappropiateserviceroutine.AllthestateinformationissavedintheCSBorIOCBs.Itwouldn'tbeveryhardtoaddringbufferedsupportforTTYmode,butIdoubtifthereisroomtodoitwithoutalotofsqueezing.TheproblemwiththeSDLCmicrocodeisthattheinterruptlatencyofseveralsectionsofthemainemulatorwastoolongfortwolinestoworkat56KB.IdodgedaroundthisbycheckingforMesaIntatvariouscriticalbutreasonablyconvenientplaces.Tomakesomeplacesconvenientenough,theinterruptpreprocessingsectionnowhastheconceptofreturn-to-me.MostofthelogicfelloutofoptimizingthenonewinterruptsinnWWcase,butitisalsoneededwheninterruptsaredisabled.(TheHistoryBufferwasalifesaverwhileworkingonthis.Ipatchedthemicrocodetohaveatriggerpointfortheoverruncase,andaddedtheINT4wiretooneofthesparebits.Whenittriggered,IscrolledbackwardsuntiltheplacewhereINT4cameon.Thefinkysectionofcodewasrunningbythen.)sf@ (? vfEq_/)$}&)*-/U158D: <@BR g  #Y%,&,N06j9F< >B@D]Q g5pQQbq QQ!$&w)-04r:K=?h EOv gitAp~OvOvRqOv $\'5).QL)5X#(,]. 6:W< EfKS g ` n '2+-3:?iAEeI g\{ d$ ')c+2]59E=->~A&CjH g 4Ml!% (*.k27;@ADF] g "X&,,-1X37C)b?1!j# %*6,0Z5n7=XBB9 gL }$('d)j+?)- 2!_#'*025 8);>8@,C> g4"#$&(-/<258;t>@BlIA9 g 6) <%d -/C17T=?BL4 g$"x(j+5.7258<'>WD<3U g'`!#'h*{-60(68:>A 1 g#"n(,23?E0 g 3!&+2l6-7 AD&._ g/?|"Y#'z(+.T 7K8=@+)? !$L')q-j 458;@7E*< g 6z(V"')/24:(>AeD<( gi E &' 049AIC& gM"Q%o)+/3w5UCD%F gUp '+@0N248 @AD# gOW!$&V,R1Y5n8Z= @mB-E[! g4O v#(~-0279]:n=@z P g8 _!$&) 13&78;e>@E g ?!q',.=158091=->BCk gr~r )?!(]),/&49;@*E[ gq!$')P,.=2n3b89<?pAX7 g_x ' .248<@  g< "'*-8/46 ?@BD gt  "% ,<.2I58c9;w>lC_A g 9 &)*0K49d;q>q?D gE!R#%+'.r1.5V7;>@GBD g$;r . U%,a/2D5:,>AD< K gPB!y#u& JTVm$Inter-OfficeMemorandum24LogicdetailsBeware:Bit0ontheCPprintsistheMSB.Thebitnumbersgetreversedasthingsgoto/fromtheMultibus.ClockingontheCPisverysimple.Lookatpage15.2xClkonlydrivestheMultibuscontrolPROMsonpage13.RuncomesfromtheDebuggerboard.It'susedtostopeverything(includingtheMultibusmachinery).preClkandClk'*gototheCPU.Everythinggetsclockedontherisingedge.DoItcomesfromtheMultibuscontrolPROMsonpage13.IftheCPisn'treferencingmemory,DoItishigheveryothertickof2xClk.Thatmakesa25%dutycycleforClk'*.Witha16MHzcrystal,theyarehighfor94nsthenlowfor31ns.Duringmemoryoperations,DoIttheMultibusPROMswithholdDoIttointroducewaitstates.Page1isthe2901s.CarryOut,Overflow,andF.0arebranchcondtions.Feq0iswireANDedtogetherfromall4chips.Page2issomeALUrelatedoddsandends,mostlyhavingtodowithshiftsandcarrys.ThispagealsocontainsPC16,andthelogictoreadandwriteit.(PC16isfrequentlyusedasacarryinputtotheALU.)Page3istheUregisters.TheUregistersarereadontotheXBusandwritenfromtheYBus.Page4holdstheRHregistersandtheStackpointer.TheStackpromdoesalltheworkofsortingoutoverflowsandunderflows.Page5istheRotaterandtheconstantgenerator.TheRotatercopiestheYBustotheXBus,rotatingby0,4,8,or12bits.Rot4rotates4bitstotheright.Rot12rotates12bitstotheright,or4totheleft.TheconstantsgototheXBus.Thereare2formsofconstants:8bitconstantsand4bitconstants.(Thereisnoprovisionforsignextendingconstants.)Page6istheinstructionbuffer.It'sabittricky,readGarner'sdescriptionforthefineprint.Thetoppartisthedata.TheIBPROMdoesallofthehardwork.TheEnC2FunsFFonthebottomofthepagedisablesmemorywriteswhenapagecrosshappensonaMAR_oraninstructiontriestoreaddatafromtheIBwhenitisalreadyempty.Page7istheparitycheckinglogic,andFFsforMIR.Page8containsregisteredPROMsusedforMIRdecoding.Page9isthebranchinglogicandthelinkregisters.AllthebranchconditonsareunchangedfromtheDLion.(The2IODispbitsusedbytheDLionEthernetarenotusedontheDicentra.)ThelinkregistersarewrittenfromNIA,andcanonlybereadbyORingthemintotheNIAfieldofamicroinstruction.Again,seeGarnerforthefineprint.Page10istheNIAregister.ThisiswheretheIBdispatchingandbranchconditionsandlinkregistersgetmergedintotheNIAfieldofeachinstruction.ForceBank0comesfromtheTrappromonpage12duringINIT/.TheCPBankPROMisusedtodancearoundthepinoutdifferencesbetweentheAMD27S43sand2732susedforControlStore.(A27S43hasanEandanE'.A2732hasaCE'andanOE'.)TheMapFlagoutputsfromtheCPBankPROMgotothePALsonpage14thatdrivethehighorderaddressbitsontheMultibus.Theycouldbeusedtoallowtheemulatortoaccessmorethanamegawordofmemory.ReadNIAandUseRomcomefromtheDebuggerBoard.Theirpullupsareonpage16.Page11hasthesocketsfortheControlStorePROMs.Everythingissetupfor32Kchips,butthesocketshavetheextrapinsneededfor28pinchips.BytweakingtheCPBankPROM,64Kchipscouldbeused.Fast64KPROMsarenowavailableasMB7144sfromFijitsu.sf@ (? vfEu_, gGw[)X!#3%l)Y, -3T5:$(/),/)36.:0<BapV gqVV:Ko"%!+x/25869 @ Tk g   #6&(*P,0\ 7S:?@CJR g5<$Tp)7RR)q,RR-0357:5<? Q g*y!T#%* -N1258<6>qBoEOu gg4! $E'v*!,i/4:G AXDM gpOMMqMM!'*KR)c(!'*{,/3 :=>AI g2"VG/)my #&r).[24j6d9q=?CE g!$n& )?+/|1-5_6 =v@BhCC g Ad)h4 o!6"(*[-d0269&=Y@B>)t!$'*/26:H=~?tAE[=A gmX :)pT@!D& -/48;K?@B9 g(!&h'*N,.l26=:<?LACj7w g:}:km!l#)%)-001t5n76 =>A!5 gSp 6 &(+2& 3T)pT &"$&(",Q/c4 <>;@CT1 gYk[Mp!V11!q1%^(*,.2T6B94@'BD0 gbLU$Q(,j-1=4:v<> C.E#.^ g BF!{#%)*,A1+) !%(+.15V6<4 pB++CIqF +*; gH')nL #%( .m037=@& g(U 7"&'*R.4Y69E@ $q g[C1"&+(+.0465:>qAeC" gPz!x#(*-1/ N)!7$m%*',. 68= D] gVH_Z!%3(*b- 5 <A*D gx~)p/qUw! $)+0 7B gIX!H#H'N)+- /135C8:<>ACl5 gOFL 2p%55&Kq5)+-_/359; =AC g34 "&v*X,`/1x587=?\C g &+) .26U8 CT? gR)nH"1';p*+vq.8./ 67;=@D gp $'2),+/17:>p?@\qCD t gKOpU t tq" t t#&).069 TVm$Inter-OfficeMemorandum25Page12hastheTrapPROMandtheInterruptPALs.TheInterruptPALsareidentical.Page19isanexplodeddiagram.Basically,theyautomaticallysetInterrupt(theMesaInterruptRequestFF)wheneveranyoftheINTx/linesonthebackplanechanges.Page13hastheMultibuscontrolPROMs.ThisisoneofthefewsectionsoftheCPthatisdrasticallydifferentfromtheDLion.Thetimingchartandstatediagramareonpage20.Basically,theclockdrivingtheMultibusPROMsticksatleasttwiceforeachmicroinstruction.Fornonmemoryclicks,thestatesareC1FH(cycle1,firsthalf),C1SH(secondhalf),C2FH,C2SH,C3FH,andC3SH.DoItislowduringallFHstatesandhighduringallSHstates.ItletsaclockpulsethroughtotheCPU.(Seepage15.)OnMultibusreads,thingshanginRead3FHuntilXACK/comesback.Thinkoftheextrastepsaswaitstates.Onwriting,sometimecanbesavedifthenextclickdoesn'tusememory.C1WFH,C1WSH,andC2WFHwereallthesparestatesavailable.C1WaitisusedwhilewaitingtogetcontroloftheMultibus.NotethatanormalmemoryoperationisencodedasMAP_andIO,soitisn'tpossibletodothatstrangecombination.Beware:The27S27sintheMultibusPROMsarerunningwayoverspecs.IfyourCPisflakey,thisisagoodplacetolook.IOandMAPoperationsarethemostsensitive.(I'mamazedthatthisworksaswellasitdoes.)Page14hasthedataandaddressinterfacetotheMultibus.Again,watchtheLSB/MSBbitrenumbering.The'576sonthelowerrightareusedduringMAP_operations.TheonesonthelowerleftareusedduringMAR_andIO_operations.ThePALscontainenoughlogictosortoutallthecomplexitiesaboutdrivingthehighorderaddressbitsandARD0andBHEN.Page15hastheclocks,theBurdockinterfacechip,andtheinterfacetotheMP.Ontheclockarea,noticethatRun(fromtheDebuggerboard)stopsthe2xClkwhichdrivestheMultibuscontrolPROMs.DoItcomesfromtheMultibuscontrolPROMsanddisablestheclockingtotherestofthemachineduringwaitstates.MaintaincePanelTheMPisanextensionoftheCP.Allthelogicfitsononepage.TheN143isacombineddecimalcounter,BCDto7segmentdecoder,andLEDdrivers.Beware:Aspartofthegeneralconfusionabouttop/bottompinnumberings,theribboncabletotheMPneedsatwistoneachpairofwires.It'sdoneattheconnectorontheMP.DebuggingDebuggingaCPfallsintotwoseparatestages.Onreallysickboards,Burdockwon'twork.Oncetheboardisoverthehump,youcanuseBurdocktogathermoredata.Unfortunately,muchoftheCP(includingtheUregisters)hastoworkbeforeBurdockwillrun.Thiscouldbechanged,butBurdockisnormallyusedfordebuggingmicrocoderatherthanhardware,sothingshavebeenoptimizedtosavespaceincontrolstore.ThepreliminarystepincheckingoutaCPisrunningTestCSinTestDebuggerBoardandTestMIRinCPKernelTestertoverifythatNIAandMIRdon'thaveanygrossshorts.ThefirstrealstepincheckingoutaCPistousetheHistoryBufferwindowtosetTargettoErroranddoaLoadArmAndGoonDawn.(DawnisaspinofffromGarner'sSunlightforDLions.)Dawnneedsamemoryboard:itteststhememoryinterface,themaplogic,andthecancelwritelogic.It'salsoaverygoodideatohaveaMiscboardtotimeouttheMultibusincasetheCPhappenstoaddressalocationthatdoesn'texist.OnagoodCPboard,DawngetstoErroronceasitrecoversfromgettingbooted,andthenbumpstheMPeverysecondorso.IfyourMPdoesn'tcount,ArmtheHistoryBufferagain,andsf@ (? vfEq_/)oIpZ_/_/q_/ ="%>+/327;= C] g.{M" "% -/58e;A[ g3h ! #%(5.Ye)u`Tp$YeYe$q'{YeYe'(, -0:14i7@pBEW g O"}%6)p,/f2w79;>A V gp -VV q#VV$(")-203U6AsDGTo gSV#'),04: =BR gZY#%(3+.168:k>r?B]CQ g'N $P'&)/37;=VCOy gy6!$(R),03<8=;>AbCIM g <We#)/2P7;Q=K?C_L* g  %'*_/I183:E=@BWJ gS$u' )Y*,+/457:5> wH)g= &,..36:>?CEFa g|3 "/$m'* 1k36!9k ?!B3D g9vCSqB>)sR#)L*-M37;>.D@ g AJ#y&)$,c05 <?yBD> g9U!$' .15u:\?MBD]=H g, #& )3,14s7*;>G:)/< &h,,/25:<?B7D9& g ")-q037:>A+7~ gp.7~7~q7~7~ r!0#)p.h7~7~/q17~7~25:=oBD5 g! u2 g q/9)&">$';),/>1D37:f>?@- gp--q-}"'p*\--+q--8w+)q}\W"(3+ 35j =?UC)o g X-! H#$(*.-/28E:8<u& gq")@p"O',.f2749?nC?!* g)V"%p(*0j2<6:O=  g?Y <!@ ')+C.38;M><AWE# g q!4$a&-<37:AFB4 g v%)!#(?) U$(&'*^+1-6 7D] gN #&{),f/3a69I<)^!$.%R')*- /z 8*=P>AEe gXK !$9(-/F0594?DH gFmi!4%'/*Y,2Y 8q:> AD g;_@}!%&(4)-P.16 7<?jEf gUw& !9&p)?- ~)^ #v%(, -/4a711.1>ScopeHacks>.UseLoadRawtostartthem.It'seasytocreatemoreifthereisaspecificsignalthatyoucan'teasilyscope.Ifthing'sgocrazy,checkforCPparityerrorsorusetheHistoryBuffertoverifythatitisdoingwhatyouexpect.(ThesearealsohandyonaDLion.)ManyofthesehacksuseIB_asasyncpoint.It'shandyandharmless.Hereisaquicksummary.Lookatthecodeforthedetails.FlapShiftwigglesalltheshift1bitshiftlinesandShift-Endinputs.(It'sleftoverfromchasinganobscureshort.)FlapPC16wigglesallthesignalsnearPC16onpage2.FlapStackwigglesallthesignalsnearthestackPROM.FlapTrapcausesastackunderflowtrap.PokeBranchactivatesallthebranchconditions.Asmuchaspossible,itmakesbothbranchesthatdobranch,andbranchesthatdon't.PokeConstputssomesimpleconstantsontheXBus.It'srealhandyforchasingshorts.PokeDevicewigglesalloftheIOcommandsignals,includingtheonesthataren'treallyIOdevices,likeIB_andLRotN.ThisisreallyaDLionprogram,butthereisenoughoverlapwithaDicentratobeinteresting.PokeRottriestowiggleallofthesignalsneartheRotaters.Thingswon'tworkrightiftheCPUissick,sobesuretochecktheinputsignalsontheYBusbeforejumpingtoanyconclusions.SpinADgeneratesallpossibleADsignalsgoingintothe2901s.SpinAFgeneratesallpossibleAFsignalsgoingintothe2901s.SpinASgeneratesallpossibleASsignalsgoingintothe2901s.SpinBankprobablydoesn'tworkonaDicentra.SpinRHputsanumberintoeachRHregisterandthenreadsitback.Thenitbumpsthenumberandgoesaroundtheloopagain.SpinUwigglesalotofsignalsneartheUregisters.ItputsanumberintoaUregister,andthenreadsitback.Itdoesthisforregisters00,01,02,04,08,10,20,40,80,andFF.Thenitbumpsthenumberandgoesaroundtheloopagain.SpinXYcountsupinanRregisterasfastasitcan.TheresultshouldbeontheYbus,andthroughLRot0,itshouldgettotheXBus.Thisishandyforfindingshortedbits.DawnalsofindsalotofproblemswithCPboardsthatarehealthyenoughtorunBurdockForexample,Burdockdoesn'tusetheIBdispatching.Inthatcase,youcanfrequentlyputabreakpointatthecriticalplaceandgathersomemoreinfobylookingintheRRegister.Beware,thereare2versionsofDawn.Dwan.fbissetupforusewithLoadRaw.DawnBur.fbissetupforusewithBurdock.TorunDawnwithBurdock,PokeBootintheCPWindow,thenselectDawnBur,andpokeLoad.ThensetuptheCPPaneltoshowthedesiredregistersand/orsetthedesiredbreakpoints.Whenyouareready,PokeContinue.IfyouencounteraprobleminaCPthatDawndoesn'tcatch,pleasetellmesoIcantrytofixit.Ifyouarelookingfortroubles,MemTestandDESTestalsogivetheCPalotofexercise.YoucanchecktheControlStoreROMsbyturningontheUseROMswitchinthelowerrightpartoftheHistoryBufferWindow,pokingBBtogetitnoticed,typingin"Emulator"somewhereandselectingit,andthenhittingtheComparecommandintheCPWindow.Ifthingssf@ (? vfEq_/ g'k @' .1/1F6":ACJ] g1 [ ) w-3 "%h' *.0>69;?BYe gl#-0q68;?BBEeW gj`W m$Y'()-305"6;=@DV gmB"-&|(+,.0;158;@EDTo g.XY~!_$(+. /037:1>ZA Q)1R"$&*.,k.Oy'[L![#'(g*-174 :x?B M gL*'e!U#($+?.04@J'g!W#(&+@-p1JJ1q4|JJH';t#)G4' !Q#>%*5 1,3:78>O?CE g.$w'EC';p"3&,/ 158y;_?B*B> g@'  "$}&)!/4q:= @QC3> gQ %(*.s/4M:T<@B*=G gPk; ;'["$&/(,/2H8 <@QC9 g ]q!n%k'+062W48=BDs8Q g 6'!&)q-1465'S[!K&)-q1;46s3['3;!+&m(-003621'r D%(*+0 'udw"%N(h*/2g5v8:>=AMB.e g $,'!S#='+(-/ 5w7 :V;A DEq+ guY n!%5'*4/14@68;(=u?BD])o g "%*-0-''t!#% )+.-/1146:?2A"C(E& gV EC!$%(,-/G047;@#)5tg$o').W1%3x8W=A>A! g5)"S$& .0369< CFE V g L,$!%)- /168Z: g6)^ t"!#I%(h,s1059=;=?@C?Ee gx)a"(+l1>4 69W;<>@%)N] $?(*/14j:?@CJ } g t&+a-/2K39C=? gw1"'/)w/]57=9;AB TVm$0Inter-OfficeMemorandum27goright,itwilltake30seconds.YouneedtheappropiateversionofEmulator.fbonyourdisk.ThecurrentversionoftheEmulatormicrocodecomesfrom[Indigo]Nov26>Emulator>Public>.It'sdated4-Nov-84.MemoryBoardTheLEDonthebackofaMemoryboardindicatesaparityerror.ItgetsclearedbyINIT/,oranothermemoryoperation(excepting,ofcourse,anotherreadwithbadparity).Remember,parityerrorsarenormalifyoupowerupasystemandthenreadmemorybeforewritingit.TheMemoryboarddoesnotsupportbyteoperations.SwitchesAllswitchesshouldbeopen/offforthefirstmemoryboard.Turnon4(rightmost)forthesecondmemoryboard.Turnon3(andleave4off)forthethirdboard.Forthe4thboard,turnonboth3and4...Remember,youneedP2connectorsifyouareusingmorethan1memoryboard,andtheEmulatorcan'tusemorethan2memoryboards.OverviewThereisnothingfancyonthememoryboard.Ituses64Kchips.Thedatawordis16bitswide,witha17thbitforparity.Thereare8banks.Thatmakesatotalof136memorychips.ADR0/isignored.Thenext16addressbits(ADR1/throughAD10/)arefeddirectlytotheaddresspinsonthememorychipsduringRASandCAS.Thenext3bits(AD11/throughAD13/)selecttheappropiatebank.Theremaining4bits(AD14/throughAD17/)areusedforboardselection.Ifthereisaparityerrorduringaread,thememoryboardputsthedataitreadontothebus,butitdoesn'tgenerateXACK/.Eventually,theMiscboardwillgenerateafakeXACK/,andwhenitdoesthat,itwillalsolatchalltheinfoonthebus.(Ifthedatawaswhatyouexpected,theerrorwasintheparitybit.)Ifthereisaparityerrorduringaread,thememoryboardputsthedataitreadontothebus,butitdoesn'tgenerateXACK/.Eventually,theMiscboardwillgenerateafakeXACK/,andwhenitdoesthat,itwillalsolatchalltheinfoonthebus.(Ifthedatawaswhatyouexpected,theerrorwasintheparitybit.)TheCPcanbeginanewmemorycycleevery800ns.Readsandwritestakethesameamountoftime.(Actually,itisabitslowerthanthatifyoucorrectforrefresh.)LogicdetailsOnalloftheprints,thebitnumberingontheaddressanddatabitsfollowstheIntel/Multibusconventions.ADR0/istheLSB,DAT0/istheLSB.That'sright/leftreversedfromtheinnardsoftheCP.Page1hasmostofthetimingandcontrollogic.TherefreshrequestsaregeneratedbyasimpleR/Ctimer.Eitherarefreshrequest,oramemoryrequestforthisboardstartsthetimingchain.Thetimingdiagramonpage19showsmostoftheinterestingsignals.It'simportantthattheLS14usedinthearbiternotbechangedtoanS14.Thelowersf@ (? vfEq_/ g^l  ~#&)] 0?56 >@C] g~!%t*3\<C[ g)'*-sUB gqQ)]Y%E)1./379;@BtPL g:T &',148:?N g^UwNNgqNIa#%&+F-1#4>9=BL))!7&C)R uH gqE)lb#9%|'*0148 :;O BqDC gd/ 4!h$()S+.:048N:=W?DB< g;"&( /03Q59y=!@]A@ gn3!%;(a)/u=E gq9)7"'+-l0r37}:b=sABDr8O g+Up $&o'+/93q479z<A|5)VTD!l#i(k+%06;j=@XEe4, gD $[(,>/2589<A2 g` "h%B+,/4: ?EAD0 g^ .b)c'6#G$(*047:9<>;AmD, gf_.# *-B047t=>CAX+ gN4q"&](}+ . 0V268/:=@D])l g|M"&)c'6#G$(*047:9<>;AmD%I gf_.# *-B047t=>CAX# gN4q"&](}+ . 0V268/:=@D]! g|M")-\rM#'*.259mB  g  >"?%e(3),K03u gGw9)sb9T&;("*b/147%;=  g " %'")-41l 7V<?BF g Wqo)k'"%h*3-05;=tCE g@!&()/C46H8<@aB gtL"K$0(<+-R/ 6j )RZ!%7' ).d13>8:<@7CJTVm$BInter-OfficeMemorandum28thresholdvoltageiscritical.Thejumpersontheoutputsofthedelaylinesaretherebecausewedidn'tknowhowconvertingthelayouttoaPCboardwasgoingtochangethetimings.AnothercriticalpointisthatWriteMB'(theoutputenabletermdrivingthedatatotheMultibus)doesn'tgolowuntilafterthedatahasbeenlatchedintheS373s.Ifyoustartdrivingthebussooner,thereistoomuchnoise.Page2usesthetimingsignalsfrompage1todrivethememorychips.Thelowerright2/3rdsofthepageistheaddressdrivers.Each240/244drives2banksofmemorychips.(The240/244helpstominimizefluctuationsonthepowerrequirements.)The8addressbitsforthememoryarraycomefrom3places.The393isacounterthatgetsbumpedduringeachrefreshcycle.u4andu5drivetheappropiateaddressbitsfromtheMultibusduringRASorCAS.Thebankselectionaddressbitsarelatchedinu3atthestartofamemorycycle.Theyfeedu19andu16todriveRASandCASfortheappropiatebankofchips.TheS85,switches,andsipareusedforboardselection.Thereare10KpullupsontheaddressbitsfromtheMultibusincaseyouplugtheboardintoaslotwithoutaP2connector.ThePtermontheALS538drivingtheRASlinesiswonderfulforthisuse.ItcontrolsthepolarityoftheYoutputs,sotheycanallbeflappedatthesametimeduringrefresh.Pages3through6aredataconnectionstothememorychips.Page7containsalltheparitylogic.Duringawritecycle,theoutputofthememorychipsisdisabledandr7feedsahightotheS280s.Pages8through15arejusttheaddress,RAS,CAS,WE,andpowerconnectionstothememorychips.Page22showsyouwheretofindaparticularmemorychip.Yes,youhavetosearchuntilyoufindtheoneyouwant.Thechipsinthememoryarrayarenumberedaxyy,wherexisthebanknumber,andyyisthebitnumber.(Theparitybitisnumber16.)DebuggingThesimplestwaytofindasolidbuginamemoryboardistouseBurdocktopokearoundinvariousmemorylocations.Afteryoustoresomething,Burdockautomaticallyreadsthecontentsofthatlocationandshowsyouwhatitfound.Simplystoringvariouspatternsintosomelocationandwatchingwhatcomesbackwillprobablycatchmoststuck/shorteddatabits.PokingRefreshintheCPPannelwillrereadandredisplayallthelocationscurrentlysetupintheCPPannel.Ifyouhavetherightlocationsvisible,storesintoonelocationwillshowupatanotherlocationwhentheaddressbitsarestuckorshorted.MemTestistheworkhorsetoolfortestingmemoryboards.It'sacollectonofallthetestsIhavewrittentochaseanyparticularproblem.Whileitisrunning,thedecimalpointsintheMPwillcontainthecurrentbanknumber.TheMPgetskickedonceeachpassthroughmemory.IftheMPdoesn'tchangeeverysecond,somethingiswedged.Ittakes189passesbeforethingsstartover.That'sabouttwominutesforoneboard.WhenyouRunMemTest,itsetsthingsupandthenhaltsincaseyouwanttoadjustsomeoftheparmeters.lowBankisthefirstbanktestedandhighBankisthelastbanktested.Thedefaultistotestthefirst7banks.That'sthefirstmemoryboard.Ifyouthinktheproblemisonlyinaparticularbank,adjustinglowBankorhighBanktoskipthatbankwillverifythattherestoftheboardishealthy.PokingContinuewillstartthetest.Onagoodmemoryboard,MemTestwillrunforever.Ifanythinggoeswrong,youwillgettoabreakpoint.IflowBankandhighBankincludebank1,Pass184thorugh186testtheMap.ThisisoneofthecriticaltimingpathsintheCP.Yes,MemTestisalsoagoodtestoftheCP.sf@ (? vfEq_/ g{8v M%').03 69-x 69:?BlDPL gs("V%9')Q*/2l5D:?;BwN g1-i #(+/.06;N>@nL))q"$)+g-b.1X4g67G<@}DJ gv% #%O' .13H)4kZD #0&)-: 3i7:%=]B{DF^ gQY!O$>&*,z0q3I4s7 <=??E C)` m%/'*.4/6B8;+=?xDB; g}6"p4!D#%',.I04&7K;?)3l 'z))+04849i>@C> g- $&H(.113N8;=W@B1EeBV, g  !f$'> .3 ;?cA+ gd"$(_-16M;>TA)j g-P",'+}. 7o:i=WA' gpP; &(+06:Q;>Z@E& g>$q#8'9*1,2S58:<A$t g{eZ!!)T%"$)L.357<>@BF Q g[X "(e,z-/747 %(+/b3@6@8C;=]BDTn gi/!$)A, 5W:!=<@oAR gG8 "mPK)}).23B69;=@N gS!s-!p&*)W,7.4>68<AC D\L gJ) q !&)+-S/ 68: D\H gN" %Q'(4+/04pF])/b 8"x#(*@.2H65:< D g5' %(-e1Q3:t<,>(A+DC gW#'K*y,1A4y7d90<>EeAg gA  'd(q+.0469$?? g=D)Q!7%,M.147:r=BD; g X#k)7,0~569B;A9BE{9 g% &6*+1M4q6j8=4?@3BD8N g5)C%\'*-4::;@OC4+ g=l7  #(R-q.1398;@C_2 gA{"K%(+W,u.14:k=yAD0 g';!%'(+5-3/7,;V>@nC7E/5 g-s( gq%F) x$L&,:/14z7B9;{=A# gcX%(*X,0J15>7D9=MApE! gWm|)1;!-#3%('`r&c*e0 ,'&"'p)q' /"%z*N 4'l" !"&5',S/n2Q 8{:<?@'2'y T$]'*.}05;u gq E)- %/'lTVm$ Inter-OfficeMemorandum30ProgrammingtheMiscboardAllIOoperationstotheMiscboardareforwardedtoaninternalZBuscontianing4SCCchips,6CIOchips,andaDESchip.TheirspecsareintheAMDMOSMicroprocessorsandPeripheralsbook.Page15oftheprintsistheblockdiagram.TheIOpinsontheCIOchipsdomuchoftherealworkontheboard.IfyouaregoingtowriteanycodefortheCIOchips,youmustbepreparedtoreadtheprintstofindoutwhichpinstowiggle.Thediscussioninthenextsectionshouldhelpyoufigureoutwheretolook.Thechartonpage2showsthemappingbetweenMultibusaddressesandchipselection.NotethatAD11throughAD13comefromtheRHregisterwhileAD10isthehighorderbitoftheRregister.TheaddressbitsthatgetsenttotheZBusarethe8loworderwordaddressbits.TheCIOandSCCchipshaveanaddressingmodethatmakesthisuseful.MultbusAddressescontainstheaddressesofallthechipsontheZBus.TheCIOsinterruptonINT0.TheSCCchipsinterruptonINT4.ThereisnointerruptfromtheDESchip.ThedevicelabeledIntAckdoesn'tcorrespondtoaspecificchip.It'susedforprocessinginterruptsfromtheSCCchips.All4SCCchipsarechainedtogether.AnIntAckcyclegoesthroughthenormalZBushandshakingtodeterminethefirstchipthatisgeneratinganinterruptrequest,andreadsadispatchbytebackfromthatchip.TheSCCchipscantalktoalmostanykindofRS232gizmo.ThenormalCPmicrocodeincludessupportforSDLCmodewhichisusedbygateways.LogicdetailsBeware:Thebitnumberingisabitmixedup.Internally,forexampleonthezData,mData,PromADbuses,bit0istheMSB.OntheMultibus,bit0istheLSB.IfyouaregoingtofixaMiscboard,youwillprobablyhavetounderstandsomesoftware.Page1istheinterfacetotheMultibus.Page2istheZBuscontroller.Thetimingchartsareonpage16.BoththeCIOandSCCchipsrequirea6AScycledelaybetweenaccesses.ThisisenforcedbytheZBusPROMs,sothesoftwaredoesn'thavetoworryaboutit.TheZBusisonlyabytewide,sowritestotheMiscboardignorethehighbyteandreadssetitto0.Forspeed,thereisawordpathto/fromtheDESchip.IttransferstwobytesinoneMultibuscycle.Thewordpathbypassesthe6cycledelay.TheS74drivingzDSisneededbecauseofsomeobscuritiesontheResettimingfortheDESchip.(TheDESchipisn'treallyafirstclassZBuscitizen.)ThephonelinesandprocessclocksneedtointerrupttheCPU.That'sdonebythePROMinthelowerrightcornerofpage1.The2extrainputstothePROMcomefromtheMiscCIOonpage3.TheymightbenecessaryifasystemisconfiguredwithmorethanoneMiscboard.(TheIntPROMdoesn'tpayanyattentiontothosebitsyet.)TheMultibustimeoutlogicistheshiftregisteronpage3.TOXACKclocksthedataonthebuswhenthetimeouthappensintothesix'576sonthebottomofpage3.ItalsogoesintotheMiscCIOwhichcanbesetuptointerrupttheCP.The'576scanbereadviatheMiscCIO-themEnbitsfromtheBsectionselectthedesiredchip.Thereare2unusedbitsonthesechips.Youcanwirethemuptosomethingifyouneedsomemoreinfoforchasingaproblem.XACKTimeout.burdockisaBurdockcommandfilethatreadsthesechipsandputsthedataontheCPPanel.RunningthenormalinitializationmicrocodegeneratesaMultibustimeoutandthatwillclobberthesavedinformation.YouhavetouseBurdocktogettheinfobeforeitgetssmashed.Pages4and5containtheGermPROMs.TheaddressesforthePROMscomefromtheEPromCIOonpage4.TheEPromCIOalsogeneratesthePromOE'signal.Thedataisreadviathesf@ (? vfEu_, g Kq[) w6"&(/(028; BCZ6 gr$ $'+./2dw6Z6Z67:jDpX g qX}VQ $&(x,<1469;>WAuE V g?Y#E$')-/N25n8:=U@oD]U@ g~&:"x$ ')v-}0p269 @ADS gQS!%'Q)#U #\):.4; =A Ov g1 $(*-@2/5:;=A2DM g2Bso""%'\*Q,.2247 8O;w>MM?qMB*L' gJ b!#m *-047B;J g*> F#%(@H)C=!L$'S*026:;=CF] ge]"L'+ 365 6[;l>AtDD g = A#8'M)+&.2R4:?BwC gT#8 +J-368<>@[ Ag gWL &;)K,/2>)"? %'++-169=@f=E gc!9%G&)+u9 gGw6)uBS !"$(+F 14 9;=B=5 g/$X!#g%+-/0q2q2)a-?h!&(+w1H46= =f@0 )ta!'<*+-/t3 9BC+ g l;Hm!%*&,/259I;q<>@$B)l g_!d$(F)/u2557:`@]D<' go5# %(x- 01d6;$<@D & gm/ $H'*-0458;?#))[  $(7)/159=7?*pA##B)q#Ef! gZn!#%%(,.p0!!1q!48<>AE S g+ !# '( /26c9<&?{C gpMqQ"Z$'*I1) 6!#'+-129L=^?BD g">"$'*,.358:i;>AD gM3 x&5(++-1`358; =`@CD; gJT!#(+/2:3a8:<@&D gr "$(+/47h:%?A8 gh#),\/+26T9<?BEE g[z" *179?%D] g=S% %($+r-(/5;69A;>BDG g {)p" { {#q&H { {&'*[0\2p4 { {5|q8> { {94<@ Bm gh!$*-3A7:=?-B_D TVm$!Inter-OfficeMemorandum31MiscCIOandthemEnbitsareusedtoselectthedesiredpromchip.Thesocketsaregeneric28pinPROMsockets.Theyworkfinefor64Kthrough512KUVEPROMs.ThecanalsobeusedwithEEROMs,butunfortunately,thesocketsaren'tsetuprightfor16Kchips,sotheyneedabluewireforpower.TowritetheEEROMs,thesoftwaremustpulsethewriteenablepin.Page6containstheclocks,theDESchipandrandomnumbergenerator,andthebootinglogic.TheDESchiphasmanytimingconstraints.Don'tbesurprisedifitstopsworkingifyouchangeanything.Therandonnumbergeneratorisn'tveryrandon.Ithinktheproblemisnoisefromthepowersupply.Nobodyhascheckedintoitverymuch.ThebootingsectionpullsdownINIT/whenpowerislow,orBoot'hasgoinglow.ThecounterkeepsINIT/lowforatleast6ms.TheZeneristhepoweruppath.Itletsq1turnonwhenVCCgetstoabout4volts.Unfortunately,thenewpowersupplysturnonveryslowly,so6msisn'tenoughadditionaltimeforVCCtostabilize.Thebigcapaddsenoughextradelay.Boot'comesfromtheMiscCIOonpage3.(The339hasanopencollectoroutput.)Itcanbeactivateddirectlybysoftware,orconnectedtoacounterforuseasawatchdogtimer.Page8and9aretheSCCchipsandtheRS232levelconvertersfor8phonelines.Page7containstheV35(56KB)interfacesforthefirst2phonelines.EverythingiscarefullybiasedsothingsworkcorrectlywhenyouplugamodemintoeithertheV35interfaceORtheRS232interface.(Ifyouplugsomethinginbothofthematthesametime,thesignalswillgetORedtogether.The339sareopencollector.Theyjustpullhardenoughtooverridethetotempoleoutputinthe1489s.)TheModemCIOonpage10istheinputpathfortheextraRS232signals(DSR,RI)thatdidn'tfitontheSCCchips.Pages10and11containtheDialerCIOsandRS232levelconverters.TheDialersaresimply24inputlinesand24moreoutputlines.Thereisn'tanysoftwareyet.TheCpinsontheseCIOchipsallgoovertoacorneroftheboardneartheDialerconnector.Theymightbehandyifyouwantedtousethesechipsasaparallelport.AcountersectionontheseCIOsisusedtodriveloopbackclocks.Eachchipdrives2lines.Pages12and13arethefiltersandbiasingfortheRS232levelconverters.Beware:LiketheDLion,aDicentradoesn'tworkwithCodex9600seriesmodems.IfyourDicentraisconnectedtooneofthem,IsuggestyouremovetheappropiateSIP.AMesamachineneedstwoclocks.Theexactrateofeitherclockisn'tcritical,theprocessorheadexportstheappropriatevalues.ThePulsesclockis32bitswide,andgetsincrementedevery10microseconds.Thisisusedfortimingshortintervalsandtoderivethetimeofdayclockifthemachinedoesn'thaveanybetterhardware.OnaDicentra,thePulsesclocklivesintheMiscCIOonpage3.Thesecondclockisusedbytheprocesstimeoutmachinery.Itneedstogenerateaninterruptevery50ms.OnaDicentra,itlivesintheEPromCIOonpage4.DebuggingaMiscboardTherearetwosetsoftestsforcheckingouttheMiscboard.Thefirstsetisrawmicrocode.TheyarerunfromBurdock.ThesecondsetisMesacode.TheyareincludedinOcsar.ThereisasummaryofthissectioninMiscDebug.doc.IruntheBurdocktestsbyloadingMiscDebug.docintoafilewindowandcopyingthenameoftheeachtestintoBurdock'sCPwindow.TheBurdocktestsallbumptheMPeverysecondorsowhilethingsareworkingok,andhitabreakpointifanythinggoeswrong.Beware,someoftheinputstothebigchipsfloatlow.(Iguesstheyarejusttryingtoconfusepeoplelikeme.)sf@ (? vfEq_/ g>` $%),0486; ?BK] gRp]]tq]^ #%).>p1]]24q8;]]89<?AC[ gpq[[+q[[*g C"'5+.147:<?BCZ9 gv9`p=Z9Z9q"qZ9Z9"#&1+/258<W)? -"%)+16N <?B V gTl$ +[/P1I7E8: =BD]To g($**-+0B5`6q:<B CR g-[$ "(C+,q/PL)'W#'+0*146:=.AD<N grSP :#j$'>*!.-/2 6F8c;=m?AEL gn: *!,/s38;=@EPKV gj $!j#'d)3 .14n7:v?CI g"aK "&T'+U-026;@BE#H g/$ '8(*/1N35q6<E)zfM#(%(?,/ 689>.C)k8 " (+)-z0D1j59 @AnAh gE#&)*0269[ gH,R"0 (#+.e1J49;B@C'Ds5 gFn +""$';(*!.x08269<&@f 3Y g,V#)$'_*.0G1z6m9;]@gE1 g6m #(H+.24 /6)2"$)}+.25 w,); U&*.#1658<BSC+ ggI{#5$T) +0@2 9%q()P M$'+ -/v3\69>A& gr  "~%C)^,.80 2608; C`%I g^ Eq<!%)/137:X=?ZB E# g>5")+q,249 <?A_C! guo*|!"c%').3 :<?A S gWF%D&)+m-2s57:u g?tq),/!'*,s/4!69;=a@  g?8 %'),0J36";=rAEe g w$K () +-3n6r8b=@  g?i"A&'*-J/29;mB) #a&).0`265:(<AD] g  )Mv!#&),/1479<{@lB  w g TVm$Inter-OfficeMemorandum32EveniftheMiscBoardisprettyconfused,themachineshouldstillBoot,andputsomethingintheMPwhenyoupoketheBootButton.Ifitdoesn't,checktheclocksandINIT/logiconpage6.CioTestmakessurethatall6CIOchipstalktotheZBus.Ofcourse,theMultibushastomostlywork.SccTestmakessurethatall4SCCchipstalktotheZBus.DataTestchecksalotofthedataportscommingoutoftheCIOchips.Itneedsanechoplugonthedialerport.LatchTesttestsallthelogicforlatchingtheinfowhenaBUStimeouthappens.TheCP,theMiscboard,andanyMemBoardsneedP2connectors.DESTestisagoodtestoftheinternalZBus.ThisistheonlywaytotestthewordmodeinterfacetotheMultibus.ClockTestteststheclocksasusedbytheMesaEmulator.Thereisn'tanythoroughtestofalltheclocksonalloftheCIOchips.EERomTesttestsapairofXicor2816EEROMchipsinthesocketslabeledGerm4andGerm5.Beware:Thisisadestructivetest.Thefirstpasswrites0s(MP0-2048).Thesecondpasswrites1s(MP2048-4096).Thethirdpasswritestheaddressofthewordbeingwritten(MP4096-6144).Thenitfallsintoaloopcheckingwhatthethirdpasswrote.Afterthefirst3passes,theMPhasdotsonandgetsbumpedbyoneeachscan.TheEEROMscanonlybewritten10,000times.Thatwon'tbeaproblemwhenusedtostoreaparameterfile,butyoucouldwearoutachipifyouaren'tcarefulwhendebugging.TTYTestrunsall8linesat9600inTTYmode.Itneeds8echoplugs.Beware:Thistestdoesn'tcomplainifitdoesn'treceiveanything.Stopitafterawhileandverifythatsent*andrecv*countersareallgoing,andaboutthesame.Theloopbackclocksshouldallbeflappingifyouneedtoscopethem.It'snotuncommontofindanSCCchipwithabrokensection,orasectionthatdoesn'tworkinaspecificmode.SDLCTestrunsthefirst2linesat56KBinSDLCmode.Itneeds2echoplugs.Usethe56KBechoplugsinsteadofthenormalonestotestthe56KBpath.Beware:Thistestdoesn'tcomplainifitdoesn'treceiveanything.Stopitafterawhileandcheckthecounters..MR108isthenumberofpacketssentonline0..MR10Aisthenumberofpacketsreceivedonline0..MR118isthenumberofpacketssentonline1..MR11Aisthenumberofpacketsreceivedonline1.Packetsonline1areshorter(.MR214)thanpacketsonline0(.MR204)sothereshouldbemorepacketsgoingthroughline1.ThefollowingtestsarewriteninMesa.TheyareincludedinOscar.UseChattotalktoit.Mostofthetestsrunforever.Typesomethingtoterminatethem.PhoneLineThrashrunsall8phonelinesinSDLCmode.Youneed8echoplugs.Thefirst2linesrunat56KB.UseeithertheRS232echoplugs,ortheV35echoplugs.Theother6linesrunat9600baud.All8linesshouldreceiveasmanymessagesastheysend(less1or2).Ontheprintoutchart,GisGood,BisBad.Iflines2through7don'twork,eithertheclockissick,ortheSCCdoesn'tworkinSyncmode.(TTYTesttestedthedatapaths.)Itnormalyprintsoutacrypticlineofjunkwhenstarting.Eachclumpof3or4charactersisabadpacket.I'veforgottenwhatitmeans.Lookinthecodeifyoureallyneedtoknow.Ithinkitisaninitializationbuginthesoftware/microcode.That'swhythefirstpacketoneachlinegetsmashed.TestDialersNoisyflapsall24RS366lines.(Youneedanechoplug.)TestDialersQuietlyisthesame,butitdoesn'tprintanything.It'sintendedforusewithascope.sf@ (? vfEq_/)A"(+N05.7;X>@q] g"G A# ()*046r:=[AE[ gYe)Y !$(+h-'/35:w<BEeW g #%&*-0c24qUB) !T$r( .*02585<:=ACS gQ)}c"+'U),~0&1C49?JBDOw gk!% ' L)\"C'o+|.0.258:=)?C>KT g H)5Z!$]&f(,37:<BE[G1 gW~D)"i $p(MDD)qD-=1 25:r?sD\C gwpCCc.c # qC%(+.24K7p<?DAg g~ Q W#'+D-247^;?C? g Pb"(b+.1|4r8<7>AgB> g^c&#%}(+F.p1r>>2+q5>>69&<6>B@ClE: gwp 8N)Va $%)^-/:3747w<8N8N<AeD6 g#Gq6)\,.91269=@D]4 g $'*-37K@@E3X g{)0)1] k"|%),M-2i7~9a:?hBV/5 g,)D#O%)*/63|5 9:T=AD+ god8 %(*-F/3w7a++8T<?B)j g:q)j#'B(+-037|9?C E' g* "$'*,y.4;6; @BE& gS:t;"(%'.)+.13J5:<A$t gS2 %])(,O/469p:>AC" ggF$H& Q)2!#'+-s349;?C@CEf g"K(*0.)  %2(j*.b258:$=hAfD< g e="M&)-/2486<5? BC g ="'Q(,2447<:p=w>@`B^D8 gKl# $').=/s3 6:=0@B4EP g,C#*P.X038f9?jCeE g/P!'$(*^+-7.\ 467/9>zA!B gFL !$(g+-l126 7s8: BEf gq"$',!.'1X46)2L A",&*/-136a:^=gB* x g 2 & (a.0Z257 ;TVm$Inter-OfficeMemorandum33DESFixedPatternTests,DESLoopECB,andDESLoopCBCaremoreDEStests.Iftheydon'twork,butBurdock'sDESTestworkedok,thechipisprobablybroken.DESTestusesonlyasinglepattern.Thesetestsusemanypatternsandalsotestthesoftwareandemulatormicrocode.TestMesaClocksisagoodtestofallthehardware,microcode,andsoftwareusedtoimplementtheclocks.(It'sleftoverfromchasingsomenastyproblems.)Thefirst3sectionssampletheclockandprintoutthenumbersandthedifferences.Ifthedifferencesineachclumparenotveryclose,somethingisfishy.Thenextsection(scanningforHickups)islookingforcaseswheretheclockgoesbackwards.ThelastsectioncomparesthetimeofdayclockwithaWAITforonesecondasdeterminedbytheprocessticker.Thefirstcolumnisthenumberofmicrosecondsineach"second"ofwaiting.Thingsshouldbequiteclose.Theothercolumnsarethefineprint-lookatthecode.TypingSTOP(whilethemouseisinyourChatwindow)toterminatethecurrentsectionofthetestsoonerincaseyouaregettingimpatient.Whenyouarealldone,usetheBootButtoncommandtotestsoftwarebooting.JustwatchtheMP.Itwillbeobviousifitworks.10MBEthernetBoardsYouneedatleastoneofthem(evenifitisn'tconnectedtoanycoax)becausethat'swheretheDicentragetsits48bithostnumber(akaProcessorID).The10MBboardscan'ttalktothemselvessoPupEchoingtoyourselfdoesn'ttesttheboard.Thesoftwareissmartenoughtorecognizethiscase,andbypassthehardwaresoaboardwithoutanytransceiverwilllooklikeitisworking.Toreallytestanything,youhavetoechotosomeothermachine.A10MBboarddoesn'tneedaP2connector.SwitchesandJumpersThereare2switchesandahandfulofjumpersonthe10MBboards.TheswitchmarkedADR17/islocatedoverneartheP2connector.Theyshouldbeallopen/off.Theotherswitch,markedADR13/,islocatedneartheEthernetAddresslabel.Forthefirstboard,onlyswitches6and7shouldbeclosed/on.Forthesecondboard,closeswitch4too.Forthethirdboard,closeswitch3(andleave4open).NeartheEthernetAddresslabel,thereshouldbe5jumpers.FourofthemshouldbeonINT2,IOWC,IORC,20ADDR.INT2isn'tmarked.It'stheobviousonetwostepsleftofINT0.Thefifthjumpershouldbeparkedononeofthepinsof24ADDR.RepairTogeta3Comboardfixed,senditbackto3Com.Theywillrepairorrecycleitforafixedprice.Idon'tknowthedetails.3MBEthernetBoardssf@ (? vfEq_/)lI"%)M+/926,8q;?8BD] g?"q'U)+/0k67;;AC[ g wHD+!|#,(U*-02[7:W@ Yd)kS !$&(+[1 9?<4AEeW g#&+/3Y :i=x@AV g_!E&)+ 3C47 > ?BTn gpB $'*/58.>7?DR g3a $'q*.47Z:<`?BEQ g#H #%(%- 1L477"<*=@E[Ox g !i&+#/158;?HDM gBW9!f&;*j.1'578<4?EeL* gW "o$)j+.037 I)BN?  "&3*1)25e:@BCH gA_sAh gx=q>)8-S"A&'b(+2536:/?QB

=@qB8M g/ )&7(,.3 5Y;R=> B6 g  ?!')-0K6k99<>]AC4 g2) "$ u/2 g!q+)*~%&,.%04)f)3!#f(V+.13 :>SCE$' g%C)%*&+E.X06N;?@AD<# gF "$| ++-0$48oCE gN M$ ',U.168;n>ADB) g?O"!$'&(*-/u gq)K #%(U).i148:O>@9BqC g1:s C giCTVm$Inter-OfficeMemorandum34The3MBboardscanheartheirownpackets.ThismeansthatPupEchotoyourownhostnumberona3MBnetistestingmostoftheboard.Thepacketgoesallthewayouttothetransceiverandbackinagain.Whensending,thecontrollerdoesn'ttellthesoftwarehowmanycollisionsapacketencounters.Thusallpacketslookliketheydidn'thaveanycollisionswhichmakesthecollisionhistogramabitdull.(Iflotsofpacketshavebeensent,youwouldprobablybesuspiciousenoughtoguesssomethinglikethis.Thisparagraphismostlyaremindersothatyoudon'tgotoofaroutonalimbwhilechasinganobscurebug.)Thereisastatusbitfor"toomanycollisions".Itactuallymeans"triedtoolong"ratherthantoomanycollisions,butitwillgooffifthenetisbroken.Beware:OlderversionsoftheseboardsfromSUNorCADLINKneed3bluewiresandnewmicrocode.Don'tuseunmodifiedversions:asidefrommashingyourpackets,theywilloccasionallytrashthewholenet.Youcanruna3MBboardathalfspeed(foruseontheVoicenet)bysimplychangingthecrystal.A3MBboarddoesn'tneedaP2connector.SwitchesThereare2switchesonthe3MBboard.Ifyouholdtheboardwiththechipssoyoucanreadthem,P1willbeonthelowerrightandP2ontheupperright.Theupperswitch,S507,isthehostnumber,andthelowerswitch,S505,istheboardaddress.S507isthehostnumber.Closed/onisa0andopen/offisa1.TheLSBisontheleft(1)andtheMSBisontheright(8).Thebitsarewiredbackwards.Isetthehostnumberbyturningtheboardupsidedown.S505isthedeviceaddress.Forthefirstboard,theyshouldallbeopen/offexcept7.Forthesecondboard,closeswitch1too.Forthethirdboard,closeswitch2(andleave1open).Forthe4thboard,close1and2.(Sofar,thesoftwareonlyusesthefirst3boards.Itwillbetrivialtoaddmore.)BluewireThe3MBboardshaveonecutandonebluewire.(Wehaveseveralolder3MBboardsaroundPARC.Theyneed3bluewires.)Thetraceontopfrompin4ofU310(theupper2951)goesovertotherightandvanishesunderanLS533.Cutit.Onthebottomoftheboard,runa1/4inchofwirefromthatpinovertopin25ofU308(theother2951).Thatpinwaspreviouslycut,sothewirewillhavetostickthroughtheboardandreconnecttotheremainsofthepin.12V(akaRedorDorado)TranscieversIt'seasytomodifya3MBboardtoworkwithaRedtransciever.Thetranscieverissetuptoget+12onthe7thpairofwiresinthedropcable.Onthetopoftheboard,cutthefattracefromthepowerconverterovertotheconnector.Attheconnector,addajumperfrompins22to24(GND).Atalongwirefrompin23tothe+12ontheP1connector.That'saboutaslongarunasyoucangetontheboard.The+12isthe4thpinfromtherightedgeoftheP1connectorifyouholdtheboardsoldersideupwiththeP1/P2connectorstowardsyou.(TheP1willbeontheright.)sf@ (? vfEq_/)"#B&W+.3 5;=AD] g:[!|%&)h-05a8:=B@ABD[ g LKYd)q1 "'*-q3K6: A.BW g 9/!4#&+.Q0 6;?AAV gU#&*?-f04"9; B*Tn g&PZ!()./O5R7&:<@qBrDR g b  %!(,.6/f3C5g7:> EQ gk G$g'*- 4S68N; =?R@C7EOx gwL)tGi"&*'-/z69;/>'ADOKU g H ;%)/,i14:<? I gqG2)6V!~$J(**-T/Y158o:j>DE gC)' 9!c#i u? gqcBDi/2 gF H#%'+Y/27/8[;?@.Dh- g><!#%+~.1468<>tA&C+ gu( gq%D)-t #A&%(,E/3 6|;9>B# g"b!%g(=+-0 3r578<~?TCU! gT "E&K(?,/1K36:<>CPE N gH"Z$&n(L)-0z48!;`=@q  g7F8!&O(,/]57L9>@BuV g?[2e q)toS#B$(\+n,/ 69 @`AEe_ g[W "$(I)j'!9#%),.390@f < gl P W#&(*s,b1348;>A BD g' !$&)*-|/-14w68;0?B_E gH< W"$&,.g1)4f6:>AC F g " %['a* +.0c nTVm$Inter-OfficeMemorandum35Programmingthe3MBboardThetrickypartabouttalkingtothe3MBboardisthatthethereceivedatapathhasafrontporch(inthe2951s).Thisaddsawordofpipelinedelay.Thusifyougetareceiverinterrupt,andreadastatuswordthatreportsthatthebufferisempty,readanotherstatusword.OddsandendsThe3MBboardswon'tworkonanextendercard.Theproblemisthatthereistoomuchnoiseand/orcrosstalkontheaddresslineswhenthe2951sdrivingthedatabusturnonduringareadcycle.TheoutputoftheLS521(U506)generatingBUSSEL\glitches.It'sworseifthechipinU407isanS138ratherthananLS138.MuxboxesandREDTranscieversThe3MBforuseatPARChaveallbeenmodifiedtouse12Vtranscievers.ThesearetheonespaintedbrightRED.TheyarealsousedbyDoradosandEtherphones,sothereareplentyofthemaround.Thechangerequiresacutonthefattracefromthepowerconvertorbox,1longwiretobring+12VfromtheMultibustotheEthernetconnector,and1shortjumperattheEthernetconnectorforGND.ThereasonforthischangewastoallowDicentrastoworkwithMuxboxes.Unfortunately,thatthatdidn'tworkoutverywellsofar.Staytuned....DebuggingTheT1testscanalsobeusedonthe3MBboard.TheT1testssendpacketstoallhostsonthenet.Youprobablywanttodoyourtestingonaprivatenet.T1Thrashwillcomplainifanybodyelsesendsapacket,soyouprobablydon'twanttosharethenetwithanybody.Iuseoneofthesmallwidgetswith2redLEDsand2greenLEDs.(Warning,youhavetoplugyourdropcableintothecorrectend.)T1BoardsMuchofthelogicwassnitchedfromtheStanford3MBEthernetboard.Inparticular,theMultibusinterfacelooksjustlikea3MBboard,anditisallsetuptoretransmitaftercollisions.Tothesoftware,aT1boardlooksjustlikea3MBboard.UseEthernetOneintheparameterfile.Readtheprevioussectionformoreinformationaboutthe3MBboards.TheT1boardcantalktoitselfifyouhaveanechopluginstalled,butitcan'thearitselfinnormaloperation.Thesoftwaredoesn'tunderstandthis,sodon'tbesurprisedifnothingworkswhenyoutrytoPupEchotoyourselfviaaT1board.AT1boarddoesn'tneedaP2connector.SwitchesJustlikethe3MBboards,thereare2switchesontheT1board.Theswitchiny29isthehostnumber.Closed/onisa0andopen/offisa1.TheMSBisontheleft(1)andtheLSBisontheright(8).Unlikethe3MBboards,thisisthewayyouwouldexpect.sf@ (? vfEu_, g Kq[)!"%(,s-025Q9<@B~CZ6 gf ;!w%&,=0Q35U8:z;@ X g9c9"8%'f+-149=uU@ gqQ)!!#%+Y.17P8;?F@C=PI g #'(*-4058;=@BN g Q' %) 07S<?.C7DL gw%E6"$uI gB qF])f #%)I/603z6m >>BPDD g &"|%K(*02 ;2<@BC g;$1%v'*,.2)58& D" gWQ!"5%*,.!/15>6 =@ !' g&Y"^%')),1!4 @ g(&R!%# ,026`)L"R#&f)+.2 7:O;>B Ef] g.  $ ,/ 046<=C g@#%&):) " u gq) R"%/&d+-0-2I!)]@!'Q.&/02$4:AcD] gTVm$Inter-OfficeMemorandum36Theswitchinaa20isthedeviceaddress.Forthefirstboard,theyshouldallbeopen/offexcept2.Forthesecondboard,closeswitch8too.Forthethirdboard,closeswitch7(andleave8open).Forthe4thboard,close7and8.Notethatfirstandsecondrefertothecombinationof3MBandT1boards.Youcansetthemupinanyorder,butitisprobablysimplerifalltheT1boardscomeafterallthe3MBboards.T1rulesThefineprintisBellSystemTechnicalReferencePUB41541.Besureyougetanuptodateversion.ThelatestoneI'veseenismarkedJanuary1983.TheMay1977versionisverydifferent."T1"isn'tanicecrisplydefinedinterfaceyet.ItwasdesignedtocrammanyphoneconversationsunderthestreetsofNewYorkCity.Ifyouputrepeaterseverymile,youcanget24conversationsintoasingletwistedpair.Todothat,phonecompanytakes8bitsamplesoneachline8,000timeseachsecond.24lines*8bits/lineis192.Theyadda193rdbitforframing.193*8000gives1.544megabits/second.That'showIremembertheT1bitrate.Thebasicrulesarethatyouhavetokeeptherepeaterhappy.Thatrequiresthatyourtransmittingfrequencybecloseenoughtotheresonantfrequencyoftherepeaterstankcircuitandthatthedatapatterncontainenoughpulsestokeepthetankcircuitringing.Thepulsedensityrestrictionisabitcomplicated.Aslongasyouhaveatleastonebitonineach8bit"voice"sample,youwillbeok.Thatmeansthattherewillbeatmost150sinarow.(Iftheframingbitisa0,andthepreceedingsampleis10000000,andthefollowingsampleis00000001,youhaveatotalof150s.)Theolderspecscalledforatleastthree1bitswithinevery24bitwindow.(Ithinktheyforgotabouttheframingbit.)Clearly,theyaretryingtorequireatleastone1bitwithinevery8bitvoicesample.Ithinktherealreasontheclockneedstobequiteaccurateisbecauseofthedigitalmuxingschemethephonecompanysuse.Anaccuratecrystalisgoodenough:0.005%is50ppm.Thatdoesn'trequireanythingreallyfancy,butitisthebestofthestandardsmallpackages.Attheanaloglevelonthewires,a1bitisapulseinthemiddleofabitcell.Thepulseishalfthewidthofthebitcell.Eachpulseis3voltsinto100ohmbalancedload.Fora0bitinacell,thereisnopulse.PulsesalternatepolaritysothattheDCsignalis0.Withthisarrangement,itdoesn'tmatterifyoucrisscrossapairofwires.Thereisnoextraclocksignal.Youhavetorecovertheclockbywatchingthedata.Twoconsecutivepulseswiththesameparityiscalledabipolarviolation.Thenewrulesrequirealotofmumbojumboontopofthis.Youhavetoputafancypatternontothe193rdbitsotheycansyncup.Theyalsowanta6bitCRCforthepreviousframe.Idon'treallyunderstandallthefineprint.Onegoodideaisthattheyhaveawaytoletyousendasampleofeight0sbysendingaspecialpatternwith4pulsesthathavethewrongparity.(Ifyouwouldexpect4pulsestobe+-+-,theyinsteadsend-++-.)ThehorriblecomplexityofthenewrulesisnotneededforlocalT1linesorsomemicrowavelinks.IplantoignorethemuntilIcanunderstandthem.Ithinkitwillrequireafancybigchipbeforeitissensibletofollowalltherules.AnotherinterestingcomplicationaboutthewaythephonecompanyimplementsT1.IfyougetalongT1line,theywillmuxittogetherwithotherT1linesanddemuxitattheotherend.Thefineprintofthewaytheydothisrequiresthatthetransmitclocksatbothcustomerendsbeinsync.Theyusethetransmitclockasthereceiveclockatthedemuxer.Ifyourclocksarenotinsync,bitswillgetdroppedorinserted.(Idon'tknowhowtoimplementsomethinglikethis.)sf@ (? vfEq_/)b$gZ#)+.91%58=;?>AC] g&#2'](+6-0$3~7;?C@iC[ g !a"%f&*-\0@37:<?& Z9 g&\Xm #"&(*-&19356A,C8EePL gn8! $D%*0436:3=B|DN g L))J %+./28:>BJ g Y!Y$(7+-!/2f8I<?|B9DH g\  #' )B+Y.28<_=?EG3 g/Wy!R#(&S'x(./m2J58k9=V?dAE gn~$Z(}+,3!579C)9x !%x'^*-37;M@CAi g ' &%$&)Y.5|7H9?B? gON"',+-_03q6;'@lCu> gB ` %'1*h,3/2l4!7d:-@VCD4?tBD: g 5 #u()l/2g4:?V@9$ g7 y$%'+.7/3&68:?,BD7} g1Ns"a$*-2-5J7;=tBIC5 gGe]!C3Z)+ y#&(*t-3U49;=B1 g`,!$)-/q28z=:>C0 g%i#v%'M(+-/27;M-))AL#$& (+)*.n0!2728:<@?'BE+ g1m#z!%&("+e.:039=#?@B$D?E*A g; #(*f-&/w2 57C8<0> ( g #n !z"%'+/1'3G6:>BEe& gICC!{$( /\369<@AE%K g% ")+D!O#3(~-/4136:=?_B C_!) g; "$'*o. 04b569<?A g]+ X"K$'+C.J146-8<?]@CfE g2|J!&(,1z45:*= @gB3 gh#?$&+o.~316m) !$()l+0257;<@/ g ) !$k +/n0s45b8 <=ADh g xR z") M #q'Q),.39 @jBD]F g 0!"W'*.v036;@fD gO+k!$*,/R48:=C gc-!%&&)J-13@5;=V@D P g)!#S(*.$156=Dh g TVm$Inter-OfficeMemorandum37OurpacketformatThecriticalobservationisthatSDLCpacketsdon'thaveanylongstringsof0s.Thusifyouinvertedthedatabeforesendingit,anSDLCpacketwouldkeepaT1linehappy.Unfortunately,Icouldn'tthinkofanyreasonablywaytouseanSDLCchip.(AMDclaimstheirAMZ8036willrunatT1rates.Ihaven'ttriedit.)It'sactuallynottoohardtodothebitstuffingorunstuffing.JustletaPROMwatchthebitsgoby,andhaveitmaskofftheclocktotheshiftregisterwhenitneedstoinsertabit.Unfortunately,that'snottheonlyproblemwithmakingSDLCpackets.Icouldn'tfindanyreasonablewaytochecktheCRC.(The9401checksforall0s.TheSDLCexpectsamagicconstant.)Iendedupusingthepacketformatfromthe3MBEthernet:preamblebitandall.ThathadtheadvantagethatIcouldputascopeona3MBEthernetboardandgetafewsamplepacketstousefordebugging.Sohereisthepacketformat:Anidlelineisallflags.Aflagis10000001.(That's6zerosinarow.)Startwitha3MBEthernetpacket.That'sasingle1forthepreamblebit,n16bitwords,andawordofCRC.ThepreamblebitisincludedintheCRC.(ThefineprintontheCRCisthatitusesmode0onaFairchild9401whichgetsclearedto0sbeforesendingthefirstbit.)Startingatthebeginning,ifanyplaceinthe3MBEthernetpackethassix0sinarow,inserta1bitafterthe5thzero.Thestuffedbitdoesn'tchangetheCRC.Youhavetocheckforsix0sintheCRCtoo.Notethatyoucan'ttellthatapackethasendeduntil7bitsafteritended.ThismakesCRCcheckingabittrickysinceyoucan'tbackuptheCRCchecker.ExtrasignalsattheconnectorThereareseveralextrasignalsontheT1connector.Theideaisthatjumpersintheconnectorcaneasilymakethenormalcasework,butthattheextrasignalsarethereincaseyouwantthem.Someoftheirpossibleusesinclude:Youcouldsimplyexternallyclockthetransmitter.Thiswillbenecessarytousealinethatthephonecompanyissendingthroughtheirmultiplexorscheme.YoucouldmultiplexingseveralT1boardsontooneT1linebymaskingtheexternalclockpulses.Twoboardscanalternatebitsorseveralboardscanalternatebyteswithoutviolatinganybitdensityrules.YoucanalsomakeasharedlinelooklikeanEthernetbyusingLine.Defer'andLine.Carrier'.Thetransmitterisallsetuptoretransmitaftercollisions.Therawlinecouldbesharedwithvoiceservices.TheT1boardwillusealltheavailablebandwidth,butitwillalsorunwithanyreasonableportionoftheline.(Ifyougotooslowly,thepacketswilltimeoutbeforetheygetsent.)ExtensiveexternalhardwarecouldalsobeusedtomaketheexistingboardconformtothenewT1rules.LogicdetailsTheclockingontheT1boardisabitugly.Exceptforafewplaces,alltheclocksarederivedsf@ (? vfEu_, gKq[)m '!&5+ .14p7;=?CD]Z5 g5 9!#',:0V3469[= X g jW  !y$K%(c*N.16n:=DhV gPX-sTk)D "%c',. 58~:;@DR g+=o$!y#'),/A4B89=?fCSDQ g q"Y(+g05:};AMDsOu g chDS"&k).r02578=<ACM g KS)&>D6 $(Q*. 4:(<9>A!D\I gCp $j&s'+047p9:=B4H g E)/JptCx9'!j")5-/24<5fB9x'#')'-.G028;m<>@@K,nN&%:'W(.i02v6V9K?d]3 g"n#),038^: ;@=CK;x= a"b%'*-v37w9<=?o@9K@t-"%*h,1C58J<*?9B8LK-j?M q5)YO h!%(D,^/03]67{@+ g<5 #&E)+P.35Q8:f=B?C3*= g==x')> $& .@1a46 <&=@WADF& gSi$' /R#)B ("$)p,/b14J6Q;>3C! gz #D%). 0679>Ds P gB)* "%()/q1K4 <> - g? ;A %}( )" %=(.`1O37:Q<>AY g FrT#/% ,1369#;3=@Bc gQh"%)c $'])S,.I24i9y=vCD@ gUqu gGq )B2{!b"#%)"-/03c79;?B =TVm$Inter-OfficeMemorandum38fromthesamecrystal,butmanysignalsareclockedonthewrongedge,orclockedbyPROMoutputsratherthancleanlyqualifiedclocks.The2901srunat162ns.MostofthesmallPROMmachinesrunat81ns.Page1startswiththeanaloginterfacetotheline.(ThankstoBillGunning.)Itmightbepossibletofindachipthathad2or4comparators,butwehadtheLM361sinthelab,andtheyarefastenough.(Thepulseisonly325nswide,somanycomparatorswillbetooslow.)R.Refishalftheaveragesizeofanincommingpulse.Thetransistorisneededbecausetheleakagethroughall3LM361smightbetoohighiftherewerealongsequenceof0sontheline.Duringnormaloperations,theinputtothetransistorstuttersduringeach1bit.Thesecondpartofpage1istheclockrecovery(CR)section.TheCRPROMisrunningat8timesthenominalbitrateoftheline.Everytimeitseestherisingedgeofapulse,itputsoutatickonR.MyTick.Ifithascounted8tickssincetheprevioustick,itputsoutatickanyway.Ifarisingedgehappensinastrangeplace,itassumesithaslostsyncandreinitializesitself.Actually,itdoesn'tputoutatickoneveryrisingedge.IfLine.RecvMaskislow,thetickismaskedoff.(ThinkofitasanANDgatethat'sbeenpushedintothePROMtosaveagate.)That'showthereceivesideimplementsmuxing.Similarly,Line.R-OutgoestotheconnectorandcomesbackinasLine.R-Insoyoucanbypassalltheanalogsection,anditspossibletimingdelays,ifyouarebuildinganexternalmuxingbox.Thebottomofpage1isthebitunstuffing(BU)section.ThemainpurposeofthisPROMistoskipoverthestuffingbitsinthedatastream.(PdstandsforPhaseDecoder.Onthe3MBboard,Pd.CarrierandPd.ShiftcomeoutofthePhaseDecoderPROM.)Duringapacket,Pd.ShiftwillnormallybehighintheclockperiodimmediatelyafterR.Tick.TheBUPROMcountszerobits.Whenitgetsto5,thenextbitisskippedbynotturningonPd.Shift.SinceBUPROMalreadyhasallthelogictowatchtheincommingbitstream,theitalsodoesthecarrierdetection.The7FFsareusedtodelaythingssothattheCRCchiphasn'talreadyprocessedtheflagwhenthePROMfiguresoutthatthepacketisfinished.Atthestartofapacket,Pd.Carrierisheldoffwhilethedelaychainisgettingfilled.Duringthisperiod,thePROMhastocountto7aswellaskeeptrackofthenumberofzeros.That'swayitneedssomanystatebits.Notethatitdoesn'tmakeanysensetobeshiftinginnewdatabits(Pd.Shift)whenthereisn'tanycarrier,sothatbitcombinationoutoftheBUPROMcanbeusedtoindicateanAbortsequenceontheline.(TheexistingPROMdoesn'tdothis.Thistrickwouldconflictwithloadingthe7delayFFs.)Thetopofpage2isthereceivercontrol(RC)section.Rx.Wordcomesupwhentheshiftregisterisfull.Rx.FdOutistheoutputfromthehostfilterram.Remember,thisboardisreallya3MBEthernetboard.Hostnumbersareonly8bits,sothepacketfilteringcanbedonebyindexingintoabitvectorstoredinaRAM.TheRAMisonthenextpage.Rx.Enable'goestotheshiftregistersonthenextpage.TheyneedtogetdisabledwhenwritingintothefilterRAM.ThecloudofFFsonthebottomofpage2arethehandshakingsignalsto/fromthe2901sandtheMultibus.C.Eqindicatesthattheloworder11bitsoftheALUarezero.That'susedwhencomparing2pointersintothepacketbuffers.R.Overflowmeansthatthispacketdidn'tfitintothebuffer.R.AbortandR.CrcErrarejuststorageforthoseerrorbitsuntilthe2901scancopytheendingstatusintothebuffer.R.ReadyReqindicatesthatthereisawordofdataforthe2901s.R.EndReqtellsthe2901sthatapackethasended.R.InterrupttellstheMultibusthatthereisdataavailabletoberead.Page3istheshiftregisters,theholdingregistersbeforeorafterthem,andtheAddressFilterRam.TheaddressfortheAddressFilterRamcomesfromeitherthehighbyteofthereceivershiftregister,orfromtheMuldibusviaanLS240onpage9.Theonlytrickypartofthesf@ (? vfEq_/ gfb!I%(E-b/26V:;ApC&_/_/Cq] gv#z(*.1357;&<?ppC&]]Cq[ gpYe)8!'s):+.4I68?AE#W gA%CI  "# +.U0r35s:AXDV gHl!%)i+). 69^;J=AETo g[>j>#S'-) /15:=AR gV- Q!%8(),24h6 8$:=BWQ g mw& #(M,/1#N)M!J#'L,0g5c8Bp:NN;|qN>@=E{L g <!$(+-I02x6=9;4BCUD gylP $o) / 7$:,;>D]C g"F -#%*I,\.3e8};X=UBAk gNX$)>)|[ " )j,148'=g?pA>>Bdq>E=H g4Ay" #-&Q+7-2:48>A$C; g I3"%8&)6-p2;;3>q6;;6X7H<= A9 g:!&9 .1]6C9#p;99<^q9?D8R g`xJ6 F"c#(*-a2@4F5)pK55q5* U"6$')i-R/68=?A&C40 gJ  #6&(J, 06247f;>)B@2 g-p|22#q2!X%(1*-<128i:S<?AHBa0 g % E$')B-169m>0p@00AHq0D/: g'"$J&+-158:=>0@C- g+)"R&').0369l ?C)p gcUu %g')+p.)p)p/3q)p2|5 6:=;AC' gMR p"''"q'%*,/25:)?B+&! g#)Yk$(,_1a7l;=AC! gH*$o'*:-603;>=ACJ W g ;h$'*I+.03 7<?}AE g ' B!p# #q%&p)g*;q,./2V5^8 ?CD gJZ#&(*0C38;=pA>BqC)  #%(*9,/ 7;@CJ g3!]$?&)h-1/*136"9<1?C? g[ ."&+ 3I7:R<AFED gTd$').048":>5@D gOn# ,14h79D:b=?BDI g8!*$ %q),13 8;>6DF g\a&)` !D#).348T<_??A  gT+&3!&*r-2B59<]?BD g!2'i)+/146w9E*, 4:x<BaQ g&mF#* /25N:8<?AxCPM g!Q P"$J'*-1O6b9Y @/ N gMwi%*k/724579>pACL g[z! & ' + 257=@oBKW gG@p "#%'*<.13Q59N=e?B6EeI gH[u#V *-C/K3p6:E>> H g +&-/2x7= >@aBDFa gC r- $;%w*;+.1V 8:e<BD gqnW $')- 03!9?)AC g=y X %.)Q*{,0238;>/@)l,$E'x,z-236:h<%>#A*B> g9 #y&(d,1,4p6d>>7 q9>>:=+>B]@DF: g  X5!!#(.q3+7 @PA9& g %X !_%w&*j,.2569=8@Di7~ gf(b %' -1x7>8;MAD5 gL" $&*,0y1468;c?A40 g >:%2(Q-1G587;b>B\DG2 g 90 )P %(,0A 89<@=B.f gM ~K!$O&)wp,.f.f,q/j.f.f038::=A CI, gb!%(,/14_9:=A.BC+ gx U"$ -//4D9|;p>++>q+AD)p gp)p)pyq)p #(*!+L.03U8*;r=, F ' g{ {H!$&+30zp2''3q6S''7k:=E@C&! go_| "d$''+0$36<@D<$z gR 4" +/]36;=sA:DF" g _"#%), .0157J9:< ?BD!+ g)v!p&'vq*0269<>@B g r m"&+,0c358:I<AZD]a gFoO$G&(+ -/I035S68[<=?@A g&#*',8-058l:i?  gI 1L% 'w)O,h.37?:!>BMk g }D#%+*7-/2j69~>SA gI)~A#x(*/[168;<=ADh gQG!#$&(,/25;1=y@]BD g 3!#`%Q*.&/ ).)"&* -/49&>A C g[6>$]'b -1b358I=?@:E$ 2TVm$|Inter-OfficeMemorandum40throughthetransformer.TheinterestingthingabouttheN07sisthattheiropencollectoroutputtransistorisstrongenoughtotaketheroughly7voltsthatappearsonthesideoftheoppositesideofthetransformerfromtheactiveN07.DebuggingTheT1boardwillhappilysendpacketstoitself.Thismakesdebuggingallthebitserialsectionsjustamatteroffollowingthesignalthroughuntilyoufindoutwheresomethingisgettinglostorsmashed.Acriticalstageincheckingthedesignofaboardlikethisistoconnectaverystableoscilatorupasanexternalclock.Ifitisrunningveryclosetotheonboardclock,allthesynchronizerswillgetplentyofexercise.IuncoveredtwomorePROMbugsthisway.Thereare2microcodeprogramsfordebuggingT1boards.Bothneedanechoplug.Forbothtests,keyisthevalueofthefirstworkinthepacket.wordIncrisaddedtoeachwordtogetthevalueofthenextword.packetIncrisaddedtokeyeachtimearoundtheloop.T1Testisasimpletestand/orscopeloop.Itonlycomplainsaboutgrossthings,liketheswitchesnotbeingreasonable.dallyisanumberusedforaCPUspinloopthatdetermineshowlongitwaitsbeforesendinganotherpacket.Itdoesn'tcomplainaboutanyrecvproblems,butitputsasampleofrecvdataintoUregisterssoyoucanseewhatcomesbackwithBurdock.Thisletsyoupokearoundtolookforstuckbitsorothererrorsofthatnature.T1Thrashchecksthedatathatcomesback.(ItseemstogetaCRCerror(WrongLength)onthefirstpacketafterpowerup.Ithinkthat'saPROMbug.)T1ThrashstartsbysendingapacketofminLengthwordslong.Thenitbumpsthelengthby1andsendsanotherpacket.ItstopsaftersendingonemaxLengthwordslong.TheBurdockcommandfileissetuptosendhugepackets.ThisistheonlywaytotestthebackhalfofthetransmitbufferRAMs.TheMPgetsbumpedaftereachrunofpackets.ThedotsintheMPholdthenumberofgoodpackets/16.sf@ (? vfEq_/ g u %#(,.2W36{9=B] g r&!$K)n*.058 :w=]?#A[ g?X 3 $uX gqUC $(*.15<>ADCvS g]A"% )".147:>EQ gSOyD!$>(*+0%357l9J>?C'M ggP{"#%j',/3m5V7:1>cBDL+ g (%d&m-/p3ZL+L+4qL+7H:=0I;D$j&-/48 ;{=~@DhH g,NxB!$('),V178<>AEeFa gr &',-0Z36;n=C)rC"&*A+/59=WADB? g5 "~#% *1-g/0417%:E= D@ g|F"'U(-3y7V9<CBE> gl<!m&(+J-0(37:>C=I gr $]&(,a0W24:)^ !%)+n/f1 3I4i7;P E9& g.Z $e(p)69&9&)q9&-"06:<}AB7 g?p- "`')-/1M4$8=-AC5 gM#'!*%/6k8:>l@EC40 gV #5%(+-059>ADG2 gC!$')I+.T139:>< lTVm$' TIMESROMANGACHA TIMESROMAN HELVETICA TIMESROMANLAUREL TIMESROMANYLOGO TIMESROMAN TIMESROMAN^  | $ \. :BfJ T d] ph hr } [ '  [  8 u U W l* 3 @ 5L X a Vk t  |j/)Ɲv([]<>Users>Murray.pa>DicentraManual.tioga#Thursday, May 30, 1985 10:02 pm PDT