ToBurdockUsersDateMarch27,1985FromHalMurrayLocationPARCSubjectBurdockManualOrganizationCSLXEROXIntroductionBurdockisaprogramtohelpdebugDLionandDicentramicrocodeandhardware.DickSnowdidsomeoftheearlyworkonBurdock.PittsJarvisdidmostoftheworkonAltoBurdock.ItwasusedtodebugtheearlyDLionhardwareandmicrocode.Ifyouareintotrivia,askyouroldtimerfriendsabouttheBurdockEtherKludge.TherearetwoversionsofBurdock.OnefordebuggingDLions,andanotherfordebuggingDicentras.Therearenopicturesinthismemosomanydetailswillmakemoresenseifyoucangetsomebodytogiveyouaquickdemo.DLionBurdockTheDLionversionofBurdockhastwowindows.Oneisfordebugging/controllingtheCPandoneforworkingontheIOP.Unfortunately,theoldLogicAnalyzerlashupfromAltoBurdocktotheTektronixlogicanalyzerpluginforascopehasneverbeenrevived.Ihaven'tworkedwithDLionburdockforalongtime,soyoushouldbeextrasuspiciousaboutpartsofthismemothetalkaboutDLions,expeciallypartsthattalkabouttheIOP.DicentraBurdockTheDicentraversionofBurdockalsohastwowindows.Again,thefirstoneisfordebugging/controllingtheCP.ThesecondoneistheHistoryBuffer.It'salogicanalyzerfortracingexecutionofCPmicrocode.(Dicentrasdon'thaveanIOP,sothereisn'tanyneedforanIOPWindow.)WheretofinditThereisprobablyaBurdocksubdirectoryonyourfavoriteAMesa/APilotarchivedirectory.Mesa11.1isarchivedon[Ramrod:OSBUNorth:Xerox]11.1>.TheDLionversionisBurdockDLion.bcd.TheDicentraversionisBurdockDicentra.bcd.TheyareontheBurdock>Friendssubdirectory.(Youdon'tneedp_/q_/_/8p_/-q_/89<]pYqY8pY-qY89pUqU8pU- qU89rNNqsG tDbG "&*/_2j8d?gBq@@& `"&)+1d4v8N:>?> #'4);-0|4<9?g< D("%(D*.2268>S;J8v!]'4*(,V38=:?7' 43W!m$+(*b.J259Q=@3$m!$M%w)Bu/;q,g.!#*.829.=T?*+!$J&)F.03!6p ?)<"q%{*,.5/8q='qIT$$)+-0#35s81<>#O W*/ $'?)-2 9M<?g!#uYq , &L)+.I4V8;$>@b!L#&+Z./l16;T=>jn!#& - 37:<@Zkeb"}uR tv|ee" *,a/r4S =U  L6c#&' 0 '!/f3:@ j"C$H&1k p9 :@#P w"$%(|,'.uM2qIYx!%+1P3q85;?H<_ k$&*--3v49<?FwDHCE /"%'*-14E? >N /"&)N,/53m5:9X /"&)N,/53m5s2{ q/j9W!, ;"%e(9+,/x1q,,2M4q8,,9<@+G s$,')/214F6:>:@9)=P<0!#'%l(?,-0L35Z;=U': F  S$'-/37x8z<?&Q-#x [&Q&Q!N%q(N&Q&Q)9+.2e57;{$Nu, _%(9+t1375:"/"!%'+p0&"/"/0q"/46"8;w?  pP q 7 &)B,l/ 6<(=pHq@"e&|')%/1?2\59;q<9/s"^%'-14y6n:t=@eU ")+-48f;R?n!&_sq  m!'-/1K6 =@Z O=g#D%(M*0s3w5%76TVm$lInter-OfficeMemorandum3PanelsThebottompartoftheCPWindowandtheIOPWindowisacontrolPanel.Panelsdon'tfollowthenormalTajouserinterfaceconventions.EachPanelhasthreecolumnsoftiles.Eachtilehasaflagcharacter,aleftsidethatcontainsasymboliclocationtobedisplayed,andarightsidethatshowsthecontentsofthatlocation.AsyoumovethemousearoundinaPanel,thesideofthetileunderthemousewillbeblackened.Theflagcharacterisnormallyblank.Itisa*ifthecontentsofthattilehavechangedduringthelastrefreshofthatcell.Itisa~ifthelocationhaschangedbuttheCPorIOPisrunningsothecontentscan'tberefreshed.Ifyouclicktheleftmousebutton(Point)whileitisoverablackenedtile,thecontentsoftheTypeInfieldwillbestoredintotheblackenedtileslot.IfTypeInisempty,thecurrentselectionwillbeused.Ifthestoregoesintotheleftsideofatile,thecorrespondingcontentstotherightsidewillbedisplayed.Ifthestoregoesintotherightsideofatile,theywillbereadbackanddisplayed.NotethatthereisaseparateTypeInslotforeachPanel.Ifyouclicktherightmousebutton(Adjust)overtheleftorrightsidesofatile,it'stextstringwillbeappendedtoTypeIn.Ifyouclicktheleftmousebutton(Point)overatilewhileLeftShiftisdown,theleftsideofthetilewillbebumpedby+1andtherightsideofthetilewillberefreshed.TypeInisusedasaworkareaforthesymbolicevaluationoftheexpression.Thetextforthenewleftsidewillbenormalizedbythesymbolmachinery.(Ifthereisanameitwillbeused.Ifnottheclosestonewillbeusedtobuildasymbol+numberexpression.)Ifyouclicktherightmousebutton(Adjust)whileLeftShiftisdown,theleftsideofthetilewillbebumpedby-1andtherightsideofthetilewillberefreshed.(Again,TypeInisusedasaworkarea.)Ifyouclicktherightandleftmousebuttons(Menu)whileLeftShiftisdown,thecolumnwillbefilledbyadding+1totheleftsideforeachtileinthecolumn,andthecorrespondingrightsideswillbedisplayed.TypeInendsupwiththesymbolicexpressionforthelasttileused.Youcanscanthingsrapidlybyholdingthemouseoverthetoptileofacolumnandalternatelydoingstoresandfills.CPWindowTheCPWindowisusedtoexamineandcontroltheCP.Ithas3sections.ThetopsectionisaFileWindowusedtorecordarunningcommentaryofvariousinterestingthings.ThelogfileisCP.log$.ThesecondsectionisaFormSW.Mostofitiscommands,butthereareafewtypeinslotsandaslottoshowthecurrentstateoftheCP.TherestofthewindowistheCPPanel.CPStateBurdockkeepstrackoftheStateoftheCP.ManyoperationsrequirethatCPsf ) vfEs_q[i_* #(+k-06~797=Z 1]"%I(B- WU$Wx&WW&q(fWW)A,/125g ;<?FULs#%' .012I58;?TAHB J"&)-U2 348;?>?RAC PRJ$(*j+-.c/2C79NwJ "#&)k*,?-b.0@27:5?LAYG # (|+- JT-0"v&+/P02"5C6u=?HTrH {#)%)C,.57g:W;@Ghy "$()+/92G57g9<>I?gE^A 8!U#'),.y 46q8<,?FCX} #r%y(,. 5a8;?r@B:!?B"'8,/14T6 9P<>J?g=M>"$D;r9SN"'A+/0[26<|=9DP!'$)"+.s04(78;=@-8# # $&(+&0 7B8; 6|\/ #% ,.05 <>4`]}!#&).j147:<@3-  0> aC#(?-17r8=1?/ e" $%(X*-0247/9; -d; #*4E!$^(-26<=)AC9k h$')A+.03/6a8:p<'s |"%b'- -}2*5?7*:u!#v$'d+.1257H:=TF+P "h'(+_-u Aq @# ix" #q &o(6*-Z1^ 8<?TVm$Inter-OfficeMemorandum4tobeinareasonablestate.CP/IOPDeadmeansthattheCPhascrashed,theIOPhascrashed,ortheCPhasn'tbeenBootedyet.HaltedmeansthattheCPhasbeeninitialized(Booted)andisnowstopped.Itcouldhaverunsomealready.Ifsoithasbeenmanuallystopped.RunningmeansthattheCPisrunningusercode.(It'srunningtheCPKernelwhenit'sintheHaltedorCPBreakstates.)CPBreakmeansthattheCPhashitabreakpoint.IOPStoppedmeansthattheIOPisstoppedoratabreakpoint.TheCPmustbeStoppedbeforeitcanbemanipulated.TheCPcouldbestoppedautomaticallywhentheIOPstops,butrefreshingtheCPPanelusuallytakesseveralseconds,andthat'sawasteoftimeifyouarechasinganIOPbug.BurdockpollsthestateoftheCP.Whenitchangesamessageisprintedinthelogwindow.IfitchangestoHaltedorCPBreak,theCPPanelisrefreshed.Built-insymbolsTheCPsymbolmanipulatonroutinescontainalargecollectionofbuilt-insymbols..CRnislocationnofRealControlStore..CVnislocationnofVirtualControlStore.(Thenthinstructioninthemicrocodelisting.)Pass2ofMassdeterminesthemappingbetweenCRandCV..MRnislocationnofMainRealmemory..MVnislocationnofMainVirtualmemory..MAPnisthenthwordofthemap..RHn,.Rn,.Un,.TPCn,.LINKn,Q,andL0throughL7aretheobviousthings.Soare.IB,.PC16,.STACKP,.IBPTR,.MINT,.EKERR.Anumberisnormallyinterpretedasalocationinmainmemory.IfanexpressionforanRregisterintheleftsideofatileintheCPPanelisprefixedwitha$,theRH/Rpairwillbedisplayedasa24bitnumber.CPKernelTheCPKernelcurrently(11.1)useslocations0F6F,0F77and0F7Fthrough0FFF.(Exceptforatypingerror,theappropiatereservesareinInitDLion.mc.)IthinktheDicentraversionisactuallyafewwordssmaller,butIhaven'tgotteninterestedenoughtocheck.ForDiagnosticsandsuchwherespaceisn'tcritical,Ireserve0F5Fthrough0FFF.CPBreakpointsTheDLionCPcanhaveupto16breakpoints.TheDicentracanhaveupto256.WhiletheCPisstopped,thebreakpointsaretemporarilyremovedsotheywillbeinvisibleifyouexamineControlStore.WhentheCPisstarted,theinstructionateachbreakpointisreplacedwithajumptotheCPKernel.Breaksatc2andc3arerisky.Ifamemoryoperationwasstarted,theresultswillbelost.Youcan'tsetabreakatac*instructionbecauseBurdockneedsthecycleinfotobuildtherightbreakpointinstruction.Ifyouhitabreakpointonthewrongcycle,BurdockwillprobablydeclaretheCPtobedead.(Thiswholemessissf ) vfEq_,>m @x_,_, %q_,)-d07247n<?0]Z{3!8$)Xx+]]-%q]0z479[ 1!'k(,/2p5;!<>Y?Z6xZ6Z6qZ6$O(+.1288;r?QXve!#J$'U+-3cx7XX8qX=V%*_ x#VV$LqV+/258 9>@U@ @X!'+I,/0 9:< >RS "a$'+.> 4719=kQ`_"#')c,-0279<Ov1 !$&*,11[279A>?M5: k$&,/415R6 uJqG0ex $*_/04 ;0=3EC t*b "2'5+-/0p568s=Af- !<#*L/62<3r5-8 ?? N=Cn#&N,/(0f168-9=v;9 fF "$6tn&5!#K')+.s058!:<4RYL%*020\ &(Y).0h30;A b g" &(+7-02}3617:i<@._Pk" #&k(\.{0)1S385Uu+Aq'!%(.26I9<&Eq }$g& -3957{ A$rM) '!'(u+K/478=" O[+ #S *-05.9<A!$HuA q$;!#%' /2u87:>A@obn!_# +3- 4:U93}=!$f&)d.M13 ?2| jE"$&H(f*,v1*49=j?0N .YD "%+/1127:X=d@-,O *6Y7 # &)+t 3 'Ch8%(p+S0]1359SE?!<'!"}&= -N03*9t[ \a >#|$(+13,8;>28 #.%(+068 o"e$'?*`-18;4!G"%'!*+.$0396(?[ED#&v*-<03<469=SZ6.c!$1&)+%0i248 :qW}"%E(02v8.;g>2V!#g&).Z068MS <"'B*0D579'Lz"- .#&*,057=9=?KTPk$!% ',2.1^ H"(c*+'-q2048;?G1xV &!$V*"+.~/5z8B:= @oE3C "% @ " #&%*-B >2S %+-/179;?O@& \+$+)*-8/ 6"9 @%I< "{s"U$*A 13X6<>j@!'h!3"&(q+3-/w 69;?gf%yc $Y ,r.%0 7>8=?Q[ #%)(p*` 1;2]s%$'+_-/r5t7=2? !F%i ,.3?6 9=,i8 &)z*-0>59;ssqq"T":$),t1F37(8;R< {Q #&'.148:< 3[ &(- 4Y8;>4@ TTVm$eInter-OfficeMemorandum7IOP.log$.ThethirdsectionisaFormSW.Mostofitiscommands,butthereareafewtypeinslotsandaslottoshowthecurrentstateoftheIOP.TherestofthewindowistheIOPPanel.IOPStateBurdockkeepstrackoftheStateoftheIOP.ManyoperationsrequirethatIOPtobeinareasonablestate.DeadmeansthattheIOPhascrashed,orithasn'tbeenBootedyet.BootedmeansthattheIOPhasbeeninitialized(Booted)butthePChasn'tbeeninitializedyet.HaltedmeansthattheIOPhasbeenrunningandisnowstopped.RunningmeansthattheIOPisrunningusercode.(It'srunningtheIOPKernelwhenit'sintheBooted,HaltedorBreakstates.)BreakmeansthattheIOPhashitabreakpoint.CPHalt/BreakmeansthattheIOPisinlimbobecauseitnoticedthattheCPencounteredabreakpointoritwashalted(byBurdock)tohalttheCP.BurdockpollsthestateoftheIOP.Whenitchangesamessageisprintedinthelogwindow.IfitchangestoHaltedorBreak,theIOPPanelisrefreshed.IOPBreakpointsIOPBreakpointsuseanRST2instruction.Youcanassembleoneintoyourcodeto"CallBurdock".ThereisnolimittothenumberofIOPbreakpointsthatcanbeactiveatthesametime.Built-insymbolsTheIOPsymbolmanipulatonroutinescontainseveralbuilt-insymbols.B,C,D,E,H,L,M,A,PCH,PCL,SPH,SPL,Flags,andRIMaresymbolsfortheobviousregisters.BC,DE,HL,SP,PSW,andPCaresymbolsfortheobviousregisterpairs.ArawnumberisanaddressinIOPmemory.IfanexpressionforanaddressinIOPmemoryisprefixedwitha$,thatlocationwillbedisplayedinwordmode.IfanexpressionforanaddressinIOPmemoryisprefixedwith%,thatlocationwillbedisplayedasaninstruction.IOPCommandsStack!displaysclumpSizewordsfromthestack.Instructions!evaluatesthecurrentselectionasanIOPsymbol,andthenstartingthere,displaysclumpSizeinstructions.Boot!goesthroughvariousstepstoinitializetheIOPandtheIOPPanelsoyoucanstartdebugging.ItforgetsallthecurrentIOPsymbolsandbreakpoints.ItthendoesalowlevelbootontheIOPandestablishescontactwiththeIOPKernel.Finally,BurdockreinitializestheIOPPanelandpreloadsitwithadefaultcollectionoftiles.ThisoperationleavestheCPintheDeadstate.AllofthevariousLoadcommandsusethecurrentselectiontospecifyafilename.ForloadingIOPcode,thedefaultextensionis.bin.sf ) vfEq_'[ !w"),.]/128y;>@]?f !%(- 0^2948$;=?[yuXqU:(\ x"_U:U:#<qU:%')-1 7QxQQ}qQB"%#(5*.Q 4:=F?PD< x-PDPD VqPD#'*-/2n5:=?NxNN}qN%!h#&(k-047i<?0LB|0"'B) - x1LL2qL59<?0KN& xKNKN2 qKN&+=.8035y7U;y@ID #$G +8,.S05.7=?[GAE&k!#'+%,o1279U>?C5: k$&+-e0S45 u@ q=? r !#$% -70k39;>;)u9;Wu &+'* 25i8 :>?7u_u4&q0|i1 $6).b27.\{hwO^6{!s%R(,04%6:k<,MT  #h&3(,L.1%3_8:<+(0td#N$'&  {$L%(./Y478:2<$pf#*$& -i/168J;>@"PkP!U$%,-/ uzq+ !%)!+ f!&q,-/2d7u:=4 bp"Y%'W ,/-2479=?gfn x!g#P%*j-Q25F9=>>GzZ"(%K(6 //4#7r:=)j "%),L136(7I; !&#%')- ueA&o(*/56;<" wdc$ **+TVm$Inter-OfficeMemorandum8Load!isusedtoloadmicrocodeintoIOPRAM.FirstitresetstheIOPsymbols,IOPbreakpoints.ThenitloadstheIOPcode.ThentheIOPPanelisreset.Start!evaluatesthecurrentexpressionasanIOPsymbol,setsthePCtothatlocation,andContinue!stheIOP.TheCPwillbeautomaticallycontinuedfirstifthatmakessense.Step!letstheIOPexecuteoneinstructionandthenrefreshestheIOPPanel.Thisisimplementedbyautomaticallyinsertingabreakpointatthenextlocation,sothatinterruptroutinesmaygettorun.Iftheinstructiontobeexecutedisaconditionaljump,twobreakpointsareinserted.Continue!justletstheIOPstartrunningagain.Again,theCPwillbeautomaticallycontinuedfirstifthatmakessense.Stop!stopstheIOP.TheIOPPanelwillbeautomaticallyrefreshed.Run!runsaBurdockcommandfile.ThefilenameisintheFile:slot.Ifthatisempty,thecurrentselectionisused.Thedefaultextensionis.burdock.LoadNoSyms!islikeLoad!exceptthatthesymbolsarenotloadedintothesymboltable.Thissavestimeifyoudon'tneedthem.LoadSymbols!isusedtoloadsymbolswhenyouchangeyourmindafterusingLoadNoSyms.LoadModSymbols!loadsthesymbolsforthemodulespecifiedbythecurrentselection.Refresh!refreshestheIOPPanel.Thisinvolvesreadingallofthespecifiedlocationsandupdatingthedisplay.A*willappearnexttoeachslotthatchanges.ThedisplayisautomaticallyrefreshedeachtimetheIOPisstoppedorhitsabreakpoint.Manualrefreshcanbeusedtoseeifthehardwarehaschangeditsmind,ortocatchthesneakycasewhenyouhavetwoslotspointingatthesameregisterandyouchangedoneofthemsincethedisplaywaslastrefreshed.What!evaluatesthecurrentselectionasanIOPsymbolandprintstheansweroutinhex,decimal,andoctal.Iftheselectionisjustanumber,thiscanbeusedtoconvertfromonebasetoanother.ListBreaks!liststhecurrentIOPbreakpoints.ClearAllBreaks!forgetsallofthecurrentIOPbreakpoints.UnBreak!evaluatesthecurrentselectionasaIOPsymbol,andifthereisabreakpointatthatlocation,itiscleared.Break!evaluatesthecurrentselectionasaIOPsymbol,andsetsaIOPbreakpointthere.HBWindowTheHBWindowisusedtoexamineandcontrolthehistorybuffer.Ithas2sections.ThetopsectionisaFormSWusedtointeractwiththehistorybuffer.TherestofthewindowisFileWindow.Mostly,itisusedtodisplaythemicrocodePCsthatwererecordedbythehistorybufferhardware.ThelogfileisHB.log$.sf ) vfEq_/ %S(*/#2V37R9 !Z!$)\-/4g7;;>t=D :!P#)%+w-28:=T9! 6xy #:'*0|579@1 "!$'*(+ ,X.47<^>'0z"- .#&*,057=9=?.`Pk$!% ',2.1^ +J# (*,/4Y7;=*=Ww.!#Y%+],/i068;C=4@o(3& "% # " #&%*- !#&< %+-o.170:;?[@| k9!""( )*-\2V47b8f;- Ys qkF!#)@,03h8<>U@Z2D &*+036/:?FM^ $)*,p/1l6'8?F u#'.913d579iTVm$Inter-OfficeMemorandum9HBOperationThehistorybufferisa256wordRAM.Eachtimetheclockticks,themicrocodePCand8extrabitsarewrittenintoawordoftheRAM,andthepointerintotheRAMisadvanced.WhenthePCmatchesthespecifiedTarget,nmorewordsarewritten,andthentheRAMisfrozen.Ifnisbig,thebufferwillcontainmostlydataforeventsafterthetrigger.Ifnissmall,thebufferwillcontaindataforeventsbeforethetriggerpoint.Thinkofthehistorybufferasahorizontalstripof256cellswithtimegoingfromlefttoright.Thetriggerpointmustbelocatedsomewherewithinthestrip.Thesoftwaredoesalltheworkneededtocorrectforthewraparoundofthebufferpointer.OffsetisaparameterslotintheHBWindowthatcontrolsthedistancefromtheleftedgeofthebuffertothetriggerpoint.IfOffsetissmall,yougetmostlyeventsafterthetriggerpoint.Whenthehistorybufferfinishescollectingasampleofdata,Burdockwillautomaticallyprintouttheinformation.Since256samplesisusuallywaymorethandesired,theHBWindowcontains2moreparameterstocontroltheprintout.Beforeisthenumberofwordstotheleftofthetriggertobeprinted.Afteristhenumberofwordstotherightofthetriggerpointtobeprinted.Warning:Before,Offset,andAfteraredecimalnumbers.HBPrintoutThehistorybufferprintoutisseveralcolumnsforeachsample.Thefirstcolumnisthedecimaloffsetofthislinefromthefrontofthebuffer.Itwillbeprecededbya*ifthisisthetriggerpoint.ThenextcolumnisthePCinhex.Thenexttwocolumnsarethe8extrabitsinbinaryandhex.Lookattheprintstoseethedefaultsetupfortheextrabits.Thenexttwocolumnsassumethestandardsetupfortheextrabits.Itwillshowa"D"isDoItison,andc1,c2,orc3dependinguponthecycle.ThelastcolumnisthesymboliclocationincontrolstorecorrespondingthethePC.Ifthecyclenumberofthatinstructiondoesn'tmatchwhat'sobservedintheextrabits,aconspiciouswarningwillalsobeprinted.HBClocksThereare4possibleclocksthatcanbeusedtowritedataintothehistorybufferClockwillshoweverymicroinstruction.Thisisnormallythedesiredcase.ARC(AlwaysRunningClock)willalsoshowwaitstates.Thereisatleastonewitheverymicroinstruction,butmemoryoperationsnormallyincludeseveralmore.Cycle1willshowthefirstmicroinstructionofeachclick.(Actually,ittriggersduringc3sincethat'swhenNIAispointingtoac1instruction.)Thisjustreducestheamountofdatathatgetsstoredbyafactorof3.Almostalways,youcanguesswhatthemissinginstructionswere.IBDispwillshowthefirstinstructionofeachnewMesabytecode.Exceptforsf ) vfEu_,q[fOb!%T),/2659&;pZ6CJy"%&*M,.258<?Xm&!$ )u+167;?V !S%'`(*,/365:?U@M "C#%U)y,0b3;8G;z=S1Q.#*$&= ,0 147;>TOv>M!$().59CPW#$(f /c158=AgOX!$0%(L,.c0U59#:<?V $($)+=E!#'e).u9q6| <"$(. 0H3y4,[S &%J)*-z04369x;5=2Y8 #:$'+k0 | K"$M-pt!$%E(+B,1'36:Q;>1+C"3%)loq}$9&,/14:7:;>' |9O w"$b&2,02%I{X%{*,^14j =`?#Rg # *|/[37=?!UNx #%(*uq]%"*$'^)<,e.1l4^7$9p=E*-6.4r6;fC W$'*c-059$:(DG1"&,.[15Z ;=5eG P#%*,a-/ 7=:i=J^ . %' (>,3-/4[9 ;>t N?  j! (*-047;E?TVm$DInter-OfficeMemorandum10unusualcases,thisisnotveryinteresting.HBCommandsArm!evaluatesthestringinTargetasaCPsymbol,andsetsuptheHBmatchertotriggeronthataddress.Display!displaysthedatainthehistorybufferusingthecurrentvaluesofBeforeandAfter.ManualTrigger!kicksthehardwaresothatitactsliketheaddressmatcherhasseenthetarget.Again,Burdockwillautomaticallydisplaythings.Thisishandyifyoudon'tknowwhatyourmicrocodeisdoing.YouneedtoArmtheHBbeforeManualTriggerwilldoanything.Ifyoucan'tthinkofanysymboltotypeintoTargetsoyoucanArmthings,use.CR0.Fineprint:IfyouareclockingonIBDisp,andyougetaCPBreakshortlyaftertriggeringthehistorybuffer,itmayappearasthoughithasn'tyettriggered.That'sbecausetherehaven'tyetbeenenoughIBDispstofinishfillingupthebuffer.ManualTriggerwillautomaticallyswitchtoARCclockingforlongenoughwhennecessarytoavoidthisproblem.LoadArmAndGo!doesaLoadRawofthefilespecifiedinFile,ArmsthehistorybufferatthelocationspecifiedatTarget,andthenContinuestheCP.ThisisaconvenientwaytostartalowlevelCPdiagnostic.BB!(BootButton)flapsINIT/ontheMultibusbackplane.ThereareseveralcommandsontheHistoryBufferWindowthataremostlyleftoverfromhardwaredebugging.Stop!stopstheCP.Step!letstheCPexecuteaninstruction.StepFast!goesintoaloopsinglesteppingtheCP.Thisishandyforscopingthestop/gooperations.StepFastFromCSA!islikeStepFast,buttheUseCSAbitislefton,sotheDebuggerboardprovidesthesamenextinstructionindependentofwherethemicrocodetriestojump.Go!undoestheeffectsofStop.UseROMisabooleanusedtoswitchthedebuggerboardintoworkingwiththeControlStoreROMontheCPboard.ThiscanbeusedtoComparemicrocodeonthediskwiththecontentsofPROMs.UseROMdoesn'tdoanythinguntilthenexttimeyouinteractwiththedebuggerboard,sopokeBB!orsomethingtomakesureitgetsnoticed.CommandFilesBurdockhasacomplicatedcommandfilefacility.Fortunately,reasonableproblemsareeasy.Theeasiestwaytogetacommandfilegoingistostartwithanexistingone,andmakewhateverchangesarenecessary.CommandfilescanberunfromtheRun!commandintheCPwindoworthesf } )} vfEq_/{\!k u[qXA\!"&()+0368:[<VTmds"$':,0s4Y6;@eRR PK !~')Y,.-0J25c:T?Nc# % .a3.7:B "$),/69/< ?W@$& 9p;F $&)E/- 7{h#B%=',q0698;D?5cl 3XY70C#v!l#\ .a!%+-n0 34y8:?, *>%")+.n4K68\;=?("&]) 0 9>;O?&C$tD!!1Lt"$A(l*047j<? Q "k&),r.i13`9c@F9Y1 &,139^<?"%()u+6.1e3'9;s?%[8sqm $,*-3 ;O Q!$&(*0{26879= @-\#9(e* m`"%(S+2S46k8=?TVm$Inter-OfficeMemorandum11IOPwindow,orfromtheBurdock.~commandintheExec.Thedefaultextensionforcommandfilesis.burdock.Anyerrorinacommandfileterminatesexecutionimmediately.Theerrormessageincludesthepositionwithinthecommandfileoftheoffendingstatement.CommentsTextenclosedwithmatching|sisignored.FunctionsMostofthecommandsavailableintheCPorIOPwindowsarealsoavailableasfunctionswithinBurdockcommandfiles.TheyuseMesaprocedurecallsyntax.Ifthenameswouldclash,thenamesfortheIOPcommandsaresuffixedwith"IOP".Forexample,"Boot[];"willboottheCP,"BootIOP[];"willboottheIOP,and"Break[Foo];"willsetaCPbreakpointatlocationFoo.Argumentstocommandsshouldbequotediftheymightconfusethescanner.Commandsthatstartexecutiontakeanadditionalparameter:thenumberofmillisecondstowaitfortheCPorIOPtostoprunning.(Thenormalreasonforstoppingisabreakpoint.)Anomittedparametermeansdon'twaitatall.(Ofcourse,youcan'tdomuchwhileit'sstillrunning.)Avalueof0meanswaitforever.Remember,numbersusedtospecifywaittimesareinterpretedashex.HereisachecklistofCPcommands:Boot[];Break[where];ClearCPPanel[];Compare[filename];Continue[(waittime)];Load[filename];LoadBoot[filename];LoadGerm[filename];LoadMore[filename];LoadNoSymbols[filename];LoadReal[filename];Reset[];SetBank[bankNumber];Start[filename(,waittime)];Stop[];Unbreak[where];HereisachecklistofIOPcommands:BootIOP[];BreakIOP[where];ClearIOPPanel[];ContinueIOP[(waittime)];LoadIOP[filename];.LoadIOPModuleSymbols[filename];LoadIOPNoSymbols[filename];LoadIOPSymbols[filename];StartIOP[where(,waittime)];sf } )} vfEq_/U%,4-0C4}7V;]n[ &"% ,3 ;>Ye9!>%'.C02f4; uVqRn#$&TuOwqL(8h Z&!'*F,.u1o7+9 ; #B%/(G*-C26v;]?=Es  &,x04;7*8:=v; "%y+-135/9= 9WC %(,1. 57E7{G!Tt54+x4+4+t 4+4+n20x00"t00/4 x8/4/4 t(/4/4-xJ--t9--+x++t++i*=x*=*=6t*=*= (x((tt((& x2&&t#"&&#%Ex%E%Eot%E%ES#!x$!!t !!!$ Nx N Nft"n N N"qG!t 4x44tt44 xt!" <x<<"t<<x#e#t(U(x ! t%% Ex E E,t# E E$ xr Yt Jx&  t# #TVm$GInter-OfficeMemorandum12StopIOP[];UnbreakIOP[where];HereisachecklistofHBcommands:Arm[where];PanelSetupCommandfilescanalsoinitializetilesinthePanelareas."CP[3,0]!Foo"stores"Foo"intotheleftsideofthetileinthethirdrowofthefirstcolumnintheCPPanel."CP[3,0]!Foo_13"setsitupandthenstores13(hex)intoFoo."IOP[..]"isusedtosetupIOPtiles.Tilescanbenamed(forusewithconditionalsandWriteLoc)bypreceedingtheCPwithtileName=.It'sagoodideatousethenameoftheregisterinthetileasthenameofthetile.Conditionals,Branching,HackingSetMP[tileName]putstherightsideofatileintotheMP.(Thisnumberwon'tbeinhex.)Tag:definestagatthecurrentpositioninthecommandfile.GOTO[tag]resumesexecutionofthecommandfileatthepositioncorrespondingtotag.Forwardandbackwardjumpsarebothlegal.IFoperandrelationoperand{...};.EachoperandiseitheratileNameorahexconstant.Therelationsinclude>,>=,<,<=,=,and#.Conditionalscanbenested.LogFilesClose[];closesthecurrentlogfileifthereisoneopen.OpenToAppend[filename];opensalogfileinappendmode.OpenToWrite[filename];opensalogfileinwritemode.Write[quotedstring];writesitsargumentintothelogfile.(Write[]islegal,anddoesn'tdoanything.)WriteLine[quotedstring];writesitsargumentintothelogfile,andthenwritesaCR.WriteLine[]justwritesaCR.WriteLoc[tileName(,width)];writestherightsideofthedesignatedtileintothelogfileinhex.Ifwidthisspecified,leadingblankswillbeaddedtomakethestringwrittenatleastthatwide.WriteTime[];writesthecurrenttimeintothelogfile.Simplenontrivialexample|Mumble.burdock,HGM,March22,19852:18:56amPST|Boot[];Load[MemTest];errorCount=CP[00,0]!errorCount_0;passCount=CP[01,0]!passCount_0;sf } )} vfEt_, ] x]]t9]]q[ G!tYaxYaYatOYaYauVqReP &/)*-04:>=Q:('"W$&),/X1&36;=V?OtU"#%(+/1c47:@MweKQv\ "& -0N68 ?IExpIIqIIf#"&+'*o,02v49;>@pHAuD 1 qAdx AdAdyqOAdAd35!$')i*,/259*>S?x=Aq=A$)+.4bp:q:x:gq8::N#t%'n-0139' 91!%(.+jp6x6aq6"&*B/1>5Ax6666q6<?}4V!#%'b*:,b/1, 9%;=vu1q.]!$&~'+i,/+ x++(q ++! " &'*)}+-2)f xL)f)fq<)f)f $%(*z,(/&xc&&q&&y"$r*-/2Q5:H;?f%D " x""oq"" !% &-/2(4s7-9<@!! " xq`x9 q!a!#7'5),/1h3 :<?%~x %).'0268U;>HW-S!  ?% (.+-f/ur t=!%(#+i0R25 E E z ')@   z ':(&TVm$zInter-OfficeMemorandum13reason=CP[02,0]!reason_0;address=CP[03,0]!$address_0;expected=CP[04,0]!expected_0;found=CP[05,0]!found_0;Break[Error];|reason=1|Break[AnotherGoodPass];|reason=2|Loop:Continue[0]:SetMP[passCount]:IFreason=2{GOTO[Loop];}:OpenToAppend["Mumble.log"];WriteTime[];WriteLoc[errorCount,4];WriteLoc[passCount,5];WriteLoc[address,8];WriteLoc[expected,5];WriteLoc[found,5];WriteLine[];Close[];IFerrorCount<100{GOTO[Loop];}:Wantmoredetails?Lookatthecode.It'sCommandFiler.mesa.OddsandEndsBecauseitalreadycontainedrelatedcode,theBurdocksubdirectoryand/ordffilealsoincludeseveralotherhandyprograms.HardwarecheckoutTestUmbilicalisaprogramforcheckingoutDLion-DLionBurdockBoxes.IassumeitworkswithSongboardstoo,butI'venevertriedit.TestUmbilicalisprettysimpleminded,butIhaveforgottenallthedetails.Itprobablyincludesseveralscopeloops.Lookatthesourcecodeifyouhaveanyquestions.TestDebuggerBoardandTestHistoryBufferareusedtodebugtheDicentradebuggerboard.SeetheDicentraManualformoreinformation.CSBankTesterisusedtotestextrabanksofCPControlStore.ItispackagedwithBurdockasaninactivetoolbecausetheDLionusestheCPKerneltosetthebankregister.CPKernelTesterisleftoverfromwhenIwastryingtounderstandhowtheCPKernelworked.Itmightbehandyifyouarechasingobscureproblems.IttooispackagedwithBurdockasaninactivetool.MakingDicentraPROMsMakeControlStoreMBandMakeGermMBareusedtomakeDicentraPROMs.sf } )} vfEt_,_, z $&r]] z &&'[[ z &H'Z5Z5 z $&&X X"O#,')k*VV"O#,')k*U=S QPEN3h &NL KN I GDFVDgC A_? P! *<u?#&X(+k/#2X3 <>#-w$&(-|.49>S!y"#p&')m, xsqs(x!Fss"-qs,/h3 591O3 :G=[? % &)a+06<>)@8C!4&Jux q x"l #q +.s137p=T =q@ AB^TVm$uInter-OfficeMemorandum14TheyregisterExeccommandswiththecorrespondingname.MesaDebuggingWhenbringingupthefirstmemberofanewfamilyofmachines,thereisatimewhenitmostlyruns,buttheEmulatororGermdoesn'tworkwellenoughtobeTeleDebugged.Atthisstage,youendupdoingalotofpointerchasingtofollowstacksandsuch.Machinesaregoodatthatsortofthing.I'mlazy.CPMesaisatoolthatisincludedwithBurdock.Normallyit'sinactive.Ithastwocommands.DispStackdisplaysthecurrentstackinHEX.Eachframeisaseparateline.ListProcdisplaysthecurrentlistofprocesses.CPSymbolsCPSymbolsDebugisanothernormallyinactivetoolthatcomespackagedwithBurdock.It'sleftoverfromwhenIwasdebuggingthesymboltablemachinery.Itwilldumpthesymboltablesintoalogfile.Ifyouaretryingtounderstandalltheusesforalloftheregisters,thismightbehandy.(UsetheWhatcommandifyouarejustinterestedinafewregisters.)sf } )} vfEq_/kI!$' /u[qX 9#2(*+.3^59;?g@V83!$-*M,0+48;y@oUC O@"%D')-.027b?Oyt$&`+.hp/OyOy0q2oOyOy306:e;<M^#%' uJAxG5 qG5c#)~.148?EV} #$'.159y @C #$'Q*+.k046 =?B?FL d#'*)1-1+37x=?g@5 " 5TVm$ TIMESROMANGACHA HELVETICA TIMESROMANLAUREL TIMESROMANYLOGO TIMESROMAN TIMESROMANS  o ) 3; D GMU\rcimj/pnraR[]<>BurdockManual.tioga&Wednesday, March 27, 1985 11:35 pm PST