summaryrefslogtreecommitdiff
path: root/app/gs.hamster
diff options
context:
space:
mode:
Diffstat (limited to 'app/gs.hamster')
-rw-r--r--app/gs.hamster/1.1/doc/A5 - Doku: gs-Herbert und Robbi - Inhaltsverzeichnis45
-rw-r--r--app/gs.hamster/1.1/doc/A5 - Doku: gs-Herbert und Robbi - Kapitel 193
-rw-r--r--app/gs.hamster/1.1/doc/A5 - Doku: gs-Herbert und Robbi - Kapitel 2389
-rw-r--r--app/gs.hamster/1.1/doc/A5 - Doku: gs-Herbert und Robbi - Kapitel 3199
-rw-r--r--app/gs.hamster/1.1/doc/A5 - Doku: gs-Herbert und Robbi - Kapitel 41312
-rw-r--r--app/gs.hamster/1.1/doc/A5 - Doku: gs-Herbert und Robbi - Kapitel 5167
-rw-r--r--app/gs.hamster/1.1/doc/A5 - Doku: gs-Herbert und Robbi - Kapitel 673
-rw-r--r--app/gs.hamster/1.1/doc/gs-Herbert und Robbi handbuch.impressum87
-rw-r--r--app/gs.hamster/1.1/source-disk1
-rw-r--r--app/gs.hamster/1.1/src/ls-Herbert und Robbi 184
-rw-r--r--app/gs.hamster/1.1/src/ls-Herbert und Robbi 231
-rw-r--r--app/gs.hamster/1.1/src/ls-Herbert und Robbi 384
-rw-r--r--app/gs.hamster/1.1/src/ls-Herbert und Robbi-gen33
-rw-r--r--app/gs.hamster/1.1/src/ls-MENUKARTE:Herbert und Robbibin0 -> 94720 bytes
14 files changed, 2598 insertions, 0 deletions
diff --git a/app/gs.hamster/1.1/doc/A5 - Doku: gs-Herbert und Robbi - Inhaltsverzeichnis b/app/gs.hamster/1.1/doc/A5 - Doku: gs-Herbert und Robbi - Inhaltsverzeichnis
new file mode 100644
index 0000000..5726636
--- /dev/null
+++ b/app/gs.hamster/1.1/doc/A5 - Doku: gs-Herbert und Robbi - Inhaltsverzeichnis
@@ -0,0 +1,45 @@
+#limit (11.5)##pagelength (16.5)#
+#start (1.8,1.0)#
+Inhaltsverzeichnis
+
+
+
+1 Was kann gs-Herbert und Robbi 3
+
+2 Allgemeines zum Hamster-/Robotermodell 6
+2.1 Entstehung 6
+2.2 Kurzbeschreibung des Hamster-/Roboter-
+ Modells 7
+2.2.1 Befehle und Tests 7
+2.2.2 Landschafts-/Arbeitsfeldgestaltung 9
+2.3 Einsatzbereich 11
+2.4 Hinweise für den Einsatz in der Ausbildung 12
+2.5 Aufgabenmaterial 14
+2.6 Erfahrungen mit dem Hamster-/Roboter-Modell 14
+
+3 Installation von gs-Herbert und Robbi 17
+3.1 Voraussetzungen 17
+3.2 Lieferumfang 17
+3.3 Installation 18
+3.4 Direktstart des Medells 20
+
+4 Beschreibung der Menufunktionen 22
+4.1 Kurzhinweise zur Bedienung des Menus 23
+4.2 Menufunktionen zum Oberbegriff 'Info' 27
+4.3 Menufunktionen zum Oberbegriff 'Landschaft' 29
+ Menufunktionen zum Oberbegriff 'Arbeitsfeld' 29
+4.4 Menufunktionen zum Oberbegriff 'Programm' 35
+4.5 Menufunktionen zum Oberbegriff 'Lauf' 41
+4.6 Menufunktionen zum Oberbegriff 'Archiv' 46
+
+5 Detailbeschreibung der Basisbefehle 61
+
+6 Zusätzliche Kommandos 66
+
+
+
+
+
+
+
+
diff --git a/app/gs.hamster/1.1/doc/A5 - Doku: gs-Herbert und Robbi - Kapitel 1 b/app/gs.hamster/1.1/doc/A5 - Doku: gs-Herbert und Robbi - Kapitel 1
new file mode 100644
index 0000000..73c95f9
--- /dev/null
+++ b/app/gs.hamster/1.1/doc/A5 - Doku: gs-Herbert und Robbi - Kapitel 1
@@ -0,0 +1,93 @@
+#limit (11.0)##pagelength (16.5)##block#
+#start (2.0,0.0)#
+#page (3)#
+#headodd#
+#center#gs-Herbert und Robbi#right#%
+
+#end#
+#headeven#
+%#center#gs-Herbert und Robbi
+
+#end#
+#center#1
+
+#center#Was
+#center#kann
+#center#gs-Herbert und Robbi
+
+
+ Mit #on("b")#gs-Herbert und Robbi#off("b")# liegt das von Lothar Oppor
+entwickelte und von Wolfgang Weber weiterentwickelte
+Hamster-Modell nun eingebettet in die komfortable,
+menuorientierte Benutzerschnittstelle #on("b")#gs-DIALOG#off("b")# vor. Das
+Programm stellt eine wesentliche Erweiterung des 'alten'
+Hamster - Modells dar. Neben einer zweiten Modellvarian­
+te (Roboter) wurden eine Reihe nützlicher Funktionen in
+das Modell integriert. Sämtlich Funktionen werden über
+ein übersichtliches Menu angeboten, was gerade dem An­
+fänger die Arbeit mit dem Computer erleichtert.
+
+ #on("b")#gs-Herbert und Robbi#off("b")# kann zur Einführung in das al­
+gorithmische Problemlösen eingesetzt werden und soll
+dazu dienen, Programmierung #on("u")#einfach#off("u")# und #on("u")#spielerisch#off("u")# zu
+erlernen - ohne Ablenkung durch Betriebssystem oder gar
+Hardware-Eigenheiten.
+
+ Das Modell ist so einfach und überschaubar, daß ein
+Anfänger schon nach einer halben Stunde in der Lage ist,
+sich selbst kleine Aufgaben zu stellen und diese zu lösen.
+Die Modellumgebung ist so komfortabel, daß der Anfänger
+nach einer kurzen Einweisung selbständig mit dem Compu­
+termodell umgehen kann.
+
+- Durch die Menuführung sind nur noch wenige Be­
+ triebssystemkommandos zur Bedienung des Systems
+ notwendig.
+
+- Der Benutzer kann jederzeit Informationen anfordern
+ über:
+ - den zur Verfügung stehenden Befehlsumfang,
+ - die Möglichkeiten, den Lauf des Hamsters/Robo­
+ ters zu beeinflussen,
+ - die Möglichkeiten hinsichtlich der Landschafts­
+ gestaltung/Arbeitsfeldgestaltung
+ - die Bedienung des Menusystems
+ - die Wirkung der einzelnen Menufunktionen
+ - die Möglichkeiten/Bedienung des Editors
+
+- Neben der Steuerung des Hamsters/Roboters durch
+ Programme kann der Hamster/Roboter auch interaktiv
+ gesteuert werden; dabei wird ein Protokoll der ausge­
+ führten Aktionen in Form eines ablauffähigen ELAN-
+ Programms angelegt. Dieses Protokoll (Programm) kann
+ jederzeit eingesehen werden. Natürlich kann anschlie­
+ ßend der Hamster/Roboter die gleichen Aktionen, die
+ zuvor von Hand ausgeführt wurden, auch nach diesem
+ Programm ausführen.
+
+- Durch den (optional) erweiterbaren Befehlssatz kann
+ #on("b")#gs-Herbert und Robbi#off("b")# den Erfordernissen und der Lei­
+ stungsfähigkeit der Lernenden leicht angepaßt wer­
+ den.
+
+- Auch das Editieren und Drucken von Programmen sowie
+ Landschaften/Arbeitsfeldern erfolgt vom Menu aus.
+
+- Die Archivoperationen, die gerade Anfängern zunächst
+ große Probleme bereiten, können sämtlichst komforta­
+ bel vom Menu aus gehandhabt werden. Dabei werden
+ Anfragen an den Benutzer gestellt, die zumeist nur
+ mit 'ja' oder 'nein' zu beantworten sind; oder der Be­
+ nutzer hat in einer Auswahlliste die gewünschten Da­
+ teinamen anzukreuzen.
+
+- Die Archivoperationen stehen dem Benutzer auch unab­
+ hängig vom Hamster-/Robotermodell unter #on("b")#gs-DIALOG#off("b")#
+ zur Verfügung, so daß beim Verlassen der Modellum­
+ gebung "kein Bruch zu befürchten ist".
+
+- Die Fehlermeldungen sind detailliert und leicht ver­
+ ständlich, so daß auch Anfänger die Fehlerquelle(n)
+ zumeist ohne zusätzliche Hilfen lokalisieren und be­
+ seitigen können.
+
diff --git a/app/gs.hamster/1.1/doc/A5 - Doku: gs-Herbert und Robbi - Kapitel 2 b/app/gs.hamster/1.1/doc/A5 - Doku: gs-Herbert und Robbi - Kapitel 2
new file mode 100644
index 0000000..52526d6
--- /dev/null
+++ b/app/gs.hamster/1.1/doc/A5 - Doku: gs-Herbert und Robbi - Kapitel 2
@@ -0,0 +1,389 @@
+#limit (11.0)##pagelength (16.5)##block#
+#start (2.0,0.0)#
+#page (6)#
+#headodd#
+#center#gs-Herbert und Robbi#right#%
+
+#end#
+#headeven#
+%#center#gs-Herbert und Robbi
+
+#end#
+#center#2
+
+#center#Allgemeines
+#center#zum
+#center#Hamster-/Robotermodell
+
+
+2.1 Entstehung
+
+ Das Hamster - Modell wurde in der Gesellschaft für
+Mathematik und Datenverarbeitung (GMD), einer Großfor­
+schungseinrichtung des Bundes und des Landes Nord­
+rhein-Westfalen, von Lothar Oppor in Anlehnung an das
+Modell 'Karel the Robot' von Richard E. Pattis (Stanford
+University, USA) entwickelt und zunächst innerhalb der
+GMD und schon bald im Schulbereich eingesetzt.
+ Wolfgang Weber, Lehrer an der Gesamtschule Leopolds­
+höhe bei Bielefeld, entwickelte in Zusammenhang mit sei­
+ner Arbeit am Landesinstitut für Schule und Weiterbil­
+dung in Soest dieses Modell seit 1984 weiter. Sein Ziel war
+es, das Modell um solche Komponenten zu erweitern, daß es
+auch für Schüler der Sekundarstufe I im Anfangsunter­
+richt eingesetzt werden kann. Besondere Bedeutung kam
+dabei der Entwicklung einer komfortablen, einfach zu be­
+dienenden Benutzerschnittstelle zu, die es dem Anfänger
+ermöglicht, sich von Beginn an mit der eigentlichen Pro­
+blemstellung auseinanderzusetzen, ohne von Betriebssy­
+stem oder gar Hardware-Eigenheiten abgelenkt zu werden.
+ Mit dem vorliegenden Programm #on("b")#gs-Herbert und Robbi#off("b")#,
+das in die komfortable, menuorientierte Benutzer­
+schnittstelle #on("b")#gs-DIALOG#off("b")# eingebettet ist, dürfte diese Ar­
+beit vorerst zu einem Abschluß gebracht sein. Mit diesem
+Programm liegt nun eine Modellumgebung vor, die den
+gestellten Anforderungen gerecht wird.
+
+
+2.2 Kurzbeschreibung des Hamster-/Roboter-Modells
+
+ Das Hamster- und das Roboter - Modell sind analog
+aufgebaut und in Art und Umfang der Befehle identisch.
+Im ersten Modell kann 'Herbert der Hamster', im zweiten
+Modell 'Robbi der Roboter' auf dem Bildschirm durch vier
+sogenannte Basisbefehle gesteuert werden - 'Herbert' in
+einer 'Landschaft', 'Robbi' auf einem 'Arbeitsfeld' - beides
+Ebenen, die aus 23 x 40 Kacheln bestehen.
+ Auf dieser Ebene können sich noch Hindernisse und
+'Körner' (für Herbert) oder 'Werkstücke' (für Robbi) befin­
+den. Die Hindernisse stellen auf dem Bildschirm Barrieren
+dar, die umgangen werden müssen. Die Körner bzw. Werk­
+stücke können von Herbert in seinen 'Backentaschen' bzw.
+von Robbi in seinem 'Behälter' aufgenommen oder daraus
+(wieder) abgelegt werden.
+
+
+2.2.1 Befehle und Tests
+
+ Für die Steuerung von Herbert bzw.Robbi stehen vier
+Basisbefehle zur Verfügung (die in beiden Modellvarian­
+ten gleich sind):
+
+#on("u")#vor#off("u")#
+ Gehe eine Kachel (einen Schritt) in Laufrichtung vor.
+
+#on("u")#links um#off("u")#
+ Drehe Dich, wo Du stehst, um 90 Grad nach links.
+
+#on("u")#nimm#off("u")#
+ Nimm da, wo Du stehst, ein Korn/Werkstück auf.
+
+#on("u")#gib#off("u")#
+ Lege da, wo Du stehst, aus den Backentaschen/dem Be­
+ hälter ein Korn/Werkstück ab.
+
+ Da nur dort ein Korn/Werkstück aufgenommen werden
+kann, wo auch eines vorhanden ist oder nur vorgegangen
+werden kann, wenn die nächste Kachel noch zur Land­
+schaft/zum Arbeitsfeld gehört und nicht blockiert ist,
+sind die Befehle 'nimm', 'gib' und 'vor' nicht uneinge­
+schränkt ausführbar. Aus diesem Grunde sind noch die
+folgenden #on("u")#Basistests#off("u")# definiert:
+
+#on("u")#vorn frei#off("u")#
+ testet, ob die vor ihm liegende Kachel frei ist.
+
+#on("u")#korn da / werkstueck da#off("u")#
+ testet, ob auf der Kachel, auf der er steht, mindestens
+ ein Korn/Werkstück liegt.
+
+#on("u")#backen leer /behaelter leer#off("u")#
+ testet, ob kein Korn/Werkstück in den Backentaschen/im
+ Behälter ist.
+
+ Darüberhinaus können Sie bei der Installation des
+Systems noch festlegen, ob die folgenden #on("u")#Zusatztests#off("u")# zur
+Verfügung stehen sollen oder nicht:
+
+#on("u")#links frei#off("u")#
+ testet, ob die Kachel links neben ihm frei ist.
+
+#on("u")#rechts frei#off("u")#
+ testet, ob die Kachel rechts neben ihm frei ist.
+
+#on("u")#hinten frei#off("u")#
+ testet, ob die Kachel hinter ihm frei ist.
+
+#on("u")#korn vorn / werkstueck vorn#off("u")#
+ testet, ob auf der Kachel vor ihm mindestens ein Korn/
+ Werkstück liegt.
+
+#on("u")#korn links / werkstueck links#off("u")#
+ testet, ob auf der Kachel links neben ihm mindestens
+ ein Korn/ Werkstück liegt.
+
+#on("u")#korn rechts / werkstueck rechts#off("u")#
+ testet, ob auf der Kachel rechts neben ihm mindestens
+ ein Korn/Werkstück liegt
+
+#on("u")#korn hinten / werkstueck hinten#off("u")#
+ testet, ob auf der Kachel hinter ihm mindestens ein
+ Korn/Werkstück liegt.
+
+ Es gibt #on("u")#keinen#off("u")# Testbefehl, mit dem überprüft werden
+kann, ob der Rand der Ebene erreicht ist.
+
+
+2.2.2 Landschaftsgestaltung/Arbeitsfeldgestaltung
+
+ Der Benutzer kann selber Landschaften/Arbeitsfelder
+erstellen, auf denen Herbert bzw. Robbi bewegt werden
+kann. Es können aber auch fertige Ebenen verändert wer­
+den.
+ Eine Landschaft/ein Arbeitsfeld ist eine Ebene aus
+23 x 40 Kacheln. Eine Kachel kann auf dem Bildschirm so
+aussehen:
+
+ Leere Kachel : Blank und Punkt (" .")
+ Kornkachel : Blank und kleines o (" o")
+ Hindernis : zwei Nummernzeichen ("\#\#")
+
+ In dieser Landschaft steht auf einer der Kacheln Her­
+bert bzw. Robbi:
+
+ "A" mit Blickrichtung nach oben
+ ">" mit Blickrichtung nach rechts
+ "V" mit Blickrichtung nach unten
+ "<" mit Blickrichtung nach links
+
+
+#on("u")#Beispiel:#off("u")# Ausschnitt aus einer Landschaft:
+
+#on("b")#
+ . . . . . . . . . . . . . . . . . . . .
+ . . o o o o o o o o o o . . . . . . . .
+ . . o . . . . . . . . o . . . . . . . .
+ . . o . . . . . . . . o . . . . . . . .
+ . o o .\#\#\#\#\#\#\#\#\#\#\#\# . o . . . . . . . .
+ . o . .\#\# .V. . .\#\# . o o o o o o o . .
+ . o . .\#\# . o . .\#\# . . . . . . . o . .
+ . o o o o o o . .\#\# . . . o o o o o . .
+ . . . .\#\# . . . .\#\# . . . o . . . . . .
+ . . . .\#\# . . . .\#\# . . . o o o o . . .
+ . . . .\#\#\#\#\#\#\#\#\#\#\#\# . . . . . . o o . .
+ . . . . . . . . . . . . . . . . . . . .
+
+Während der Landschaftsgestaltung wirken folgende
+Tasten:
+
+<h> halt, beende die Landschafts-/Arbeitsfeld­
+ gestaltung
+<\#> setze ein Hindernis und gehe ein Feld
+ weiter
+<LEERTASTE> leere das Feld und gehe ein Feld weiter
+<g> lege hier ein Korn/Werkstück ab
+<n> nimm ein Korn/Werkstück auf (falls hier
+ welche liegen)
+<z> zeige, wie viele Körner/Werkstücke hier
+ liegen
+<k> ersetze diese Landschaft/diese Arbeitsfeld
+ durch die Kopie einer bereits vorhandenen
+ anderen Landschaft/eines bereits vorhan­
+ denen anderen Arbeitsfeldes
+
+- Durch Drücken der Fragezeichentaste (<?>) während der
+ Landschafts-/Arbeitsfeldgestaltung, können Sie sich
+ diese Hinweise auch auf dem Bildschirm einblenden
+ lassen.
+
+- Mit den Pfeiltasten kann Herbert/Robbi bewegt und
+ seine Richtung verändert werden.
+
+- Die Landschaftsgestaltung wird durch Tippen der
+ Taste <h> abgeschlossen. Die Position und die Blick­
+ richtung, die Herbert bzw. Robbi zu diesem Zeitpunkt
+ innehat, wird als Startposition vermerkt.
+
+- Auf dem Bildschirm wird dann noch die Zahl der Kör­
+ ner/Werkstücke erfragt, die Herbert bzw.Robbi zu Be­
+ ginn des Laufes in seinen Backentaschen/in seinem
+ Behälter haben soll. Hier muß eine Zahl zwischen 0 und
+ 32767 eingegeben werden.
+
+
+2.3 Einsatzbereich
+
+ Das Hamster-/Roboter-Modell soll dazu dienen, die
+Grundelemente des algorithmischen Problemlösens (Folge,
+Auswahl, Wiederholung etc.) #on("u")#einfach#off("u")# und #on("u")#spielerisch#off("u")# zu
+erlernen und sie in der Programmiersprache ELAN zu co­
+dieren. In der Bildschirmdarstellung erinnert das Ham­
+ster-/Roboter-Modell zunächst an ein einfaches Tele­
+spiel, eine Anwendung des Computers, die sicher bekannt
+ist. Darüberhinaus lassen sich leicht Bezüge zur Steue­
+rung von Industrierobotern herstellen.
+ Durch die komfortable Benutzerschnittstelle wird dem
+Anwender in der Anfangsphase eine Auseinandersetzung
+mit dem Betriebssystem "erspart". Die Arbeit mit dem Mo­
+dell setzt #on("u")#keine Vorerfahrungen und Kenntnisse#off("u")# voraus.
+Das Modell ist schon nach weniger als einer halben Stun­
+de für den Anfänger überschaubar. Er kann dann schon
+Aufgaben lösen, sich selbst Aufgaben stellen bzw. die
+gegebene Aufgabenstellung erweitern.
+ Das Modell zielt auf die Aktivierung des Lernenden
+und die Mitarbeit in allen Punkten: Aufgabenstellung,
+Lösungsgestaltung, Lösungstest und -verifizierung. Der
+Lernfortschritt kann in stärkerem Maße als im "herkömm­
+lichen Programmierunterricht" von den Lernenden selbst
+bestimmt werden. Der spielerische Anfang, die Veran­
+schaulichung der Programmausführung auf dem Bild­
+schirm, die Möglichkeit Fehler direkt und eigenständig
+zu erkennen, fördern die Motivation, die Kreativität und
+die Fehler- und Frustrationstoleranz.
+
+
+2.4 Hinweise für den Einsatz in der Ausbildung
+
+ Das Hamster-/Roboter-Modell ist angelegt für "Pro­
+grammieren" mit Bleistift und (kariertem) Papier. Für die
+Überlegungen, die anzustellen sind, ist der Computer
+selbst in der Anfangsphase #on("u")#nicht notwendig#off("u")#. Man kann
+Kachel-Landschaften / Kachel-Arbeitsfelder aufzeich­
+nen und vorgegebene oder sich selbst gestellte Aufgaben
+lösen. Die erstellten Programme werden ausgeführt, indem
+man z.B. eine kleine Büroklammer als Hamster/Roboter auf
+dem Papier oder der Folie dem Programm entsprechend ver­
+schiebt. Heftzwecken oder Pfennigstücke können als Kör­
+ner/ Werkstücke und Streichholzstücke als Hindernisse
+dienen.
+ #on("b")#gs-Herbert und Robbi#off("b")# verfügt auch über die Möglich­
+keit, den Hamster/Roboter interaktiv zu steuern. Auch
+hierüber ist ein Einstieg in den Umgang mit dem Modell
+möglich. Bei der interaktiven Steuerung kann der Ham­
+ster/Roboter von Hand durch Tastendruck auf dem Bild­
+schirm bewegt werden. Dabei können nur die vier Basisbe­
+fehle ('vor', 'links um', 'nimm' und 'gib') verwendet werden.
+Während der Steuerung von Hand wird ein "Protokoll" der
+ausgeführten Befehle angelegt - und zwar gleich in Form
+eines ablauffähigen ELAN-Programms. Dadurch hat der
+Benutzer einerseits die Möglichkeit, die Anweisungen, die
+durch Tastendruck gegeben wurden, zu kontrollieren,
+andererseits kann anschließend die Folge der eingegebe­
+nen Anweisungen auch als Programm vom Computer ausge­
+führt werden ('Teach in').
+
+ Nach diesem "ersten Kennenlernen des Modells" sollte
+man dann aber bei Problemstellungen, die ein systemati­
+sches Vorgehen erfordern, die Arbeit mit dem Computer
+unterbrechen und die Algorithmen jeweils auf dem Papier
+entwerfen. Auf die Ausführung der erstellten Anwei­
+sungsfolgen von Hand auf Papier/Folie sollte man #on("u")#auf
+keinen Fall gänzlich verzichten#off("u")# - auch, um den Lernen­
+den zu verdeutlichen, daß die Befehlsfolgen sowohl vom
+"Prozessor Mensch" als auch vom "Prozessor Computer"
+ausgeführt werden können; der Computer also nur ein
+Hilfswerkzeug ist.
+ Erst wenn das Bilden eigener benannter Anweisungen
+(Refinements/Prozeduren) den Lernenden hinreichend ver­
+traut ist, ist es sinnvoll, umfangreichere Problemstel­
+lungen anzugehen. Da dann auch die Programmausführung
+von Hand mühsam wird und ihren Reiz verliert, sollte man
+(wieder) zum Computermodell übergehen, um mit dessen Hil­
+fe die Programme auszuführen und zu überprüfen.
+ Nachdem die Lernenden die Basisbefehle sicher beherr­
+schen und eigene benannte Anweisungen unter Verwendung
+der Basisbefehle konstruieren können, können dann nach
+und nach die vorgegebenen Tests und damit auch die ande­
+ren Elemente der Algorithmenentwicklung (Auswahl, Wie­
+derholung etc.) in den Unterricht eingebracht werden.
+ Als notwendig hat es sich erwiesen, von Anfang an auf
+eine saubere Strukturierung und Modularisierung der
+Algorithmen zu achten. Gerade Lernende mit "Program­
+miererfahrung" neigen dazu, möglichst "kurze" Program­
+me schreiben zu wollen. Besonderen Wert sollten Sie auf
+eine treffende Namensgebung der einzelnen Module legen,
+selbst wenn die Lernenden das oft als "lästige Schreibar­
+beit" empfinden. Aufgaben können ein Einzel-, Partner-
+und Gruppenarbeit bearbeitet werden. Dabei hat sich die
+Arbeit in kleinen Gruppen als besonders effektiv erwie­
+sen. Die Lernenden sind untereinander zumeist sehr kri­
+tisch und fordern sich gegenseitig auf, "lesbare" Pro­
+gramme zu schreiben. Ein Austausch der Programme unter
+den Gruppen kann diesen Anspruch noch zusätzlich för­
+dern.
+
+
+2.5 Aufgabenmaterial
+
+ Zum Hamster-Roboter-Modell sind inzwischen eine Rei­
+he von Aufgaben / Aufgabensystemen enstanden. An dieser
+Stelle soll auf zwei Veröffentlichungen hingewiesen
+werden, in denen Sie solche Aufgaben / Aufgabensysteme
+finden können:
+
+Weber, Wolfgang et al., Das Hamster-/Roboter-Modell,
+ in: Landesinstitut für Schule und Weiterbildung
+ (Hrsg.), Materialien zur Lehrerfortbildung in
+ Nordrhein-Westfalen, Heft 1, Neue Technologien
+ - Informations- und Kommunikationstechnologi­
+ sche Inhalte im Wahlpflichtunterricht der Klas­
+ sen 9/10, Soest, 1986
+
+Ambros, Wolfgang, Der Hamster, Programmieren lernen in
+ einer Modellwelt, J.B. Metzlersche Verlagsbuch­
+ handlung, Stuttgart, 1987
+
+
+2.6 Erfahrungen mit dem Hamster-/Roboter-Modell
+
+ Seit 1982 wird das Hamster - Modell in der GMD zur
+Programmierausbildung eingesetzt. Die Ergebnisse sind
+hervorragend: Die Teilnehmer bewältigen in derselben
+Zeit erheblich mehr Inhalte als früher ohne Modell. Moti­
+vation, Selbständigkeit und Initiative prägen sich er­
+heblich früher und merklich stärker aus. Außerdem sind
+die am Modell erworbenen Kenntnisse tiefer und sicherer.
+ Seit 1983 wird das Hamster - Modell auch in mehreren
+Schulen mit sehr gutem Erfolg eingesetzt. Der Erfolg ist
+am größten im Blockunterricht (3 - 5 Tage z.B. in Projekt­
+wochen, Schullandheimaufenthalten etc.). Aber auch im
+stundenweisen Unterricht wird das Hamster-/Roboter-
+Modell mit gutem Erfolg eingesetzt.
+ Beide Zugänge, der Einstieg über das Arbeiten mit
+Bleistift und Papier und der Einstieg über die interakti­
+ve Steuerung des Hamsters/Roboters, haben sich als prak­
+tikabel erwiesen. Der Zugang über die interaktive Steue­
+rung bietet den Vorteil, die zumeist sehr hohe Motivation
+der Lernenden, "endlich mit dem Computer arbeiten zu
+können", auszunutzen. Sie lernen dabei das Computermo­
+dell auf einfache Weise kennen und haben einen ersten
+Umgang mit Bildschirm und Tastatur. Kleine, einfache
+Problemstellungen können von ihnen durch die interak­
+tive Steuerung schnell und sicher bearbeitet werden.
+"Nebenbei" lernen sie, neben der Wirkung der Basisbefeh­
+le, durch das mitgeführte Protokoll auch die Codierung
+in der Programmiersprache kennen. Allerdings verliert
+die interaktive Steuerung relativ schnell ihren Reiz,
+wenn die Lernenden erkennen, daß nur sehr einfache Pro­
+blemstellungen damit bearbeitet werden können. Dann
+sollte aber zur Arbeit mit Papier und Bleistift überge­
+gangen werden.
+ Die Entscheidung, ganz auf das Arbeiten mit Papier
+und Bleistift zu verzichten, hat sich als sehr nachteilig
+erwiesen. Die Lernenden "hacken" die Programme in die
+Maschine und handeln eher nach dem "Prinzip von Versuch
+und Irrtum" als nach sorgfältigen Überlegungen. Bei
+komplexeren Problemstellungen scheitern diese Teilneh­
+mer zumeist.
+ Erfahrungsgemäß nimmt nach einiger Zeit der Wunsch
+stark zu, eigene Ausgaben auf dem Bildschirm zu erzeugen
+und andere Problembereiche zu bearbeiten (zum "richtigen
+Programmieren" überzugehen). Sie sollten diesen Schritt
+dann auch nicht zu lange hinauszögern und das Modell
+auf keinen Fall überstrapazieren. Da das Modell selbst
+und auch der Umgang damit sehr einfach ist, besteht auch
+später die Möglichkeit, zum Modell zurückzukehren, um
+hieran weitere Elemente der Algorithmenentwicklung in
+einfacher und anschaulicher Form einzuführen.
+
+
diff --git a/app/gs.hamster/1.1/doc/A5 - Doku: gs-Herbert und Robbi - Kapitel 3 b/app/gs.hamster/1.1/doc/A5 - Doku: gs-Herbert und Robbi - Kapitel 3
new file mode 100644
index 0000000..c34b752
--- /dev/null
+++ b/app/gs.hamster/1.1/doc/A5 - Doku: gs-Herbert und Robbi - Kapitel 3
@@ -0,0 +1,199 @@
+#limit (11.0)##pagelength (16.5)##block#
+#start (2.0,0.0)#
+#page (17)#
+#headodd#
+#center#gs-Herbert und Robbi#right#%
+
+#end#
+#headeven#
+%#center#gs-Herbert und Robbi
+
+#end#
+#center#3
+
+#center#Installation
+#center#von
+#center#gs-Herbert und Robbi
+
+
+ Bevor Sie #on("b")#gs-Herbert und Robbi#off("b")# auf Ihrem Computer
+benutzen können, müssen Sie das Programm zunächst in­
+stallieren. Wenn #on("b")#gs-Herbert und Robbi#off("b")# auf Ihrem System
+schon zur Verfügung steht, können Sie dieses Kapitel
+ruhig überspringen.
+
+
+3.1 Voraussetzungen
+
+ Um #on("b")#gs-Herbert und Robbi#off("b")# auf Ihrem Computer betreiben
+zu können, muß das EUMEL-Betriebssystem installiert
+sein. #on("b")#gs-Herbert und Robbi#off("b")# setzt die Multi-User-Version
+voraus und ist lauffähig ab Version 1.7.5. #on("b")#gs-Herbert und
+Robbi#off("b")# setzt weiterhin voraus, daß auf Ihrem Computer
+bereits das Programm #on("b")#gs-DIALOG#off("b")# installiert ist.
+
+
+3.2 Lieferumfang
+
+ #on("b")#gs-Herbert und Robbi#off("b")# wird auf einer Diskette gelie­
+fert, die alle notwendigen Programme enthält (die Instal­
+lation von #on("b")#gs-DIALOG#off("b")# wird dabei vorausgesetzt!). Um den
+Inhalt der Diskette feststellen zu können, starten Sie
+Ihr System und bringen es dazu, daß 'gib kommando:' er­
+scheint. Dann legen Sie die Diskette ein und geben das
+Kommando:
+
+archive("gs-Herbert und Robbi");list(archive);
+release(archive) <RETURN>
+
+ Anschließend erscheint eine Übersicht der auf dem
+Archiv vorhandenen Programme. Folgende Programme soll­
+ten sich in der Übersicht befinden:
+
+ "gs-Herbert und Robbi 1"
+ "gs-Herbert und Robbi 2"
+ "gs-Herbert und Robbi 3"
+ "gs-MENUKARTE:Herbert und Robbi"
+ "gs-Herbert und Robbi/gen"
+
+ Eventuell können noch weitere Namen auf der Diskette
+vorhanden sein. Wenn Sie den Inhalt der Diskette kon­
+trolliert haben und diese Programme auf der Diskette
+vorhanden sind, können Sie #on("b")#gs-Herbert und Robbi#off("b")# instal­
+lieren.
+ Sollten Sie statt der Übersicht eine Fehlermeldung
+erhalten, überprüfen Sie bitte, ob die Diskette das rich­
+tige Format besitzt oder ob Ihr Diskettenlaufwerk Pro­
+bleme macht. Sollten dagegen Programme fehlen, so rekla­
+mieren Sie die Diskette.
+
+
+3.3 Installation
+
+ #on("b")#gs-Herbert und Robbi#off("b")# muß in einer Task installiert
+werden, in der bereits das Programm #on("b")#gs-DIALOG#off("b")# zur Ver­
+fügung steht. Alle Söhne und Enkel der neuen Task kön­
+nen anschließend das Hamster-/ Roboter-Modell aufrufen.
+Richten Sie also eine Task als Sohn der Task ein, in der
+auf Ihrem Computer bereits #on("b")#gs-DIALOG#off("b")# installiert ist. Wir
+nehmen hier an, daß #on("b")#gs-DIALOG#off("b")# in der Task 'MENU' instal­
+liert ist und die neue Task den Namen 'HAMSTER' erhalten
+soll. (Sie können für die Task auch einen beliebigen an­
+deren Namen wählen):
+
+#on("b")#
+ <SV> (Supervisor - Taste)
+
+#off("b")#
+ --> gib supervisor kommando:
+#on("b")#
+ begin ("HAMSTER","MENU") <RETURN>
+#off("b")#
+
+ --> gib kommando:
+
+ (Arbeiten mehrere Personen mit dem Computer, dann ist
+es sinnvoll, diese Task vor unbefugtem Zugriff durch ein
+Passwort zu schützen. Wie das gemacht wird, können Sie in
+Ihrem EUMEL-Benutzerhandbuch erfahren.)
+
+ Legen Sie dann die Archivdiskette ein, auf der sich
+#on("b")#gs-Herbert und Robbi#off("b")# befindet, und geben Sie das folgen­
+de Kommando:
+
+#on("b")#
+ archive("gs-Herbert und Robbi") <RETURN>
+
+ fetch("gs-Herbert und Robbi/gen",archive) <RETURN>
+
+ run <RETURN>
+#off("b")#
+
+ Sie haben damit das Generatorprogramm gestartet.
+Zunächst werden Sie gefragt, ob Sie den erweiterten Be­
+fehlssatz (mit Zusatztests) für den Hamster und Roboter
+zur Verfügung gestellt haben möchten. Beantworten Sie
+diese Frage je nach Wunsch mit 'ja' oder 'nein' durch Tip­
+pen der Taste <j> bzw. <n>.
+ Daraufhin wird die Installation automatisch durchge­
+führt. Lassen Sie während des gesamten Vorgangs die Ar­
+chivdiskette eingelegt. Die Generierung ist beendet, wenn
+der EUMEL-Eingangsbildschirm erscheint. Die Task, in der
+die Generierung stattfindet, wird automatisch zur Mana­
+gertask, das heißt, daß Söhne von ihr eingerichtet werden
+können.
+ Richten Sie sich gleich eine Sohntask (z.B mit dem Na­
+men 'hamster1') ein, dann können Sie das System sofort
+ausprobieren. Gehen Sie dazu folgendermaßen vor:
+
+#on("b")#
+ <SV> (Supervisor - Taste)
+
+#off("b")#
+ --> gib supervisor kommando:
+#on("b")#
+ begin ("hamster1","HAMSTER") <RETURN>
+#off("b")#
+
+ --> gib kommando:
+
+
+Mit dem Kommando
+
+#center##on("b")#hamster <RETURN> bzw. roboter <RETURN>#off("b")#
+
+rufen Sie nun das
+
+#center#Hamster-Modell bzw. Roboter-Modell
+
+auf.
+
+
+3.4 Direktstart des Modells
+ (Steht erst ab gs-DIALOG Version 1.1 zur Verfügung)
+
+ In Kapitel 3.3 haben wir Ihnen gezeigt, wie sie eine
+Sohntask einrichten und hier durch das Kommando 'ham­
+ster' bzw. 'roboter' das System aufrufen können. Wenn Sie
+immer nur mit einer Modellvariante arbeiten oder vor dem
+Benutzer die 'gib kommando:'-Ebene verbergen wollen,
+können Sie das System auch so einrichten, daß sich sofort
+nach Einrichten des Arbeitsbereichs das Menusystem mel­
+det. Für den Anfänger kann das die Arbeit durchaus er­
+leichtern.
+ Gehen Sie dazu in die Task, unterhalb der die Sohntasks
+eingerichtet werden sollen:
+
+#on("b")#
+ <SV> (Supervisor - Taste)
+
+#off("b")#
+ --> gib supervisor kommando:
+#on("b")#
+ continue ("HAMSTER") <RETURN>
+#off("b")#
+
+ --> gib kommando:
+#on("b")#
+ direktstart ("hamster", TRUE) <RETURN>
+#off("b")#
+
+ Durch das Kommando haben Sie festgelegt, daß sich
+alle Sohntasks direkt mit dem Hamstermenu melden. Möch­
+ten Sie lieber mit dem Roboter-Modell arbeiten, ist nur
+'hamster' durch 'roboter' zu ersetzen.
+ Durch den zweiten Parameter 'TRUE' legen Sie fest, daß
+in den Sohntasks nach Verlassen des Menus die jeweilige
+Task automatisch gelöscht wird. Statt 'TRUE' können Sie
+hier auch den Wert 'FALSE' eintragen. Dann wird nach Ver­
+lassen des Menus angefragt, ob die Task gelöscht werden
+soll. Wird die Frage bejaht, wird gelöscht - sonst wird die
+Task abgekoppelt (break) und kann durch 'continue' wieder
+angekoppelt werden.
+ Anmerkung: In der Task, in der Sie das Kommando
+'direktbefehl' gegeben haben, sollte nicht das Kommando
+'monitor' gegeben werden, da Sie durch dieses Kommando
+auch diese Task zu einer Task machen, die sich direkt mit
+dem Menu meldet und ggf. bei Verlassen des Menus automa­
+tisch gelöscht wird!
+
diff --git a/app/gs.hamster/1.1/doc/A5 - Doku: gs-Herbert und Robbi - Kapitel 4 b/app/gs.hamster/1.1/doc/A5 - Doku: gs-Herbert und Robbi - Kapitel 4
new file mode 100644
index 0000000..4f2d79a
--- /dev/null
+++ b/app/gs.hamster/1.1/doc/A5 - Doku: gs-Herbert und Robbi - Kapitel 4
@@ -0,0 +1,1312 @@
+#limit (11.0)##pagelength (16.5)##block#
+#start (2.0,0.0)#
+#page (22)#
+#headodd#
+#center#gs-Herbert und Robbi#right#%
+
+#end#
+#headeven#
+%#center#gs-Herbert und Robbi
+
+#end#
+#center#4
+
+#center#Beschreibung
+#center#der
+#center#Menufunktionen
+
+
+ Nach Aufruf meldet sich #on("b")#gs-Herbert und Robbi mit
+#on("u")#einem#off("u")# der folgenden Menus:
+
+
+#on("b")#
+HAMSTER: Info Landschaft Programm Lauf Archiv
++---------------------------+--------------------------------------------
+| l Landschaftsgestaltung |
+| b Befehlsvorrat |
+| s Steuerung des Laufs |
++---------------------------+
+
+
+
+
+
+
+
+
+
+
+
+
+-------------------------------------------------------------------------
+Info:<ESC><?>/<?> Wahl:<Pfeile> Ausführen:<RETURN> Verlassen:<ESC><q>
+#off("b")#
+
+#on("u")#oder#off("u")#
+
+#on("b")#
+ROBOTER: Info Arbeitsfeld Programm Lauf Archiv
++----------------------------+--------------------------------------------
+| a Arbeitsfeldgestaltung |
+| b Befehlsvorrat |
+| s Steuerung des Laufs |
++----------------------------+
+
+
+
+
+
+
+
+
+
+
+
+
+--------------------------------------------------------------------------
+Info:<ESC><?>/<?> Wahl:<Pfeile> Ausführen:<RETURN> Verlassen:<ESC><q>
+#off("b")#
+
+ Beide Varianten sind, wie schon gesagt, analog auf­
+gebaut. Aus diesem Grunde werden wir uns in den folgen­
+den Ausführungen auf die Beschreibung der Hamster -
+Variante beschränken.
+
+
+4.1 Kurzhinweise zur Bedienung des Menus
+
+ Die Bedienung des Menus ist sehr einfach. Eine aus­
+führliche Beschreibung dazu finden Sie in den Unterla­
+gen zum Programmsystem #on("b")#gs-DIALOG#off("b")#. An dieser Stelle sol­
+len nur die wesentlichen Bedienungsvorgänge beschrieben
+werden.
+
+- Mit der Tastenfolge <ESC><?> können Sie sich Informa­
+ tionen zur Bedienung des Menusystems in das Menu
+ einblenden lassen
+
+- Mit den Pfeiltasten <rechts> und <links> können Sie
+ zwischen den "Oberbegriffen" in der Kopfzeile wählen.
+ Der aktuelle Oberbegriff ist jeweils invers darge­
+ stellt. Das ausgeklappte 'Pull-Down-Menu' bezieht sich
+ auf diesen invers dargestellten Oberbegriff.
+
+- Mit den Pfeiltasten <hoch> und <runter> können Sie
+ zwischen den Menufunktionen wählen, die Ihnen im
+ aktuellen Pull-Down-Menu zur Auswahl angeboten
+ werden. Die aktuell angewählte Menufunktion wird
+ jeweils invers dargestellt. Die Trennlinien, die in
+ einigen Pull-Down-Menus sichtbar sind, dienen nur
+ der optischen Untergliederung; sie können nicht an­
+ gewählt werden und werden deshalb automatisch über­
+ sprungen. Die einzelnen Menupunkte sind "zyklisch
+ miteinander verknüpft", das heißt, man gelangt vom
+ untersten Menupunkt wieder zum obersten und umge­
+ kehrt. Menupunkte, vor denen ein Minuszeichen steht
+ ('-'), sind (zur Zeit) nicht aktivierbar; auch sie können
+ nicht angewählt werden und werden einfach über­
+ sprungen.
+
+- Durch Tippen der Fragezeichentaste (<?>) können Sie
+ sich jeweils zur aktuellen Menufunktion (invers im
+ Pull-Down-Menu) Informationen in das Menu einblen­
+ den lassen.
+
+- Um eine Menufunktion ausführen zu lassen, bewegen
+ Sie sich mit den Pfeiltasten auf die gewünschte Menu­
+ funktion im aktuellen Pull-Down-Menu und tippen
+ dann die <RETURN>-Taste. Steht vor dem gewünschten
+ Menupunkt ein einzelner Buchstabe oder eine Ziffer,
+ so kann durch Tippen der entsprechenden Taste diese
+ Menufunktion dadurch direkt aufgerufen werden. So­
+ bald eine Menufunktion aufgerufen worden ist, er­
+ scheint davor ein Stern ('*'). Daraus können Sie ent­
+ nehmen, daß das System bereits den Auftrag ausführt.
+
+- An verschiedenen Stellen werden Fragen an Sie ge­
+ richtet, die Sie mit 'ja' oder 'nein' beantworten müssen.
+ Tippen Sie dazu entsprechend der Entscheidung die
+ Taste <j> (für 'ja') bzw. <n> (für 'nein').
+
+- Werden Ihnen vom Menu aus Dateinamen zur Auswahl
+ angeboten, so können Sie den auf dem Bildschirm
+ sichtbaren Pfeil vor den gewünschten Namen positio­
+ nieren. Mit den Tasten <x> oder <RETURN> können Sie
+ den Namen ankreuzen. Ist die Auswahl mehrerer Datein­
+ amen möglich, so können Sie den Vorgang wiederholen.
+ Mit den Tasten <o> oder <RUBOUT> können Sie auch ein
+ Kreuz vor einem Namen wieder löschen. Daneben gibt es
+ noch einige Tastenfunktionen, die für die Bedienung
+ recht hilfreich sein können. Tippen Sie während der
+ Auswahl die Fragezeichentaste (<?>), so werden Ihnen
+ alle Bedienungsmöglichkeiten auf dem Bildschirm an­
+ gezeigt. Eine Auswahl, in der mehrere Dateien ange­
+ kreuzt werden dürfen, wird durch die Tastenfolge
+ <ESC><q> verlassen. Anschließend wird die eingestellte
+ Operation mit den angekreuzten Dateien ausgeführt.
+ Sind Sie versehentlich in eine solche Auswahl ge­
+ langt, so können Sie den Vorgang durch die Tasten­
+ kombination <ESC><h> abbrechen.
+
+- An einigen Stellen werden Sie aufgefordert, eine Ein­
+ gabe zu machen (z.B. einen Dateinamen einzugeben). Wird
+ Ihnen hier ein Vorschlag gemacht, den Sie akzeptieren,
+ so brauchen Sie zur Bestätigung nur die <RETURN>-
+ Taste zu tippen. Gefällt Ihnen der Vorschlag nicht
+ oder wird Ihnen kein Vorschlag gemacht, so machen Sie
+ bitte die gewünschte Eingabe. Zum Schreiben stehen
+ Ihnen alle aus dem Editor bekannten Funktionen zur
+ Verfügung. Mit der Taste <RUBOUT> können Sie Buch­
+ staben löschen, mit <RUBIN> einfügen. Die Eingabe wird
+ durch Tippen der <RETURN>-Taste abgeschlossen. Ist
+ der von Ihnen gewünschte Name schon in Ihrer Task
+ vorhanden und steht in der Fußzeile der Hinweis 'Zei­
+ gen: <ESC><z>', dann können Sie sich auch alle vorhan­
+ denen Namen zur Auswahl anbieten lassen und durch
+ Ankreuzen den beabsichtigten Namen auswählen.
+
+- Ihnen können auch mehrere Alternativen angeboten
+ werden, zwischen denen Sie wählen müssen. In der un­
+ tersten Zeile eines solchen Kastens, in denen Ihnen die
+ Alternativen auf dem Bildschirm eingeblendet werden,
+ sind die Möglichkeiten aufgeführt, die darüber be­
+ schrieben sind. Mit den Pfeiltasten können sie die
+ Markierung auf die gewünschte Alternative positio­
+ nieren und dann durch die <RETURN>-Taste zur Aus­
+ führung bringen. (Manchmal ist das auch durch Tippen
+ der den Alternativen vorangestellten Buchstaben oder
+ Ziffern möglich).
+
+- Durch die Tastenfolge <ESC><q> kann das Menu insge­
+ samt verlassen werden. Damit das nicht versehentlich
+ geschieht, wird jeweils die Frage gestellt, ob Sie das
+ Menu tatsächlich verlassen wollen. Diese Frage beant­
+ worten Sie bitte je nach Wunsch mit 'ja' oder 'nein'
+ durch Tippen der Tasten <j> bzw. <n>.
+
+#page#
+4.2 Menufunktionen zum Oberbegriff 'Info'
+
+ Das auf dem Bildschirm sichtbare Pull-Down-Menu ist
+oben abgebildet.
+
+#on("u")##on("b")#l Landschaftsgestaltung (a Arbeitsfeldgestaltung)#off("b")##off("u")#
+ Mit dieser Funktion können Sie sich alle Tasten,
+ die bei der Landschafts-/Arbeitsfeldgestaltung
+ wirksam sind, anzeigen lassen.
+ In der Anzeige wird die jeweilige Tastenfunktion
+ erläutert. Während der Landschafts-/Arbeitsfeld­
+ gestaltung können Sie sich diese Informationen
+ durch Tippen der Fragezeichentaste (<?>) ebenfalls
+ einblenden lassen.
+
+#on("u")##on("b")#b Befehlsvorrat#off("b")##off("u")#
+ Mit dieser Funktion können Sie sich die Befehle,
+ die Ihnen vom jeweiligen Modell zur Verfügung ge­
+ stellt werden, auf dem Bildschirm anzeigen lassen.
+ Anhand dieser Informationen können Sie auch
+ feststellen, ob in dem System, das Ihnen zur Verfü­
+ gung steht, der "eingeschränkte" oder "erweiterte"
+ Befehlssatz hinsichtlich der Tests realisiert ist.
+
+#on("u")##on("b")#s Steuerung des Laufs#off("b")##off("u")#
+ Mit dieser Funktion können Sie sich die Möglich­
+ keiten anzeigen lassen, wie Sie auf einen Hamster-
+ /Roboterlauf durch Tastendruck Einfluß nehmen
+ können:
+
+ <ESC> : beende den Lauf (Programmabbruch
+ durch Tastendruck)
+ <?> : zeige diese Information (während des
+ Programmablaufs!)
+
+ 0 : Einzelschritt (dazu beliebige Taste
+ drücken)
+ 1 : geringste Geschwindigkeit
+ 9 : höchste Geschwindigkeit
+ 2 ... 8 : dazwischenliegende Geschwindigkeiten
+
+ <+> : laufe schneller
+ <-> : laufe langsamer
+
+ Zu Beginn eines Laufes ist die Geschwindigkeit '5'
+ eingestellt.
+#page#
+4.3 Menufunktionen zum Oberbegriff 'Landschaft'(Ar­
+ beitsfeld)
+
+#on("b")#
+HAMSTER: Info Landschaft Programm Lauf Archiv
+----------+--------------------+------------------------------------------
+ | n Neu erstellen |
+ | a Ansehen/Ändern |
+ | ---------------- |
+ | v Verzeichnis |
+ | ---------------- |
+ | l Löschen |
+ | d Drucken |
+ | ---------------- |
+ | k Kopieren |
+ | u Umbenennen |
+ +--------------------+
+
+
+
+
+
+--------------------------------------------------------------------------
+Info:<ESC><?>/<?> Wahl:<Pfeile> Ausführen:<RETURN> Verlassen:<ESC><q>
+#off("b")#
+
+#on("u")##on("b")#n Neu erstellen#off("b")##off("u")#
+ Mit dieser Funktion können Sie eine neue Land­
+ schaft/ein neues Arbeitsfeld unter einem neuen
+ Namen anlegen und gestalten.
+ Sie werden zunächst nach einem Namen für die
+ #on("u")#neue#off("u")# Landschaft/das #on("u")#neue#off("u")# Arbeitsfeld gefragt. Ge­
+ ben Sie einen beliebigen Namen (#on("u")#ohne Anführungs­
+ zeichen (!)#off("u")# und #on("u")#ohne das Präfix 'Flaeche:' (!)#off("u")#) ein und
+ schließen Sie die Eingabe durch <RETURN> ab. Dar­
+ aufhin wird Ihnen auf dem Bildschirm eine leere
+ Landschaft/ein leeres Arbeitsfeld angeboten.
+ Sollte schon eine Landschaft/ein Arbeitsfeld
+ mit diesem Namen in der Task vorhanden sein, so
+ werden Sie darauf aufmerksam gemacht. Sie können
+ sich während der Landschaftsgestaltung auch je­
+ derzeit eine Aufstellung der wirksamen Tasten mit
+ Beschreibung der Funktionen auf den Bildschirm
+ ausgeben lassen. Drücken Sie dazu die Fragezeichen­
+ taste (<?>).
+
+ Fehlerfälle:
+ - Eine Landschaft/ein Arbeitsfeld mit dem vorge­
+ schlagenen Namen existiert schon.
+
+#on("u")##on("b")#a Ansehen/Ändern#off("b")##off("u")#
+ Mit dieser Funktion können Sie schon in Ihrer
+ Task existierende Landschaften/Arbeitsfelder zur
+ Ansicht oder zur Überarbeitung anfordern.
+ Sie werden zunächst gefragt, ob Sie #on("u")#die zuletzt
+ bearbeitete Landschaft#off("u")#/#on("u")#das zuletzt bearbeitete Ar­
+ beitsfeld#off("u")# ansehen bzw. verändern möchten (sofern
+ Sie schon vorher mit dem Modell in der Task gear­
+ beitet haben).
+ Bejahen Sie diese Frage, dann wird Ihnen diese
+ Landschaft/dieses Arbeitsfeld zur Bearbeitung
+ angeboten. Verneinen Sie die Frage dagegen, so ge­
+ langen Sie in die 'Auswahl' (d.h es werden Ihnen alle
+ Landschaften/Arbeitsfelder in der Task zur Auswahl
+ angeboten). Nachdem Sie einen der Namen angekreuzt
+ haben, wird Ihnen die ausgewählte Landschaft/das
+ ausgewählte Arbeitsfeld zur Bearbeitung auf dem
+ Bildschirm angeboten. Ihnen stehen die Tastenfunk­
+ tionen wie bei der Neuerstellung zur Verfügung.
+
+ Fehlerfälle:
+ - In der Task existiert noch keine Landschaft/kein
+ Arbeitsfeld.
+
+#on("u")##on("b")#v Verzeichnis#off("b")##off("u")#
+ Mit dieser Funktion können Sie sich einen Über­
+ blick über die in Ihrer Task vorhandenen Land­
+ schaften/Arbeitsfelder verschaffen.
+ Nach Aufruf dieser Funktion wird eine Liste der
+ Landschaften/Arbeitsfelder auf dem Bildschirm
+ ausgegeben, die sich in Ihrer Task befinden. Da die
+ Liste selbst eine Datei ist, kann Sie mit der Tasten­
+ kombination <ESC><q> verlassen werden - hierauf
+ wird auch in der Kopfzeile der Datei hingewiesen.
+ Falls nicht alle Namen auf den Bildschirm passen,
+ können Sie das Fenster mit <HOP><runter> und
+ <HOP><hoch> verschieben.
+
+#on("u")##on("b")#l Löschen#off("b")##off("u")#
+ Mit dieser Funktion können Sie Landschaften/
+ Arbeitsfelder, die Sie nicht mehr benötigen, die
+ unnötig Platz belegen, löschen. Aber Vorsicht! Die
+ Landschaften/Arbeitsfelder verschwinden durch
+ diese Funktion unwiederbringlich!
+ Nach Aufruf dieser Funktion werden Ihnen alle
+ Landschaften/Arbeitsfelder, die sich in Ihrer Task
+ befinden, zur Auswahl angeboten. Hier können Sie
+ die gewünschten Namen ankreuzen. Die Auswahl wird
+ dann durch die Tastenfolge <ESC><q> verlassen.
+ Für jede einzelne Landschaft/jedes einzelne Ar­
+ beitsfeld wird noch einmal zur Sicherheit gefragt,
+ ob sie/es auch tatsächlich gelöscht werden soll. Zur
+ Bestätigung tippen Sie bitte die Taste <j> ('ja') - zur
+ Verhinderung <n> ('nein').
+
+ Fehlerfälle:
+ - In der Task exsitiert noch keine Landschaft/
+ kein Arbeitsfeld.
+
+#on("u")##on("b")#d Drucken#off("b")##off("u")#
+ Mit dieser Funktion können Sie Landschaften/
+ Arbeitsfelder über einen angeschlossenen Drucker
+ ausgeben lassen.
+ Nach Aufruf dieser Funktion werden Ihnen alle
+ Landschaften/Arbeitsfelder, die sich in Ihrer Task
+ befinden, zur Auswahl angeboten. Hier können Sie
+ die gewünschten Namen ankreuzen. Die Auswahl wird
+ dann durch die Tastenfolge <ESC><q> verlassen.
+ Die angekreuzten Landschaften/Arbeitsfelder
+ werden anschließend zum Drucker geschickt. Der
+ Vorgang wird auf dem Bildschirm protokolliert.
+
+ Fehlerfälle:
+ - In der Task existiert noch keine Landschaft/
+ kein Arbeitsfeld.
+ - Der Drucker ist nicht funktionsbereit.
+ - Der Drucker wird nicht über die Task 'PRINTER'
+ betrieben.
+ - Auf Ihrem System werden die Druckkosten abge­
+ rechnet. Sie müssen sich mit einer Codenummer
+ identifizieren.
+
+#on("u")##on("b")#k Kopieren#off("b")##off("u")#
+ Mit dieser Funktion können Sie sich eine Kopie
+ einer/eines bereits in der Task vorhandenen Land­
+ schaft/Arbeitsfeldes anlegen. Das ist z.B. dann
+ sinnvoll, wenn Sie sich einen bestimmten 'Stand'
+ aufbewahren wollen oder wenn Sie eine Land­
+ schaft/ein Arbeitsfeld gestalten wollen, das einem
+ bereits vorhandenen ähnelt.
+ Nach Aufruf dieser Funktion werden Ihnen alle
+ Landschaften/Arbeitsfelder, die sich in Ihrer Task
+ befinden, zur Auswahl angeboten. Nach Ankreuzen
+ eines Namens wird die Auswahl automatisch verlas­
+ sen.
+ Anschließend wird der angekreuzte Name ange­
+ zeigt und der Name für die Kopie erfragt. Es muß ein
+ Name eingetragen werden, der in dieser Task noch
+ nicht für eine Landschaft/ein Arbeitsfeld verge­
+ ben wurde - ansonsten erfolgt ein Hinweis darauf
+ und es wird nicht kopiert!
+ Da man aber oft für die Kopie einen ähnlichen
+ Namen wie für das Original wählt, wird der 'alte'
+ Name vorgeschlagen. Aus genannten Gründen muß er
+ aber verändert werden. Sie können diesen Namen mit
+ den üblichen Editierfunktionen verändern oder mit
+ <HOP><RUBOUT> löschen und ganz neu eingeben. Sie
+ sparen aber eine Menge Tipparbeit, wenn Sie einen
+ langen Namen nur an einer Stelle ändern wollen.
+
+ Fehlerfälle:
+ - Eine Landschaft/ein Arbeitsfeld mit dem ge­
+ wünschten Namen existiert bereits in der Task.
+
+#on("u")##on("b")#u Umbenennen#off("b")##off("u")#
+ Mit dieser Funktion können Sie einer bereits
+ vorhandenen Landschaft/einem bereits vorhandenen
+ Arbeitsfeld einen neuen Namen geben.
+ Nach Aufruf dieser Funktion werden Ihnen alle
+ Landschaften/Arbeitsfelder, die sich in Ihrer Task
+ befinden, zur Auswahl angeboten. Nach Ankreuzen
+ eines Namens wird die Auswahl automatisch verlas­
+ sen.
+ Anschließend wird dieser Name angezeigt und der
+ zukünftige Name für die Landschaft/das Arbeitsfeld
+ erfragt. Es muß ein Name eingetragen werden, der in
+ dieser Task noch nicht für eine Landschaft/ein Ar­
+ beitsfeld vergeben wurde - ansonsten erfolgt ein
+ Hinweis darauf und die Landschaft/das Arbeitsfeld
+ wird nicht umbenannt!
+ Da man aber oft den 'neuen' Namen in Anlehnung
+ an den 'alten' Namen wählt, wird der 'alte' Name vor­
+ geschlagen. Aus genannten Gründen muß er aber
+ verändert werden. Sie können diesen Namen mit den
+ üblichen Editierfunktionen verändern oder mit
+ <HOP><RUBOUT> löschen und ganz neu eingeben. Sie
+ sparen aber eine Menge Tipparbeit, wenn Sie einen
+ langen Namen nur an einer Stelle ändern wollen.
+
+ Fehlerfälle:
+ - Eine Datei mit dem gewünschten Namen existiert
+ bereits in der Task.
+#page#
+4.4 Menufunktionen zum Oberbegriff 'Programm'
+
+#on("b")#
+HAMSTER: Info Landschaft Programm Lauf Archiv
+---------------------+--------------------+-------------------------------
+ | n Neu erstellen |
+ | a Ansehen/Ändern |
+ | ---------------- |
+ | v Verzeichnis |
+ | ---------------- |
+ | l Löschen |
+ | d Drucken |
+ | ---------------- |
+ | k Kopieren |
+ | u Umbenennen |
+ +--------------------+
+
+
+
+
+
+--------------------------------------------------------------------------
+Info:<ESC><?>/<?> Wahl:<Pfeile> Ausführen:<RETURN> Verlassen:<ESC><q>
+#off("b")#
+
+#on("u")##on("b")#n Neu erstellen#off("b")##off("u")#
+ Mit dieser Funktion können Sie eine neue Pro­
+ grammdatei anlegen und beschreiben.
+ Sie werden zunächst nach einem Namen für die
+ #on("u")#neue#off("u")# Programmdatei gefragt. Geben Sie einen belie­
+ bigen Namen (#on("u")#ohne Anführungszeichen (!)#off("u")#) ein und
+ schließen Sie die Eingabe durch <RETURN> ab. Dar­
+ aufhin wird Ihnen auf dem Bildschirm eine neue Da­
+ tei zum Beschreiben angeboten.
+ Sollte schon eine Programmdatei mit diesem Na­
+ men in der Task vorhanden sein, so werden Sie dar­
+ auf aufmerksam gemacht.
+ Sie können sich während des Schreibens die
+ wichtigsten Tastenfunktionen des Editers einblen­
+ den lassen. Tippen Sie dazu die Tastenfolge <ESC><?>.
+ Es erscheint dann das folgende Angebot aus dem Sie
+ auswählen können:
+
+ #on("b")#
+ +--------------------------------------------------+
+ | Der EUMEL - Editor |
+ | |
+ | b ... Beschreibung des Editors |
+ | w ... Wichtige Tasten |
+ | p ... Positionieren der Schreibmarke |
+ | k ... Korrigieren im Text (Einfügen/Löschen) |
+ | m ... Markierte Textpassagen bearbeiten |
+ | l ... Lernen im Editor |
+ | a ... Anweisungen im Editor (Kommandodialog) |
+ | |
+ | z ... Zurück in den Schreibmodus |
+ | |
+ | b w p k m l a z |
+ +--------------------------------------------------+
+#off("b")#
+
+ Fehlerfälle:
+ - Eine Datei mit dem vorgeschlagenen Namen exi­
+ stiert schon.
+
+#on("u")##on("b")#a Ansehen/Ändern#off("b")##off("u")#
+ Mit dieser Funktion können Sie sich Dateien, die
+ schon in Ihrer Task existieren, ansehen oder auch
+ verändern.
+ Sie werden zunächst gefragt, ob Sie #on("u")#die zuletzt
+ bearbeitete Programmdatei#off("u")# ansehen bzw. verändern
+ möchten (sofern Sie schon vorher mit dem Modell in
+ der Task gearbeitet haben).
+ Bejahen Sie diese Frage, dann wird Ihnen diese
+ Programmdatei zur Bearbeitung angeboten. Vernei­
+ nen Sie die Frage dagegen, so gelangen Sie in die
+ 'Auswahl' (d.h es werden Ihnen alle Programmdateien
+ in der Task zur Auswahl angeboten). Nachdem Sie
+ einen der Namen angekreuzt haben, wird Ihnen die
+ ausgewählte Programmdatei zur Bearbeitung auf dem
+ Bildschirm angeboten.
+
+ Fehlerfälle:
+ - In der Task existiert noch keine Programmdatei.
+
+#on("u")##on("b")#v Verzeichnis#off("b")##off("u")#
+ Mit dieser Funktion können Sie sich einen Über­
+ blick über die in Ihrer Task vorhandenen Programm­
+ dateien verschaffen.
+ Nach Aufruf dieser Funktion wird eine Liste der
+ Programmdateien auf dem Bildschirm ausgegeben, die
+ sich in Ihrer Task befinden. Da die Liste selbst eine
+ Datei ist, kann Sie mit der Tastenkombination
+ <ESC><q> verlassen werden - hierauf wird auch in
+ der Kopfzeile der Datei hingewiesen. Falls nicht
+ alle Namen auf den Bildschirm passen, können Sie
+ das Fenster mit <HOP><runter> und <HOP><hoch> ver­
+ schieben.
+
+#on("u")##on("b")#l Löschen#off("b")##off("u")#
+ Mit dieser Funktion können Sie Programmdateien,
+ die Sie nicht mehr benötigen, die unnötig Platz be­
+ legen, löschen. Aber Vorsicht! Die Programmdateien
+ verschwinden durch diese Funktion unwieder­
+ bringlich!
+ Nach Aufruf dieser Funktion werden Ihnen alle
+ Programmdateien, die sich in Ihrer Task befinden,
+ zur Auswahl angeboten. Hier können Sie die ge­
+ wünschten Namen ankreuzen. Die Auswahl wird dann
+ durch die Tastenfolge <ESC><q> verlassen.
+ Für jede einzelne Programmdatei wird noch ein­
+ mal zur Sicherheit gefragt, ob sie auch tatsächlich
+ gelöscht werden soll. Zur Bestätigung tippen Sie
+ bitte die Taste <j> ('ja') - zur Verhinderung <n>
+ ('nein').
+
+ Fehlerfälle:
+ - In der Task exsitiert noch keine Programmdatei
+
+#on("u")##on("b")#d Drucken#off("b")##off("u")#
+ Mit dieser Funktion können Sie Programmdateien
+ über einen angeschlossenen Drucker ausgeben las­
+ sen.
+ Nach Aufruf dieser Funktion werden Ihnen alle
+ Programmdateien, die sich in Ihrer Task befinden,
+ zur Auswahl angeboten. Hier können Sie die ge­
+ wünschten Namen ankreuzen. Die Auswahl wird dann
+ durch die Tastenfolge <ESC><q> verlassen.
+ Die angekreuzten Programmdateien werden an­
+ schließend zum Drucker geschickt. Der Vorgang wird
+ auf dem Bildschirm protokolliert.
+
+ Fehlerfälle:
+ - In der Task existiert noch keine Programmdatei.
+ - Der Drucker ist nicht funktionsbereit.
+ - Der Drucker wird nicht über die Task 'PRINTER'
+ betrieben.
+ - Auf Ihrem System werden die Druckkosten abge­
+ rechnet. Sie müssen sich mit einer Codenummer
+ identifizieren.
+
+#on("u")##on("b")#k Kopieren#off("b")##off("u")#
+ Mit dieser Funktion können Sie sich eine Kopie
+ einer bereits in der Task vorhandenen Programmda­
+ tei anlegen. Das ist z.B. dann sinnvoll, wenn Sie sich
+ einen bestimmten 'Stand' aufbewahren wollen oder
+ wenn Sie ein Programm schreiben wollen, das einem
+ bereits vorhandenen ähnelt.
+ Nach Aufruf dieser Funktion werden Ihnen alle
+ Programmdateien, die sich in Ihrer Task befinden,
+ zur Auswahl angeboten. Nach Ankreuzen eines Na­
+ mens wird die Auswahl automatisch verlassen.
+ Anschließend wird der angekreuzte Name ange­
+ zeigt und der Name für die Kopie erfragt. Es muß ein
+ Name eingetragen werden, der in dieser Task noch
+ nicht für eine Programmdatei vergeben wurde; an­
+ sonsten erfolgt ein Hinweis darauf und es wird
+ nicht kopiert!
+ Da man aber oft für die Kopie einen ähnlichen
+ Namen wie für das Original wählt, wird der 'alte'
+ Name vorgeschlagen. Aus genannten Gründen muß er
+ aber verändert werden. Sie können diesen Namen mit
+ den üblichen Editierfunktionen verändern oder mit
+ <HOP><RUBOUT> löschen und ganz neu eingeben. Sie
+ sparen aber eine Menge Tipparbeit, wenn Sie einen
+ langen Namen nur an einer Stelle ändern wollen.
+
+ Fehlerfälle:
+ - Eine Programmdatei mit dem gewünschten Namen
+ existiert bereits in der Task.
+
+#on("u")##on("b")#u Umbenennen#off("b")##off("u")#
+ Mit dieser Funktion können Sie einer bereits
+ vorhandenen Programmdatei einen neuen Namen ge­
+ ben.
+ Nach Aufruf dieser Funktion werden Ihnen alle
+ Programmdateien, die sich in Ihrer Task befinden,
+ zur Auswahl angeboten. Nach Ankreuzen eines Na­
+ mens wird die Auswahl automatisch verlassen.
+ Anschließend wird dieser Name angezeigt und der
+ zukünftige Name für die Programmdatei erfragt. Es
+ muß ein Name eingetragen werden, der in dieser Task
+ noch nicht für eine Programmdatei vergeben wurde -
+ ansonsten erfolgt ein Hinweis darauf und die Pro­
+ grammdatei wird nicht umbenannt!
+ Da man aber oft den 'neuen' Namen in Anlehnung
+ an den 'alten' Namen wählt, wird der 'alte' Name vor­
+ geschlagen. Aus genannten Gründen muß er aber
+ verändert werden. Sie können diesen Namen mit den
+ üblichen Editierfunktionen verändern oder mit
+ <HOP><RUBOUT> löschen und ganz neu eingeben. Sie
+ sparen aber eine Menge Tipparbeit, wenn Sie einen
+ langen Namen nur an einer Stelle ändern wollen.
+
+ Fehlerfälle:
+ - Eine Programmdatei mit dem gewünschten Namen
+ existiert bereits in der Task.
+#page#
+4.5 Menufunktionen zum Oberbegriff 'Lauf'
+
+#on("b")#
+HAMSTER: Info Landschaft Programm Lauf Archiv
+---------------------------+------------------------+---------------------
+ | l Lauf nach Programm |
+ | h Handsteuerung |
+ +------------------------+
+
+
+
+
+
+
+
+
+
+
+--------------------------------------------------------------------------
+Info:<ESC><?>/<?> Wahl:<Pfeile> Ausführen:<RETURN> Verlassen:<ESC><q>
+#off("b")#
+
+#on("u")##on("b")#l Lauf nach Programm#off("b")##off("u")#
+ Mit dieser Menufunktion können Sie den Ham­
+ ster/Roboter nach einem Programm in einer Land­
+ schaft/einem Arbeitsfeld laufen lassen. Sowohl das
+ Programm als auch die Landschaft/das Arbeitsfeld
+ müssen bereits existieren.
+ Sie werden zunächst gefragt, ob der Hamster/
+ Roboter #on("u")#das zuletzt bearbeitete Programm#off("u")# ausführen
+ soll. Bejahen Sie die Frage, so wird dieses Programm
+ ausgeführt; verneinen Sie die Frage dagegen, so
+ gelangen Sie in die 'Auswahl'. Nach Ankreuzen des
+ gewünschten Programmnamens wird das ausgewählte
+ Programm ausgeführt.
+ Nach der Abfrage bezüglich des Programmnamens
+ erfolgt dann eine weitere Abfrage nach dem Namen
+ der Landschaft/ des Arbeitsfeldes, in der/dem der
+ Hamster/Roboter nach dem zuvor ausgewählten Pro­
+ gramm laufen soll. Auch hier werden Sie zunächst
+ gefragt, ob Sie #on("u")#die zuletzt benutzte Landschaft/das
+ zuletzt benutzte Arbeitsfeld#off("u")# verwenden möchten.
+ Bejahen Sie die Frage, so wird das Programm in
+ dieser Landschaft/in diesem Arbeitsfeld ausge­
+ führt; verneinen Sie dagegen die Frage, so werden
+ Ihnen alle in der Task vorhandenen Landschaften/
+ Arbeitsfelder zur Auswahl angeboten. Durch An­
+ kreuzen eines Landschafts-/Arbeitsfeldnamens wird
+ die betreffende Landschaft/das betreffende Ar­
+ beitsfeld ausgewählt und das Programm in dieser
+ Landschaft/in diesem Arbeitsfeld ausgeführt.
+ Daneben haben Sie auch die Möglichkeit, im Pro­
+ gramm selbst als erste Anweisung den Befehl 'lands­
+ chaft ("Name");' oder 'arbeitsfeld ("Name");' anzuge­
+ ben. Für 'Name' muß dann natürlich der gewünschte
+ Landschafts-/Arbeitsfeldname eingetragen sein. Ist
+ eine solche Anweisung #on("u")#am Programmanfang#off("u")# vorhan­
+ den, so wird an Sie #on("u")#keine#off("u")# Abfrage bezüglich des
+ Landschafts-/Arbeitsfeldnamens gestellt; das Pro­
+ gramm wird in der #on("u")#angegebenen#off("u")# Landschaft/im #on("u")#ange­
+ gebenen#off("u")# Arbeitsfeld ausgeführt.
+ Sind im Programm noch Fehler enthalten, so wer­
+ den das Programm und die Fehlermeldungen gleich­
+ zeitig auf dem Bildschirm dargestellt (Paralleledi­
+ tor) und zur Korrektur angeboten. Für die Pro­
+ grammkorrektur stehen ebenfalls alle Editorfunk­
+ tionen zur Verfügung.
+ Während des Hamster-/Roboterlaufs können Sie
+ durch Tastendruck Einfluß nehmen (Geschwindigkeit
+ verändern, Programm abbrechen etc). Sehen Sie dazu
+ auch die Menufunktion 's Steuerung des Laufs' unter
+ dem Oberbegriff 'Info'. Standardmäßig beginnt ein
+ solcher Lauf immer mit einer mittleren Geschwin­
+ digkeit.
+ Ist der Hamster-/Roboterlauf ohne Fehler been­
+ det worden, werden Sie gefragt, ob Sie die Land­
+ schaft/das Arbeitsfeld in dem zuletzt angezeigten
+ Zustand aufbewahren wollen. Bejahen Sie diese Fra­
+ ge, so wird die Landschaft/das Arbeitsfeld in eine
+ Datei geschrieben. Die neue Landschaft/das neue
+ Arbeitsfeld erhält den Namen der alten Land­
+ schaft/des alten Arbeitsfeldes und das Zusatzkenn­
+ zeichen '.x'.
+ Sollte Ihnen beim Programmieren ein Fehler un­
+ terlaufen sein (z.B. eine Endlosschleife, so kann mit
+ der Taste <ESC> der Hamster-/Roboterlauf abgebro­
+ chen werden ("Notbremse").
+
+#on("u")##on("b")#h Handsteuerung#off("b")##off("u")#
+ Mit dieser Funktion können Sie den Hamster/
+ Roboter in einer/einem vorbereiteten Landschaft/
+ Arbeitsfeld durch Tasten steuern. Alle gültigen
+ Tastenbefehle werden in einem Protokoll festgehal­
+ ten. Da das entstehende Protokoll ein ELAN-
+ Programm ist, kann der Hamster/Roboter anschlie­
+ ßend die gleichen Aktionen anhand des Programms
+ wiederholt ausführen ('Teach In').
+ Sie werden zunächst gefragt, ob die Land­
+ schaft/das Arbeitsfeld, in dem der Hamster/Roboter
+ gesteuert werden soll, schon existiert. Beantworten
+ Sie die Frage mit 'nein', so werden Sie aufgefordert,
+ zunächst die Landschaft/das Arbeitsfeld zu gestal­
+ ten. Bejahen Sie die Frage, werden Ihnen alle in Ih­
+ rer Task vorhandenen Landschaften/Arbeitsfelder
+ zur Auswahl angeboten. Sie brauchen nur die ge­
+ wünschte Landschaft/das gewünschte Arbeitsfeld
+ anzukreuzen. Die/das angekreuzte Landschaft/Ar­
+ beitsfeld erscheint dann in folgender Darstellung
+ auf dem Bildschirm:
+
+#on("b")#
+#on("u")#Beispiel#off("u")#:
+
+ <v>or <l>inks um <n>imm <g>ib <p>rotokoll <e>nde
+. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
+. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
+. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
+. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
+. . . . . . . . . . . . V . . . . . . . . . . . . . . . . . . . . .
+. . . . . . . . . . . . o\#\# o . . . . . . . . . . . . . . . . . . .
+. . . . . . . . . . . . .\#\# . . . . . . . . . . . . . . . . . . . .
+. . . . . . . . . . . . o\#\# . . . . . . . . . . . . . . . . . . . .
+. . . . . . . . . . . . .\#\# o . . . o . . . . . . . . . . . . . . .
+. . . . . . . . . . . . o\#\#\#\#\#\#\#\#\#\#\#\# o . . . . . . . . . . . . . .
+. . . . . . . . . . . . . . o . o .\#\# . . . . . . . . . . . . . . .
+. . . . . . . . . . . . . . . . . o\#\# . . . . . . . . . . . . . . .
+. . . . . . . . . . . . . . . . . .\#\# . . . . . . . . . . . . . . .
+. . . . . . . . . . . . . . . . . o\#\#o. . . . . . . . . . . . . . .
+. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
+. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
+. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
+. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
+. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
+. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
+. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
+. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
+. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
+Gib Hamster-Befehl: letzter Befehl:
+
+#off("b")#
+ Durch Tastendruck können Sie nun den Hamster/
+ Roboter steuern (<v> - vor, <l> - links um, <n> -
+ nimm, <g> - gib). Sofern die Aktion ausführbar ist,
+ wird sie auf dem Bildschirm auch ausgeführt. Wird
+ dagegen eine Aktion verlangt, die nicht ausgeführt
+ werden kann (z.B. <v>, wenn der Hamster/Roboter
+ direkt vor einem Hindernis steht), so erscheint eine
+ entsprechende Fehlermeldung in der untersten Zeile
+ des Bildschirms. Nach einer kurzen Pause können
+ dann weitere Eingaben gemacht werden. Eine Fehlbe­
+ dienung führt also #on("u")#nicht#off("u")# zu einem Programmabbruch!
+ In der untersten Bildschirmzeile wird auch jeweils
+ der letzte Befehl zur Kontrolle angezeigt.
+ Alle korrekten Eingaben werden protokolliert.
+ Durch Drücken der Taste <p> (- protokoll) können Sie
+ sich jederzeit das während der Ausführung angeleg­
+ te Protokoll zeigen lassen. Es entsteht nämlich
+ automatisch im Hintergrund ein ablauffähiges
+ ELAN-Programm. Im Anschluß an eine solche Hand­
+ steuerung können Sie den Hamster/Roboter dann in
+ der gleichen Landschaft/im gleichen Arbeitsfeld
+ nach diesem Protokoll (Dateiname: PROTOKOLL) vom
+ Programm aus gesteuert laufen lassen.
+#page#
+4.6 Menufunktionen zum Oberbegriff 'Archiv'
+
+#on("b")#
+HAMSTER: Info Landschaft Programm Lauf Archiv
+---------------------------------+-------------------------+--------------
+ | r Reservieren |
+ | - Neue Diskette |
+ | --------------------- |
+ | - Schreiben |
+ | - Checken |
+ | - Kombination |
+ | - Holen/Lesen |
+ | - Löschen |
+ | --------------------- |
+ | - Verzeichnis |
+ | - Drucken |
+ | --------------------- |
+ | i Initialisieren |
+ | z Zieltask einstellen |
+ +---------------------+ +-------------------------+
+ | Dateiaustausch mit: |
+ | Archiv |
+ | Archivname: |
+ | --- |
+ +---------------------+
+--------------------------------------------------------------------------
+Info:<ESC><?>/<?> Wahl:<Pfeile> Ausführen:<RETURN> Verlassen:<ESC><q>
+#off("b")#
+
+ In diesem Kapitel werden alle die Menufunktionen be­
+schrieben, die Ihnen unter dem Oberbegriff 'Archiv' im
+Menu angeboten werden. Mit den Funktionen in diesem
+Menu können Sie aber nicht nur Dateien auf dem Archiv
+behandeln, sondern auch in anderen Tasks im Multi-
+User-System oder über das EUMEL-Netz sogar auf anderen
+Rechnern!
+ Wenn Sie dieses Pull-Down-Menu gerade aufgeschlagen
+haben, sind nicht alle Funktionen aktivierbar! Um weitere
+Funktionen zu aktivieren, muß erst einer der aktivierba­
+ren Menupunkte gewählt werden.
+ Bei der Archivbehandlung werden Ihnen jeweils alle in
+der Task vorhandenen Dateien zur Auswahl angeboten. Das
+System unterscheidet nicht von sich aus - wie unter den
+Oberbegriffen 'Landschaft'/'Arbeitsfeld' und 'Programm' -
+zwischen Landschaften/Arbeitsfeldern und Programmda­
+teien. In den hier gezeigten Listen können Sie aber Land­
+schaften/Arbeitsfelder daran erkennen, daß ihnen das
+Präfix 'Flaeche:' vorangestellt ist.
+
+#on("u")##on("b")#r Reservieren#off("b")##off("u")# (des Archivlaufwerks)
+ Im EUMEL-Multi-User-System haben normalerwei­
+ se mehrere Personen das Zugriffsrecht auf das Ar­
+ chivlaufwerk. Allerdings muß der Zugriff so gere­
+ gelt werden, daß sich die Beteiligten dabei nicht
+ gegenseitig "in die Quere kommen". Ein Zugriff auf
+ das Archivlaufwerk erfordert zunächst eine Anmel­
+ dung. Ist diese Anmeldung erfolgt, kann von den an­
+ deren Beteiligten so lange nicht mehr auf das Lauf­
+ werk zugegriffen werden - bis es wieder freigege­
+ ben worden ist.
+ Diese Anmeldung des Archivlaufwerkes erfolgt
+ über die Menufunktion 'r Reservieren'. Greift be­
+ reits eine andere Task auf das Laufwerk zu, so er­
+ halten Sie darüber einen Hinweis auf dem Bild­
+ schirm. Ansonsten wird an Sie die Frage gestellt, ob
+ die Diskette eingelegt und das Laufwerk geschlos­
+ sen ist.
+ Erst zu diesem Zeitpunkt ist sichergestellt, daß
+ Sie den alleinigen Zugriff auf das Laufwerk haben.
+ Deshalb sollten Sie, wenn Sie mit mehreren Personen
+ am Computer arbeiten, erst zum Zeitpunkt der Frage­
+ stellung die Diskette ins Laufwerk einlegen.
+ Nachdem Sie die Diskette eingelegt und die Frage
+ bejaht haben, ermittelt das System selbständig den
+ Namen der eingelegten Diskette, zeigt den Namen auf
+ dem Bildschirm (im kleinen Kasten links unten) an
+ und aktiviert die anderen Menupunkte des Pull-
+ Down-Menus.
+ Beim Verlassen des Pull-Down-Menus, wenn eine
+ andere Zieltask eingestellt wird oder wenn das Menu
+ gänzlich verlassen wird, wird die Reservierung au­
+ tomatisch aufgehoben!
+
+ Fehlerfälle:
+ - Das Laufwerk ist von einer anderen Task belegt.
+ - Die Diskette ist falsch eingelegt oder das Lauf­
+ werk ist nicht richtig geschlossen.
+ - Die Diskette ist nicht formatiert bzw. initiali­
+ siert.
+ - Die Diskette kann nicht gelesen werden (keine
+ EUMEL-Diskette, Diskette hat ein falsches For­
+ mat, Diskette ist verschmutzt...).
+
+#on("u")##on("b")#n Neue Diskette#off("b")##off("u")# (anmelden)
+ Der Dateiaustausch mit einer Diskette ist nur
+ dann möglich, wenn der im System eingestellte Dis­
+ kettenname (auf dem Bildschirm im kleinen Kasten
+ unten links sichtbar) mit dem tatsächlichen Namen
+ der Diskette übereinstimmt. Nach einem Disketten­
+ wechsel ist das aber in der Regel nicht mehr der
+ Fall. Greift man dann auf die neu eingelegte Dis­
+ kette zu, so erscheint die Fehlermeldung: 'Falscher
+ Archivname! Bitte neue Diskette anmelden!'.
+ Das Anmelden einer neuen Diskette - ohne einen
+ neuen Reserviervorgang - wird durch diese Menu­
+ funktion ermöglicht. Nach Aktivieren dieses Menu­
+ punktes wird der Name der eingelegten Diskette er­
+ mittelt, im System eingestellt und auf dem Bild­
+ schirm angezeigt.
+ Im Gegensatz zur Menufunktion 'r Reservieren'
+ greift das System ohne Anfrage an den Benutzer auf
+ das Archivlaufwerk zu (die Reservierung bleibt ja
+ bestehen). Ist das Archivlaufwerk reserviert, so ist
+ die Neuanmeldung einer Diskette über diese Menu­
+ funktion weniger zeitaufwendig.
+
+ Fehlerfälle:
+ - wie unter 'r Reservieren'.
+
+#on("u")##on("b")#s Schreiben#off("b")##off("u")# (Kopieren)
+ Alle Dateien der eigenen Task werden zur Aus­
+ wahl angeboten. Wenn Sie die Auswahl durch die
+ Tastenfolge <ESC><q> verlassen, überprüft das Sy­
+ stem zunächst, ob die Dateien in der eingestellten
+ Zieltask schon vorhanden sind. Ist das der Fall,
+ wird erfragt, ob die dort vorhandenen Dateien über­
+ schrieben, d.h. gelöscht werden dürfen (s.u.). An­
+ schließend werden alle angekreuzten Dateien in der
+ Reihenfolge, in der Sie sie angekreuzt haben, in die
+ eingestellte Zieltask kopiert. Der Vorgang wird auf
+ dem Bildschirm protokolliert. Die Originaldateien
+ in der eigenen Task bleiben dabei erhalten.
+ Wenn in der Zieltask schon eine Datei existiert,
+ die den gleichen Namen hat wie eine Datei, die Sie
+ dorthin kopieren möchten, so wird angefragt, ob die
+ vorher schon existierende Datei überschrieben (ge­
+ löscht!) werden soll. Bejahen Sie diese Frage, so wird
+ die bereits in der Zieltask existierende Datei (un­
+ wiederbringlich) gelöscht und die gewünschte Datei
+ dorthin transportiert. Ein Überschreiben aus Ver­
+ sehen ist nicht möglich, wenn Sie die an Sie gestell­
+ te Frage sorgfältig beantworten.
+ Verneinen Sie die Frage, so wird die Datei auch
+ nicht hinübertransportiert! Sie können die Datei
+ aber umbenennen (Menufunktion 'u Umbenennen' un­
+ ter den Oberbegriffen 'Landschaft'/Arbeitsfeld' bzw.
+ 'Programm') und anschließend mit anderem Namen
+ hinüberschreiben.
+ Beachten Sie, daß beim Überschreiben einer Datei
+ auf einer Archivdiskette der Speicherplatz der al­
+ ten (überschriebenen) Version im allgemeinen nicht
+ wiederverwendet werden kann. In einem solchen Fall
+ könnte die Diskette voll geschrieben werden, obwohl
+ eigentlich genügend Platz vorhanden wäre. Zur Op­
+ timierung wird deshalb zuerst überprüft, ob die
+ angekreuzten Dateien schon in der Zieltask vorhan­
+ den sind und löscht diese, wenn Sie Ihr Einver­
+ ständnis geben. Erst anschließend werden die Datei­
+ en insgesamt kopiert.
+ Normalerweise ist als Zieltask das Archivlauf­
+ werk der eigenen Station eingestellt. Mit der Menu­
+ funktion 'z Zieltask einstellen' kann diese Einstel­
+ lung aber verändert werden.
+
+ Fehlerfälle:
+ - Die Diskette ist falsch eingelegt oder beschä­
+ digt.
+ - Die Diskette kann nicht beschrieben werden
+ (Schreibfehler).
+ - Die Diskette ist voll.
+ - Sehen Sie auch unter 'r Reservieren'
+ 'z Zieltask einstellen'.
+
+#on("u")##on("b")#c Checken#off("b")##off("u")#
+ Diese Menufunktion kann nur ausgeführt werden,
+ wenn der Dateiaustausch mit einem Archiv(manager)
+ erfolgt - ansonsten ist diese Menufunktion auch
+ nicht aktivierbar. Die Menufunktion dient dazu, auf
+ Diskette geschriebene Dateien auf Lesefehler hin zu
+ prüfen. Es empfiehlt sich, diese Prüfroutine auf
+ neu auf die Diskette geschriebene Dateien anzuwen­
+ den. Sehen Sie dazu auch 'k Kombination'.
+ Alle Dateien der eingestellten Zieltask (Archiv)
+ werden zur Auswahl angeboten. Wenn Sie die Auswahl
+ durch die Tastenfolge <ESC><q> verlassen, werden
+ alle angekreuzten Dateien in der Reihenfolge, in
+ der Sie sie angekreuzt haben, "gecheckt", d.h. auf
+ Lesefehler hin überprüft. Der Vorgang wird auf dem
+ Bildschirm protokolliert.
+
+ Fehlerfälle:
+ - Lesefehler auf dem Archiv.
+ - Sehen Sie auch unter 'r Reservieren'.
+
+#on("u")##on("b")#k Kombination#off("b")##off("u")#
+ Diese Menufunktion ist eine Kombination aus den
+ beiden Menufunktionen 's Schreiben' und 'c Checken'
+ (Sehen Sie weitere Informationen auch dort!).
+ Alle Dateien der eigenen Task werden zur Aus­
+ wahl angeboten. Wenn Sie die Auswahl durch die Ta­
+ stenfolge <ESC><q> verlassen, werden alle ange­
+ kreuzten Dateien in der Reihenfolge, in der Sie sie
+ angekreuzt haben, in die eingestellte Zieltask ko­
+ piert (gegebenenfalls müssen bereits vorhandene
+ Dateien gleichen Namens in der Zieltask gelöscht
+ werden). Anschließend werden alle Dateien, die gera­
+ de geschrieben wurden, gecheckt, d.h. auf Lesefehler
+ hin untersucht. Beide Vorgänge werden auf dem
+ Bildschirm protokolliert.
+ Da die 'Check' - Operation nur bei Archivmana­
+ gern zulässig ist, ist diese Menufunktionen eben­
+ falls nur bei Archivmanagern aktivierbar. Zur Er­
+ läuterung sehen Sie bitte auch unter 'z Zieltask
+ einstellen'.
+
+#on("u")##on("b")#h Holen/Lesen#off("b")##off("u")#
+ Die Menufunktion dient dazu, Dateien, die bereits
+ auf einer Archivdiskette oder in einer anderen Task
+ existieren, in die eigene Task zu kopieren.
+ Alle Dateien der eingestellten Zieltask werden
+ zur Auswahl angeboten. Anschließend werden Kopien
+ der angekreuzten Dateien in der Reihenfolge des
+ Ankreuzens in die eigene Task geholt. Das Original
+ in der Zieltask bleibt dabei unverändert! Der Vor­
+ gang wird auf dem Bildschirm protokolliert.
+ Sind in der eigenen Task schon Dateien mit glei­
+ chem Namen vorhanden, so wird gefragt, ob die 'al­
+ ten' Dateien überschrieben (gelöscht) werden dürfen.
+ Nur wenn Sie zustimmen, werden die in Ihrer Task
+ existierenden Dateien (unwiederbringlich!) gelöscht
+ und Kopien der gleichnamigen Dateien aus der Ziel­
+ task angefertigt.
+ Stimmen Sie dem Löschvorgang nicht zu, dann
+ bleiben die bisherigen Dateien in Ihrer Task erhal­
+ ten - die Dateien aus der Zieltask werden dann aber
+ auch nicht in Ihre Task kopiert! Um dennoch die Ko­
+ pien zu erhalten, können Sie die namensgleichen
+ Dateien in Ihrer Task umbenennen und dann erst die
+ Dateien aus der anderen Task anfordern.
+ Normalerweise werden die Dateien vom Archiv der
+ eigenen Station geholt. Mit dem Menupunkt 'z Ziel­
+ task einstellen' kann diese Einstellung verändert
+ werden.
+
+ Fehlerfälle:
+ - Lesefehler auf dem Archiv.
+ - Sehen Sie auch unter 'r Reservieren'
+ 's Schreiben'
+ 'z Zieltask einstellen'.
+
+#on("u")##on("b")#l Löschen#off("b")##off("u")#
+ Die Menufunktion dient dazu, Dateien in der
+ Zieltask (unwiederbringlich!) zu löschen. Dazu wer­
+ den alle Dateien der eingestellten Zieltask zur Aus­
+ wahl angeboten. Anschließend werden die angekreuz­
+ ten Dateien in der Reihenfolge ihres Ankreuzens
+ gelöscht. Zur Sicherheit muß noch einmal für jede
+ einzelne Datei bestätigt werden, daß sie auch tat­
+ sächlich gelöscht werden soll.
+ Beachten Sie, daß beim Löschen einer Datei auf
+ einer Archivdiskette der Speicherplatz im allgemei­
+ nen nicht wieder verwendet werden kann. In einem
+ solchen Fall könnte die Diskette voll geschrieben
+ werden, obwohl eigentlich genügend Platz vorhan­
+ den wäre. Diese Probleme treten bei anderen Tasks,
+ die keine Archivmanager sind, nicht auf, da deren
+ Speicherplatz intelligenter verwaltet wird.
+ Normalerweise ist als Zieltask das Archiv der
+ eigenen Station eingestellt. Mit dem Menupunkt 'z
+ Zieltask einstellen' kann diese Einstellung verän­
+ dert werden.
+
+ Fehlerfälle:
+ - Sehen Sie auch unter 'r Reservieren'
+ 's Schreiben'
+ 'z Zieltask einstellen'.
+
+#on("u")##on("b")#v Verzeichnis#off("b")##off("u")#
+ Mit dieser Menufunktion können Sie sich einen
+ Überblick über die in der Zieltask (z.B. auf dem Ar­
+ chiv) vorhandenen Dateien verschaffen.
+ Nach Aufruf der Funktion wird eine Liste der
+ Dateien auf dem Bildschirm ausgegeben, die sich in
+ der Zieltask (z.B. auf dem Archiv) befinden. Ist die
+ Zieltask ein Archiv(manager), so wird auch ange­
+ zeigt, wieviel Platz auf der Diskette belegt ist. Da
+ die Liste selbst eine Datei ist, kann sie mit der Ta­
+ stenkombination <ESC><q> verlassen werden. Falls
+ nicht alle Dateinamen auf den Bildschirm passen,
+ können Sie das Fenster mit <HOP><hoch> und
+ <HOP><runter> verschieben.
+
+ Fehlerfälle:
+ - Sehen Sie unter 'z Zieltask einstellen'.
+
+#on("u")##on("b")#d Drucken#off("b")##off("u")#
+ Das Verzeichnis der Dateien in der Zieltask, das
+ man mit der Menufunktion 'v Verzeichnis' auf dem
+ Bildschirm angezeigt bekommt, kann mit dieser Me­
+ nufunktion ausgedruckt werden.
+ Zur Sicherheit wird angefragt, ob wirklich ein
+ solches Dateiverzeichnis der Zieltask gedruckt wer­
+ den soll. Bejaht man die Frage, so wird ein Dateiver­
+ zeichnis erstellt und zum Drucker geschickt.
+
+ Fehlerfälle:
+ - Der Drucker ist nicht funktionsbereit.
+ - Der Drucker wird nicht über die Task 'PRINTER'
+ betrieben.
+ - Auf Ihrem System werden die Druckkosten abge­
+ rechnet. Sie müssen sich mit einer Codenummer
+ identifizieren.
+
+#on("u")##on("b")#i Initialisieren#off("b")##off("u")#
+ Diese Menufunktion gestattet es, frische Disket­
+ ten zu formatieren, zu initialisieren bzw. be­
+ schriebene Disketten vollständig zu löschen und
+ ggf. dabei umzubenennen. Bei Aufruf dieser Menu­
+ funktion wird - sofern noch nicht geschehen - das
+ Archivlaufwerk automatisch reserviert.
+ Wenn Sie eine fabrikneue Diskette aus der Ver­
+ packung nehmen, müssen Sie diese zunächst #on("u")#forma­
+ tieren#off("u")#. Dabei wird die Diskette auf ein festgelegtes
+ physikalisches Format eingestellt. Ohne daß diese
+ Operation vorausgegangen ist, kann eine Diskette
+ weder beschrieben noch gelesen werden.
+ Prinzipiell braucht eine Diskette nur ein einzi­
+ ges Mal formatiert zu werden. Sie können Sie jedoch
+ jederzeit wieder formatieren - z.B. wenn Sie Disket­
+ ten haben, von denen Sie nicht genau wissen, für
+ welche Zwecke sie zuvor verwendet wurden.
+ Wenn Sie diese Menufunktion aktivieren, werden
+ Sie so zunächst gefragt, ob Sie die Diskette auch
+ formatieren wollen. Bejahen Sie die Frage, so werden
+ Ihnen mehrere Formate zur Auswahl angeboten:
+
+#on ("b")#
+ +------------------------------------+
+ | Formatieren einer Diskette |
+ | |
+ | Dies sind die möglichen Formate: |
+ | |
+ | 1 ..... 40 Spur - 360 KB |
+ | 2 ..... 80 Spur - 720 KB |
+ | 3 ..... 5 1/4" - 1,2 MB |
+ | 4 ..... 3 1/2" - 1,4 MB |
+ | s ..... Standard - Format |
+ | |
+ | 1 2 3 4 s |
+ +------------------------------------+
+#off("b")#
+
+ Erkundigen Sie sich bei Ihrem Händler, welches
+ Format Sie bei Ihrem Rechner und den von Ihnen
+ verwendeten Disketten einstellen müssen. Manche
+ Rechner unterstützen diese Operation innerhalb des
+ EUMEL-Systems auch gar nicht, das Formatieren muß
+ dann irgendwie anders außerhalb des EUMEL-Systems
+ geschehen.
+ Wenn Sie die Formatierung abgeschlossen oder
+ auch übersprungen haben, beginnt die eigentliche
+ Initialisierung der Diskette. Dabei wird als erstes
+ der Archivname auf die Diskette geschrieben. Alle
+ alten Daten, die sich ggf. auf der Diskette befinden,
+ werden bei diesem Vorgang unwiederbringlich (!)
+ gelöscht.
+ Zur Sicherheit überprüft das System in jedem
+ Falle, ob es sich um eine EUMEL - Diskette handelt,
+ und erfragt Ihr Einverständnis, ob die Diskette
+ wirklich initialisiert werden soll. Geben Sie hierzu
+ Ihr Einverständnis, dann wird noch der (neue) Ar­
+ chivname erfragt. Hatte die Diskette schon einen
+ Namen, dann wird dieser zum Überschreiben angebo­
+ ten. Wollen Sie den alten Archivnamen beibehalten,
+ so brauchen Sie nur die <RETURN>-Taste zu tippen,
+ ansonsten können Sie den Namen auch zuvor verän­
+ dern oder einen ganz neuen Namen hinschreiben.
+ Anhand des ausgegebenen Namens können Sie auch
+ überprüfen, ob Sie die richtige Diskette eingelegt
+ haben.
+ Das Initialisieren funktioniert natürlich nur,
+ wenn Sie als Zieltask einen Archivmanager einge­
+ stellt haben - ansonsten ist diese Menufunktion
+ gesperrt (nicht aktivierbar!).
+
+ Fehlerfälle:
+ - Formatieren ist nicht auf dem System möglich.
+ - Sehen Sie auch unter 'r Reservieren'
+ 'z Zieltask einstellen'.
+
+#on("u")##on("b")#z Zieltask einstellen#off("b")##off("u")#
+ Mit dieser Menufunktion können Sie festlegen,
+ mit welcher Zieltask Sie kommunizieren, d.h. z.B. Da­
+ teien austauschen möchten. Normalerweise ist hier
+ das Archiv am eigenen Rechner eingestellt. Das wird
+ auch nach Aufklappen des Pull-Down-Menus im Ka­
+ sten links unten angezeigt.
+ Diese Menufunktion kann im Unterricht z.B. dazu
+ genutzt werden, um fertiggestellte Hausaufgaben in
+ eine bestimmte Task zu schicken (Vatertask) oder um
+ von dort z.B. vorgefertigte Landschaften oder/und
+ Programme abzuholen.
+ Sie können aber auch eine andere Task einstellen
+ (z.B. die Vatertask oder die Task 'PUBLIC'), um mit die­
+ sen Dateien auszutauschen oder um sich auch nur ei­
+ nen Überblick über die dort vorhandenen Dateien zu
+ verschaffen. Wenn Sie mit Ihrem Rechner in ein
+ EUMEL-Netz integriert sind, können Sie auch auf
+ Tasks anderer Rechner zugreifen oder auch Disketten
+ von Laufwerken anderer Rechner einlesen (z.B. wenn
+ Sie Disketten anderer Formate haben, die von Ihrem
+ Rechner nicht gelesen werden können).
+ Dabei werden zwei Anforderungen an die Zieltask
+ gestellt: Sie muß existieren und bereit für den Da­
+ teiaustausch sein, d.h es muß eine Managertask sein,
+ auf die Sie Zugriff haben. Versuchen Sie auf andere
+ Tasks zuzugreifen, so erhalten Sie entsprechende
+ (Fehler-)Meldungen.
+ Zu beachten ist noch, daß es im EUMEL-System ver­
+ schiedene Arten von Managertasks gibt - Archivma­
+ nager und normale Dateimanager. Der Unterschied
+ besteht darin, daß ein Archivmanager vom Benutzer
+ vor dem Zugriff reserviert werden muß - anschlie­
+ ßend hat nur dieser Benutzer (bis zur Aufgabe der
+ Reservierung) ein Zugriffsrecht auf den Manager.
+ Normale Dateimanager können dagegen von mehreren
+ Benutzern in beliebiger Reihenfolge angesprochen
+ werden.
+ Ein Archivmanager kann auch auf bestimmte Dis­
+ kettenformate spezialisert sein (z.B. auf das Lesen
+ von DOS-Disketten). Manche Rechner haben auch meh­
+ rere Archivmanager für verschiedene Laufwerke etc.
+ Durch Einstellen unterschiedlicher Archivmanager
+ können Sie dann auf verschiedenen Laufwerken ar­
+ chivieren.
+ Nach Aktivieren dieses Menupunktes werden Ihnen
+ die folgenden Alternativen angeboten:
+
+#on ("b")#
+ +-------------------------------------------+
+ | Dateiaustausch gewünscht mit: |
+ | |
+ | a ... Archiv (Eigene Station) |
+ | |
+ | v ... Vatertask |
+ | |
+ | p ... 'PUBLIC' (Eigene Station) |
+ | |
+ | s ... Sonstige Task |
+ | |
+ | |
+ | Archiv Vatertask PUBLIC Sonstige |
+ +-------------------------------------------+
+
+ Da der Dateiaustausch mit dem Standardarchiv
+ der eigenen Station (Task: 'ARCHIVE'), mit der Vater­
+ task und der Task 'PUBLIC' recht häufig in Anspruch
+ genommen wird, sind diese drei Optionen unter den
+ Alternativen direkt angegeben. Entscheiden Sie sich
+ für eine dieser drei Tasks, so nimmt das System alle
+ notwendigen Einstellungen vor. Möchten Sie dage­
+ gen in Kontakt mit einer anderen Task treten, so
+ wählen Sie die Alternative 's ... Sonstige Task'.
+ In diesem Falle haben Sie noch 3 Angaben zu machen:
+
+ - Zunächst werden Sie nach dem Namen der Zieltask
+ gefragt. Geben Sie den Namen der Zieltask - ohne
+ Anführungsstriche (!) - ein und schließen Sie die
+ Eingabe mit der <RETURN>-Taste ab. (Den ausge­
+ gebenen Namen der z.Z. eingestellten Task können
+ Sie dabei verändern bzw. überschreiben.)
+
+ - Dann wird die Nummer der Station im EUMEL-Netz
+ erfragt, auf der sich die Zieltask befindet. Die
+ Nummer Ihrer Station wird als Vorschlag ausge­
+ geben. Wollen Sie mit einer Task auf Ihrem Rech­
+ ner kommunizieren, so brauchen Sie diesen Vor­
+ schlag nur durch Drücken der <RETURN>-Taste
+ bestätigen - ansonsten tragen Sie zuvor die ent­
+ sprechende Stationsnummer ein. Ist Ihr Rechner
+ nicht in ein EUMEL-Netz integriert, so wird die
+ Stationsnummer 0 (Null) ausgegeben. Bitte bestä­
+ tigen Sie diese Stationsnummer durch Tippen der
+ <RETURN>-Taste.
+
+ - Zum Abschluß müssen Sie noch angeben, ob die
+ eingestellte Zieltask ein Archivmanager ist oder
+ nicht.
+
+ Das System versucht dann den Kontakt herzu­
+ stellen. Je nachdem, welche Einstellung Sie vorge­
+ nommen haben, sind bestimmte Funktionen innerhalb
+ des Menus nicht aktivierbar. Das System läßt nur
+ die Funktionen zu, die aufgrund Ihrer Einstellun­
+ gen zulässig sind.
+ Im Kasten links unten auf dem Bildschirm wird
+ jeweils angezeigt, welche Zieltask eingestellt ist.
+ Erscheint in diesem Kasten auch ein Hinweis auf den
+ Archivnamen, so haben Sie einen Archivmanager ein­
+ gestellt. Ist dagegen vor dem Namen der Zieltask
+ noch eine Zahl und ein Schrägstrich angegeben, so
+ haben Sie eine Zieltask auf einem anderen Rechner
+ eingestellt.
+ Bedenken Sie, daß Operationen mit Tasks auf an­
+ deren Stationen länger andauern können - werden
+ Sie nicht ungeduldig!
+ Sie können die Einstellung der Zieltask jeder­
+ zeit wieder verändern!
+
+ Fehlerfälle:
+ - Die eingestellte Zieltask existiert nicht.
+ - Die eingestellte Zieltask existiert zwar, ist aber
+ nicht empfangsbereit, d.h. ein Zugriff von Ihrer
+ Task aus ist nicht möglich!
+ - Das Netz ist nicht funktionsbereit (Collector-
+ Task fehlt).
+ - Die Kommunikation war nicht erfolgreich.
+ - Die gewünschte Operation kann mit der einge­
+ stellten Zieltask nicht ausgeführt werden (Ziel­
+ task ist z.B. gar kein Archivmanager - Sie aber
+ versuchen, das Laufwerk zu reservieren).
+
diff --git a/app/gs.hamster/1.1/doc/A5 - Doku: gs-Herbert und Robbi - Kapitel 5 b/app/gs.hamster/1.1/doc/A5 - Doku: gs-Herbert und Robbi - Kapitel 5
new file mode 100644
index 0000000..bb4a67b
--- /dev/null
+++ b/app/gs.hamster/1.1/doc/A5 - Doku: gs-Herbert und Robbi - Kapitel 5
@@ -0,0 +1,167 @@
+#limit (11.0)##pagelength (16.5)##block#
+#start (2.0,0.0)#
+#page (61)#
+#headodd#
+#center#gs-Herbert und Robbi#right#%
+
+#end#
+#headeven#
+%#center#gs-Herbert und Robbi
+
+#end#
+#center#5
+
+#center#Detailbeschreibung
+#center#der
+#center#Basisbefehle
+
+
+#on("u")#'vor' bewirkt:#off("u")#
+ - ein Eingabezeichen wird von der Tastatur gelesen
+ und ausgewertet.
+ - es wird je nach Verzögerungsfaktor (eine vorgege­
+ bene Wartezeit, die auch während des Programmlaufs
+ verändert werden kann) gewartet.
+ - falls die Kachel vor dem Hamster/Roboter noch frei
+ ist und zur Landschaft/zum Arbeitsfeld gehört,
+ geht der Hamster/ Roboter um eine Kachel in der
+ augenblicklichen Richtung vorwärts.
+ - falls vor dem Hamster/Roboter ein Hindernis liegt,
+ oder wenn er im Begriff ist, aus der Landschaft/aus
+ dem Arbeitsfeld herauszulaufen, wird das Programm
+ mit entsprechender Fehlermeldung abgebrochen.
+
+#on("u")#'links um' bewirkt:#off("u")#
+ - wie bei 'vor': Annahme eines Tastendruckes und
+ Warten.
+ - eine Drehung des Hamsters/Roboters um 90 Grad ge­
+ gen den Uhrzeigersinn.
+
+#on("u")#'nimm' bewirkt:#off("u")#
+ - wie bei 'vor': Annahme eines Tastendruckes und
+ Warten.
+ - falls auf der Kachel, auf der der Hamster/Roboter
+ steht, kein Korn/Werkstück liegt, wird das Programm
+ mit entsprechender Fehlermeldung abgebrochen.
+ - falls dort genau ein Korn/ein Werkstück liegt, wird
+ dieses auf dem Bildschirm entfernt. Es wird zu denen
+ in den Backentaschen/im Behälter addiert. Auf dem
+ Bildschirm erscheint an der Stelle (" .").
+ - falls mehrere Körner/Werkstücke dort liegen, wird
+ eines zu denen in den Backentaschen/im Behälter
+ addiert und von denen auf der Kachel subtrahiert.
+ Auf dem Bildschirm erscheint weiterhin an der Stel­
+ le (" o").
+
+#on("u")#'gib' bewirkt:#off("u")#
+ - wie bei 'vor': Annahme eines Tastendruckes und
+ Warten.
+ - falls die Backentaschen/der Behälter leer sind/ist,
+ wird das Programm mit entsprechender Fehlermel­
+ dung abgebrochen.
+ - falls auf der Kachel schon ein Korn/Werkstück oder
+ mehrere Körner/Werkstücke liegen, wird zu ihnen
+ eines addiert und von denen in den Backentaschen/
+ im Behälter subtrahiert. Der Bildschirm ändert sich
+ nicht.
+ - falls noch kein Korn/Werkstück auf dieser Kachel
+ liegt, wird auf dem Bildschirm ein (" o") ausgegeben
+ und von den Körnern/Werkstücken in den Backenta­
+ schen/im Behälter ein Korn/Werkstück subtrahiert.
+
+#on("u")#'vorn frei'#off("u")#
+ - liefert den Wahrheitswert TRUE, wenn vor dem Ham­
+ ster/ Roboter keine Hinderniskachel liegt, #on("u")#also
+ auch dann, wenn der Hamster/Roboter im Begriff ist,
+ über die Landschafts-/Arbeitsfeldgrenze (den
+ Bildschirmrand) hinauszulaufen!#off("u")# Wenn vor dem Ham­
+ ster/Roboter eine Hinderniskachel liegt, wird der
+ Wahrheitswert FALSE geliefert.
+
+#on("u")#'links frei'#off("u")#
+ - liefert den Wahrheitswert TRUE, wenn in Laufrich­
+ tung links vom Hamster/ Roboter keine Hindernis­
+ kachel liegt, #on("u")#also auch dann, wenn links vom Ham­
+ ster/Roboter die Landschafts-/Arbeitsfeldgrenze
+ (der Bildschirmrand) ist!#off("u")# Wenn links vom Hamster/
+ Roboter eine Hinderniskachel liegt, wird der Wahr­
+ heitswert FALSE geliefert.
+
+#on("u")#'rechts frei'#off("u")#
+ - liefert den Wahrheitswert TRUE, wenn in Laufrich­
+ tung rechts vom Hamster/Roboter keine Hindernis­
+ kachel liegt, #on("u")#also auch dann, wenn rechts vom Ham­
+ ster/Roboter die Landschafts-/Arbeitsfeldgrenze
+ (der Bildschirmrand) ist!#off("u")# Wenn rechts vom Hamster/
+ Roboter eine Hinderniskachel liegt, wird der Wahr­
+ heitswert FALSE geliefert.
+
+#on("u")#'hinten frei'#off("u")#
+ - liefert den Wahrheitswert TRUE, wenn in Laufrich­
+ tung hinter dem Hamster/Roboter keine Hindernis­
+ kachel liegt, #on("u")#also auch dann, wenn hinter dem Ham­
+ ster/Roboter die Landschafts-/Arbeitsfeldgrenze
+ (der Bildschirmrand) ist!#off("u")# Wenn hinter dem Hamster/
+ Roboter eine Hinderniskachel liegt, wird der Wahr­
+ heitswert FALSE geliefert.
+
+#on("u")#'korn da' und 'werkstueck da'#off("u")#
+ - liefern den Wahrheitswert TRUE, wenn auf der
+ Kachel, auf der der Hamster/Roboter steht, minde­
+ stens ein Korn/Werkstück liegt. Ansonsten wird der
+ Wahrheitswert FALSE geliefert.
+
+#on("u")#'korn vorn' und 'werkstueck vorn'#off("u")#
+ - liefern den Wahrheitswert TRUE, wenn auf der
+ Kachel, die in Laufrichtung vor dem Hamster/Robo­
+ ter liegt, mindestens ein Korn/Werkstück liegt. An­
+ sonsten wird der Wahrheitswert FALSE geliefert.
+ - Zur "Untersuchung" wird die vor ihm liegende
+ Kachel - sofern dort kein Hindernis ist - von ihm
+ betreten. Wenn er im Begriff ist, aus der Land­
+ schaft/dem Arbeitsfeld herauszulaufen, wird das
+ Programm mit entsprechender Fehlermeldung abge­
+ brochen.
+
+#on("u")#'korn links' und 'werkstueck links'#off("u")#
+ - liefern den Wahrheitswert TRUE, wenn auf der
+ Kachel, die in Laufrichtung links vom Hamster/
+ Roboter liegt, mindestens ein Korn/Werkstück liegt.
+ Ansonsten wird der Wahrheitswert FALSE geliefert.
+ - Zur "Untersuchung" wird die links neben ihm lie­
+ gende Kachel - sofern dort kein Hindernis ist - von
+ ihm betreten. Wenn er im Begriff ist, aus der Land­
+ schaft/dem Arbeitsfeld herauszulaufen, wird das
+ Programm mit entsprechender Fehlermeldung abge­
+ brochen.
+
+#on("u")#'korn rechts' und 'werkstueck rechts'#off("u")#
+ - liefern den Wahrheitswert TRUE, wenn auf der
+ Kachel, die in Laufrichtung rechts vom Hamster/
+ Roboter liegt, mindestens ein Korn/Werkstück liegt.
+ Ansonsten wird der Wahrheitswert FALSE geliefert.
+ - Zur "Untersuchung" wird die rechts neben ihm lie­
+ gende Kachel - sofern dort kein Hindernis ist - von
+ ihm betreten. Wenn er im Begriff ist, aus der Land­
+ schaft/dem Arbeitsfeld herauszulaufen, wird das
+ Programm mit entsprechender Fehlermeldung abge­
+ brochen.
+
+#on("u")#'korn hinten' und 'werkstueck hinten'#off("u")#
+ - liefern den Wahrheitswert TRUE, wenn auf der
+ Kachel, die in Laufrichtung hinter dem Hamster/
+ Roboter liegt, mindestens ein Korn/Werkstück liegt.
+ Ansonsten wird der Wahrheitswert FALSE geliefert.
+ - Zur "Untersuchung" wird die hinter ihm liegende
+ Kachel - sofern dort kein Hindernis ist - von ihm
+ betreten. Wenn er im Begriff ist, aus der Land­
+ schaft/dem Arbeitsfeld herauszulaufen, wird das
+ Programm mit entsprechender Fehlermeldung abge­
+ brochen.
+
+#on("u")#'backen leer' und 'behaelter leer'#off("u")#
+ - liefern den Wahrheitswert TRUE, wenn kein Korn/
+ kein Werkstück in den Backentaschen/im Behälter
+ notiert ist. Ansonsten wird der Wahrheitswert FALSE
+ geliefert.
+
diff --git a/app/gs.hamster/1.1/doc/A5 - Doku: gs-Herbert und Robbi - Kapitel 6 b/app/gs.hamster/1.1/doc/A5 - Doku: gs-Herbert und Robbi - Kapitel 6
new file mode 100644
index 0000000..0aeeff0
--- /dev/null
+++ b/app/gs.hamster/1.1/doc/A5 - Doku: gs-Herbert und Robbi - Kapitel 6
@@ -0,0 +1,73 @@
+#limit (11.0)##pagelength (16.5)##block#
+#start (2.0,0.0)#
+#page (66)#
+#headodd#
+#center#gs-Herbert und Robbi#right#%
+
+#end#
+#headeven#
+%#center#gs-Herbert und Robbi
+
+#end#
+#center#6
+
+#center#Zusätzliche Kommandos
+
+
+PROC landschaft (TEXT CONST landschaftsname)
+PROC arbeitsfeld (TEXT CONST arbeitsfeldname)
+ Steht einer dieser Prozeduraufrufe innerhalb eines
+ Hamster-/ Roboterprogramms vor dem ersten Befehl (am
+ Anfang der Datei), so wird die Anfrage nach einem Land­
+ schafts-/Arbeitsfeldnamen zu Beginn des Laufs über­
+ gangen. Außerdem ist es möglich, den Hamster/Roboter
+ in einem Programm durch meherere Landschaften/Ar­
+ beitsfelder laufen zu lassen. Beachten Sie bitte, daß
+ der Landschaftsname / Arbeitsfeldname hier in Anfüh­
+ rungszeichen, aber #on("u")#ohne#off("u")# das Präfix 'Flaeche:' angegeben
+ werden muß!
+
+PROC geschwindigkeit (INT CONST wert)
+ Möchte man von einem Programm aus eine bestimmte
+ Geschwindigkeit des Hamsters/Roboters bei der Pro­
+ grammausführung festlegen oder die Geschwindigkeit
+ vom Programm aus verändern, so kann man diese Proze­
+ dur verwenden. Zulässig sind für 'wert' nur Werte zwi­
+ schen 0 und 9. Dabei bedeuten:
+ 0: Einzelschrittmodus - Ausführung des nächsten
+ Schritts auf Tastendruck
+ 1: geringste Geschwindigkeit (Wartezeit : ca.
+ 50 Zehntelsekunden )
+ 9: höchste Geschwindigkeit (Wartezeit :
+ keine)
+ 2 - 8 sind dazwischenliegende Geschwindigkeiten
+
+TEXT PROC taste
+ Diese Prozedur liefert jeweils ein eingetipptes
+ Zeichen. Die Taste <ESC>, welche zum Programmabbruch
+ dient, wirkt sich schon aus, bevor hier ein Zeichen ge­
+ liefert werden könnte.
+
+PROC druckereinstellung fuer flaechenausdruck
+ Für den Landschafts-/Arbeitsfeldausdruck ist der
+ Standardschrifttyp des Druckers voreingestellt. Dabei
+ müssen 80 Druckpositionen in einer Zeile Platz haben.
+ Außerdem sind voreingestellt : \#limit (20.5)\#, \#on("b")\#
+ (Fettdruck) und \#start (0.0,0.0)\#. Zur Darstellung der
+ Hinderniskacheln wird das Zeichen '\#\#' (Code 222) ver­
+ wendet. Kann Ihr Drucker dieses Zeichen nicht darstel­
+ len (z.B. Typenraddrucker mit deutschem Zeichenzatz), so
+ können Sie hier ein #on("u")#anderes Zeichen#off("u")# auswählen. Weiter­
+ hin können Sie mit dieser Prozedur einen #on("u")#anderen
+ Schrifttyp#off("u")# und eine #on("u")#andere Startposition#off("u")# (linker obe­
+ rer Eckpunkt des Druckfeldes) einstellen. Nachdem Sie
+ das Kommando gegeben haben, wird zunächst der ge­
+ wünschte Schrifttyp erfragt. Geben Sie hier einen in
+ Ihrer Installation vorhandenen Schrifttyp an (nur den
+ Namen - ohne Anführungszeichen!). Anschließend werden
+ Sie nacheinander nach den beiden Startwerten (erst die
+ x-Richtung und dann die y-Richtung) gefragt. Geben
+ Sie hier jeweils einen Wert (als REAL) ein. Bedenken Sie
+ dabei, daß die 80 Druckpositionen nebeneinander Platz
+ haben müssen!
+
diff --git a/app/gs.hamster/1.1/doc/gs-Herbert und Robbi handbuch.impressum b/app/gs.hamster/1.1/doc/gs-Herbert und Robbi handbuch.impressum
new file mode 100644
index 0000000..4c8e79d
--- /dev/null
+++ b/app/gs.hamster/1.1/doc/gs-Herbert und Robbi handbuch.impressum
@@ -0,0 +1,87 @@
+____________________________________________________________________________
+
+
+#on("b")##on ("u")#
+#center#Betriebssystem E U M E L
+#off ("u")#
+
+
+#center#gs-Herbert und Robbi
+
+
+
+
+#off("b")#
+#center#Lizenzfreie Software der
+#on ("b")#
+
+#center#Gesellschaft für Mathematik und Datenverarbeitung mbH,
+#center#5205 Sankt Augustin
+
+
+#off("b")#
+#center#Die Nutzung der Software ist nur im Schul- und Hochschulbereich für
+#center#nichtkommerzielle Zwecke gestattet.
+
+#center#Gewährleistung und Haftung werden ausgeschlossen
+
+
+____________________________________________________________________________
+#page#
+
+#free (4.0)##on("b")#
+#center#gs-Herbert und Robbi
+
+
+#center#Benutzerhandbuch
+
+
+#center#Version 1.0
+
+
+#off("b")##center#copyright
+#center#Eva Latta-Weber
+#center#Software- und Hardware-Systeme, 1988
+#center#ERGOS GmbH, 1990
+#page#
+#block#
+#center#____________________________________________________________________________
+
+
+Copyright:  ERGOS GmbH   März 1990
+
+ Alle Rechte vorbehalten. Insbesondere ist die Überführung in
+ maschinenlesbare Form sowie das Speichern in Informations­
+ systemen, auch auszugsweise, nur mit schriftlicher Einwilliging
+ Einwilligung der ERGOS GmbH gestattet.
+
+#center#____________________________________________________________________________
+
+Es kann keine Gewähr übernommen werden, daß das Programm für eine
+bestimmte Anwendung geeignet ist. Die Verantwortung dafür liegt beim
+Anwender.
+
+Das Handbuch wurde mit größter Sorgfalt erstellt. Für die Korrektheit und
+Vollständigkeit der Angaben kann keine Gewähr übernommen werden. Das
+Handbuch kann jederzeit ohne Ankündigung geändert werden.
+
+Texterstellung :  Dieser Text wurde mit der ERGOS-L3 Textverarbeitung
+ erstellt und aufbereitet und auf einem Kyocera Laser­
+ drucker gedruckt.
+
+
+
+
+#center#___________________________________________________________________________
+
+
+
+Ergonomic Office Software GmbH
+
+Bergstr. 7 Telefon: (02241) 63075
+5200 Siegburg Teletex: 2627-2241413=ERGOS
+ Telefax: (02241) 63078
+
+
+#center#____________________________________________________________________________
+
diff --git a/app/gs.hamster/1.1/source-disk b/app/gs.hamster/1.1/source-disk
new file mode 100644
index 0000000..bd6ad37
--- /dev/null
+++ b/app/gs.hamster/1.1/source-disk
@@ -0,0 +1 @@
+informatikpaket/03_gs.hamster.img
diff --git a/app/gs.hamster/1.1/src/ls-Herbert und Robbi 1 b/app/gs.hamster/1.1/src/ls-Herbert und Robbi 1
new file mode 100644
index 0000000..ed19e98
--- /dev/null
+++ b/app/gs.hamster/1.1/src/ls-Herbert und Robbi 1
@@ -0,0 +1,84 @@
+(*
+
+ *********************************************************
+ *********************************************************
+ ** **
+ ** ls-Herbert und Robbi 1 **
+ ** **
+ ** Version 1.1 **
+ ** **
+ ** (Stand: 30.03.88) **
+ ** **
+ ** **
+ ** Autor: Wolfgang Weber, Bielefeld **
+ ** **
+ ** **
+ ** Copyright (C) 1987, 1988 Eva Latta-Weber, Bielefeld **
+ ** **
+ ** Copyright (C) 1988 ERGOS GmbH, Siegburg **
+ ** **
+ *********************************************************
+ *********************************************************
+
+ *)
+
+PACKET ls herbert und robbi 1 DEFINES{} sei ein hamster, ist hamster,{} sei ein roboter, ist roboter,{} landschaft, arbeitsfeld,{} vor, links um, nimm, gib,{} korn da, werkstueck da,{} backen leer, behaelter leer,{} vorn frei, lauf,{} hamsterinter, roboterinter,{} geschwindigkeit, taste,{} befehlssatz erweitern,{} befehlssatz ist erweitert,{} drucke landschaft,{} hamster druckerstart einstellen,{} hamster drucker xstart,{}
+ hamster drucker ystart,{} hamster landschaftsschrifttyp einstellen,{} hamster landschaftsschrifttyp,{} druckereinstellung fuer flaechenausdruck,{} landschaftsauskunftstext,{} testauskunftstext 1, testauskunftstext 2,{} befehlsauskunftstext, laufauskunftstext,{} kommandomodus, hamstermodus,{} zeige landschaft, lege landschaft ab:{}TYPE LOCATION = STRUCT (INT x, y);{}LET menukarte = "ls-MENUKARTE:Herbert und Robbi",{} richtung = ""3""8""10""2"",{}
+ erscheinungsform = "A<V>",{} praefix = "Flaeche:",{} flaechentype = 1007,{} neutral = 0,{} erzeuge = 1,{} hamsterlauf = 2,{} interaktiv = 3,{} kommandostufe = 99,{} west = ""8"",{} ost = ""2"",{} cleol = ""5"",{} piep = ""7"",{}
+ mark ein = ""15"",{} mark aus = ""14"",{} escape = ""27"",{} blank = " ",{} niltext = "",{} hindernis = "#",{} korn = "o",{} hinderniskachel = "##",{} blankkachel = " .",{} kornkachel = " o",{} protokollname = "PROTOKOLL";{}LET max x = 40,{}
+ max y = 23;{}LET FLAECHE = ROW max x ROW max y INT;{}LET LANDSCHAFT = STRUCT (INT xpos, ypos, blickrichtung,{} anzahl koerner, FLAECHE flaeche);{}LET HAMSTER = STRUCT (LOCATION stelle, INT koerner, form);{}BOUND LANDSCHAFT VAR aktuelle landschaft;{}FLAECHE VAR land;{}HAMSTER VAR hamster;{}FILE VAR protokoll;{}INT CONST besetzt :: -1,{} frei :: 0;{}
+TEXT CONST kornsymbole ::{} "1234567890abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";{}INT CONST maxkornzahl :: LENGTH kornsymbole;{}BOOL VAR hamster eingestellt :: TRUE,{} befehlssatz erweitert :: FALSE;{}TEXT VAR eingabezeichen :: niltext,{} archivlandschaftsname :: niltext,{} hinderniszeichen :: "\#\#",{} schrifttyp :: niltext;{}INT VAR verzoegerungsfaktor :: 5,{}
+ modus :: kommandostufe,{} a, b, c, d;{}REAL VAR xstart :: 0.0,{} ystart :: 0.0;{}WINDOW VAR fenster :: window (1, 1, 79, 24);{}INITFLAG VAR in this task :: FALSE;{}OP := (LOCATION VAR l, LOCATION CONST r):{} l.x := r.x; l.y := r.y{}END OP :=;{}PROC initialize hamstersystem:{} IF NOT initialized (in this task){} THEN install menu (menukarte);{} FI{}END PROC initialize hamstersystem;{}
+PROC sei ein hamster:{} hamster eingestellt := TRUE{}END PROC sei ein hamster;{}BOOL PROC ist hamster:{} hamster eingestellt{}END PROC ist hamster;{}PROC sei ein roboter:{} hamster eingestellt := FALSE{}END PROC sei ein roboter;{}BOOL PROC ist roboter:{} NOT hamster eingestellt{}END PROC ist roboter;{}PROC hole landschaft (TEXT CONST name):{} aktuelle landschaft := old (praefix + name);{} land := aktuelle landschaft.flaeche;{} hamster.form := aktuelle landschaft.blickrichtung;{}
+ hamster.stelle.x := aktuelle landschaft.xpos;{} hamster.stelle.y := aktuelle landschaft.ypos;{} hamster.koerner := aktuelle landschaft.anzahl koerner{}END PROC hole landschaft;{}PROC lege landschaft ab (TEXT CONST name):{} IF exists (praefix + name){} THEN forget (praefix + name, quiet){} FI;{} aktuelle landschaft := new (praefix + name);{} aktuelle landschaft.flaeche := land;{} aktuelle landschaft.blickrichtung := hamster.form;{} aktuelle landschaft.xpos := hamster.stelle.x;{}
+ aktuelle landschaft.ypos := hamster.stelle.y;{} aktuelle landschaft.anzahl koerner := hamster.koerner;{} type( old(praefix + name), flaechentype){}END PROC lege landschaft ab;{}PROC hamstermodus:{} modus := neutral{}END PROC hamstermodus;{}PROC kommandomodus:{} modus := kommandostufe{}END PROC kommandomodus;{}PROC erzeugemodus:{} modus := erzeuge{}END PROC erzeugemodus;{}PROC intermodus:{} modus := interaktiv{}END PROC intermodus;{}PROC laufmodus:{} modus := hamsterlauf{}
+END PROC laufmodus;{}BOOL PROC vorn frei:{} kontrolliere modus;{} LOCATION VAR hier :: hamster.stelle;{} SELECT hamster.form OF{} CASE 1: IF hamster.stelle.y < 2 THEN protestiere FI;{} hier.y DECR 1{} CASE 2: IF hamster.stelle.x < 2 THEN protestiere FI;{} hier.x DECR 1{} CASE 3: IF hamster.stelle.y >= max y THEN protestiere FI;{} hier.y INCR 1{} CASE 4: IF hamster.stelle.x >= max x THEN protestiere FI;{} hier.x INCR 1{} OTHERWISE modus := kommandostufe;{}
+ IF ist hamster{} THEN errorstop(nachricht( 7)){} ELSE errorstop(nachricht(14)){} FI{} END SELECT;{} IF modus = erzeuge{} THEN TRUE{} ELSE land[hier.x] [hier.y] <> besetzt{} FI{}END PROC vorn frei;{}BOOL PROC korn da:{} kontrolliere modus;{} kornzahl > 0{}END PROC korn da;{}INT PROC kornzahl:{} land [hamster.stelle.x] [hamster.stelle.y]{}END PROC kornzahl;{}BOOL PROC werkstueck da:{} korn da{}END PROC werkstueck da;{}BOOL PROC backen leer:{}
+ kontrolliere modus;{} hamster.koerner <= 0 AND (modus = hamsterlauf OR modus = interaktiv){}END PROC backen leer;{}BOOL PROC behaelter leer:{} backen leer{}END PROC behaelter leer;{}PROC protestiere:{} IF modus = erzeuge{} THEN out(piep); eins zurueck{} ELSE verzoegere 10 mal; zeige("X"); verzoegere 10 mal;{} kommandomodus;{} IF ist hamster{} THEN errorstop(nachricht( 6)){} ELSE errorstop(nachricht(13)){} FI;{} FI.{} eins zurueck:{}
+ SELECT hamster.form OF{} CASE 1: hamster.stelle.y INCR 1{} CASE 2: hamster.stelle.x INCR 1{} CASE 3: hamster.stelle.y DECR 1{} CASE 4: hamster.stelle.x DECR 1{} OTHERWISE kommandomodus;{} IF ist hamster{} THEN errorstop(nachricht( 7)){} ELSE errorstop(nachricht(14)){} FI;{} END SELECT.{} verzoegere 10 mal:{} INT VAR j;{} FOR j FROM 1 UPTO 10 REP{} verzoegere{} PER{}END PROC protestiere;{}
+PROC verzoegere:{} IF modus <> hamsterlauf{} THEN LEAVE verzoegere{} FI;{} eingabezeichen := incharety (verzoegerungsfaktor);{} IF eingabezeichen = escape{} THEN kommandomodus;{} IF ist hamster{} THEN errorstop(nachricht( 4)){} ELSE errorstop(nachricht(11)){} FI{} ELIF eingabezeichen = "-" THEN verlangsame{} ELIF eingabezeichen = "+" THEN beschleunige{} ELIF eingabezeichen = "?" THEN boxinfo (fenster, laufauskunftstext,{} 5, maxint, a, b, c, d);{}
+ cursor on; zeige landschaft{} ELIF pos ("0123456789", eingabezeichen) > 0{} THEN geschwindigkeit (int (eingabezeichen)){} FI.{} verlangsame:{} IF verzoegerungsfaktor > 31 THEN (* lass es dabei *){} ELIF verzoegerungsfaktor < 1{} THEN verzoegerungsfaktor INCR 1{} ELSE verzoegerungsfaktor INCR verzoegerungsfaktor{} FI.{} beschleunige:{} IF verzoegerungsfaktor < 1{} THEN verzoegerungsfaktor := -1{} ELSE verzoegerungsfaktor := verzoegerungsfaktor DIV 2{}
+ FI{}END PROC verzoegere;{}PROC geschwindigkeit (INT CONST faktor):{} SELECT faktor OF{} CASE 0 : verzoegerungsfaktor := 20000;{} CASE 1 : verzoegerungsfaktor := 50;{} CASE 2 : verzoegerungsfaktor := 20;{} CASE 3 : verzoegerungsfaktor := 10;{} CASE 4 : verzoegerungsfaktor := 8;{} CASE 5 : verzoegerungsfaktor := 5;{} CASE 6 : verzoegerungsfaktor := 2;{} CASE 7 : verzoegerungsfaktor := 1;{} CASE 8 : verzoegerungsfaktor := 0;{} CASE 9 : verzoegerungsfaktor := -1;{}
+ OTHERWISE (*belasse es dabei*){} END SELECT{}END PROC geschwindigkeit;{}PROC vor:{} kontrolliere modus;{} IF vorn frei{} THEN zeige(kachel);{} bilde neue hamsterkoordinaten;{} zeige(erscheinungsform SUB hamster.form);{} verzoegere{} ELSE modus := kommandostufe;{} zeige("X");{} IF ist hamster{} THEN errorstop(nachricht(1)){} ELSE errorstop(nachricht(8)){} FI{} FI.{} kachel:{} INT CONST z :: land [hamster.stelle.x] [hamster.stelle.y];{}
+ IF z = besetzt THEN hinderniskachel{} ELIF z = frei THEN blankkachel{} ELSE kornkachel{} FI.{} bilde neue hamsterkoordinaten:{} SELECT hamster.form OF{} CASE 1 :hamster.stelle.y DECR 1{} CASE 2 :hamster.stelle.x DECR 1{} CASE 3 :hamster.stelle.y INCR 1{} CASE 4 :hamster.stelle.x INCR 1{} OTHERWISE modus:=kommandostufe;{} IF ist hamster{} THEN errorstop(nachricht( 7)){} ELSE errorstop(nachricht(14)){}
+ FI{} END SELECT.{}END PROC vor;{}PROC nimm:{} kontrolliere modus;{} IF korn da{} THEN variiere kornzahl (-1);{} IF kornzahl < 1 THEN zeige (ost + blank) FI{} ELSE modus := kommandostufe;{} zeige("X");{} IF ist hamster{} THEN errorstop(nachricht(2)){} ELSE errorstop(nachricht(9)){} FI{} FI;{} verzoegere{}END PROC nimm;{}PROC gib:{} kontrolliere modus;{} IF backen leer{} THEN modus := kommandostufe;{} zeige ("X");{}
+ IF ist hamster{} THEN errorstop(nachricht( 3)){} ELSE errorstop(nachricht(10)){} FI{} ELSE variiere kornzahl (+1);{} zeige(ost + korn){} FI;{} verzoegere{}END PROC gib;{}PROC links um:{} kontrolliere modus;{} hamster.form := hamster.form MOD 4 + 1;{} (* da hamster.form der Werte 1,2,3,4 faehig ist und linksdreht *){} zeige (subjekt);{} verzoegere.{} subjekt:{} erscheinungsform SUB hamster.form.{}END PROC links um;{}PROC variiere kornzahl (INT CONST delta):{}
+ IF delta * delta <> 1{} THEN LEAVE variiere kornzahl{} FI; (* als delta kommen nur +1 und -1 vor *){} INT VAR k;{} IF kornzahl = -1 AND delta = 1{} THEN k := 1{} ELSE k := kornzahl + delta{} FI;{} IF k <= 0{} THEN land [hamster.stelle.x] [hamster.stelle.y] := frei{} ELSE land [hamster.stelle.x] [hamster.stelle.y] := min (k,maxkornzahl){} FI;{} IF modus = hamsterlauf OR modus = interaktiv{} THEN hamster.koerner DECR delta{} FI{}END PROC variiere kornzahl;{}PROC kontrolliere modus:{}
+ initialize hamstersystem;{} SELECT modus OF{} CASE neutral : erzeugemodus;{} landschaft;{} laufmodus{} CASE erzeuge,{} interaktiv,{} hamsterlauf: (* nichts *){} OTHERWISE kommandomodus;{} line;{} IF ist hamster{} THEN sage(anwendungstext (21));pause(20);{} errorstop(nachricht( 5)){} ELSE sage(anwendungstext (22));pause(20);{}
+ errorstop(nachricht(12)){} FI{} END SELECT{}END PROC kontrolliere modus;{}PROC zeige (TEXT CONST was):{} cursor (2 * hamster.stelle.x - 1, hamster.stelle.y);{} IF hamster.stelle.x >= max x AND hamster.stelle.y > max y{} THEN out ((was SUB 1)); out(west){} ELSE out(was); (LENGTH was) TIMESOUT west{} FI.{}END PROC zeige;{}PROC sage (TEXT CONST aussage):{} cursor(1,24); out(aussage + cleol){}END PROC sage;{}TEXT PROC nachricht (INT CONST nummer):{}
+ inv (text (anwendungstext (nummer), 65)) + piep{}END PROC nachricht;{}TEXT PROC inv (TEXT CONST text):{} TEXT VAR aus :: mark ein + text + blank + mark aus;{} aus{}END PROC inv;{}PROC zeige landschaft:{} initialize hamstersystem;{} INT VAR y;{} FOR y FROM 1 UPTO max y REP{} setze zeile zusammen;{} cursor (1,y); out (zeile){} PER;{} cursor(1,24); out(cleol);{} IF modus = interaktiv{} THEN gib befehlszeile aus{} FI;{} zeige hamster; cursor on.{} setze zeile zusammen:{} TEXT VAR zeile :: niltext;{}
+ INT VAR x;{} FOR x FROM 1 UPTO max x REP{} zeile CAT kachel{} PER.{} kachel:{} INT CONST z :: land [x] [y];{} IF z = besetzt THEN hinderniskachel{} ELIF z = frei THEN blankkachel{} ELSE kornkachel{} FI.{} gib befehlszeile aus:{} cursor(1,1); write(cleol); write (anwendungstext (62)){}END PROC zeige landschaft;{}PROC zeige hamster:{} zeige (erscheinungsform SUB hamster.form){}END PROC zeige hamster;{}PROC landschaft (TEXT CONST kandidat):{}
+ initialize hamstersystem;{} archivlandschaftsname := kandidat;{} IF exists (praefix + kandidat){} CAND type (old (praefix + kandidat)) = flaechentype{} THEN behandle existierende landschaft{} ELIF exists (praefix + kandidat){} THEN forget (praefix + kandidat, quiet);{} behandle neue landschaft{} ELSE behandle neue landschaft{} FI.{} behandle existierende landschaft:{} hole landschaft (kandidat);{} SELECT modus OF{} CASE hamsterlauf,{} interaktiv,{}
+ neutral : zeige landschaft;{} laufmodus{} CASE erzeuge : modifiziere eventuell{} CASE kommandostufe : modifiziere landschaft{} OTHERWISE errorstop (anwendungstext (15)){} END SELECT.{} behandle neue landschaft:{} SELECT modus OF{} CASE hamsterlauf,{} interaktiv,{} neutral,{} erzeuge : erschaffe landschaft;{} modifiziere landschaft;{} zeige landschaft;{}
+ laufmodus{} CASE kommandostufe : erschaffe landschaft;{} modifiziere landschaft;{} OTHERWISE errorstop (anwendungstext (15)){} END SELECT.{} modifiziere eventuell:{} IF ist hamster{} THEN IF boxyes (fenster, anwendungstext (41), 5, a, b, c, d){} THEN cursor on; modifiziere landschaft{} FI{} ELSE IF boxyes (fenster, anwendungstext (42), 5, a, b, c, d){} THEN cursor on; modifiziere landschaft{}
+ FI{} FI;{} zeige landschaft.{} erschaffe landschaft:{} INT VAR j;{} FOR j FROM 1 UPTO max y REP{} INT VAR k;{} FOR k FROM 1 UPTO max x REP{} land [k] [j] := frei{} PER{} PER;{} hamster.form := 4;{} hamster.stelle.x := 20;{} hamster.stelle.y := 12;{} hamster.koerner := 0.{}END PROC landschaft;{}PROC landschaft:{} initialize hamstersystem;{} IF ist hamster{} THEN landschaft (erfragter landschaftsname (anwendungstext (36))){}
+ ELSE landschaft (erfragter landschaftsname (anwendungstext (37))){} FI{}END PROC landschaft;{}TEXT PROC erfragter landschaftsname (TEXT CONST satz):{} TEXT VAR landschaftsname :: archivlandschaftsname;{} REP{} page; line (3); out (satz + cleol); line (2);{} editget (landschaftsname);{} landschaftsname := compress (landschaftsname);{} IF landschaftsname = niltext{} THEN line (2); out (anwendungstext (18) + piep);{} line (2); out (anwendungstext (38)); pause{} FI{}
+ UNTIL landschaftsname <> niltext PER;{} landschaftsname{}END PROC erfragter landschaftsname;{}PROC arbeitsfeld (TEXT CONST kandidat):{} landschaft (kandidat){}END PROC arbeitsfeld;{}PROC arbeitsfeld:{} landschaft{}END PROC arbeitsfeld;{}PROC modifiziere landschaft:{} INT CONST modalibi :: modus;{} erzeugemodus;{} zeige landschaft;{} informiere;{} zeige hamster;{} nimm ein eingabezeichen;{} WHILE nicht endewunsch REP{} erfuelle fortschreibungswunsch;{} nimm ein eingabezeichen{} PER;{}
+ erfrage koernerzahl;{} lege landschaft ab (archivlandschaftsname);{} modus := modalibi.{} nimm ein eingabezeichen:{} inchar (eingabezeichen).{} nicht endewunsch:{} pos ("hH", eingabezeichen) = 0.{} erfuelle fortschreibungswunsch:{} INT CONST r :: pos (richtung, eingabezeichen){} IF r > 0{} THEN IF hamster.form = r{} THEN vor{} ELSE hamster.form := r;{} zeige hamster{} FI{} ELIF eingabezeichen = "?" THEN boxinfo (fenster, landschaftsauskunftstext,{}
+ 5, maxint, a, b, c, d);{} cursor on; zeige landschaft; informiere{} ELIF eingabezeichen = "k" THEN kopiere landschaft;{} zeige landschaft; informiere{} ELIF eingabezeichen = "g" THEN gib{} ELIF eingabezeichen = "n" THEN IF korn da THEN nimm ELSE out (piep) FI{} ELIF eingabezeichen = "z" THEN zeige (text (kornzahl, 2)){} ELIF eingabezeichen = hindernis{} THEN land [hamster.stelle.x] [hamster.stelle.y] := besetzt; vor{}
+ ELIF eingabezeichen = blank{} THEN land [hamster.stelle.x] [hamster.stelle.y] := frei; vor{} ELSE out (piep){} FI.{} kopiere landschaft:{} TEXT VAR kopie;{} IF NOT not empty (alle landschaften){} THEN IF ist hamster{} THEN boxinfo (fenster, anwendungstext (196), 5, maxint){} ELSE boxinfo (fenster, anwendungstext (197), 5, maxint){} FI{} ELSE lasse original auswaehlen{} FI.{} lasse original auswaehlen:{}
+ IF ist hamster{} THEN kopie := boxone (fenster, alle landschaften,{} anwendungstext (23), anwendungstext (24),{} FALSE){} ELSE kopie := boxone (fenster, alle landschaften,{} anwendungstext (25), anwendungstext (26),{} FALSE){} FI;{} cursor on; hole landschaft (kopie).{} alle landschaften:{} ohne praefix (infix namen (ALL myself, praefix, flaechentype), praefix).{}
+ erfrage koernerzahl:{} TEXT VAR eingabe; BOOL VAR ist ok; INT VAR zahl;{} cursor (1,23); 79 TIMESOUT waagerecht;{} REP{} ist ok := TRUE;{} IF ist hamster{} THEN eingabe := boxanswer (fenster, anwendungstext (43),{} text (hamster.koerner),{} 5, a, b, c, d){} ELSE eingabe := boxanswer (fenster, anwendungstext (44),{} text (hamster.koerner),{}
+ 5, a, b, c, d){} FI;{} disable stop;{} IF eingabe = "" THEN eingabe := "0" FI;{} zahl := int (eingabe);{} IF zahl < 0 OR zahl > maxint THEN ist ok := FALSE FI;{} IF is error THEN ist ok := FALSE; clear error FI;{} enable stop;{} UNTIL last conversion ok AND ist ok PER;{} cursor on;{} hamster.koerner := zahl.{} informiere:{} cursor (1,1);{} IF ist hamster{} THEN out (anwendungstext (27)){}
+ ELSE out (anwendungstext (28)){} FI{}END PROC modifiziere landschaft;{}PROC lauf (TEXT CONST dateiname):{} initialize hamstersystem;{} IF NOT exists (dateiname){} THEN errorstop (anwendungstext (16) + dateiname + anwendungstext (17)){} FI;{} hamstermodus;{} disable stop;{} run (dateiname);{} kommandomodus;{} cursor (1, 24);{} IF is error{} THEN IF length (errormessage) > 1{} THEN sage (errormessage); pause;{} FI{} ELSE sage (anwendungstext (29)); pause; konserviere landschaft{}
+ FI;{} clear error;{} enable stop{}END PROC lauf;{}PROC lauf:{} lauf (last param){}END PROC lauf;{}PROC konserviere landschaft:{} TEXT VAR neuer landschaftsname;{} IF ist hamster{} THEN stelle landschaftsfrage{} ELSE stelle arbeitsfeldfrage{} FI; cursor on.{} stelle landschaftsfrage:{} IF boxyes (fenster, anwendungstext (45), 5){} THEN bewahre landschaft auf{} FI.{} stelle arbeitsfeldfrage:{} IF boxyes (fenster, anwendungstext (46), 5){} THEN bewahre landschaft auf{}
+ FI.{} bewahre landschaft auf:{} neuer landschaftsname := archivlandschaftsname + ".x";{} lege landschaft ab (neuer landschaftsname);{} gib hinweis auf neuen namen.{} gib hinweis auf neuen namen:{} IF ist hamster{} THEN boxinfo (fenster, anwendungstext (30){} + inv (neuer landschaftsname), 5, maxint, a, b, c, d){} ELSE boxinfo (fenster, anwendungstext (31){} + inv (neuer landschaftsname), 5, maxint, a, b, c, d){} FI{}END PROC konserviere landschaft;{}
+PROC hamsterinter (TEXT CONST landschaftsname):{} initialize hamstersystem;{} sei ein hamster;{} steuere interaktiv (landschaftsname);{} cursor on{}END PROC hamsterinter;{}PROC hamsterinter:{} initialize hamstersystem;{} hamsterinter (erfragter landschaftsname (anwendungstext (39))){}END PROC hamsterinter;{}PROC roboterinter (TEXT CONST landschaftsname):{} initialize hamstersystem;{} sei ein roboter;{} steuere interaktiv (landschaftsname);{} cursor on{}END PROC roboterinter;{}PROC roboterinter:{}
+ initialize hamstersystem;{} roboterinter (erfragter landschaftsname (anwendungstext (40))){}END PROC roboterinter;{}PROC steuere interaktiv (TEXT CONST landschaftsname):{} forget (protokollname, quiet);{} protokoll := sequential file (output, protokollname);{} intermodus;{} landschaft (landschaftsname);{} TEXT VAR befehl :: niltext, letzter befehl :: niltext;{} REP{} arbeiten{} PER.{} arbeiten:{} intermodus;{} hole befehl;{} fuehre befehl aus.{} hole befehl:{} TEXT VAR befehlszeichen;{}
+ TEXT CONST befehlskette :: "vlngpeVLNGPE";{} INT VAR befehlsposition;{} zeige (hamsterform);{} cursor (1,24);{} IF ist hamster{} THEN out (cleol + anwendungstext (32) + letzter befehl){} ELSE out (cleol + anwendungstext (33) + letzter befehl){} FI;{} cursor(24,24);{} inchar (befehlszeichen);{} befehlsposition := pos(befehlskette,befehlszeichen);{} IF befehlsposition = 0{} THEN out(piep);{} LEAVE arbeiten{} FI;{} SELECT befehlsposition OF{}
+ CASE 1, 7: befehl := "vor";{} out("vor");{} letzter befehl := "vor"{} CASE 2, 8: befehl := "links um";{} out("links um");{} letzter befehl := "links um"{} CASE 3, 9: befehl := "nimm";{} out("nimm");{} letzter befehl := "nimm"{} CASE 4,10: befehl := "gib";{} out("gib");{} letzter befehl := "gib"{}
+ CASE 5,11: out("protokoll");{} letzter befehl := "protokoll";{} FILE VAR p :: sequential file (modify,protokollname);{} headline(p, protokollname + " (Verlassen: <ESC><q>)");{} cursor on; show(p); cursor off;{} zeige landschaft; befehl := "";{} output(protokoll);{} LEAVE arbeiten{} CASE 6,12: out("ende"); kommandomodus; befehl := "";{} LEAVE steuere interaktiv{}
+ END SELECT.{} hamsterform:{} erscheinungsform SUB hamster.form.{} fuehre befehl aus:{} BOOL VAR korrekt;{} disable stop;{} do (befehl);{} cursor (1,24);{} korrekt := NOT is error;{} IF is error{} THEN IF errormessage > ""{} THEN out (inv (text (errormessage, 65)) + piep);{} pause(30);{} FI;{} clear error{} FI;{} IF korrekt AND befehl <> ""{} THEN protokolliere (befehl){} FI;{} enable stop;{}
+END PROC steuere interaktiv;{}PROC protokolliere (TEXT CONST befehl):{} putline (protokoll, befehl + ";"){}END PROC protokolliere;{}PROC drucke landschaft (TEXT CONST landschaftsname):{} initialize hamstersystem;{} ROW max y TEXT VAR drucklandschaft;{} BOUND LANDSCHAFT VAR al;{} INT VAR i, hamsterx, hamstery;{} TEXT VAR hamsterzeichen;{} landschaftsdatei holen;{} drucklandschaft erzeugen;{} hamster in drucklandschaft einsetzen;{} druckdatei erzeugen;{} disable stop;{} TEXT VAR datname := std;{}
+ do ("print (""druckdatei"")");{} IF is error{} THEN menuinfo (inv (errormessage));{} clear error;{} FI;{} last param (datname);{} enable stop;{} druckdatei loeschen;{} cursor on.{} landschaftsdatei holen:{} IF exists (praefix + landschaftsname) AND{} (type (old (praefix + landschaftsname)) = flaechentype){} THEN hole landschaft;{} ELSE LEAVE drucke landschaft{} FI.{} hole landschaft:{} al := old (praefix + landschaftsname);{} hamsterx := al.xpos;{}
+ hamstery := al.ypos;{} hamsterzeichen := erscheinungsform SUB al.blickrichtung.{} drucklandschaft erzeugen:{} TEXT VAR zeile; INT VAR x;{} FOR i FROM 1 UPTO max y REP{} zeile := "";{} FOR x FROM 1 UPTO maxx REP{} zeile erzeugen{} PER;{} drucklandschaft[i] := zeile{} PER.{} zeile erzeugen:{} INT CONST zeichen :: al.flaeche [x] [i];{} IF zeichen = besetzt THEN zeile CAT hinderniszeichen{} ELIF zeichen = frei THEN zeile CAT " ."{}
+ ELSE zeile CAT " o"{} FI.{} hamster in drucklandschaft einsetzen:{} change (drucklandschaft [hamstery], hamsterx*2-1, hamsterx*2-1,{} hamsterzeichen).{} druckdatei erzeugen:{} FILE VAR p::sequential file(output, "druckdatei");{} INT VAR blankzahl;{} line(p);{} putline(p,"#type (""" + schrifttyp + """)#");{} putline(p,"#start(" + text(xstart) + "," + text(ystart) + ")#");{} putline(p,"#limit(20.8)#");{} blankzahl := ( 80 - (8 + length (landschaftsname))) DIV 2;{}
+ putline(p, blankzahl * " " + praefix + landschaftsname + " ");{} putline(p, "  ");{} FOR i FROM 1 UPTO maxy REP{} putline(p, drucklandschaft[i] + " "){} PER.{} druckdatei loeschen:{} forget("druckdatei", quiet){}END PROC drucke landschaft;{}PROC drucke landschaft:{} initialize hamstersystem;{} IF ist hamster{} THEN drucke landschaft (erfragter landschaftsname (anwendungstext (36))){} ELSE drucke landschaft (erfragter landschaftsname (anwendungstext (37))){} FI;{} cursor on{}
+END PROC drucke landschaft;{}PROC druckereinstellung fuer flaechenausdruck:{} initialize hamstersystem;{} page;{} IF ist hamster{} THEN putline (center (invers (anwendungstext (71)))){} ELSE putline (center (invers (anwendungstext (72)))){} FI;{} line (3);{} put (anwendungstext (73));{} editget (schrifttyp);{} line (2);{} schrifttyp := compress (schrifttyp);{} putline (anwendungstext (74));{} putline (anwendungstext (75)); line (2);{} putline (anwendungstext (76) + text (xstart) + "," + text (ystart) +{}
+ anwendungstext (77)); line;{} put (anwendungstext (78)); get (xstart); line;{} put (anwendungstext (79)); get (ystart); line (2);{} IF yes (anwendungstext (80) + hinderniszeichen + anwendungstext (81)){} THEN line;{} put (anwendungstext (82)); inchar (hinderniszeichen); line (2);{} hinderniszeichen CAT hinderniszeichen;{} IF hinderniszeichen = "##"{} THEN hinderniszeichen := "\#\#"{} FI{} FI;{} line;{} put (anwendungstext (83)){}END PROC druckereinstellung fuer flaechenausdruck;{}
+PROC hamster druckerstart einstellen (REAL CONST xpos, ypos):{} xstart := xpos; ystart := ypos{}END PROC hamster druckerstart einstellen;{}REAL PROC hamster drucker xstart:{} xstart{}END PROC hamster drucker xstart;{}REAL PROC hamster drucker ystart:{} ystart{}END PROC hamster drucker ystart;{}PROC hamster landschaftsschrifttyp einstellen (TEXT CONST typ):{} schrifttyp := typ{}END PROC hamster landschaftsschrifttyp einstellen;{}TEXT PROC hamster landschaftsschrifttyp:{} schrifttyp{}END PROC hamster landschaftsschrifttyp;{}
+PROC drucke arbeitsfeld (TEXT CONST arbeitsfeldname):{} drucke landschaft (arbeitsfeldname){}END PROC drucke arbeitsfeld;{}PROC drucke arbeitsfeld:{} drucke landschaft{}END PROC drucke arbeitsfeld;{}TEXT PROC taste:{} eingabezeichen{}END PROC taste;{}TEXT PROC landschaftsauskunftstext:{} initialize hamstersystem;{} IF ist hamster{} THEN anwendungstext (52){} ELSE anwendungstext (53){} FI{}END PROC landschaftsauskunftstext;{}TEXT PROC laufauskunftstext:{} initialize hamstersystem;{}
+ anwendungstext (51){}END PROC laufauskunftstext;{}TEXT PROC befehlsauskunftstext:{} initialize hamstersystem;{} IF ist hamster{} THEN anwendungstext (54){} ELSE anwendungstext (55){} FI{}END PROC befehlsauskunftstext;{}TEXT PROC testauskunftstext 1:{} initialize hamstersystem;{} IF befehlssatz erweitert{} THEN langer testauskunftstext{} ELSE kurzer testauskunftstext{} FI.{} kurzer testauskunftstext:{} IF ist hamster{} THEN anwendungstext (56){} ELSE anwendungstext (57){}
+ FI.{} langer testauskunftstext:{} IF ist hamster{} THEN anwendungstext (58){} ELSE anwendungstext (60){} FI.{}END PROC testauskunftstext 1;{}TEXT PROC testauskunftstext 2:{} initialize hamstersystem;{} IF befehlssatz erweitert{} THEN eintragung{} ELSE niltext{} FI.{} eintragung:{} IF ist hamster{} THEN anwendungstext (59){} ELSE anwendungstext (61){} FI{}END PROC testauskunftstext 2;{}PROC befehlssatz erweitern (BOOL CONST status):{} befehlssatz erweitert := status{}
+END PROC befehlssatz erweitern;{}BOOL PROC befehlssatz ist erweitert:{} befehlssatz erweitert{}END PROC befehlssatz ist erweitert;{}END PACKET ls herbert und robbi 1;{}
+
diff --git a/app/gs.hamster/1.1/src/ls-Herbert und Robbi 2 b/app/gs.hamster/1.1/src/ls-Herbert und Robbi 2
new file mode 100644
index 0000000..7394932
--- /dev/null
+++ b/app/gs.hamster/1.1/src/ls-Herbert und Robbi 2
@@ -0,0 +1,31 @@
+(*
+
+ *********************************************************
+ *********************************************************
+ ** **
+ ** ls-Herbert und Robbi 2 **
+ ** **
+ ** Version 1.1 **
+ ** **
+ ** (Stand: 30.03.88) **
+ ** **
+ ** **
+ ** Autor: Wolfgang Weber, Bielefeld **
+ ** **
+ ** **
+ ** Copyright (C) 1987, 1988 Eva Latta-Weber, Bielefeld **
+ ** **
+ ** Copyright (C) 1988 ERGOS GmbH, Siegburg **
+ ** **
+ *********************************************************
+ *********************************************************
+
+ *)
+
+PACKET ls herbert und robbi 2 DEFINES{} rechts frei,{} links frei,{} hinten frei,{} korn vorn, werkstueck vorn,{} korn links, werkstueck links,{} korn rechts, werkstueck rechts,{} korn hinten, werkstueck hinten:{}BOOL PROC rechts frei:{} rechts um;{} IF vorn frei{} THEN links um; TRUE{} ELSE links um; FALSE{} FI{}END PROC rechts frei;{}BOOL PROC links frei:{} links um;{} IF vorn frei{} THEN rechts um; TRUE{} ELSE rechts um; FALSE{}
+ FI{}END PROC links frei;{}BOOL PROC hinten frei:{} kehrt;{} IF vorn frei{} THEN kehrt; TRUE{} ELSE kehrt; FALSE{} FI{}END PROC hinten frei;{}BOOL PROC korn vorn:{} IF vorn frei{} THEN untersuche feld vor dir{} ELSE FALSE{} FI.{} untersuche feld vor dir:{} vor;{} IF korn da{} THEN mache vorwaertsgehen rueckgaengig; TRUE{} ELSE mache vorwaertsgehen rueckgaengig; FALSE{} FI.{} mache vorwaertsgehen rueckgaengig:{} kehrt; vor; kehrt{}END PROC korn vorn;{}
+BOOL PROC korn links:{} links um;{} IF vorn frei{} THEN untersuche feld links{} ELSE rechts um; FALSE{} FI.{} untersuche feld links:{} vor;{} IF korn da{} THEN mache linkswende rueckgaengig; TRUE{} ELSE mache linkswende rueckgaengig; FALSE{} FI.{} mache linkswende rueckgaengig:{} kehrt; vor; links um{}END PROC korn links;{}BOOL PROC korn rechts:{} rechts um;{} IF vorn frei{} THEN untersuche feld rechts{} ELSE links um; FALSE{} FI.{} untersuche feld rechts:{}
+ vor;{} IF korn da{} THEN mache rechtswende rueckgaengig; TRUE{} ELSE mache rechtswende rueckgaengig; FALSE{} FI.{} mache rechtswende rueckgaengig:{} kehrt; vor; rechts um{}END PROC korn rechts;{}BOOL PROC korn hinten:{} kehrt;{} IF vorn frei{} THEN untersuche feld hinter dir{} ELSE kehrt; FALSE{} FI.{} untersuche feld hinter dir:{} vor;{} IF korn da{} THEN mache kehrtwende rueckgaengig; TRUE{} ELSE mache kehrtwende rueckgaengig; FALSE{} FI.{}
+ mache kehrtwende rueckgaengig:{} kehrt; vor{}END PROC korn hinten;{}PROC kehrt:{} links um; links um{}END PROC kehrt;{}PROC rechts um:{} links um; links um; links um{}END PROC rechts um;{}BOOL PROC werkstueck vorn:{} korn vorn{}END PROC werkstueck vorn;{}BOOL PROC werkstueck links:{} korn links{}END PROC werkstueck links;{}BOOL PROC werkstueck rechts:{} korn rechts{}END PROC werkstueck rechts;{}BOOL PROC werkstueck hinten:{} korn hinten{}END PROC werkstueck hinten;{}END PACKET ls herbert und robbi 2;{}
+befehlssatz erweitern (TRUE){}
+
diff --git a/app/gs.hamster/1.1/src/ls-Herbert und Robbi 3 b/app/gs.hamster/1.1/src/ls-Herbert und Robbi 3
new file mode 100644
index 0000000..e5db408
--- /dev/null
+++ b/app/gs.hamster/1.1/src/ls-Herbert und Robbi 3
@@ -0,0 +1,84 @@
+(*
+
+ *********************************************************
+ *********************************************************
+ ** **
+ ** ls-Herbert und Robbi 3 **
+ ** **
+ ** Version 1.1 **
+ ** **
+ ** (Stand: 30.03.88) **
+ ** **
+ ** **
+ ** Autor: Wolfgang Weber, Bielefeld **
+ ** **
+ ** **
+ ** Copyright (C) 1987, 1988 Eva Latta-Weber, Bielefeld **
+ ** **
+ ** Copyright (C) 1988 ERGOS GmbH, Siegburg **
+ ** **
+ *********************************************************
+ *********************************************************
+
+ *)
+
+PACKET ls herbert und robbi 3 DEFINES{} hamsterbefehlsauskunft,{} hamsterlaufauskunft,{} hamsterlandschaftsauskunft,{} hamsterlandschaft verzeichnis,{} hamsterlandschaft neu erstellen,{} hamsterlandschaft ansehen,{} hamsterlandschaft drucken,{} hamsterlandschaft kopieren,{} hamsterlandschaft umbenennen,{} hamsterlandschaft loeschen,{} hamsterprogramm verzeichnis,{} hamsterprogramm neu erstellen,{} hamsterprogramm ansehen,{} hamsterprogramm kopieren,{} hamsterprogramm umbenennen,{}
+ hamsterprogramm loeschen,{} hamsterprogramm drucken,{} hamster laufen lassen,{} hamsterinteraktiv laufen lassen,{} hamster, roboter:{}LET menukarte = "ls-MENUKARTE:Herbert und Robbi",{} praefix = "Flaeche:",{} flaechentype = 1007,{} niltext = "",{} maxlaenge = 60,{} maxnamenslaenge = 50;{}TEXT VAR flaechenname :: "",{} programmname :: "";{}INITFLAG VAR in this task :: FALSE;{}PROC initialize hamster:{}
+ IF NOT initialized (in this task){} THEN flaechenname := "";{} programmname := ""{} FI{}END PROC initialize hamster;{}PROC hamster:{} sei ein hamster;{} initialize hamster;{} install menu (menukarte);{} handle menu ("HAMSTER"){}END PROC hamster;{}PROC roboter:{} sei ein roboter;{} initialize hamster;{} install menu (menukarte);{} handle menu ("ROBOTER");{}END PROC roboter;{}PROC hamsterlaufauskunft:{} menuinfo (laufauskunftstext){}END PROC hamsterlaufauskunft;{}PROC hamsterlandschaftsauskunft:{}
+ menuinfo (landschaftsauskunftstext){}END PROC hamsterlandschaftsauskunft;{}PROC hamsterbefehlsauskunft:{} menuinfo (befehlsauskunftstext);{} menuinfo (testauskunftstext 1);{} IF testauskunftstext 2 <> ""{} THEN menuinfo (testauskunftstext 2){} FI{}END PROC hamsterbefehlsauskunft;{}PROC hamsterlandschaft verzeichnis:{} THESAURUS VAR landschaften ::{} ohne praefix (infix namen (ALL myself, praefix, flaechentype), praefix);{} forget ("Interne Thesaurusdateiliste", quiet);{} FILE VAR f :: sequential file (output, "Interne Thesaurusdateiliste");{}
+ f FILLBY landschaften;{} headline (f, anwendungstext (204)); modify (f);{} to line (f, 1); insert record (f); write record (f, kenntext);{} to line (f, 2); insert record (f);{} to line (f, 1); menuwindowshow (f);{} forget ("Interne Thesaurusdateiliste", quiet);{} regenerate menuscreen.{} kenntext:{} IF ist hamster THEN anwendungstext (121) ELSE anwendungstext (151) FI.{}END PROC hamsterlandschaft verzeichnis;{}PROC hamsterprogramm verzeichnis:{} THESAURUS VAR programme :: ALL myself - infix namen (ALL myself, praefix, flaechentype);{}
+ forget ("Interne Thesaurusdateiliste", quiet);{} FILE VAR f :: sequential file (output, "Interne Thesaurusdateiliste");{} f FILLBY programme;{} headline (f, anwendungstext (204)); modify (f);{} to line (f, 1); insert record (f); write record (f, anwendungstext (181));{} to line (f, 2); insert record (f);{} to line (f, 1); menuwindowshow (f);{} forget ("Interne Thesaurusdateiliste", quiet);{} regenerate menuscreen{}END PROC hamsterprogramm verzeichnis;{}PROC hamsterlandschaft neu erstellen:{}
+ hole flaechenname;{} kontrolliere den flaechennamen;{} kommandomodus;{} landschaft (flaechenname);{} regenerate menuscreen.{} hole flaechenname:{} IF ist hamster{} THEN flaechenname := menuanswer (anwendungstext (101) +{} anwendungstext (102), "", 5){} ELSE flaechenname := menuanswer (anwendungstext (131) +{} anwendungstext (132), "", 5){} FI.{} kontrolliere den flaechennamen:{} IF flaechenname = niltext{}
+ THEN LEAVE hamsterlandschaft neu erstellen{} ELIF length (flaechenname) > maxnamenslaenge{} THEN meckere zu langen namen an;{} flaechenname := niltext;{} LEAVE hamsterlandschaft neu erstellen{} ELIF exists (praefix + flaechenname){} THEN meckere existierende flaeche an;{} LEAVE hamsterlandschaft neu erstellen{} FI{}END PROC hamsterlandschaft neu erstellen;{}PROC hamsterprogramm neu erstellen:{} hole programmname;{} kontrolliere den programmnamen;{}
+ command dialogue (FALSE);{} cursor on;{} stdinfoedit (programmname);{} cursor off;{} command dialogue (TRUE);{} regenerate menuscreen.{} hole programmname:{} programmname := menuanswer (anwendungstext (161) +{} anwendungstext (162), "", 5).{} kontrolliere den programmnamen:{} IF programmname = niltext{} THEN LEAVE hamsterprogramm neu erstellen{} ELIF length (programmname) > maxnamenslaenge{} THEN meckere zu langen namen an;{} programmname := niltext;{}
+ LEAVE hamsterprogramm neu erstellen{} ELIF exists (programmname){} THEN meckere existierendes programm an;{} LEAVE hamsterprogramm neu erstellen{} FI{}END PROC hamsterprogramm neu erstellen;{}PROC hamsterlandschaft ansehen:{} IF flaechenname <> niltext CAND exists (praefix + flaechenname){} THEN frage nach dieser flaeche{} ELSE lasse flaeche auswaehlen{} FI;{} kommandomodus;{} landschaft (flaechenname);{} regenerate menuscreen.{} frage nach dieser flaeche:{}
+ IF menuno (ueberschrift + text 1 + name + text 2, 5){} THEN lasse flaeche auswaehlen{} FI.{} ueberschrift:{} IF ist hamster{} THEN center (maxlaenge, invers (anwendungstext (105))) + ""13""13""{} ELSE center (maxlaenge, invers (anwendungstext (135))) + ""13""13""{} FI.{} text 1:{} IF ist hamster THEN anwendungstext (103) ELSE anwendungstext (133) FI.{} name:{} ""13""13" " + invers (flaechenname) + ""13""13"".{} text 2:{} IF ist hamster THEN anwendungstext (104) ELSE anwendungstext (134) FI.{}
+ lasse flaeche auswaehlen:{} THESAURUS VAR verfuegbare;{} verfuegbare := ohne praefix (infix namen (ALL myself, praefix, flaechentype), praefix);{} IF NOT not empty (verfuegbare){} THEN noch keine flaeche;{} LEAVE hamsterlandschaft ansehen{} ELSE biete auswahl an{} FI.{} biete auswahl an:{} IF ist hamster{} THEN flaechenname := menuone (verfuegbare, anwendungstext (105),{} anwendungstext (106), FALSE){} ELSE flaechenname := menuone (verfuegbare, anwendungstext (135),{}
+ anwendungstext (136), FALSE){} FI;{} IF flaechenname = niltext{} THEN regenerate menuscreen;{} LEAVE hamsterlandschaft ansehen{} FI.{}END PROC hamsterlandschaft ansehen;{}PROC hamsterprogramm ansehen:{} IF programmname <> niltext CAND exists (programmname){} THEN frage nach diesem programm{} ELSE lasse programm auswaehlen{} FI;{} cursor on;{} stdinfoedit (programmname);{} cursor off;{} regenerate menuscreen.{} frage nach diesem programm:{}
+ IF menuno (ueberschrift + anwendungstext (163) + name{} + anwendungstext (164), 5){} THEN lasse programm auswaehlen{} FI.{} ueberschrift:{} center (maxlaenge, invers (anwendungstext (165))) + ""13""13"".{} name:{} ""13""13" " + invers (programmname) + ""13""13"".{} lasse programm auswaehlen:{} THESAURUS VAR verfuegbare;{} verfuegbare := ALL myself - infix namen (ALL myself, praefix, flaechentype);{} IF NOT not empty (verfuegbare){} THEN noch kein programm;{}
+ LEAVE hamsterprogramm ansehen{} ELSE biete auswahl an{} FI.{} biete auswahl an:{} programmname := menuone (verfuegbare, anwendungstext (165),{} anwendungstext (166), FALSE);{} IF programmname = niltext{} THEN regenerate menuscreen;{} LEAVE hamsterprogramm ansehen{} FI.{}END PROC hamsterprogramm ansehen;{}PROC hamsterlandschaft drucken:{} lasse flaechen auswaehlen;{} drucke flaechen;{} regenerate menuscreen.{} lasse flaechen auswaehlen:{}
+ THESAURUS VAR verfuegbare;{} verfuegbare := ohne praefix (infix namen (ALL myself, praefix, flaechentype), praefix);{} IF NOT not empty (verfuegbare){} THEN noch keine flaeche;{} LEAVE hamsterlandschaft drucken{} ELSE biete auswahl an{} FI.{} biete auswahl an:{} IF ist hamster{} THEN verfuegbare := menusome (verfuegbare, anwendungstext (107),{} anwendungstext (108), FALSE){} ELSE verfuegbare := menusome (verfuegbare, anwendungstext (137),{}
+ anwendungstext (138), FALSE){} FI.{} drucke flaechen:{} show menuwindow;{} steige ggf bei leerem thesaurus aus;{} menuwindowout (menuwindowcenter (invers (bezeichnung)));{} menuwindowline (2);{} command dialogue (FALSE);{} fuehre einzelne operationen aus;{} command dialogue (TRUE);{} schlage ggf neue seite auf;{} menuwindowout (schlussbemerkung);{} menuwindowstop.{} bezeichnung:{} IF ist hamster THEN anwendungstext (107) ELSE anwendungstext (137) FI.{}
+ schlussbemerkung:{} IF ist hamster THEN anwendungstext (110) ELSE anwendungstext (140) FI.{} fuehre einzelne operationen aus:{} INT VAR k;{} FOR k FROM 1 UPTO highest entry (verfuegbare) REP{} IF name (verfuegbare, k) <> ""{} THEN disable stop;{} menuwindowout ( " """ + name (verfuegbare, k) + """ "{} + anwendungstext (201));{} menuwindowline;{} drucke landschaft (name (verfuegbare, k));{} fehlerbehandlung{}
+ FI{} PER.{} steige ggf bei leerem thesaurus aus:{} IF NOT not empty (verfuegbare){} THEN menuwindowline (2);{} IF ist hamster{} THEN menuwindowout (anwendungstext (109)){} ELSE menuwindowout (anwendungstext (139)){} FI;{} menuwindowstop;{} regenerate menuscreen;{} LEAVE hamsterlandschaft drucken{} FI.{} schlage ggf neue seite auf:{} IF remaining menuwindowlines < 7{} THEN menuwindowpage; menuwindowline{}
+ ELSE menuwindowline (2){} FI.{} fehlerbehandlung:{} IF is error{} THEN regenerate menuscreen;{} menuinfo (invers (errormessage));{} clear error; enable stop;{} LEAVE hamsterlandschaft drucken{} FI.{}END PROC hamsterlandschaft drucken;{}PROC hamsterprogramm drucken:{} lasse programme auswaehlen;{} drucke programme;{} regenerate menuscreen.{} lasse programme auswaehlen:{} THESAURUS VAR verfuegbare;{} verfuegbare := ALL myself - infix namen (ALL myself, praefix, flaechentype);{}
+ IF NOT not empty (verfuegbare){} THEN noch kein programm;{} LEAVE hamsterprogramm drucken{} ELSE biete auswahl an{} FI.{} biete auswahl an:{} verfuegbare := menusome (verfuegbare, anwendungstext (167),{} anwendungstext (168), FALSE).{} drucke programme:{} show menuwindow;{} steige ggf bei leerem thesaurus aus;{} menuwindowout (menuwindowcenter (invers (anwendungstext (167))));{} menuwindowline (2);{} command dialogue (FALSE);{}
+ fuehre einzelne operationen aus;{} command dialogue (TRUE);{} schlage ggf neue seite auf;{} menuwindowout (anwendungstext (170));{} menuwindowstop.{} fuehre einzelne operationen aus:{} INT VAR k;{} FOR k FROM 1 UPTO highest entry (verfuegbare) REP{} IF name (verfuegbare, k) <> ""{} THEN disable stop;{} menuwindowout ( " """ + name (verfuegbare, k) + """ "{} + anwendungstext (201));{} menuwindowline;{}
+ print (name (verfuegbare, k));{} fehlerbehandlung{} FI{} PER.{} steige ggf bei leerem thesaurus aus:{} IF NOT not empty (verfuegbare){} THEN menuwindowline (2);{} menuwindowout (anwendungstext (169));{} menuwindowstop;{} regenerate menuscreen;{} LEAVE hamsterprogramm drucken{} FI.{} schlage ggf neue seite auf:{} IF remaining menuwindowlines < 7{} THEN menuwindowpage; menuwindowline{} ELSE menuwindowline (2){}
+ FI.{} fehlerbehandlung:{} IF is error{} THEN regenerate menuscreen;{} menuinfo (invers (errormessage));{} clear error; enable stop;{} LEAVE hamsterprogramm drucken{} FI.{}END PROC hamsterprogramm drucken;{}PROC hamsterlandschaft kopieren:{} ermittle alten flaechennamen;{} erfrage neuen flaechennamen;{} kopiere ggf die flaeche.{} ermittle alten flaechennamen:{} IF NOT not empty (bestand){} THEN noch keine flaeche;{} LEAVE hamsterlandschaft kopieren{}
+ ELSE biete auswahl an{} FI.{} biete auswahl an:{} TEXT VAR alter name := menuone ( bestand, text1, text2, TRUE);{} IF alter name = niltext{} THEN LEAVE hamsterlandschaft kopieren{} FI.{} bestand:{} ohne praefix (infix namen (ALL myself, praefix, flaechentype), praefix).{} text1:{} IF ist hamster THEN anwendungstext (111) ELSE anwendungstext (141) FI.{} text2:{} IF ist hamster THEN anwendungstext (112) ELSE anwendungstext (142) FI.{} erfrage neuen flaechennamen:{}
+ TEXT VAR neuer name :: menuanswer (ausgabe, alter name, 5).{} ausgabe:{} ueberschrift + hinweis auf alt + bisheriger name + aufforderung.{} ueberschrift:{} IF ist hamster{} THEN center (maxlaenge, invers (anwendungstext (111))) + ""13""13""{} ELSE center (maxlaenge, invers (anwendungstext (141))) + ""13""13""{} FI.{} hinweis auf alt:{} IF ist hamster THEN anwendungstext (113) ELSE anwendungstext (143) FI.{} bisheriger name:{} ""13""13" " + invers (alter name) + ""13""13"".{}
+ aufforderung:{} anwendungstext (202).{} kopiere ggf die flaeche:{} IF neuer name = niltext{} THEN menuinfo (invers (anwendungstext (192)));{} LEAVE hamsterlandschaft kopieren{} ELIF exists (praefix + neuer name){} THEN mache vorwurf;{} LEAVE hamsterlandschaft kopieren{} ELSE copy (praefix + alter name, praefix + neuer name){} FI.{} mache vorwurf:{} IF ist hamster{} THEN menuinfo (anwendungstext (193)){} ELSE menuinfo (anwendungstext (194)){}
+ FI.{}END PROC hamsterlandschaft kopieren;{}PROC hamsterprogramm kopieren:{} ermittle alten programmnamen;{} erfrage neuen programmnamen;{} kopiere ggf das programm.{} ermittle alten programmnamen:{} IF NOT not empty (bestand){} THEN noch kein programm;{} LEAVE hamsterprogramm kopieren{} ELSE biete auswahl an{} FI.{} biete auswahl an:{} TEXT VAR alter name := menuone ( bestand, anwendungstext (171),{} anwendungstext (172), TRUE);{}
+ IF alter name = niltext{} THEN LEAVE hamsterprogramm kopieren{} FI.{} bestand:{} ALL myself - infix namen (ALL myself, praefix, flaechentype).{} erfrage neuen programmnamen:{} TEXT VAR neuer name :: menuanswer (ausgabe, alter name, 5).{} ausgabe:{} ueberschrift + anwendungstext (173) + bisheriger name{} + anwendungstext (202).{} ueberschrift:{} center (maxlaenge, invers (anwendungstext (171))) + ""13""13"".{} bisheriger name:{} ""13""13" " + invers (alter name) + ""13""13"".{}
+ kopiere ggf das programm:{} IF neuer name = niltext{} THEN menuinfo (invers (anwendungstext (192)));{} LEAVE hamsterprogramm kopieren{} ELIF exists (neuer name){} THEN mache vorwurf;{} LEAVE hamsterprogramm kopieren{} ELSE copy (alter name, neuer name){} FI.{} mache vorwurf:{} menuinfo (anwendungstext (195)).{}END PROC hamsterprogramm kopieren;{}PROC hamsterlandschaft umbenennen:{} ermittle alten flaechennamen;{} erfrage neuen flaechennamen;{}
+ benenne ggf die flaeche um.{} ermittle alten flaechennamen:{} IF NOT not empty (bestand){} THEN noch keine flaeche;{} LEAVE hamsterlandschaft umbenennen{} ELSE biete auswahl an{} FI.{} biete auswahl an:{} TEXT VAR alter name := menuone ( bestand, text1, text2, TRUE);{} IF alter name = niltext{} THEN LEAVE hamsterlandschaft umbenennen{} FI.{} bestand:{} ohne praefix (infix namen (ALL myself, praefix, flaechentype), praefix).{} text1:{} IF ist hamster THEN anwendungstext (114) ELSE anwendungstext (144) FI.{}
+ text2:{} IF ist hamster THEN anwendungstext (115) ELSE anwendungstext (145) FI.{} erfrage neuen flaechennamen:{} TEXT VAR neuer name :: menuanswer (ausgabe, alter name, 5).{} ausgabe:{} ueberschrift + hinweis auf alt + bisheriger name + aufforderung.{} ueberschrift:{} IF ist hamster{} THEN center (maxlaenge, invers (anwendungstext (114))) + ""13""13""{} ELSE center (maxlaenge, invers (anwendungstext (144))) + ""13""13""{} FI.{} hinweis auf alt:{} IF ist hamster THEN anwendungstext (116) ELSE anwendungstext (146) FI.{}
+ bisheriger name:{} ""13""13" " + invers (alter name) + ""13""13"".{} aufforderung:{} IF ist hamster THEN anwendungstext (117) ELSE anwendungstext (147) FI.{} benenne ggf die flaeche um:{} IF neuer name = niltext{} THEN menuinfo (invers (anwendungstext (192)));{} LEAVE hamsterlandschaft umbenennen{} ELIF exists (praefix + neuer name){} THEN mache vorwurf;{} LEAVE hamsterlandschaft umbenennen{} ELSE rename (praefix + alter name, praefix + neuer name);{}
+ flaechenname := neuer name{} FI.{} mache vorwurf:{} IF ist hamster{} THEN menuinfo (anwendungstext (193)){} ELSE menuinfo (anwendungstext (194)){} FI.{}END PROC hamsterlandschaft umbenennen;{}PROC hamsterprogramm umbenennen:{} ermittle alten programmnamen;{} erfrage neuen programmnamen;{} benenne ggf das programm um.{} ermittle alten programmnamen:{} IF NOT not empty (bestand){} THEN noch kein programm;{} LEAVE hamsterprogramm umbenennen{} ELSE biete auswahl an{}
+ FI.{} biete auswahl an:{} TEXT VAR alter name := menuone ( bestand, anwendungstext (174),{} anwendungstext (175), TRUE);{} IF alter name = niltext{} THEN LEAVE hamsterprogramm umbenennen{} FI.{} bestand:{} ALL myself - infix namen (ALL myself, praefix, flaechentype).{} erfrage neuen programmnamen:{} TEXT VAR neuer name :: menuanswer (ausgabe, alter name, 5).{} ausgabe:{} ueberschrift + anwendungstext (176) + bisheriger name{} + anwendungstext (177).{}
+ ueberschrift:{} center (maxlaenge, invers (anwendungstext (174))) + ""13""13"".{} bisheriger name:{} ""13""13" " + invers (alter name) + ""13""13"".{} benenne ggf das programm um:{} IF neuer name = niltext{} THEN menuinfo (invers (anwendungstext (192)));{} LEAVE hamsterprogramm umbenennen{} ELIF exists (neuer name){} THEN mache vorwurf;{} LEAVE hamsterprogramm umbenennen{} ELSE rename (alter name, neuer name);{} programmname := neuer name{}
+ FI.{} mache vorwurf:{} menuinfo (anwendungstext (195)).{}END PROC hamsterprogramm umbenennen;{}PROC hamsterlandschaft loeschen:{} lasse flaechen auswaehlen;{} loesche flaechen;{} regenerate menuscreen.{} lasse flaechen auswaehlen:{} THESAURUS VAR verfuegbare;{} verfuegbare := ohne praefix (infix namen (ALL myself, praefix, flaechentype), praefix);{} IF NOT not empty (verfuegbare){} THEN noch keine flaeche;{} LEAVE hamsterlandschaft loeschen{} ELSE biete auswahl an{}
+ FI.{} biete auswahl an:{} IF ist hamster{} THEN verfuegbare := menusome (verfuegbare, anwendungstext (118),{} anwendungstext (119), FALSE){} ELSE verfuegbare := menusome (verfuegbare, anwendungstext (148),{} anwendungstext (149), FALSE){} FI.{} loesche flaechen:{} show menuwindow;{} steige ggf bei leerem thesaurus aus;{} menuwindowout (menuwindowcenter (invers (bezeichnung)));{} menuwindowline (2);{}
+ command dialogue (FALSE);{} fuehre einzelne operationen aus;{} command dialogue (TRUE);{} schlage ggf neue seite auf;{} menuwindowout (schlussbemerkung);{} menuwindowstop.{} bezeichnung:{} IF ist hamster THEN anwendungstext (118) ELSE anwendungstext (148) FI.{} schlussbemerkung:{} IF ist hamster THEN anwendungstext (120) ELSE anwendungstext (150) FI.{} fuehre einzelne operationen aus:{} INT VAR k;{} FOR k FROM 1 UPTO highest entry (verfuegbare) REP{} IF name (verfuegbare, k) <> ""{}
+ THEN disable stop;{} IF menuwindowyes (" """ + name (verfuegbare, k) + """ "{} + anwendungstext (203)){} THEN forget (praefix + name (verfuegbare, k), quiet){} FI;{} fehlerbehandlung{} FI{} PER;{} flaechenname := "".{} steige ggf bei leerem thesaurus aus:{} IF NOT not empty (verfuegbare){} THEN menuwindowline (2);{} IF ist hamster{} THEN menuwindowout (anwendungstext (109)){}
+ ELSE menuwindowout (anwendungstext (139)){} FI;{} menuwindowstop;{} regenerate menuscreen;{} LEAVE hamsterlandschaft loeschen{} FI.{} schlage ggf neue seite auf:{} IF remaining menuwindowlines < 7{} THEN menuwindowpage; menuwindowline{} ELSE menuwindowline (2){} FI.{} fehlerbehandlung:{} IF is error{} THEN regenerate menuscreen;{} menuinfo (invers (errormessage));{} clear error; enable stop;{}
+ LEAVE hamsterlandschaft loeschen{} FI.{}END PROC hamsterlandschaft loeschen;{}PROC hamsterprogramm loeschen:{} lasse programme auswaehlen;{} loesche programme;{} regenerate menuscreen.{} lasse programme auswaehlen:{} THESAURUS VAR verfuegbare;{} verfuegbare := ALL myself - infix namen (ALL myself, praefix, flaechentype);{} IF NOT not empty (verfuegbare){} THEN noch kein programm;{} LEAVE hamsterprogramm loeschen{} ELSE biete auswahl an{} FI.{}
+ biete auswahl an:{} verfuegbare := menusome (verfuegbare, anwendungstext (178),{} anwendungstext (179), FALSE).{} loesche programme:{} show menuwindow;{} steige ggf bei leerem thesaurus aus;{} menuwindowout (menuwindowcenter (invers (anwendungstext (178))));{} menuwindowline (2);{} command dialogue (FALSE);{} fuehre einzelne operationen aus;{} command dialogue (TRUE);{} schlage ggf neue seite auf;{} menuwindowout (anwendungstext (180));{}
+ menuwindowstop.{} fuehre einzelne operationen aus:{} INT VAR k;{} FOR k FROM 1 UPTO highest entry (verfuegbare) REP{} IF name (verfuegbare, k) <> ""{} THEN disable stop;{} IF menuwindowyes (" """ + name (verfuegbare, k) + """ "{} + anwendungstext (203)){} THEN forget (name (verfuegbare, k), quiet){} FI;{} fehlerbehandlung{} FI{} PER;{} programmname := "".{} steige ggf bei leerem thesaurus aus:{}
+ IF NOT not empty (verfuegbare){} THEN menuwindowline (2);{} menuwindowout (anwendungstext (169));{} menuwindowstop;{} regenerate menuscreen;{} LEAVE hamsterprogramm loeschen{} FI.{} schlage ggf neue seite auf:{} IF remaining menuwindowlines < 7{} THEN menuwindowpage; menuwindowline{} ELSE menuwindowline (2){} FI.{} fehlerbehandlung:{} IF is error{} THEN regenerate menuscreen;{} menuinfo (invers (errormessage));{}
+ clear error; enable stop;{} LEAVE hamsterprogramm loeschen{} FI.{}END PROC hamsterprogramm loeschen;{}PROC hamsterinteraktiv laufen lassen:{} frage nach neuer flaeche;{} cursor on;{} IF ist hamster{} THEN hamsterinter (flaechenname){} ELSE roboterinter (flaechenname){} FI;{} programmname := "PROTOKOLL";{} cursor off;{} regenerate menuscreen.{} frage nach neuer flaeche:{} IF menuyes (ueberschrift + fragetext, 5){} THEN lasse flaeche auswaehlen{} ELSE weise auf landschaftsgestaltung hin;{}
+ LEAVE hamsterinteraktiv laufen lassen{} FI.{} ueberschrift:{} IF ist hamster{} THEN center (laenge, invers (anwendungstext (122))) + ""13""13""{} ELSE center (laenge, invers (anwendungstext (152))) + ""13""13""{} FI.{} fragetext:{} IF ist hamster{} THEN center (laenge, anwendungstext (123)){} ELSE center (laenge, anwendungstext (153)){} FI.{} laenge:{} IF ist hamster{} THEN max (length (anwendungstext (122)),{} length (anwendungstext (123))) + 5{}
+ ELSE max (length (anwendungstext (152)),{} length (anwendungstext (153))) + 5{} FI.{} lasse flaeche auswaehlen:{} THESAURUS VAR verfuegbare;{} verfuegbare := ohne praefix (infix namen (ALL myself, praefix, flaechentype), praefix);{} IF ist hamster{} THEN flaechenname := menuone (verfuegbare, anwendungstext (122),{} anwendungstext (106), FALSE){} ELSE flaechenname := menuone (verfuegbare, anwendungstext (152),{} anwendungstext (136), FALSE){}
+ FI;{} IF flaechenname = niltext{} THEN weise auf landschaftsgestaltung hin;{} regenerate menuscreen;{} LEAVE hamsterinteraktiv laufen lassen{} FI.{} weise auf landschaftsgestaltung hin:{} WINDOW VAR mfenster := current menuwindow;{} IF ist hamster{} THEN boxinfo (mfenster, anwendungstext (124), 5, maxint){} ELSE boxinfo (mfenster, anwendungstext (154), 5, maxint){} FI.{}END PROC hamsterinteraktiv laufen lassen;{}PROC hamster laufen lassen:{}
+ programmname ermitteln;{} BOOL VAR namen eingesetzt :: FALSE;{} untersuche programmdatei auf flaechennamen;{} page;{} geschwindigkeit (5);{} cursor on;{} lauf (programmname);{} cursor off;{} IF namen eingesetzt{} THEN entferne flaechennamen aus programmdatei{} FI;{} regenerate menuscreen.{} programmname ermitteln:{} IF programmname <> niltext CAND exists (programmname){} THEN frage nach diesem programm{} ELSE lasse programm auswaehlen{} FI.{} frage nach diesem programm:{}
+ IF menuno (ueberschrift + anwendungstext (163) + name + anwendungstext (164), 5){} THEN lasse programm auswaehlen{} FI.{} ueberschrift:{} IF ist hamster{} THEN center (maxlaenge, invers (anwendungstext (125))) + ""13""13""{} ELSE center (maxlaenge, invers (anwendungstext (155))) + ""13""13""{} FI.{} name:{} ""13""13" " + invers (programmname) + ""13""13"".{} lasse programm auswaehlen:{} THESAURUS VAR verfuegbare;{} verfuegbare := ALL myself - infix namen (ALL myself, praefix, flaechentype);{}
+ IF ist hamster{} THEN programmname := menuone (verfuegbare, anwendungstext (125),{} anwendungstext (166), TRUE){} ELSE programmname := menuone (verfuegbare, anwendungstext (155),{} anwendungstext (166), TRUE){} FI;{} IF programmname = niltext{} THEN LEAVE hamster laufen lassen{} FI.{} untersuche programmdatei auf flaechennamen:{} FILE VAR a :: sequential file (modify, programmname);{} TEXT VAR zeile;{}
+ to line (a, 1);{} REP{} read record (a, zeile);{} zeile := compress (zeile);{} IF NOT eof (a) THEN down (a) FI{} UNTIL zeile <> "" OR eof (a) PER;{} IF pos (zeile, "landschaft") = 0 AND pos (zeile, "arbeitsfeld") = 0{} THEN ermittle flaechennamen;{} setze flaechennamen in datei ein{} FI.{} ermittle flaechennamen:{} IF flaechenname <> ""{} THEN frage nach altem flaechennamen{} ELSE lasse flaeche auswaehlen{} FI.{} frage nach altem flaechennamen:{}
+ IF ist hamster{} THEN frage nach alter landschaft{} ELSE frage nach altem arbeitsfeld{} FI.{} frage nach alter landschaft:{} IF menuno (ueberschrift + anwendungstext (103){} + fname + anwendungstext (104), 5){} THEN lasse flaeche auswaehlen{} FI.{} frage nach altem arbeitsfeld:{} IF menuno (ueberschrift + anwendungstext (133){} + fname + anwendungstext (134), 5){} THEN lasse flaeche auswaehlen{} FI.{} fname:{} ""13""13" " + invers (flaechenname) + ""13""13"".{}
+ lasse flaeche auswaehlen:{} verfuegbare := ohne praefix (infix namen (ALL myself, praefix, flaechentype), praefix);{} IF ist hamster{} THEN flaechenname := menuone (verfuegbare, anwendungstext (125),{} anwendungstext (106), FALSE){} ELSE flaechenname := menuone (verfuegbare, anwendungstext (155),{} anwendungstext (136), FALSE){} FI;{} IF flaechenname = niltext{} THEN regenerate menuscreen;{} landschaftsfehler anzeigen;{}
+ LEAVE hamster laufen lassen{} FI.{} landschaftsfehler anzeigen:{} IF ist hamster{} THEN menuinfo (anwendungstext (124)){} ELSE menuinfo (anwendungstext (154)){} FI.{} setze flaechennamen in datei ein:{} to line (a, 1);{} zeile := "landschaft (""" + flaechenname + """);";{} insert record (a);{} write record (a, zeile);{} namen eingesetzt := TRUE.{} entferne flaechennamen aus programmdatei:{} FILE VAR b :: sequential file (modify, programmname);{}
+ to line (b, 1);{} REP{} read record (b, zeile);{} IF pos (zeile, "landschaft") = 0 AND pos (zeile, "arbeitsfeld") = 0{} THEN IF NOT eof (b) THEN down (b) FI{} FI{} UNTIL zeile <> "" OR eof (b) PER;{} IF pos (zeile, "landschaft") > 0 OR pos (zeile, "arbeitsfeld") > 0{} THEN delete record (b){} FI{}END PROC hamster laufen lassen;{}PROC meckere zu langen namen an:{} menuinfo (anwendungstext (191)){}END PROC meckere zu langen namen an;{}PROC meckere existierende flaeche an:{}
+ IF ist hamster{} THEN menuinfo (anwendungstext (193)){} ELSE menuinfo (anwendungstext (194)){} FI{}END PROC meckere existierende flaeche an;{}PROC meckere existierendes programm an:{} menuinfo (anwendungstext (195)){}END PROC meckere existierendes programm an;{}PROC noch keine flaeche:{} IF ist hamster{} THEN menuinfo (anwendungstext (196)){} ELSE menuinfo (anwendungstext (197)){} FI{}END PROC noch keine flaeche;{}PROC noch kein programm:{} menuinfo (anwendungstext (198)){}
+END PROC noch kein programm;{}END PACKET ls herbert und robbi 3;{}
+
diff --git a/app/gs.hamster/1.1/src/ls-Herbert und Robbi-gen b/app/gs.hamster/1.1/src/ls-Herbert und Robbi-gen
new file mode 100644
index 0000000..ae21ddb
--- /dev/null
+++ b/app/gs.hamster/1.1/src/ls-Herbert und Robbi-gen
@@ -0,0 +1,33 @@
+(*
+
+ *********************************************************
+ *********************************************************
+ ** **
+ ** ls-Herbert und Robbi **
+ ** GENERATORPROGRAMM **
+ ** Version 1.1 **
+ ** **
+ ** (Stand: 30.03.88) **
+ ** **
+ ** **
+ ** Autor: Wolfgang Weber, Bielefeld **
+ ** **
+ ** **
+ ** Copyright (C) 1987, 1988 Eva Latta-Weber, Bielefeld **
+ ** **
+ ** Copyright (C) 1988 ERGOS GmbH, Siegburg **
+ ** **
+ *********************************************************
+ *********************************************************
+
+ *)
+
+LET mm taskname = "ls-MENUKARTEN",{} datei1 = "ls-Herbert und Robbi 1",{} datei2 = "ls-Herbert und Robbi 2",{} datei3 = "ls-Herbert und Robbi 3",{} menukarte = "ls-MENUKARTE:Herbert und Robbi";{}PROC stelle existenz des mm sicher:{} cursor (1, 5); out (""4"");{} IF NOT exists (task (mm taskname)){} THEN errorstop ("Unbedingt erst den 'MENUKARTEN MANAGER' generieren!");{} FI{}END PROC stelle existenz des mm sicher;{}PROC vom archiv (TEXT CONST datei):{} cursor (1,5); out (""4"");{}
+ out (" """); out (datei); putline (""" wird geholt.");{} fetch (datei, archive){}END PROC vom archiv;{}PROC hole (TEXT CONST datei):{} IF NOT exists (datei) THEN vom archiv (datei) FI{}END PROC hole;{}PROC in (TEXT CONST datei):{} hole (datei);{} cursor (1, 5); out (""4"");{} out (" """); out (datei); out (""" wird übersetzt: ");{} insert (datei);{} forget (datei, quiet);{}END PROC in;{}PROC schicke (TEXT CONST datei):{} cursor (1, 5); out (""4"");{} out (" """); out(datei);{} out (""" wird zum MENUKARTEN-MANAGER geschickt!");{}
+ command dialogue (FALSE);{} save (datei, task (mm taskname));{} command dialogue (TRUE);{} forget (datei, quiet){}END PROC schicke;{}INT VAR size, used;{}BOOL VAR einzeln, mit erweiterung :: FALSE;{}storage (size, used);{}einzeln := size - used < 500;{}forget ("ls-Herbert und Robbi/gen", quiet);{}wirf kopfzeile aus;{}stelle existenz des mm sicher;{}hole die dateien;{}insertiere die dateien;{}mache global manager aus der task.{}wirf kopfzeile aus:{} page;{} putline (" "15"ls-Herbert und Robbi - Automatische Generierung "14"");{}
+ line (2);{} putline (" Bitte beantworten Sie noch die folgende Frage:");{} line;{} put(" Sollen neben den 'Standardtests' auch die folgenden 'Tests':");{} line (2);{} putline(" Für den Hamster: Für den Roboter:");{} putline(" links frei links frei");{} putline(" rechts frei rechts frei");{} putline(" hinten frei hinten frei");{} putline(" korn vorn werkstueck vorn");{}
+ putline(" korn links werkstueck links");{} putline(" korn rechts werkstueck rechts");{} putline(" korn hinten werkstueck hinten");{} line;{} IF yes(" zur Verfügung gestellt werden"){} THEN mit erweiterung := TRUE{} FI.{}hole die dateien:{} IF NOT exists (datei 1){} COR NOT exists (datei 3){} COR NOT exists (menukarte){} THEN hole dateien vom archiv; LEAVE hole die dateien{}
+ FI;{} IF mit erweiterung AND NOT exists (datei 2){} THEN hole dateien vom archiv{} FI.{}hole dateien vom archiv:{} cursor (1,3); out (""4"");{} IF yes ("Ist das Archiv angemeldet und die Diskette eingelegt"){} THEN lese ein{} ELSE line (2);{} errorstop ("Ohne die Diskette kann ich das System nicht generieren!"){} FI.{}lese ein:{} cursor (1, 3); out (""4"");{} out (" "15"Bitte die Diskette eingelegt lassen! "14"");{} IF NOT einzeln{} THEN hole (datei 1);{}
+ hole (datei 3);{} hole (menukarte);{} IF mit erweiterung{} THEN hole (datei 2){} FI;{} cursor (1, 3); out(""4"");{} out (" "15"Die Diskette wird nicht mehr benötigt! "14"");{} release (archive){} FI.{}insertiere die dateien:{} check off;{} cursor (1, 3); out(""4"");{} out (" "15"Die Diskette wird nicht mehr benötigt! "14"");{} in (datei 1);{} IF mit erweiterung{} THEN in (datei 2){}
+ FI;{} in (datei 3);{} schicke (menukarte);{} IF einzeln THEN release (archive) FI;{} check on.{}mache global manager aus der task:{} global manager.{}
+
diff --git a/app/gs.hamster/1.1/src/ls-MENUKARTE:Herbert und Robbi b/app/gs.hamster/1.1/src/ls-MENUKARTE:Herbert und Robbi
new file mode 100644
index 0000000..2e9629c
--- /dev/null
+++ b/app/gs.hamster/1.1/src/ls-MENUKARTE:Herbert und Robbi
Binary files differ