Inter-OfficeMemorandumToFileDateNovember11,1982FromRoyLevinLocationPARC/CSLSubjectMakeBootXEROXReleaseas[Indigo]Documentation>MakeBoot.pressDraft[Indigo]MakeBoot>MakeBoot.tiogaLasteditedbyLevinonNovember11,198211:12amMakeBootisaprogramthatconstructsabootfilesuitableforinstallationonaPilotlogicalvolume.TheversionofMakeBootdescribedinthisdocumentrunsintheCedarenvironment.MakeBootsubsumestheRubiconversionofStartPilot,whichhassimilarfunctionalitybutexecutesintheAlto/Mesaenvironment.MakeBootasdescribedhereisafunctionalextensionoftheversionavailableon[Igor]andissuitableforconstructingbootfilescontainingCedarprograms.IntroductionAbootfileisessentiallya"virtualexecutionenvironment":itconsistsofamemoryimagecontaininganumberofBCDsthathavebeenloadedbutnotstarted.ThesimpleviewofMakeBootisthatittakesacollectionofspecifiedBCDs,constructsamemoryimage,andwritesitoutasabootfile.Inpractice,however,MakeBootrequiresmoreinformationthanjustthenamesoftheBCDstobeincludedinthememoryimage;thisinformationiscontainedinatextfile(orfiles)calledthecommandinput.Thecommandinputincludesanumberofparametersthataffectthewaythebootfileisconstructed.ThememoryimagebuiltbyMakeBootisloadedintomemorybyasimpleloadercalledthegerm,whichthentransferscontroltothemainbodyofamodulenamedinthecommandinput.Naturally,thereisacertainamountofdelicateinitializationrequiredtotransformtheloadedmemoryimageintoarunningPilotenvironment.Thedetailsofthisinitializationincludeconfigurationofmemory,which,ofcourse,includesdealingwiththecontentsoftheinitialmemoryimage(bootfile)thatthegermhasloaded.Forexample,certainportionsofthecodeinthebootfileneedtobeinitiallyresidentinmainmemory,sincetheywillbeneededbeforePilot'smachineryforswappingfromdiskhasbeensetup.ThegermandthePilotinitializationcodehavetocooperatewithMakeBoottoinsurethatmemoryresidency,andotherproperties,arepreservedduringthedelicateinitializationphase.Todothis,theyshareinformationcontainedinthebootfile,informationwhichisconstructedfromtheBCDsthatmakeupthememoryimageandthecommandinput.MakeBootreliesalmostentirelyonitsinputforthisinformation;verylittleisimplicitlyassumed.ThedescriptionsbelowassumecertainknowledgeofthestructureofBCDs,whichwesummarizehere.A.bcdfile,whichistheoutputofthecompiler,binder,orpackager,consistsofthreerelatedparts:adescriptiveportioncalledthe"binaryconfigurationdescription"(BCD),a(possiblyempty)collectionofcodesegments,anda(possiblyempty)collectionofsymbolsegments.Thedescriptiveportionincludes1p a  q ^r^q+^r6^<?q ZrZq+Zr6Zs:Z;Zq V+rV+t{Nq D rD+q BrB)q A# VrA#q #' >H !"%(B-K/{ 6s8l9<A F <6i!!(A+e-/3 <CZ ;I  %', 5$8=?B 9 #=&(* 07m9 DH# }(% "({*0W27C&D IF u "&,#0%369b;?5AF 08 "n$'*I-/A1'6;J<@aF  K&(j.2 57;=9@OC;F S ;q ByL%|(/#047< CIE  fo &1 .?3T57:>:B Dkv " &'' /2u48;?AD" ] #$(x,1359;>v F    + j~N!(*,24u8<?&F `y["(&,.49;?LCHe ! )q 1267,<A G 5 8}9h4! (&).58\ ?GD+w) TVm$tablesthatdescribeahierarchyofconfigurationsandthemodulestheycontain,theinterfacesimportedandexportedbytherootconfigurationofthehierarchy,andthepackagingofthecodeandglobalframesthatcomprisethemodulesinthehierarchy.TheBCDalsodescribesthelocationofthecodesegmentsandtheirassociatedsymbols,eachofwhichmaybeeitherinthesamefilewiththedescriptiveportionorinadifferentone.(Thereareother,subsidiarytablesintheBCDthatarenotusedbyMakeBoot.)CommandInputThissectiondescribesthesyntaxandsemanticsofthecommandinput.Manyofthepossiblespecificationsshouldbeusedonlyupontheadviceandcounselofawizard,sincetheymaycauseextremelystrangebehaviorintheinitializationorsubsequentexecutionofthebootfile.Itemsofcommandinputthatfallinthiscategoryhavetheirsemanticdescriptionsprecededby(*).SyntaxMakeBoottreatsitscommandinputasalineartextstream,whichmayincludewhitespaceandcommentsinthesameformandplacesasMesasourcecode.Inthesyntaxequationsthatfollow,whitespaceisnotsignificantanda"|"characterdenotesmetalinguisticalternatives.Wordsinitalicsaremetalinguisticvariables(non-terminals),allothercharactersappearliterallyinthecommandinput.(Nodefinitionsappearforidentifierornon-terminalsbeginningwithdecimalNumber;thesearepresumedtobeimplicitlyunderstood.Notethat,aswithallMesa-relateddescriptions,thecaseofalphabeticcharacterswithinidentifiersissignificant.)input::=inputItem|inputinputIteminputItem::=gftItem|mdsBaseItem|codeBaseItem|pdaBaseItem|pdaPagesItem|framePagesItem|frameWeightItem|nProcessesItem|svItem|svSizeItem|wartItem|noTrapItem|residentItem|resDescItem|initiallyInItemgftItem::=GFT:decimalNumberIn[1..1024];mdsBaseItem::=MDSBASE:pageNumber;codeBaseItem::=CODEBASE:pageNumber;pdaBaseItem::=PDABASE:pageNumber;pdaPagesItem::=PDAPAGES:decimalNumberIn[1..256];framePagesItem::=FRAMEPAGES:decimalNumberIn[0..256);frameWeightItem::=frameSpec:fsi,decimalNumberfsiChain;frameSpec::=FRAMEWEIGHT|FRAMECOUNT;fsiChain::=empty|,fsinProcessesItem::=PROCESSES:decimalNumberIn[1..1024];svItem::=STATEVECTORCOUNT:priority,decimalNumber;svSizeItem::=STATEVECTORSIZE:decimalNumber;wartItem::=WART:wartModule;noTrapItem::=NOTRAP:moduleList;residentItem::=RESIDENT:generalList;resDescItem::=RESIDENTDESCRIPTOR:generalList;2r b) D\ (*-325; =n C ` 7kE !#H% +.07>8;/>bAE ^ 3 %(c+.47 mD N= q. $P*~,0.148:`@D^G% MI ;B '-r/np I r E(!O"`&((-w1l4X9<@cC C  !%*',.v29;@D^H# BV Z # , 49:>@ @ &X+0"14t:?B ?vx??r?? $*x.?.? r8?:?=?F=G =`   _#y%h - 57:< C" ;1  x 7yv7x 7!7y)A7x*7+7/ 5yv5x!5"5y(j5x!4"4 y+4x-w4.O4 y8h4x!2f"2f y+2fx-w2f.O2f y8h2fx!0"0 y.N0x/000 y=u0x!/"/ y.N/x!-R"-Ry'-Rx)B-R*-Ry2-Rx!+"+y)A+x*+++y43+x!)") y,)x.O)/&) y8h)x:):) 'yv'!% x&'''y;'x % yv%!(mx*%*%y3_%x # yv#!)Ex*#+#y47#x " yv"!(mx*"*"y3_"x yv !)Ex* + y?( x  yv! *x,-|y@x ypx!"y*x+,/ 0 <yD*x yp! +-v 6x ypx!"y&xy(dx** # yv#!*x+#,#y@#x (yv(!0x1(2(: yE(x - yv-!/,x0-1- y<-x 3yv3!%x'3(m3y03x 8 yv8!'x)E8*8y28x = yv =!)Ex* =+ = y5 =x B yv B!1x3d B4; B y=} Bw)TVm$initiallyInItem::=IN:generalList;generalList::=listItem|generalList,listItemlistItem::=configPart|CODE[configPartList]|GLOBALFRAME[configPartList]|SPACE[nameList]|CODEPACK[nameList]|FRAME[nameList]|FRAMEPACK[nameList]|BCD[nameList]configPartList::=configPart|configPartList,configPartconfigPart::=module|configName[moduleList]moduleList::=module|moduleList,modulemodule::=moduleName|moduleName.instanceNamenameList::=name|nameList,nameconfigName::=namemoduleName::=nameinstanceName::=namename::=identifierpageNumber::=decimalNumberIn[0..65536)fsi::=decimalNumberIn[0..256)priority::=decimalNumberIn[0..8)decimalNumber::=decimalNumberIn[0..65536)wartModule::=moduleName|configName[moduleName]empty::=SemanticsgftItem::=GFT:decimalNumberIn[1..1024];Theargumentspecifiesthenumberofentriestobeallocatedtotheglobalframetable.Defaultvalue:512.mdsBaseItem::=MDSBASE:pageNumber;(*)TheargumentspecifiesthestartingvirtualpagenumberoftheMDS.(Thearchitecturerequiresthatthisvaluebe0mod256.)Defaultvalue:512.codeBaseItem::=CODEBASE:pageNumber;(*)TheargumentspecifiesthefirstvirtualpagenumberthatMakeBootwillusetoloadnon-MDSdataandcode(exclusiveofdatawithotherarchitecturalconstraints,suchastheprocessdataarea).Defaultvalue:768.pdaBaseItem::=PDABASE:pageNumber;(*)Obsolete.Theprocessdataareaalwaysbeginsatvirtualpage256.pdaPagesItem::=PDAPAGES:decimalNumberIn[1..256];Theargumentspecifiesthenumberofpagesofmemorytoallocatefortheprocessdataarea.Sincetheprocessdataareacontainsstatevectorsandprocessstateblocks,thevaluesuppliedhereinteractswiththevaluesforthestatevectorcountsandnumberofprocessessuppliedelsewhere.SufficientPDAspacewillalwaysbeallocatedtoaccommodatethestatevectorandprocesscounts;ifthePDAPAGESparameterislargeenoughtopermitadditionalpagestobeallocated,theywillbeusedforprocessstateblocks.Defaultvalue:1.framePagesItem::=FRAMEPAGES:decimalNumberIn[0..256);3x b6ypb6!$/x%b6&b6 y/b6x `? yv`?x!`?"`?y)A`?x*`?+`? 5 6 ^Hyv^Hx!^H"^Hy*^H,^H0x2^H3_^H y?'^H@^H!\ +x-|\.T\ y:\;\!Z&x(mZ)EZy0Z1Z3`:xVY=yEY=FY=!W% x&W'Wy.PWx U yvUx!U"Uy*Ux,U-wU y9@Ux:U;U S yvSx!S"Sy'Sx)BS*Sy2Sx44S5 Sy=vSx Q yvQx!Q"Qy'Qx)BQ*Qy2Qx44Q5 Q OyvOx!O"Oy*Ox,O-wOy5Ox7O8iO MyvMx!M"My%Mx'M(jMy/&Mx0M1M K yvKx!K"K I yvIx!I"I G yvGx!G"G EyvEx!E"E C yvCx!C"C AyvAx!A"A ?yv?x!?"? > yv>x!>"> < yv< x!< "< y*< x,< -w< y5< x7< 8i< y@< x :yv:p 5x 2}y2}2}gx2}2}y.!2}r /#J%!)+|-3p5<7;@D .Mx + y++e$x+ +y)+r );"v$U(+0259< DB '| %)+x % y% % =x!% "[% y*% r "i"'*[/2b9;>C?C  m   #' /q 69;=BE 3x  ye$x y)r !lD #'z+-b15x  y=x!"[y5r ~k"$A()/057:J?BE h"&)@.1 57;A D 4hH"r&).06< CN Y=#% .u14c8;@EG/y rrEr r>$&O* 1C568 >ADF !%3x B y Bd B #2x$ B% By9 Bw)ATVm$u(*)TheargumentspecifiesthenumberofpagesofMDStobeallocatedtotheinitialframeheap.SeethediscussionofframeWeightItems,below,beforeattemptingtochangethisspecification.Defaultvalue:10.frameWeightItem::=frameSpec:fsi,decimalNumberfsiChain;(*)Thedistributionofframesizesintheinitialframeheapiscontrolledbyasequenceofspecifications,introducedbyeitherFRAMEWEIGHTorFRAMECOUNT(thetwoaresynonyms).ThedecimalNumberistheminimumnumberofframesofthegivenfsitobeallocatedintheinitialframeheap.If,afterallocatingtheseframes,thespecifiednumberofFRAMEPAGEShasnotbeenconsumed,MakeBootallocatestheremainingspacebyinterpretingthedecimalNumbersasrelativeweightsforthefsis.Ifpresent,thefsiChaindeterminesthestrategytobeusedbytheframeallocatoratruntimewhennoframesareavailableforthegivenfsi.IffsiChain<=fsi,anallocationfaultwilloccur.IffsiChain>fsi,theallocatorattempttoallocateaframewithframesizeindexfsiChain.Defaultvalues:FSIWeightFsiChain091113229338447556664772882991101011111101211313114141151511616117171181810others00nProcessesItem::=PROCESSES:decimalNumberIn[1..1024];Theargumentspecifiesthenumberofprocessestobecreatedintheinitialprocessdataarea.(Actually,thisistheminimumnumberofprocesses;seethedescriptionofPDAPAGES.)Defaultvalue:50.svItem::=STATEVECTORCOUNT:priority,decimalNumber;(*)ThedistributionofstatevectorsacrossprioritylevelsiscontrolledbyasequenceofSTATEVECTORCOUNTentries.Defaultvalues:PriorityCount01112231415361714r b!y%&*,s0>139;z=AE `yX cx1`y`y r&`y'U`y(F,1# 89>AT ^Ux \Qyc\Q;\Qx\Q\Qy#.\Qx$\Q%\Q(;) 5y=F\Qr Y.` $6 $&(-1e56 =@AG X(v osy"gX(#?X( r,X(-AX(y.RX(/*X(r7X(8X(:z=.? GNx V rvVV8"')d-/1x5V6qVr8V9fV:<BOCFS T8 {$(+`1*6dy8+T9TrArTB9TCFx S2nk!(+- 4x7>S28S2 rB/S2CS2D QxiQAQrQtQ!x$(Q$Qr+Q,Q25=:a<>AfCpE O[S6#&,+.K0x4O5^Or7 O8Ox:+O;OrAOBnOxDgOE?OrFOGO N< o=xN< N<r'WN<x(N<)N<r+5N<,N</^5:J<A>BF LOxLLrL6L$7q JJ7J Hi0HiHi FFF E0EE Ci0CiCi A0AA @0@@ >j0>j>j <0<< ;0;; 9k09kt9k 707t7 6066 4k04kt4k 202t2 101t1 /l0/lt/l -0-t- ,0,t, *l0*l*l (0((x &@ y&@d&@"[x$ &@$&@y9&@r #*~#%,.035:7%9=BF> " Q 8%~'P -0M2 9y;"<"rB"B"D px y0!x#6$ + y7ir n\  %*i/466) =2?AfGy r P%Qq EEU0U0UF0FU0U0U F0 FU 0 U 0 w)TVm$svSizeItem::=STATEVECTORSIZE:decimalNumber;(*)Theargumentspecifiesthesizeinwordsofthestatevectorsallocatedintheprocessdataarea.Default:16.wartItem::=WART:wartModule;(*)Theargumentspecifiesthemodulethatistoreceivetheinitialtransferofcontrolfromthegermafterthebootfilehasbeenloadedintomemory.Thereisnodefaultvalue.residentItem::=RESIDENT:generalList;resDescItem::=RESIDENTDESCRIPTOR:generalList;initiallyInItem::=IN:generalList;ThesespecificationscontroltheswappingcharacteristicsoftheportionsofthebootfilethatcomefromtheinputBCDs.Eachsuchportioncanbeviewedasasegment,thatis,asequenceofconsecutivepagesinthebootfile.Allsegmentsoccupyvirtualmemory,butthesespecificationsaffecttheexistenceandlifetimeofrealmemoryassociatedwiththem.AsegmentthatisspecifiedtobeRESIDENTwillbepresentinrealmemorywhenthebootfileisloadedbythegerm,andPilotinitializationwillassumethatitistoremaininmemoryindefinitely.Thatis,itwillnotbepossibletoswapthesegmentoutofmainmemory.AsegmentthatisspecifiedtobeINwillalsobepresentinrealmemorywhenthebootfileisloaded,butwillbeeligibleforswappingafterinitializationiscomplete.AsegmentthatisspecifiedtobeRESIDENTDESCRIPTORwillnotnecessarilybepresentinrealmemoryatloadtime,buttheinformationnecessarytoswapitinwillbemaderesident.ThenamingofparticularsegmentsintheinputisaccomplishedbythefollowinglistItems.configPartCODE[configPartList]ThesesynonymousspecificationsidentifyunpackagedcodesegmentswithintheinputBCDs.NotefromthesyntaxequationsthataconfigPartmayincludeasinglelevelofconfigurationnametoresolveambiguitiesinmodulenaming;however,configurationnamesmustbeunambiguousacrosstheentiresetofinputBCDs.Alternatively,amodulenamingambiguity(butnotaconfigurationnamingambiguity)mayberesolvedbytheinstancenamessuppliedintheC/MesainputwhentherelevantBCDwasbound.IfaconfigPartisoftheformconfigName[ALL],allunpackagedcodesegmentswithintheindicatedconfigurationwillbematchedbythisspecification.NoteonPACKedcode:IfamodulenameappearinginthisspecificationcorrespondstoamodulewhosecodeisPACKed(bytheBinder)withthecodeofothermodules,thespecificationappliestotheentirecodesegment,notjusttheportionthatbelongstothenamedmodule.IfothermoduleswhosecodeispartofthesamesegmenthaveconflictingspecificationsintheMakeBootcommandinput,theresultisundefined.NotethatthisappliesonlytocodepackedbytheBinder;forpackagedcodesegmentsproducedbythePackager,seethedescriptionoftheCODEPACKspecification,below.GLOBALFRAME[configPartList]Thisspecificationidentifiesunpackagedglobalframes,andisinallwaysanalogoustotheCODE[]specificationabove.SPACE[nameList]CODEPACK[nameList]ThesesynonymousspecificationsidentifypackagedcodewithintheinputBCDs.ThenamesinthenameListareCODEPACKsinthePackager'sterminology.(TheCODEPACKformisgenerallypreferrabletotheSPACEform,toavoidanyconfusionwithPilot'snotionofspaces.)Nonamequalificationfacilitiesareprovided,socodepacknamesmustbeunambiguousacrossallinputBCDs.If,insteadofthenameList,thereservedwordALLappearswithinthebrackets,allcodepacksinallinputBCDswillbematchedbythisspecification.5x b) y.b)b)$ x%b)&b) y1b)r _q"$B(W*,/4i:8;>UC1F> ^'x [y[W[x[[y$[r Y#w$l'/(*2.1"5:;@WCF WXIyX"0%+Q/S027mx T yTT=x!T"[T y+Tx S- yS-S-e'kx)S-)S- y35S-x QycQ;QKxQQ y)Qr O 9 l&/c1-39:=K@CE M[O-#G(`+&-Q234v5M[6M[r:0M[;GM[>P@NAG K " Z#0%+0}4:=~A' J  "X%* 048:"?BaC HeNy0HeHerHeHedF! "%T*.Y036'7;=@0DF F 2 !z#$')p. 6:7;=I?BaDM EP by '(-0279hy;ME<%Er=E>E@uC5E CoaI"R#(+!-/46<@< H# AR#>#%y'kA(CAr7qA8oA: y[ x!&#'0( 1%3!5v;>y;>yr@ >y@>yx ; y :Nx:Nl:N y5:Nro7  $)S 1 4r:z>A_E+o6&X#&v'6&(n6&r.6&/6&167;?IA o4 "$*/68 ?CGo2 !"$&{*4/9 79>Co10c `#N *7-5/46{8>BWGo/ c%(+01v3/3/r9/9/:vB /B/ro-yi-A-r-,- "!(,r.4 =p@.B1Go,: o)0:!g"'+294 6 > FHeo(Rc"$'@,#/ 1b46(9?iA o&k5&s%3'*U,14r9;5=B&H o$.  "%&)o- 25 < EaG/o#y z"&( /o258O<@ AvD#E#ro!uvd!u!ur!n!u" !u$*135;>6@ Goc "y M x|MTM y%Mro  ! (-E2T5H68;>EEG/o%nV 9y xmDy Exyroyf < #(.168j< @CGovr<$&)w 0d 9iy<=rDE H7o+T dy o+!G+r%~+%+)<*.1F7:>C"Do  l "%+9,063w7;< Eo HW!v# $ r)G * ,T15&8j=^ACo 5_q#&r(c-/2 w) TVm$FRAME[nameList]FRAMEPACK[nameList]ThesesynonymousspecificationsidentifypackagedglobalframeswithintheinputBCDs.ThenamesinthenameListareFRAMEPACKsinthePackager'sterminology.Nonamequalificationfacilitiesareprovided,soframepacknamesmustbeunambiguousacrossallinputBCDs.If,insteadofthenameList,thereservedwordALLappearswithinthebrackets,allframepacksinallinputBCDswillbematchedbythisspecification.BCD[nameList]ThisspecificationidentifiesthedescriptiveportionsoftheinputBCDs.ThenamesinthenameListareconfigurations(butnotnecessarilytop-levelones)withintheinputBCDs.If,insteadofthenameList,thereservedwordALLappearswithinthebrackets,allinputBCDswillbematchedbythisspecification.noTrapItem::=NOTRAP:moduleList;(*)Themodulesinthisspecificationwillhavetheirinitialcodetrapssuppressed,implyingthatexplicitarrangementsmustbemadeforstartingthemproperly.MakeBootOperationMakeBootisinvokedfromtheexecutivebyloadingMakeBoot.bcdandsupplyingacommandline.Thesyntaxofthecommandlineresemblesthatofthecompilerandbinder:[bootFile:f1,loadMap:f2]_input[key1:value1,...,keyn:valuen]/switchesTheonlymandatorypartofthecommandlineisinput,whichnamesaBCD(defaultextension.bcd).ThebootFilespecificationsuppliesthefilenameforthebootfile(defaultextension.bootor.germ,asappropriate);theloadMapspecificationsuppliesthefilenamefortheloadmapfile(defaultextension,.loadmap).Defaultingoccursintheusualwayifeitherorbothofthesespecificationsareomitted:f1isusedastherootofnamesifitispresent,otherwiseinputisused.Asiscustomary,theorderofthekeywordparametersisirrelevant.Thefollowingkeywordsarerecognizedwithinthebracketsfollowinginput:Parm:commandInputFileNameTheindicatedfile(defaultextension.bootmesa)containscommandinput.AllcommandinputfilesarereadandparsedbeforeMakeBootprocessesanyinputBCDs,includinginputFile.Thecommandinputmaybedistributedarbitrarilyamongcommandinputfiles,exceptthatasingleinputItemmaynotspanafileboundary.MakeBooteffectivelyconcatenatesallcommandinputintoasinglestreamintheorderthattheyappearasparametersonthecommandline.Ingeneral,itisagoodideatohaveonecommandinputfileassociatedwitheachinputBCDfile(unless,ofcourse,aparticularinputBCDrequiresnocommandinput).Also,itisgenerallymeaninglesstohavenocommandinputfilesatall,sinceMakeBootcannotprovidereasonabledefaultsforeverything.BCD:bcdFileNameTheindicatedfile(defaultextension.bcd)istobeloadedaspartofthememoryimage.ThereisnoparticularsemanticdistinctionbetweenBCDsspecifiedaskeywordparametersandtheinputFile;thesyntacticdistinctiononthecommandlineisessentiallyhistorical.TheBCDsareloadedintheorderthattheyappearonthecommandline.nProcesses:decimalNumberIn[1..1024]ThisvalueofthisparameteroverridesthePROCESSESspecificationinthecommandinput.gftLength:decimalNumberIn[1..1024]6y b6xmb6Db6yb6 `x``y``ro]r T #(.37|;>"AFo\S7v\S\Sr[\S \S"(>-/2 9 CEoZ T %&*-2657{ ?CEoYtvY Yr%iY&pY(.y2QY3)Yr5Y6WY:?WAGoW]f1z"%2'#,.1P y T xTTyPTroRE  # *0/248=@EPG/voPrP/P !*$P& -37<>BvGoN>vNNNrNN!o'y*N+Nr. N.N307: ?AEoMO 9 x J y.JJux%JJy'gJr H7_ $o'G*.-2F59M @F F gX#%U*?-u Ar =J)"$) 25;<C8F ;0I`!$&=(.X1y 9 3z 8y9<z8y-9 "{*#8y*9,={0u8y0926{9M8y99;t{?8y@#9 r 6 w$w#&wy'6(6r,6,605669>yD6E6rH:6H6 4y 4 4rF44 !M#%)+. 1$3x8y>4?f4rC4DY4yEL4F$4rI4 3< ~ y3<3<r3<:3< $})+.>146E98<6>C y 1r1%1{ Q:!%/()^-E/2<37t ?B&yG1zH1Nr / T7}3s#$y*/+/r//0L/1Q5b7o8 ?B EG .F  !(.'0 7h;>C|y ,r#,y *x**r '.iy#'$x'r+8',N'18E<?jE % e'- /3Q7y=%>%rE\%F% $8?Op # */.5x9S<AJDIEv "r"":h%,q 2 :<CF D] $(*@ 1L3X5<$?AFH# B <."%( .148c;>GC5D  %q ")J.c13Y4: B{D6G ? ',#1. 7=*?g y hxhh r | y#*$r&'(*,1257e9?4D H# 47 " #_)P-46P@ WnWK k#&]*/1D4t6 V-nV-9!g#%u+, TynTyXa#'u O` = )c 26xr KK/!$'*.0D516^;k=?E It `6G % (*;-2[69e<?@C- G  pz %(-1y38y.COE;i:"'*#+0#2<4G::$&F'p+.1P47;Z>B 8:y.8:8:r8:8:0 #'2*,.15H 6q>"y$O6%'6r+6,k6/ 58:>@5BG4d;A 2N\!#J(m-m/t358<>BCp 1E^!w (4+a,1W58@;?B7DG/!]%T(+1c6,9>A -w!#m',?0 286; <?yyBK-C#-r+ !$a'*=.0Z374<>EADG*P(P!o# *.,036Y8cBE#6$n,3Y:E" 3 TA "_%),b0 8D;1>BDxe;-M &X,035A78>r@D3h.S %*/. 0l3=6:9t@EGoO"#w%) ,d/5'7 <ADG '279=>gAUD!G/ _n g"L%+-/4P68i:AkFyM"$(+/C58|;|=>D79c \"&n),29<@DG*wy=**r'k*(_*y,*-g*r/*0R*1r3 :W=CEGk2S} "M%(,X/\1 69 9g" *049:> F r&">#),1a38} >A=  5 8 %M*-z01488p9;@CElw) @TVm$ islessthanwonderful,sosyntaxerrormessagesmaybealittlecryptic.However,thesourcepositionwheretheparsergotconfused(whichappearsinsquarebracketsinmosterrormessages)israrelyfarfromtheactualtroublespot.Huntaround,andlookcarefullyatthesyntaxequationsifyouarestumped.7)MakeBoot'sglobalframeallocationalgorithmisalmostthesameastheoneemployedbytheruntimeloader.IfaninputBCDisasinglemodule,MakeBootwillattempttoallocateitsglobalframeintheframeheap.Ifthisfails,oriftheinputBCDconsistsofmorethanonemodule,itsglobalframesareallocatedinsegmentsconsistingofanintegralnumberofMDSpages.Eachframepackhasitsownsegment,andthereisonesegmentforallunpackagedglobalframes.Allofthisisidenticaltotheruntimeloader'sbehaviorundersimilarcircumstances.However,iftheframesegmentisspecifiedtobeRESIDENT,MakeBootwilladdanyleft-overspaceinthelastpageofthesegmenttotheframeheap,breakingitupaccordingtotheframeweightratiosinthecommandinput.ThisisbecauseMakeBootassumesthattheframesegmentwillalwaysberesident(seenote2above);consequentlyitissafetoaddtheunusedspacetothe(resident)frameheap.Theruntimeloaderneverdoesthis.8)Asobservedabove,unpackagedglobalframesofasingle(top-level)configurationarealwaysbundledtogetherinasinglesegment.ThisimpliesthataGLOBALFRAME[]specificationforoneofthemwillapplytoall.IfconflictingGLOBALFRAME[]specificationsarepresentinthecommandinput,theresultisundefined.8rb)7  $(C.134,7Y<BE?`PE!$C*T/4c6O:@BF^+"($(-e1G4: <?EG/]3Ia! [E  %N+-(1479u;>EG/YM"&5'(,2O9 ;@BGW %6&)^,.l/2059h>j@%CFVO! "(*60 6d89>DET k"$'-0u4 58?=?A SO^  "#$*,/5-:@E QY g "$d(^-/246y8QY9mQYr?TQY@4QYFOf !$(&*,,.458O FH#Jl3}#B%'q -16 8>;BF^I G'J: #f',@./^3g :( BE*EC["w(+03w4 @A C4@ "%3& -Q 9U:( B|DB1~>A!%l& w)ITVm$b  TIMESROMAN, GACHA, GACHAGACHA HELVETICA TIMESROMAN TIMESROMANLOGOLAUREL TIMESROMAN TIMESROMAN TIMESROMANY  9 7" <. E9 RFLj/O MMakeBoot.tioga11-Nov-82 11:14:01