*/
Written some cool source code? Upload it to Programmer's Heaven.
*/

View \PROTEDIT.PAS

Full Source Code To Vision Bbs System

Submitted By: WEBMASTER
Rating: (Not rated) (Rate It)


{$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.

corner
© 1996-2008 CommunityHeaven LLC. All rights reserved. Reproduction in whole or in part, in any form or medium without express written permission is prohibited.
Violators of this policy may be subject to legal action. Please read our Terms Of Use and Privacy Statement for more information.
North American business development: Nicolai Wadstrom. Publisher: Lars Hagelin.