Fit in Latein mit dem C 64
Ein leidiges Thema für alle Lateinschüler: Vokabeln pauken. Mit dem C 64 kann es fast schon Spaß machen, vor allem, wenn man ein speziell auf lateinische Vokabeln zugeschnittenes Vokabellernprogramm hat.

Lernprogramme gibt es ja mittlerweile recht viele, aber keines, das zum Beispiel die verschiedenen lateinischen Fälle berücksichtigt. »Cursus-Latinus« hat neben dieser Besonderheit noch eine beispielhafte Benutzerführung.
Die Vokabeln lassen sich in verschiedene Lektionen aufteilen. Diese kann man später beliebig erweitern oder verbessern.
Bei der Eingabe der einzelnen Vokabeln muß man zuerst die Wortart wählen. Entweder »Nomen«, oder »Adjektiv«, »Adverb«, »Verb«, »Deponens« oder »Semideponens«. Hier zeigen sich bereits die Stärken des Programms. Bei »Nomen« kann man dann das lateinische Wort selber, dessen Genitiv, den Genus und maximal drei deutsche Bedeutungen eingeben.

Hat man »Deponens« gewählt, so besteht die Eingabe aus der ersten und der zweiten Stammform, und wieder den drei deutschen Bedeutungen. Beim Adjektiv muß zusätzlich noch der Genus eingegeben werden. Später beim Abfragen erteilt das Programm auf jede richtige Eingabe einen Punkt. Diese werden nach jeder Lektion ausgewertet und ausgegeben.
Im Programm wurde auf jede unnötige grafische Spielerei verzichtet. Nicht gespart wurde dagegen an aufwendigen Bildschirmmasken und Hilfstafeln, die auf einen Tastendruck eine Übersicht der einzelnen Tastenfunktionen bringen.
(Bernd Kraus/tr)Mit »Cursus Latinus« können Sie sich Ihr eigenes elektronisches Lateinlehrbuch aufbauen und dieses lektionenweise studieren. Daß dabei die Besonderheiten der lateinischen Sprache berücksichtigt werden, macht das Programm so außergewöhnlich.
Grund zum Schreiben dieses Programms gaben mir einerseits meine schlechten Zensuren in Latein und andererseits mein Ärger darüber, daß alle mir bekannten Vokabellernprogramme für Lateinvokabeln gänzlich ungeeignet sind.
Große Probleme hatte ich anfangs mit der Abfrageroutine, aber ich habe das Programm so weit entwickelt, daß a) bei der zufälligen Abfrage der Vokabeln kein Wort doppelt abgefragt wird und b) die Bedeutung der Vokabeln in beliebiger Reihenfolge eingegeben werden können.
Das Programm ist an manchen Stellen recht langsam, allerdings empfehle ich nicht, es zu compilieren, denn dadurch würde derohnehin knappe Speicher für Vokabeln noch kürzer.
Programmbeschreibung
Nach dem Starten des Programms wird dem Benutzer ein Menü mit fünf Punkten angeboten:
(a) Editieren | (c) Diskette | (e) Ende |
(b) Abfragen | (d) Drucken |
(a) Editieren
Im Informationskasten (siehe Bild 1, Punkt a) sind die vier Hauptfunktionen dieses Programmteils dargestellt:
(1) Eingabe | (2) Verbessern |
(3) Löschen | (4) Einfügen |
Weitere Funktionen sind (eine Übersicht ist mit der Taste f8 abrufbar):
(f1) | Blättern 10 Einheiten vor |
(f3) | Blättern 10 Einheiten zurück |
(f5) | Blättern 1 Einheit vor |
(f7) | Blättern 1 Einheit zurück |
(+) | Index um 10 erhöhen |
(—) | Index um 1 erhöhen |
(←) | Hauptmenü |
(1) Eingabe der Vokabeln
Bei der Eingabe muß zuerst die Wortart mit den Tasten < und > gewählt werden ( die angewählte wird in weiß dargestellt), Symbole:
Nom = Nomen | Adj = Adjektiv |
Adv = Adverb | Ver = Verb |
Dep = Deponens | Sem = Semideponens |
Konjunktionen sollten wie Adverbien behandelt werden.
Jetzt beginnt die eigentliche Eingabe: Der Cursor steht im Vokabel-Indexfeld (Bild 1). Der Vokabel-Index dient dazu, Wörter, die in alphabetischer Reihenfolge eingegeben wurden, nach Lektionen zu gliedern (zum Beispiel 27/05 bedeutet Lektion 27, Vers 5). Nach Drücken der RETURN-Taste wird nun, sofern man »Nomen« gewählt hat, der Reihenfolge nach das lateinische Wort, der Genitiv, der Genus und die drei Bedeutungen eingegeben. Hat man in der oberen Zeile einen Fehler gemacht und irrtümlicherweise »RETURN« gedrückt, kommt man mit SHIFT-RETURN wieder zurück. Die Eingabe ist erst mit der Taste f1 beendet, das Programm kehrt dann in das »Editier«-Menü zurück.
Hier noch einmal die Tastaturbelegung:
RETURN | nächste Eingabezeile |
SHIFT-RETURN | wieder in die letzte Eingabezeile zurück |
HOME | löscht aktuelle Eingabezeile |
f1 | Eingabe beendet |
f3 | löscht alle Eingabezeilen |
(2) Verbessern
Um eine Vokabel zu verbessern, wählt man deren Nummer mit den Funktionstasten an.
Zuerst muß wie bei der Eingabe die Wortart gewählt werden, dann werden die alten Zeilen angezeigt, die mit den aus der Eingabe bekannten Tasten verbessert werden können.
(3) Löschen
Wie auch beim Verbessern, sollte man vorher mit den Funktionstasten die zu löschende Vokabel-Nummer anwählen. Dann drückt man die Taste »3«.
(4) Einfügen
Bevor man diese Taste drückt, sollte man die einzufügende Vokabel-Nummer anwählen. Dies unterstützt die alphabetische Eingabe (falls man mal ein Wort übersehen hat, kann man diese Routine verwenden).

