home *** CD-ROM | disk | FTP | other *** search
/ The Unsorted BBS Collection / thegreatunsorted.tar / thegreatunsorted / hacking / phreak_utils_pc / bbp_set.pas < prev    next >
Encoding:
Pascal/Delphi Source File  |  1995-04-01  |  40.6 KB  |  1,140 lines

  1. unit bbp_set;
  2.  
  3. interface
  4.  
  5. procedure setup;
  6.  
  7. implementation
  8.  
  9. uses bbp_vars, extras, crt, editrout, grmenus, grwins,
  10.      video, bbp_proc, optimer, vgagraph, bbp_init, sos;
  11.  
  12. procedure setup;
  13. var choice :byte;
  14.  
  15. procedure editdialsets;
  16. var x    :byte;
  17.     dset :dialsettype;
  18.     res  :byte;
  19.     save :array[1..4000] of byte;
  20.  
  21. procedure editset(setnr:byte);
  22. var workset :dialsettype;
  23.     res,x   :byte;
  24. procedure edittone(var t:tonetype2;l:byte);
  25. begin
  26.   setcursorsize($6,$7);
  27.   gotoxy(24,l); editword(t.one); gotoxy(24,l); write(t.one:4);
  28.   gotoxy(32,l); editword(t.two); gotoxy(32,l); write(t.two:4);
  29.   gotoxy(40,l); editword(t.three); gotoxy(40,l); write(t.three:4);
  30.   gotoxy(48,l); editword(t.mark); gotoxy(48,l); write(t.mark:4);
  31.   gotoxy(56,l); editword(t.space); gotoxy(56,l); write(t.space:4);
  32.   setcursorsize($32,$32);
  33. end;
  34. procedure showtone(t:tonetype2;l:byte);
  35. begin
  36.   gotoxy(24,l); write(t.one:4);
  37.   gotoxy(32,l); write(t.two:4);
  38.   gotoxy(40,l); write(t.three:4);
  39.   gotoxy(48,l); write(t.mark:4);
  40.   gotoxy(56,l); write(t.space:4);
  41. end;
  42. begin
  43.   sosopen;
  44.   sosfopen(dsfilename);
  45.   sosseek(sizeof(dialsettype)*(setnr-1));
  46.   sosread(@workset,sizeof(workset));
  47.   sosclose;
  48.   res:=1;
  49.   menuitem[1]:='Standard';
  50.   menuitem[2]:='Description';
  51.   menuitem[3]:='1';
  52.   menuitem[4]:='2';
  53.   menuitem[5]:='3';
  54.   menuitem[6]:='4';
  55.   menuitem[7]:='5';
  56.   menuitem[8]:='6';
  57.   menuitem[9]:='7';
  58.   menuitem[10]:='8';
  59.   menuitem[11]:='9';
  60.   menuitem[12]:='0';
  61.   menuitem[13]:='C11';
  62.   menuitem[14]:='C12';
  63.   menuitem[15]:='*';
  64.   menuitem[16]:='#';
  65.   menuitem[17]:='KP1';
  66.   menuitem[18]:='KP2';
  67.   menuitem[19]:='ST';
  68.   menuitem[20]:='KP2E';
  69.   menuitem[21]:='STE';
  70.   menuitem[22]:='EO';
  71.   menucount:=22;
  72.   openbox(1,18,2,80,25,false,true,false);
  73.   textattr:=colors.win_text_high;
  74.   gotoxy(23,25); write('Freq1');
  75.   gotoxy(31,25); write('Freq2');
  76.   gotoxy(39,25); write('Freq3');
  77.   gotoxy(48,25); write('Mark');
  78.   gotoxy(55,25); write('Space');
  79.   textattr:=colors.win_text;
  80.   repeat
  81.     gotoxy(1,1);
  82.     textattr:=colors.titlebox_high;
  83.     write(' Editing Dial Set: ',workset.standard);
  84.     clreol;
  85.     textattr:=colors.win_text;
  86.     gotoxy(24,3); write(workset.standard);
  87.     gotoxy(24,4); write(workset.description);
  88.     for x:=1 to 9 do showtone(workset.tone[x],x+4);
  89.     showtone(workset.tone[0],14);
  90.     showtone(workset.c11,15);
  91.     showtone(workset.c12,16);
  92.     showtone(workset.stern,17);
  93.     showtone(workset.raute,18);
  94.     showtone(workset.kp1,19);
  95.     showtone(workset.kp2,20);
  96.     showtone(workset.st,21);
  97.     showtone(workset.kp2e,22);
  98.     showtone(workset.ste,23);
  99.     showtone(workset.eo,24);
  100.     res:=menu(1,2,res,false,false,false,false,true);
  101.     case res of
  102.       1 :begin
  103.            gotoxy(24,3);
  104.            setcursorsize($6,$7);
  105.            edit(workset.standard,8);
  106.            setcursorsize($32,$32);
  107.          end;
  108.       2 :begin
  109.            gotoxy(24,4);
  110.            setcursorsize($6,$7);
  111.            edit(workset.description,55);
  112.            setcursorsize($32,$32);
  113.          end;
  114.       3 :edittone(workset.tone[1],5);
  115.       4 :edittone(workset.tone[2],6);
  116.       5 :edittone(workset.tone[3],7);
  117.       6 :edittone(workset.tone[4],8);
  118.       7 :edittone(workset.tone[5],9);
  119.       8 :edittone(workset.tone[6],10);
  120.       9 :edittone(workset.tone[7],11);
  121.      10 :edittone(workset.tone[8],12);
  122.      11 :edittone(workset.tone[9],13);
  123.      12 :edittone(workset.tone[0],14);
  124.      13 :edittone(workset.c11,15);
  125.      14 :edittone(workset.c12,16);
  126.      15 :edittone(workset.stern,17);
  127.      16 :edittone(workset.raute,18);
  128.      17 :edittone(workset.kp1,19);
  129.      18 :edittone(workset.kp2,20);
  130.      19 :edittone(workset.st,21);
  131.      20 :edittone(workset.kp2e,22);
  132.      21 :edittone(workset.ste,23);
  133.      22 :edittone(workset.eo,24);
  134.     end;
  135.   until res=0;
  136.   closebox(1);
  137.   sosopen;
  138.   sosfopen(dsfilename);
  139.   sosseek(sizeof(dialsettype)*(setnr-1));
  140.   soswrite(@workset,sizeof(workset));
  141.   sosclose;
  142. end;
  143. begin
  144.   move(mem[vadr:0],save,4000);
  145.   res:=config.curdset;
  146.   repeat
  147.     sosopen;
  148.     sosfopen(dsfilename);
  149.     for x:=1 to maxdialsets do begin
  150.       sosread(@dset,sizeof(dset));
  151.       menuitem[x]:=dset.standard;
  152.       menuinfo[x]:=dset.description;
  153.     end;
  154.     sosclose;
  155.     menucount:=maxdialsets;
  156.     res:=menu(1,4,res,false,false,true,false,true);
  157.     if res<>0 then editset(res);
  158.   until res=0;
  159.   move(save,mem[vadr:0],4000);
  160. end;
  161.  
  162. procedure edittrunks;
  163. var worktrunk :trunktype;
  164.     save      :array[1..4000] of byte;
  165.     res       :byte;
  166. procedure edittrunk(trunknr:byte);
  167. var worktrunk:trunktype;
  168.     res      :byte;
  169. procedure edittone(tonenr:byte);
  170. begin
  171.   setcursorsize($6,$7);
  172.   with worktrunk.tone[tonenr] do begin
  173.     gotoxy(39,10+tonenr); editword(one); gotoxy(39,10+tonenr); write(one:4);
  174.     gotoxy(47,10+tonenr); editword(two); gotoxy(47,10+tonenr); write(two:4);
  175.     gotoxy(56,10+tonenr); editword(three); gotoxy(56,10+tonenr); write(three:4);
  176.     gotoxy(65,10+tonenr); editword(len); gotoxy(65,10+tonenr); write(len:4);
  177.   end;
  178.   gotoxy(72,10+tonenr); editword(worktrunk.pause[tonenr]);
  179.   gotoxy(72,10+tonenr); write(worktrunk.pause[tonenr]:4);
  180.   setcursorsize($32,$32);
  181. end;
  182.  
  183. begin
  184.   res:=1;
  185.   sosopen;
  186.   sosfopen(trunkfilename);
  187.   sosseek(sizeof(trunktype)*(trunknr-1));
  188.   sosread(@worktrunk,sizeof(worktrunk));
  189.   sosclose;
  190.   menuitem[1]:='Name';
  191.   menuitem[2]:='Description';
  192.   menuitem[3]:='Tone #01';
  193.   menuitem[4]:='Tone #02';
  194.   menuitem[5]:='Tone #03';
  195.   menuitem[6]:='Tone #04';
  196.   menuitem[7]:='Tone #05';
  197.   menuitem[8]:='Tone #06';
  198.   menuitem[9]:='Tone #07';
  199.   menuitem[10]:='Tone #08';
  200.   menuitem[11]:='Tone #09';
  201.   menuitem[12]:='Tone #10';
  202.   menuitem[13]:='Play trunk';
  203.   menuinfo[1]:='Edit trunk''s name';
  204.   menuinfo[2]:='Edit trunk''s description, or a short note';
  205.   menuinfo[3]:='Edit 1st tone';
  206.   menuinfo[4]:='Edit 2nd tone';
  207.   menuinfo[5]:='Edit 3rd tone';
  208.   menuinfo[6]:='Edit 4th tone';
  209.   menuinfo[7]:='Edit 5th tone';
  210.   menuinfo[8]:='Edit 6th tone';
  211.   menuinfo[9]:='Edit 7th tone';
  212.   menuinfo[10]:='Edit 8th tone';
  213.   menuinfo[11]:='Edit 9th tone';
  214.   menuinfo[12]:='Edit 10th tone';
  215.   menuinfo[13]:='Play trunk for testing purposes, or just to get the "sound of boxing" :)';
  216.   menucount:=13;
  217.   openbox(5,35,8,77,22,true,true,false);
  218.   textattr:=colors.win_text_high;
  219.   gotoxy(38,22); write('Freq1');
  220.   gotoxy(46,22); write('Freq2');
  221.   gotoxy(55,22); write('Freq3');
  222.   gotoxy(64,22); write('Length');
  223.   gotoxy(72,22); write('Pause');
  224.   textattr:=colors.win_text;
  225.   gotoxy(39,9);  write(worktrunk.name);
  226.   gotoxy(39,10); write(worktrunk.description);
  227.   for x:=1 to 10 do begin
  228.     gotoxy(39,x+10);
  229.     with worktrunk.tone[x] do write(one:4,'    ',two:4,'     ',three:4,'     ',len:4,'   ',worktrunk.pause[x]:4);
  230.   end;
  231.   repeat
  232.     res:=menu(18,8,res,false,false,true,false,true);
  233.     case res of
  234.       1:begin
  235.           gotoxy(39,9);
  236.           setcursorsize($6,$7);
  237.           edit(worktrunk.name,8);
  238.           setcursorsize($32,$32);
  239.         end;
  240.       2:begin
  241.           gotoxy(39,10);
  242.           setcursorsize($6,$7);
  243.           edit(worktrunk.description,30);
  244.           setcursorsize($32,$32);
  245.         end;
  246.       3..12:edittone(res-2);
  247.       13:begin
  248.            gotoxy(39,21);
  249.            write('                               ');
  250.            gotoxy(39,21);
  251.            playtrunk(worktrunk,false);
  252.          end;
  253.       end;
  254.       if res<>0 then if res=13 then res:=1 else inc(res);
  255.   until res=0;
  256.   closebox(5);
  257.   sosopen;
  258.   sosfopen(trunkfilename);
  259.   sosseek(sizeof(trunktype)*(trunknr-1));
  260.   soswrite(@worktrunk,sizeof(worktrunk));
  261.   sosclose;
  262. end;
  263. begin
  264.   move(mem[vadr:0],save,4000);
  265.   res:=config.curtrunk;
  266.   repeat
  267.     sosopen;
  268.     sosfopen(trunkfilename);
  269.     for x:=1 to maxtrunks do begin
  270.       sosread(@worktrunk,sizeof(worktrunk));
  271.       menuitem[x]:=worktrunk.name;
  272.       menuinfo[x]:=worktrunk.description;
  273.     end;
  274.     sosclose;
  275.     menucount:=maxtrunks;
  276.     res:=menu(1,4,res,true,false,true,false,true);
  277.     if res<>0 then edittrunk(res);
  278.   until res=0;
  279.   move(save,mem[vadr:0],4000);
  280. end;
  281.  
  282. procedure editredbox;
  283. var choice:byte;
  284. begin
  285.   choice:=1;
  286.   menuitem[1]:='ACTS';
  287.   menuitem[2]:='IPTS';
  288.   menuitem[3]:='Non-ACTS';
  289.   menuinfo[1]:='Edit ACTS Coin Signalling Frequencies';
  290.   menuinfo[2]:='Edit IPTS Coin Signalling Frequencies';
  291.   menuinfo[3]:='Edit Non-ACTS Coin Signalling Frequencies';
  292.   menucount:=3;
  293.   openbox(2,15,4,30,8,true,true,false);
  294.   repeat
  295.     textattr:=colors.win_text;
  296.     gotoxy(18,5); write(curredbox.acts1:4);
  297.     gotoxy(25,5); write(curredbox.acts2:4);
  298.     gotoxy(18,6); write(curredbox.ipts1:4);
  299.     gotoxy(25,6); write(curredbox.ipts2:4);
  300.     gotoxy(18,7); write(curredbox.nonacts:4);
  301.     choice:=menu(1,4,choice,false,false,true,false,true);
  302.     case choice of
  303.       1:begin
  304.           setcursorsize($6,$7);
  305.           gotoxy(18,5); editword(curredbox.acts1);
  306.           gotoxy(18,5); write(curredbox.acts1:4);
  307.           gotoxy(25,5); editword(curredbox.acts2);
  308.           gotoxy(25,5); write(curredbox.acts2:4);
  309.           setcursorsize($32,$32);
  310.         end;
  311.       2:begin
  312.           setcursorsize($6,$7);
  313.           gotoxy(18,6); editword(curredbox.ipts1);
  314.           gotoxy(18,6); write(curredbox.ipts1:4);
  315.           gotoxy(25,6); editword(curredbox.ipts2);
  316.           gotoxy(25,6); write(curredbox.ipts2:4);
  317.           setcursorsize($32,$32);
  318.         end;
  319.       3:begin
  320.           setcursorsize($6,$7);
  321.           gotoxy(18,7); editword(curredbox.nonacts);
  322.           gotoxy(18,7); write(curredbox.nonacts:4);
  323.           setcursorsize($32,$32);
  324.         end;
  325.       end;
  326.   until choice=0;
  327.   closebox(2);
  328.   sosopen;
  329.   sosfopen(redboxfilename);
  330.   soswrite(@curredbox,sizeof(curredbox));
  331.   sosclose;
  332. end;
  333.  
  334. procedure passprotect;
  335. var s,s2:string;
  336. begin
  337.   openbox(1,10,5,70,11,true,true,false);
  338.   textattr:=colors.win_title;
  339.   center(5,'Password Protection');
  340.   gotoxy(15,7);
  341.   textattr:=colors.win_text;
  342.   if config.password<>'' then begin
  343.     write('Old password: ');
  344.     s:='';
  345.     bottominfo('Enter the old (current) password for BlueBEEP!');
  346.     setcursorsize($6,$7); editpass(s,20); setcursorsize($32,$32);
  347.     if s<>config.password then begin
  348.       sound(200); delayms(2000); nosound;
  349.       closebox(1);
  350.       exit;
  351.     end;
  352.   end else writeln('Old password: <NONE>');
  353.   gotoxy(15,8);
  354.   write('New password: ');
  355.   s:='';
  356.   bottominfo('Enter the new password for BlueBEEP! or press <ENTER> for none');
  357.   setcursorsize($6,$7);
  358.   editpass(s,20);
  359.   gotoxy(16,9);
  360.   write('Enter again: ');
  361.   s2:='';
  362.   bottominfo('Re-Enter the new password or press <ENTER> for none');
  363.   editpass(s2,20);
  364.   setcursorsize($32,$32);
  365.   if s<>s2 then begin
  366.     center(11,'They dont match!');
  367.     delayms(1000);
  368.     closebox(1);
  369.     exit;
  370.   end;
  371.   config.password:=s;
  372.   closebox(1);
  373.   writeconfig;
  374. end;
  375.  
  376. procedure sbconfig;
  377. var choice:byte;
  378. begin
  379.   choice:=1;
  380.   menuitem[1]:='SoundBlaster present';
  381.   menuitem[2]:='SoundBlaster Interrupt';
  382.   menuitem[3]:='SoundBlaster Adress';
  383.   menuinfo[1]:='<RETURN> to toggle Soundblaster Presence';
  384.   menuinfo[2]:='<RETURN> to choose Sound Blaster DMA Interrupt';
  385.   menuinfo[3]:='<RETURN> to choose Sound Blaster I/O Adress';
  386.   menucount:=3;
  387.   openbox(2,29,4,67,8,true,true,false);
  388.   repeat
  389.     textattr:=colors.knob_inactive;
  390.     gotoxy(31,5); write(' Yes   No ');
  391.     gotoxy(31,6); write(' 2   3   5   7 ');
  392.     gotoxy(31,7); write(' 220   230   240   250   260   270 ');
  393.     if config.gotblaster then vmemwrite(31,5,' Yes ',colors.knob_active)
  394.       else vmemwrite(37,5,' No ',colors.knob_active);
  395.     if config.sbint=2 then vmemwrite(31,6,' 2 ',colors.knob_active);
  396.     if config.sbint=3 then vmemwrite(35,6,' 3 ',colors.knob_active);
  397.     if config.sbint=5 then vmemwrite(39,6,' 5 ',colors.knob_active);
  398.     if config.sbint=7 then vmemwrite(43,6,' 7 ',colors.knob_active);
  399.     if config.sbaddr=$220 then vmemwrite(31,7,' 220 ',colors.knob_active);
  400.     if config.sbaddr=$230 then vmemwrite(37,7,' 230 ',colors.knob_active);
  401.     if config.sbaddr=$240 then vmemwrite(43,7,' 240 ',colors.knob_active);
  402.     if config.sbaddr=$250 then vmemwrite(49,7,' 250 ',colors.knob_active);
  403.     if config.sbaddr=$260 then vmemwrite(55,7,' 260 ',colors.knob_active);
  404.     if config.sbaddr=$270 then vmemwrite(61,7,' 270 ',colors.knob_active);
  405.     choice:=menu(1,4,choice,false,false,true,false,true);
  406.     case choice of
  407.       1:config.gotblaster:=not(config.gotblaster);
  408.       2:case config.sbint of
  409.           2 :config.sbint:=3;
  410.           3 :config.sbint:=5;
  411.           5 :config.sbint:=7;
  412.           7 :config.sbint:=2;
  413.         end;
  414.       3:if config.sbaddr<$270 then inc(config.sbaddr,$10) else config.sbaddr:=$220;
  415.     end;
  416.   until choice=0;
  417.   writeconfig;
  418.   closebox(2);
  419. end;
  420.  
  421. procedure pulsedialconfig;
  422. var choice:byte;
  423. procedure modify(y:byte;var data:word);
  424. begin
  425.   setcursorsize($6,$7);
  426.   gotoxy(36,y); editword(data);
  427.   gotoxy(36,y); write(data:5);
  428.   setcursorsize($32,$32);
  429. end;
  430. begin
  431.   choice:=1;
  432.   menuitem[1]:='Dialtone Wait';
  433.   menuitem[2]:='Digit Mark Time';
  434.   menuitem[3]:='Digit Space Time';
  435.   menuitem[4]:='Inter-Digit Delay';
  436.   menuitem[5]:='I/O Port Adress';
  437.   menuitem[6]:='Hookbit Position';
  438.   menuitem[7]:='Play/Rec Bit Pos.';
  439.   menuitem[8]:='Phone Bit Pos.';
  440.   menuitem[9]:='Play/Rec Relay access time';
  441.   menuitem[10]:='Hangup Time';
  442.   menuinfo[1]:='Time to wait for dialtone after going on-hook in ms';
  443.   menuinfo[2]:='Digit Mark Time in miliseconds';
  444.   menuinfo[3]:='Digit Space Time in miliseconds';
  445.   menuinfo[4]:='Inter-Digit Delay (delay between numbers)';
  446.   menuinfo[5]:='I/O Port Adress of your BlueBEEP hardware device';
  447.   menuinfo[6]:='Which bit is the hook relay on your device (0-7)';
  448.   menuinfo[7]:='Which bit is the play/record bit on your device (0-7)';
  449.   menuinfo[8]:='Which bit is the phone enable/disable bit on your device (0-7)';
  450.   menuinfo[9]:='Play/Record Toggle Relay Access Time in milliseconds';
  451.   menuinfo[10]:='How long to hang up before redialing';
  452.   menucount:=10;
  453.   openbox(2,33,4,42,15,true,true,false);
  454.   textattr:=colors.win_text;
  455.   gotoxy(36,5); write(curpulsedial.waitfordt:5);
  456.   gotoxy(36,6); write(curpulsedial.pulse_mark:5);
  457.   gotoxy(36,7); write(curpulsedial.pulse_space:5);
  458.   gotoxy(36,8); write(curpulsedial.pulse_interdig:5);
  459.   gotoxy(36,9); write(curpulsedial.portadress:5);
  460.   gotoxy(36,10); write(curpulsedial.hookbit:5);
  461.   gotoxy(36,11); write(curpulsedial.playrecbit:5);
  462.   gotoxy(36,12); write(curpulsedial.phonebit:5);
  463.   gotoxy(36,13); write(curpulsedial.accesstime:5);
  464.   gotoxy(36,14); write(curpulsedial.hanguptime:5);
  465.   repeat
  466.     choice:=menu(1,4,choice,false,false,true,false,true);
  467.     case choice of
  468.       1:modify(5,curpulsedial.waitfordt);
  469.       2:modify(6,curpulsedial.pulse_mark);
  470.       3:modify(7,curpulsedial.pulse_space);
  471.       4:modify(8,curpulsedial.pulse_interdig);
  472.       5:modify(9,curpulsedial.portadress);
  473.       6:modify(10,curpulsedial.hookbit);
  474.       7:modify(11,curpulsedial.playrecbit);
  475.       8:modify(12,curpulsedial.phonebit);
  476.       9:modify(13,curpulsedial.accesstime);
  477.      10:modify(14,curpulsedial.hanguptime);
  478.     end;
  479.   until choice=0;
  480.   closebox(2);
  481.   pdial.waitfordt:=curpulsedial.waitfordt;
  482.   pdial.pulse_mark:=curpulsedial.pulse_mark;
  483.   pdial.pulse_space:=curpulsedial.pulse_space;
  484.   pdial.pulse_interdig:=curpulsedial.pulse_interdig;
  485.   pdial.portadress:=curpulsedial.portadress;
  486.   pdial.hookbit:=curpulsedial.hookbit;
  487.   pdial.playrecbit:=curpulsedial.playrecbit;
  488.   pdial.phonebit:=curpulsedial.phonebit;
  489.   sosopen;
  490.   sosfopen(pulsedialfilename);
  491.   soswrite(@curpulsedial,sizeof(curpulsedial));
  492.   sosclose;
  493. end;
  494.  
  495. procedure colorconfig;
  496. var choice:byte;
  497. begin
  498.   choice:=1;
  499.   menuitem[1]:='Gringo Green';
  500.   menuitem[2]:='Bastard Blue';
  501.   menuitem[3]:='Rushing Red';
  502.   menuitem[4]:='Magenta Madness';
  503.   menuitem[5]:='Lord Disembowelment';
  504.   menuitem[6]:='Black & White';
  505.   menuinfo[1]:='Select "Gringo Green" color set (default) - Old Fashioned!';
  506.   menuinfo[2]:='Select "Bastard Blue" color set - Sea of Love';
  507.   menuinfo[3]:='Select "Rushing Red" color set - for the satanic friends';
  508.   menuinfo[4]:='Select "Magenta Madness" color set - looks pretty cool..';
  509.   menuinfo[5]:='Select the "Lord Disemboweltment" color set... Heh Heh Heh..';
  510.   menuinfo[6]:='Select the Black & White color settings, if you have a mono screen';
  511.   menucount:=6;
  512.   repeat
  513.     choice:=menu(1,4,choice,true,true,true,false,true);
  514.     case choice of
  515.       1:with colors do begin
  516.           normal               := green;
  517.           high                 := lightgreen;
  518.           high2                := yellow;
  519.           super_high           := white;
  520.           dark                 := darkgray;
  521.           error                := white;
  522.           error_reverse        := red*16+white;
  523.           reverse              := green*16+white;
  524.           reverse_high         := green*16+yellow;
  525.           special              := cyan;
  526.           special_high         := lightcyan;
  527.           special_dark         := darkgray;
  528.           special_reverse      := cyan*16+white;
  529.           special_reverse_high := cyan*16+yellow;
  530.           status               := green*16+white;
  531.           status_high          := green*16+yellow;
  532.           win_border_1         := white;
  533.           win_border_2         := lightgreen;
  534.           win_border_3         := green;
  535.           win_text             := lightgreen;
  536.           win_text_high        := yellow;
  537.           win_hilight          := green*16+white;
  538.           win_hilight_high     := green*16+yellow;
  539.           win_item             := yellow;
  540.           win_arrows           := green*16+lightgreen;
  541.           win_fill             := cyan;
  542.           win_error            := lightred;
  543.           win_title            := yellow;
  544.           win_background       := black;
  545.           knob_active          := green*16+white;
  546.           knob_inactive        := lightgreen;
  547.           shadow               := darkgray;
  548.           help_normal          := blue*16+white;
  549.           help_high            := blue*16+yellow;
  550.           help_border_1        := blue*16+lightblue;
  551.           help_border_2        := blue*16+lightblue;
  552.           help_border_3        := blue*16+lightblue;
  553.           help_title           := blue*16+lightred;
  554.           help_index           := cyan*16+black;
  555.           help_selected_index  := cyan*16+white;
  556.           inputfield           := cyan*16+white;
  557.           infoline             := green*16+white;
  558.           infoline_high        := green*16+yellow;
  559.           progressbar          := blue*16+white;
  560.           keypad_pressed       := green*16+white;
  561.           keypad_released      := lightgreen;
  562.           titlebox             := green*16;
  563.           titlebox_border      := green*16+lightgreen;
  564.           titlebox_high        := green*16+white;
  565.           titlebox_inverse     := lightgreen;
  566.           titlebox_title       := green*16+yellow;
  567.           worldtime_ahead      := yellow;
  568.           startup;
  569.         end;
  570.       2:with colors do begin
  571.           normal               := blue;
  572.           high                 := lightblue;
  573.           high2                := white;
  574.           super_high           := white;
  575.           dark                 := darkgray;
  576.           error                := white;
  577.           error_reverse        := red*16+white;
  578.           reverse              := blue*16+white;
  579.           reverse_high         := blue*16+yellow;
  580.           special              := cyan;
  581.           special_high         := lightcyan;
  582.           special_dark         := darkgray;
  583.           special_reverse      := cyan*16+white;
  584.           special_reverse_high := cyan*16+yellow;
  585.           status               := blue*16+white;
  586.           status_high          := blue*16+yellow;
  587.           win_border_1         := lightcyan;
  588.           win_border_2         := lightblue;
  589.           win_border_3         := blue;
  590.           win_text             := lightblue;
  591.           win_text_high        := lightcyan;
  592.           win_hilight          := blue*16+white;
  593.           win_hilight_high     := blue*16+yellow;
  594.           win_item             := lightcyan;
  595.           win_arrows           := blue*16+lightblue;
  596.           win_fill             := blue;
  597.           win_error            := lightred;
  598.           win_title            := lightcyan;
  599.           win_background       := black;
  600.           knob_active          := blue*16+white;
  601.           knob_inactive        := lightblue;
  602.           shadow               := darkgray;
  603.           help_normal          := blue*16+white;
  604.           help_high            := blue*16+yellow;
  605.           help_border_1        := blue*16+lightblue;
  606.           help_border_2        := blue*16+lightblue;
  607.           help_border_3        := blue*16+lightblue;
  608.           help_title           := blue*16+lightred;
  609.           help_index           := cyan*16+black;
  610.           help_selected_index  := cyan*16+white;
  611.           inputfield           := cyan*16+white;
  612.           infoline             := blue*16+white;
  613.           infoline_high        := blue*16+yellow;
  614.           progressbar          := blue*16+white;
  615.           keypad_pressed       := blue*16+white;
  616.           keypad_released      := lightcyan;
  617.           titlebox             := blue*16;
  618.           titlebox_border      := blue*16+lightblue;
  619.           titlebox_high        := blue*16+white;
  620.           titlebox_inverse     := lightblue;
  621.           titlebox_title       := blue*16+yellow;
  622.           worldtime_ahead      := yellow;
  623.           startup;
  624.         end;
  625.       3:with colors do begin
  626.           normal               := red;
  627.           high                 := lightred;
  628.           high2                := white;
  629.           super_high           := white;
  630.           dark                 := darkgray;
  631.           error                := white;
  632.           error_reverse        := red*16+white;
  633.           reverse              := red*16+white;
  634.           reverse_high         := red*16+yellow;
  635.           special              := cyan;
  636.           special_high         := lightcyan;
  637.           special_dark         := darkgray;
  638.           special_reverse      := cyan*16+white;
  639.           special_reverse_high := cyan*16+yellow;
  640.           status               := red*16+white;
  641.           status_high          := red*16+yellow;
  642.           win_border_1         := white;
  643.           win_border_2         := lightred;
  644.           win_border_3         := red;
  645.           win_text             := lightred;
  646.           win_text_high        := white;
  647.           win_hilight          := red*16+white;
  648.           win_hilight_high     := red*16+yellow;
  649.           win_item             := white;
  650.           win_arrows           := red*16+lightred;
  651.           win_fill             := red;
  652.           win_error            := lightred;
  653.           win_title            := lightred;
  654.           win_background       := black;
  655.           knob_active          := red*16+white;
  656.           knob_inactive        := lightred;
  657.           shadow               := darkgray;
  658.           help_normal          := blue*16+white;
  659.           help_high            := blue*16+yellow;
  660.           help_border_1        := blue*16+lightblue;
  661.           help_border_2        := blue*16+lightblue;
  662.           help_border_3        := blue*16+lightblue;
  663.           help_title           := blue*16+lightred;
  664.           help_index           := cyan*16+black;
  665.           help_selected_index  := cyan*16+white;
  666.           inputfield           := cyan*16+white;
  667.           infoline             := red*16+white;
  668.           infoline_high        := red*16+yellow;
  669.           progressbar          := blue*16+white;
  670.           keypad_pressed       := red*16+white;
  671.           keypad_released      := lightred;
  672.           titlebox             := red*16;
  673.           titlebox_border      := red*16+lightred;
  674.           titlebox_high        := red*16+white;
  675.           titlebox_inverse     := lightred;
  676.           titlebox_title       := red*16+yellow;
  677.           worldtime_ahead      := yellow;
  678.           startup;
  679.         end;
  680.         4: with colors do begin
  681.           normal               := magenta;
  682.           high                 := lightmagenta;
  683.           high2                := white;
  684.           super_high           := white;
  685.           dark                 := darkgray;
  686.           error                := white;
  687.           error_reverse        := red*16+white;
  688.           reverse              := magenta*16+white;
  689.           reverse_high         := magenta*16+yellow;
  690.           special              := cyan;
  691.           special_high         := lightcyan;
  692.           special_dark         := darkgray;
  693.           special_reverse      := cyan*16+white;
  694.           special_reverse_high := cyan*16+yellow;
  695.           status               := magenta*16+white;
  696.           status_high          := magenta*16+yellow;
  697.           win_border_1         := white;
  698.           win_border_2         := lightmagenta;
  699.           win_border_3         := magenta;
  700.           win_text             := lightmagenta;
  701.           win_text_high        := lightcyan;
  702.           win_hilight          := magenta*16+white;
  703.           win_hilight_high     := magenta*16+yellow;
  704.           win_item             := white;
  705.           win_arrows           := magenta*16+lightmagenta;
  706.           win_fill             := blue;
  707.           win_error            := lightred;
  708.           win_title            := lightcyan;
  709.           win_background       := black;
  710.           knob_active          := magenta*16+white;
  711.           knob_inactive        := white;
  712.           shadow               := darkgray;
  713.           help_normal          := blue*16+white;
  714.           help_high            := blue*16+yellow;
  715.           help_border_1        := blue*16+lightblue;
  716.           help_border_2        := blue*16+lightblue;
  717.           help_border_3        := blue*16+lightblue;
  718.           help_title           := blue*16+lightred;
  719.           help_index           := cyan*16+black;
  720.           help_selected_index  := cyan*16+white;
  721.           inputfield           := cyan*16+white;
  722.           infoline             := magenta*16+white;
  723.           infoline_high        := magenta*16+yellow;
  724.           progressbar          := magenta*16+white;
  725.           keypad_pressed       := magenta*16+white;
  726.           keypad_released      := lightcyan;
  727.           titlebox             := magenta*16;
  728.           titlebox_border      := magenta*16+lightmagenta;
  729.           titlebox_high        := magenta*16+white;
  730.           titlebox_inverse     := lightblue;
  731.           titlebox_title       := magenta*16+yellow;
  732.           worldtime_ahead      := yellow;
  733.           startup;
  734.         end;
  735.         5: with colors do begin
  736.           normal               := black;
  737.           high                 := black;
  738.           high2                := black;
  739.           super_high           := black;
  740.           dark                 := black;
  741.           error                := black;
  742.           error_reverse        := black;
  743.           reverse              := black;
  744.           reverse_high         := black;
  745.           special              := black;
  746.           special_high         := black;
  747.           special_dark         := black;
  748.           special_reverse      := black;
  749.           special_reverse_high := black;
  750.           status               := black;
  751.           status_high          := black;
  752.           win_border_1         := black;
  753.           win_border_2         := black;
  754.           win_border_3         := black;
  755.           win_text             := black;
  756.           win_text_high        := black;
  757.           win_hilight          := black;
  758.           win_hilight_high     := black;
  759.           win_item             := black;
  760.           win_arrows           := black;
  761.           win_fill             := black;
  762.           win_error            := black;
  763.           win_title            := black;
  764.           win_background       := black;
  765.           knob_active          := black;
  766.           knob_inactive        := black;
  767.           shadow               := black;
  768.           help_normal          := black;
  769.           help_high            := black;
  770.           help_border_1        := black;
  771.           help_border_2        := black;
  772.           help_border_3        := black;
  773.           help_title           := black;
  774.           help_index           := black;
  775.           help_selected_index  := black;
  776.           inputfield           := black;
  777.           infoline             := black;
  778.           infoline_high        := black;
  779.           progressbar          := black;
  780.           keypad_pressed       := black;
  781.           keypad_released      := black;
  782.           titlebox             := black;
  783.           titlebox_border      := black;
  784.           titlebox_high        := black;
  785.           titlebox_inverse     := black;
  786.           titlebox_title       := black;
  787.           worldtime_ahead      := black;
  788.           startup;
  789.         end;
  790.         6: with colors do begin
  791.           normal               := lightgray;
  792.           high                 := white;
  793.           high2                := white;
  794.           super_high           := white;
  795.           dark                 := darkgray;
  796.           error                := white;
  797.           error_reverse        := white*16+black-blink;
  798.           reverse              := white*16+black-blink;
  799.           reverse_high         := white*16+black-blink;
  800.           special              := lightgray;
  801.           special_high         := white;
  802.           special_dark         := darkgray;
  803.           special_reverse      := white*16+black-blink;
  804.           special_reverse_high := white*16+black-blink;
  805.           status               := white*16+black-blink;
  806.           status_high          := white*16+black-blink;
  807.           win_border_1         := lightgray;
  808.           win_border_2         := lightgray;
  809.           win_border_3         := lightgray;
  810.           win_text             := white*16+black-blink;
  811.           win_text_high        := white*16+white-blink;
  812.           win_hilight          := white*16+black-blink;
  813.           win_hilight_high     := white*16+white-blink;
  814.           win_item             := white;
  815.           win_arrows           := white*16+white-blink;
  816.           win_fill             := lightgray;
  817.           win_error            := white;
  818.           win_title            := white*16+white-blink;
  819.           win_background       := white*16;
  820.           knob_active          := white*16+black-blink;
  821.           knob_inactive        := white;
  822.           shadow               := darkgray;
  823.           help_normal          := lightgray;
  824.           help_high            := white;
  825.           help_border_1        := lightgray;
  826.           help_border_2        := lightgray;
  827.           help_border_3        := lightgray;
  828.           help_title           := white;
  829.           help_index           := white*16+black-blink;
  830.           help_selected_index  := white*16+white-blink;
  831.           inputfield           := white*16+black-blink;
  832.           infoline             := white*16+black-blink;
  833.           infoline_high        := white*16+white-blink;
  834.           progressbar          := white*16+black-blink;
  835.           keypad_pressed       := white*16+black-blink;
  836.           keypad_released      := white;
  837.           titlebox             := white*16+black-blink;
  838.           titlebox_border      := white*16+white-blink;
  839.           titlebox_high        := white*16+white-blink;
  840.           titlebox_inverse     := white;
  841.           titlebox_title       := white*16+white-blink;
  842.           worldtime_ahead      := white;
  843.           startup;
  844.         end;
  845.     end;
  846.   until choice=0;
  847.   sosopen;
  848.   sosfopen(colorfilename);
  849.   soswrite(@colors,sizeof(colors));
  850.   sosclose;
  851. end;
  852.  
  853. procedure cardcheckerconfig;
  854. begin end; { this got destroyed in the big winter 1993 crash.
  855.              i am too lazy to write a new setup at this point -
  856.              follow the other examples and write one for yourself.
  857.              the card checker is an obsolete feature now, anyway.
  858.                                - od 03/20/95 }
  859.  
  860. procedure modemconfig;
  861. var choice :byte;
  862. begin
  863.   openbox(2,21,4,64,13,true,true,false);
  864.   menuitem[1]:='Modem present';
  865.   menuitem[2]:='Modem COM port';
  866.   menuitem[3]:='Modem speed';
  867.   menuitem[4]:='Phone System';
  868.   menuitem[5]:='Init String';
  869.   menuitem[6]:='Data Bits';
  870.   menuitem[7]:='Parity';
  871.   menuitem[8]:='Stop Bits';
  872.   menuinfo[1]:='Modem presence, should BlueBEEP use it or not';
  873.   menuinfo[2]:='Modem COM port';
  874.   menuinfo[3]:='Modem speed';
  875.   menuinfo[4]:='Phone System, either rotary (analog) or touch tone (DTMF digital switch)';
  876.   menuinfo[5]:='Initialization string; blank=only reset port, "|" = cr, "~" = pause';
  877.   menuinfo[6]:='Data Bits';
  878.   menuinfo[7]:='Parity';
  879.   menuinfo[8]:='Stop Bits';
  880.   menucount:=8;
  881.   choice:=1;
  882.   gotoxy(24,6); write(config.modemport:4);
  883.   gotoxy(24,7); write(config.modemspeed:5);
  884.   gotoxy(24,9); write(config.modeminit);
  885.   repeat
  886.     if config.modem then begin
  887.       vmemwrite(24,5,' Yes ',colors.knob_active);
  888.       vmemwrite(30,5,' No ',colors.knob_inactive);
  889.     end else begin
  890.       vmemwrite(24,5,' Yes ',colors.knob_inactive);
  891.       vmemwrite(30,5,' No ',colors.knob_active);
  892.     end;
  893.     if config.phonesystem then begin
  894.       vmemwrite(24,8,' Touch-Tone ',colors.knob_active);
  895.       vmemwrite(37,8,' Rotary ',colors.knob_inactive);
  896.     end else begin
  897.       vmemwrite(24,8,' Touch-Tone ',colors.knob_inactive);
  898.       vmemwrite(37,8,' Rotary ',colors.knob_active);
  899.     end;
  900.     if config.modemdatabits=7 then begin
  901.       vmemwrite(24,10,' 7 ',colors.knob_active);
  902.       vmemwrite(28,10,' 8 ',colors.knob_inactive);
  903.     end else begin
  904.       vmemwrite(24,10,' 7 ',colors.knob_inactive);
  905.       vmemwrite(28,10,' 8 ',colors.knob_active);
  906.     end;
  907.     gotoxy(24,11);write(' None   Even   Odd   Zero   One ');
  908.     textattr:=colors.win_text;
  909.     case config.modemparity of
  910.       0 :vmemwrite(24,11,' None ',colors.knob_active);
  911.       1 :vmemwrite(31,11,' Even ',colors.knob_active);
  912.       2 :vmemwrite(38,11,' Odd ',colors.knob_active);
  913.       3 :vmemwrite(44,11,' Zero ',colors.knob_active);
  914.       4 :vmemwrite(51,11,' One ',colors.knob_active);
  915.     end;
  916.     vmemwrite(24,12,' 1 ',colors.knob_active);
  917.     choice:=menu(1,4,choice,false,false,true,false,true);
  918.     case choice of
  919.       1:begin
  920.           config.modem:=not(config.modem);
  921.         end;
  922.       2:begin
  923.           setcursorsize($6,$7);
  924.           gotoxy(24,6); editword(config.modemport);
  925.           gotoxy(24,6); write(config.modemport:4);
  926.           setcursorsize($32,$32);
  927.         end;
  928.       3:begin
  929.           setcursorsize($6,$7);
  930.           gotoxy(24,7); editword(config.modemspeed);
  931.           gotoxy(24,7); write(config.modemspeed:5);
  932.           setcursorsize($32,$32);
  933.         end;
  934.       4:begin
  935.           config.phonesystem:=not(config.phonesystem);
  936.         end;
  937.       5:begin;
  938.           setcursorsize($6,$7);
  939.           gotoxy(24,9); edit(config.modeminit,40);
  940.           gotoxy(24,9); write(config.modeminit);
  941.           setcursorsize($32,$32);
  942.         end;
  943.       6:begin
  944.           if config.modemdatabits=7 then config.modemdatabits:=8 else
  945.             config.modemdatabits:=7;
  946.         end;
  947.       7:begin
  948.           if config.modemparity=4 then config.modemparity:=0
  949.             else inc(config.modemparity);
  950.         end;
  951.       end;
  952.   until choice=0;
  953.   writeconfig;
  954.   closebox(2);
  955. end;
  956.  
  957. procedure dtlconfig;
  958. var workrec :dtltype;
  959.     res     :byte;
  960.  
  961. procedure editdtl(nr:byte);
  962. var choice    :byte;
  963.     workrec   :dtltype;
  964. begin
  965.   sosopen;
  966.   sosfopen(dtlfilename);
  967.   sosseek(sizeof(dtltype)*(nr-1));
  968.   sosread(@workrec,sizeof(workrec));
  969.   sosclose;
  970.   choice:=1;
  971.   menuitem[1]:='Entry Name';
  972.   menuitem[2]:='Entry Note';
  973.   menuitem[3]:='Local Xlation';
  974.   menuitem[4]:='Global Xlation';
  975.   menuitem[5]:='Special Xlation';
  976.   menuitem[6]:='AutoLocal CC';
  977.   menuinfo[1]:='You may enter any name for this trunk';
  978.   menuinfo[2]:='Use this field for any notes if required';
  979.   menuinfo[3]:='Edit translation for local, unprefixed calls';
  980.   menuinfo[4]:='Edit translation for global, "+"-prefixed calls';
  981.   menuinfo[5]:='Edit translation for special, "*"-prefixed calls';
  982.   menuinfo[6]:='Enter the country code for this xlation to be local (blank=strip none)';
  983.   menucount:=6;
  984.   openbox(2,22,4,52,11,true,true,false);
  985.   textattr:=colors.win_text;
  986.   gotoxy(24,5); write(workrec.name);
  987.   gotoxy(24,6); write(workrec.note);
  988.   gotoxy(24,7); write(workrec.local);
  989.   gotoxy(24,8); write(workrec.global);
  990.   gotoxy(24,9); write(workrec.special);
  991.   gotoxy(24,10); write(workrec.autolocal);
  992.   choice:=1;
  993.   repeat
  994.     choice:=menu(1,4,choice,false,false,true,false,true);
  995.     case choice of
  996.       1:begin
  997.           setcursorsize($6,$7);
  998.           gotoxy(24,5); edit(workrec.name,28);
  999.           setcursorsize($32,$32);
  1000.         end;
  1001.       2:begin
  1002.           setcursorsize($6,$7);
  1003.           gotoxy(24,6); edit(workrec.note,28);
  1004.           setcursorsize($32,$32);
  1005.         end;
  1006.       3:begin
  1007.           setcursorsize($6,$7);
  1008.           gotoxy(24,7); edit(workrec.local,28);
  1009.           setcursorsize($32,$32);
  1010.         end;
  1011.       4:begin
  1012.           setcursorsize($6,$7);
  1013.           gotoxy(24,8); edit(workrec.global,28);
  1014.           setcursorsize($32,$32);
  1015.         end;
  1016.       5:begin
  1017.           setcursorsize($6,$7);
  1018.           gotoxy(24,9); edit(workrec.special,28);
  1019.           setcursorsize($32,$32);
  1020.         end;
  1021.       6:begin
  1022.           setcursorsize($6,$7);
  1023.           gotoxy(24,10); edit(workrec.autolocal,3);
  1024.           setcursorsize($32,$32);
  1025.         end;
  1026.       end;
  1027.   until choice=0;
  1028.   closebox(2);
  1029.   sosopen;
  1030.   sosfopen(dtlfilename);
  1031.   sosseek(sizeof(dtltype)*(nr-1));
  1032.   soswrite(@workrec,sizeof(workrec));
  1033.   sosclose;
  1034. end;
  1035.  
  1036. begin
  1037.   move(mem[vadr:0],save,4000);
  1038.   res:=config.activedtl;
  1039.   repeat
  1040.     sosopen;
  1041.     sosfopen(dtlfilename);
  1042.     for x:=1 to maxdtlsets do begin
  1043.       sosread(@workrec,sizeof(workrec));
  1044.       menuitem[x]:=workrec.name;
  1045.       menuinfo[x]:=workrec.note;
  1046.     end;
  1047.     sosclose;
  1048.     menucount:=maxdtlsets;
  1049.     res:=menu(1,4,res,true,false,true,false,true);
  1050.     if res<>0 then editdtl(res);
  1051.   until res=0;
  1052.   move(save,mem[vadr:0],4000);
  1053. end;
  1054.  
  1055. procedure otherconfig;
  1056. var choice:byte;
  1057. begin
  1058.   choice:=1;
  1059.   menuitem[1]:='Flip Keypad';
  1060.   menuitem[2]:='Touchy Pad';
  1061.   menuitem[3]:='Comma Delay';
  1062.   menuitem[4]:='Time Zone';
  1063.   menuinfo[1]:='Flip the touch tone keypad in Action Mode upside down';
  1064.   menuinfo[2]:='Have the tones pressed while the key is pressed, like a phone keypad';
  1065.   menuinfo[3]:='How long BlueBEEP should delay if it finds a comma in a dialing string';
  1066.   menuinfo[4]:='Difference to Central European time, e.g. NY = 6, LA = 9, Sydney = -10';
  1067.   menucount:=4;
  1068.   openbox(2,18,4,31,9,true,true,false);
  1069.   gotoxy(20,7); write(config.commaperiod:5);
  1070.   gotoxy(20,8); write(config.cetdiff:5);
  1071.   repeat
  1072.     textattr:=colors.high;
  1073.     gotoxy(20,5); writevisbool(config.flipkeypad,'Yes','No');
  1074.     gotoxy(20,6); writevisbool(config.touchpad,'Yes','No');
  1075.     choice:=menu(1,4,choice,false,false,true,false,true);
  1076.     case choice of
  1077.       1:config.flipkeypad:=not(config.flipkeypad);
  1078.       2:config.touchpad:=not(config.touchpad);
  1079.       3:begin
  1080.           setcursorsize($6,$7);
  1081.           gotoxy(20,7); editword(config.commaperiod);
  1082.           gotoxy(20,7); write(config.commaperiod:5);
  1083.           setcursorsize($32,$32);
  1084.         end;
  1085.       4:begin
  1086.           setcursorsize($6,$7);
  1087.           gotoxy(20,8); editint(config.cetdiff);
  1088.           gotoxy(20,8); write(config.cetdiff:5);
  1089.           setcursorsize($32,$32);
  1090.         end;
  1091.     end;
  1092.   until choice=0;
  1093.   writeconfig;
  1094.   closebox(2);
  1095. end;
  1096.  
  1097. begin
  1098.   choice:=1;
  1099.   repeat
  1100.     menuitem[1]:='Edit Dial Sets';
  1101.     menuitem[2]:='Edit Trunks';
  1102.     menuitem[3]:='Edit Red Box';
  1103.     menuitem[4]:='Password protection';
  1104.     menuitem[5]:='Soundblaster Card';
  1105.     menuitem[6]:='Pulse Dialing';
  1106.     menuitem[7]:='Colors';
  1107.     menuitem[8]:='Card Checker';
  1108.     menuitem[9]:='Modem setup';
  1109.     menuitem[10]:='Dial Xlation';
  1110.     menuitem[11]:='Other options';
  1111.     menuinfo[1]:='Edit the frequencies of the tones used for dialing';
  1112.     menuinfo[2]:='Edit the trunk frequencies';
  1113.     menuinfo[3]:='Edit the Red Box frequencies';
  1114.     menuinfo[4]:='Password protect BlueBEEP, turn it off or change password';
  1115.     menuinfo[5]:='Soundblaster needs to be set up OK for the CardTalker';
  1116.     menuinfo[6]:='Pulse Dialing Setup via BlueBEEP hardware device';
  1117.     menuinfo[7]:='Change the colors and the way BlueBEEP looks to you';
  1118.     menuinfo[8]:='Configure the company setups for the calling card checker';
  1119.     menuinfo[9]:='Set up your modem''s hardware info, baud rate, etc.';
  1120.     menuinfo[10]:='Set up the dial translation/routing for all trunks';
  1121.     menuinfo[11]:='Other options';
  1122.     menucount:=11;
  1123.     choice:=menu(1,4,choice,true,true,true,true,true);
  1124.     case choice of
  1125.       1: editdialsets;
  1126.       2: edittrunks;
  1127.       3: editredbox;
  1128.       4: passprotect;
  1129.       5: sbconfig;
  1130.       6: pulsedialconfig;
  1131.       7: colorconfig;
  1132.       8: cardcheckerconfig;
  1133.       9: modemconfig;
  1134.      10: dtlconfig;
  1135.      11: otherconfig;
  1136.     end;
  1137.   until choice=0;
  1138. end;
  1139. end.
  1140.