system/at/unknown/src/AT Generator

Raw file
Back to index

(*************************************************************************)
(*** Generiert Für IBM-AT einen neuen SYSUR-Zweig.                     ***)
(*** Danach wird die eingebaute Hardwareuhr für die Systemzeit benutzt ***)
(*** und andere Partitionen können mit neuem 'shutup' gebootet werden. ***)
(***                                                                   ***)
(*** Autor : W. Sauerwein                             Stand : 15.07.86 ***)
(*************************************************************************)

LET ack = 0,
    nak = 1;
 
cl eop (1, 4);
erzeuge collector;
erzeuge archive manager;
erzeuge operator;
erzeuge configurator;
loesche collector;
forget ("AT Generator", quiet);
break.

loesche collector :
   end (/"colly");
   put ("Collector gelöscht.");
   line (2).

erzeuge collector :
   put line ("Generating 'Collector'...");
   begin ("colly", PROC generate collector, t);
   warte auf meldung;
   IF answer = nak THEN end (/"colly");
                        errorstop (meldung)
   FI.
   TASK VAR t.

erzeuge archive manager :
   put line ("Generating 'ARCHIVE'...");
   end (/"ARCHIVE");
   begin ("ARCHIVE", PROC archive manager, t).

erzeuge operator :
   put line ("Generating 'OPERATOR'...");
   end (/"OPERATOR");
   begin ("OPERATOR", PROC monitor, t).
 
erzeuge configurator :
   put line ("Generating 'configurator'...");
   end (/"configurator");
   begin ("configurator", PROC generate configurator, t); 
   warte auf meldung;
   IF answer = nak THEN errorstop (meldung) FI.
 
warte auf meldung : 
   DATASPACE VAR ds; INT VAR answer; 
   wait (ds, answer, t);
   BOUND TEXT VAR m := ds;
   TEXT VAR meldung := m;
   forget (ds).
 
PROC generate collector :

   disable stop;
   fetch all (/"configurator");
   DATASPACE VAR ds := nilspace;
   BOUND TEXT VAR m := ds; m := "";
   send (father, mess, ds);
   forget (ds);
   free global manager.
 
mess : IF is error THEN m := error message;
                        nak
                   ELSE ack FI.

END PROC generate collector;

PROC generate configurator :

   disable stop;
   fetch all (/"colly");
   DATASPACE VAR ds := nilspace; 
   BOUND TEXT VAR m := ds; m := "";
   send (father, mess, ds);
   forget (ds);
   enable stop;
   new configuration;
   setup;
   global manager (PROC ( DATASPACE VAR, INT CONST, INT CONST, TASK CONST) 
                   configuration manager with time).

mess : IF is error THEN m := error message;
                        nak
                   ELSE ack FI.

END PROC generate configurator;

TEXT PROC inverse (TEXT CONST t):
  ""15"" + t + " " + ""14""
END PROC inverse;

PROC put center (TEXT CONST t):
   put center (t, 80)
END PROC put center;

PROC put center (INT CONST zeile, TEXT CONST t):
   put center (zeile, t, 80)
END PROC put center;

PROC put center (TEXT CONST t, INT CONST gesamtbreite):
   INT VAR cy;
   get cursor (cy, cy);
   put center (cy, t, gesamtbreite)
END PROC put center;

PROC put center (INT CONST zeile, TEXT CONST t, INT CONST gesamtbreite):
   cursor ((gesamtbreite - length (t)) DIV 2, zeile);
   put (t).
END PROC put center;

PROC cl eol: 
  out (""5"") 
END PROC cl eol;

PROC cl eop: 
  out (""4"") 
END PROC cl eop; 
 
PROC cl eol (INT CONST cx, cy): 
   cursor (cx, cy); 
   cl eol 
END PROC cl eol; 
 
PROC cl eop (INT CONST cx, cy): 
   cursor (cx, cy); 
   cl eop 
END PROC cl eop;