summaryrefslogtreecommitdiff
path: root/app/flint/0.4/src/operator
diff options
context:
space:
mode:
Diffstat (limited to 'app/flint/0.4/src/operator')
-rw-r--r--app/flint/0.4/src/operator381
1 files changed, 381 insertions, 0 deletions
diff --git a/app/flint/0.4/src/operator b/app/flint/0.4/src/operator
new file mode 100644
index 0000000..029b32c
--- /dev/null
+++ b/app/flint/0.4/src/operator
@@ -0,0 +1,381 @@
+PACKET operator DEFINES (* Autor: Thomas Berlage *)
+ (* Stand: 15.01.88 *)
+ operator :
+
+
+
+LET
+ p neuer taskname = #2001#
+ "Weitermachen in Bereich:",
+ p name vater = #2002#
+ "Unter welchem Vater:",
+ t bereich = #2003#
+ ""15"Bereich "14"",
+ t datum = #2004#
+ ""15"Datum "14"",
+ f ganz abkoppeln = #2005#
+ "Arbeitsbereich ganz abkoppeln",
+ f arbeitsbereich neu einrichten = #2006#
+ "Arbeitsbereich existiert nicht. Neu einrichten",
+ f trotzdem abschalten = #2007#
+ "Nicht auf Terminal 1. Trotzdem abschalten",
+ kb von = #2008#
+ " KB von ",
+ sind belegt = #2009#
+ " KB sind belegt.",
+ p taskname = #2010#
+ "Name des Arbeitsbereichs:",
+ existiert nicht als task = #2011#
+ " ist kein Name eines Bereiches",
+ t loeschen = #2012#
+ " löschen",
+ t speicher = #2013#
+ "Speicher:",
+ t cpu zeit = #2014#
+ " KB CPU-Zeit : ",
+ t zustand = #2015#
+ "Zustand : ",
+ t prio = #2016#
+ " Priorität: ",
+ t kanal = #2017#
+ " Kanal: ",
+ t busy = #2018#
+ "Arbeit",
+ t io = #2019#
+ "EinAus",
+ t wait = #2020#
+ "Warten",
+ t busy blocked = #2021#
+ "B(Arb)",
+ t io blocked = #2022#
+ "B(E/A)",
+ t wait blocked = #2023#
+ "B(Wrt)",
+ t dead = #2024#
+ ">>TOT<",
+ t gestoppt = #2025#
+ "Druckertreiber gestoppt.",
+ t gestartet = #2026#
+ "Druckertreiber gestartet.",
+ t angehalten = #2027#
+ "Druckertreiber angehalten.",
+ f auf anhalten warten = #2028#
+ "Auf Anhalten des Treibers warten",
+ t drucker = #2029#
+ ""15"Drucker "14"",
+ p neuer printer = #2030#
+ "Welche Druckertask soll eingestellt werden:",
+ t bitte warten = #2031#
+ "Bitte warten .. ";
+
+
+FENSTER VAR links, rechts;
+fenster initialisieren (links);;
+fenstergroesse setzen (links, 1, 2, 16, 22);
+fenster initialisieren (rechts);
+fenstergroesse setzen (rechts, 17, 2, 63, 22);
+dialogfenster (rechts);
+
+TEXT VAR
+ druckertask := "PRINTER";
+
+
+PROC operator :
+
+ TASK VAR letzte task;
+ TEXT VAR neuer name := "";
+ continue (niltask);
+ REP
+ letzte task := continued from;
+ page; bildschirm neu;
+ disable stop;
+ operatormenue;
+ umschalten auf letzte task
+ END REP .
+
+operatormenue :
+ menue anbieten (ROW 6 TEXT :
+ ("OPERATOR.Abschalten", "OPERATOR.Systemzustand", "OPERATOR.Drucker",
+ "OPERATOR.Netz", "OPERATOR.Konfiguration", ""),
+ links, TRUE, PROC (INT CONST, INT CONST) op interpreter) .
+
+umschalten auf letzte task :
+ BOOL VAR first try;
+ IF exists (letzte task) CAND NOT (letzte task = supervisor) THEN
+ first try := TRUE;
+ continue (letzte task)
+ ELSE
+ first try := FALSE
+ END IF;
+ IF is error OR NOT first try THEN
+ REP
+ IF is error THEN fehler ausgeben END IF;
+ nach neuer task fragen;
+ zurueck in task
+ UNTIL NOT is error END REP
+ END IF .
+
+nach neuer task fragen :
+ REP
+ editget (p neuer taskname, neuer name, "", "GET/neuer taskname");
+ UNTIL taskname akzeptiert END REP .
+
+taskname akzeptiert :
+ IF neuer name = "" THEN
+ ganz abkoppeln
+ ELSE
+ exists task (neuer name) COR neu einrichten
+ END IF .
+
+zurueck in task :
+ IF neuer name = "" THEN
+ continue (niltask)
+ ELIF exists task (neuer name) THEN
+ continue (task (neuer name))
+ ELSE
+ TEXT VAR vater := "";
+ editget (p name vater, vater, "", "GET/name vatertask");
+ begin (neuer name, vater);
+ continue (task (neuer name))
+ END IF .
+
+ganz abkoppeln :
+ ja (f ganz abkoppeln, "JA/ganz") .
+
+neu einrichten :
+ ja (f arbeitsbereich neu einrichten, "JA/task einrichten") .
+
+END PROC operator;
+
+PROC op interpreter (INT CONST menue nr, f nr) :
+
+ enable stop;
+ SELECT menuenr OF
+ CASE 0 : sperren setzen
+ CASE 1 : abschalten inter
+ CASE 2 : systemzustand inter
+ CASE 3 : drucker inter
+ CASE 4 : netz inter
+ CASE 5 : konfiguration inter
+ END SELECT;
+ IF f nr = -1 THEN dialogfenster loeschen END IF .
+
+sperren setzen :
+ fusszeile (t bereich, "", 35, t datum, 64);
+ fussteil (1, name (myself));
+ fussteil (3, date) .
+
+abschalten inter :
+ SELECT f nr OF
+ CASE 1 : abschalten
+ CASE 2 : (* nach DOS *) ni
+ CASE 3 : page; bildschirm neu; set date; dialogfenster loeschen
+ CASE 4 : page; bildschirm neu; save system
+ END SELECT .
+
+abschalten :
+ IF channel = 1 COR trotzdem abschalten THEN
+ page;
+ cursor (20, 11); out (t bitte warten);
+ cursor (20, 13);
+ shutup;
+ fenster veraendert (links);
+ push (""27"q")
+ END IF .
+
+trotzdem abschalten :
+ ja (f trotzdem abschalten, "JA/trotz shutup") .
+
+systemzustand inter :
+ SELECT f nr OF
+ CASE 1 : bereichsuebersicht
+ CASE 2 : speicherbelegung
+ CASE 3 : fremder taskstatus
+ CASE 4 : zustandsuebersicht
+ CASE 5 : task loeschen
+ END SELECT .
+
+bereichsuebersicht :
+ bitte warten;
+ disable stop;
+ DATASPACE VAR list ds := nilspace;
+ FILE VAR f := sequential file (output, list ds);
+ task info (1, f);
+ IF NOT is error THEN
+ show (f); bildschirm neu
+ END IF;
+ forget (list ds);
+ enable stop;
+ dialogfenster loeschen .
+
+speicherbelegung :
+ INT VAR size, used;
+ storage (size, used);
+ size := int (real (size + 24) * 64.0 / 63.0);
+ dialog (text (used) + kb von + text (size) + sind belegt) .
+
+fremder taskstatus :
+ TEXT VAR taskname := "";
+ editget (p taskname, taskname, "GET/Taskname", "");
+ TASK VAR status task := task (task name);
+ IF exists (status task) THEN
+ task zustand (status task)
+ ELSE
+ errorstop ("""" + taskname + """" + existiert nicht als task)
+ END IF .
+
+zustandsuebersicht :
+ bitte warten; task info (3); bildschirm neu; dialogfenster loeschen .
+
+task loeschen :
+ taskname := "";
+ editget (p taskname, taskname, "GET/Taskname", "");
+ IF ja ("""" + taskname + """" + t loeschen,
+ "JA/Task loeschen", FALSE) THEN
+ end (task (taskname))
+ END IF .
+
+drucker inter :
+ SELECT f nr OF
+ CASE 0 : druckertask in fuss
+ CASE 1 : start (task (druckertask)); dialog (t gestartet)
+ CASE 2 : stop (task (druckertask)); dialog (t gestoppt)
+ CASE 3 : halt kommando
+ CASE 4 : list (task (druckertask)); bildschirm neu; dialogfenster loeschen
+ CASE 5 : first (task (druckertask))
+ CASE 6 : killer (task (druckertask))
+ CASE 7 : druckertask setzen
+ OTHERWISE ggf druckertask aus fuss
+ END SELECT .
+
+druckertask in fuss :
+ fussteil (2, t drucker, druckertask) .
+
+halt kommando :
+ IF ja (f auf anhalten warten, "JA/halt warten", FALSE) THEN
+ wait for halt (task (druckertask))
+ ELSE
+ halt (task (druckertask))
+ END IF;
+ dialog (t angehalten) .
+
+druckertask setzen :
+ TEXT VAR neuer printer := druckertask;
+ editget (p neuer printer, neuer printer, "", "GET/neuer printer");
+ TASK CONST dummy := task (neuer printer);
+ druckertask := neuer printer;
+ fussteil (2, druckertask) .
+
+ggf druckertask aus fuss :
+ IF f nr = -1 THEN
+ fussteil (2, "", "")
+ END IF .
+
+netz inter :
+ SELECT f nr OF
+ CASE 1 : (* start *) ni
+ CASE 2 : (* stop *) ni
+ CASE 3 : (* zustand *) ni
+ CASE 4 : (* list (net.io) *) ni
+ END SELECT .
+
+konfiguration inter :
+ SELECT f nr OF
+ CASE 1 : konfigurieren
+ CASE 2 : (* drucker installieren *) ni
+ CASE 3 : (* netz installieren *) ni
+ CASE 4 : (* anwendung installieren *) ni
+ CASE 5 : (* systemprogramm installieren *) ni
+ END SELECT .
+
+konfigurieren :
+ THESAURUS VAR conf := ALL /"configurator";
+ page; bildschirm neu;
+ forget quiet (conf);
+ fetch (conf, /"configurator");
+ configurate;
+ line;
+ save ("configuration", /"configurator");
+ forget quiet (conf);
+ dialogfenster loeschen .
+
+END PROC op interpreter;
+
+PROC task zustand (TASK CONST status task) :
+
+ dialog (t speicher + speicher + t cpu zeit + cpu zeit);
+ out (t zustand); out status; out (t prio); out prio;
+ out (t kanal); out kanal .
+
+speicher :
+ text (storage (status task), 5) .
+
+cpu zeit :
+ disable stop;
+ TEXT VAR result := subtext (time (clock (status task), 12), 1, 10);
+ IF is error THEN
+ clear error; result := "**********"
+ END IF;
+ result .
+
+out status :
+ SELECT status (status task) OF
+ CASE 0 : out (t busy)
+ CASE 1 : out (t io)
+ CASE 2 : out (t wait)
+ CASE 4 : out (t busy blocked)
+ CASE 5 : out (t io blocked)
+ CASE 6 : out (t wait blocked)
+ OTHERWISE out (t dead)
+ END SELECT .
+
+out prio :
+ out (text (pcb (status task, 6))) .
+
+out kanal :
+ IF channel (status task) = 0 THEN
+ out (" -")
+ ELSE
+ out (text (channel (status task), 2))
+ END IF .
+
+END PROC task zustand;
+
+PROC forget quiet (TEXT CONST datei) :
+ forget (datei, quiet)
+END PROC forget quiet;
+
+PROC forget quiet (THESAURUS CONST t) :
+ do (PROC (TEXT CONST) forget quiet, t)
+END PROC forget quiet;
+
+PROC bitte warten :
+
+ cursor (1, 1);
+ out (t bitte warten);
+ out (""5"")
+
+END PROC bitte warten;
+
+PROC ni :
+
+ dialog ("Zur Zeit nicht implementiert.")
+
+END PROC ni;
+
+END PACKET operator;
+
+PACKET operator monitor
+
+ DEFINES
+
+ monitor :
+
+
+PROC monitor :
+ disable stop;
+ operator
+END PROC monitor;
+
+END PACKET operator monitor;
+