a) Informationsfeld | b) Arbeitsgang |
c) Wortart | d) Nummer der Vokabel |
e) Hauptindex | f) Vokabel-Index |
g) Bestimmungsstücke | h) Eingabeteil |
»BLÄTTERN«
Mit den Funktionstasten kann man im Speicher herumblättern. Es ist die Eingabe von 100 Vokabeln vorgesehen (von 0 bis 99), die gerade angewählte Nummer wird im Kasten »d« (siehe Bild 1 und 2) angezeigt.
»INDEX«
Der Index dient dazu, eine formatierte Lektionensammlung auf Diskette zu erstellen (mit dem Index gibt man die einzelnen Lektionen an). Näheres unter »Speichern«.
Der Index wird in Kasten »e« (Bild 1) angezeigt und läßt sich mit den Tasten »+« und »—« ändern.
(b) Abfragen
Im Informationskasten der Abfrage (siehe Bild 3) sind folgende Möglichkeiten angezeigt.
- (1) Abfragen in der Reihenfolge der Eingabe
- (2) Zufällige Reihenfolge beim Abfragen
- (f8) Informationen
Das »Abfragen in der Reihenfolge« dient eigentlich nur dazu, sich einen ersten Überblick über die Vokabeln zu verschaffen. Wenn man die Vokabeln in der Reihenfolge, in der man sie eingetippt hat, sieht, prägt man sie sich leichter ein. Wer diese Übung erfolgreich besteht, sollte jetzt die »Vokabeln zufällig« üben.
Nachdem alle Vokabeln abgefragt sind (gilt sowohl für »Reihenfolge« als auch für »Zufall«), wird das Ergebnis in absoluten Punkten und in Prozentzahlen angegeben (nach richtigen und falschen Antworten getrennt). Ich habe auf eine grafische Auswertung verzichtet, teils aus Speicherplatzmangel, teils weil ich meine, daß dies nur Spielerei ist. Jetzt hat man die Wahl, ob man alle Vokabeln nochmals wiederholen will, oder nur die nicht gewußten. Möchte man alle Wörter noch einmal durchgehen, so kann man sich wieder zwischen zufälliger oder alphabetischer Reihenfolge entscheiden.
Noch ein Wort zur Punktezählung beim Abfragen:
Für jede richtige Zeile erhält man einen Punkt. Hat man alle Zeilen richtig eingegeben, so gilt das Wort insgesamt als »richtig«. Ist auch nur eine falsch, so gilt es als »falsch«. Man kann übrigens die Bedeutungen in einer beliebigen Reihenfolge eingeben, sind alle richtig aber am falschen Platz, so zählen sie trotzdem als »richtig«.
Da es mir um ein reines Lernprogramm ging, habe ich auf alle überflüssigen und unnötigen Extras wie zum Beispiel einen brüllenden Löwen, hinaufkletternde Männchen und Abfragen nach Zeit verzichtet.


