get "BRAVO1.DF";
get "CHAR.DF";
get "SELECT.DF";
get "rn1.df"
get "com.DF";
get "display.DF";
get "doc.df"
// Incoming Procedures
external
[
gets;
resetts;
getchar;
SetRegionSys;
confirm;
updatedisplay;
tsflush;
stnum;
SetRegionW;
deleted;
inserta;
augmentomseq;
inserttx;
deactivateomseq;
getint;
setsel;
InsertBuf;
ClearBuf;
underline;
updateunderline;
innum;
invalidatesel;
errhlta;
ult;
bravochar;
];
// Incoming Statics
external
[
tsread;
tsmacro;
tscorrect;
tsstop;
tsquick;
rgmaccp;
vcp;
fnts;
ccommand;
vrlwsys;
tsbreak;
selaux;
mpWwWwd;
]
// Outgoing Procedures
external [
GetCharReplay;
SetSelReplay;
ComReplay;
];
let GetCharReplay() = valof
[ let tchar = nil;
tchar = gets(fnts);
if tchar eq chat then
[ tchar = gets(fnts);
if tchar eq $E then
[ tsread = false;
tsmacro = false;
resetts();
resultis bravochar();
]
]
if (tchar eq chesc) & tscorrect & not tsmacro then
[ tsread = false;
resultis bravochar();
]
resultis tchar;
]
and ComReplay() be
[ let tchar = nil;
let sbcomnum = vec 8;
test tsstop ifso
[ tsstop = false;
tchar = chsp;
]
ifnot tchar = getchar();
sbcomnum ! 0 = 0;
SetRegionSys(risyscom,85) //REPLAY:
[ if (tchar ge $A) & (tchar le $Z) then
tchar = tchar+#40;
switchon tchar into
[
case $q: tsquick = true;
SetRegionSys(risysstate,86);
endcase;
case $s: tsquick = false;
SetRegionSys(risysstate,87);
endcase;
case $t: tsread = false;
tscorrect = true;
test confirm("TERMINATE REPLAY") ifso
[
SetRegionSys(risyscom,nriready)
SetRegionSys(risysstate,nrisel)
SetRegionSys(risyspast,rinil)
updatedisplay()
tsflush();
tscorrect = false;
return;
]
ifnot [ tsread = true;
tscorrect = false;
endcase;
]
case chsp: test tsstop ifso return
ifnot [ tsstop = true;
stnum(sbcomnum,ccommand);
SetRegionW(vrlwsys,0,sbcomnum);
let trid = 0
trid<<RID.nrl = 1
trid<<RID.ri = 0
SetRegionSys(risysstate,88,trid)
]
endcase;
case $p: tsstop = false;
SetRegionSys(risysstate,89);
endcase;
case $b: deleted(doctx5);
unless rgmaccp ! doctx1 eq 0 then
inserta(doctx5,0,doctx1,0,rgmaccp ! doctx1-1)
SetRegionSys(risysstate,90,37);
updatedisplay();
tsread = false;
tscorrect = true;
augmentomseq("M");
inserttx(1);
deactivateomseq("M");
vcp = 0;
tsbreak = getint(doctx1);
deleted(doctx1);
test rgmaccp ! doctx5 eq 0 ifnot
[ inserta(doctx1,0,doctx5,0,rgmaccp ! doctx5-1)
selaux >> SEL.doc = doctx1;
selaux >> SEL.ww = 0;
selaux >> SEL.type = schar;
setsel(selaux,0,rgmaccp ! doctx1-1);
InsertBuf(1,selaux>>SEL.doc,
selaux>>SEL.cpfirst,selaux>>SEL.cplast-selaux>>SEL.cpfirst+1)
]
ifso ClearBuf(1);
default: SetRegionSys(risysstate,91);
tsstop = true;
endcase;
]
updatedisplay()
// unless vfhpsp do
// [ blinkscreen();
// Core storage running low-Suggest termination of replay
// SetRegionSys(risysstate,49,92);
// vfhpsp = true;
// ]
// updatedisplay();
unless tsstop do return;
tchar = getchar();
] repeat
]
and SetSelReplay(sel1) be
[ underline(uloff,sel1);
let tchar = gets(fnts);
if tchar eq $' then
[ sel1 >> SEL.type = snone;
return;
]
if tchar eq $** then
return;
test tchar eq chat ifso
[ tchar = gets(fnts);
unless tchar eq $E do errhlta(104);
resetts();
tsread = false;
tscorrect = false;
underline(sel1 >> SEL.ulmode,sel1);
updateunderline( );
]
ifnot [ unless tchar eq ${ do errhlta(106);
sel1 >> SEL.type = innum(fnts,8);
sel1 >> SEL.ww = innum(fnts,8);
sel1 >> SEL.cpfirst = innum(fnts,8);
sel1 >> SEL.cplast = innum(fnts,8);
invalidatesel(sel1);
sel1 >> SEL.doc = (mpWwWwd ! (sel1 >> SEL.ww))>>WWD.doc;
let maccp = rgmaccp ! (sel1 >> SEL.doc);
unless ult(sel1 >> SEL.cpfirst,maccp) & ult(sel1 >> SEL.cplast,maccp) do
errhlta(105);
// if carg eq 4 then
// unless FProc(sel1, fmCaller) do
// errhlta(107)
underline(sel1 >> SEL.ulmode,sel1);
updateunderline( );
]
]