home *** CD-ROM | disk | FTP | other *** search
/ CP/M / CPM_CDROM.iso / mbug / mbug184.arc / ROS34.LBR / ROSMAIN.IZC / ROSMAIN.INC
Text File  |  1979-12-31  |  6KB  |  166 lines

  1. { ROSMAIN.INC - Remote Operating System mainline code }
  2.  
  3. begin { ROS }
  4.   system_init;
  5.   cold_start;
  6.   setup;
  7.   local_online := TRUE;
  8.   display_time;
  9.   local_online := FALSE;
  10.   wait_for_user;
  11.   while not fini do
  12.     begin
  13.       login;
  14.       if online and in_use
  15.         then
  16.           begin
  17.             if user_rec.access >= 250
  18.               then
  19.                 begin
  20.                   mesg_area_change('SYSTEM');
  21.                   file_area_change('NEWIN')
  22.                 end
  23.               else
  24.                 begin
  25.                   mesg_area_change('POST');
  26.                   file_area_change('LOGIN')
  27.                 end;
  28.             list('B')
  29.           end;
  30.       while online and in_use do
  31.         begin
  32.           if op_chat
  33.             then op_chat := chat;
  34.           timer(time_on, time_left);
  35.           st := intstr(time_left, 1) + '-';
  36.           if user_rec.help_level > 0
  37.             then st := st + pr_msg[mode]
  38.             else st := st + pr_msg[mode][1];
  39.           case mode of
  40.             message_mode: st := st + ' ' + AreaReq;
  41.             files_mode  : begin
  42.                             st := st + ' ' + SectReq;
  43.                             if in_library
  44.                               then st := st + ' [' + LibReq + ']';
  45.                             if new_dir
  46.                               then directory;
  47.                             if up_down_display
  48.                               then
  49.                                 begin
  50.                                   writeln(USR, user_rec.upload, ' uploads, ',
  51.                                     user_rec.download, ' downloads to date.');
  52.                                   up_down_display := FALSE
  53.                                 end
  54.                           end
  55.           end;
  56.           if time_left <= 0
  57.             then
  58.               begin
  59.                 writeln(USR, 'Access time expired.  Please call back tomorrow.', BEL, BEL, BEL);
  60.                 remote_online := FALSE
  61.               end
  62.           else if time_left <= 2
  63.                  then writeln(USR, 'Less than 2 minutes of access time left.  Please finish up.', BEL);
  64.           writeln(USR);
  65.           putstat(user_rec.fn + ' ' + user_rec.ln + '  ' + user_rec.cy + ', ' +
  66.             user_rec.st + '  Access: ' + intstr(user_rec.access, 1) + '  On: ' +
  67.             intstr(time_on, 1) + '  Heap: ' + intstr(MaxAvail, 1));
  68.           ch := select(st, rep_msg[mode]);
  69.               case mode of
  70.                 message_mode:
  71.                   case ch of
  72.                     'A': mesg_enter('A');
  73.                     'C': mesg_area_change('');
  74.                     'E': mesg_enter(' ');
  75.                     'F': mode := files_mode;
  76.                     'G': in_use := FALSE;
  77.                     'K': mesg_kill;
  78.                     'Q': mesg_quick_scan;
  79.                     'R': mesg_read;
  80.                     'S': mesg_summary;
  81.                     'U': mode := utility_mode;
  82.                     'X': if (user_rec.access >= 250) or (not remote_copy)
  83.                            then mode := sysop_mode;
  84.                     'B', 'I', 'O', '1'..'9': list(ch);
  85.                     '?': list('M')
  86.                   end;
  87.                 files_mode:
  88.                   case ch of
  89.                     'C': begin
  90.                            if in_library
  91.                              then library;
  92.                            file_area_change('')
  93.                          end;
  94.                     'D': directory;
  95.                     'F': toggle_st_switch;
  96.                     'G': in_use := FALSE;
  97.                     'L': library;
  98.                     'M': mode := message_mode;
  99.                     'N': newin_list;
  100.                     'R': RecvXmodem;
  101.                     'S': SendXmodem;
  102.                     'T': SendText;
  103.                     'U': mode := utility_mode;
  104.                     'X': if (user_rec.access >= 250) or (not remote_copy)
  105.                            then mode := sysop_mode;
  106.                     '?': list('F')
  107.                   end;
  108.                 utility_mode:
  109.                   case ch of
  110.                     'A': alter_user_params;
  111.                     'C': if chat
  112.                            then mesg_enter('S');
  113.                     'F': mode := files_mode;
  114.                     'G': in_use := FALSE;
  115.                     'M': mode := message_mode;
  116.                     'S': display_stats;
  117.                     'T': display_time;
  118.                     'U': display_users;
  119.                     'X': if (user_rec.access >= 250) or (not remote_copy)
  120.                            then mode := sysop_mode;
  121.                     '?': list('U')
  122.                   end;
  123.                 sysop_mode:
  124.                   case ch of
  125.                     'A': toggle_audit;
  126.                     'D': delete_user;
  127.                     'E': edit_user;
  128.                     'F': mode := files_mode;
  129.                     'G': in_use := FALSE;
  130.                     'I': rebuild_index;
  131.                     'L': print_log;
  132.                     'M': mode := message_mode;
  133.                     'N': process_newin;
  134.                     'O': process_macro;
  135.                     'P': purge_files;
  136.                     'R': print_messages;
  137.                     'S': sys_dir;
  138.                     'T': toggle_printer;
  139.                     'U': mode := utility_mode;
  140.                     'V': validate_user;
  141.                     'X': if user_rec.access = 255
  142.                            then extended_commands;
  143.                     '?': list('X')
  144.                   end
  145.               end
  146.         end;
  147.       if connected
  148.         then
  149.           begin
  150.             if in_library
  151.               then library;
  152.             if audit_on
  153.               then toggle_audit;
  154.             if user_rec.fn <> 'SYSOP'
  155.               then if not valid_pw
  156.                      then mesg_enter('S')
  157.                      else if ask('Do you have a message for the sysop')
  158.                             then mesg_enter('S');
  159.             wrapup;
  160.             setup
  161.           end;
  162.       wait_for_user
  163.     end;
  164.   system_de_init
  165. end.
  166.