a) Informationskasten | b) Arbeitsgang |
c) Wortart | d) Nummer der Vokabel |
e) Bestimmungsstücke | f) Eingabeteil |
g) Punkte »richtig« | h) Punkte »falsch« |
(c) Diskette
Dieser Programmteil unterscheidet zwischen folgenden Arbeitsgängen:
- (1) Laden
- (2) Speichern
- (3) Laden nächster Index
- und (←) zum Hauptmenü
Beim Laden und Speichern, das übrigens sequentiell vorgenommen wird, muß man zuerst den Filenamen eingeben und danach den Index einstellen. Wer dies schon bei der Eingabe getan hat, kann getrost »RETURN« drücken.
Der Filename setzt sich zusammen aus dem eingegebenen Namen, einem Punkt (».«) und dem Index. Das heißt, hat man einen Namen »Lektion« und den Index »27« gewählt, so heißt der Filename »Lektion.27«.
Einer Erklärung bedarf auch Punkt (3): Hierbei wird der Index um eins erhöht und dann das entsprechende Programm geladen. Ist kein Filename aus früheren Eingaben da, so bringt der Computer eine Fehlermeldung. Man sollte dann mit Punkt (1) weitermachen.
(d) Drucken
Nach dem Drücken der Taste (1) wird die Vokabelliste ausgedruckt, ein Abbruch ist mit »SHIFT LOCK« möglich.
DRUCKFORM
- 00 02/05 dominus; domini; m
- (Nom.) Herr; Hausherr
Dabei bedeutet:
00 — Nummer | domini; m — Bestimmungsstücke |
02/05 — Index | (Nom.) — Wortart |
dominus — Wort | Herr; Hausherr — Bedeutungen |
(e) Ende
Da das Programm und somit auch die Variablen (Tabelle 1 und 2) nicht gelöscht werden, ist eine Rückkehr ins Programm mit GOTO 830 möglich. Will man alle Vokabeln löschen, so sollte man diese Taste drücken und das Programm mit RUN starten.
Hinweise zum Abtippen
Die Druck-Routine ist für den MPS-801 geschrieben. Um sie an andere Drucker anzupassen, hier die Erklärungen:
4880 OPEN 1,4,7 | schaltet Kleinschrift ein |
4890 PRINT#1,CHR$(14); | Breitschrift |
FL$ | Drucktitel |
CHR$(15) | Normalschrift |
T...$ | Bildschirmmaske |
WT$ (x,y) | Wortart mit Gliederung |
MN$ (x) | Arbeitsgang |
WO$ (x,y) | Vokabel (für y=0: Index der Vokabel) |
WO (x) | Wortart der Vokabel (1 = Nomen 2 = Adjektiv 3 = Adverb 4 = Verb 5 = Deponens 6 = Semideponens) |
DD$ | Hilfsvariable zur Cursorpositionierung |
FF$ (x) | Hilfsvariable Funktionstastendarstellung |
LL$ | Informationsfeld löschen |
SP$ (x) | Wortart für Ausdruck |
SP$ | Trennzeile für Ausdruck |
NR | Nummer der aktuellen Vokabel |
NR$ | String von NR |
IN$ | Index |
Q1 | Nächste Vokabel |
ER,ES,ET,Q2 | Hilfsvariablen mit unterschiedlichen Bedeutungen |
I1,I2 | Hilfsvariablen zur Index-Bearbeitung |
ZF | Zufälligkeit bei der Abfrage (1 = Reihenfolge, 2 = zufällig) |
R1 | Gewußte Vokabelteile gesamt |
R1$ | String von R1 |
F1 | Nicht gewußte Vokabelteile gesamt |
F1$ | String von F1 |
RQ | Gewußte Vokabelteile in der Vokabel |
F0 | Nicht gewußte Vokabelteile in der Vokabel |
RF | Summe von R0 und F0 |
MX,R2 | Hilfsvariablen beim Abfragen |
M(x) | Bedeutungen (0 = nicht gewußt 1 = gewußt) |
UW$ | Nicht gewußte Vokabeln |
RD% | Position in ZF$ |
ZF$ | ASCII-Werte der noch nicht abgefragten Vokabeln |
FL$ | Filename/Drucktitel |
DS$ | Diskerror |
WX,LW | Hilfsvariablen zur Umformung von Zahlen in Strings |
WX$ | String der Zahl WX |
PS | (56187) Farbspeicheradresse zur Wahl der Wortart |
PA,AW | Hilfsvariablen zur Wahl der Wortart |
ZZ | Gerade bearbeitete Eingabezeile |
ZZ$ (x) | Eingabezeilen |
ZZ (x) | Länge von ZZ$ (x) |
BA | (53265) Adresse zum Ein- beziehungsweise Ausschalten des Bildschirms |
SI | (54272) Basisadresse des Soundchips |
TT | Übergabeparameter an Sound-Routinen |
I,J,K | Laufvariablen |
A$,AA$ | Hilfsvariablen |
260 | Variablenbelegung | |
830 | Hauptmenü | |
1040 | Editieren | |
1320 | Eingabe | |
1550 | Verbessern | |
1640 | Löschen | |
1780 | Einfügen | |
1870 | Blättern vor | |
1970 | Blättern 10 vor | |
2020 | Blättern zurück | |
2070 | Blättern 10 zurück | |
2070 | Index ändern | |
2160 | Informationen | |
2400 | Fehlermeldung: Überlauf | |
2490 | Abfragen | |
3280 | Ergebnis | |
3450 | Fehlermeldung: Keine Vokabeln im Speicher | |
3530 | Informationen | |
3760 | Diskette | |
3960 | Laden | |
4200 | Speichern | |
4440 | Laden nächster Index | |
4550 | Diskerror | |
4670 | ||
5360 | Unterprogramme | |
5400 | Umrechnung Zahl in String der Länge 3 | |
5440 | Umrechnung Zahl in String der Länge 2 | |
5480 | Wahl der Wortart | |
5590 | Eingabe der Vokabel | |
5920 | Eingabe Filename | |
6070 | Laden/Speichern Eingabe Kontrolle | |
6180 | Info-Masken aufbauen | |
6240 | Sound |
10 dimmn$(12),wo$(99,6),wo(99),wt$(10,10) 100 rem ************************ 110 rem * * 120 rem * - cursus latinus - * 130 rem * * 140 rem * (c) maerz 1985 * 150 rem * * 160 rem * bernd kraus * 170 rem * am waldschwimmbad 2 * 180 rem * 6909 walldorf/bd. * 190 rem * tel.: 06227/2982 * 200 rem * * 210 rem * fuer c=64 + c=1541 * 220 rem * evtl. mps 801 * 230 rem * * 240 rem ************************ 250 : 260 rem ** 270 rem ** variablen 280 rem ** 290 : 300 print"{clr}{wht}{swlc}{dish}";:poke53280,6:poke53281,6 310 t1$="{CBM-A}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{CBM-S}" 320 t2$="{CBM-Z}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}" 330 t3$="{SHIFT--}{CBM-A}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{CBM-S}{SHIFT--}" 340 t4$="{SHIFT--}{CBM-Z}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{CBM-X}{SHIFT--}" 350 t5$="{SHIFT--}{SHIFT--} {SHIFT--}{SHIFT--}" 360 t6$="{SHIFT--}{CBM-A}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{CBM-S}{CBM-A}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{CBM-S}{CBM-A}{SHIFT-*}{SHIFT-*}{CBM-S}{CBM-A}{SHIFT-*}{SHIFT-*}{CBM-R}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{CBM-S}{SHIFT--}" 370 t7$="{SHIFT--}{SHIFT--}{$a0}{$a0}{$a0}{$a0}{$a0}{$a0}{$a0}{$a0}{$a0}{$a0}{$a0}{SHIFT--}{SHIFT--}{$a0}{$a0}{$a0}{$a0}{$a0}{$a0}{$a0}{$a0}{SHIFT--}{SHIFT--}{$a0}{$a0}{SHIFT--}{SHIFT--}{$a0}{$a0}{SHIFT--}{$a0}{$a0}{$a0}{$a0}{$a0}{$a0}{SHIFT--}{SHIFT--}" 380 t8$="{SHIFT--}{CBM-Z}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{CBM-X}{CBM-Z}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{CBM-X}{CBM-Z}{SHIFT-*}{SHIFT-*}{CBM-X}{CBM-Z}{SHIFT-*}{SHIFT-*}{CBM-E}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{CBM-X}{SHIFT--}" 390 t9$="{SHIFT--}{CBM-A}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{CBM-S}{CBM-A}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{CBM-S}{SHIFT--}" 400 ta$="{SHIFT--}{SHIFT--}{$a0}{$a0}{$a0}{$a0}{$a0}{$a0}{$a0}{$a0}{$a0}{$a0}{$a0}{SHIFT--}{SHIFT--}{$a0}{$a0}{$a0}{$a0}{$a0}{$a0}{$a0}{$a0}{$a0}{$a0}{$a0}{$a0}{$a0}{$a0}{$a0}{$a0}{$a0}{$a0}{$a0}{$a0}{$a0}{$a0}{$a0}{SHIFT--}{SHIFT--}" 410 tb$="{SHIFT--}{CBM-Z}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{CBM-X}{CBM-Z}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{CBM-X}{SHIFT--}" 420 tc$="{SHIFT--}{CBM-A}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{CBM-R}{SHIFT-*}{SHIFT-*}{SHIFT-*}{CBM-S}{CBM-A}{SHIFT-*}{SHIFT-*}{SHIFT-*}{CBM-R}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{CBM-S}{SHIFT--}" 430 td$="{SHIFT--}{SHIFT--} {gry3}richtig{wht} {SHIFT--} {SHIFT--}{SHIFT--} {SHIFT--} {gry3}falsch{wht} {SHIFT--}{SHIFT--}" 440 te$="{SHIFT--}{CBM-Z}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{CBM-E}{SHIFT-*}{SHIFT-*}{SHIFT-*}{CBM-X}{CBM-Z}{SHIFT-*}{SHIFT-*}{SHIFT-*}{CBM-E}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{CBM-X}{SHIFT--}" 450 tf$="{SHIFT--}{CBM-A}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{CBM-S}{CBM-A}{SHIFT-*}{SHIFT-*}{SHIFT-*}{CBM-R}{SHIFT-*}{SHIFT-*}{SHIFT-*}{CBM-R}{SHIFT-*}{SHIFT-*}{SHIFT-*}{CBM-R}{SHIFT-*}{SHIFT-*}{SHIFT-*}{CBM-R}{SHIFT-*}{SHIFT-*}{SHIFT-*}{CBM-R}{SHIFT-*}{SHIFT-*}{SHIFT-*}{CBM-S}{SHIFT--}" 460 tg$="{SHIFT--}{SHIFT--}{gry3}Wortart {wht}{SHIFT--}{SHIFT--}{lblu}Nom{wht}{SHIFT--}{lblu}Adj{wht}{SHIFT--}{lblu}Adv{wht}{SHIFT--}{lblu}Ver{wht}{SHIFT--}{lblu}Dep{wht}{SHIFT--}{lblu}Sem{wht}{SHIFT--}{SHIFT--}" 470 th$="{SHIFT--}{CBM-Z}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{CBM-X}{CBM-Z}{SHIFT-*}{SHIFT-*}{SHIFT-*}{CBM-E}{SHIFT-*}{SHIFT-*}{SHIFT-*}{CBM-E}{SHIFT-*}{SHIFT-*}{SHIFT-*}{CBM-E}{SHIFT-*}{SHIFT-*}{SHIFT-*}{CBM-E}{SHIFT-*}{SHIFT-*}{SHIFT-*}{CBM-E}{SHIFT-*}{SHIFT-*}{SHIFT-*}{CBM-X}{SHIFT--}" 480 tj$="{SHIFT--}{CBM-A}{SHIFT-*}{SHIFT-*}{CBM-S}{CBM-A}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{CBM-S}{SHIFT--}" 490 tk$="{SHIFT--}{SHIFT--}{$a0}{$a0}{SHIFT--}{SHIFT--}{$a0}{$a0}{$a0}{$a0}{$a0}{$a0}{$a0}{$a0}{$a0}{$a0}{$a0}{$a0}{$a0}{$a0}{$a0}{$a0}{$a0}{$a0}{$a0}{$a0}{$a0}{$a0}{$a0}{$a0}{$a0}{$a0}{$a0}{$a0}{$a0}{$a0}{$a0}{$a0}{SHIFT--}{SHIFT--}" 500 tl$="{SHIFT--}{CBM-Z}{SHIFT-*}{SHIFT-*}{CBM-X}{CBM-Z}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{CBM-X}{SHIFT--}" 510 tm$="{SHIFT--} {SHIFT--}" 520 tn$="{SHIFT--}{CBM-Q}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{CBM-W}{CBM-Q}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{CBM-W}{SHIFT--}" 530 tu$="{SHIFT--}{CBM-A}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{CBM-S} {CBM-A}{SHIFT-*}{SHIFT-*}{SHIFT-*}{CBM-S}{CBM-A}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{CBM-S}{SHIFT--}" 540 tp$="{SHIFT--}{SHIFT--}{$a0}{$a0}{gry3}richtig{wht}{$a0}{$a0}{SHIFT--}{$a0}{$a0}{$a0}{$a0}{$a0}{$a0}{$a0}{$a0}{$a0}{$a0}{$a0}{$a0}{$a0}{SHIFT--}{$a0}{$a0}{$a0}{SHIFT--}{SHIFT--}{$a0}{$a0}{$a0}{$a0}{$a0}{SHIFT--}{SHIFT--}" 550 tq$="{SHIFT--}{SHIFT--} {gry3}falsch{wht} {SHIFT--}{$a0}{$a0}{$a0}{$a0}{$a0}{$a0}{$a0}{$a0}{$a0}{$a0}{$a0}{$a0}{$a0}{SHIFT--}{$a0}{$a0}{$a0}{SHIFT--}{SHIFT--}{$a0}{$a0}{$a0}{$a0}{$a0}{SHIFT--}{SHIFT--}" 560 tr$="{SHIFT--}{CBM-Z}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{CBM-X}{$a0}{$a0}{$a0}{$a0}{$a0}{$a0}{$a0}{$a0}{$a0}{$a0}{$a0}{$a0}{$a0}{CBM-Z}{SHIFT-*}{SHIFT-*}{SHIFT-*}{CBM-X}{CBM-Z}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{CBM-X}{SHIFT--}" 570 tt$="{SHIFT--}{SHIFT--}{gry3}Abfragen Ergebnis{wht}{SHIFT--}{SHIFT--}" 580 wt$(1,0)="Nomen":wt$(1,1)="Wort":wt$(1,2)="Genetiv":wt$(1,3)="Genus" 590 wt$(1,4)="Bedeutung 1":wt$(1,5)="Bedeutung 2":wt$(1,6)="Bedeutung 3" 600 wt$(2,0)="Adjektiv":wt$(2,1)="Wort":wt$(2,2)="Feminin":wt$(2,3)="Neutrum" 610 wt$(3,0)="Adverb":wt$(3,1)="Wort" 620 wt$(4,0)="Verb":wt$(4,1)="Wort":wt$(4,2)="Stammform 1" 630 wt$(4,3)="Stammform 2":wt$(4,4)="Stammform 3":wt$(4,5)=wt$(1,4) 640 wt$(4,6)=wt$(1,5):wt$(5,0)="Deponens":wt$(5,1)="Wort":wt$(5,2)=wt$(4,2) 650 wt$(5,3)=wt$(4,3):wt$(6,0)="Semidep.":fori=1to3:wt$(6,i)=wt$(5,i):next 660 fori=2to6:ifi=4then680 670 wt$(i,4)=wt$(1,4):wt$(i,5)=wt$(1,5):wt$(i,6)=wt$(1,6) 680 next 700 mn$(1)="HAUPTMENUE":mn$(2)="Editieren":mn$(3)="Abfragen":mn$(4)="Diskette" 710 mn$(5)="Drucken":mn$(6)="Ende":mn$(7)="Eingabe":mn$(8)="Verbessern" 720 mn$(9)="Loeschen":mn$(10)="Einfuegen":mn$(11)="Laden":mn$(12)="Speichern" 730 dd$="{home}{down}{down}{down}{down}{down}{down}{down}{down}{down}{down}{down}{down}{down}{down}{down}{down}{down}{down}{down}{down}{down}{down}{down}{down}" 740 ff$(0)=" ":ff$(1)="{lblu}f1{gry3}":ff$(2)="{lblu}f3{gry3}":ff$(3)="{lblu}f5{gry3}":ff$(4)="{lblu}f7{gry3}" 750 ff$(5)="{lblu}f8{gry3}":nr=0:nr$="00":in$="00" 760 ll$="{home}{down}{down}{rght}{rght}":fori=1to36:ll$=ll$+" ":next:ll$=ll$+"{rght}{rght}{rght}{rght}":fori=1to36 770 ll$=ll$+" ":next:ba=53265:si=54272:pokesi+24,15 780 wa$(1)="(Nom.)":wa$(2)="(Adj.)":wa$(3)="(Adv.)":wa$(4)="(Verb)" 790 wa$(5)="(Dep.)":wa$(6)="(Sem.)" 800 fori=1to80:sp$=sp$+"{SHIFT-*}":next 810 : 820 : 830 rem ** 840 rem ** hauptmenue 850 rem ** 860 : 870 pokeba,11 880 print"{wht}{clr}";t1$t3$t5$t5$t4$t3$t5$t4$;:fori=1to5:printtj$tk$tl$;:next 890 printtm$t2$;:poke2023,125 900 print"{gry3}";:fori=1to6 910 printleft$(dd$,4+i*3); 920 printspc(2);ff$(i-1);spc(34-len(mn$(i)));mn$(i);:next 930 print"{home}{down}{down}{rght}{rght}{wht} CURSUS{$a0}LATINUS" 940 print"{up}{rght}{rght}{gry3} von Bernd Kraus (C) 1985":pokeba,27 950 geta$:ifa$=""then950 960 ifa$="{f1}"then1040 970 ifa$="{f3}"then2490 980 ifa$="{f5}"then3760 990 ifa$="{f7}"then4670 1000 ifa$="{f8}"thenprint"{clr}";:end 1010 goto940 1020 : 1030 : 1040 rem ** 1050 rem ** editieren 1060 rem ** 1070 : 1080 pokeba,11 1090 print"{wht}{clr}";t1$t3$t5$t5$t4$t6$t7$t8$t9$;:fori=1to5:printta$tn$;:next 1100 printta$tb$tf$tg$th$t2$;:poke2023,125:wx=nr:gosub5440:nr$=wx$:print"{gry3}"; 1110 printleft$(dd$,7)"{rght}{rght}"mn$(2)" "tab(25)nr$tab(29)in$tab(32)wo$(nr,0) 1120 printleft$(dd$,7)spc(15)wt$(wo(nr),0):fori=1to6 1130 printleft$(dd$,8+2*i)"{rght}{rght}"wt$(wo(nr),i):printleft$(dd$,8+2*i)spc(16); 1140 printwo$(nr,i):next 1150 print"{home}{down}{down}{rght}{rght}{lblu}{rvon} 1 {rvof}{gry3} Eingabe {lblu}{rvon} 2 {rvof}{gry3} Verbessern {rvon}{lblu} f8 {rvof}{gry3}" 1160 print"{home}{down}{down}{down}{rght}{rght}{rvon}{lblu} 3 {rvof}{gry3} Loeschen {lblu}{rvon} 4 {gry3}{rvof} Einfuegen Info" 1170 pokeba,27 1180 geta$:ifa$=""then1180 1190 ifa$="1"then1320 1200 ifa$="2"then1550 1210 ifa$="3"then1640 1220 ifa$="4"then1780 1230 ifa$="{f1}"then1920 1240 ifa$="{f3}"then2020 1250 ifa$="{f5}"then1870 1260 ifa$="{f7}"then1970 1270 ifa$="+"ora$="-"then2070 1280 ifa$="{f8}"then2160 1290 ifa$="_"then830 1300 goto1180 1310 : 1320 rem ** eingabe 1330 ifq1>99then2400 1340 goto1510 1350 printll$"{home}{down}{down}{rght}{rght}Wortart mit {rvon}{lblu} < {rvof}{gry3} und {rvon}{lblu} > {rvof}{gry3} waehlen" 1360 print"{home}{down}{down}{down}{rght}{rght}{rvon}{lblu} Return {rvof}{gry3}: Ende der Eingabe" 1370 ifet=1thenprintleft$(dd$,7)"{rght}{rght}"mn$(8):goto1590 1380 ifet=2thenprintleft$(dd$,7)"{rght}{rght}"mn$(10)" ":goto1400 1390 printleft$(dd$,7)"{rght}{rght}"mn$(7)" " 1400 gosub5480 1410 printleft$(dd$,7)spc(15)wt$(aw,0) 1420 fori=1to6:printleft$(dd$,8+2*i)"{rght}{rght}"wt$(aw,i):next:wo(q1)=aw 1430 printll$"{home}{down}{down}{rght}{rght}Wort eingeben" 1440 gosub5590 1450 remifet=1thenreturn 1460 ifet=0thenq1=q1+1 1470 fori=1to6:zz$(i)="":zz(i)=0:next 1480 ifet<>0thenreturn 1490 nr=q1-1:goto1040 1500 : 1510 print"{wht}"left$(dd$,7)t7$;:fori=1to6:printleft$(dd$,8+2*i)ta$;:next 1520 printleft$(dd$,7)spc(25);:wx=q1:gosub5440:print"{gry3}"wx$;"{wht}{rght}{rght}{gry3}"in$ 1530 goto1350 1540 : 1550 rem ** verbessern 1560 ifq1=0then1180 1570 et=1:q2=q1:q1=nr:gosub1320 1580 q1=q2:nr=q1-1:et=0:goto1040 1590 zz$(0)=wo$(q1,0):zz(0)=len(zz$(0)):printleft$(dd$,7)spc(32)zz$(0); 1600 fori=1to6:zz$(i)=wo$(q1,i):zz(i)=len(zz$(i)):printleft$(dd$,8+2*i); 1610 printspc(16)zz$(i);:next 1620 goto1400 1630 : 1640 rem ** loeschen 1650 ifq1=0then1180 1660 printleft$(dd$,7)"{rght}{rght}"mn$(9)" " 1670 printll$"{home}{down}{down}{rght}{rght}Datensatz wird geloescht." 1680 ifnr=q1-1then1740 1690 fori=nrtoq1-2:forj=0to6 1700 wo$(i,j)=wo$(i+1,j):next:wo(i+1)=wo(i):next 1710 q1=q1-1:ifq1=-1thenq1=0 1720 nr=nr-1:ifnr=-1thennr=0 1730 goto1040 1740 fori=0to6:wo$(nr,i)="":next:wo(nr)=0 1750 q1=q1-1:nr=nr-1:ifnr=-1thennr=0 1760 goto1040 1770 : 1780 rem ** einfuegen 1790 ifq1>99then2400 1800 ifq1=0then1180 1810 printleft$(dd$,7)"{rght}{rght}"mn$(10)" " 1820 fori=q1tonr+1step-1:forj=0to6 1830 wo$(i,j)=wo$(i-1,j):next:wo(i)=wo(i-1):next 1840 q2=q1:q1=nr:et=2:gosub1320:et=0:nr=q1:q1=q2:q1=q1+1 1850 goto1040 1860 : 1870 rem ** blaettern vor 1880 ifq1=0then1040 1890 nr=nr+1:ifnr>q1-1ornr>99thennr=0:goto1040 1900 goto1040 1910 : 1920 rem ** blaettern 10 vor 1930 ifq1<10then1040 1940 nr=nr+10:ifnr>q1-1ornr>99thennr=0:goto1040 1950 goto1040 1960 : 1970 rem ** blaettern zurueck 1980 ifq1=0then1040 1990 nr=nr-1:ifnr<0thennr=q1-1:goto1040 2000 goto1040 2010 : 2020 rem ** blaettern 10 zurueck 2030 ifq1<10then1040 2040 nr=nr-10:ifnr<0thennr=q1-1:goto1040 2050 goto1040 2060 : 2070 rem ** gesammtindex 2080 i1=val(left$(in$,1)):i2=val(right$(in$,1)) 2090 ifa$="+"theni1=i1+1:ifi1>9theni1=0 2100 ifa$="-"theni2=i2+1:ifi2>9theni2=0 2110 wx=i1*10+i2:gosub5440:in$=wx$ 2120 printleft$(dd$,7)spc(29)in$ 2130 ifes=1thengoto6130 2140 goto1180 2150 : 2160 rem ** info ** 2170 gosub6180 2180 print"{home}{down}{down}{rght}{rght}{gry3}* Informationen zum Programmteil *" 2190 print"{up}{rght}{rght}{wht} EDITIEREN{gry3}" 2200 printleft$(dd$,7)"{rght}{rght} {lblu} _ {gry3} Hauptmenue" 2210 printleft$(dd$,8)"{rght}{rght}{lblu} f1 {gry3} Blaettern 1O Einheiten vor" 2220 printleft$(dd$,9)"{rght}{rght}{lblu} f3 {gry3} Blaettern 1O Einheiten zurueck" 2230 printleft$(dd$,10)"{rght}{rght}{lblu} f5 {gry3} Blaettern 1 Einheit vor" 2240 printleft$(dd$,11)"{rght}{rght}{lblu} f7 {gry3} Blaettern 1 Einheit zurueck" 2250 printleft$(dd$,12)"{rght}{rght} {lblu} + {gry3} Hauptindex um 1O erhoehen" 2260 printleft$(dd$,13)"{rght}{rght} {lblu} - {gry3} Hauptindex um 1 erhoehen" 2270 printleft$(dd$,14)"{rght}{rght} {wht}{SHIFT--}{gry3}Beim Loeschen/Einfuegen wird die{wht}{SHIFT--}{gry3}" 2280 printleft$(dd$,15)"{rght}{rght} {wht}{SHIFT--}{gry3}angewaehlte Nummer gel./eingef.{$a0}{wht}{SHIFT--}{gry3}" 2290 printleft$(dd$,17)"{rght}{rght}{wht}Eingabe/Verbessern:{gry3}" 2300 printleft$(dd$,18)"{rght}{rght}{lblu} f1 {gry3} Eingabe beendet" 2310 printleft$(dd$,19)"{rght}{rght}{lblu} f3 {gry3} Alle Zeilen loeschen" 2320 printleft$(dd$,20)"{rght}{rght}{lblu} Home {gry3} Zeile loeschen" 2330 printleft$(dd$,21)"{rght}{rght}{lblu} Ret {gry3} Zeile weiter" 2340 printleft$(dd$,22)"{rght}{rght}{lblu} Sf-Ret {gry3} Zeile hoch" 2350 printleft$(dd$,23)"{rght}{rght} <Taste druecken>" 2360 pokeba,27 2370 geta$:ifa$=""then2370 2380 goto1040 2390 : 2400 rem ** ueberlauf 2410 printll$"{home}{down}{down}{rght}{rght}Zu viele Daten im Speicher!" 2420 print"{up}{rght}{rght} < Taste druecken >" 2430 tt=12:gosub6250 2440 geta$:ifa$=""then2440 2450 pokesi+4,0 2460 goto1040 2470 : 2480 : 2490 rem ** 2500 rem ** abfragen 2510 rem ** 2520 : 2530 pokeba,11:zf=0:r0=0:f0=0:r1=0:f1=0 2540 print"{wht}{clr}";t1$t3$t5$t5$t4$t6$t7$t8$t9$;:fori=i=1to4:printta$tn$;:next 2550 printta$tb$tc$td$te$t2$;:poke2023,125 2560 printleft$(dd$,7)"{gry3}{rght}{rght}"mn$(3)" " 2570 pokeba,27 2580 ifq1=0then3450 2590 ifer<>1thenuw$="" 2600 ifer=1thener=0:zf=2:zf$=uw$:uw$="":goto2700 2610 print"{home}{down}{down}{rght}{rght}{rvon}{lblu} 1 {rvof}{gry3} Abfragen in der Reihenfolge {rvon}{lblu} f8 " 2620 print"{up}{rght}{rght}{rvon} 2 {rvof}{gry3} Zufaellige Reihenfolge Info" 2630 geta$:ifa$=""then2630 2640 ifa$="1"thenzf=1:goto2690 2650 ifa$="2"thenzf=2:goto2690 2660 ifa$="_"then830 2670 ifa$="{f8}"then3540 2680 goto2630 2690 zf$="":fori=0toq1-1:zf$=zf$+chr$(i+32):next 2700 forhs=0tolen(zf$)-1:printll$:rf=0:r0=0:f0=0 2710 ifzf=1thennr=hs:goto2760 2720 rd%=rnd(1)*(len(zf$)-1)+1 2730 nr=asc(mid$(zf$,rd%))-32 2740 ifrd%=1thenzf$=right$(zf$,len(zf$)-rd%):goto2760 2750 zf$=left$(zf$,rd%-1)+right$(zf$,len(zf$)-rd%) 2760 printleft$(dd$,7)spc(15)" ":wx=nr:gosub5440:nr$=wx$ 2770 printleft$(dd$,7)spc(15)wt$(wo(nr),0):printleft$(dd$,7)spc(25)nr$ 2780 forj=1to6:aa$=left$(dd$,8+2*j):printaa$"{rght}{rght} " 2790 printaa$"{rght}{rght}"wt$(wo(nr),j); 2800 printaa$spc(15)" " 2810 next 2820 printleft$(dd$,10)spc(16)"{wht}"wo$(nr,1)"{gry3}" 2830 printleft$(dd$,23)"{rght}{rght} richtig "tab(25)" falsch " 2840 es=2:gosub5590:es=0 2850 ifwo(nr)=3then2930 2860 er=0:ifwo(nr)=2thener=1 2870 forj=2to3+er 2880 ifwo$(nr,j)=""then2920 2890 ifzz$(j)=wo$(nr,j)thenr0=r0+1:goto2910 2900 f0=f0+1 2910 rf=rf+1 2920 next 2930 ifer=1then3200 2940 mx=3:forj=4to6 2950 m(j)=0:w$=wo$(nr,j):ifw$=""thenmx=mx-1:goto2980 2960 ifw$=zz$(4)orw$=zz$(5)orw$=zz$(6)thenm(j)=1 2970 rf=rf+1 2980 next 2990 r2=m(4)+m(5)+m(6):f0=f0+mx-r2:r0=r0+r2 3000 ifrf<>r0thenuw$=uw$+chr$(nr+32) 3010 ifr0=0thenprintll$"{home}{down}{down}{rght}{rght}Wort nicht gewusst.":goto3050 3020 ifrf<>r0thenprintll$"{home}{down}{down}{rght}{rght}Wort unvollstaendig gewusst.":goto3050 3030 printll$"{home}{down}{down}{rght}{rght}Wort gewusst.":printleft$(dd$,23)"{rght}{rght}{rvon} richtig {rvof}"; 3040 tt=35:gosub6250:r1=r1+r0:goto3120 3050 printleft$(dd$,23)tab(25)"{rvon} falsch {rvof}";:gosub6270 3060 fork=1to300:next 3070 printll$"{home}{down}{down}{rght}{rght}Richtig lautet es:" 3080 forj=2to6:printleft$(dd$,8+2*j)spc(15)" " 3090 printleft$(dd$,8+2*j)spc(16)wo$(nr,j) 3100 next 3110 r1=r1+r0:f1=f1+f0 3120 wx=r1:gosub5400:r1$=wx$:wx=f1:gosub5400:f1$=wx$ 3130 printleft$(dd$,23)tab(16)"{wht}"r1$tab(21)f1$"{gry3}" 3140 print"{home}{down}{down}{down}{rght}{rght} < Taste druecken >" 3150 geta$:ifa$=""then3150 3160 pokesi+4,0 3170 ifa$="_"thenfori=0to6:zz$(i)="":zz(i)=0:next:goto830 3180 forj=2to6:zz$(j)="":zz(j)=0:next 3190 next:goto3280 3200 mx=2:forj=5to6 3210 m(j)=0::w$=wo$(nr,j):ifw$=""thenmx=mx-1:goto3240 3220 ifw$=zz$(5)orw$=zz$(6)thenm(j)=1 3230 rf=rf+1 3240 next 3250 r2=m(5)+m(6):f0=f0+mx-r2:r0=r0+r2 3260 goto3000 3270 : 3280 rem ** ergebnis 3290 pokeba,11 3300 print"{wht}{clr}"t1$t3$t5$t5$t4$t3$tt$t4$tm$tm$tm$tu$tp$tr$tu$tq$tr$; 3310 printtm$tm$tm$tm$t3$t5$t4$t2$;:poke2023,125 3320 print"{home}{down}{down}{rght}{rght}{lblu}{rvon} 1 {rvof}{gry3} alle nicht gew. Vok. wiederholen" 3330 print"{up}{rght}{rght}{rvon}{lblu} 2 {rvof}{gry3} alle Vok. wiederholen {rvon}{lblu} _ {rvof}{gry3} Menue" 3340 rf=r1+f1:rr=int(r1/rf*100+.5):ff=100-rr 3350 wx=rr:gosub5400:rr$=wx$:wx=ff:gosub5400:ff$=wx$ 3360 printleft$(dd$,13)spc(28)r1$"{rght}{rght}"rr$" %" 3370 printleft$(dd$,16)spc(28)f1$"{rght}{rght}"ff$"{$a0}%" 3380 pokeba,27 3390 geta$:ifa$=""then3390 3400 ifa$="_"then830 3410 ifa$="1"theniff1<>0thener=1:goto2530 3420 ifa$="2"then2530 3430 goto3390 3440 : 3450 rem ** keine vokabeln 3460 printll$"{home}{down}{down}{rght}{rght}Keine Vokabeln im Speicher." 3470 print"{up}{rght}{rght}{rght}< Taste druecken >" 3480 tt=12:gosub6250 3490 geta$:ifa$=""then3490 3500 pokesi+4,0 3510 goto830 3520 : 3530 rem ** info 3540 gosub6180 3550 print"{home}{down}{down}{rght}{rght}{gry3}* Informationen zum Programmteil *" 3560 print"{up}{rght}{rght}{wht} ABFRAGEN{gry3}" 3570 printleft$(dd$,8)"{rght}{rght}{wht}Eingabe{gry3}" 3580 printleft$(dd$,9)"{rght}{rght}{lblu} f1 {gry3} Eingabe beendet" 3590 printleft$(dd$,10)"{rght}{rght}{lblu} f3 {gry3} Alle Zeilen loeschen" 3600 printleft$(dd$,11)"{rght}{rght}{lblu} Home {gry3} Zeile loeschen" 3610 printleft$(dd$,12)"{rght}{rght}{lblu} Ret {gry3} Zeile weiter" 3620 printleft$(dd$,13)"{rght}{rght}{lblu} Sf-Ret {gry3} Zeile hoch" 3630 printleft$(dd$,14)"{rght}{rght}{lblu} _ {gry3} Abfrage beenden" 3640 printleft$(dd$,16)"{rght}{rght}{wht}Auswahl{gry3}" 3650 printleft$(dd$,17)"{rght}{rght}{lblu} 1 {gry3} Fraegt alle Vokabeln der Reihen-" 3660 printleft$(dd$,18)"{rght}{rght} folge nach ab." 3670 printleft$(dd$,19)"{rght}{rght}{lblu} 2 {gry3} Waehlt eine zufaellige Reihen-" 3680 printleft$(dd$,20)"{rght}{rght} folge." 3690 printleft$(dd$,21)"{rght}{rght}{lblu} _ {gry3} Hauptmenue" 3700 printleft$(dd$,23)"{rght}{rght} <Taste druecken>" 3710 pokeba,27 3720 geta$:ifa$=""then3720 3730 goto2490 3740 : 3750 : 3760 rem ** 3770 rem ** diskette 3780 rem ** 3790 : 3800 pokeba,11 3810 print"{wht}{clr}"t1$t3$t5$t5$t4$t6$t7$t8$t9$ta$tb$;:fori=1to10:printtm$;:next 3820 printt3$t5$t4$t2$;:poke2023,125 3830 printleft$(dd$,7)"{rght}{rght}{gry3}"mn$(4)" "tab(29)in$ 3840 printleft$(dd$,10)"{rght}{rght}Filename:{rght}{rght}{rght}{rght}{rght}"fl$ 3850 printleft$(dd$,23)"{rght}{rght}00, ok,00,00" 3860 printll$"{home}{down}{down}{rght}{rght}{rvon}{lblu} 1 {gry3}{rvof} Laden {rvon}{lblu} 2 {gry3}{rvof} Speichern {rvon}{lblu} _ {gry3}{rvof}" 3870 print"{home}{down}{down}{down}{rght}{rght}{rvon}{lblu} 3 {gry3}{rvof} Laden naechster Index Menue" 3880 pokeba,27 3890 geta$:ifa$=""then3890 3900 ifa$="_"then830 3910 ifa$="1"then3960 3920 ifa$="2"then4200 3930 ifa$="3"then4440 3940 goto3890 3950 : 3960 rem ** laden 3970 gosub6070 3980 iffl$=""then3800 3990 open1,8,2,fl$+"."+in$+",s,r" 4000 open2,8,15 4010 input#1,q1 4020 ifst=66then4550 4030 fori=0toq1-1 4040 forj=0to6 4050 input#1,wo$(i,j) 4060 ifwo$(i,j)="{CBM-+}"thenwo$(i,j)="" 4070 ifst=66then4550 4080 next 4090 input#1,wo(i) 4100 ifst=66then4550 4110 next 4120 close2:close1 4130 printll$"{home}{down}{down}{rght}{rght}Daten sind geladen." 4140 tt=45:gosub6250 4150 print"{up}{rght}{rght} < Taste druecken >" 4160 geta$:ifa$=""then4160 4170 pokesi+4,0 4180 goto830 4190 : 4200 rem ** speichern 4210 ifq1=0then3450 4220 gosub6070:iffl$=""then3800 4230 open1,8,2,fl$+"."+in$+",s,w" 4240 open2,8,15 4250 print#1,q1 4260 ifst=66then4550 4270 fori=0toq1-1 4280 forj=0to6 4290 ifwo$(i,j)=""thenprint#1,"{CBM-+}":goto4310 4300 print#1,wo$(i,j) 4310 ifst=66then4550 4320 next 4330 print#1,wo(i) 4340 ifst=66then4550 4350 next 4360 close2:close1 4370 printll$"{home}{down}{down}{rght}{rght}Daten sind abgespeichert." 4380 print"{up}{rght}{rght} < Taste druecken >" 4390 tt=45:gosub6250 4400 geta$:ifa$=""then4400 4410 pokesi+4,0 4420 goto830 4430 : 4440 rem ** laden naechster index 4450 iffl$<>""then4510 4460 printll$"{home}{down}{down}{rght}{rght}Keine Grunddatei vorhanden." 4470 print"{up}{rght}{rght}{rght}< Taste druecken >" 4480 tt=12:gosub6250 4490 geta$:ifa$=""then4490 4500 pokesi+4,0:goto3860 4510 in=val(in$):in=in+1:ifin>99thenin=0 4520 wx=in:gosub5440:in$=wx$ 4530 printleft$(dd$,7)spc(29)in$:goto3990 4540 : 4550 rem ** diskerror 4560 ds$="" 4570 get#2,a$:ds$=ds$+a$:ifst<>64then4570 4580 printleft$(dd$,23)"{rght}{rght}";:fori=1to36:print" ";:next 4590 printleft$(dd$,23)"{rght}{rght}"ds$; 4600 close2:close1 4610 printll$"{home}{down}{down}{rght}{rght}Diskerror" 4620 print"{up}{rght}{rght}{$a0}< Taste druecken >" 4630 geta$:ifa$=""then4630 4640 goto3800 4650 : 4660 : 4670 rem ** 4680 rem ** drucken 4690 rem ** 4700 : 4710 pokeba,11 4720 print"{wht}{clr}"t1$t3$t5$t5$t4$t6$t7$t8$t9$ta$tb$;:fori=1to10:printtm$;:next 4730 printt3$t5$t4$t2$;:poke2023,125 4740 printleft$(dd$,7)"{gry3}{rght}{rght}"mn$(5)" "; 4750 printleft$(dd$,10)"{rght}{rght}Drucktitel:" 4760 print"{home}{down}{down}{rght}{rght}{lblu}{rvon} 1 {rvof}{gry3} Drucken" 4770 print"{up}{rght}{rght}{lblu}{rvon} _ {rvof}{gry3} Menue" 4780 pokeba,27 4790 ifq1=0then3450 4800 geta$:ifa$=""then4800 4810 ifa$="_"then830 4820 ifa$="1"then4840 4830 goto4800 4840 printll$"{home}{down}{down}{rght}{rght}{gry3}Drucktitel eingeben." 4850 es=7:gosub5920:es=0 4860 iffl$=""then830 4870 printll$"{home}{down}{down}{rght}{rght}{gry3}Abbruch mit {lblu}{rvon} Shift Lock {rvof}{gry3}" 4880 open1,4,7 4890 print#1,chr$(14)fl$chr$(15) 4900 print#1,sp$:print#1 4910 i=-1 4920 i=i+1:ifi=q1then5090 4930 wx=i:gosub5440:ii$=wx$ 4940 print#1,ii$;" ";wo$(i,0)+left$(" ",6-len(wo$(i,0)));" "; 4950 print#1,wo$(i,1); 4960 ifwo(i)=4then5110 4970 ifwo(i)=5orwo(i)=6then5180 4980 ifwo$(i,2)<>""thenprint#1,"; "wo$(i,2); 4990 ifwo$(i,3)<>""thenprint#1,"; "wo$(i,3); 5000 print#1 5010 print#1," ";wa$(wo(i));" "; 5020 print#1,wo$(i,4); 5030 ifwo$(i,5)<>""thenprint#1,"; "wo$(i,5); 5040 ifwo$(i,6)<>""thenprint#1,"; "wo$(i,6); 5050 print#1 5060 print#1 5070 ifpeek(653)=0then4920 5080 goto5230 5090 print#1:print#1:close1 5100 goto5280 5110 print#1 5120 print#1," "wa$(4)" "; 5130 print#1,wo$(i,2);"; "wo$(i,3)"; "wo$(i,4); 5140 print#1 5150 print#1,spc(10);wo$(i,5); 5160 ifwo$(i,6)<>""thenprint#1,"; "wo$(i,6); 5170 goto5050 5180 print#1 5190 print#1," ";wa$(wo(i));" "; 5200 print#1,wo$(i,2); 5210 ifwo$(i,3)<>""thenprint#1,"; ";wo$(i,3); 5220 print#1:print#1,spc(10);:goto5020 5230 printll$"{home}{down}{down}{rght}{rght}{gry3}Abbruch":print"{up}{rght}{rght}{rght}< Taste druecken{$a0}>" 5240 tt=12:gosub6250 5250 geta$:ifa$=""then5250 5260 pokesi+4,0 5270 goto4670 5280 printll$"{home}{down}{down}{rght}{rght}Fertig." 5290 print"{up}{rght}{rght}{rght}< Taste druecken >" 5300 tt=45:gosub6250 5310 geta$:ifa$=""then5310 5320 pokesi+4,0 5330 goto4670 5340 : 5350 : 5360 rem ** 5370 rem ** unterprogramme 5380 rem ** 5390 : 5400 rem ** umrechnung zahl-using(3) 5410 wx$=str$(wx):lw=len(wx$):wx$=right$(wx$,lw-1):wx$=left$(" ",4-lw)+wx$ 5420 return 5430 : 5440 rem ** umrechnung zahl-using(2) 5450 wx$=str$(wx):lw=len(wx$):wx$=right$(wx$,lw-1):wx$=left$("0",3-lw)+wx$ 5460 return 5470 : 5480 rem ** wahl der wortart 5490 ps=56187:aw=1 5500 pa=ps+aw*4:pokepa,1:pokepa+1,1:pokepa+2,1 5510 geta$:ifa$=""then5510 5520 ifa$<>","anda$<>"."anda$<>chr$(13)then5510 5530 pokepa,14:pokepa+1,14:pokepa+2,14 5540 ifa$=chr$(13)thenreturn 5550 ifa$=","thenaw=aw-1:ifaw=0thenaw=6 5560 ifa$="."thenaw=aw+1:ifaw=7thenaw=1 5570 goto5500 5580 : 5590 rem ** eingabe: index & woerter 5600 zz=es 5610 ifzz=0thenprintleft$(dd$,7)spc(32)zz$(0);:goto5630 5620 printleft$(dd$,8+2*zz)spc(16)zz$(zz); 5630 print"{CBM-@}"; 5640 geta$:ifa$=""then5640 5650 ifa$=chr$(13)then5760 5660 ifa$=chr$(20)then5840 5670 ifa$=chr$(19)then5800 5680 ifa$=chr$(141)then5780 5690 ifa$=chr$(133)then5890 5700 ifa$=chr$(134)then5860 5710 ifa$<" "ora$>"Z"then5640 5720 ifa$>chr$(122)anda$<chr$(192)then5640 5730 ifzz(zz)=20then5640 5740 ifzz(zz)=5andzz=0then5640 5750 zz$(zz)=zz$(zz)+a$:zz(zz)=zz(zz)+1:print"{left}"a$"{CBM-@}";:goto5640 5760 zz=zz+1:ifzz=7thenzz=0+es 5770 print"{left} ":goto5610 5780 zz=zz-1:ifzz=-1+esthenzz=6 5790 print"{left} ":goto5610 5800 zz$(zz)="":zz(zz)=0 5810 ifzz=0thenprintleft$(dd$,7)spc(32)"{CBM-@} ";:goto5610 5820 printleft$(dd$,8+2*zz)spc(16)"{CBM-@} ";:goto5610 5830 goto5640 5840 ifzz(zz)=0then5610 5850 zz$(zz)=left$(zz$(zz),zz(zz)-1):zz(zz)=zz(zz)-1:print"{left} ":goto5610 5860 ifes=2thenet=1 5870 fori=1+etto6:zz$(i)="":zz(i)=0:printleft$(dd$,8+2*i)spc(16); 5880 print" ":next:zz=0+es:et=0:goto5610 5890 ifes=1thenreturn 5900 fori=0to6:wo$(q1,i)=zz$(i):next:return 5910 : 5920 rem ** eingabe filename 5930 fl$="":printleft$(dd$,10)spc(16)" " 5940 printleft$(dd$,10)spc(16)fl$"{CBM-@}"; 5950 geta$:ifa$=""then5950 5960 ifa$=chr$(19)then5930 5970 ifa$=chr$(20)then6040 5980 ifa$=chr$(13)thenprint"{left} ":return 5990 ifa$=chr$(34)then5950 6000 ifa$<" "ora$>"Z"then5950 6010 ifa$>"_"anda$<"A"then5950 6020 iflen(fl$)=13+esthen5950 6030 fl$=fl$+a$:goto5940 6040 fl=len(fl$):iffl<2then5930 6050 fl$=left$(fl$,fl-1):print"{left}{$a0}";:goto5940 6060 : 6070 rem ** eingabe kontrolle 6080 printll$"{home}{down}{down}{rght}{rght}Filename eingeben." 6090 gosub5920 6100 iffl$=""thenreturn 6110 printll$"{home}{down}{down}{rght}{rght}Index eingeben." 6120 print"{up}{rght}{rght}{rvon}{lblu} + {rvof}{gry3} 10 Einh. vor"tab(60)"{rvon}{lblu} - {rvof}{gry3} 1 Einh. vor" 6130 geta$:ifa$=""then6130 6140 ifa$="+"ora$="-"thenes=1:goto2070:es=0 6150 ifa$=chr$(13)thenprintll$:return 6160 goto6130 6170 : 6180 rem ** info-maske 6190 pokeba,11 6200 print"{wht}{clr}"t1$t3$t5$t5$t4$t3$;:fori=1to17:printt5$;:next:printt4$t2$; 6210 poke2023,125 6220 return 6230 : 6240 rem ** sound 6250 pokesi+24,15:pokesi+5,11:pokesi+6,0:pokesi,0:pokesi+1,tt:pokesi+4,17 6260 return 6270 pokesi+24,15:pokesi+5,28:pokesi+6,0:pokesi,0:pokesi+1,2:pokesi+4,33:return