// initcom.sr
// Carol Hankins
// April 8, 1976
get "bravo1.df"
get "com.df"
get "msg.df"
get "rn1.df"
get "doc.df"
get "char.df"
get "display.df"
get "st.df"
get "vm.df"
get "ALTOFILESYS.D"
get "OM.df"
// incoming procedures
external [
stcopy
sbwsize
move
errhlta
SiPut
VpaGetScratchBin
getvp
lockbp
quitcom
EditCheck
insertz
replacez
normalize
deletez
extend
buffer
hccom
PageCom
oreadwritecoms
// vputomfixedstor
owritefile
InitCom2
unlockbp
GetFile
findomspace
umax
]
// incoming statics
external [
vbp
vcfreemin
]
// outgoing procedures
external [
CdInit
CsAppend
CiCloseCd
InitCom
InitVrldsys
]
// outgoing statics
external [
vvpampchci
mpchci
vcinorepeat
]
// local statics
static [
vvpampchci
mpchci
vcinorepeat
]
let CdInit(cd, ricom, ristate, ripast, fokrepeat, fokundo, chundo,fselundo,fOrderedOvs, fRestoreSysWw; numargs ca) = valof
[
switchon ca into
[
case 7: fselundo= false;
case 8: fOrderedOvs= false;
case 9: fRestoreSysWw= false;
default: endcase;
]
cd>>CD.ricom = ricom
cd>>CD.ristate = ristate
cd>>CD.ripast = ripast
cd>>CD.fokrepeat = fokrepeat
cd>>CD.fokundo = fokundo
cd>>CD.chundo = chundo
cd>>CD.lcdmac = lcd
cd>>CD.fselundo = fselundo
cd>>CD.fOrderedOvs = fOrderedOvs
cd>>CD.fRestoreSysWw = fRestoreSysWw
resultis cd
]
and CsAppend(cd, sbact, sbdeact, pAbProc, cwarray, rgrid, nrimac) = valof
[
let cs, asbdeact = nil, nil
cs = cd + cd>>CD.lcdmac
cs>>CS.pAbProc = pAbProc
cs>>CS.cwarray = cwarray
stcopy(lv cs>>CS.asbact, sbact)
asbdeact = lv cs>>CS.asbact + sbwsize(sbact)
stcopy(asbdeact, sbdeact)
cs>>CS.bsbdeact = asbdeact - cs
let trgrid = asbdeact + sbwsize(sbdeact)
move(rgrid, trgrid, nrimac)
cs>>CS.brgrid = trgrid - cs
cs>>CS.lcsmac = cs>>CS.brgrid + nrimac
cd>>CD.lcdmac = cd>>CD.lcdmac + cs>>CS.lcsmac
if cd>>CD.lcdmac ge lcdmax then errhlta(78)
resultis cs
]
and CiCloseCd(cd, ch) = valof
[
let ci = nil
// acsnil at the end
cd ! (cd >> CD.lcdmac) = 0
cd >> CD.lcdmac = cd >> CD.lcdmac+1
// ci = SiPut(sinil, cd, cd>>CD.lcdmac)
ci = SiPut(sinil, cd)
mpchci!ch = ci
resultis ci
]
and InitCom() be
[
let cs, tbp = nil, nil
let cd = vec lcdmax
let rgrid = vec 25
vvpampchci = VpaGetScratchBin()
mpchci = getvp(vvpampchci)
tbp = vbp
lockbp(tbp)
for tch = 0 to #377 do mpchci ! tch = cinil
// format for this region
// CdInit(cd, ricom, ristate, ripast, fokrepeat, fokundo, chundo)
// CsAppend(cd, sbact, sbdeact, pAbProc, cwarray, rgrid, nrimac)
//
// Quit
cd = CdInit(cd, 19, 74, rinil, false, false, 0, false, false, true)
rgrid ! 0 = 19; rgrid ! 1 = 50
rgrid ! 2 = 65; rgrid ! 3 = 50
rgrid ! 4 = rinil
CsAppend(cd, "BCDKLJQT", "BCDKLJQT", lv quitcom, 2500, rgrid, 5)
CiCloseCd(cd, $q)
// Insert
cd = CdInit(cd, 0, 12, rinil, true, true, $d )
CsAppend(cd, "", "", lv EditCheck, 0, 0, 0)
CsAppend(cd, "RM", "", lv insertz, 0, 0, 0)
CiCloseCd(cd, $i)
// Append
cd = CdInit(cd, 1, 12, rinil, true, true, $d )
CsAppend(cd, "", "", lv EditCheck, 0, 0, 0)
CsAppend(cd, "RM", "", lv insertz, 0, 0, 0)
CiCloseCd(cd, $a)
// Replace
cd = CdInit(cd, 2, 12, rinil, true, true, $r )
CsAppend(cd, "", "", lv EditCheck, 0, 0, 0)
CsAppend(cd, "RM", "", lv replacez, 0, 0, 0)
CiCloseCd(cd, $r)
// Delete
cd = CdInit(cd, 18, rinil, rinil, true, true, $i )
CsAppend(cd, "", "", lv deletez, 0, 0, 0)
CiCloseCd(cd, $d)
// Normalize
cd = CdInit(cd, 17, rinil, rinil, true, false, 0 )
CsAppend(cd, "", "", lv normalize, 0, 0, 0)
CiCloseCd(cd, $n)
// Extend
cd = CdInit(cd, 16, rinil, rinil, false, false, 0)
CsAppend(cd, "", "", lv extend, 0, 0, 0)
CiCloseCd(cd, $e)
// Buffer commands
cd = CdInit(cd, 9, 173, rinil, true, false, 0 )
rgrid ! 0 = 206; rgrid ! 1 = 50
CsAppend(cd, "M", "M", lv buffer, 0, rgrid, 2)
CiCloseCd(cd, $b)
// Hardcopy
cd = CdInit(cd, 13, rinil, rinil, true, false, 0,false,true)
rgrid ! 0 = 126; rgrid ! 1 = 50
rgrid ! 2 = 99; rgrid ! 3 = 50
rgrid ! 4 = 100; rgrid ! 5 = 50
rgrid ! 6 = 156; rgrid ! 7 = 50
rgrid ! 8 = 157; rgrid ! 9 = 50
rgrid ! 10 = 13; rgrid ! 11 = 50
rgrid ! 12 = 160; rgrid ! 13 = 50
rgrid ! 14 = 169; rgrid ! 15 = 50
CsAppend(cd, "BU↑Ma*140", "BU", lv hccom, 3400, rgrid, 16)
CiCloseCd(cd, $h)
// Page Boundary
cd = CdInit(cd, rinil, rinil, rinil, true, false, 0)
CsAppend(cd, "ca*140", "ca*140", lv PageCom, 0, 0, 0)
CiCloseCd(cd, chlf)
let tputomfixedstor = 2210+(lnovhdr+5);
// Get
cd = CdInit(cd, 4, 67, rinil, false, true, $d, true )
rgrid ! 0 = 94; rgrid ! 1 = 50
rgrid ! 2 = 39; rgrid ! 3 = 50
rgrid ! 4 = 99; rgrid ! 5 = 50
rgrid ! 6 = 100; rgrid ! 7 = 50
rgrid ! 8 = 97; rgrid ! 9 = 50
rgrid ! 10 = 66; rgrid ! 11 = 50
rgrid ! 12 = 75; rgrid ! 13 = 50
CsAppend(cd, "MG", "MG", lv oreadwritecoms, 0, rgrid, 14)
CsAppend(cd, "BHJQT", "BHJQT", lv GetFile, tputomfixedstor,
rgrid, 14)
CiCloseCd(cd, $g)
// CtrlZ
cd = CdInit(cd, 5, 67, rinil, false, true, $d )
rgrid ! 0 = 94; rgrid ! 1 = 50
rgrid ! 2 = 39; rgrid ! 3 = 50
rgrid ! 4 = 99; rgrid ! 5 = 50
rgrid ! 6 = 100; rgrid ! 7 = 50
rgrid ! 8 = 97; rgrid ! 9 = 50
CsAppend(cd, "MG", "MG", lv oreadwritecoms, 0,
rgrid, 10)
CsAppend(cd, "BHJQT", "BHJQT", lv GetFile, tputomfixedstor,
rgrid, 10)
CiCloseCd(cd, ctrlz)
// Put
cd = CdInit(cd, 3, 67, rinil, false, false, 0)
rgrid ! 0 = 94; rgrid ! 1 = 50
rgrid ! 2 = 39; rgrid ! 3 = 50
rgrid ! 4 = 3; rgrid ! 5 = 50
rgrid ! 6 = 93; rgrid ! 7 = 50
CsAppend(cd, "BMG", "BM", lv oreadwritecoms, tputomfixedstor,
rgrid, 8)
rgrid ! 0 = 99; rgrid ! 1 = 50
rgrid ! 2 = 100; rgrid ! 3 = 50
rgrid ! 4 = 102
CsAppend(cd, "BGIJQTLK", "BGIJQTLK", lv owritefile, tputomfixedstor,
rgrid, 5)
CiCloseCd(cd, $p)
let tcspput1 = findomspace("MG")
let tcspput2 = findomspace("BGIJQTLK");
vcfreemin = tputomfixedstor + umax(tcspput1,tcspput2);
InitCom2()
unlockbp(tbp, true)
]