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î.˜î0Öî4î9î;zpï[Sî gqï[Sî½îjpï[Sî+hqï[Sî5¾pïWvî gqïWvî½îcpïWvî+h qïWvî5¾rïOôîösïIUî gî�îëtïFî)îÝqî!ïFïFî"6tïFî.‰î0qî2'ïFïFî3FtïCŠî)îÝqî!ïCŠïCŠî"6tïCŠî.Ÿî0,qî2=ïCŠïCŠî3\uï=¿î gî*îÊ îäîC î%¹î'/î)Ðî-òî/&î3Øî6ºî81î=qîA“îCýsï7 î g tï3Ñî)î î¿î7îmîéî#œî)²î+lî,¢î2– î;î<Œî?î@ôîC�ï2*î gî‚î#î} î²îUî tî#yî&%î(šî+Gî.ºî4(î5Ëî9jî;î?¶ ï0‚î gîƒqï.î)îHîQî î bî"î$sî*xî-,î1¯î2áî7Yî<�î?¹îD<ï,_î gîbî5îÏî�î;î!iî"º î+_î0Yî37î6Ñî:Uî<5î>¼îD]ï*¸î g î§îÚî î"î$¯î(Pî-øî2)î5î7µî;Vî>íîCvï)î gîÞîÝîgîÛî ¹ î'œî*‰î-úî/½î5 î;©î@#îCÍï'iî gï$îî)îÿîNîîªîTî î!îî$æî&’î)Rî+æî-�î43î:9î;ûî> îB!îEeï#Gî gîÙîªîðîpî½î î%<î)aî+Øî/Åî3³î9¾î>] îD“ï!Ÿî gîÃî|îîYîîëî%#î'ƒî-kî2Uî6™î7úî:±î=ï$î)î¤î¢î-î¡îüî!¹î#˜î%ç î-£î2î5zî7î:±î=»î>ÔîC_ï|î gî(îÑîœî¦îµîÜîêî î!Âî&¨î*.î-ÿî2î4¼î5Âî9iî=0îAîEêïÕî gîìî<î¶îYî®î#î(±î,õî/Âî3Ïî7çî;Ôî@‡îCùï.î gîîIî îœîRî$eî(î+ðî/Ñ î7î8Mî<Þî@.îBüîD´ï†î gî¸ îZî=îJî"Âî&Äî(÷î,Hî1î4î6€î;ø îDïßî gî «îî´îÈî2îÎî î&�î)òî.Öî1Fî2Šî3äî6Hî7äî<7î=Óî>ÊîAdï8î g ï¼î)îµîÉîkîõî"á î*^î.÷î2î4®î6zî8‰î<0 îBðïî gîçîîÂîQî½îî!£î$#î&Ùî*Üî,”î-Éî2D î8çî;sî=»îDiïmî gî Œîõîèî²î{î²î!\î% î)Ûî,Žî/î2î5™î6¿î8×î:4î<æî@‚îC¸uï î 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.ConfigurationsOneofthejoysofhavinganiceflexiblebusonthebackplaneisthatyoucaneasilyplugsïfåî£ î(¢ vïfåîEÉqï_/î)îEî°îwî[î èî%î'\î)ìî, î.†î4Fî9Uî=î?PîAëîC/îE[ï]ˆî gî—îzîäîÙî2î Cî"­î)î-rî.ôî2î4aî7Èî:3î=î@EîBwîE¾ï[àî gî3îîîHîuî!0î$hî%Žî)wî+Ýî1”î4Íî7‹î;<îBïZ9î gîjî–î½î¿îgî"î#¿î&î0`î6Ÿî9¹î;´î=ƒî@¨îCïX’î gîçîaîûî\î"£î&\î)²î*ìî-œî/pî2,î5wî7æî;Öî>©îAdïVêî gîÎïToî)î<î î^î÷î ,î!ëî$\î*kî-Tî0>î1»î4šî7 î=0îCïïRÈî gî>pî°ïRÈïRÈîXqîïRÈïRÈîî¾î’î«î$9 î+0î-î1iî3@î4’î7© î>¬î@òîB{îDËïQ î gîjî#îÔîÕî¥î!üî%|î(Lî,Õî2Qî3µî6{î8Òî>³î@îC˜ïOyî gî ôîcî”î¾î+îžî!Lî%„î(\î.î1î6•î:)î;×uïL*î gî×î�îPtïHÚî)î`îëîaîUî �î$•î&€î2jî5]î7íî=£î@ÏîBbïG3î gî%îÓî2 îóî¡î#Vî%î'ò ïD¸î)î`î¶qî?ïD¸ïD¸î^tî%CïD¸ïD¸î%óî)xî+›î:ãî=Tî>›îB™ïCî gîùîåî¢îî™îpî² î&ªî(3î+î-cî/:î2}î3ûî7‹î;:î>;îBêîEfïAiî g ï>íî)îàîîÝîîî øî0Oî3î6dî8­î:Éî=ÚîA°ï=Fî gîIîšî@î'î'î3î$©î'Rî*Íî-Iî1Áî3aî6 î:ºîA9îCâï;Ÿî gî*îŸîøî�îöîÊî@î" î%gî( î/¼î3éî5î7Þ î>ïî@ îD´ï9÷î gînîvîØî�îqîŽî"Èî$ î'&î(×î,Äî/•î2Nî4£î7î™î@ëîEï4-î gî?îæ î¯ î&uî* î-hî0Ñî4ËîD]ï2†î gîùî„îBî!“î"šî(×î-î0gî3íî71î9mî>Ø ï0ßî gîøî±îîDî �î"Iî$9î'>î*+î,î.…qï.cî)î¨îXîñî î dî#*î%Øî("î-9î0Kî4²î6ýî;pî@ ï,¼î gîÜîxwîï,¼ï,¼îîkî$˜qï,¼î)”î7lwî:ï,¼ï,¼î;î@rï+î gqï+î³ î îqî!¦î#¿î4rî7“î:0î=1î?3îA¤ï)mî gîmî‰ï&òî)îªîaî´î~î,î[î%¼î(rî,îî/cî6î7Èî;<î=›îC­tï%Jî\ð#ï#¢î\ð&ï!úî\ð(qïî)îî� î öî"bð0ïî)î>î¦îfîªî¬î#‰î%Úî*«î0 î7îC5îD´ï\î gî¯î›î(šî+¤î-šî3´î5î7×î;9îñîEPïU?î gî±îöîgîî^î# î)²î+lî1Ãî4pî7ûî;Nî‡î@XîB`îDÀïLøî gîîîªî¼î!'î%-î*Ìî/Äî4 î7Vî9îî5îêîˆî7î }î!§î&9î(?î)iïHÔî)îÑî²î0îq î!Ïî%Tî)áî-î0‰î2@î5„î8Nî:rî;ºî@«îC¢ïG,î g îŠîî·î3î"î$Ïî&Ïî*©î+øî-î1�î3,î5oî8Äî<öî?îACïE…î gî ½î[îüî¨îÑîCuïB5î gî qï>äî)î­î_î8îYîüîî%î&(î){î-Âî0qî2î5î7Áî;Ûî@!îE[ï==î gî îUî*îÓî8î ïî$iî%¼î+€î0qî2Øî5˜î:âî<*î>dîBzîE#ï;•î g îEîcînîÀîî#5î%íî+Gî.,î0�î5nî7?î9î>¡ ï9îî gî,îKîîFîùîÙî fî#@î%Øî)®î+«î0î2êî6Sî:Vî<îîBîD%îEßï8Gî gî§î?îîûî6îvî#\î&œ î,Ìî.–î1Sî4íî8Oî>ãîBÉîD~ï6Ÿî gîîDî?îöîÊîåî î&œî)«î,Äî23î3]î7Íî:„î;®î?›ï4#î)î î2î'îmî#<î$°î'î*êî,uî/4î2ƒî3Áî9oî>KîA�ï2{î gîèî§î�îãîOîÐî!’î#Ðî)Îî,Þî/íî1î77î8�î;9î>uîAîB¯ï0Ôî gî‰îJîÍîÜî îî"�î$î%2î(I î/Mî2,î3ãî64î7eî9î;@ îBôîD]ï/-î gî²î$îEîáî ¬î#pî%Çî(£î*Hî, î0î5†î7î;sî=¾î?OîBlï-…î g ï+ î)î¨îAî¦îî àî#îî(÷î-‡î/3î3`î6 î:aî;ËîA-îD´ï)bî gîâî’î0î¯î ‹î#lî%’î(<î+—î,ëî0Rî4^î7¹î:ƒî=ôî@sîDï'ºî gîçîIî€î�îBîî!­î#<î&6î'Åî(ýî,àî/Žî2µî4Eî9Qî;Óï&î gî¾îˆî(î¥îèî!íî$ùî& î)ÿî-„î/öî1î3„î84î;¢î@¶îBaï$lî gîãî î îáî$Kî'¢î*iî.î/Ìî3î4Ëî7Fî:ˆîAîCï"Äî gï Hî)î)î“î»î�î¨î àî$î%Æî+î0î4Õî9 î=ëî?JîBXîDªï¡î gîÏîŠîî½îÍî#î&[î)åî,Nî/¶î5rî76î<6îAîC¸ïùî gîÆî>îüî¨î Qî$kî%ïî'1î*�î,Vî.Îî4Œî8Þî=î>ÊîAÜîD1ïRî gîøîPî»îëîàî"uî&î(áî*yî/î3òî6[î:<î<7îCï«î gîlîî„î9î}î!)î%?î)î+dî/ÿî5)î6ˆî9<î;�î@îAÈï.î)îî¡îÎîœî#êî&¹î)qî+Æî.< î5 î;î?µîC�ï‡î gîúî[îî‡ uï6î gîj 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'tblinksïfåî£ î(¢ vïfåîEÉsï^õî gîe qï[¦î)îðî-îÓî �î#½î)î*Ü î1Óî3ªî7î8>î;—î@f ïYÿî gîáîîûî:îî!Cî$óî'yî*°î. î5î8_î:åî@pîCOîEeïXXî gïUÝî)î îî™î‹î"¤î%±î+äî/4î2Ðî8Øî:çî=ÞîCîE#ïT5î g ïQºî)îlîeî¨î!ìî&î);î-�î0î5ò î<4î> ïPî gîþî°îõîÓî"€î%î&dî'Ö î/} î62î9íî;Iî>iî@¢îD]ïNlî gîº uïKî gîeqïGÎî)îhîFîÕî\îÔî$Žî&yî)¥î+Óî0€î1Ñî7Ÿî;9î>îANïF'î gî~îÆî7îøî^î!´pî%ïF'ïF'î%½qïF'î)”î+ƒî-Ëî1î5Iî:¶î<þîCïDî gîî=îÍîî\î!±î$Cî&ëî(Øî*‚pî,ÞïDïDî-ïqïDî/î2Èî4î5‚î9äî<@î@ùîB¤ïBØî gîîÅî7îÞîî9 î#:pî%ŠïBØïBØî&›qïBØî'·î*Rî,3î.¸î1î5¾î8‡îkî@ÄîBxï;gî)îaî?îî@îOî%5î)4î+‘î-áî/�î4€î7äpî:ï;gï;gî:»qî=}ï;gï;gî>VîA+ï9¿î gîÊîÑîÍîHî”î#!î%î+Gî/†î35î6—î7î@²ï8î gîÚpîçï8ï8î�qîï8ï8îïîîxî!'î#©î&-î(„î-†î0aî2î4øî;�î<öî?¤îB«îCùï6qî guï3"î gî3qï/Óî)îîDîîaîPî!1î$—î(3î*Èî-'î0l î9Ñî<î>lîCï.,î gîºîîÊï,„î gîüî’îÈîwîh ï*Ýî gîüî’î} ï)6î gîüî’î½îkîÙî"Îî&bî(î*¥ ï'Žî gîüî’îjî3îwî"5ï%çî gîüî’î½îªï$?î gîüî’îDînîÉî~î$©î)žî+Žî.Õî0„î3ï"˜î gîüî’îÈîîWï î)î*îöîŸîî(=î,Ïî.}î2·î6@î8ëïuî gî­îBîXî÷îùïÎî gî­îBîîîî#Uî'�î);î+,î,Vî1ïî5ñï'î'î6îâî*îÌî -î"Œî'ðî)öî,Vî0xî4oî6Ãî8ßïî gî­îBî®î î ïØî gî­îBîœîjî#îî%‘î'Uî.î0Æî2tï0î gî­îBî!îºî"Ÿî$ î)7î*ðî.çï‰î gî­îBî¾îóîêî˜ïâî gî­îBî¾î£îšîHï:î gî­îBîùî–ï“î gî­îB î¢îyï ëî gî­îBîªîÜîvî Óî#Šî'aï Dî gî­îBîªîÜîvî Óî#Šî'aï �î gî­îBî.î½î oî"ïî&Kî*¼î,3î0ñ9TVm$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).Oscarsïfåî£ î(¢ vïfåîEÉqï_'î gî­îBîî?îÙî#¯î$äï]î gî­îBîÜï[Øî gî­îBî.î½î †î#Øî(Iî*fïZ0î gî­îBîÑïX‰î gî­îBîîïVáî'î4îÝî$îÃî "î"î'áî)åî,Bî/�î3’î5ãî7þî<Œî@îBdîEeïU:î gïS“î gî­îB îöî! î#2î&™î*°î.§î2ˆî8›î"î?ÛîAïFWî)îÊî(îÑî!æî$<î&Pî) î.›î0ýî3«î6Xî9ãîî)îØî½î?îèî!î&šî)ãî,ßî/mî1^î7î<�î?ÊîBWï”îAîCîï9î gîîaîƒîîîîÍî1î#Lî%ûî(žî*ßî,î/·î1hî7î9´ îA+îBLï7tî gî@îñîeîžî!¢î$�î(}î*oî0bî1Äî4|î8î:Zî<»î@ îCîDï5Íî gî³îîÇîîî/î<î"öî%²î(Ýî*Ýî,Ñî.„î1Ïî3�î4Üî:d îAèï4%î gîÆîñîòî{î rî"cî&dî(î+Cî.]î/‡î2¬î6åï1ªî)îî#îøîÆî"™î%aî'Òî)Zî-î0Ðî4‹î8Eî<î?»îCvï0î gîøîˆîî©î:î!Êî%[î(ëî,|î.Qî1âî5rî6ïî:€î>î?æîCvï.[î gîgîgîÀîSîÛîúî#¥î&¥î)Mî,¦î1î3šî6òî9Ûî=IîA%îD´ï,´î gî†î?î‚î4î Kî"¨î&Þî)êî--î0ßî3öî6Rî9Áî„î?²î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.sïfåî£ î(¢ vïfåîEÉqï_'î)î²împîÎï_'ï_'î‡qï_'î‡îôî 2î!âî%î&?î,¡î3%î5çî:yî<4î=‹î?;î@fîCvï]î gîýî@îZîæîÖî!î$1î&‘î+Nî0cî57ï[î)îÓî•îêîÖî î"Æî%]î(Æî*î,9î0Fî2¥î7Aî>2î?ìîCØïY]î gîKî+pîÀïY]ïY]îyqîôïY]ïY]xîïY]ïY]îÝîî#LqïY]î'eî)î,xî.[î1 î2ÿî6#î<Úxî?ÐïY]ïY]î@¨îC0ïWµî gqïWµîÄîIîžîfî*î ¢î%dî(®î- î/Ýî2_xî7üïWµïWµî8Ôî<4î@kqïWµîDiïVî gî¸îî¯î×î9î èî&î'¼î*¡î,Gî.žî4î5µî8 î>‡îA?îE#ïTgî gîfîmî£îgîÉî$„î(³î-|î.éî1¬î6Œî8àî<—î?îAnîDªïR¿î gîžîbî°îÚî \ïPDî)î$î«î%îûî"ýî$Üî&Mî)üî,wî3î7Ëî9Ÿî<îB¶îE’ïN�î gîïîYî‚î›î\î îéî!Éî$sî'vî*Mî,áî0”î3¸î6nî9�î;Iî>ýîBÝîDGïLõî gîÆîàîoî=îôîî!ôî#£î'°î(Ùî+Çî2Jî5 î9$î;lî<–î>³ïJzî) îøîŸî½î!î'•î*Qî-gî.Îî1jî2�î6*î7éî:›î=Ýî?‡îB{îE¾ïHÓî gîîxîPîìî»î!Øî&�î,@î/Rî2dî5?î7ùî:p îAcïG,î gî$ îîtî î)aî*Õî-ªî0î3Œî7v î>MîD<ïE„î gîî‹îwî'î�î î \î#%î$äî&î*‹î.[î0÷î5Bî8î:¾î@kîAÝïCÝî gî úîâî•îïîËî~î¢î Ýî#çî&lî)3î+¢î3^î4¹î7jî:«î@5îDµïB6î gîòîõîî’pîïB6ïB6îÕqïB6î"î%Àî(>î.\î1–î4Lî9Kî;ÖîB„îEï@Žî g îZînuï=?î gî„îÕîùqï9ðî)îFî,îéîKî ïî&›î,³î/ î4¡î7î9·î=Éî@. ï8Iî gî î’î]îñîÉî êî$‰î)î+þî-(î0 î3Àï5Îî)î;îî} î;î"êî%Eî'ëî*‘î-¦î0Žî2î4ÿî8�î:6î<Çî@vîE9ï4&î gîAî1î«îî¹îCî çî$#î'Îî,�î.âî2Uî5ê î=Âî?$îD´ï2î gî“îAî¡îMî¸îî!î"»î%î(�î,8î0ï0î)î îLî:î6î‹î %î$äî&Éî'ôî- î1#î5”î8Žî:Šî<-î=LîBæîD]ï.\î gî�îßî¢îØîaî Çî#wî&î(\î*î,èî/úî1^î3øî5î8Zî:�îAAï,µî guï)fî gîüî�îtîæqï&î)îÇîšîJ î�î"Žî%?î'Ûî-½î0"î6Ëî9ìî=9î?îCóîEeï$pî gï!ôî)î&î<î< î£î!6î$ î&î)î,.î1vî44î6üî< î>áîAÖîDÀï Mî gî¦îM î îþî 7î#�î&}î)Âî+yî-ßî1qî6Xî9/î;uîBîC‹ï¦î gî ßîî’îîîPîUîÀî °î#¶î(îî,aî.Ìî1°î5.î91î;Cî=?î?«îCÙïþî gî îºîIîsî î|îöî"î#Uî'8î+hî-Éî/Çî2Ïî8—î;rî>�îAîDïWî gî¼î³î îÑî!î"�î$$î)!î+†î- î2¼î5Eî8î:íî>žîA´îDµï°î gîÆîÇî(î¢î@î#Õî'"î+�î-î0Mî2.î6 î<[î?õîBÔîEeïî gîjîÂî‡îxîœîÿî#Àî%½î(î+«î.Yî0Òî2î4ãî9î:`î=\î?îABïaî gî Èîî>îhîìî¤î!¥î#Tî'çïæî)î¼î…îàîîîäî Šî#âî&•î*î.ýî0‘î3Zî7 î9Ôî=,î@BîAªîC'ï>î gîqî5î•îùîLîiïÃî) îÆîõî!î#¬î'#î+¤î/î04î3ùî8 î:î<{î>ßî@’îBàîE[ïî gîRîkîÔî¢î½îë î#<î& î(gî-.î0î1yî7Iî8õî;SîAÓîD“ï tî gî iî6îâî:îzî î&Úî*\î.6î1úî7™î=XîB]î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.sïfåî£ î(¢ vïfåîEÉsï^õî gqï[¦î)îî/îiîoîÎî"˜î%êî'£î*î-uî15î4fî6Åî;æïY+î)îîrîrî=î#?î%žî)Ìî.î2Äî4ËïV¯î)î î`îÐî Ñî#/î%Úî'Eî)£î,óî1Ûî6�î7Öî:€î>ÙîA8ïT4î)îñîÔî6î’îâî%wî*0î+˜î.î/ôî2ÿî4ëî7;î9Öî< î?;îA2îBLïR�î gîÇîmîßîKîˆî!î"Sî%yî'(î+ î-jî2ðî4Ÿî7Ðî;8î=)îBÏïPåî gîLî.î'îî]î#öî&Ãî(Ôî+Íî.ƒî0î2Ýî6/î7þî:~î@DîD×ïO>î gî#î½îµîŒî)"î,&î1öî6”î;ÕîBmîD]ïM—î gî¹îOîyîþî îäî"çî&{î,7î.'î0‘î3Íî5{uïJGî gqïFøî)îÿîõîíîÍîî"8î#ðî%î)Óî+·î.Åî2î4rî8Rî:6î>nîB!îE³ïEQî gî&îîlî)îúîýî"d î)Gî+Uî-¼î1bî2áî7î::î>ÉîAàîC¬ïCªî gîÜîîˆî ïA.î)îî7î÷î’î"‰î$ƒî)Ïî,óî/“î3gî4Óî6ãî:Ïî=eî>Ðî@QîD]ï?‡î gî�îžîiîÆîtî!òî#Hî&Wï= î)îî½î îžî5î!î#ãî',î*Jî-[î0£î4î8ðî<î>¼îBîC¶ï;dî gîîÓîÎî$î¢î!Nuï8î gqï4Æî)îµî[î”î½îÏîˆî"äî&Åî)¾î-Gî.³î1Iî3î6«î8èuï1wî gîŸ qï.'î)îøîâîîßî!iî$Žî)Mî*üî,iî0æî30î5Óî:Dî>øîAyîDRï,€î g îîÐîºîî î#•î%vî*Qî,äî0Qî2î6ˆî;7î@ïîC¡ï*Ùî gîËîÀî·î™î Õî$Ìî&Xî+î/‘î5î7Áî:ºî>Nï(]î)îîMîÍîˆî!î#)î'/î)Eî+ÿî.nî1kî3�î4ºî7jî:Gî<~îAîCï&¶î gîÔîƒîV îØî/î!òî&‘î)+î. î3Íî7ÿî9Üî<­îABï%î gî]îî{îGî!Íî%î&Fî+ßî.Ìî2×î4nî9Wî>¹îA.îD×ï#gî gîÆîôîêî˜î÷îÏî ´ uï î gîŸqïÉî)îÿî+îšîîÂî$«î'wî*,î,~î1Éî3uî6 î8}î:4î@\ï"î gîÆî–îµî �î%®î)šî+î-eî1´ î8Žî=7î?–îBÝwï¦î)îUî²î�îÙî¶îìî$$ î*¹î-´î/Cî4î6Uî9²î<Ùî?îBåïÿî gî ÿî= îìîmîQî8î!Rî%¬î*<î-‘î1 î7œî:€î=î?ïîCï„î)îkî.îî &î"î$eî'4î)î.üî2hî7qïî)î³îGîRîóî ¨î$Öî)÷î/% î5 î7î9oî;u uï¹î g î£ qï jî)îî¾îdî ßî#Tî$‰î'úî*Óî/œî0Ðî3ëî7î:Åî=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'ssïfåî£ î(¢ vïfåîEÉqï_/î)î¿î‘îÿîÄî î"%î&Ýî)¯î,Uî.òî3rî6-î:@î< î>ÅîAÍîDÀï]ˆî gî!î�î+îyî2î·î"Éî%oî*Sî+ñî0©î2rî7Òî:šî?Rî@vîC€ï[àî gî¾îÕ îîîî©îäî"­î&Rî(î*£î-î/Ïî3•î5jî;?î?ËîB“îEêïZ9î gîî€îÜîrî!xî$%î'�î)Ùî+î-"î3†î5™î6Ïî<î@óîC�ïX’î gî î î{îDïVî)înîéî” î#mî&Uî(·î+áî0Åî2˜î4Ïî6�î:$î<$î@mîCïToî gî+î=î îgî§îHî2î!¨î$î)>î,oî1Nî5‡î6þî8kî9íî;±î>'îBåîD´ïRÈî gîàîóîî…îî Uî!dî%î(¢î*î,„î0`î3Ùî7ˆî9”î<î=Ùî@?îBVïQ î gî°îôî‘îðïN¥î)îõîKî7î î!°î#”î&˜î(;î*�î,×î1î3 î7¼î:hî@.îC·ïLýî gî ‘îòîéî—îÁ î!ÉïJ‚î)î¾îˆîâî‡î¼î!”î%î*î.,î0Ëî3'î7>î={î?ª ïHÛî gîÆîŸî–î°îôîSî!Èî$€î&ßî)_î, î/%î3hî5ÈïF_î)î°îÂî”îýî! î)î+aî-Êî2‘î7î:9î;wî>óîA³îBñïD¸î gîÉîXîØîî ‘î$†î';î+Qî-¹î/eî2žî4`î7åî9§î=î?âîCîïCî gtïAiîKî$îÒîkï?ÁîKî$îÒï>îKî$îÒïNî@f ïïî gîìî<îôîŸî¦î#Œî(} î/<î3:î7²î9Ÿî:Åî=»î?pîARîCãï Hî gî¶îîìîœîIî Ëî"³î$nî&Ðî*$î,†î28 î96î:çî<Úî>ÁîCúï ¡î gîHîÇî îãîKîÚî"cî#¡î%cî'Ìî*Ïî-Mî0³î6lî8$î;1 îBðmTVm$â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)andignorethereducedperiodbeforethepulsesclocksïfåî£ î(¢ vïfåîEÉqï_/î gî‰î³îlîîzîðî $sïX‘î gqïUBî)î!îÆîýî¼î¾î øî#&î'¦î+£î-¤î3¨î5î7áî;9î@—îD]ïS›î gîœîXîÚîê îÅî(î ¡î$8 î+î,Ïî1 î51î:Kîî@çîCTïL*î gî<îÃî€îÐîoîÕîQî!Oî#×î&‰î)áî,Ÿî0 î6 î=åî?¯îD<ïJƒî gîÉîúîMîÇî–îî ¤î"äî%Fî(Lî)Ðî,Šî/î1°î3lî7Pî<ÌîA`îB�ïHÛî gîÑî×î6î«î„î=îœî!oî&X î,�î.ìî1˜î3áî7«î:!î?,uïEŒî g qïB=î)î îéîî î%Æî*^î-âî7Þ î?oîB[îDŸï@–î gîüîDînî&îðî î#’î'øî+vî.dî3¨î6*î8âî<)î=Ùî?ÊîB‚ï>ïî gî7î­îòîÀîî²î!€î$Bî*+î,Šî1¸î3}î5óî9Qî=îBîD”ï=Gî gï:Ìî)î'î!î^î˜î/î"ªî$›î*�î0wî4î7íî;vî=sî?ÈîCîD´ï9%î gî^î•î=îœî ©î$  î-aî/î1oî6zî;Cwï6ªî)îcîîlîÍî ¸î#$î%�î(,î*@î+Ûî. î4Pî8–î:â îAçï5î gî¥îñî®îyîâ î%©î'Nî)šî+ðî1Zî3Mî5™î8"î<]î?Û sï.eî gîòîèîÀqï+î)îîl îUî"èî'$î(áî+Oî1àî4Bî5{î8˜îï!)î gîîSî î¨î*î ¾î$î&¥ï®î)î î/î]î î$î&ëî)î+žî0gî3ðî6î;‘î>·îBVïî gîî½îƒîîgî î%¿î)î+ î1î5î6Æî8î9¾î:áî>YîCùï`î gî’îÇî5îÁîµ î$Hî%Ðî'šî*î.‹î4î7æî9,î=?îAîBaï¸î gî"îÚî3î¦îðîùî \î&;î)èî*óî.–î0øî6€î7ïî9pî=„ï¸ï¸î>+qï¸îAuîD“ïî gî~îx îÃîqî]ï–î)îpîcï–ï–î qîÍï–ï–îäîîcî!¯î$î(Ñî,<î.Pî0¾î3¤î5—î;®î? îB¥ïîî gîðîÙîåpîEïîïîîqïîî+î Öî#ðî%%î(Ãî*‡î.íî1ýî5Nî9œpî=Qïîïîî>qïîî@6îBâïsî)î î+îÈî×î?î!jî%jî(¯î*ôî-\î1ˆî5$î9î=“î?JîBmïÌî gîCîzîôîRî'î"Oî&£î)¢î-”î1éî4 î:µîA&îD´ï%î gîáîº îQî»îêî ­î#Xî&öî+.î.2î1Kî5Ðî6âî;Àî>äîA�ï }î gîÎîÊîžî\î°îqî"$î#šî$äî)î,™î-–î1)î3|î7î8§î:¡î<î@�îBðï Öî gîýî®î%î‡î3î î!îî%¤î(]î,£î/î4Jî8§î<ùî?ZîC€ÿ 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.Theboardthatrecognizesitsaddressputsthesïfåî@ î(? vïfåîEqï_/î g sïX‘î gqïUBî)îÈî�îîöî%î!óî&î'Zî-vî0Kî3¯î5| î<Âî?äîA+ïSšî gïQî)î îúî~îÚî!Ðî#Ôî%Âî*[î.fî0Âî1ÿ î8âî:ñî=Y îD<ïOxî gî¾îcîÇî·îî¾îî"Öî%zî&Þî*Îî-$î/õî1ôî8Cî9§ îBŠîCúïMÐî gî£îÜîéîèîuî 8î# î%òî(Vî+Îî,Ñî2Oî6£î;ˆî>î?á ïL)î gîèî>îêîÚî�î;îçî$î'+î.0î0Üî5Mî7ïI®î)î—îÊîÕî3î¦ î%9î'uî)Óî/¹î4'î5Ôî8âî;3î>nî@rîBÐïHî gîÊîMîôî¼î³îÊî;î!Áî'‚î)òî,cî0à î8î<žî@½ïF_î gîïCãî)îî/î™î <î#=î&ïî)ºî,…î.žî2î3Æî6Óî=Áî?ƒîAõîE[ïB<î gî×î.î'î$î¶î îî$Eî(æî-rî0Qî4²î6î80î;:î<î?GîA•îCiï@•î gîcî�îkîÚîRî @î"Åî&^î*pî/uî4† î:Nî<9î>|î@f uï=Fî gî‡î'qï9öî)îìîÜî^îµî…îî ¦ î'4î)Áî+ÿî0qî5‡î:ªî?áîB¤ï8Oî gîÍîîF îî¥î"@î$¦î(Vî-Sî/kî1Ýî8rî:Hî>rîAµîDìï6¨î gwï4,î)îwî`îØî/î Úî% î'cî*»î-àî0Nî1±î3(î9Ìî=î@` ï2…î gî9î¹îî¾qï0 î)îîïîˆîöîÝî�î#,î%‚î&¯î)Áî/î1|î2¨î63î;w îBîDÀï.bî gîéî¡îÔî =î$œî&÷î+bî-±î0Mî3ý î:²î=eî@êîBQîCvï,»î gîÛîîî[ îBî'î" î#þî(õî+¤î.î0î2…î4˜ î;Sî>8îAkîB­îEï+î gîÐîà î—î"îãî€î"Ðî%zî'Š î.Çî1‡î3äî8 î:Xî;–îAÔîC—ï)lî gî6îÝî“îeî!÷î#bî&$î(4î+…î,¹î.Ê î5‚î96î<’î?îB¯îEßï'Åî gî!îÛî îyî Àî",î#Ûî&;î)Vî,î0áî3º î;�îBLï&î gîî˜î“îîíî 3 î'Uî(Ýî*Zî-8î1î6î7Ïî:Úî>'î?mîE³ï$vî gîÆîÍî#î�wï!ûî)îkîÈî¼î'î!sïî)îoî7îùîðî Aî"»î$+î%dî(Mî-gî1î2„î5Ùî;fî=|î>ì îEnïØî gî¶î{îûîÛîuî î"Nî%Óî,Fî.Þî0±î4 î:<î>:î@ÔîCîDOï1î gî\îî>î îõî"¤î(Fî*ªî-¨î3œî5Zî7¾ î@åîCÃï‰î gîCîüî$îÝî5î Øî%Âî(î,Jî/‘î2Wî4£ î=²î?kî@ qïî)îñîz îaîÁî"aî&î)&î*‘î,ñî07uï¾î g îqïoî)îî²î)î¨îJî ÿî%›î, î3Xî94î<�î?×îE¨ïÈî g ï Lî)îÍîïîUîh î!ãî$;î*Gî-Eî/�î4€î6î8×î;¾î?5îAkîCuï ¥î gî�î@îâîXîî%î"Kî'óî*ãî-³î1¢î4i î;î<ÕîA·îD´ÚTVm$.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"sïfåî@ î(? vïfåîEqï_/î gîjînîÌî`îîpî 9î"=î'÷î, î.jî4|î9î;ãîAEîC¸ï]ˆî gî~îóî™î†îªî€î"^î(…î+[î.µî2î3Ûî7+î:Çî<<î?ØîD´ï[àî gîœî§îú î î"ôî'„î*Eî/éî1Hî3Aî7xî:dî;­î> î@îA°ïZ9î gîî~ïW¾î)îdîöîÏîCî#kî&„î(øî-öî0Âî3Ûî5õî8iî;lî>þîAOîCuïVî gîŠî6îÔîEîðî î"*î'îî*Ùî-¤î1�î4P î:æî<´îA‘îD´ïToî gîëîªîÖî:î îî$Ûî&Òî)eî,Éî//î2;î4ùî9.î>™îBäîDKîE¨ïRÈî gî=îî'î’î"±î'Yî,Éî/Iî2±î5µî7î:áîAîCØïQ î gîˆî2îSîÂî îwî!%î#vî(¨î,±î/ î6î9÷î>„îACïOyî gî ÓîÙîîîkîëîÛî”wïLþî)î�îwî<î!ôî'=î+°î-¹î0@î5/î88 î?DîC*ïKWî g îî–î‡î£îî"„ î)yî,î/7î0Üî3sî4¨î9÷î?qïHÛî)îÄîxîwî"î;î íî#=î%™î)î-`î0+î2‡î8—î;�î<¿îBaïG4î gîmî]î¸îÉî žî%æî(@î-gî/×î2 î8Ûî<Äî@'îC¡ïE�î gîºî`îæî!íî%Äî(´î-Fî0î24 î9Öî=kî?¿îDÀïCåî gî%îÓîïîÙîæî |î/§î1åî4Dî9î=ë ïAjî)îÊîH î%î aî!Âî$Xî'î,î-rî0�î1�î3Öî8¶î<Ïî>sî@ÈîDï?Ãî gî-îšî‡î@î] î Qî%¤î'î*¨î/Ëî1Dî4�î6Hî:î@cîD\ï>î gîÆîËî7î=î�î=îòî Öî"�î$îî'…î,òî2*ï; î)îÏîùîîXî!•î$dî'ðî-)î1Oî2ßî4-î7ûî:&î<©î@*îDFï9ùî gîmî”î•î÷î0î#î$ñ î-Äî0™î3óî7èî:²î?6îBþîD´ï8Rî gî×î¥îöîüî\îòî!#î$Iî%Ÿî+§î,Ñî/Õuï5î gqï1´î)îûîî3îÞ î"î$mî(�î,¡î2Dî68î9î;(î=òî@îB%îCLîE[ï0 î gîŒîî•îTî'î#¬î&Ïî+‹î-yî2lî5oî9�î=eîA8îCŠï.eî gîx î�îdî sî#>î%!î(Z î/ î1Žî3î4£î7çî:Þî=gî@<îCï,¾î gîÝ î°î?î±îáî#î&£î)�î-Ÿî2 î4Òî9‹î;vî=@î?+îDï+î gîî5î�î¾î kî"~î%Üî(;î,Tî2î4õî7î9‰î>&î@ôîD´ï)oî gîáî î´îîªîŒî ¥î%Œî)•î+aî/)î0Þî3:î5î75î<î@&îB‚ï'Èî gîî‡îî®îžîLî¬î$¡î&Zî(¹î+‘uï$yî g qï!*î)î>î¤îìîrî î%ïî)·î.=î3‰î8gî:î<òî>¾îB›îD´ïƒî gîî=î îãîàî#©î%î, î5(î;¢î>÷îD<ïÛî gîUî»î�î/î#6î' î*î0>î2Þî6Nî9\î<ùîA[îDhï4î gîNîŸî î6î!Qî"� î)}î,jî3,î5hpî;Çï4ï4îî gîËîžî  î!oî#Ãî%quïïî gî)îIqï î)î?îeîî!Iî$3î'Íî)ºî/öî2ë î:´î>ÓîAÈïùî g îCî‘î5î! î#^î%sî($î)öî,¼î0_î49î7¤î9bî=; îDrï Qî gwï Öî)î�îBîýîuîPî!î#Ôî%-î)‚ î0î1Zî6£î;}î>8îAðÿ á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.)sïfåî@ î(? vïfåîEwï_,î gîµî‡îçîÑî×î nî$.î'Wî)£ qï\±î)î¢îPî›î]îîpî!Áî$oî'Ïî)·î/�î1'î49î6�î:î<Êî? îAðîDGï[ î gî> î\îŒîÔî#êî&Iî*Aî,î.î0Æî5,î6lî:{î=î?©îBîEEïYbî gî)îzîýîšî!×î#fî'_î)1î.î0øî6&î9yî>œîBîCãïW»î gî}îî©îuî­î!„î$î'0î+žî.Àî2Õî5Âî9Áî;Žî>"î@ îCUïVî gîXîîîÀî—îÞ î#|î(6î+!î/î1µî6[î9Ÿî;5î=‘îBæïTlî gîˆî?î¨î€îqî#§î(Ïî,î1âî3Uî5þî7gî8˜î<˜î@�îB7îD´ïRÅî gîîëî î§îbîßî$î"6î$Ýî'mî)èî,ñî2î4éî:&î<”î?ìîBîD}ïQî gî×wïN¢î)îkîNî¹îîî�îƒî!Ïî$8î([î*Çî/Rî2¹î4^î6Ôî:sî=oîAYqïL'î)îéîMîdî÷î î$úî)× î0ƒî2íî6îî9î:2î<7îAòïJ€î gîÏî*îðîÁîéî"¨î%î(tî,t î2¥î7úî=î>ÒîD<ïHØî gî³îlîîîõî®î!�î$Zî'îî)dî,ˆî/>î1ßî6Zî9î=ïî?êîEïG1î gî:îŽî‹îÙî.î î! î#Oî%…î(î*Uî,>î.€î4åî9Ýî>ÕîAoïEŠî gî ”î}îHîEî¯î}î"Yî$°î&wî)Iî*¢î.î1Ñî3Ûî6>î;[î>,î?›îEeïCâî gîÆîŸîÓwïAgî)îkî:îœîèîQî#^î%î'Pî+Üî.Àî0Pî4Ûî8î:›qï>ìî)î÷îÅî îŸîèî"‰î$.î&™î)ˆî+„î-Úî4Rî6†î:î?\îBÚîE$ï=Eî gîœîKî;îþîµîAî!Âî$!î&uî(#î*Ãuï9öî gîûî›qï6§î)îƒîî¶îþî qî#Öî({î)úî//î1—î4vî6§î8¶î;)î>˜îB£ï5î gîÉîîî7îãî#Ðî&Xî'÷î+gî-J î46 î;…î>DîC îD´ï3Xî gîàîiî¿î î!7î%/î(îî*êî,Úî.“î2«î5Wï0Ýî)îaîÌîöîÖîjî"î&zî,î-î1­î5î7tî:Ðuï*?î gsîÍï*?ï*?îuî>ï*?ï*?î%sîï*?ï*?qï&ñî)pîï&ñï&ñî¨qï&ñîî îêî!¨î& î'xî(¢î*¿î-) ï$uî)î·îñpîNï$uï$uîõqî·ï$uï$uî¼î¿î!î#4î'�î)mî+Êpî/dï$uï$uî0 qî2Îï$uï$uî3Ópî6‡ï$uï$uî7/qî8»ï$uï$uî9Áî;Äî> îCÃï"Îî gî-îíî`îŒ î!pî#ðï"Îï"Îî$˜qî'Yï"Îï"Îî(uî,1pî/«ï"Îï"Îî0dqï"Îî3'î9Mî<.pîAÅï"Îï"ÎîBÖqï"ÎîD&ï!'î gî™pîWï!'ï!'îÿqî‹ï!'ï!'îyî¨îÿpî ¼ï!'ï!'î!Îqï!'î"ñî%Äî'¥î*°î/tî6î7xî8Êî:Ÿî=ŸîA.ïî gîkî¢îÚ î “î!êî$Âïî)pîïïîqïîPî¹îöpîVïïîýqî¿ïïîÈî!Îî$-î&Jî*Aî-ëî1Rî2{î6“ï‰î)înpîÁï‰ï‰îÒqï‰îîãîîƒî"Opî$øï‰ï‰î% qî(bï‰ï‰î)]î+Lî/Zî4„î6}î8aî;mî?ñîA“îB°ïâî gïfî)îØîî¥îŸpîßïfïfî‡qîHïfïfî1î#£î' î(Yî)cî,1î1pî7Hïfïfî7ðqî:²ïfïfî;6î<¢î=úî@P ï¿î gî0îßî“pî&ï¿ï¿îÎqî�ï¿ï¿îuïpî gîßyî´ïpïpîmuî8ïpïpqï!î)îpîEï!ï!îìqî®ï!ï!î÷î£î#mî' î*çî-ßî1Óî4sî9 î:Äî=�î?ÁîCùï zî g îÛîrî!î� î("î)Éî,Æ î5Àî8‘î?*îAïîDGï Óî 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.sïfåî@ î(? vïfåîEqï_/î)îÁîrîeî©î!¼î#epî%¾ï_/ï_/î&fqï_/î)¦î.ˆî1Zî5 î8î9ƒî‘î?ÈîCíîE³ïVî gîÅîêî@îÂpîeïVïVî qî"ÏïVïVî#Îî&¨î)î*ïî03î2Qî5+î:cî<4î@�îCïToî gîtî¨î•îLî×îLîvî"Lî$øî&¦î)î+…uïQ î gîßî>yîEïQ ïQ îþuîÉïQ ïQ qïMÑî)îîƒîíî»îÉî! î'¾î)€î,6î/’î1?î3/ î:î=î?¶îBûïL*î gî¹îî¿îsî>ïI¯î)îÜî�îPî—î!î±îìî"¶î(¥ î/†î2pî4×î7>î8pî;gïHî gîVîÄî †î",î%* î,Íî/žî:fî=+î?‚îBHîE¨ïF`î gî ïCåî)îÐî�îìî$îHî"Œî%ƒ î,’î/”î:î;Ìpî>5ïCåïCåî>ÜqïCåîB+ïB>î gîCîpîîºî‚î™î#´pî%×ïB>ïB>î&qî)AïB>ïB>î)Åî*{î1|î5Žî6’î8‰î:î;*î?& ï@–î gî4î§îlîøî8îœî!î#Ðî%î)¢pî/ï@–ï@–î/Âqï@–î3î4äî7oî;Oî=lî?âîBLï>ïî gîôîA îeîãî î#÷î(Ýî+¦î04î27î5Bî7î9î:Wî<{î>FîB½îEêï=Hî gî„î=pîÆï=Hï=Hînqî/ï=Hï=Hî´ï:Ìî)îJî·îzpî7ï:Ìï:ÌîÞqî" ï:Ìï:Ìî#¶î%.î(Äî- î/îî2Óî8dî9Ýî<¸î?$îDï9%î gîÅî™ î]îÖî! î$\î'î(Rî+úî/lî2.î5&î7„î=�î?öpîA*ï9%ï9%îAþqï9%îDrï7~î gîîGîgîØîþî!Yî'1î+Iî-Ñî2«î6î:$î<Ëî?íï5Öî gî Ùî îpîàîµîfî!!î"Qî$tî&3î'nî+– î4áî8.î;ÿî?ÏîDžï4/î gî–îpîOîîîNî"î%Sî(Äî,Lî2T î:Lî?UîC�îE#ï2ˆî g îd î©î î$Ëî(î*ßî0Yî2î5nï0 î)îOî�î]î_î�î!î#ˆî*î,…î.Mî2î6Vî8ðî>îAâîC%îE[ï.eî gî—îìîZî]î©î"ùî')î*î0€î2÷î7Äî;’î>ýîB<îDï,¾î gî4îžîÆî{îÍî!„î#·î%†î)1î+¼î.‰î0èwî4ˆï,¾ï,¾î5#qï,¾î8Ìî;ºî@¹îDFï+î gîáîNîÔîî�îQî ôî$)î&£î*ˆî.Lî0Æî4'î6¶î9žî˜îBaï'Èî gî‚îáîËîmîâ î#mî&´î*øî-¯î1î3Œî5ìî9€î<7î?sï%Mî)î8îæî&îGîåîùî!©î&2î)Èî,vî.øî1dî6ëî8‘î>"îA¢îD´ï#¥î gî îîîîîrî! î#î(î*"î0Üî3;sïî gqï¹î)î.îŸîÚîg î&î(lî)Éî,[î/}î3î6#î8Ìî;Âî?Ÿ ïî gî ½î9î*î-î1îßî(î ~î%µî'»î(åuïÃî gîßîFqïtî)îýîîòîÐî!Fî"kî%˜î'ýî*Èî-oî/\ î6î7°î;î>­ ïÌî gî"îuîîÙî"î$¦î+®î-&î/“î5Pî=î?Ÿ ï%î g îSîäîýîŠîaî$öî+‰î23î5î7ƒî;­î?= ï ~î gîêî6î Dî!­î#+î&zî(:î,Oî.×î2÷î8 î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.sïfåî@ î(? vïfåîEqï_/î)î:îöîøîîÒî#Hî%Mî)›î,pî0“ï_/ï_/î1;qï_/î4Mî7àî=Mî@qï]ˆî gî6îî î‹î`îpî!½ï]ˆï]ˆî"�qî$ï]ˆï]ˆî%#î&éî)aî/ïî2pî6€î8ˆî=âî@{îCIï[àî gî4îî’îî!}î(G î1Êî3•wî6ï[àï[àî7eî9Öî> qîAsï[àï[àîBmïZ9î gîÜî½î�îwî´ïW¾î)îGî)pî:ïW¾ïW¾îÙqïW¾î�î î'î#î$âî'W î/Oî39î6÷î8xî9·î>ÍîB�ïVî gîÎpî ZïVïVî!qïVî'ðî3îîBÛïToî gpîLïToïToî qî "ïToïToî!Pî#eî&…î+Áî/Òî3‹î5Íî9²î=ŒîA$îC$îEêpïRÈî gqïRÈîÃîëîŒîºî"Ûî$|î(gî-î/jî3î8ˆî<$îA{îCÍïQ î gî#îkî¸îî¸îî î"Eî'Uî)£î/6î3–î52î7jî:î;«î@ðîBVïOyî gînîïLýî)îËî£î9îûîsî"¹î$0î%½î)Ôî+¤î.|î/Çî2Õî7öî9Åî;ÖîAîDSïKVî gîîîîÖî–î$2î'Ïî+Žî-Pî.Žî3Jî67î7úî:Æî<ËîB-îCûîEeïI¯î gîÌîWîîpî¢ïI¯ïI¯îIqïI¯îXî´î!Ôî(|î,,î1î5oî7"î<íî?ªîCîDËïHî gpî ½ïHïHî\qîvïHïHîïEŒî)î;î›î§îËî³î#Tî&î):î+ìî/,î0Õî3‡î4×î6€î: î>ðîBîDïCåî gî)îSî•îî³îÎïAiî)îãî·îî}îÃî!î#íî&Àî*#î+îî.î0î6Ýî9°î=î>{î@EîA‹îF ï?Âî gî5îçîînîÕî"¡î%Ðî(-î+àî2ã î;•î?SîB ï>î gîËî7îèîîrîcî!Ïî#€î%âî)î-|î/zî24î4Šî9˜î=î>.îA£îD]ïàîBuï9$î gî¼îqï5Õî)îPî#§î&‹î)ßî0 î5Ýî8î=�î@Ôï4-î gîBî¥î î"!î(4î)íî+Ýî.=î2úî5ï1²î)îîõîÁîŸî#î%‹pî&Éï1²ï1²î'‚ï1²î*Îqï1²î0ƒî2Fî7epî8£ï1²ï1²î9½qï1²î<ìî>¹îAÒï0 î gîœîÂî&î÷î"œî% î*î,šî/Ãî4æî:Aî?ÇîCîï.cî gîŽî¥î9î—îrî!¹î#rî'Š î/ î3î5uî8Lî9Œî>îAÆï,¼î gîîî%î²îiî­î bî#.î&Àî(l î/‡î1Iî3cî7nî;mî=¿î>ñîCjï+î gî¬îQîƒî€î¸ î&%î'Qî*Üî,�î/³î2¯î7èî9üî>î@¯îAÛîEeï)mî gî î¤îäî îöî }î")î$Dî(Oî+Ÿî/2î0eî2·î5ñî7ìî:Jî=ºîCï'Æî gî „îî0î«î7îî$mî%¶î) î/éî2á î:î?ŒîB7îE#ï&î gî¸î|îŸî2î´î#Öî'µî-î/xî3î5–î8bî>JîAóîEeï$wî gînî“î)î%î/øî1¼î9%î;bî=Áî@Žuï!(î gqïÙî)îLîÙîÃî�î ³ î)iî,Yî/íî2î> îAÑîD~ï1î gî>îsîáî˜îõî!­î%Óî'èî+1î0Jî2î7˜î:î=öî@»îCïïŠî gî î×îîªîtî*î!¦î'iî,¤î45î7Ûî;Øî>•îB’îD´ïãî gîqîîpî#î$|î'@î*áî.5î0ãî6&î:mî=~î?OîBûï;î gî4îüîîÛî»î"žî$î&fî*~î-Kî1xî3Àî8ßî>šî@GîDµï”î gîÃî½îÉîîMî"bî&î(Æî,wî.Òî1±î55î7zî<�î@2îBåïíî gî0îªî!îDîöî²î zwî%Êïíïíî&²î(¨î,wî/ñî2Wî5Ïî8�î;þî?îEoïEî gqîzïEïEuïöî gîÙîaqï §î)îEî°îÚî"?î)9î-�î/î2î5jî7¨î:î?ï  ¸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.Theycanalsobeusedforsïfåî@ î(? vïfåîEsï_î gîØqï[²î)îòîEî.îªî Œî#ºî%èî,“ î3‹î64î8òî:‘î?˜îC)ïZ î gî8îîÐîhîfî ïî#î%pî'æî)ùî,†î.„î0ñ î80î>QîA îC­ïXcî gî$î9pîØïXcïXcî€qîBïXcïXcîÆî£î g î'nî,nî0î3^î4ˆî:êuïUî gqïQÄî)î“îþîîî¶îöî ¹î!úî&‚î(~î.³î1î3ˆî6æî;„î> îC'îE#ïPî guïLÎî gîZîú qïIî)î+îäî† îî#Uî&#î(Úî+. î2î7'î:Bî<¢î>õïGî)î–îÞî(î" î$¿î&‚î)þî-Nî/—î2*î5"î7–î:Kî=±î? î@²ïE\î gî\îfî�îßîØ î ½î!åî&2î'Þî*;î.gî1î3Ýî9j î@ ïCµî gî5îdîàîÐïA9î)îîÙî’îwîì î!Çî$î&Wî*Èî/Dî2Øî8%î9Óî<3î>†ï>¾î)îõîÏî8îƒî~î Òî$î%»î(î+î,tî.¥î0ùî6}î:^î=*î@¾îCjï=î gî5î‹îîîþîî!„î$hî(­î-@î/–î3»î5Jî7 î<_î?œîAKîC¡ï;oî gîîtî\î¾î îÏîƒî!Ü î( î*Ýî/=î1ãî7šî9Cî;²î@(îD“ï9Èî gîðî\îÆîœî7îtî"Bî#ðï7Mî)î÷î}îmîjîŠî!ñî#Sî&ôî(™î-¦î2’î47î6î9±î=ªî?ôîAîDï5¥î gî šîƒî{î£î²îÉî âî#˜î'î,î.Èî/ñî36î6Bî9’î<î@«îCwîEêï3þî gî•îIîþîìî°î!Ûî$Yî'fî)·î,Îî0î3ºî6nî8¿î?vîAÓï2Wî gîYîâî‡î»îŒî #î!qî$›î( î-Úî/·î20î8«î<¼î?Kî@™îCÂï0¯î gîÊî˜î#îî.îæï.4î)î’îÌî>î£î î"Èî&¥î+àî1Iî2„î3öî6[î9qî<Éî?ÔîCîD´ï,Œî gîÈîêîeî+î©îùî�î Ñî%µî)Èî.€î1Rî6¤î9î:Xî?<îB“îD]ï*åî gîeî¹î‡îîwî‚î")î$¨ î+î.æî0q î7¡î< î=ôî?îAþï)>î gîFî î*î~îÆî™î#'î(sî)�î*ãî-+î0î3'î8Qî:˜î="î>ÃîA ï'–î gî¯îùî×î‰îáîÆî+î$´î)¡î+3î-Íî1½î5Íî8&î:rî;×îA_îEeï%ïî gîNîƒî:îoîÛî�î /î"�î(wï#tî)îBîÅîóîëî°î"'î&Xî)iî+¾î- î.�î1àî5Îî7“î8Õî:!î;üî>âîD‰ï!Ìî gîsîJî°î?îmî!8î%±î'Öî*à î4µî8áî<îAîCjï %î gîxî¿îüî�î î#0î$™î'î)^î*Òî0iî2¯î3íî9µî;*î>Xî?ÁîB)ï~î gî­îîÏîî.îXî »î#×î%.î'„î)Îî-Çî1}î3Nî6Iî9Pî<­î?îB?îDÖïÖî gî œîñî]îƒîäîDî˜î! î#Žî$¸î'Éî*î/–î2oî4Îî8lî;.î<¼î>IîAîB5îD‰ï/î gîîÒîî•î îÈî_î$$î'Øî+î-Óî/ î3>î4¿î8Qî? î@‰îEPïˆî gï î)îîKî[îãîªîùî!Žî#Ôî(Ðî+¯î-Ôî.ïî3_î8Ëî<ùî>åîA+ïeî g îUî�îîfî ‰î"Ûî$$î(|î+Šî-þî1cî6Vî8pî:äîAZîEeï¾î gîpî¤îaîkî!Aî%®î)åî+Yî,äî/�î2ßî6eî8ãî;Uî?€îAþïî gî î"înî²îŸî$Ùî'Hî,lî0î5uî7Šî9øî<[î?!îD´ïoî gîuî îtîrîÊî$#î(jî+$î,©î..î0Þî2 î6ìîøîDÀïÈî gî¨î[î"î†î6îSî î#î%eî'¾ î/òî3=î4£î5þî7nî9!î;…î@2îAïîCï î gîzîÿî]îüîcî!îáî!Hî&î)´î,<î0íî2äî5Kî;;î=íî?åîB£ï yî gîÍîãî|îÙî]îºî!Yî#¿î&|î(;î*¡î/q î6ªî:9î<Êî?�îA”îD×ÿ ½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,andsïfåî@ î(? vïfåîEqï_/î gîŠî�îWîEîúî!‘î$Âî'›î+‡î.î0©î2Lî7Wî=î>¡îA„îD´ï]ˆî g îPîÑîî î!?î&Ñî(xî,&î/Zî1Èî4Žî6Uî7�î:×î=éî?óîA+ï[àî gîlîwïYeî)î^îpî5î!î$Íî(^î+Šî- î0æî4·î8î:kî@[ïW¾î gîåîÉîéîuî‘îQî0î%¨î)Fî,Rî-oî0î4qî6åî:� îA§ïVî gî†îšîßî îÃî¢î î%2î'tî*Ìî-Fî0 î5¸î8«î;Êî@îE’ïToî gî'îîºî¥îîdî¬î!¢î%Áî+aî,Õî/”î3Êî6sî8¸î>{î@îBlïRÈî gî&îWîEîIîþî.î#lî&@î+î.;î0ùî4;î7�î;›î>›îBûïQ î gî4îäî;î4îwî!…î'î)¿î,æî1î2Îî5oî8íïN¥î)îîcîâîUî}î"/î%~î*pî,<î.¯î3î4›î7#î;"î<ãî@'îBMîDïLþî gî‡îüîpî +î$î'®î+eî-¼î8Üî;íî>zîA¢îCQîEeïKWî gî œîêîùîîoîî X ïHÛî)îûî?îÖîFî& î"Úî%(î'‚ î.6î1`î3® î:mî<,î=|î>ãîBgîEeïG4î gîaî’îwîvîÃî!“î"ßî%Kî'Ãî+,î1î2¦î4*î7~î9Eî>GîCuïE�î gî_îsîßîöîúî!¾î%Âî'Õî*Bî,úî2ïî40î9uî:·î>yî@˜îCîD÷ïCåî gî îãî)îàî Õî#Fî'ßî)íî/7î3î5Üî8Mî=îAìîEeïB>î gîAîTî¼î:îŠî"\î#«î&î)hî,êî/dî2*î4Ðî7äî:Íî=Gî@³îBëîD´ï@—î gî‡îpîçî$îòî´î!jî$�î&ùî*Uî/>î3Vî6‡î:–î@îAóîE/ï>ïî gîÑîbîî*î¶î!<î&7î(î)tî.±î3Âî7©î<ÐîAîD´ï=Hî gî¨î)îîêî·îáî î"çî$–î*hî,Èî1Þî4ãî7yî:àï:Íî)î¬îáî4î î%šî*7î,¡î.õî3Þî5–î9@î:ùî=cwî@}ï:Íï:Íî@à qï9&î gî�î¸îæîuî $î#?î$iî(wî2ºî4hî7î:Õî?àîCîï7~î gîÙî}îŽî®î îPî!¦î&Óî)äî,:î/@î3Lî5Ùî8/î<•î?›îA?îC•ï5×î gîXîŠî± îÐîîWî$ î%wî*Ñî.qî0¼î2ðî7¹î9 îAmï40î gî.î¨îîsîŒîî(3î*Aî+×î09î2Rî6}î8¢î;¹î>¥îBƒï2ˆî gî.îÜîîñî |î"*î$Šî(¡ï0 î)îaîŒîýî>îûî î"wî%4î(Jî*�î.Hî1î4Gî7sî9Íî?Aî@‡îCOîDíï.fî gîvî•îîmîÂîæî!ðî%„î*™î-“î/ºî3òî6ìî8çî<…î?÷îBKï,¾î gîAî îCî–î»îcî àî#ˆ î*=î,vî1Éî2îî8î9“î<î>oîCuï+î gîbîwîæîWî¶î"Êî$àî)3î,Gî.]î2î5£î8î<êîAãîDËï)pî gîÊîþî¶îCîú î ¾î#î(jî)žî.Öï&ôî)îøîQî?îÂî"6î$�î&Øî(~î-kî0 î7,î<î>šî?ýîAîC3ï%Mî gîŸîo îîAî_î"oî%î'õî*·î-èî1‘î6ßî:\î<ÆîA îD´ï#¦î gîj î€îœîôî"î$hî(Bî*+î,î/î3,î6Ùî9sîî,�î.ôî1?î3îî5î8„î;tî>½îB'îDÀï?î gîüîöî†îyîŽî!êî&Òî+î,†î1î3|î8Bî;Çî=0îAàîCãï—î gîî5î® î‚î!î#ˆî(�wî*ï—ï—î*Äqï—î0î1Íî5ˆî7Qî9Ëî<öî@ñîE$ïðî gîî� î¶wî"ïðïðî8qïðî`î Øî%Øî("î* î0uî3-î7Qî8´î<3î?CîA¯îDGwïIî gqîŠïIïIîxî(î™î7î´ î"ðî$Xî'èî*7î+ðî/•î5Ñî8šî;Òî@îîD]ï¡î gîÿî îðîŽî3îŠî#î(—î)úî+î/Žî4ôî6nî8 î9oî<î>tîCØïúî gî|î‰îûî6îtî!Öî&•î(î)Âî+0î/)î1‹î6úî9¨î>‰îBÅï Sî gîÆî+ï ×î)î•îÓîHîOî¬î"ñî$© î+vî-ßî0tî6Bî;ÄîA0îBÆîD]ÿ 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.ReadNIAdetermineswheathertheCPdrivessïfåî@ î(? vïfåîEqï_'î gî ³î—î“îKîÉî@î!î&Hî+=î,áî0úî3pî8Qî:»î>î@ZîD<ï]î gîÈîîýî·îîßî"˜î$ùî'ÿî+î.Üî3‘î5Žî81î;°îAÛîD´ï[Øî gîî<î6îîTî îBî!–î%çî&åî)Fî+šî.iî0Êî6î7…îî5cî9›î=Èî?(îC`ïOqî gîî-îvî ˜î# î%ùî0Qî2î5eî9eî<”î>î@ËîB îEeïMÉî gîœî0îjîÖî î"±î%Áî0;î2,î6îæî gî«î»î#î‰î‰îŽî"‹î$-î&•î,fî1Dî4ßî:xî?VîA îCjï=?î gîMî3îòî€îŽî!õî$žî(Zî+[î-äî/Bî3î5#î8¾î;”î?îA�îCBîE[ï;˜î gîwîØî�î¥î¸î![ï9î)îlî–î_î¿î!î%‰î(ìî+Hî0êî3�î6Õî8'î9Òî>3î?YîC!îE#ï7uî gî}îœî`îiî5î ˆî#åî&‘î*[î,aî0°î3î9î;ŽîB1ï4ùî)îCîÈî­î¶îî#Žî&^î+¹î1î2üî5Ìî8pî;ûî>&îAÒï3Rî gîÃî}îîîÿî­î"Xî%‰î&¾î)î-Mî/î3Úî:gî<Òî?×îEPï1«î gîîÉîîºîîRî" î$] î*¨ï//î)îŒîÁîùîÞî ruï+àî gîGqï(‘î)î3î¨îÊî~îî *î"’î(üî-Tî04î3Xî6î9žî>NîA¾îD&ï&êî gîî~î1î¡î î hî&Qî(¥ î0÷î5Fî8Vî:ªî>>î@ÉîC�ï%Bî gî´îÎîbî�îFî#î%Üî+`î. î0Ùî3óî8,î= î?=îAÒï#›î gîŠî„î&î’îÎî Ôî#3î& ï!î)î•îåîlîçî‘ î#ªî'Ýî,íî.Ìî3òî6mî9vî<3î?ŸîBîEPïxî gîñîwîûîÅîÊî î!Iî'Rî)ßî/�î2iî3Ìî6ƒî8€î<î=ÏîAXîD<ïÑî gî¡îÅîîÃîîˆî¹î$—î'Cî,Òî/&î1Åî4‘î6Ùî8eî<}î@ªîAÈîDgï)î gîªî;î¢îLî�îbî!šî#Eî%–î)î-î0sî2Äî5ûî7óî:Dî={îA„ï‚î gî3îeîùî…îSî9î Æî'Tî+yî.\î4[î5±î8îî:Ôî@îD´pïÛî gqîÐïÛïÛîâ îÚîBî“îÙî!æî&Œî(èî+†î0yî2Eî5î7„î÷îC·ïiî gîîbîvîWpî êïiïiî!¾qïiî'vî,Iïîî)î|î´î"î…îgî! î$î(vî*Øî6î;î=ÎîBaï Gî gî0îîqî�îKîùî"Mî%îî'‰î)êî,üî.·î/ãî3cî5î9õî?-îBJîEeï Ÿî gîÅîoîèî=î¨îî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.sïfåî@ î(? vïfåîEqï_/î gîóî·îîwîoî"|î#Òî'9î)˜î,éï\´î)îƒîÀî5î�îXî²î!øî$aî&²î+°î.‘î1Õî4Âî66î;4î@RîCúï[ î gî×î(îGîžî]î hî"Øî%<î'Âî,±î.ôî2™î6äî9Tî>zîB*ïYeî gîúîdî™îJîõîyî!Úî&¥î)¸î+Àî."î1�î4rî7Òî9*î<î@aîB_îDÀïW¾î gîiîÁî�îhî0îhî!î#sî)mî,æî1Qî5…î8þî>ŸîA&îC—ïVî gî¨î)îˆîÜîGî î%Hî&öî)ÄïS›î)î~î·î(îÕî9î±pî$ZïS›ïS›î%qî'ÄïS›ïS›î(¥î+aî-Åî2³î7Iî9‹î;ïî?ßîCÃïQôî gî ¢îîzîòî°î(îjî î#@î%þî)‚î+çî1î4©î87î:õîBîEßïPMî gîŸî„îØî7îLî ìî#ðïMÑî)î¦î¸îPîÜî»î!9î#£î&/î(çî.î1…î3—î5/î7»î=�îA îCîD´ïL*î gî îCîºîßîsî!7î&Óî*î- î.ûî1Fî4¯î8|î>Pî@›îCïJƒî gî*î î�î Rî#+î)vî,éî.ïî0}î2þî5«î;‘î>ŠîB�îD´ïHÛî gî0îéîIî�îãîüî!8î%©î*î+½î/;î1šî4&î9“î<úuïEŒî gî?îžî§îgqïB>î)î„î×îçî#]î%�î,!î2jî7$î9]î:ýî=Cî@/ï@–î gîæîî¶îîNîOî!%î%&î&8î(­î*î/yî3nî8’î9æî<’î>ä ï>ïî gîî~î€î¤îcîÔî"î$Ûî'Lî,âî0¾î2Êî5’î7ªî=lîAîDˆï=Hî gîAî¤î»î§ î5îÑî# î%°î(lî,rî.³î4Oî6dî<%î>rîCuï; î gîdî7îzîäî î¿î8î Çî#Vî&'î(×î*àî,³î/,î2Îî4–î5Ùî8hî:0î?kîAúîCÂï9ùî gî‘î/îîHîýîXî#î%ñî)î+Èî0üî4*î6¨î9žî< î?vîBºï8Rî gîjîî(î‡î(îáîÃî"zî% î(Bî+©î/Áî1oî3_î5î7mî:}ï5Öî)îùî îeîýî"­î&’î(êî,üî2+ î9Xî< îDrï4/î gîkî îŸîåî#îî"î#¨î&>î(¨î,Qî0 î6’î9Šî> î@Þ ï2ˆî gîùîïî)î1î Œî"§î)3 î15î4óî;î>3î@²ï0àî gî}îJî6î´îîïî!î#“î)ñî.tî/éî3±î7î9ìî=rî?ðîD'ï/9î g î¶îXîˆîÞï,¾î)îrîÃî–î"ôî%Ûî(¬î-çî2î4-î6þîAÞï+î g îtîêîgî tî&î)”î+ûî/wî5î8=î:Ûî>¤îB ï)oî gî î ªî#a î+[î-¯î2¯ï&ôî)î4î�î #î#fî%ùî(uî.bî0 î3eî5Fî7Ùî:Uî?ÔîBîEˆï%Mî g îöîZîîîî"ºî% î.œî3Aî7@ î=:î@GîB¤ï#¥î gîmîÍîKîRî˜îNî'Å î0!î2Ùî:›î<ïî@ºï!*î)îî îî"/î$�î(­î.î1Iî2Œî5Rî8 îBŸîE¾ïƒî gî¸îÞîÍîcîÍî!î™î"žî%'î*÷î,¯î0nî4yî7î<[î?–îBbîDïÛî g î8 îïî!¦î(Ãî+î.âï`î)îî<î¡î‘î" î$mî);î,èî.¥î1Üî5Gî7«î:Yî@¬îBîCIï¹î gï>î)îëî'îrîIî!©î#óî(§î,;î-Þî1î6:î;öî>Ùî?ùîBšï–î g îZîÔî +î";î'œî*Àî0zî7Ÿî>‚îAYïïî gîãî×îîåîyî#¸î(Õî+µî0�î3î5Áî8úî:Ûî=d îD“ïHî gîîîÊîAî!’î%Gî&� î/î3¢î8Jî;�î=?ïÍî)î�îAîÍî ¶î$vî(Lî+Qî/&î4tî8�î;î>Îî@³îC)ï%î gîqîîî¿îôî!ßî$=î'Äî){î+Ãî/¸î26î4”î7_îî@îC·ï ~î gî+î¾î® î!+î'­î+ î-“î.Çî3±î8,î9ûî<¼î?RîAÒîEeï ×î 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.TocheckouttheHistorysïfåî@ î(? vïfåîEqï_/î)îñîÿîqî¥î]î"rî&î*Rî+Èî/Eî0nî3‡î7î<§î?^îDÀï]ˆî gî2î3î¬îWîGî î#sî$¨î'Âî)Óî-÷î0¢î2’î4Kî8nî;‰ï[ î) îîfîî!¬î&Wî(Û î0î3î6šî:1î=êîAkîD×ïYeî gî!î‚îÈîÏî/îÛî#9î&uî'Ÿî*°î,_î.¿î1lî4$î7Kî:fî;�î>¡îB îDiïW¾î gî5î~îàîkîKîîÉî"Hî#©î%¥î):î*Þî0�î4\î7Kî:Éî=kîC^îD´ïVî gîwîÍîlî*îNî «î"î$£î(Ð î0öî3˜î8Úî<7î=ŽïS›î)îiî#îšî³î %î"°î)·î,dî2nî7î9iî<îBÅïQôî gî™î[î£î î#×î'‹î)Dî,Hî.²î1hî4Úî7Dî;ˆî=VîA±ïPMî gîîLîÄî¥îHî/î{î ºî&¤î)ªî+î.Jî0–î3¼î: î;£î=îîBÅïN¥î gî�î.î:î )î"‡î'›î+ î1Ïî5lî9Ðî?îB˜ïLþî gîdîjî%îÈî^îzî ;î$Uî%Íî+hî/î3�î4òî7ªî9ÿî;ºî@�îAýîDÀïKWî gî¾î¼îî�îøîºî!.î%êî'·î(õî.w î4àî8÷î=‡î@hîCùïI¯î gî�îüî‹î îî!‘î%©î)¶î,Üî1 ïG4î)î¡î!î"üî%_î,Hî.sî1¾î6‹î8=î:Rî>ÆîB¶îDªïE�î gîŽî"îøîãî!sî$ î(´î*jî-Tî0åî2oî6mî;ãî?”îAvîCnîEêïCåî g îIîøîîÉîGuï@–î gî\îúîäî’îœqï=Hî)îÔî%î#Áî&Xî)fî-î.ÿî4Lî8yî:2î=î@� ï; î gîêî“ î+î³î!íî$€î*9î.Nî1¾î4©î7íî> ï9ùî gîwîŒî×îÙîŸ î$1î&î'hî*†î1î6]î8î:/î<žî@¯îD]ï8Rî gîú îxwîÂï8Rï8Rî1qï8Rî!†î$î&ûî*î-Å î4^î6÷î9�î?ÈîBÐï6ªî gîAîªîTîîOîRî"3î$›î)mî*Ìî,Aî0!î3¾ î;tî<{î>ãîB îDËï5î gîmî,î«îOî Ûî$Šî&4î2ºî4�î7î: î<Òî@UîBaï3\î gîüî¿îîAwï0àî)îŽî“î îaî!�î#cî& î)•î,;î.ªî1œî5)î6ïî< î@HîB¶îE¨ï/9î gî)î¼î î!Yî%£î&üî-½î/Pî9xî;±î>çî@?ï-’î gî î�îöîbî!­î%´î(î)¼î,î/rqï+î)îFî¶îîXî%Yî'# î0£î42î7^î9Ùî?îBüï)oî gîÔînî›îîƒî! î#²î'Æî)†î,¾î07î3Òî6"î:!î?JîBüï'Èî gîÆîdîáî˜îïîZî!$î"Òî' î*=î0~î4tî6{î7¤ï%Mî) î/î‹î‡î$�î'Jî* î.'î12î7 î8qî9Íî>-î@Zï#¥î gî+î|î@îµîî")î$¿î&+î) î.†î3,î:'î= î?t ï!þî gîÝîbîcîýî#Nî(<î*× î2$î8Sî<9î?8îC�ï Wî gî¥îYîuîî=î mî%2î(î-qî0$î2×î5Öî9� î?ÚîDŸï¯î gîÝî;î î{î�î {î%×î)°î.g î4÷î7Þî<«î@XîCÎïî gî±îüî®îùîCîåî ˜î#ãî'-î*Äî,wî.î/¹î3Qî6›î:=î;Ãî>hî@ŠîB<îE¨ïaî gîvîÀî©îÆîŒî[î"nî$@ î*°î,*î/Hî3Òî7¶î:\î>ŽîAîEeï¹î gî¢îbîî…î¼î wî%�î)0î,Nî2ƒ î:<î=îAØîCàïî gîÛîÄ îî½î!Íî$î)gî- î5gî8 î;uî<¢î?´ ïkî gîîªîCîRîîîÊîéî#üî%šî)î/Ñî3­î5‚î9•î=/îAýïÃî gîvîî[î uïtî gî?îžîœîÕqï%î)î=îˆî‘î!ÿî$î*µî,ôî1½î5ìî:hî<îBAï ~î gî×îÓî˜îîî!î#¨î&ûî)¾î-1î/�î3Áî6ºî:Ýî<î>«î@"îE¾ï ×î gî€î#îzî¥ îrîNî$Çî'¬î*§î.ìî1mî7Iî9�î?�î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,soyoucangetupto16Kofcontrolstoreifsïfåî@ î(? vïfåîEqï_/î gîÄî¶î}îµîî1î×î"Eî$Èî'Lî*î,µî.³î0{î2èî6î8;î9sî;öî=³îBâîEeï]ˆî gî±îµî,îUîùî‡î ¼î%Dî(î+î-’î2 î6òî:íî<ëî>Òî@ƒîD]ï[àî gî�î/î–î®î\îLîúî!Zî$iïYeî)î î‡îÉî^î" î%{î,kî.Èî3Dî6µîC‹ïW¾î gîîbîÁ îœïUCî) îîØ î#Æî&mî(çî+�î1bî2ôî63î:Pî<ÊîA¬îCÍïS›î gî¤î] î"üî%´î-¹î0 î3ØïQ î)îîÃî$îî!oî#ûî)î+²î-`î0cî5¥î8µïN¥î)îîPî°î œî"úî(iî*!î,€î0Ïî5­î7³î:ùî=4îDïLþî gî+î·î›îRî&îÇî!=î&ùî*(î,žî1î6Oî<‘î@ÕîD<ïKVî gîîî‰îŸî+î!?î&|î'¶î,B î3Òî7äî:S îAúîCÃïI¯î gî?ïG4î)îAîî¸î åî#…î)5î+.î-Îî1£î7Gî;×îAÞïEŒî gî{î‹ïCî)î¡î{î|î# î& î*Sî,¬î/¬î4†î:\îA¶îEfïAjî g îîqî‘îSî Æî'®î*Fî,œî1àî4Žî7«î;£î<Ãî?îD<ï?Âî gî îZîêîÕî!´î'î)î*Òî,Áî1î3Îî6,î7îî9�î@¶îB6ï>î gîèî>î@îjîî4î! ï; î) î9î¼î3î¨î Ãî"Qî&Îî(Õî+Kî.:î2¡î4qî6èî<¤î>2îAÇîCï9ùî g î¡î÷îBîõî Àî#lî&õî)3î,ÿî.£î0ˆî2Û î:Eî?î@# ï8Qî gîiîÈîî»ï5Öî)î(îÛîcîwî"î$šî(Jî**î,Ýî2qî7¤î9yî;œî>#îAÞï4/î gîsî‚îâîïîzî"èî$îî(4î*qî0Yî1Åî2îî6ºï1´î)î”îÑî!Mî$oî&Õî)Àî,–î.Åî2î6ãî8¯î;5î?)îA!ï0 î gî ÈîîÜîîMî Fuï,½î gî?î2îbîqï)nî)îÃî’î?îžîàî!ˆî%5î*�î,®î/~î1öî5¢î9î=Öî@7îEï'Çî gî¯î�îðîaî hî#î&zî(éî-Ëî0‘î6”î9î=ºî@JîB�ï& î gîî¥îîîbî¸sï‚î gî?qï3î)pîï3ï3îÍqï3îîîŽîèî´î!&î#�î'—î-[î.—î3Àî7rî;‡î?cî@íîCÍïŒî gîî¶îzî#î$ˆî(íî-Ÿî/î1·î4 î6«ïî)î3î¦îØî£îYîÁî€î$‡î(8î)·î.î0¢î3î4Àî7Sî;”î=î?ÝîB8îEêpïiî gqïiîÀîgî(îÝî.îæî!eî"™î&ñî+¢pî-ïiïiî.qïiî0Bî4Nî6^î8Çî>VîB@ïÂî gîî\îW îî#qî%î(ßî*\î-î/%î2Éî6 î7Zî:!î=cîAîEêpïî gqïîUîÎîPîî›î ápî#‚ïïî$hqïî&Ñî+òî.©î2tî5ºî8[uïÌî gîÆîÐyî�ïÌïÌîHuîïÌïÌqï }î)î²îmî¾îéîpî²ï }qï }î!î"Ñî'�î*Úpî,†ï }ï }î--qî/ïï }ï }î0tî1Mî5Lî7�î8Ïî;mî=$îB¼îDŸpï Õî gqï Õî î=îpî·ï Õqï Õpî4ï Õï ÕîÜqîžï Õï Õî¹î"î%4 î+Zî-0î/ùî2–î4ñî7î8Öpî:7ï Õqï Õî;´î=€îBDîE³×TVm$•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)andsïfåî@ î(? vïfåîEqï_/î gîîq ï\´î)îuîòî×îTî"„î$ î( î*Öî-Rî/Îî5êî8f î@fï[ î gî§î…îîÉî îî î"Šî&Üî,î.Cî2€î6§î9Ïî;)î@,îB¯ïYeî gîÆî� î&î’î!§î$<î(¡î+Wî-·î2~î6iî8"î:=î?ÁîD]ïW¾î gî³îîî(î ½î%"î)�î+ðî-Õî1âïUBî)îî¾îdî"wî)%î-ãpî2ÃïUBïUBî3|qî74ïUBïUBïRÇî)î3îyîZî øî"Øpî)UïRÇïRÇî)ýqî,¾ïRÇïRÇî-Cî.Qî3Åî5±î8Cî;›î=#î@îAâîDïQî g îŒî;îïî�î!¼î#jî%Ê î,¥ïN¤î)îÌîKî½îÖîî$î)Eî/ î0Øî3˜î7ñî:oî<âî>lîCTïLýî gî›îÓîRî§î îJî‚î#þ î*aî0+î1Òî4‚î8qî=Íî@ÉpïKUî gqîÐïKUïKUîìî=î° îÉî^î!(î#�î*\ î1vî4@î6Þî9gpî<ïKUïKUî<Ôqî@=ïKUïKUî@ÂîA±îDFïI®î gî´îÞî,î|î3î]pî%ïI®ïI®î%ªqïI®î(ðî*ž uïF_î gî¼îòî7î–wïCî)î†îJî‹î"Óî%Bî(®î.Sî1Øî3îî6Uî;.î=Õî@EîD³ïAhî gîõîýî îIî’î)î#qï>íî)îîƒî•î;î"‘î&Eî+pî-¹î0î15î3¿î5aî7ªî:@î?îACï=Eî gîÁîîVîî6î¨î!;î$=î& î(ˆî+”î-lî/Þî2àî4¬î8×î>.îB±îE/ï;žî g î1î,îßîVî"Ìî%1î(%î)åî.î3Kî8î:áî<'î=¤î@˜îBWï9÷î gîõî»îÀî$î"î zî"x î)î*Ûî-Šî0 î3î7%î9Èî?õîA§ï8Oî gîmî—îîî$ ï5Ôî)îåîyî£î½îˆî$î&Wî(·î-iî.¿î0+î2Ìî5xî:4î<;î=dï3Xî)î™îûîÊî±î>î †î#ïî)íî,nî0¿î2›î5vî8[î;ºî?îA»îC—ï1±î gîdîÅî¹î]î$’î&4î+î-î/šî2ªî9Žî;îAzï0 î gî¼îôîÊwî,ï0 ï0 îéqî!yï0 ï0 î"¿î&{ î.Èî5áî; î?KîEfï.bî g înîßîdîmîúî%�î(âî*©î.Ð î6^î:�î@îA„ï,»î gîÍîJînî.îšî î vî"Ýî%óî'ßî*ˆî,âî/Ìî1‚î5•î:Ôî?˜îB¯ï+î gî Óîðîžî*îDî€îµîHî#2ï(˜î)îXîÎîÊîHîÍî ¦î$Eî%yî+‚î-;î/bî3yî4ûî7{î8°î=+îBŽîD]ï&ñî gîîßîíîjîqî 0î"Sî$Ðî'Ûî+ïî.( î5 î8Aî=î?îDï%Jî gîˆîÃîlî±îîî îóî#‚î&æî+€î1Zî5î:6î=Yî@œï#¢î gîîÀî¾î¥îîÄî~î#?î$ïî'Eî)Xî.†î3Oî7Øî;mîAWîD´ï!ûî gî.îãîî5îî.î ¡î%-î&âî*0î+ïî-¤î0 î2²î5²î8ZîAî@2îBNïØî)î{î™îUî·îî5î"Nî&î*“î,Kî/Ò î6tî8,î>˜î@’îC€ï1î gî@îÛîFî’îàî Ìî#î'5î+ìî-ˆ î5î:Sî=ÉîAðîC—ï‰î gîÿîîîlî+î"úî&î'Ùî* î-Qî0¨î2gî4ì î@qïâî gî Óî2îLîàîéîtîîÌî"šî&î,�î.Huï“î gîÆîªqïDî)îÙî“î î #î#<î'Íî)†î+ðî0Ãî3¦î7. î>4î@’îC¡ïœî gîWîîTîîîtî· î&¸î)î*@î0>î3Çî53î79îDLion>.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.sïfåî@ î(? vïfåîEwï_'î gîpî”qï_'î$P î.oî4‚î7½î<ÈîA8îEï]î gîî î"¢î%�î'€î)àî/Oî1Uî3rï[î)î¦îèîaîÏî‚î#Wî%î(žî,®î0’î2î6 î8žî;ºî@èîB¤ïY\î g î†îêî[îjî!¸î'±î)Þî.¸î2î5}î:ºî=£î@ÏîEßïWµî gîòî”îRîEî ­î"ùî%�î+ˆî-{ î3{î9 î;»î>=îDhïVî gîkîýî­î�î"Mî$pî'ßî*î-ˆî3Ãî5¤î9jî=îBdîD÷ïTfî gî&îcî„îŠî´î $î!�î'?î)Fî*oïQëî)î î�îgînî#úî'`î*Üî1&î5Ÿî9Àî<3î?lî@µîCuïPCî gîU ïMÈî)î�î¤îfîûîjî˜î#$î'î(Èî.î2+î3†î66î86î9Zî=ïî?—îA¸îDiïL î gîaîÛî™îýîïîgî rî"Öî%êî(î*xî,Üî2ßî6mî7Ýî:üî<5î?­îAjîE’ïJyî gîî%îNîêî˜îÀîwî "î%î'�î)Fî+¦î.”î2î4 ïGýî)î;î0îKîNîùî ðî"�î$âî(î+Hî,éî/’î13î7 î;þî?�î@«îC­ïFVî gîãî îŠî`îKîÐî!ïî$_î'¸î*ïî-î3 î6±î;¡î> ïD¯î gî[î&îêîJîÇî#uî&î'ñïB3î)îî&îeîîÓî!âî%Sî'½î)Tî+ôî-­î0î4¨î9oî;Øî>æîA½îCÍï@‹î gîRîîuî8îÿî9î wî!±î$ î)rî,9î-sî2±î4›î6ôî9Yî>€îB©îD´ï>äî gîŽîðîùî‰îÎî0î9î Èî&.î)*î+úî.Éî5dî7Žî9�î={îA=îCŸîE¨ï==î gîƒîPîðî�îÍî!€î%)î&tî)‚î,nî. î0zî1Úî8œî<¨î=óî?SîB@ï;•î gî îÎî-îÙî…îu ï9î)îõîƒîXîèî‘î!…î$¤î&óî(pî+Mî.î1)î2Mî4Þî7!î:Óî?úîC­ï7rî gî·î� îZî î2î$Zî&0î)¨î+×î-¬î/î4$î7|î9Ìî<¿î>íî@ÃîBï5Ëî gîÒî6îÑîzî'î 'î!�î$~î&‰î)ßî-î2†î4éî7„î<}î?ÒîABï4$î gîîàîßî°î¯îî$Äî'•î.î1œî4î7uî:Ëî<”î?eîA-ï2|î gîwîAî&îÞîÃî|îÛï0î)îÀîaîîzî¯î""î%]î'dî)Ãî/¬î6.î;[î>äîADîEï.Yî gîœîoîîzî’î) î$Xî'î-ºî3pî8iî;}î>ÿîALï,²î gî4î%î\îõî_î"gî%þî*Zî-aî0Fî6Rî8Éî<Í îCªîEêï+ î g ï(�î)î‰îÆîYî#î!9î$ï&î)î#îˆîªîKîù î%rî&”î)qî+î1¿î6îî8sî;Dî="î@ îDFï$lî gîÒî1î²îîÃî…î"Øî$êî'Uî-äî/¨î2 î8Øî;Bîtî?ŽîBVïúî gîÄîî îsïî)î…î¬îrîdîî#Èî(7î*”î.î3yî6êî:î<îBXîD´ï×î gî“î� î¬îFî žî$î%ðî(ªî+8î.kî1;î3"î5°î;Kî>gîAnï0î gîÏîÕîî_î¤îhî"mî&qî*uî,Àî1î7î9ÿî<ŒîA îC_ï‰î gîŽî'î î¯î|î ùî#äî&—î)î+’î1®î3¼î7Mî<Øî@iîAóïáî gîÃî î3î«î!æî#\î&3î)zî+€î-êî2Dî3ýî7Yî9Ùîî9Ÿî<¯î=ÙîABîBñï pî gîîÓîÚîîŸîMîuî!,î#×î(Íî+Bî,ûî/[î2Iî5»î7Á >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.)sïfåî@ î(? vïfåîEqï_/î)î–îÎîÛîÚî¦î$}î&ëî)šî*Ýî-�î/Uî1Ãî5î8Dî: î<î@ÞîB£ïRÄî g îžîŠî¢î •î#Yî%,î&óî,Nî0Ùî6jî9Fî< î>Bî@ÆîD]ïQî gîªîîºî5pî©ïQïQîbqî ÌïQïQî!éî$î&wî)èî-ôî0àî4rî:Kî=þî?h îEêïOvî gîiîtîApî~ïOvïOvîRqïOvîî Ôî$\î'5î)”î.QïLúî)î5îîXî#ðî(¶î,]î.® î6šî:Wî<ß îEfïKSî g îðî²î`î n î'2î+Œî-Óî3èî:€î?iîAÓîEeïI«î gî\îî{îËîßî dî$ î'Äî)cî+³î2]î5•î9Eî=-î>~îA&îCjïHî gî ±îáî4îMîùî�îlî!òî% î(�î*ðî.kî2æî7î;Äî@•îA³îDïF]î gîàîéîœîüî ªî"Xî&œî,,î-Ûî1Xî3¸î7ÛïCáî)îîbî?îßî1î!jî# î%Éî*6î,àî0Zî5nî7Àî=XîBïB9î gîÆîÄîßîLî }î$(î'dî)jî+Êï?½î)î¥îî-îÄî 2î!_î#î'»î*–î0¡î2ªî5 î8)î;Áî>8î@,îC¡ï>î gîîØî�î4î°î»îçî"î#¯î$Êî&Ÿî(­î-žî/<î2Ÿî5î8Šî;tî>î@ÎîBlïIîA»ï9 î gî® îÉîºîãî›ï6¤î)î îËî<î¡î%d î-�î/Cî1¨î7Tî=‚î?æîBLï4ýî gîñîóîËî$îîî"xî(jî+5î.7î2Æî5¨î8øî<'î>WîD<ï3Uî gî'îÿî`îî!çî#Äî'hî*{î-6î0(î6ðî8¹î:Ùî>îA ï1®î gî‡î#îîèî"nî(Ìî,î23î?ðîEêï0î g î�î�îÀî3î!¶î&—î+�î2lî6-î7êî îAÅîD&ï._î gî/î‡î?î|î­î"Yî#¯î'zî(Ðî+õî.T î7Kî8îî=Íî@¥ï+ãî)îøî?îåî î!õî$Lî'Àî)qî-j î4î5µî8éî;˜î@7îEï*<î gî Çî6îzî(îÚîVî"éî'Ýî)Áî/î2«î4çî:(î>®îAeîD<ï(•î gîi îEî &î'µ î0ñî4Ÿî9ÅîAIîCŠï&íî gî€î±îMî¦î"Qî%oî)�î+îî/áî3wî5UîCîD´ï%Fî gî¹îˆîÑîUîpîè î'î+@î0Nî2î4�î8õ î@îA£îD´ï#Ÿî gîOîWîî’î!Ìî$¡î&Vî,Rî1Yî5nî8Zî= î@mîB-îE[ï!÷î gî–î4îOî×î vî#î(~î-Óî0î2¶î7Éî9]î:nî=Ýî@z ï Pî gî8î¹ î·î_î!¢î$î&˜î)ë î1˜î3&î7î8ãî;eî>·î@�îEœï©î gîîî î?îæî–î!qî'î,î.=î1‘î5·î80î91î=-î>†îBîCkïî gîîîrî~î¨î¹îr ï…î)îî¥îÏî?î!žî(]î)Øî,¶î/&î4ýî9Àî;‰î@*îE[ïÞî gî³îîÙîqîÇîÍî!öî$Žî'µî)Pî,¸î.=î2nî3bî89î<ãî?pîAXï7î gî�îÜî_îîxî ã î'§ î.�î2èî4ùî8˜î<î@ ï�î gîÃî<î î"Õî'Œî*©î-8î/±î4áî6´ î?@îBâîD´ïèî gîáîtîîõ î÷î €î"°î%Ç î,<î.î2Iî5¸î8cî9âî;wî>lîC_ïAî g îºîîàî9 î&õî)§î*×î0Kî4î9dî;qî>qî?€îD´ï™î gîîÌîîEî®î!Rî#“î%÷î+'î.rî1.î5Vî7ºî;�î>”î@GîB÷îD´ïòî gî$î;îrîæ î.î Uî%‰î,aî/Æî2Dî5öî:,î>îAÀîD<ï Kî gîúî—îPî—îBî!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.sïfåî@ î(? vïfåîEuï_,î gîGwï[Üî)îXî�î°î�îÉîî!Ûî#3î%lî)Yî, î-þî3Tî5€î:šîî†îçîëî$œî(/î)¼î,øî/)î3î6.î:0î<„îBapïVî gqîÐïVïVîÏîËîî:îKîoî"Ìî%!î+xî/½î2î58î6Ýî9Ì î@† ïTkî gî·î‘ î î Žî#6î&Ðî(±î*Pî,¡î0\ î7Sî:î?î@ùîCJïRÃî gî5î·îî¬î<î$Tpî)7ïRÃïRÃî)ßqî,¡ïRÃïRÃî-Ùî0î3†î5óî7¥î:5î<¸î?â ïQî gî*îyîâîî·î!Tî#þî%´î* î-Nî1„î2¬î5—î8Æî<6î>qîBoîEêïOuî gîgîî4î’îÂî! î$Eî'vî*!î,iî/ûî4Ïî:G îAXîD´ïMÍî gpîOïMÍïMÍî÷qî¹ïMÍïMÍîÁî‰îÚî!‰î'´î*­ïKRî)îcî€îÕîî(î!“î'Ûî*{î,Øî/î3› î:î=�î>áîAÙïIªî gîËî2î"îVïG/î)îmî”îóîyîþî ƒî#Çî&rî)øî.[î2Éî4jî6dî9qî=î?®îCúïE‡î gî²î‚îéîúîµî!î$nî& î)?î+úî/|î1-î5_î6Ï î=vî@¶îBhîC–ïCàî gîîÀî ïAdî)îhîŒîæî4îÆ îoî!6î"Èî(î*[î-dî0ƒî2Òî6€î9&î=Yî@¯îBýï>éî)îî¹îtîÙî‹î!óî$°î'î*Ðî/öî2Óî6Žî:Hî=~î?tîAÙîE[ï=Aî gîøîmî¡îX ï:Æî)îpî›îþîTî@îîî!Dî&© î-î/äî4Ðî8õî;Kî?î@¦îBüï9î gî�î”î(î½î’îî€î!ïî&hî'¤î*Nî,î.lî2î6=î:¶î<£î?LîAîCjï7wî gî:î}î:î©î„îkîmî!lî#)î%—î)½î-Îî00î1tî5nî76 î=±î>õîA!ï5Ðî gîîSîp î»î6î¢î ¨î&°î(íî+Ðî2& ï3Tî)îpîœîþîT î&î"£î$íî&î("î,Qî/cî4þ î<î>;î@‘îCTï1­î gîYîèîæîkîäî[îMpî!Vï1­ï1­î!þqï1­î%^î(¨î*²î,…î.þî2Tî6Bî94î@'îB”îD´ï0î gîbîLîÝîUî²î$Qî(„î,jî-Åî1=î4Öî:vî<®î> îC.îE#ï.^î g îBîFîõîîî!{î#Ûî%Ëî)€î*Öî,Aî1ï+âî)î�îôîƒîî î!ÿî%Ëî(¥î+ î.î1âî5Vî6®î<4 pîB¢ï+âï+âîCIqîF ï+âï*;î gî£îàîHï'¿î)înî—îøîLî¸î þî#©î%ýî(¾ î.mî0´î3î7šî=Ïî@ï&î gîÆîîÞî(îUî 7î"Ñî&î'úî*Rî.ºî4Yî6¤î9îEî@� ï$qî gî[îCîÂî1îî"ƒî&+î(þî+¥î.Ûî0çî4î65î:Ìî>qîAeîCàï"Éî gî—îPîzîî!xî#Ìî(”î*Ñî-1î/ýï Nî)î•î•îî—îæî!7î$mî%ôî*'î,¢î.­ î6î8åî=ž îD]ï¦î gîVîÜîHî_îZî!Ýî%3î(†î*bî-¶ î5 î<ÚîA*îD´ïÿî gîÃîxî~îÅîªîïƒî)îçpî/ïƒïƒî×qïƒîîUîwî! î$éî)�î+Óî0 î7î›îBƒïÜî gîîÜîîIîXî!Hî#Hî'Nî)½î+§î- î/¾î1¨î3½î5Cî8ƒî:òî<î>ÐîA�îClï5î gîOîFîLîÂî 2pî%¤ï5ï5î&Kqï5î)¡î+¡î-_î/Îî3¨î5¾î9î; î=çîAîCîï�î gî3î4îìî î€î"Öî&vî*Xî,`î/³î1xî58î7¯î=—î?\îC�ïæî gî·î îâîÄî³î&+î) î.ñî2Äî6Uî8Þ îCTï?î gîRî¥î«îòïÃî)înîHî±îî¬îÝî"1î';pî*ÎïÃïÃî+vqî.8ïÃïÃî.¼î/Œ î6‡î7çî;†î=¸î@²îD“ïî gîÛî¡îüîpîöî î$áî'2î),î+µî/µî1åî7Êî:>pî?´ïïî@\qîCïïîDï tî gîüîÇî¸îKîOpîUï tï tîýqî"¿ï tï tî#Çî&î)î.Ùî0‡î6�î9öÿ É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,andsïfåî@ î(? vïfåîEqï_/î)îoîIî´îpîZï_/ï_/îqï_/î =î"êî%>î+î/3î2î7Þî;�î=æ îCÃï]ˆî gî.î{îMî"î³ î"œî%� î-âî/àî5«î8eî;ðîA»ï[àî gî3îhî îÂî!î •î#Ðî%Öî(5î.¸ïYeî)î…îuîõî`îTpî$ïYeïYeî$¹qî'{ïYeïYeî'ÿî(æî, î-ƒî0:î1þî4iî7îî@pîBÏîE¨ïW¾î g îÉîOî–îÖî"}î%6î)pî,Îî/fî2wî7¯î9âî;Éî>ïîA ïVî gîðî¬î“îpî -ïVïVî Ôqî#–ïVïVî$Èî("î)ãî-2î0ïî3Uî6°îAsîDGïToî gîîSîæîÏîVî#Âî'âî)¢î,®î0€î4Íî: î=ÝîB¢ïRÈî gîóî¤îîZî¿îYî#Äî%­î(3î+âî.“î1²î6î8î:kî>rî?ãîB]îC€ïQ î gî'îîNîÎî¹î éî$Pî'&î)¥î/®î3Æî7ÿî;‡î=VîCÍïOyî gîÁîåîyî‡î6î!‹î$ôî(Rî)öî,åî0èî3<î8=î;Æî>áîAbîCIïMÒî gî Òî<îWî�îeîåî#´î)±î/Žî2Pî7õî;Qî=Kî?µîC_ïL*î g î°îñî“îî ñî%ûî'àî*_î/Iî18î3Îî:Eî=òî@÷îBWïJƒî gî°î¶îýîSîÝî$uî' î)Yî*ùî,+î/î4î5¨î7Šî:5î>Î wïHî)îœî�îgî=î ºî&¨î,.î.²î3÷î6éî:î>î?ÃîCîE¨ïFaî gîØî|îóî3î„î î½î"/î$mî'î*ä î1kî3Êî6!î9k î?!îB3ïD¹î gî9îÑî½îvîCîüîSqïB>î)îsîRîÀîîîÉî#¬î)Lî*ôî-Mî3†î7äî;Õî>.îD÷ï@—î g îñîÌîAîJî¬î#yî&Îî)$î,cî0Öî5– î<žî?yîB«îD´ï>ïî gî9î¶îîUîÎî!Êî$‰î'¶ î.Ãî1£î5uî:\î?MîB§îD]ï=Hî gîÜîÌî, îîñî#®î& î)3î,èî1Òî4sî7*î;�î>Gï:Íî)î˜îœî/î­î<î ºî&hî,,î/³î2‰î5î:Ëî<˜î?îB7îD´ï9&î gîàîîîÉîÉî �î"Ôî)î-qî0Õî3î7î:ôî>æîA+ï7~î gpî.ï7~ï7~îÖqî˜ï7~ï7~îî îrîµî!0î#¤î)¡pî.hï7~ï7~î/qî1Òï7~ï7~î2ïî5»î:ûî=oîBñîD´ï5×î gîîÁî!î¥îî uï2ˆî g î­qï/9î)îî¬îîî&îÞî">î$èî';î)šî,ëî/>î1Dî3ðî7Žî:fî>î?‰î@²ï-’î gîˆpîáï-’ï-’îšqï-’îÏî}î²î"î'¥pî*\ï-’ï-’î+qï-’î-8wï+î)îqî}î\îîWî"î(3î+û î3î5j î=î?UîC–ï)oî gî îXîîÅîúî-î!î Hî#î$¸î(‚î*îî.-î/Ñî2î8Eî:8î<„uï& î gqï"Ñî)î@îpîÊî¾îœî"Oî'­î,î.fî27î4ÿî9Ùî?nîC?ï!*î gî)î¬îÇîVî”îî"•î%pî(î*·î0jî2<î6™î:Oî=Ï ïƒî gî?îùîYî­ î<îœî!@ î'î)“î+Cî.Àî3î8¡î;Mî><îAWîE#ïÛî gî î“îîqî!4î$aî&�î-<î3Üî7Ûî:óîAFîBûï4î gî®î îvî%î)î!Þî#Œî(?ï¹î)î î—î‘îUî$(î&´î'ôî*^î+àî1-î6 î7ÑîD]ïî gîNîü îîÁî#­î&{î)®î,fî/Íî3aî6¨î9Iî<Æï–î)îûîÎî€î^îî!½î$.î%Rî' î)î*°î- î/z î8*î=Pî>ùîAîEeïïî gîXîKî�îõ î!öî$9î(Úî-�î/Fî0¬î5�î94î?îD×ïHî gîFîmîiî¬î!4î%¾î'/î*Yî,Òî2Y î8qî:ëî> îAãîD´ï î gîªî;îøî_î@î}î! î%&î(4î)öî-Pî.Žî1þî6 î7Ìî<öî?jîEfïùî gîUîµîîwî&î î!9î&pî)?î-ýï ~î)î�î¥îî^î§î ¯î#vî%î(Ìî, î-´î/î4aî7Âî11.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.Ifthingssïfåî@ î(? vïfåîEqï_/î gî'îkîßî©î™î @î' î.1î/Ñî1Fî6"î:þîAÀîCJï]ˆî gî‘î1 ï[ î)î–îáî îwî-î3î §î"æî%hî' î*–î.šî0>î6Øî9’î;Ñî?ëîBïYeî gî÷î´îlð#î-„î0qî6Ðî8žî;Îî?ÎîBBîEeïW¾î gîjîÿî`îêîWî‚î mî$Yî'(î)àî-3î0þî5"î6¥î;î=î@ôîD×ïVî gî»î²î©îmîâîBî"-î&|î(+î,î.åî0;î1§î5ˆî8æî;�î@EîDÀïToî gî.îXîYî~îºî«î!_î$ãî(ªî+î. î/¶î0Ûî3ðî7âî:1î>ZîA ïQôî)îœîî1îýîRî"ïî$ˆî&çî*.î,kî.ËïOyî'î[îLî![î#Úî'î(gî*£î-Ýî17î4 î:xî?îB ïMÑî gîÎî¸î¨î¿ïL*î'î“îeî!Uî#µî($î+?î.óî0ùî4@ïJƒî'î”îgî!Wî#¶î(&î+@î-Ÿpî1ïJƒïJƒî1ºqî4|ïJƒïJƒïHÛî'î;îtîžî#î)©ïG4î' îÐî!Qî#>î%šî*5 î1,î3:î7î8¸î>Oî?¢îCØïEŒî gî.îüîîùî°î$wî'EïCåî'î;îpî"3î&Çî,êî/ î1¯î5öî8yî;_î?½îB*ïB>î gï@–î' îÆî ¬î"°î$}î&ñî)!î/–î4qî:™î= î@QîC3ï>ïî gîQî�îÎîšî²î Šî%Ãî(ýî*‰î.sî/½î4Mî:Tî<õî@žîB*ï=Gî gîPîkî•î;îéîÚ ï; î'îÀî¹î[î"žî$‚î&/î(‚î,æî/ôî2Hî8 î<’î@QîCÂï9ùî gî ãî]îêîqî¦î…î‘î¥î!nî%kî'åî+«î06î2Wî4Ñî8«î=îBªîDsï8Qî g ï6ªî'î‹î“î!ƒî&Åî)qî-àî1ªî4ƒî6âï5î'îSî[î!Kî&�î)î-qî1;î4î6sï3[î'î3î;î!+î&mî(Àî-0î0úî3Òî62ï1´î'îrî Dî%î(î*…î+¯ï0 î'îuîdîwî"�î%Nî(hî*ÿî/Æî2gî5vî8þî:>î=ÅîAMîB�ï.eî gîÆîóîªîÄî‚î áî$ï,½î'î³î¶îî!Sî#=î'Ýî+(î-¹î/Œ î5wî7 î:Vî;°îA îDîEqï+î gî­îuî«îYî¿î nî!õî%5î'æî*4î/¦î1óî4@î6Žî8Ûî;(î=uî?ÂîBîD]ï)oî gîî°îîŽîíî î"Ñî%ëî*©î-î0-ï'Çî'îtîÏîáî!�î#î% î)êî+—î.-î/Ûî11î4î6ëî:¶î?2îA"îC(îE‡ï& î gîVî îEîìîCî!¾î$î%¶î(î,-î/Gî0²î4áî7î;çî@Ñï#¥î)î5îîtî�î®îgî$oî'‰î)Üî.Wî1%î3xî8Wî=Aî>ïîA„ï!þî gî5î)îÛî¼î"Sî$Õî&è î.¬î0žî3�î6øî9Òî<€ îCFîEêï Vî g îLîØî,î›î$î!Ïî%üî)„î- î/áî1Ñî6¸î8Zî:®îî gîî6îŠî­îïÂî)î©î^îÉîòî tî"!î#Iî%›î(hî,sî10î5î9=î;šî=ìî?¯î@¶îC?îEeïî gîxï î)îªîaîµî¨îæî"‹î(µî+lî1>î4 î6øî9Wî;«î<Õî>æî@Ÿï%î)îNîïîçî]î ‰î$?î(Ðî*âî/×î1ôî4jî:¿î?î@ÔîCJï }î gîîîîõîŠ î tî&�î+aî-éî/Íî2Kî3Öî9Cî=½î?  ï Öî gîwîîšî1îÑî"àî'/î)wî/]î5§î7=î9†î;ÂîA‘îBû ô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.Thelowersïfåî@ î(? vïfåîEqï_/î gî^îîlîîî î ~î#“î&÷î)] î0?î5î6Í î>î@ŒîCÎï]ˆî gîúî~î!î%tî*Žî3\î<ÄîC­ï[àî gð)î'¼î*î-ÜsïUBî gîqïQóî)îöî]îYî­îéî˜î¶î%Eî)1î.Øî/öî3ãî7¢î9î;Ðî@ƒîBtïPLî gî:îTîÑî î&î'Ýî,“î1®î4×î8î:Èî?ŸïN¤î gî^îUwî¨ïN¤ïN¤îgqïN¤îIîªîaî#�î%¡î&Ëî+Fî-ýî1#î4>î9«î=úîB¬ïL)î)îîšî‘îÂî!7î&Cî)R uïHÚî gqïEŠî)î�îêîlîbî#9î%|î'áî*¿î01î4†î8 î:î;O îBqîD´ïCãî gîøîdî²î/î 4î!hî$˜î(î)Sî+ýî.:î0˜î4î8Nî:øî=Wî?ÀîDïB<î gîƒîÔîîëî;îÅî"‘î&î( î/î0…î3Qî5ºî9yî=!î@]îA§ï@•î gî¶înîÍîáî3î!¨î%;î(aî)–î/uï=Eî gqï9öî)î7î¯îÒî”î§î"î'�î+èî-lî0rî3„î7}î:bî=sîAîB�îDrï8Oî gîî+îUîpî�îÊî î$î&oî'£î+òî/9î3qî4›î7Áî9zî<îA|ï5Óî)îVîÚîTîDî!lî#iî(kî+%î0Ìî6î;jî=Öî@XîEeï4,î gîÑîÆîÊîÚîDî ¼î$[î(×î,>î/î2³î5–î8°î9ïî<›îAÜï2…î gîžî`îÁ î�î"hî%Bî+Äî,úî/�î4Ôî: î?EîA™îD×ï0Ýî gî^ ï.bî)îÂîcîæî'î6î¿î#Gî$ˆî(î*‰î0î4î7:î9±î<Íî>;îAmîD´ï,ºî gîfîøî_î.îÃî#� î*Òî-Bî0¯î4·î7tî=î>CîAXï+î gîNî4îºîîqî÷îÓî"Ïî&]î(}î+ î. î0Vî2æî6î8/î:¿î=ôî@ÐîD]ï)lî gî|îÛîMîùî§îî"þï&ðî)îÂîcîæî'î6î¿î#Gî$ˆî(î*‰î0î4î7:î9±î<Íî>;îAmîD´ï%Iî gîfîøî_î.îÃî#� î*Òî-Bî0¯î4·î7tî=î>CîAXï#¢î gîNî4îºîîqî÷îÓî"Ïî&]î(}î+ î. î0Vî2æî6î8/î:¿î=ôî@ÐîD]ï!úî gî|îÛîMîùî§îî"þïî)îíî-î¥î\îrîMî#§î'î*§î.Ëî2Ûî5î9mîŸîB ïØî gî î� îèî>îªîÓîðî"?î%eî(3î)”î,Kî0Ýî3uïˆî gîGwï9î)îsîbîùî9îTî”î�î&;î("î*bî/î1«î4¥î7%î;Ÿî=ß ï’î g îî"î¡îî ²î%£î'"î)�î-4î1l î7Vî<–î?çîBFïêî gî îWqïoî)î’îÞîkîßî°î'î"™î%hî*3î-óî0ãî5˜î;î=tîC×îEêïÈî gîÅîúîõîî@î!Öî&üî(¹î)Üî/Cî4î6Hî8âî<Óî@aîBºï î gîtîLî¦îþîî"Kî$0î(<î+™î-Rî/± î6jï ¥î)î¶îRîZîôî!Áî%7î' î)¹î.dî1î3>î8çî:Ïî<úî@7îCJÌTVm$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.sïfåî@ î(? vïfåîEqï_/î gî{î8î£îvî Mî%šî' î)ÿî.õî0­î3 î6µî9ðîî-x î6¦î9‰î:Éî?¿îBlîD´ïPLî gîàîsî(îšîÛî"Vî%9î'Úî)Qî*†î/’î2lî5Dî:¿î?;îBwïN¤î gî1î-îäîàîiîÈ î#£î(�î+/î.–î0õî6Ýî;Nî>«î@nïL)î)îîqîîÿî"Ÿî$ñî)ºî+gî-bî.ùî1Xî4gî6î7Gî<³î@}îDïJ�î gîîÊîvî%î­î îÁî#î%Oî'¯ î.Šî1ýî3¶ïHî)î4îkîZîDî ªî#0î&Ÿî)î-: î3iî7žî:%î=]îB{îD´ïF^î gîQîòîYî¹î¡î!Oî$>î&õî*î,zî0qî3Iî4sî7 î<î=?î?E ïCâî)îî`î¬î·îî mî%/î'“î*õî.4î/¥î6Bî8„î;+î=üî?xîD´ïB;î gî}î6î•î"îpî4î!Dî#Ïî%¿î'°î,±î.Iî0©î4&î7Kî;¼ï?¿î)îþî3îlî¡îôîú î'zî))î+‰î0öî4âî84î9iî>Ìî@½îCï>î gîîõî-î¹î’î î$€î&Hî(µî.1î1Ôî3Nî8Ëî;�î=Wî@ùîB1îEeïñîBVï,¹î gî ÷î¢îñ îæî!fî$î'> î.î3� î;âî?cîA¥ï+î gîîÚîîµî·îdî"¸î$î(_î-î1�î6Mî;†î>TîAÝï)jî gîîÛî-îPîŒî",î'óî+}î.Ï î7oî:iî=WîAóï'Ãî gîîpîÁîPîùî;î ðî&Êî(¸î+î0Îî6©î:Qî;ýî>Zî@¬îE’ï&î gî>î¤î$î–îqî#8î'9î*1î,üî2Sî5î8Çî:ùî<²îAÝï$tî gîî{îeîîZîïî!³ï!øî)îTîÃî%îÕî"¤î$äî)Lî.¼î3’î5èî7î<éî>¤î@—îBùîF ï Qî gî«î[îîºîX î"‹î(eî,zî-Îî/7î4Ãî7 îî%°î(î+Çî/bî3@î6@î8Cî;œî=]îB�îD´ïTnî gîiî/î§îîî!§î$î)Aî, î5Wî:!î=<î@oîA±ïRÇî gîGî8îœî îÂî"mïPKî)î®î}îî)‚î.êî2î3Bî6¹î9«î;î=î@õïN¤î gîSîÜî�î!îsî“î-î!pî&*î)Wî,7î.î4>î6î8œî<¼îAîC îD\ïLüî gîÔîäîïîîïJ€î) îqî·îë î!çî&¯î)î+°î-Sî/½ î6‹î8î:Ù îD\ïHÙî gî�îîîNîùî¥îîî" î%Qî'î(4î+éî/î0þî4pïF]î)îäî/îbî î 8î"xî#�î(›î*@î.‘î2Hî65î:�î<Æ ïD¶î gî5î'îéî ¦î%Åî(ßî-eî1Qî3»î:tî<,î>(îA+îDïCî gîŒîîÜîWîîòî#Ïî'Kî*yî,êî1Aî4yî7dî90î<î>çîEeïAgî gîA îîî€î Éî'dî(qî+Çî.ýî0Žî4î6Šî9$î?ï?Àî gîî¬ï=Dî)îQîåî!7î%Äî,Mî.Þî1Ôî4¨î7êî:rî=ŸîB‘îD´ï;�î gîÓîÛîŸîîî Xî#kî)7î,î0~î5î6Óî9Bî;¦îA9îBÀîE{ï9õî gî•îüî¼î%î�îîŽî Áî&6î*Žî+Áî1Mî4qî6jî8Žî=4î?î@3îBþîD´ï8Nî gï5Òî)îCîºîïî%\î'Ðî*ªî-Ðî4î::î;ôî@OîCîï4+î gî=îlî–î7î î “î#ùî(Rî-qî.ñî1Èî3âî98î;î@îC_ï2ƒî gîëîAî{îçî"Kî%²î(Šî+Wî,uî.½î1î4Åî:kî=yîAþîDï0Üî gî'î îî;îâî©î!î%†î'î(Äî+5î-šî3/î7,î;Vî>üî@nîC7îE¾ï/5î gîÎî-sï(–î gî–qï%Fî) îxîÇîîùî$Lî&›î,:î/�î1ßî4zî7Bî9Òî;{î=ÊîA°ï#Ÿî gîŠîcîXî‘îÙî%î(•î*Xî,Âî0Jî1Àî5>î7Dî9®î=MîApîEï!÷î gîWîmï|î)îœîî1îýî;îôî!-î#3î%“î(ïïÔî'î`îrîÕî&cî*eî0 ï,î'îî&î"Ðï„î'pî)ï„ï„îÑqî’ï„ï„ïÜî'îÎî î/î"Âî%zî*N ï4î'îlî" î!Æî"úî&5î'îî,Sî/nî2Q î8{î:�î<áî?¹î@íï�î'î�î2ïåî'îy îTî$]î'î*§î.}î0»î5Ûî;uï•î gqï Eî)î±î-îîî ßî%/î'l–TVm$ 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.Thedataisreadviathesïfåî@ î(? vïfåîEuï_,î g îíîKîÈqï[Ýî)îŒî¹ îwî6î§î"î&î(€î/(î0èî2éî8î;¾ îBˆîCÍïZ6î gîrîÄîüîîÜî$î ”î$î'÷î+©î.î/çî2dwî6„ïZ6ïZ6î7Øî:jîDpïXŽî g qïXŽî}îVî«î”îQî µî$¥î&î(xî,<î1ðî4Ìî6ìî9éî;óî>WîAuîE ïVçî gî?îùîYîîŽî•îöî#Eî$Èî'€î)Ôî-Ÿî/Nî2Íî5nî8¶î:ôî=Uî@oîD]ïU@î gîÈî²î~î&î:î’î"xî$ î'î)vî-}î0pî2î6·î9‰ î@îA«îDïS˜î gîî€îšîQîSî!Éî%áî'�ïQî)î#îÄîìîUî¬î Ûî#\î):î.Ëî4Õî; î=åîA ïOvî gîîîÌîéî1îíî âî$œî(î*ƒî-@î2/î5ôî:î;Œî=üîA2îD÷ïMÏî gî2î£îBî‰îsîoî""î%î'\î*Qî,î.‚î22î4˜î7 î8Oî;wî>ÇïMÏïMÏî?¯qïMÏîB*ïL'î gîJî îî²îãîbî!’î#m î*î-Ûî0”î4·î7Bî;œïJ€î gîÊî*î>î÷îçî Fî#Ûî%áî(@ïHî)îõî‡îCî=î!Lî$î'Sî*Üî0˜î2’î6¡î:—î;÷î=ñîC­ïF]î gîíîeîóîòî]î"Lî'î+ó î36î5 î6[î;lî>úîAtîD×ïD¶î g î= î²îAîÉî#8î'Mî)Èî+&î.•î2Rî4Îî:î?üîBwïCî gîèîîTîÁîŒî#8 î+Jî-î3•î6î8èî<î>âî@[ ïAgî gîWîîLîî¢î Ëî&;î)Kî,’î/ùî2Çï>ìî)î"î‰î?îëîÃî ’î%î'Ùî++î-î1‹î6î9î=ñî@fï=Eî gîËî×îîcî!9î%Gî&³î)ïî+êuï9öî gîGwï6§î)îuîBîSî î!‰î"Èî$Ùî(òî+F î1ïî4 î9…î;‚î=×îB=ï5î gî/îî$îXîÄîî!î#gî%³î+Èî-Ðî/î0qî2½qï2…î)îªîaîµîî-î?îhî!Åî&î(Ëî+wî1Hî4�î6= î=fî@ùï0 î)îtî¢îîaîî©î!î'<î*‡î+¶î-î/tî3 î9žîäîBˆîCúï+î gî œî·îlî;îHîîmî!Ôî%×î*&î,�î/Áî2Ýî5Ÿî9Iî;qî<Óî>Œî@$îBÚï)lî gîî…îÃî_îšîðî!dî$Êî(Fî)Òî/uî25î5Þî7 î:`î@]îD<ï'Åî gîÚîêîoî¹î×î5î# î%âî(xî- î0î1dî6î;$î<Çî@D ï&î gîmîÍî˜îòî/î�î áî$Hî'šî*ìî-üî0õî4¿î5éî8Áî;ñî?�ï#¢î)îøî)î[î î Ôî$ãî(7î)Ýî/œî1òî5³î9Îî=7î?*pîA�ï#¢ï#¢îB)qï#¢îEfï!ûî gîÑî¥îîZîînî!î#æî%%î(¢î,Ûî.“pî0ýï!ûï!ûî1¥qï!ûî4õî8©î<î>ƒîAêîEï Sî gî¦î+î¬îœî…î ‘î!ëî# î'�î(å î/Äî2×î6cî9‚î<&î?{îCÂï¬î gpî¥ï¬ï¬îMqï¬î“îQîòî’î"Zî$î'§î*Iï1î)îúîÜîëî 6î!›î#ôî'î+àî-ßî1î2¤î9Lî=^î?·îBµîD´ïŠî gîî½î"î>î³î"�î$õî'î*Žî,™î.þî3Íî5‹î8×î:iî;æî>¸îA×îD´ïâî gî¹îÈîÌîMî3îÔî xî&5î(Šî++î-ùî1`î3áî5Çî8×î; î=`î@²îCÁîD´ï;î gî¶îJî¤îöîTîäî!—î#éî(¤î+ÿî/óî2:î3aî8î:±î<ªî@&îDï”î gîrîî î›îÉî"ìî$Íî(î+àî/óî4î7hî:%î?�îA8ïìî gîhîÕîÿî#�î)ñî,\î/+î2Êî6Tî9éî<¢î?¨îBîEïEî gîçî[îžîzîúî"× î*Úî1©î7Òî9î?%îD]ïžî gî=îïîìîSî% î%î($î+rî-(î/¥î5;î6ñî9Aî;¨î>“îBéîDGïöî gï {î)îìîî³îÕî¢îïpî"Þï {ï {î#†qî&Hï {ï {î&Ìî'•î*[î0\î2‡pî4Ôï {ï {î5|qî8>ï {ï {î94î<Ëî@ îBmï Ôî gî™î·îîºîªîhî!šî$î*Ÿî-î3Aî7œî:Œî=©î?-î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.)sïfåî@ î(? vïfåîEqï_/î gîÖîîÌî>î¬î`î Æî$î%Õî)¨î,î0õî4¼î86î; î?åîBKï]ˆî gîRpîÌï]ˆï]ˆîtqï]ˆîÀîÏî^î àî#²î%õî)î.>pî1úï]ˆï]ˆî2ßî4qî8;ï]ˆï]ˆî8¿î9¡î<î?îAâîCØï[àî gpîqï[àï[àî+qî¦ï[àï[àî*îöîg î Cî"’î'5î+î. î1áî4î7î:àî<”î?“îBàîCùïZ9î gîvî³î9î`îÝpî=ïZ9ïZ9îöqî"qïZ9ïZ9î"õî#Òî&1î+ªî/î2±î5î8Žî<ôïW½î)î‰îÍî?î®î -î"œî%ýî)î+ãî1î6N î<Ôî?šîB ïVî gîîùîTîlîêî½î$ î+[î/Pî1Iî7Eî8®î: î=”îBóîD]ïToî gîî(îîÎî$î**î-+î0Bî5`î6qî:î<€îB îC�ïRÇî gîÎî-î[î$î €î"õî(Cî+î,qî/€ïPLî)î'îWîî�î#Žî'ûî+Öî0*î1»î4Úî6Äî:“î=.îAîD<ïN¤î gîrîSî¥îPî—î :î#jî$ªî'>î*!î.-î/£î2 î6Fî8cî;ëî=mî?øîAþîEïLýî gîîžînîîî:î Ú î*!î,ƒî/sî3¤î8œî;£î=¬î@½îEPïKVî gîjîƒî� î$î!jî#Çî'dî)3 î.÷î1ïî4nî7î:vî?€îCïI®î gî"îaîÚîKî¹î äî"üî&Tî'òî+Uî-üî0‚î2„î6î;©î@þîB†îE#ïHî gî/î$îîñî ´î'8î(æî*î/î1Nî3Ãî5qî6šî<ÅïE‹î)îzî®îfîšîîîMî”î#(î%àî(?î,¥î/ê î6‚î8Àî9ôî>.ïCî)îkî’îçî8î î"Þ î(úî+)î-zî0Dî1jî5•î9 î@îAnïAhî gî¼î�î¸îEîûî#Àî&‡î)½î*÷î0î2ïî6ëî9[îî gî€îHî,îRî±î"0 î(#î+¸î.eî1Jî4’î9ˆî;Bî@¼îC'ïáîDsï5î gîFîÐîÐîÞînî�î +î""î$î';î(ðî*!î.xî08î2Ÿî6žî9¿î<&î@f ï3Yî gîùîúîôî,î–îVî#)î$áî'_î*òî.�î0Gî1zî6mî9Èî;]î@gîEï1²î gîðîŽîúî6îäîmî ’î#Ùî(Hî+»î.Ìî2Øî4 ï/6î)îþîãîšîîÓî2î"î$Êî)}î+ºî.î2î5Å wï,ºî)îƒî×î;îî Uî&î*¤î.#î16î5“î8ñî<³îBSîCùï+î gîûîgî¤îIî×î{î#5î$Tî) î+¡î0@î2Œ î9%qï(—î)î®îPîÎî¨î Mî$¶î'‡î+ î-Äî/vî3\î6èî9Ûî>¨îAï&ðî gî±îrî¿ î î"~î%Cî)^î,ßî.8î0 î2™î60î8Ôî;� îC`ï%Iî gî^ îEîqîïî<î!Œî%øî)‡î/î1æî3§î7çî:Xî=�î?ZîB îE³ï#¡î gîÀî>îõî5îÏî"Àî)î+qî,•î2Œî4åî9 î<™î?·îA_îC·ï!úî gîuîoî©î*îöî|î!î"cî%“î'ƒî)Öî.žî3¨ î:­î<î?íîA�ï Sî gîWîîÓî¾îîFî%Dî&šî)¿î+mî-Íî2sî5�î7“î:Úuïî gî?îtîñqï´î)î,î�î/îÒîŒîžî!Ýî'šî*î,sî/Ñî4!î6ûî9Õî;óî=aî@ ï î gîíî?îÓî8îî óî%‚î'�î)î,®î0Jî3Ñî6"î;Æî=rîA¨îE¨ïeî gî …îwî$îºîKîî î(î) î+–î-êî3nî6rî8bî=@ ï¾î gî?îiîÒîþîµîáî"Aî&î'¹î*î-Jî/Õî2­î9î;mïBî)îîµî×îÙî ïî#aî&î)åî.‰î0`î26î5ýî:(î<ŽîA÷îD]ï›î gî„î® îžîÿî°î Êïî)îMîÏîvîÄîâî!î#Íî&î)�î,¼î/¢î1î4«î7©î9ëî<{î@lîB ï 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.sïfåî@ î(? vïfåîEqï_/î)î¡îòîAîŽî•îñî"äî(þî+Nî0Âî5.î7¿î;Xî>î@qï]ˆî gî"îŽîGî îÍîAî­î# î(î)‘î*ôî0î4î6rî:—î=[îA°îEï[àî gî®ïYeî)îYî£î¬î‹î Œî!Ñî$ûî( î+hî-'î/—î3�î5¿î:wî<çîBàîEeïW½î gî×î«î¬îåî Þî#¬î%œî&Ñî*î-¬î0cî2î4qïUBî)îî�îàî îÜî!Tî$rî( î.*î0¸î2Šî5î85î<:î=ÊîAÄîCÍïSšî gî�î“îòîÓïQî)î}î€îcî¶îúî"+î'Uî)¨î,~î0&î1Cî4‡î9‘î?JîBîD´ïOwî gîÃîîÊîkîî!°î% î' ïLüî)îî“îÓî\îþîÍî"Cî'oî+|î.¬î0.î2¤î5Ôî8Âî:‡î=)î?ŸîC>ïKTî gî î»îïHØî)î¬îÉî5îZî!î$]î&fî(Òî,ˆî3î7î:î<ÂîBÂîE[ïG1î gîWî¶îÏîÕîÅî~îÝî÷ïDµî)î"îiîËîÛî Ìî$Ïpî(MïDµïDµî)qïDµî-=î1 î2ðî5‡î:rî?sîD\ïCî gwîpïCïCîcî³îÃî.îc î# qïCî%èî(Àî+˜î.‘î2“î4Kî7pî<±î?‰îDïAgî gî—î~îÑ îQî Wî#íî'î+Dî-Òî2êî4Ñî7^î;î?îCïï?¿î g îµîPî£î�îbîˆî"ªî(bî+¼î.î1|î4rî8œî<7î>“îAgîB™ï>î gî½î^îÉî¹îµîcî&î#Œî%}î(î+Fî.£pî1rï>ï>î2+qî5¦ï>ï>î6¤î9&î<6î>îBÅïî@îClîEêï:Éî gîwîØî�îpîî· ï8Nî)îîVîaî±îî ¼î$î%çî)^î-§î/:î37î4‡î7éwî<ï8Nï8Nî<ùîAeîD�ï6¦î gîîîƒîî°î#Gqï6¦î)\î,¾î.9î1šî2éî6Ãî9 î=°î@£îD]ï4ÿî gîîžîöîëîî Îî$´î'î*ñî-Îî3ºî7ÖîKî@@îE³ï3Xî gîî{î)îôï0Üî)îœî1î�î]î kî"|î%âî)î,Mî-—î2iî7~î9aî:«î?hîBVï/5î gîäî’î¼î¦ï,¹î)îîDî½î®îûî#Oî%î)î*Îî/6î3|î5 î9î:Tî=´îAÏîD´ï+î gîoîÑî–îdî8î ³î%‹î(Öî*Ÿî-Fî/Àî3Èwî7aï+ï+î8Tî<¿î?êîB‰ï)jî gî:î˜îøî‹îqï)jî#ýî'Bî( î+äî-î0Òî3’î7|î9ãî?ÈîC îE¨ï'Ãî gîâî*îþîùîøî î"ëî$“î'éî*ñî,yî.óî4;î6î; î@”îB¶îEˆï&î gî¯îSîÌî:îtî;î"(î%î'.î)òî+Œî.Õî1Ðî3Jî5·î:ñî<¸îA¦ï$tî gî…îSî÷îùîîåî2î �î%]î)(î,Oî/�î4„î6¢î9pî:½î>ˆîA¯îC‹ï"Íî gîãîÔîgîFîî$Hî&ÿï Qî)îîî2î‹î!Ôî#‡î'�î+î-sî3î4Òî9î;áî?Cî@÷îC³îEfïªî gîðî¨îîî®îÂî"Kî(îî*œî0Æï.î)î îÅîÝîÊî üî%2î(jî*î.bî2Œî5˜î8òî:$î=hîAfîD<ï‡î gî ™îÑîeîûî=îîðî"Mî&°î)ôî-ôî/µî2î4òî86î<5î? îB§îCÙïàî gîõî†îÄî’îÝî î=î"²î'Qî(÷î,ºî2Žî44î7<î:pî=wî>¤î@`îB^îD´ï8î gîÂî›îKî¹îþîlîÚî# î$�î'Ìî)î.=î/sî3 î6áî:Ïî=0î@ÆîB4îEPï‘î gîÖî,îùî†îCî°î#ìî*Pî.Xî0Çî3Ûî8fî9íî?jîCeîEêïêî gîßî†î/îPîõî!'î$Šî(´î*^î+ƒî-7î.\ î4¹î6î7/î9×î>zîA!ïBî gîÁîî«îFîðîLî �î!íî$¡î(gî+Áî-lî1î2„î6 î7sî8Ûî:È îB§îEfï›î gîÆîqî•î"Žî$íî'Æî,!î.'î1Xî4î6Üïî)î2îõîõîLî Aî",î&—î*/î-½î1î3î6aî:^î=gîB*ï xî gî Óî2îî‰îßî�î î& î(aî.î0Zî2Ïî5êî7 ;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.3MBEthernetBoardssïfåî@ î(? vïfåîEqï_/î)îlîIîîÕî"î%³î)Mî+öî/9î2Óî6,î8qî;õî?8îB‘îDï]ˆî gîõîÄî?î¥î"qî'Uî)¢î+ûî/î0kî67î;;îAîCúï[àî gî wîHîDî+î!î|î#,î(Uî*òî-¤î0î2[î7ºî:Wî@ ïYdî)îkîSî î¶îî!Îî$˜î&�î(½î+[î1ú î9?î<4îAëîEeïW½î gîƒîîÀîÄî#î&£î+Äî/Žî3Y î:iî=xî@‡îAóïVî gîî_îìîœîíî!Eî&ïî)Ÿî+÷ î3Cî4½î7 î> î?°îBÚïTnî gîÛîpîŸîîBî Îî$¢î'šî*Êî/‡î5Ðî8.î>7î?ÃîD×ïRÇî gîíîîŒî3îa î$…î'qî*î.µî4çî7Zî:“î<`î?îB¼îEêïQ î gîÓî#îâî‡îH î#¤î%²î(%î- î1Lî47î7"î<*î=©î@îE[ïOxî g îãî�îÀî±î!iî&“î+#î/žî1�î5î8Óî;ªî?HîDÀïMÑî gîÞîÃîBîWîˆî9î°î!fî&;î*jî.¯î1'î5˜î7î8áî<4î?©îEeïL*î gî‘îðîºîWî î"oî$ûî)jî+î.î0¾î3î7£ ïI®î)îBîúîNî?î î �î"áî&3î*Çî1)î2Øî5eî:Þî@BîCïHî gîÆîÊîAîìîÝîþî_îµsïAhî gîxî=qï>î)î8î•î-îSîÿî¸î"Aî&î'bî(¸î+²î25î3äî6…î:/î?QîBüïî=ñî@qîBÅï8Mî gî/î™îõî°îŠî )î&7î(Éî,î.¨î3 î5Yî;Rî=î> îBï6¦î gî îîÞîîÒî ?î!Âî'ˆî)Æî-¨î0Kî6kî99î<—î>]îA»îC�ï4þî gîï2‚î)îµî×îÏî�î éî"î$ uï/2î gî!îÁqï+âî)î*î~î³îîÎî÷î%î&Òî,î.%î0…î4§ï)fî)î3îŸîÐî!Èî#fî(Vî+¢î.îî1€î3¸ î:˜î>SîCîE$ï'¿î gï%Cî)îùî‘îîî%*î&Žî+Eî.Xî0°î6Nî;“î?@îAäîD<ï#›î gî®î¿îîFîôî î"”î$| î++î-Îî0$î4­î8ôîoîCîEïÑî gîîNîÅî Mî$ î'î,Uî.¥î1î6î8Æî;nî>ÓîADîBùï)î gî?îOîî”î…î"!î$'î&Óî(Œî*ìî-åî/žuïÙî gqï‰î)îKî�î´îÇî¹î Šî#Áî%î(Uî)þî.iî1ìî4“î8�î:Oî>çî@9îBqîC–ïâî gî1î:îÎî�îísï Cî gî¤îiCTVm$æ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.)sïfåî@ î(? vïfåîEqï_/î)îî•î"î¾îêî#Bî&Wî+Ÿî.Ëî3 î5ÿî;ùî=¹îAîDï]ˆî gî»îéî:îÔî[îîî!|î%î&áî)hî-Þî0Þî5aî8£î:ºî=Bî@AîBÞîD´ï[àî g îLîîKîùïYdî)î¢îqî1 î"Òî'ñî*°î-qî3Kî6°î:Û îA.îB¹ïW½î g îµî9î/îî!4î#åî&ûî+î.Qî0÷ î6ïî;î?AîA§ïVî gî³îÈîÑîíîÓîUîùî#Äî&öî*?î-fî0î4"î9àî;¼ îB*ïTnî gî&îàî”îPîZî!„î(î)”î.î/Oî5Rî7&î:î<Íî@qîBrîDìïRÇî gîãîðî îbîî î î%!î(»î,Äî.6î/fî3Cî5gî7«î:Ìî>� îEœïQ î gî�îæîïîkî Gî$gî'Ÿî*î-÷ î4Sî6æî8Nî; î=î?Rî@ÅîC7îE¨ïOxî gwïLüî)îtîGîiîî"‰î&áî*'î-¸î/zî6Àî9ñî;/î>'îA¢îDOïKUî g îîëîH î ;î%Êî)/î,iî1Ãî4Ûî:î<õî?‡ ïI®î gîÑîîôqïG2î)î6îÁîVîîðîæî!~î$Jî(*î*àî-Tî/Yî1¸î5—î8oî:jî>ÙîD´ïEŠî gïCî)îµî'îîÜî 9î!cî#i uï?¿î gqïcîBÈîDiï/2î gî¾îFî�îìîî Hî#î%£î'úî+Yî/ î2þî7/î8[î;ƒî?î@.îDhï-‹î gîÍî>î”îî<îúî�î!î#™î%ÿî+~î.žî1žî4î6âî8î<÷î>tîA&îCï+ãî gîîÍuï(”î gî¢qï%Dî)î-îÌîtîçî Àî#Aî&%î(þî,Eî/Øî3 î6|î;9î>úîB˜ï#œî gî"îÜîbî¼îîî!î%gî(=î+—î-›î0 î3rî5äî7î8Íî<~î?TîCUï!õî gî„î¢îTî·î îÈî"Eî&Kî(?î,Þî/™î1Kî3­î6î:Ýî<šî>ýîCPîEêï Nî gîõîýî®îµîîÛîHî"Zî$î&nî(Lî)ýî-©î0zî4î8!î;`î=Íî@q ï¦î gîîØî7îFîòî8îçî!î&Oî(¯î,¦î/]î5žî7Lî9¬î>×î@�îBïuïVî gî?î[î2îöîe qïî)îtîoîîÉîêîSî#Bî$èî(\î+nî,�î/€ î6´î9„ î@`îAÃîEeï_î gî°îöîüî[îÆîžîWî êî"˜î$øî(Iïãî)îŒîðîjî'î‹îàî!9î#�î%´î)î,�î.åî3î90îî@f ï<î gîlîÖ î�îPî„î Wî#Èî&Ìî(»î*sî,bî1§î3¬î4àî8î;î>ŽîA îBüîD´ï”î gî°îºîî' îÙî!î$åî&—î)´î*âî-|î/-î1èî4wî6Ãî8Íî;0î?ƒîB_îE¨ïíî gîÒîHîÉî<î§îî Wî"î$†î&˜î,úî.gî1)î4fî6Ñî:Ôî>÷îAÛîCùï 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.sïfåî@ î(? vïfåîEuï_,î g îíîKîÔqï[Ýî)îúîÔî±îŒî!î"¿î%î(ƒî,sî-Øî0 î2øî5Qî9òî<ðî@îB~îC¡ïZ6î gîfî îîÀîìî ;î!wî%î&Þî,=î0Qî3áî5Uî8î:zî;¶î@ô ïXŽî gîî9îcî9îÂî�î"8î%î'fî+”î-î1’î4¬î9·î=ŽuïU@î gîûî›qïQñî)îî”î!îýî!Šî#¢î%£î+Yî.Òî1»î7Pî8Ìî;¬î?Fî@ÂîC=ïPIî gîöî™îüî¯î°î î#ñî'(î*Ùî-4î0úî5³î8î;î=¡î@¡îB£ïN¢î gî ®îåîÍîÂîQî'î ¤î%î)É î0Ÿî7Sî<½î?.îC7îD´ïLûî gîwî%îÚîEî6î’î î"Æî$¶uïI¬î gîÂî¢îBî¿ qïF]î)îî“îáîfîî „î#Ûî%Üî)Iî/6î0ôî3zî6m î>>îBPîD´ïDµî gî™î’î­î›î &î"|î%Kî(‰î*‡î0î2Ó î;2î<ùî@„îBÚïCî gî;îàîîîÈî$1î%vî'æî*î,ƒî.°î2)î5«î8&î îD´ï"Îî gîWîî©îQî!î"5î%®î*î,Äî.!î/”î1Œî5>î6ó î=ˆî@Ë ï!'î gîªî&îîYî‘î¤î"^î%î'ãî))î,·î1!î4 îî@’ïî gî(îÇî&î¶îRî!�î%# î,­î0Žî2îî6`ïî)îÿîîî—îLîøî"Rî#±î&fî)ªî+˜î.Ýî2 î7Ðî:Oî;£î>óîB îEfï]î gî. îºî�î î$é î,î/ î0ïî4Žî6‰î<‡î=òîCïµî gîîÓîûî©î‘î@î#�î%¿î&èî)ï:î)îµîÑîÈî†îãî î" uïëî gqïœî)îî­î îîRî"Üî%/î&dî+Çî-Îî0-î2Iï!î)îî]îîÃî@î±î!¼î'Qî.&î/£î0Þî2$î4íî:ÏîâîAcîD]ï Óî gî•ÿTVm$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.)sïfåî@ î(? vïfåîEqï_/î)îîbî$îgîæîZî#²î)î+Æî.9î1%î5ˆî8«î=;î?>îACï]ˆî gî©î&îÃîî˜îÙî#2î']î(ƒî+6î-Óî0$î3~î7¿î;î?Cî@iîCŒï[àî gî ¨îøî¯îî’îîî!aî"¢î%fî&þî*�î-\î0@î3î7¢î:ÿî<ºî?& ïZ9î gî&îŸî\îîXîmî ÿî#"î&²î(Êî*î-&î19î3Àî5î6�îÈîA,îC8îEeïPLî gîŠîÇî¼înî8î! î$Dî%Íî*êî04î3ïî6åî:3î=–îB|îDïN¤î g ïL)î)îûîJîÉî îÈî%î+î.î/Üî2Ýî8îî:òî>ºîBÚïJ‚î g îêîóîYî™î!Yî$©î(7î+™î-!î/ßî2fî8Iî<î?|îB9îDËïHÚî gî\ îêîÒî îî#Ëî' î)Bî+Yî.�î2Úî8Òî<_î=¤î?ÒîEïG3î gîˆî/î½îWîyî!Rî#(î&Sî'xî(�î.î/mî2Jî5Ãî8kî9…î=Vî?dîA‘ïEŒî gînîàî~î$Zî(}î+�î,Šî3!î5�î7�î9ºïCî)î9îäîxîî î!ùî%xî'^î*èî-î3î7Îî;Mî@ÒîCÙïAiî g î'î§î«î &î%$î&æî)Yî.ûî5|î7Hî9»î?«îBÚï?Âî gîOîNîÞîîî"î',î+€î-_î0áî3qî6¼î;'î@lîCuï>î gîB î×î`î§îá î%î'1î*hî,3î/î2lî4!î7dî:-î‹î@VîC¥îD÷ï4î?tîB£îD´ï:Ìî gî„î”îñî îŒî5î‡ î#uî(î)lî/¾î2gî4¹î:½î?Vî@´ï9$î gî7î–îØîîèîåîˆî yî$%î'Ñî+áî.7î/èî3&î6Èî8î:Ïî?,îBùîD÷ï7}î gî÷î†î1îNîsî"aî$Íî*î-î2-î5Jî7ªî;¸î=tîBIîCîï5Öî gîîGîeî©î]î’î¯î!Cï3Zî)î+îÃîîÍî îyî#î&áî(‰î*tî-÷î3Uî4ºî9Öî;ˆî=áîBï1³î gî`îÙî,î²î!˜î$î)ƒî-ìî/qî2ýî8zî=:î>¿îCÍï0 î gî%îîîžîiî#vî%÷î'Mî(¹î+î-üî/µî2î7¯î;Mï-�î)î)î�î÷îAîLî±î#¡î$Ïî& î(+î)›î*Êî.nî0!î2…î72î8ïî:î<@î?'îBîE¨ï+éî gî1îŽîmî#î€îšîzî!êî%‡î&ðî("î+eî.:î0Íî3ûî9¿î=#î?Ìî@òîB$îD?îEêï*Aî gî;î¶îî îóîî#©î(±î*fî-&î/wî2 î5æî7Cî8Áî<0î>à ï(šî gî ×î®î#î�în î!zî"½î%¯î'‚î+†î/¡î1'î3Gî6Óî:€î>ÝîBîEeï&óî gîIî¬îCîCîî!{î$Ûî( î/\î3ƒî6¡î9î<…î@€îAïîEêï%Kî gî% ï"Ðî)î+îDîËî¾îî!Oî#3î(~î-î/4î1Ôî3¸î6Ûî:î=†î?_îB îC_ï!)î gî;î�îöîíî îùî"î$Àî'ðî*oî. î0ïî4bî5¡î6ìî9î<½î?îA…ï�î gî¹îÅî]î+ î Xî"Kî$¯î'î+Cî.Jî1Àî4½î6-î8ÿî<î?]î@ŠîCfîEïÚî gî2î‚îÁî|îJîÑîžî!®î&Ùî(î,§î1zî4©î5òî:*î= î@gîBÛï3î gî¶î±îhî–îçîî#?î$íî&Þî+oî.~î31î6mï·î)îëî îî¬î!öî$Îî(î)lî+Ëî0î2§î5×î7Þî;î<²î@/ïî gî îî)îÔîîšî Þî!ãî$k î+�î/nî0sî4î5bî8 î<Ðî=öîA¨îDïhî gî¶î îxî¤îRîŠî zî"Úïíî)î• îM î#qî'Qî)¯î,†î.äî3î9 î@jîBÜîD]ïFî gî°îÚîôîî î0îÛî!î"Wî'»î*Öî.vî0’î3Íî6…î;îî@fîDïžî gîOî+î£îkîÚîÂîáî!÷î$¨î*î,ãî/Rî4Åî8íî:•î=áîCØï÷î gîcîîšî-î®îî!‡î%&î&àî)Jî-ýî1œî3@î5«î;Éî=Vî@�îDÀï Pî gîëî¨î)îÚî”îìî!€î#Sî(ðî*�î.$î1òî5î6Âî=·î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,alltheclocksarederivedsïfåî@ î(? vïfåîEuï_,î gîKî¯qï[Ýî)îùîm îÃî'î!íî&5î+ î.™î1×î4pî7‚î;Ôî=…î?ŽîCîD]ïZ5î gî¸îîøî5î 9î!Õî#³î'ñî,:î0Vî3•î4­î6·î9[î=Ï ïXŽî gî jî½îWî î¥ î!yî$Kî%ôî(cî*Nî.—î1ùî6nî:¢î=ãîDhïVçî gîýî–î²îPîXî-îsïTkî)î‘î»îDîÂîî Õî"ðî%cî'•î,´î.Œ î5‘î8~î:Žî;Ìî@¨îD´ïRÄî gî+î=î³î�îöîoî$î!yî#ûî'±î)‚î,î/Aî4Bî8î9’î=•î?fîCSîDŸïQî g îãîÅîqîî"Yî(î+gî0ˆî5î:}î;½îAMîDsïOuî g îcîhîDîSîßî"íî&kî)Þî.rî0Üî2ùî57î8=î<¹îA»îCïMÎî g ïKSî)î&î>îDîãî6î †î$öî(Qî*¥î. î4î:(î<9î>åîA!îD\ïI«î gîÉîCîîîíîpî œî$jî&sî'Ÿî+î0¼î4¶î7pî9»î:çî=‹îB4ïHî gîîŠîÈ ïEˆî)î/îJîµîîptïCáîxîËî‚î9î¥î•î'î´î!jî"Öî)5î-Òî/î2Žî4<î5fïB9îxîËîæîî�î'î#Úî'ýî)'î-î.Gî0„î2äî8÷î;mî<¸î>�î@ºï@’îKîî,îµînîNî&î%:î'Wî(Âî.iî0î2vî6Vî9¨îêîKîÔî?îîdî]î3î gî"nî#—î)î,Åî0Óî3 î8^î: î;Åî@ï=CîKî«îƒï;›îxî¥î=î� îaîÁî"bî%öî'¤î*î-vî3î7wî9ìî<î=Áî?oî@™ï9ôîKîî@îtî‘îÍî-î—î"òî%Êî*hî,…î1Cî5ëî8Jî<*î?9îB€ï8LîKî-îjî†î?îíîMî Õqï5Ñî)î•îYîîOî¤î hî!ˆî%Ùî(Dî,^î/›î0Æî3]î6�î7Ûî{î@½ï+äî gîáî™î<îŠî5î î#Öî&Eî)î+Pî.±î3î5Qî8Éî:fî=Bî?èîC3ï*=î gî=îöî=îîxï'Áî)î>îîˆ î äî$î&æ î.@î1aî4î6 î<&î=Ûî@WîAˆîDFï&î gîÆîîèîSîiî$¡î'è î/Rï#žî)îBî î(î"Ãî$êî)pî,¬î/bî1‰î4Jî6Qî;Éî>3îC€ï!÷î gîßîîzîî ¥î#Dî%î)“î. î0”î67î9Èî>ÑîDsï Pî gî„îBïÔî)îîî*î¼îÄî î"�î%•î(î)íî/qî1Kî4Ó î<î>™ ï-î gî? î;î§î—îAîð î%}î(¹ ï±î)îîÙî§î‰î�î" î%=î(çî.`î1Oî3�î7�î:Qî<Üî>ãîAYï î g î°îFî²îrîTîÿî#/î%å î,Éî1½î3‹î6î9#î;3î=ÿî@îBƒïcî gîÆî¦îQîhî·î"Çî%ïçî)îcîªî ¹î$Šî']î)Sî,•î.Iî2î4iî9yî=vîCîD´ï@î gîUîquïñî gîGqï ¢î)îêîBî2î{î�î!bî"·î#Ëî%Òî)"î-žî/Åî0Øî3cî7½î9—î;àî?âî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.Theonlytrickypartofthesïfåî@ î(? vïfåîEqï_/î gîëîfîîÄîbî!Iî%Õî(Eî-bî/„î2î6Vî:î;ñîApîC&ï_/ï_/îCÎqï]ˆî gîvîœîÚîšî#zî(î*òî.Õî1„î35î7…î;&î<øî?ppîC&ï]ˆï]ˆîCÎqï[àî gîpîîžïYeî)î’îßîŒîÀî8î!µî'sî):î+²î.Ùî4Iî6î8¾î?ƒîAîE#ïW¾î gîžîAî%îCîIî î¹î âî"›î#Å î+ßî.Uî0rî3î5sî:¿î·îAXîDïVî gî¶îHî„îÑîlîÓî!èî%Äî)iî+)î.ï î6·î9^î;Jî=¯îA îE¨ïToî gîî[î>îÍîjî>î#Sî'-î)é î/Êî1î5Çî:Ìî=îAÜïRÈî gîVî‰îßîÕîÄî-î Qî!±î%8î(ˆî)±î,Éî2°î4hî6 î8$î:ƒî=�îBWïQ î g îmîÍîwî&î… î#ƒî(Mî,½î/îî1#ïN¥î)îî¡îŒîMî›î×î!Jî#±î'Lî,âî0gî5cî8Bpî:ÕïN¥ïN¥î;|qïN¥î>Êî@=îE{ïLþî gî —î<î—îõîîÌî€î!Ûî$åî(×î+øî-Iî0î2xî6=î9î;4îÝîBîCUïD¹î gîyîlîºîPî î$oî)µ î/× î7$î:,î;Éî>îD]ïCî gî¸î"îóîÄîFî -î#î%µî*Iî,\î.Þî3eî8}î;Xî=UîBºïAkî gîíîNîîXîÒîÂî$î)ï>ïî)îþîÅî|îÀîòî[î ¹î"Ó î)jî,åî1Öî4¬î8'î=gî?pîA½ï>ïï>ïîBdqï>ïîE¨ï=Hî gî4îAîyîøî"îâî ¯î#-î&Qî+7î-ìî2:î4–î8 î>¦îA$îC¢ï;¡î gî© îIîóî3î"Ðî%8î&ãî)6î-pî2—ï;¡ï;¡î3>qî6ï;¡ï;¡î6Xî7Hî<î= îAÆï9ùî gîîôîíîîÒî:î!Öî&9 î.î1]î6Cî9#pî;¶ï9ùï9ùî<^qï9ùî?­îDï8Rî gî`îxîÎî›îJî×î6î Fî"cî#Ïî(ðî*ìî-aî2@î4Fï5×î)îÏpîKï5×ï5×îòqï5×î*îîî Uî"6î$‡î'Éî)iî-Rî/£î6Æî8Ôî=Žî?ÞîA&îCãï40î gîÛîJ îªî—îáî Íî#6î&‡î(Jî, î06î2î4òî7fî;î>)îB@ï2ˆî gî–îäîŠî-pî|ï2ˆï2ˆî#qï2ˆî!Xî%Íî(1î*îî-<î1†î2áî8iî:Sî<¢î? îAHîBaï0áî g î%î¡îÍîîÕî Eî$î'Æî)Bî-åî1áî6ºî9mî>0pî@ ï0áï0áîAHqï0áîDŸï/:î gî'îîÑîî×î×î—îúî"î$Jî&¼î+úî-Åî1¶î5ìî8Õî:=î>0î@îCãï-’î gï+î)î´î—îîÔî�î"Rî&î'Èî)Îî.×î0šî3�î6¶î9l î?ÁîC‹ï)pî gîcîî½î„îUîu î%gî'ßî)›î+þpî.‹ï)pï)pî/3qï)pî2|î5 î6þî:=î;ïîAîCï'Èî gîMîRî¯î»î pî"ï'Èï'Èî"»qï'Èî%ÿî*»î,¿î/¶î2Îî5ýî:)î?îB+ï&!î gîÆîûî¥ï#¦î)îî’îYî®îñîkîØî$î(Óî,_î1aî7lî;¨î=ÈîA‹îCùï!þî gîHî¶î›î*î˜îúî$oî'Øî*:î-6î0•î3Çî;>î=âîAÜîCJï Wî gî ­î;îýîhî×î$£î'î*Iî+šî.°î0�î3 î7ƒî<Õî?}îA‰îEï°î gîîÔîöî î'î Bî!èpî# ï°ï°î#Þqî%Ãï°ï°î&—pî)gï°ï°î*;qï°î,œî.î/þî2Vî5^î8ô î?üîCîD´ïî gî‚îäîëîJîZîøî#€î&Ýî(‹î*Ôî0Cî3øî8ªî;‚î=âpîA>ïïîBqîC÷ïïï�î)î îäîªî�îŸî î#àî%¥î(øî*9î,™î/ î7î;�î@ÞîCJïæî gî3î§îûî—î!]î$?î&³î)hî-1î/*î1àî3®î6"î9Éî<1î? îCØï?î gîîâîî[î .î"‰î&àî+æ î3Iî7‰î:Rî<ïîAFîEDï—î gîTîÉîdîÛî¨î$®î'î)Íî.•î0çî4›î8"î:Ùî>5î@©îD‰ïðî gî­îî…îOîînî#è î,î1¦î4hî7åî9Dî:bî=Þî?‹îBƒîD´ïIî gî°î§î±î8î!*î$ î%qî)ôî,‘î13 î8¤î;¯î>6îDFï¡î gîðî\îaîîÊî»ï&î)î¢îî”îî` î!Dî#Ìî)î.‹î3î4ðî8Tî<_î??îAÇï î gîTî+î&î3î“î!î&…î*rî-ñî2Bî5Ìî9Ûî<]î?¦îBÙîD´ï ×î gî‰î™îÆî€îÝî!2î'iî)œî+‚î/¼î1¸î4õî6wî9Eîî*�î,Þ î4õî:xî<êîBaïQôî gî&îÿî�îmîFî#¨î* î/Üî2Ìî5Nî:8î<î?�îAxîCùïPMî gî!îQî¾ îPî"î$Jî'ðî*šî-î1Oî6bî9Y î@/ ïN¥î gîîMîwîîÿîÜîiîøî%Šî*kî/7î24î5ìî7†î9»î>pîA¤îC�ïLþî gî©îéîî[î¥îzîî! î& î' î+¼ î2Îî5›î7åî=·î@oîB¹ïKWî gîGî@îÁîp î"î#„î%·î'Çî*<î.î1æî3Qî5Üî9Nî=eî?·îB6îEeïI¯î gîÆîHîî[îuî#V î*î-Cî/Kî3pî6î:Eî>> ïHî gîËîîÙîîûî®î +î&÷î-¡î/üî2xî7= î>Øî@aîB›îD´ïFaî gîCî îrîöîî-î îî$;î%wî*;î+Äî.£î1V î8�î:eî<ÖîBÐïD¹î gîîîqîînîW î$ýî'°î)Éî- î0™î3!î9ˆî?)îA°ïCî gî=îy î¡îX î%.î)Qî*{î,˜î0î2�î3×î8•î;Žî>/ï@—î)î‡îÊîlî”îî,î$Eî'xî,zî-‘î2Áî3×î6‘î:hî<%î>#îA*îBæï>ïî gîÆî9îäîî¼î ‹î#yî&µî(dî,î1,î4pî6dï>ïï>ïî7 qî9Íï>ïï>ïî:ªî=+î>�îB„ï]î@îDFï:Íî g î îXî�î5î!!î#žî(Ûî.qî3+î7­ î@PîAÙï9&î gî—î î%îX îœî!_î%wî&¶î*jî,…î.úî2î5°î6îî9ñî=8î@ÀîDiï7~î gîûîfî(îÌîbî¦ î%©î' î-Ùî1xî7>î8âî;MîA¯îD‰ï5×î gî€îÝîLî"îø î$þî&³î*î,ßî0yî1Ëî4î6Ãî8™î;cî?‚îA¦ï40î g î>î:î¿î©î“î%2î(Qî-ºî1Gî5¼î87î;bî>ûîB\îDGï2ˆî gî ‘î®î9ï0 î)îPîîî¢îˆ î%©î(î,§î0A î8¬î9ýî<Úî@=îB‚ï.fî gîðîM îòî~îKî!Ðî$Oî&¡î)wpî,ï.fï.fî,¨qî/jï.fï.fî0’î3‰î8:î:¹î=èîA îCIï,¾î gîÒîøî¨îbî!¬î%Þî(Òî,Ïî/Îî1¢î4_î9î:Ÿî=‰îA.îBµîCúï+î gîîx îUî"�î$í î-€î//î4Dî9|î;Üpî>ï+ï+î>¶qï+îAýîD´ï)pî gpîÒï)pï)pîyqï)pîÁî îî#žî(´î*!î+Lî.ìî0ôî3Uî8*î;rî=, îF ï'Èî gî½î{î‘î÷î î{îHî!öî$‡î&öî+3î0zpî2éï'Èï'Èî3‘qî6Sï'Èï'Èî7kî:Ëî=Eî@ÅîC¡ï&!î gî�îoî�îæî_î|î ²î"dî$Üî''î+Ýî0$î3ñî6Øî<ðî@…îD<ï$zî gîìîRî î î 4î"„ î+î/]î3‰î6µî;²î=sîA:îDFï"Òî g î‡î_î"î¦î#î%×î)�î, î.Üî0¯î1óî5î7Jî9î:ƒî< î?îîBìîD´ï!+î gï°î)îvî îíîÞîîÌî!Öpî&Ïï°ï°î'vqï°î*ªî0Ÿî2ìî6î9·î<î>§î@îBüïî gî ±îr îîmîÁî"î&¾î+§î,ñî0cî3�î5ñî8œî:Iî<œîAZîD]ïaî gî îFîoîáîOîÙî$Gî&¹î(î+ î-Öî/Iî0²î3’î5Sî6òî8[î<¼î=ùî?@îAÇïºî gîþî&îõîî©îèî#*î'¼î,8î-Æî0žî5ˆî8lî:iî?× ïî gîI î1îLî%î¯î öî'wî)Oî,hî.ƒî3ïî7?î:!î>èîBMïkî g îî}î™îDîÜî#Éî%+î*7î-Šî/Ôî2jî6Ñî9~î>SîAþïÄî gïIî)îî~îAîµîêî#xî(*î/[î1Ïî6úî8Èî;<î=ÑîA…îDhï¡î gîäî�î¬îQîGî!®î#î$�î&îî(œî,î/Ñî2áî5‚î;1î=yî@]îBñîDŸïúî g î¸îÓî3î°î!ÿî#`î%Qî*’î.&î/’ï î)î.î—î)îôî"«î&î* î-î/�î4”î9&î>îA îCäï ×î gî[î6î¦î>î”îŠî$]î'b î-Œî1bî3¡î5½î8Iî=?î@:î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.sïfåî@ î(? vïfåîEqï_/î gî”îè î¨îu î%#î(¬î,‚î.×î2Wî3¸î6{î9¶î=îB¢ï]ˆî g îrîëî&îîØî!ßî$Kî)nî*°î.î0ßî5÷î8 î:wî=]î?#îA�ï[àî gî?îøîX îÌî3î ’î$uïX’î gqïUCîÁî®îÞîêîªî ³î$î(÷î*ºî.‚î1±î5þî<Ìî>ÐîADîCvïSœî gî´î�îÖî]îAî"î% î)"î.…î1øî4Ûî7õî:–î>ÙîE¨ïQôî gîùî�îSïOyîÜî˜îDîæîÃî!¯î$>î(¼î*¥î+þî0%î3î5Ñî7lî9Jî>�î?éîC'ïMÒî gîîgîPî{î÷î"î#Úî%jî'î,‚î/Ìî3mî5Vî7ñî:1î>cîBŠîD´ïL+î g îúî¥îîî(îáî%dî&mî-î/Çpî3ZïL+ïL+î4qïL+î7Hî:�î=0ïI°îÀîÕî;îƒîDî$jî&ºî-‡î/¶î4œî8 î;{î=~î@ØîDhïHî gî´î,îÒîNî¾îxîBî!±î$šî('î)æî,Vî1î7î8˜î<Ìî>‹îAÍîEeïFaî gî°îî¹îrîÒîáîÁ î&†î'òî,î-Äî0Zî3‹î6°î;nî=ÎïCæî)îåîrî½îCîïî"·î&£î*Aî+Ùî/î5¶î9¹î=WîAèîD´ïB?î gîÆî5îû îî"~î#åî% î*1î-gî/ î0Äî41î7%î:Eî= îDï@—î gî|îÍîFî�î¡î"§î'Uî(Çî-€î3yî7Vî9ñî<æîCBîE¾ï>ðî gîlî•î<îõîîîóîÊî!mî&Ïî(“î+Jî-Ôî0(î3„î7²î:ùî>îCúï=Iî gîçîžîîÃîrî‹î Èî$]î&þî(Âî,aî0Wî2î4ßï:Îî)î^îºîî î!Ïî%óî)‡î+nî/fî1 î3Iî4iî7èî;P îEï9&î gîÅî›îôî.îZîÂî Èî$eî(pî)6ï9&ï9&î)Þqï9&î-"î0³î6ñî:ƒî<}îA‘îB¹ï7î gî?îpîœî-î ëî"`î'î)…î-Þî/ùî1Mî4$î8î=-îAÿîC–ï5Øî gîÎîîåîMî#…î'!î*%î/ßî6kî8ÿî:–î>lî@EîC¬ï40î gî¯îÚîVîÇîñîÚî ™î#5î%¦î(ýî+Ûî-¥î0î5Šî9Éî>¡îAŠîDGï2‰î gîÖîîCîÙî’î!Éî$¡î'›î)Iî+¨î.Tî1…î3äî9î:Êî>< ÿlTVm$' ÿ TIMESROMANþæÿGACHAþŸÿ TIMESROMANþŸÿ HELVETICAþŸÿ TIMESROMANþŸÿLAURELþŸÿ TIMESROMANþYÿLOGOü´ÿ 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