home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Power-Programmierung
/
CD1.mdf
/
pascal
/
library
/
dos
/
vi_si_on
/
protedit.pas
< prev
next >
Wrap
Pascal/Delphi Source File
|
1991-03-16
|
13KB
|
535 lines
{$I-}
{ External Protocol Editor for ViSiON BBS Software}
{ Written originally by The SlaveLord }
Program proteditor;
uses dos,crt,scrninpt,scrnunit,gentypes,prompts,gensubs;
const normal=$1f;
barcolor=127-14;
var w,w1:window;
k:char;
posi:integer;
dlpro,ulpro:array[1..30] of protorec;
tp:protorec;
f:file of protorec;
totaldown,totalup:integer;
function exist(fs:string):boolean;
var ft:file;
begin
assign(ft,fs);
reset(ft);
if ioresult<>0 then exist:=false else exist:=true;
close(ft);
end;
procedure quitprog;
var ct:integer;
begin
assign(f,'D_Prot.Dat');
rewrite(f);
if totaldown<>0 then
for ct:=1 to totaldown do write(f,dlpro[ct]);
close(f);
assign(f,'U_Prot.Dat');
rewrite(f);
if totalup<>0 then for ct:=1 to totalup do write(f,ulpro[ct]);
close(f);
setcurwindow(w);
closewindow;
setcurwindow(w1);
closewindow;
textmode(co80);
setcolor(15);
gotoxy(23,17);
writeln('ViSiON External Protocol Editor 1.00');
gotoxy(1,20);
halt;
end;
procedure setit;
begin
setcurwindow(w1);
closewindow;
openwindow(w1,1,1,54,24,0,0);
setcurwindow(w1);
gotoxy(1,1);
setcolor(15);
end;
procedure listdlprot;
var ct:integer;
begin
setit;
setcolor(15);
if totaldown=0 then begin
writeln('Sorry, there are no Download Protocols defined!');
writeln;
writeln('Press a key');
repeat until bioskey<>#0;
exit;
end;
for ct:=1 to totaldown do begin
writeln('D/L Protocol #',ct);
writeln('Key :',dlpro[ct].key);
writeln('Description :',dlpro[ct].desc);
writeln('Command Line:',dlpro[ct].cline);
writeln('EXE Name :',dlpro[ct].exename);
writeln('Press a key');
writeln;
repeat until bioskey<>#0;
end;
end;
procedure listulprot;
var ct:integer;
begin
setit;
setcolor(15);
if totalup=0 then begin
writeln('Sorry, there are no Upload Protocols Defined.');
writeln;
writeln('Press any key');
repeat until bioskey<>#0;
exit;
end;
for ct:=1 to totalup do begin
writeln('Upload Protocol #',ct);
writeln('Key :',ulpro[ct].key);
writeln('Description :',ulpro[ct].desc);
writeln('Command Line:',ulpro[ct].cline);
writeln('EXE Name :',ulpro[ct].exename);
writeln('Press any key');
repeat until bioskey<>#0;
writeln;
end;
end;
procedure readprotos;
begin
totaldown:=0;
assign(f,'D_Prot.Dat');
reset(f);
if ioresult<>0 then rewrite (f);
while not eof(f) do begin
read(f,tp);
inc(totaldown);
dlpro[totaldown]:=tp;
end;
close(f);
totalup:=0;
assign(f,'U_Prot.Dat');
reset(f);
if ioresult<>0 then rewrite (f);
while not eof(f) do begin
read(f,tp);
inc(totalup);
ulpro[totalup]:=tp;
end;
close(f);
end;
procedure adddlprot;
var c,k:char;
po:integer;
t1,t2,t3:string;
keys:string;
ct:integer;
begin
setit;
if totaldown=30 then begin
writeln('Sorry, you may only have 30 protocols!');
repeat until bioskey<>#0;
exit;
end;
keys:='';
if totaldown<>0 then for ct:=1 to totaldown do keys:=keys+dlpro[ct].key;
setcolor(15);
gotoxy(1,1);
writeln('Add a D/L Protocol');
repeat
gotoxy(1,3);
write('Enter the Key to use:');
k:=readkey;
ct:=ord(k);
if ct>96 then ct:=ct-32;
c:=chr(ct);
po:=pos(c,keys);
if po>0 then begin
gotoxy(1,10);
writeln(#7,#7,#7,#7,'That Key is in use!');
end;
until (ct>=ord('A')) and (ct<=ord('Z')) and (pos(c,keys)=0);
tp.key:=c;
writeln(c);
write('Enter the Description for the Protocol:');
readln(t1);
if t1='' then exit;
tp.desc:=t1;
writeln;
writeln('Enter the command line for the protocol:');
writeln('%1=Com Port,%2=Comm Lock Rate,%3=Connect Rate');
write('%4=DSZ Log:');
readln(t2);
writeln;
if t2='' then exit;
if t2[1]<>' ' then tp.cline:=' '+t2 else tp.cline:=t2;
write('Enter the EXE Name:');
readln(t3);
tp.exename:=t3;
writeln;
writeln('Adding...');
inc(totaldown);
dlpro[totaldown]:=tp;
end;
procedure addulprot;
var c,k:char;
po:integer;
t1,t2,t3:string;
keys:string;
ct:integer;
begin
setit;
if totalup=30 then begin
writeln('Sorry, you may not have more then 30 protocols!');
repeat until bioskey<>#0;
exit;
end;
keys:='';
if totalup<>0 then for ct:=1 to totalup do keys:=keys+ulpro[ct].key;
setcolor(15);
gotoxy(1,1);
writeln('Add a U/L Protocol');
repeat
gotoxy(1,3);
write('Enter the Key to use:');
k:=readkey;
ct:=ord(k);
if ct>96 then ct:=ct-32;
c:=chr(ct);
po:=pos(c,keys);
if po>0 then begin
gotoxy(1,10);
writeln(#7,#7,#7,#7,'That Key is in use!');
end;
until (ct>=ord('A')) and (ct<=ord('Z')) and (pos(c,keys)=0);
tp.key:=c;
writeln(c);
write('Enter the Description for the Protocol:');
readln(t1);
if t1='' then exit;
writeln;
tp.desc:=t1;
writeln('Enter the command line for the protocol:');
writeln('%1=Com Port,%2=Comm Lock Rate,%3=Connect Rate');
write('%4=DSZ Log:');
readln(t2);
writeln;
if t2='' then exit;
if t2[1]<>' ' then tp.cline:=' '+t2 else tp.cline:=t2;
write('Enter the EXE Name:');
readln(t3);
tp.exename:=t3;
writeln;
writeln('Adding...');
inc(totalup);
ulpro[totalup]:=tp;
end;
procedure setbar;
begin
setcurwindow(w);
setcolor(normal);
if posi=1 then setcolor(barcolor);
gotoxy(2,4);
write(' Add a D/L Protocol ');
setcolor(normal);
if posi=2 then setcolor(barcolor);
gotoxy(2,5);
write(' Add a U/L Protocol ');
setcolor(normal);
if posi=3 then setcolor(barcolor);
gotoxy(2,6);
write(' Edit D/L Protocols ');
setcolor(normal);
if posi=4 then setcolor(barcolor);
gotoxy(2,7);
write(' Edit U/L Protocols ');
setcolor(normal);
if posi=5 then setcolor(barcolor);
gotoxy(2,8);
write(' Del a D/L Protocol ');
setcolor(normal);
if posi=6 then setcolor(barcolor);
gotoxy(2,9);
write(' Del a U/L Protocol ');
setcolor(normal);
if posi=7 then setcolor(barcolor);
gotoxy(2,10);
write(' List D/L Protocols ');
setcolor(normal);
if posi=8 then setcolor(barcolor);
gotoxy(2,11);
write(' List U/L Protocols ');
setcolor(normal);
if posi=9 then setcolor(barcolor);
gotoxy(2,12);
write(' Quit Proto Editor ');
end;
procedure editdlprot;
var ct,tt:integer;
keys,t1:string;
c,k:char;
begin
setit;
setcolor(15);
gotoxy(1,1);
if totaldown=0 then begin
writeln('Sorry, there are no protocols to edit.');
repeat until bioskey<>#0;
exit;
end;
writeln('Edit D/L Protocol');
keys:='';
if totaldown<>0 then for ct:=1 to totaldown do keys:=keys+dlpro[ct].key;
writeln('There are ',totaldown,' protocol(s)');
write('Edit [1-',totaldown,']:');
readln(t1);
if t1='' then exit;
tt:=valu(t1);
if (tt<1) or (tt>totaldown) then exit;
writeln;
writeln;
ct:=tt;
repeat;
gotoxy(1,5);
write('Key for Protocol: [CR=',dlpro[ct].key,']:');
k:=readkey;
tt:=ord(k);
if tt>96 then tt:=tt-32;
c:=chr(tt);
if pos(c,keys)>0 then begin
gotoxy(1,10);
writeln(#7,#7,#7,#7,'That key is in use!');
end;
until (tt=13) or (tt>=ord('A')) and (tt<=ord('Z')) and (pos(c,keys)=0);
if tt=13 then c:=dlpro[ct].key;
tp.key:=c;
writeln(c);
write('Protocol Description: [CR=',dlpro[ct].desc,']:');
readln(t1);
if t1='' then t1:=dlpro[ct].desc;
writeln;
tp.desc:=t1;
writeln('Protocol Command Line: %1 for Comm Port');
writeln('%2=Comm Lock In baud, %3=Connect Baud Rate');
writeln('%4=DSZ Log, [CR=',dlpro[ct].cline,']');
write('Command Line:');
readln(t1);
if t1='' then t1:=dlpro[ct].cline;
if t1[1]<>' ' then tp.cline:=' '+t1 else
tp.cline:=t1;
writeln;
write('EXE Name: [CR=',dlpro[ct].exename,']:');
readln(t1);
if t1='' then t1:=dlpro[ct].exename;
writeln;
tp.exename:=t1;
dlpro[ct]:=tp;
writeln;
writeln('Complete, hit any key to continue.');
repeat until bioskey<>#0;
end;
procedure editulprot;
var ct,tt:integer;
keys,t1:string;
c,k:char;
begin
setit;
setcolor(15);
gotoxy(1,1);
if totalup=0 then begin
writeln('Sorry, there are no protocols to edit.');
repeat until bioskey<>#0;
exit;
end;
writeln('Edit U/L Protocol');
keys:='';
if totalup<>0 then for ct:=1 to totalup do keys:=keys+ulpro[ct].key;
writeln('There are ',totalup,' protocol(s)');
write('Edit [1-',totalup,']:');
readln(t1);
if t1='' then exit;
tt:=valu(t1);
if (tt<1) or (tt>totalup) then exit;
writeln;
writeln;
ct:=tt;
repeat;
gotoxy(1,5);
write('Key for Protocol: [CR=',ulpro[ct].key,']:');
k:=readkey;
tt:=ord(k);
if tt>96 then tt:=tt-32;
c:=chr(tt);
if pos(c,keys)>0 then begin
gotoxy(1,10);
writeln(#7,#7,#7,#7,'That key is in use!');
end;
until (tt=13) or (tt>=ord('A')) and (tt<=ord('Z')) and (pos(c,keys)=0);
if tt=13 then c:=ulpro[ct].key;
tp.key:=c;
writeln(c);
write('Protocol Description: [CR=',ulpro[ct].desc,']:');
readln(t1);
if t1='' then t1:=ulpro[ct].desc;
writeln;
tp.desc:=t1;
writeln('Protocol Command Line: %1 for Comm Port');
writeln('%2=Comm Lock In baud, %3=Connect Baud Rate');
writeln('%4=DSZ Log, [CR=',ulpro[ct].cline,']');
write('Command Line:');
readln(t1);
if t1='' then t1:=ulpro[ct].cline;
if t1[1]<>' ' then tp.cline:=' '+t1 else
tp.cline:=t1;
writeln;
write('EXE Name: [CR=',ulpro[ct].exename,']:');
readln(t1);
if t1='' then t1:=ulpro[ct].exename;
writeln;
tp.exename:=t1;
ulpro[ct]:=tp;
writeln;
writeln('Complete, hit any key to continue.');
repeat until bioskey<>#0;
end;
procedure deldlprot;
var ct,tt:integer;
s1:string;
begin
setit;
setcolor(15);
if totaldown=0 then begin
writeln('Sorry, there are no protocols to delete.');
repeat until bioskey<>#0;
exit;
end;
writeln('Delete a D/L Protocol');
writeln;
writeln('There are ',totaldown,' protocols.');
writeln;
write('Which Protocol to delete: [1-',totaldown,']:');
readln(s1);
if s1='' then exit;
tt:=valu(s1);
if (tt<1) or (tt>totaldown) then exit;
if tt=totaldown then begin
dec(totaldown);
writeln;
writeln('Protocol ',tt,' is deleted.');
exit;
end;
for ct:=tt to totaldown-1 do dlpro[ct]:=dlpro[ct+1];
dec(totaldown);
writeln;
writeln('Protocol ',tt,' is deleted.');
end;
procedure delulprot;
var ct,tt:integer;
s1:string;
begin
setit;
setcolor(15);
if totalup=0 then begin
writeln('Sorry, there are no protocols to delete.');
repeat until bioskey<>#0;
exit;
end;
writeln('Delete a U/L Protocol');
writeln;
writeln('There are ',totalup,' protocols.');
writeln;
write('Which Protocol to delete: [1-',totalup,']:');
readln(s1);
if s1='' then exit;
tt:=valu(s1);
if (tt<1) or (tt>totalup) then exit;
if tt=totalup then begin
dec(totalup);
writeln;
writeln('Protocol ',tt,' is deleted.');
exit;
end;
for ct:=tt to totalup-1 do ulpro[ct]:=ulpro[ct+1];
dec(totalup);
writeln;
writeln('Protocol ',tt,' is deleted.');
end;
procedure openit;
begin
openwindow(w,55,1,79,14,$1f,$1f-1);
setcurwindow(w);
gotoxy(2,2);
setcolor($1f);
writeln('ViSiON ProtoEdit 1.00');
end;
begin
readprotos;
clrscr;
openwindow(w1,1,1,54,24,0,0);
{openwindow(w,55,1,79,14,$1f,$1f-1);
setcurwindow(w);
gotoxy(2,2);
setcolor($1f);
writeln('ViSiON ProtoEdit 1.00'); }
openit;
posi:=1;
setbar;
repeat
k:=bioskey;
case k of
#200:begin
posi:=posi-1;
if posi=0 then posi:=9;
setbar;
end;
#208:begin
posi:=posi+1;
if posi=10 then posi:=1;
setbar;
end;
#13:begin
setcurwindow(w);
closewindow;
case posi of
1:adddlprot; {add d/l protocol}
2:addulprot; {add u/l protocol}
3:editdlprot; {edit d/l protocol}
4:editulprot; {edit u/l protocol}
5:deldlprot; {del a d/l protocol}
6:delulprot; {del a u/l protocol}
7:listdlprot;
8:listulprot;
9:quitprog;
end;
openit;
setbar;
end;
end;
until k=#27;
quitprog;
end.