home *** CD-ROM | disk | FTP | other *** search
/ kermit.columbia.edu / kermit.columbia.edu.tar / kermit.columbia.edu / ucsdappleii / kerminit.text < prev    next >
Text File  |  1986-04-07  |  7KB  |  213 lines

  1. (*>>>>>>>>>>>>KERMINIT>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>*)
  2.  
  3. (*$I-*)
  4. (*$R-*)
  5. (*$S+*)
  6. (*$V-*)
  7.  
  8. UNIT KERMINIT;      INTRINSIC  CODE  29;
  9.  
  10. INTERFACE
  11.  
  12. USES  kermglob,
  13.       kermacia,
  14.       kermutil;
  15.  
  16. PROCEDURE initialize;
  17.  
  18.  
  19. IMPLEMENTATION
  20.  
  21. PROCEDURE initialize;
  22.  
  23.  reads system.miscinfo and the default parameter file kermit.data and 
  24.  does other necessary initializations 
  25.  
  26.  
  27. PROCEDURE  logo;
  28.  
  29. begin
  30.   page( output );
  31.   gotoxy(17,2);  write('K    E    R    M    I    T');
  32.   gotoxy(21,4);  write('VERSION ', version );
  33.   gotoxy(28,5);  write('for');
  34.   gotoxy(17,6);  write('Apple ][(e) UCSD p-system');
  35.   gotoxy(10,17); write('Adapted from the IBM PC UCSD version by :');
  36.   gotoxy(24,19); write('P. Terpstra');
  37.   gotoxy(20,20); write('University Groningen');
  38.   gotoxy(23,21); write('Nijenborgh 16');
  39.   gotoxy(25,22); write('Groningen');
  40.   gotoxy(22,23); write('The Netherlands');
  41. end;  { logo }
  42.  
  43.  
  44. PROCEDURE  check_io ( io_status : integer;  filename : string );
  45.  
  46. begin
  47.   if io_status <> 0 then
  48.     begin
  49.       io_error( io_status );
  50.       gotoxy( 50, error_line );
  51.       write( filename );
  52.       exit( program );
  53.     end;
  54. end;   {  check_io  }
  55.  
  56.  
  57.  
  58. PROCEDURE get_crt_info;
  59.  
  60.  read system.miscinfo to get terminal independent screen operations 
  61.  
  62. var      byte : 0..255;
  63.          i : integer;
  64.  
  65. begin
  66.   reset( untyped_f, sys_misc_file );
  67.   check_io( ioresult, sys_misc_file );
  68.   i := blockread( untyped_f, file_buf[1], 1 );
  69.   if i <> 1 then check_io( 64, sys_misc_file );
  70.   close( untyped_f );
  71.   prefix := file_buf[63];        byte := ord( file_buf[73] );
  72.   prefixed[ sc_up      ] := odd( byte );         {cursor up}
  73.   prefixed[ sc_right   ] := odd( byte div   2 ); {cursor right}
  74.   prefixed[ sc_clreol  ] := odd( byte div   4 ); {clear to end of line}
  75.   prefixed[ sc_clreos  ] := odd( byte div   8 ); {clear to end of screen}
  76.   prefixed[ sc_home    ] := odd( byte div  16 ); {cursor home}
  77.   prefixed[ sc_delchar ] := odd( byte div  32 ); {often not implemented}
  78.   prefixed[ sc_clrall  ] := odd( byte div  64 ); {clear whole screen}
  79.   prefixed[ sc_clrline ] := odd( byte div 128 ); {often not implemented}
  80.   prefixed[ sc_left    ] := false; {cursor left:no prefix in sys.miscinfo}
  81.   prefixed[ sc_down    ] := false; {cursor down:no prefix in sys.miscinfo}
  82.   rlf       := file_buf[68]; {reverse line feed: cursor up}
  83.   ndfs      := file_buf[67]; {non destructive space forward: cursor right}
  84.   eraseol   := file_buf[66]; {from cursor: clear to end of line}
  85.   eraseos   := file_buf[65]; {from cursor: clear to end of screen}
  86.   home      := file_buf[64]; {cursor to x=0, y=0}
  87.   delchar   := file_buf[69]; {backspace with deleting: often same as backsp}
  88.   clrscreen := file_buf[72]; {clear whole screen}
  89.   clrline   := file_buf[71]; {clear one whole line: often not possible}
  90.   backsp    := chr( backspace ); {see kermglob: mostly chr(8) }
  91.   lf        := chr( linefeed  ); {see kermglob: mostly chr(10) }
  92.   cr        := chr( eoline );    {see kermglob: mostly chr(13) }
  93.   ff        := chr( formfeed );  {see kermglob: mostly chr(12) }
  94. end;  { procedure get_crt_info }
  95.  
  96.  
  97. PROCEDURE read_defaults;
  98.  
  99. var temp : integer;
  100.     temp_bool : boolean;
  101.  
  102. begin
  103.   reset( def, setup_file );
  104.   check_io( ioresult, setup_file );
  105.   esc_char        := chr( def^ ); get( def );
  106.   eoln_char       := chr( def^ ); get( def );
  107.   my_quote        := chr( def^ ); get( def );
  108.   my_pchar        := chr( def^ ); get( def );
  109.   my_pad          :=      def^  ; get( def );
  110.   soh_char        := chr( def^ ); get( def );
  111.   int_key         := chr( def^ ); get( def );
  112.   xon_char        := chr( def^ ); get( def );
  113.   xoff_char       := chr( def^ ); get( def );
  114.   xoff_w_time     :=      def^  ; get( def );
  115.   max_pack        :=      def^  ; get( def );
  116.   if (maxpack < 20) or (maxpack > def_maxpack) then  maxpack := def_maxpack;
  117.   max_try         :=      def^  ; get( def );
  118.   my_time         :=      def^  ; get( def );
  119.   if my_time < 1 then my_time := 1 else if my_time > 31 then my_time := 31;
  120.   half_duplex     := odd( def^ ); get( def );
  121.   debug           := odd( def^ ); get( def );
  122.   fwarn           := odd( def^ ); get( def );
  123.   text_file       := odd( def^ ); get( def );
  124.   no_ffeed        := odd( def^ ); get( def );
  125.   rejectcntrlchar := odd( def^ ); get( def );
  126.   temp_bool       := odd( def^ ); get( def );
  127.   if temp_bool then bs_to_del := chr(del) else bs_to_del := backsp;
  128.   temp            :=      def^  ; get( def );
  129.   acia_implem     := unknown;
  130.   if temp = 1 then acia_implem := A6551;
  131.   if temp = 2 then acia_implem := A6850;
  132.   acia_comm_reg   :=      def^  ; get( def );
  133.   acia_cntrl_reg  :=      def^  ; get( def );
  134.   new_baud        :=      def^  ; get( def );
  135.   new_dbit        :=      def^  ; get( def );
  136.   new_stopbit     :=      def^  ; get( def );
  137.   temp            :=      def^  ; get( def );
  138.   new_par := no_par;
  139.   case temp of
  140.     0 : new_par := no_par;
  141.     1 : new_par := odd_par;
  142.     2 : new_par := even_par;
  143.     3 : new_par := mark_par;
  144.     4 : new_par := space_par;
  145.   end;
  146.   temp           :=      def^   ;
  147.   if temp = 80 then begin
  148.                       no_sfb_char := no_sp_char;
  149.                       sfb_char    := stop_flush_break_sp_char;
  150.                     end
  151.                else begin
  152.                       no_sfb_char := scr_40_sp_char;
  153.                       sfb_char    := all_sp_char;
  154.                     end;
  155.   close( def );
  156. end;    {  read_defaults  }
  157.  
  158.  
  159. PROCEDURE  other_defaults;
  160.  
  161. begin
  162.   ibm       :=   false;
  163.   emulate   :=   false;
  164.   pr_out    :=   false;
  165.   xdle_char :=   chr( xdle );
  166.   xeol_char :=   eoln_char;
  167.   quote     :=   my_quote;
  168.   pad       :=   my_pad;
  169.   pad_char  :=   my_pchar;
  170.   xtime     :=   my_time;
  171.   prefix_vol:=   ':';
  172.   init_try  :=   5 * max_try;
  173.   print_enable := test_printer;
  174.   err_string   := 'Error at host';
  175.   reset( p, cs_file );
  176.   ctl_set := [ chr(0)..chr(31), chr(del) ];
  177.   check_apple_char( no_sfb_char );
  178.   check_apple_char( mask_msbit_remin );
  179.   with controlword do
  180.     begin
  181.       channel := inp;
  182.       purpose := status;
  183.       reserved:= 0;
  184.       special_req := none;
  185.       filler  := 0
  186.     end;
  187.   baud := new_baud;
  188.   if (acia_implem=A6551) or (acia_implem=A6850)
  189.     then begin
  190.            set_acia_parms( new_par, new_dbit, new_stopbit, new_baud );
  191.            get_acia_parms( parity, databit, stopbit, baud );
  192.          end
  193.     else begin
  194.            parity  := new_par;
  195.            stopbit := new_stopbit;
  196.            databit := new_dbit;
  197.          end;
  198. end;   {  other_defaults }
  199.  
  200.  
  201. begin   {  initialize  }
  202.   logo;
  203.   get_crt_info;
  204.   read_defaults;
  205.   other_defaults;
  206.   writeln;
  207.   writeln;
  208. end;   {  initialize  }
  209.  
  210.  
  211. begin
  212. end.   {  kerminit  }
  213.