// pjinit.sr // Last modified September 25, 1982 12:45 PM by Taft get "BRAVO1.DF"; get "AltoFileSys.D"; get "HEAP.DF"; get "DISPLAY.DF"; get "MEASURE.DF"; get "OM.DF"; get "vm.Df"; get "State.Df"; get "FONT.Df"; get "SELECT.Df"; // Incoming Procedures external [ ult; errhlta move; array hpinit addbp // dumpcore ugt movec array1; initom; chuckinit; findomspace; hplay; chuckinitselect; initsb; lastproc FtyOpen ReadVec; umax RealDA swat hpalloca EnuStu InputStuAb activateomseq fnalloc OutSims EnuSimInit deallocfn deactivateomseq MyFrame chuckinitformat chuckinitdoc chuckinitdisplay InitCalc VirtualDA removefont flushfn puts FindMacPos; underline DAYTIME InitVrldsys createdocm updatedisplay selectwholeww flushvm invalidatewindow Init2Rls hpcompact; CreateVrldsys CacheInit InitMsg fillinfdd getbin SetRegionW SetRegionSys FddlMaxInit CwFddl; FCkUserOf errhlt initvm InitFdh; ReadDiskKd; WriteDiskKd; initkbd pjinit2 ]; // Incoming Statics external [ freet; freee; mpfunsb; rgcdlblank; rgmaccp; macww; vpzone; mpfnof; fillInDA; eofDA; DCread; dnbp; cominstream pzone stackroot tsmacro vmtb rgbp rgvpa rglastused rgbs macbp lrutime dnfn macfn cvmfree rgnchlast vdeltafp begofopsys; USERNAME; mpfnsb; SavedDiskKd; diskKd; vup; macfda; curfda; vcwaitfd; // vputmsbomseq; // vputomfixedstor; // vcfreemin; vmeasurestatus; voverlay; // vputsbomseq; vkcb; fpDiskDescriptor; fpSysLog; vFNoLog; vCfaEndRes; OsVersion; ozone ozonel vfdd0 vwaCode vcaCode vbbs fpSysDir selmain vtodstart vcpagehc vbttotd vbttoti mpWwWwd vllDcb macmn mpmnom cpscrt vcache vbp rgmpbifb vrlwsys fpUserCm vSkfd vfddfirst vfontFixed; vfddlFixed; vcwFontFixed; crefKd diskBTsize nTracks nSectors nDisks nHeads defaultVersionsKept vswitch cfaSysDirEnd vyorig vdcborig vwaitproc daPgn1Kd; ]; // Outgoing Procedures external [ pjinit1; PreJuntaInit ]; // Outgoing Statics external [ SavedUsername; vfIniting vmacFrScrInit ]; // Local Statics static [ SavedUsername; spyloc vfIniting vmacFrScrInit ]; manifest [ vcNewest = 2; vcNewestOrNew = 4 docuserfirst = 7 risyspast = 3; // com.df cwOhdSv = 14+32+#300 // 14 for SV.H // 32 for SV.BLV // #300 for SV.page0 globalSwitches=1 //From Executive -- body is ASCII codes ] structure BLV: [ blank word 26 startOfStatics word endOfStatics word startOfCode word afterLastCodeWord word endCode word blank word ] structure UPE[ //User param format: 0 terminates type bit 12 length bit 4 ] // P J I N I T // let pjinit1(stacktop) be [ pjinit2(stacktop); let cwInitCode1 = (lastproc-chuckinitselect) & -2 hplay(-cwInitCode1,true) ozone = chuckinitselect let bbs = vbbs; test bbs >> BBS.fInstalled ifnot [ activateomseq("JVQT",0,0) // unless FtyOpen(fnDiskDesc,"DiskDescriptor",false,true,vcNewest,fpDiskDescriptor) then // errhlta(48); ] ifso unless FCkUserOf() then [ voverlay = true; activateomseq("JQT",0,0) deallocfn(fnuser) FtyOpen(fnuser,"USER.CM",false,false,vcNewestOrNew) deactivateomseq("JQT","JQT") voverlay = false; ] // creates(fnopsys,"$OPSYS",true,false); // dumpcore(fnopsys, begofopsys, (#176777-begofopsys+1) lshift 1); // setmacfp(fnopsys,((mpfnof ! fnopsys) >> OF.macpos) << PCD.p+2); // freee = #176777; // freet = rv #335; // let stackloc = array(stackl); // movestack(init,stackloc+stackl-1); // ,lv pstack,... if any // rv #335 = stackloc; // freet = freet+1000; // unless hplay(-1000,false) do errhlt("hpl"); // while macbp ls 12 do addbp(array) // let tsizKd = lKDHeader+diskBTsize; // diskKd = array(tsizKd) // unless diskBTsize eq diskKd >> KD.diskBTsize then errhlta(49); // lastSN = lv (diskKd >> KD.lastSn); // diskBitTable = lv (diskKd >> KD.diskBitTable); // This string cannot be longer than 40 characters let sbVer = "BRAVO Version 7.6 September 25, 1982" chuckinit(bbs,sbVer); unless bbs >> BBS.fInstalled then [ bbs >> BBS.pArrayF = freee-25 deactivateomseq("JVQT","JVQT") ] unless ozonel eq 0 then errhlt("ozl") let cwInitCode2 = (chuckinitselect-chuckinit) & -2 hplay(-cwInitCode2,true) ozone = chuckinit // let tcspput1 = findomspace("MG") // let tcspput2 = findomspace(vmeasurestatus << MEASURESTATUS.p ? "ILJK","IJ") // vcfreemin = vputomfixedstor + umax(tcspput1,tcspput2); test bbs >> BBS.fInstalled ifnot [ activateomseq("BHJZQT",0,1300) let fnState = fnalloc() FtyOpen(fnState,"Bravo.State",true,true,vcNewestOrNew) // moved up so we can toss init code // deactivateomseq("JV","V") CreateVrldsys() deactivateomseq("BHJZQT","BHJZQT") activateomseq("M",0,0) Init2Rls() deactivateomseq("M","M") createdocm(docuserfirst); createdocm(docuserfirst+1); activateomseq("BJbTQ",0,4500) let tfreee = freee; let tfddlMax = FddlMaxInit() vcwFontFixed = CwFddl(tfddlMax)+10; unless ugt(tfreee-freet, vcwFontFixed) then errhlt("fin"); vfontFixed = freet; let fddl = vfddfirst until fddl eq 0 do [ fillinfdd(fddl) fddl = fddl >> FDD.fddnext ] InitFdh(); deactivateomseq("BJbTQ","BJbTQ") flushvm() while removefont(true) do loop vfddlFixed>>FDD.font = 0; vfddlFixed = 0; let rgFn = table [ fnscr; fnscrfs ] for i = 0 to 1 do [ let of = mpfnof ! (rgFn ! i) let pgn = ((of >> OF.macpos) rshift 9)+1+1 let rgda = lv of >> OF.rgda for i = 0 to of >> OF.macfp do [ if rgda ! pgn eq eofDA then rgda ! pgn = fillInDA if rgda ! pgn eq fillInDA then break ] ] let macBiScrInit = (mpfnof ! fnscr) >> OF.macbi let fb = getbin(fnscr,macBiScrInit-1) vmacFrScrInit = fb >> FB.macfr activateomseq("[QT",0,0) ReadDiskKd(); let stm = ozone+ozonel let cwMax = vpzone >> ZONE.cfree-50 hplay(cwMax,true) OutSims(EnuSimInit,0,stm,cwMax); (mpfnof ! fnState) >> OF.pos = 0; bbs >> BBS.cwStm = stm >> STM.lnmod for iw = 0 to stm >> STM.lnmod-1 do puts(fnState, stm ! iw); flushfn(fnState); // dumpcore(fnState,stm,stm >> STM.lnmod lshift 1) hplay(-cwMax,true) WriteDiskKd(); deactivateomseq("[QT","[QT") activateomseq("JQT",0,0) let ofState = mpfnof ! fnState bbs >> BBS.aCfa.fp.version = ofState >> OF.version move(lv (ofState >> OF.sn1),lv (bbs >> BBS.aCfa.fp.serialNumber),2) bbs >> BBS.aCfa.fp.leaderVirtualDa = VirtualDA(ofState >> OF.rgda) bbs >> BBS.aCfa.fa.da = ofState >> OF.rgda // things that should be 0 are not set explicitely bbs >> BBS.fInstalled = true // write it out on bravo.run FtyOpen(fnput,"bravo.run",false,true,vcNewest,vCfaEndRes,true) let of = mpfnof ! fnput; of >> OF.wf = true; of >> OF.macpos = -1; of >> OF.pos = (vwaCode+(bbs-vcaCode)) lshift 1 for i = 0 to lbbs-1 do puts(fnput,bbs ! i) flushfn(fnput) deallocfn(fnput) deactivateomseq("JQT","JQT") ] ifso [ ] // if vmeasurestatus ne 0 then // [ vbttoti = array1(2,0); // vbttotd = array1(2,0); // vcpagehc = 0; // vtodstart = array1(lntod); // DAYTIME(vtodstart); // FindMacPos(fnmeasure) // (mpfnof ! fnmeasure) >> OF.pos = (mpfnof ! fnmeasure) >> OF.macpos; // ] vFNoLog = false voverlay = true // fillinfdd(vfdd0) InitVrldsys() (mpWwWwd ! 1)>>WWD.doc = docuserfirst; (mpWwWwd ! 1)>>WWD.cpFDispl = 0; (mpWwWwd ! 0)>>WWD.cpFDispl = 0; (mpWwWwd ! 2)>>WWD.doc = docuserfirst+1; (mpWwWwd ! 2)>>WWD.cpFDispl = 0; SetRegionW(vrlwsys,0,sbVer); // let trid = 0 // trid<>WWD.cpFDispl = 0; invalidatewindow(0) invalidatewindow(1) invalidatewindow(2) ]