home *** CD-ROM | disk | FTP | other *** search
/ HAM Radio 1 / HamRadio.cdr / cw / kamrtty / kam-set.pas < prev    next >
Pascal/Delphi Source File  |  1988-04-06  |  19KB  |  737 lines

  1. procedure yesno;
  2. begin
  3.   repeat qkey := readkey until qkey in ['y','Y','n','N'];
  4.   writeln(qkey);
  5. end;
  6.  
  7. procedure set_attributes;
  8. begin
  9.    xmt_attrib    := b_clr[0] SHL 4 + f_clr[0];
  10.    rcv_attrib    := b_clr[1] SHL 4 + f_clr[1];
  11.    status_attrib := b_clr[2] SHL 4 + f_clr[2];
  12.    prompt_attrib := b_clr[3] SHL 4 + f_clr[3];
  13.    aux_attrib    := b_clr[4] SHL 4 + f_clr[4];
  14.    help_attrib   := b_clr[5] SHL 4 + f_clr[5];
  15. end;
  16.  
  17. procedure mod_image;
  18. var i : integer;
  19. begin
  20.    set_attributes;
  21.    rcv_bottom := inp_end_line - inp_start_line + 1;
  22.    for i := 0 to 1999 do
  23.    begin
  24.       help_scr[i].a := b_clr[5] SHL 4 + f_clr[5];
  25.       qsig_scr[i].a := b_clr[5] SHL 4 + f_clr[5];
  26.       rst_scr[i].a  := b_clr[5] SHL 4 + f_clr[5];
  27.    end;
  28.    for i := 0 to 79 do image[i].a := status_attrib;
  29.    for i := 80*(out_start_line-1) to 80*out_end_line - 1 do
  30.      image[i].a := xmt_attrib;
  31.    for i := 80*(inp_start_line-1) to 80*inp_end_line - 1 do
  32.      image[i].a := rcv_attrib;
  33.    for i := 1840 to 1999 do image[i].a := aux_attrib;
  34.    lead_attr := 80*(out_start_line - 1) - 1;
  35.    if vid_type <> 7 then port[$03D9] := border;
  36. end;
  37.  
  38. procedure init_colors;
  39. begin
  40.   b_clr[0] := clr_xmt_b;   f_clr[0] := clr_xmt_f;
  41.   b_clr[1] := clr_rcv_b;   f_clr[1] := clr_rcv_f;
  42.   b_clr[2] := clr_sts_b;   f_clr[2] := clr_sts_f;
  43.   b_clr[3] := clr_prm_b;   f_clr[3] := clr_prm_f;
  44.   b_clr[4] := clr_aux_b;   f_clr[4] := clr_aux_f;
  45.   b_clr[5] := clr_hlp_b;   f_clr[5] := clr_hlp_f;
  46.   border := 0;
  47. end;
  48.  
  49. procedure load_init(file_name: file_type);
  50. var init_file : text;
  51.     dummy : string[20];
  52.     flag : integer;
  53.  
  54.   procedure read_title;
  55.   begin
  56.     read(init_file,dummy);
  57.   end;
  58.  
  59. begin
  60.   assign(init_file, file_name);
  61.   {$I-}
  62.   reset(init_file);
  63.   if (IOresult = 0) then
  64.     begin
  65.       read_title; readln(init_file,   border);
  66.       read_title; readln(init_file,   b_clr[0]);
  67.       read_title; readln(init_file,   f_clr[0]);
  68.       read_title; readln(init_file,   b_clr[1]);
  69.       read_title; readln(init_file,   f_clr[1]);
  70.       read_title; readln(init_file,   b_clr[2]);
  71.       read_title; readln(init_file,   f_clr[2]);
  72.       read_title; readln(init_file,   b_clr[3]);
  73.       read_title; readln(init_file,   f_clr[3]);
  74.       read_title; readln(init_file,   b_clr[4]);
  75.       read_title; readln(init_file,   f_clr[4]);
  76.       read_title; readln(init_file,   b_clr[5]);
  77.       read_title; readln(init_file,   f_clr[5]);
  78.       read_title; readln(init_file,   status_line);
  79.       read_title; readln(init_file,   inp_start_line);
  80.       read_title; readln(init_file,   inp_end_line);
  81.       read_title; readln(init_file,   aux_line);
  82.       read_title; readln(init_file,   out_start_line);
  83.       read_title; readln(init_file,   out_end_line);
  84.       read_title; readln(init_file,   xmt_port);
  85.       read_title; readln(init_file,   kam_baud_rate);
  86.       read_title; readln(init_file,   int_wpm);
  87.       read_title; readln(init_file,   cw_off_delay);
  88.       read_title; readln(init_file,   xmt_on_delay);
  89.       read_title; readln(init_file,   xmt_off_delay);
  90.       read_title; readln(init_file,   time_zone);
  91.       read_title; readln(init_file,   msg_file_0);
  92.       read_title; readln(init_file,   cw_log_file);
  93.       read_title; readln(init_file,   rtty_log_file);
  94.       read_title; readln(init_file,   ascii_log_file);
  95.     end
  96.     else
  97.     begin
  98.       status_line :=             17;
  99.       inp_start_line :=          1;
  100.       inp_end_line :=            16;
  101.       aux_line :=                24;
  102.       out_start_line :=          18;
  103.       out_end_line  :=           23;
  104.       xmt_port    :=             1;
  105.       kam_baud_rate   :=         1200;
  106.       int_wpm   :=               nominal_xmt_wpm;
  107.       cw_off_delay :=            2;
  108.       xmt_on_delay :=            5;
  109.       xmt_off_delay :=           50;
  110.       time_zone :=               nominal_time_zone;
  111.       msg_file_0 :=              nominal_msg_file;
  112.       cw_log_file :=             'cw.log';
  113.       rtty_log_file :=           'rtty.log';
  114.       ascii_log_file :=          'ascii.log';
  115.     end;
  116.   str(int_wpm,xmt_wpm);
  117.   close(init_file);
  118. end;
  119.  
  120. procedure load_config;
  121. var file_name : file_type;
  122.     i : integer;
  123. begin
  124.   halt_xmt;
  125.   save_screen;
  126.   aux_color;
  127.   frame(14,7,66,77);
  128.   clrscr;
  129.   get_file_name(file_name,
  130.                 1,1,'[KAM.CFG]',15,8,65,16,4);
  131.   load_init(file_name);
  132.   set_date_time;
  133.   mod_image;
  134. end;
  135.  
  136. procedure get_init;
  137. var i : integer;
  138.     imagefile : file of screen;
  139.     anykey : char;
  140. begin
  141.   init_colors;
  142.   load_init('KAM.CFG');
  143.   if (msg_file_0 <> 'NIL') then
  144.   begin
  145.     msg_file_name := msg_file_0;
  146.     msg_load;
  147.   end
  148.   else
  149.   begin
  150.     msg_file_name := '';
  151.     for i := 0 to 9 do msg[i] := '';
  152.   end;
  153.   assign(imagefile,'KAM.IMG');
  154.   {$I-}
  155.   ReSet(imagefile);
  156.   if (IOresult = 0)
  157.   then
  158.     begin
  159.       Read(imagefile, help_scr);
  160.       Read(imagefile, qsig_scr);
  161.       Read(imagefile, rst_scr);
  162.       Read(imagefile, param_scr);
  163.       Close(imagefile);
  164.       mod_image;
  165.     end
  166.   else
  167.     begin
  168.       textcolor(15);
  169.       textbackground(0);
  170.       clrscr;
  171.       writeln('File KAM.IMG must be on default disk & in default directory.');
  172.       delay (5000);
  173.       halt;
  174.     end;
  175. end;
  176.  
  177. procedure save_init;
  178. var init_file : text;
  179.     init_name : file_type;
  180.     flag : integer;
  181. begin
  182.   get_file_name(init_name,
  183.                 5,24,'[KAM.CFG]',1,1,80,25,4);
  184.   if (init_name = '') then init_name := 'KAM.CFG';
  185.   gotoxy(5,24); write('                                                     ');
  186.   gotoxy(5,24); write('Writing File ',init_name);
  187.   assign(init_file,init_name);
  188.   {$I-}
  189.   rewrite(init_file);
  190.   if (IOresult = 0) then
  191.     begin
  192.       write(init_file,'Border color .......');
  193.       writeln(init_file,border:5);
  194.       write(init_file,'Xmt background .....');
  195.       writeln(init_file,b_clr[0]:5);
  196.       write(init_file,'Xmt foreground .....');
  197.       writeln(init_file,f_clr[0]:5);
  198.       write(init_file,'Rcv background .....');
  199.       writeln(init_file,b_clr[1]:5);
  200.       write(init_file,'Rcv foreground .....');
  201.       writeln(init_file,f_clr[1]:5);
  202.       write(init_file,'Status background ..');
  203.       writeln(init_file,b_clr[2]:5);
  204.       write(init_file,'Status foreground ..');
  205.       writeln(init_file,f_clr[2]:5);
  206.       write(init_file,'Prompt background ..');
  207.       writeln(init_file,b_clr[3]:5);
  208.       write(init_file,'Prompt foreground ..');
  209.       writeln(init_file,f_clr[3]:5);
  210.       write(init_file,'Aux background .....');
  211.       writeln(init_file,b_clr[4]:5);
  212.       write(init_file,'Aux foreground .....');
  213.       writeln(init_file,f_clr[4]:5);
  214.       write(init_file,'Help background ....');
  215.       writeln(init_file,b_clr[5]:5);
  216.       write(init_file,'Help foreground ....');
  217.       writeln(init_file,f_clr[5]:5);
  218.       write(init_file,'Status_line ........');
  219.       writeln(init_file,status_line:5);
  220.       write(init_file,'Rcv_start_line .....');
  221.       writeln(init_file,inp_start_line:5);
  222.       write(init_file,'Rcv_end_line .......');
  223.       writeln(init_file,inp_end_line:5);
  224.       write(init_file,'Aux_line ...........');
  225.       writeln(init_file,aux_line:5);
  226.       write(init_file,'Xmt_start_line .....');
  227.       writeln(init_file,out_start_line:5);
  228.       write(init_file,'Xmt_end_line .......');
  229.       writeln(init_file,out_end_line:5);
  230.       write(init_file,'Transmit port ......');
  231.       writeln(init_file,xmt_port:5);
  232.       write(init_file,'Interface baud rate.');
  233.       writeln(init_file,kam_baud_rate:5);
  234.       write(init_file,'CW Xmt WPM .........');
  235.       writeln(init_file,int_wpm:5);
  236.       write(init_file,'CW turn-off delay...');
  237.       writeln(init_file,cw_off_delay:5);;
  238.       write(init_file,'Xmt turn-on delay...');
  239.       writeln(init_file,xmt_on_delay:5);
  240.       write(init_file,'Xmt turn-off delay..');
  241.       writeln(init_file,xmt_off_delay:5);
  242.       write(init_file,'Time Zone ..........');
  243.       writeln(init_file,time_zone:5);
  244.       write(init_file,'Initial msg file ...');
  245.       writeln(init_file,msg_file_0);
  246.       write(init_file,'CW Log Path/File....');
  247.       writeln(init_file,cw_log_file);
  248.       write(init_file,'RTTY Log Path/File..');
  249.       writeln(init_file,rtty_log_file);
  250.       write(init_file,'ASCII Log Path/File.');
  251.       write(init_file,ascii_log_file);
  252.     end;
  253.   close(init_file);
  254. end;
  255.  
  256. procedure set_parameters;
  257. var param : char;
  258.  
  259. { ******* INTERNAL PROCEDURES FOR SET_PARAMETERS   ******* }
  260.  
  261. procedure set_color(i:integer);
  262. var vidpos, attrbyte, n : integer;
  263. begin
  264.     case i of
  265.       0 : vidpos := 252;
  266.       1 : vidpos := 412;
  267.       2 : vidpos := 572;
  268.       3 : vidpos := 732;
  269.       4 : vidpos := 892;
  270.       5 : vidpos := 1052;
  271.     end;
  272.     attrbyte := b_clr[i] SHL 4 + f_clr[i];
  273.     for i := 0 to 8 do
  274.       case vid_type of
  275.         0 : mono_screen[vidpos + i].a := attrbyte;
  276.         1 : color_screen[vidpos + i].a := attrbyte;
  277.       end;
  278. end;
  279.  
  280. procedure set_new_color(which, clrkey : char);
  281. var clr : integer;
  282. begin
  283.   clr := ord(which)-ord('A');
  284.   case clrkey of
  285.     #72  : b_clr[clr] := (b_clr[clr] + 1) MOD 8;
  286.     #80  : begin
  287.              b_clr[clr] := b_clr[clr] - 1;
  288.              if (b_clr[clr] < 0) then b_clr[clr] := 7;
  289.            end;
  290.     #77  : f_clr[clr] := (f_clr[clr] + 1) MOD 16;
  291.     #75  : begin
  292.              f_clr[clr] := f_clr[clr] - 1;
  293.              if (f_clr[clr] < 0) then f_clr[clr] := 15;
  294.            end;
  295.   end;
  296.   set_color(clr);
  297. end;
  298.  
  299. procedure new_color(which : char);
  300. var clrkey: char;
  301. begin
  302.   write('  ',#17,' ',#16,' forgnd,  ',#30,' ',#31,' bckgnd ..');
  303.   repeat
  304.     clrkey := readkey;
  305.     if (clrkey = #0) then
  306.     begin
  307.       clrkey := readkey;
  308.       set_new_color(which,clrkey);
  309.     end;
  310.   until clrkey = #27;
  311. end;
  312.  
  313. procedure border_color;
  314. var bdrkey : char;
  315. begin
  316.   write('  ',#17,' ',#16,' change color ..');
  317.   repeat
  318.     bdrkey := readkey;
  319.     if (bdrkey = #0) then
  320.     begin
  321.       bdrkey := readkey;
  322.       case bdrkey of
  323.         #77 : border := (border + 1) AND $0F;
  324.         #75 : border := (border - 1) AND $0F;
  325.       end;
  326.       if vid_type in [2,3] then port[$03D9] := border;
  327.     end;
  328.   until bdrkey = #27;
  329. end;
  330.  
  331. procedure sho_xmt_space;
  332. begin
  333.   gotoxy(36,4); write(out_start_line:2);
  334.   gotoxy(44,4); write(out_end_line:2);
  335. end;
  336.  
  337.  
  338. procedure sho_rcv_space;
  339. begin
  340.   gotoxy(36,6); write(inp_start_line:2);
  341.   gotoxy(44,6); write(inp_end_line:2);
  342. end;
  343.  
  344. procedure sho_status_line;
  345. begin
  346.   gotoxy(36,8); write(status_line:2);
  347. end;
  348.  
  349. procedure sho_aux_line;
  350. begin
  351.   gotoxy(36,12); write(aux_line:2);
  352. end;
  353.  
  354. procedure sho_comms_port;
  355. begin
  356.   gotoxy(74,4);
  357.   case xmt_port of
  358.     1 : write('COM1');
  359.     2 : write('COM2');
  360.   end;
  361. end;
  362.  
  363. procedure sho_comms_baud_rate;
  364. begin
  365.   gotoxy(74,6);
  366.   write(kam_baud_rate:4);
  367. end;
  368.  
  369. procedure sho_CW_WPM;
  370. begin
  371.   gotoxy(74,8);
  372.   write(int_wpm : 2);
  373. end;
  374.  
  375. procedure sho_CW_off_delay;
  376. begin
  377.   gotoxy(74,10);
  378.   write(cw_off_delay : 2);
  379. end;
  380.  
  381. procedure sho_RTTY_on_delay;
  382. begin
  383.   gotoxy(74,12);
  384.   write(xmt_on_delay:2);
  385. end;
  386.  
  387. procedure sho_RTTY_off_delay;
  388. begin
  389.   gotoxy(74,14);
  390.   write(xmt_off_delay:2);
  391. end;
  392.  
  393. procedure sho_time_zone;
  394. begin
  395.   gotoxy(26,18);
  396.   write(time_zone:3);
  397. end;
  398.  
  399. procedure sho_default_msg_file;
  400. begin
  401.   gotoxy(58,18);
  402.   write(msg_file_0);
  403. end;
  404.  
  405. procedure sho_cw_log_file;
  406. begin
  407.   gotoxy(8,22);
  408.   write('                  ');
  409.   gotoxy(8,22);
  410.   write(cw_log_file);
  411. end;
  412.  
  413. procedure sho_rtty_log_file;
  414. begin
  415.   gotoxy(32,22);
  416.   write('                  ');
  417.   gotoxy(32,22);
  418.   write(rtty_log_file);
  419. end;
  420.  
  421. procedure sho_ascii_log_file;
  422. begin
  423.   gotoxy(57,22);
  424.   write('                  ');
  425.   gotoxy(57,22);
  426.   write(ascii_log_file);
  427. end;
  428.  
  429. procedure param_screen;
  430. var i : integer;
  431. begin
  432.   case vid_type of
  433.     0 : mono_screen := param_scr;
  434.     1 : color_screen := param_scr;
  435.   end;
  436.   for i := 0 to 5 do
  437.     set_color(i);
  438.   textcolor(15);
  439.   textbackground(0);
  440.   sho_xmt_space;
  441.   sho_rcv_space;
  442.   sho_status_line;
  443.   sho_aux_line;
  444.   sho_comms_port;
  445.   sho_comms_baud_rate;
  446.   sho_CW_WPM;
  447.   sho_CW_off_delay;
  448.   sho_RTTY_on_delay;
  449.   sho_RTTY_off_delay;
  450.   sho_time_zone;
  451.   sho_default_msg_file;
  452.   sho_cw_log_file;
  453.   sho_rtty_log_file;
  454.   sho_ascii_log_file;
  455. end;
  456.  
  457. procedure clear_select_line;
  458. begin
  459.   gotoxy(5,24);
  460.   Write('                                                                       ');
  461.   gotoxy(5,24);
  462. end;
  463.  
  464. function select: char;
  465. var ok : boolean;
  466. begin
  467.   clear_select_line;
  468.   write('<ESC> done ... Select Parameter...');
  469.   repeat
  470.     repeat
  471.       key := readkey;
  472.     until key in [#0,#27,'A'..'U','a'..'v'];
  473.     if keypressed
  474.     then
  475.       begin
  476.         key := readkey;
  477.         ok := FALSE;
  478.       end
  479.     else
  480.       ok := TRUE;
  481.   until ok;
  482.   if key <> #27 then write(UpCase(key));
  483.   select := UpCase(key);
  484. end;
  485.  
  486. procedure xmt_space;
  487. begin
  488.   repeat
  489.     {$I-}
  490.     clear_select_line;
  491.     write('Transmit start line : ');
  492.     read(out_start_line);
  493.   until (IOresult = 0);
  494.   sho_xmt_space;
  495.   repeat
  496.     {$I-}
  497.     clear_select_line;
  498.     write('Transmit end line : ');
  499.     read(out_end_line);
  500.   until (IOresult = 0);
  501.   sho_xmt_space;
  502. end;
  503.  
  504. procedure rcv_space;
  505. begin
  506.   repeat
  507.     {$I-}
  508.     clear_select_line;
  509.     write('Receive start line : ');
  510.     read(inp_start_line);
  511.   until (IOresult = 0);
  512.   sho_rcv_space;
  513.   repeat
  514.     {$I-}
  515.     clear_select_line;
  516.     write('Receive end line : ');
  517.     read(inp_end_line);
  518.   until (IOresult = 0);
  519.   sho_rcv_space;
  520. end;
  521.  
  522. procedure  status_space;
  523. begin
  524.   repeat
  525.     {$I-}
  526.     clear_select_line;
  527.     write('Status line : ');
  528.     read(status_line);
  529.   until (IOresult = 0);
  530.   sho_status_line;
  531. end;
  532.  
  533. procedure  aux_space;
  534. begin
  535.   repeat
  536.     {$I-}
  537.     clear_select_line;
  538.     write('Auxiliary line : ');
  539.     read(aux_line);
  540.   until (IOresult = 0);
  541.   sho_aux_line;
  542. end;
  543.  
  544. procedure set_comms_port;
  545. begin
  546.   case xmt_port of
  547.     1 : xmt_port := 2;
  548.     2 : xmt_port := 1;
  549.   end;
  550.   sho_comms_port;
  551. end;
  552.  
  553. procedure set_comms_baud_rate;
  554. begin
  555.   case kam_baud_rate of
  556.     110 : kam_baud_rate := 150;
  557.     150 : kam_baud_rate := 300;
  558.     300 : kam_baud_rate := 600;
  559.     600 : kam_baud_rate := 1200;
  560.     1200 : kam_baud_rate := 2400;
  561.     2400 : kam_baud_rate := 4800;
  562.     4800 : kam_baud_rate := 9600;
  563.     9600 : kam_baud_rate := 110;
  564.   end;
  565.   sho_comms_baud_rate;
  566. end;
  567.  
  568. procedure set_CW_WPM;
  569. begin
  570.   repeat
  571.     {$I-}
  572.     clear_select_line;
  573.     write('Initial CW WPM [5..80] : ');
  574.     readln(int_wpm);
  575.   until (IOresult = 0) AND (int_wpm in [5..80]);
  576.   sho_CW_WPM;
  577. end;
  578.  
  579. procedure set_CW_off_delay;
  580. begin
  581.   repeat
  582.     {$I-}
  583.     clear_select_line;
  584.     write('CW automatic turn-off delay (1/10s of secs) [1..25] : ');
  585.     readln(cw_off_delay);
  586.   until (IOresult = 0) AND (cw_off_delay in [1..25]);
  587.   sho_CW_off_delay;
  588. end;
  589.  
  590. procedure set_RTTY_on_delay;
  591. begin
  592.   repeat
  593.     {$I-}
  594.     clear_select_line;
  595.     write('RTTY automatic turn-on delay (1/10s of secs) [1..10] : ');
  596.     readln(xmt_on_delay);
  597.   until (IOresult = 0) AND (xmt_on_delay in [1..10]);
  598.   sho_RTTY_on_delay;
  599. end;
  600.  
  601. procedure set_RTTY_off_delay;
  602. begin
  603.   repeat
  604.     {$I-}
  605.     clear_select_line;
  606.     write('RTTY automatic turn-off delay (1/10s of secs) [1..50] : ');
  607.     readln(xmt_off_delay);
  608.   until (IOresult = 0) AND (xmt_off_delay in [1..50]);
  609.   sho_RTTY_off_delay;
  610. end;
  611.  
  612. procedure set_time_zone;
  613. begin
  614.   repeat
  615.     {$I-}
  616.     clear_select_line;
  617.     write('Local Time Zone [-11..+11] : ');
  618.     readln(time_zone);
  619.   until (IOresult = 0) AND (abs(time_zone) in [ 0..11 ]);
  620.   sho_time_zone;
  621. end;
  622.  
  623. procedure set_default_msg_file;
  624. begin
  625.   clear_select_line;
  626.   write('On program startup read line buffers from : ');
  627.   readln(msg_file_0);
  628.   sho_default_msg_file;
  629. end;
  630.  
  631. procedure set_default_CW_log;
  632. begin
  633.   clear_select_line;
  634.   write('Default CW LOG File : ');
  635.   readln(cw_log_file);
  636.   sho_cw_log_file;
  637. end;
  638.  
  639. procedure set_default_RTTY_log;
  640. begin
  641.   clear_select_line;
  642.   write('Default RTTY LOG File : ');
  643.   readln(rtty_log_file);
  644.   sho_rtty_log_file;
  645. end;
  646.  
  647. procedure set_default_ASCII_log;
  648. begin
  649.   clear_select_line;
  650.   write('Default ASCII LOG File : ');
  651.   readln(ascii_log_file);
  652.   sho_ascii_log_file;
  653. end;
  654.  
  655.   { ********  END OF INTERNAL PROCEDURES  ******** }
  656. begin
  657.   halt_xmt;
  658.   save_screen;
  659.   param_screen;
  660.   repeat
  661.     param := select;
  662.     case param of
  663.       'A'..'F' : new_color(param);
  664.       'G'      : border_color;
  665.       'H'      : xmt_space;
  666.       'I'      : rcv_space;
  667.       'J'      : status_space;
  668.       'K'      : aux_space;
  669.       'L'      : set_comms_port;
  670.       'M'      : set_comms_baud_rate;
  671.       'N'      : set_CW_WPM;
  672.       'O'      : set_CW_off_delay;
  673.       'P'      : set_RTTY_on_delay;
  674.       'Q'      : set_RTTY_off_delay;
  675.       'R'      : set_time_zone;
  676.       'S'      : set_default_msg_file;
  677.       'T'      : set_default_CW_log;
  678.       'U'      : set_default_RTTY_log;
  679.       'V'      : set_default_ASCII_log;
  680.     end;
  681.   until param = #27;
  682.   clear_select_line;
  683.   write('Save to Disk <Y/N> ...');
  684.   repeat key := readkey until key in ['y','Y','n','N'];
  685.   if key in ['y','Y'] then save_init;
  686.   set_date_time;
  687.   mod_image;
  688.   restore_screen;
  689.   clear_screen;
  690. end;
  691.  
  692. procedure initialize;
  693. begin
  694.   case vid_type of
  695.     0 : begin
  696.           textcolor(mono_screen[1999].a AND $0F);
  697.           textbackground((mono_screen[1999].a SHR 4) AND $0F);
  698.         end;
  699.     1 : begin
  700.           textcolor(color_screen[1999].a AND $0F);
  701.           textbackground((color_screen[1999].a SHR 4) AND $0F);
  702.         end;
  703.   end;
  704.   viewing_help := FALSE;
  705.   clrscr;
  706.   writeln('======================== KAM-CAR ===========================');
  707.   writeln('Kantronics (tm) All Mode CW/ASCII/RTTY Terminal Program ',version:4);
  708.   writeln('Courtesy: Dave Freese, W1HKJ');
  709.   writeln('           29 N. Ravenwood Drive');
  710.   writeln('           Cape May Court House, NJ 08210');
  711.   writeln('           (609) 624 0076');
  712.   writeln;
  713.   get_init;
  714.   baud := 0;
  715.   shift := 0;
  716.   set_date_time;
  717.   key := null;
  718.   old_time := '     ';
  719.   state := receive;
  720.   xmt_ON := FALSE;
  721.   pause_flag := FALSE;
  722.   stop_flag := FALSE;
  723.   quit_flag  := FALSE;
  724.   invert := FALSE;
  725.   capture := FALSE;
  726.   auto_switch := FALSE;
  727.   kbd_buffer[0] := null;
  728.   kbd_buffer[1] := null;
  729.   inp_ptr := 0;
  730.   out_ptr := 0;
  731.   qso_nbr := 0;
  732.   rcv_cnt := 0;
  733.   FillChar(rcv_buffer,$800,#32);
  734.   init_interface;
  735. end;
  736.  
  737.