// InState.Sr get "BRAVO1.DF"; get "ALTOFILESYS.D"; get "OM.DF"; get "vm.DF"; get "St.DF"; get "State.DF"; get "MSG.DF" // Incoming Procedures external [ move hpinit ult swat hpalloca array LoadCore movec errhlta MyFrame ugt ]; // Incoming Statics external [ freee freet pzone ]; // Outgoing Procedures external [ // InputStm; EnuStu; InputStuAb; StuToSim; FillInB; ]; // Outgoing Statics // Local Statics manifest [ pidRgPa = 1 // BEWARE, THIS PARAM IS IN PJINIT.SR ] // let InputStm(cfaStm, vecDestStm, cwMax, arrayF, arrayMax, hpF, hpMac) be // [ // let rgPa = vec lrgPa // movec(rgPa,rgPa+lrgPa-1,swat) // rgPa ! ipaA = array; rgPa ! ipaH = hpalloca; // freee = arrayMax; freet = arrayF; hpinit(hpF,hpMac,4,pzone); // LoadCore(cfaStm,vecDestStm,cwNil,cwMax) // unless ult(vecDestStm >> STM.lnmod,cwMax) then errhlt("lnm") // EnuStu(vecDestStm, MyFrame()+ofsetParamF, dtyNil, ipaAb, InputStuAb) // ] // E N U S T U // let EnuStu(stm,fm,dty,ipa,Proc) be [ let stu = lv (stm >> STM.aStu) let pEnd = stm+stm >> STM.reltbl; unless @pEnd eq 0 then errhlta(246) until stu eq pEnd do [ if ((dty eq dtyNil) % (dty eq stu >> STU.dty)) & ((ipa eq ipaNil) % (ipa eq stu >> STU.ipa)) then Proc(stu,stm,fm) stu = stu+stu >> STU.cw if ugt(stu,pEnd) then errhlta(235) ] ] // I N P U T S T U A B // and InputStuAb(stu,stm,fmInputStm) be [ unless stu >> STU.cw eq cwStuStat then errhlta(236) StuToSim(stu,stm,fmInputStm ! pidRgPa) ] // S T U T O S I M // and StuToSim(stu,stm,rgPa,simDestNoMod; numargs na) be [ unless stu >> STU.sgrp eq sgrpInit & stu >> STU.sver eq 0 then errhlta(237) let sdm = lv (stu >> STU.aSdm) let ipa = stu >> STU.ipa let dty = stu >> STU.dty let cwStu = stu >> STU.cw let simSrc = sdm if dty eq dtyMixed then [ let pxBli = sdm; simSrc = sdm+pxBli >> PX.cw unless stu >> STU.fSeen then for ti = 1 to pxBli >> PX.cw-1 do FillInB(simSrc+(pxBli ! ti),stm,rgPa,simDestNoMod ! (pxBli ! ti)) ] if (dty eq dtyB) & (stu >> STU.fSeen eq false) then [ unless cwStu eq cwStuMin then errhlta(238) FillInB(sdm,stm,rgPa,@sdm) ] stu >> STU.fSeen = true if stu >> STU.fNoMod then return let cwSim = stu+cwStu-simSrc if (stu >> STU.simDest eq simNil) then stu >> STU.simDest = (rgPa ! ipa)(cwSim) move(simSrc,stu >> STU.simDest,cwSim) ] // F I L L I N B // and FillInB(lvB,stm,rgPa,simDestNoMod) be [ let stu = stm+@lvB if stu >> STU.fNoMod then stu >> STU.simDest = simDestNoMod StuToSim(stu,stm,rgPa,simDestNoMod) @lvB = stu >> STU.simDest ]