From 04e68443040c7abad84d66477e98f93bed701760 Mon Sep 17 00:00:00 2001 From: Lars-Dominik Braun Date: Mon, 4 Feb 2019 13:09:03 +0100 Subject: Initial import --- app/flint/0.4/src/operator | 381 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 381 insertions(+) create mode 100644 app/flint/0.4/src/operator (limited to 'app/flint/0.4/src/operator') 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; + -- cgit v1.2.3