// SwatInit.bcpl // Copyright Xerox Corporation 1979, 1982 // Last modified May 9, 1982 11:42 AM by Taft get "Swat.decl" get "SysDefs.d" get "Streams.d" get "AltoDefs.d" external [ // outgoing procedures AfterJuntaInit; BeforeJuntaInit // incoming procedures from Swat AfterJunta; SysErr; InitDisk; InitFailSys InitExp; InitRead; InitSym; InitBreak InitResident; InitInternalTraps Enable; Disable // incoming procedures from OS CreateDisplayStream; ShowDisplayStream GetLinePos; CharWidth; InvertLine; SetLmarg InitializeZone; Allocate; Free Junta; CounterJunta; OutLd; MyFrame Zero; Puts; Resets; Wss; Ws; PutTemplate // outgoing statics swatVersion; state; xmFlag; debugFlag // incoming statics sysFont; OsVersion; sysZone; lvSysZone fpSwat; dsp; keys ] static [ swatVersion = 32 lastShownStream; osDsp; state xmFlag; debugFlag ] manifest [ dspLen = 30000b stateLen = 6000b stackLimit = 335b white = 0 black = -1 ] //---------------------------------------------------------------------------- let AfterJuntaInit() = valof //---------------------------------------------------------------------------- [ // Free storage initialization let freeBegin = @stackLimit let freeEnd = MyFrame() -2000 @stackLimit = freeEnd sysZone = InitializeZone(freeBegin, freeEnd-freeBegin, 0, 0) @lvSysZone = sysZone lastShownStream = MakeBar(white, 30) ShowDisplayStream(lastShownStream, DSalone) ShowDisplayStream(MakeBar(white, 1), DSbelow, lastShownStream) let lenDS = lDCB + 38*((sysFont!-2 +1) & -2) +1 let title = CreateDisplayStream(1, Allocate(sysZone, lenDS), lenDS, sysFont, 0, 0, sysZone) PutTemplate(title, " Swat.$D - May 9, 1982", swatVersion) InvertLine(title, GetLinePos(title)) MyShowDisplayStream(MakeBar(black, 2)) MyShowDisplayStream(title) MyShowDisplayStream(MakeBar(black, 1)) dsp = CreateDisplayStream(45, Allocate(sysZone,dspLen), dspLen, sysFont) SetLmarg(dsp, 32) MyShowDisplayStream(dsp) MyShowDisplayStream(MakeBar(black, 1)) MyShowDisplayStream(MakeBar(white, 5)) state = CreateDisplayStream(12, Allocate(sysZone,stateLen), stateLen, sysFont) MyShowDisplayStream(state) SetLmarg(state, 32) MyShowDisplayStream(MakeBar(black, 1)) InitFailSys() InitRead() InitExp() InitSym() InitBreak() InitResident() InitDisk() Disable() let outLdResult = OutLd(fpSwat, 0) Enable() test outLdResult eq 0 ifso [ @displayListHead = 0 CounterJunta(AfterCounterJunta) ] ifnot [ InitInternalTraps() Resets(keys) resultis freeBegin ] ] //---------------------------------------------------------------------------- and AfterCounterJunta() be //---------------------------------------------------------------------------- [ Wss(osDsp, "*N*N*N") Wss(osDsp, "*N Swat, Swatee and Dumper.Boot are installed.") Wss(osDsp, "*N You may delete InstallSwat.Run if you wish.") ] //---------------------------------------------------------------------------- and BeforeJuntaInit(upe) be //---------------------------------------------------------------------------- [ while upe!0 ne 0 do [ if upe>>UPE.type eq globalSwitches then for i = 1 to upe>>UPE.length-1 switchon upe!i into [ case $X: case $x: [ xmFlag = true; endcase ] case $D: case $d: [ debugFlag = true; endcase ] ] upe = upe + upe>>UPE.length ] osDsp = dsp //save for AfterCounterJunta test OsVersion ge 16 ifso Junta(levDisplay, AfterJunta) ifnot Ws("*NThis SWAT works only with OS Version 16 or later*N") ] //---------------------------------------------------------------------------- and MyShowDisplayStream(stream) be //---------------------------------------------------------------------------- [ ShowDisplayStream(stream, DSbelow, lastShownStream) lastShownStream = stream ] //---------------------------------------------------------------------------- and MakeBar(background, nLines) = valof //---------------------------------------------------------------------------- [ structure Bar: [ fdcb word; ldcb word; @DCB ] manifest lenBar = size Bar/16 let bar = Allocate(sysZone, lenBar, false, true); Zero(bar, lenBar) bar>>Bar.fdcb = lv bar>>Bar.next bar>>Bar.ldcb = lv bar>>Bar.next bar>>Bar.background = background bar>>Bar.width = 0 bar>>Bar.height = nLines resultis bar ]