C 64
Computer und Sport

Computer und Sport

Dieses Programm wurde zur Auswertung von Deutschen Mannschafts-Meisterschaften entwickelt. Denkbar ist aber auch, daß man es bei der Vereinsmeisterschaft im eigenen Ort einsetzt. Notwendig ist dabei nur der Commodore 64 mit Peripherie.

Bild 1. Hauptmenü. Rechts oben in der Ecke erscheint die Uhrzeit. Das Anwählen der einzelnen Unterprogramme erfolgt über Druck auf die entsprechende Zahlentaste

Meine Arbeit mit dem Computer begann im Juli 1982. Ich war in der 12. Klasse und besuchte einen Informatik Grundkurs. Die dort erworbenen, jedoch relativ geringen Grundlagen der Basic-Programmierung führten durch eigene Versuche an Spielen und an einem NGO-Verwaltungsprogramm, im Teamwork, relativ schnell zu einer guten Kenntnis der Basic-Programmiersprache und teilweise auch schon zu Maschinensprachekenntnissen. Diese wurden durch den Kauf eines C 64 im April 1983 ausgebaut und bildeten so die Basis zur Erstellung sinnvoller Programme. Der Einsatz des Computers im Sport lag also nicht fern, zumal mein Vater Leichtathletiksportfeste organisiert. So war er es auch, der mich fragte, ob der Computer bei einem DMM-Wettkampf nicht gute Dienste leisten könnte. Die Programmidee war damit geboren.

Eine Idee, eine Herausforderung und der Commodore 64

Die nähere Problematik soll nun für alle erläutert werden, die mit dem Ablauf von Leichtathletikwettkämpfen weniger vertraut sind. Das Kürzel DMM steht für Deutsche Mannschafts-Meisterschaften. Diese werden in verschiedenen Leistungsklassen und auf unterschiedlichen Ebenen durchgeführt. Bei dem Wettkampf, für den das Programm ursprünglich geschrieben wurde, handelte es sich um den Endkampf um die badische Mannschaftsmeisterschaft für Männer und Frauen in jeweils drei Klassen. Es waren Bezirksliga, Landesliga und Bundesliga vertreten. Diese drei Gruppen unterscheiden sich untereinander durch eine unterschiedliche Anzahl an Disziplinen, wobei die Disziplinen bei den Männern sich von denen bei den Frauen nochmals unterscheiden. (Man denke beispielsweise an die unterschiedlichen Gewichte beim Kugelstoßen etc.)

Ein MByte für das DLV-Punktebuch

Jede der teilnehmenden Mannschaften, deren Anzahl in den einzelnen Gruppen nochmals recht unterschiedlich ausfällt, kann nun pro Disziplin maximal drei Teilnehmer stellen. Die Ergebnisse, die von diesen erzielt werden, werden anhand eines DLV-Punktebuches in die entsprechenden Punktezahlen umgesetzt. Da diese Punkte leider recht wahllos und nicht durch irgendeine Formel bestimmbar sind, ist an eine Auswertung mit dem Computer an dieser Stelle noch nicht zu denken. Das DLV-Punktebuch enthält nämlich zirka 83000 unterschiedliche Leistungen und zugeordnete Punktezahlen. Der Speicheraufwand in Basic läge also schätzungsweise bei einem MByte, was den Speicherbereich des C 64 selbst mit angeschlossenen Floppy-Laufwerken erheblich übersteigt. Also mußte ich mir etwas anderes überlegen: Der Rechenvorgang, der, nachdem die Punkte festgestellt sind, vollzogen werden muß, ist jedoch sehr gut mit einem Computer zu realisieren. Die drei Teilergebnisse einer Mannschaft in einer Disziplin müssen sortiert werden. Die beiden besten Ergebnisse werden nun zum Gesamtergebnis hinzuaddiert. Dies ist wohl ein Vorgang, dessen Einfachheit besticht, der aber gleichzeitig die Frage aufwirft, wozu dann ein Programm benötigt wird. Die Antwort auf diese Frage ist recht einfach. Es geht um die Geschwindigkeit und die Zuverlässigkeit. Hinzu kommt noch die Möglichkeit einer schnellen Gegenkontrolle, da alle Einzelergebnisse gespeichert bleiben und schnell abrufbar sind. Das Wichtigste ist jedoch das schnelle Herstellen von Zwischenergebnissen, wozu im Wettkampfbüro keine Zeit vorhanden ist. Diese Zwischenergebnisse können nun ohne großen Aufwand, nur durch wenige Tastendrücke zu jedem beliebigen Zeitpunkt abgerufen werden.

Im Folgenden soll nun beschrieben werden, wie der Ablauf in der Praxis vor sich ging. Die Wettkampfkarten mit den Ergebnissen kamen ins Wettkampfbüro und dort wurden dann die entsprechenden Punkteergebnisse herausgesucht. Der Zettel mit den Punkteergebnissen kam zum Computer und die Ergebnisse wurden eingegeben. Der Computer wählte die beiden besten Ergebnisse einer Mannschaft aus und addierte sie zum Gesamtergebnis. War eine Disziplin einer Gruppe abgeschlossen, so wurde das Zwischenergebnis mit Uhrzeit ausgedruckt und dem Stadionsprecher weitergeleitet, um diesem immer die aktuellsten Informationen zu sichern. Danach ging eine Kopie der Zwischenergebnisse an das Wettkampfbüro zurück, das dann eine Vergleichsmöglichkeit hatte, wenn es später zu seinem handgerechneten Zwischenergebnis kam. Dies war immer erst wesentlich später der Fall, da die Ergebnisse immer noch in mehrere andere Listen übertragen werden mußten, bevor sie addiert wurden. Die Möglichkeiten einer schnellen Kontrolle aller Einzelergebnisse durch den Computer, ohne einen Berg von Wettkampfkarten durchsuchen zu müssen, erwies sich als äußerst praktisch bei der Fehlersuche. Die Fehler, die auftraten und durch das Zwischenergebnis des Computers aufgedeckt wurden, waren meist Schreib- oder Lesefehler, Übertragungsfehler von einer Liste auf die nächste oder schlichte Rechenfehler, die sich leicht einschleichen, wenn man in der Hektik eines Wettkampfbüros auch noch schnell per Kopf oder Taschenrechner rechnen soll. So war die Fehlerquelle mit Hilfe des Computers schnell entdeckt und der Fehler wurde beseitigt. Ein Schritt zu einer besseren und fehlerfreien Ergebnisliste, die sich sehen lassen kann.

Der Computer hilft Fehler vermeiden

Das Programm selbst entstand in zirka fünfstündiger Arbeit an einem Sonntagnachmittag und wurde, nach seinem Einsatz, den praktischen Erfahrungen gemäß, die damit gemacht wurden, erweitert und verbessert, es gibt schließlich viele Dinge, auf die man rein theoretisch niemals kommt, die in der Praxis aber wünschenswert sind. Der Peripheriemangel, der zur Entstehungszeit des Programmes herrschte ist dafür verantwortlich, daß im ursprünglichen Programm die Datenspeicherung nicht gleich auf Diskette erfolgte. Diese Ergänzungen kamen erst später hinzu. Das hatte jedoch auch einen guten Nebeneffekt, nämlich den, daß das Programm mit praktisch allen Peripheriekonfigurationen sinnvoll arbeiten kann. Das beginnt bei Kassettenstation und Zentraleinheit und endet bei Zentraleinheit, Floppy und Drucker. Die einzelnen Bildschirmmasken nutzen die farblichen Möglichkeiten des C 64 zur übersichtlichen Darstellung der Daten. POKE-Befehle wurden weitgehend vermieden, um das Programm möglichst leicht auch auf andere Computer übertragen zu können. POKE-Befehle wurden nur zur Erzeugung der Hintergrundfarben und des Tones verwendet und können an diesen Stellen des Programmes durchaus entfernt werden. Auf die Verwendung von REM-Zeilen wurde verzichtet, da der durch sie verbrauchte, unnötige Speicherplatz das Programm verlangsamt und unnötig verlängert. Zusätzlich würde die verwendbare Datenmenge auch noch eingeschränkt.

Das Programm ist im Menü-System aufgebaut, so daß es recht einfach benutzt werden kann. Die einzelnen Möglichkeiten, die der Benutzer jetzt hat sind meist alle auf dem Bildschirm dargestellt. Das Programm soll nun einmal von Anfang an theoretisch durchlaufen werden. Wird das Programm gestartet, so erfolgt als Erstes die Eingabe der Zeit. Wurde das Programm vorher bereits einmal gestartet, so kann einfach nur »RETURN« eingegeben werden. Die vorher eingegebene Zeit bleibt dann erhalten, da die interne Computeruhr, die ja ständig mitläuft, vom Programm aus benutzt wird. Die Eingabe der Zeit erfolgt im »HHMMSS«-Format. Das bedeutet, daß zum Beispiel 12 Uhr 23 und 15 Sekunden als 122315 eingegeben wird. Nach dieser Eingabe befindet man sich im Hauptmenü (Bild 1), das zunächst sechs gleichwertige Untermenüs anbietet, die den einzelnen Gruppen Landesliga, Bundesliga und Bezirksliga Männer bzw. Frauen zugeordnet sind. Diese Untermenüs sind alle auf dem gleichen Unterprogramm aufgebaut. Der Unterschied liegt nur in den Daten, also den Namen der Mannschaften, der Anzahl der Disziplinen und der Art der Disziplinen. Wird nun eines der Untermenüs (Bild 2), angewählt, so erscheint eine Liste der Mannschaften, mit der jeweils fortlaufenden Mannschaftsnummer. Das Untermenü bietet nun die Möglichkeit der Dateneingabe bei den einzelnen Mannschaften, der Kontrolle aller Einzelergebnisse einer Mannschaft, der Ausgabe der Zwischenergebnisse und des Rücksprunges in das Hauptmenü. Für den Aussprung zurück ins Hauptmenü gibt man »A« ein. Zu den Eingaben ist grundsätzlich noch folgendes zu sagen: Blinkt der Cursor so muß nach der Eingabe »RETURN« gedrückt werden, ist er jedoch nicht zu sehen, so ist dies nicht notwendig.

Bild 2. Untermenü. Die Gruppe 1 wurde angewählt. Oben erscheint die Liste der Mannschaften, darunter die anderen Programmöglichkeiten

Menütechnik sorgt für Übersichtlichkeit

Entscheidet man sich in diesem Untermenü für die Dateneingabe, so muß einfach die Nummer der Mannschaft eingegeben werden, bei der Daten eingegeben werden sollen. Darauf erscheint eine Liste der in dieser Gruppe vorhandenen Disziplinen (Bild 3), geordnet nach Lauf, Sprung und Wurf. Wird nun die Nummer der Disziplin eingegeben, so überprüft das Programm zunächst, ob diese Ergebnisse nicht vielleicht schon eingegeben wurden.

Bild 3. Erste Eingabe. Die Disziplin muß eingegegeben werden. Hier gelangt man hin, wenn man eine Mannschaft angewählt hat

Sicherung gegen Fehleingabe ist ein Muß

Ist dies der Fall, so wird, um eine fehlerhafte Eingabe zu verhindern auf dem Bildschirm eine entsprechende Fehlermeldung ausgegeben. Diese wird von einem akustischen Signal begleitet, da man die Meldung auf dem Bildschirm leicht übersieht, wenn man sich auf die Tastatur konzentriert. Das Programm versichert sich nun, ob die Daten wirklich neu eingegeben werden sollen. Dies geschieht durch eine einfache Ja/Nein-Abfrage. So ist gewährleistet, daß versehentlich gemachte Eingaben auf einfachstem Wege immer wieder gelöscht werden können, daß auf der anderen Seite aber die bereits vorhandenen Daten geschützt sind. Gibt man nun die Punkteergebnisse ein (Bild 4) und drückt nur »RETURN«, so nimmt das Programm als Punktezahl nur einfach eine Null an. Die Punkteergebnisse werden nun sortiert und auf dem Bildschirm übersichtlich ausgegeben. Die beiden besten Ergebnisse stehen oben und sind grün gefärbt (Bild 5), weil sie zum Gesamtergebnis addiert werden. Das dritte Ergebnis wird etwas darunter rot eingefärbt ausgegeben, da es nicht in die Wertung kommt.

Bild 4. Nach Eingabe der Disziplin erfolgt die Eingabe der drei Einzelleistungen. In diesem Fall bei Mannschaft 1 der Gruppe 1
Bild 5. Die eingegebenen Ergebnisse werden sortiert und ausgegeben. Das rote Ergebnis ist nicht in die Wertung gekommen. Darunter erscheint der Gesamtpunktestand. Rechts oben in der Ecke läuft wieder die Zeit

Alle Ergebnisse werden zur Kontrolle gespeichert

Dieses Ergebnis wird jedoch trotzdem so wie die beiden anderen gespeichert, da es bei Rückfragen zur Kontrolle manchmal doch eine Rolle spielt. Ist die Dateneingabe abgeschlossen, kehrt man wieder in das Untermenü mit der Liste der Mannschaften zurück.

Wird in diesem Untermenü »Z« für Zwischenergebnisse eingegeben, so erscheint eine Liste der Mannschaften in Reihenfolge der von ihnen erzielten Punktezahlen (Bild 6). Ferner erscheint eine Liste der von ihnen bereits durchgeführten Disziplinen. Hier spielt nun auch die beim Start des Programmes eingegebene Zeit eine Rolle, da sie auf dem Ausdruck mit angegeben wird. Die Zeit, zu der ein bestimmtes Zwischenergebnis vorlag ist rein statistisch interessant und kann später zur Optimierung des Zeitplanes verwendet werden. Unter der Liste der Mannschaften wird noch angegeben wieviele Disziplinen bereits ausgeführt sind, wobei nur Disziplinen gezählt werden, die alle Mannschaften bereits durchgeführt haben. Diese Meldung ist nicht nur stur errechnet, das heißt, daß nicht etwa auf dem Bildschirm erscheint: »Stand nach 0 Disziplinen« oder »Stand nach 1 Disziplinen«.

Bild 6. Vom Untermenü (Bild 2) wurde in das Zwischenergebnis verzweigt. Die Mannschaften sind nach Punktezahlen geordnet. Unten sind die Disziplinen aufgeführt, die bereits von allen Mannschaften komplett absolviert wurden. Rechts oben läuft wieder die Zeit. Wenn jetzt die »D«-Taste gedrückt wird, erfolgt der bereits Ihnen zugeleitete Ausdruck

»Kleinigkeiten« werden beachtet

In diesen beiden Sonderfällen wird stattdessen »Noch keine Disziplin komplett« bzw. »Stand nach der ersten Disziplin« ausgegeben. Zurück ins Untermenü kommt man nun wenn eine beliebige Taste gedrückt wird. Soll die Liste vorher noch auf dem Drucker ausgegeben werden, so drückt man einfach »D«. Nach dem Druckvorgang kommt man ebenfalls in das Untermenü mit der Liste der Mannschaften.

Wird in diesem Untermenü »K« für Kontrolle gedrückt, so erfolgt der Zugriff auf die konkreten Daten wieder über die Vereinsnummer und die Nummer der Disziplin. Auf dem Bildschirm erscheinen dann Gruppe, Verein, Disziplin und die drei Ergebnisse (Bild 7). Das Programm wartet nun wieder auf einen Tastendruck. Wird entweder l, 2 oder 3 gedrückt, so kann das entsprechende Ergebnis neu eingegeben werden. Bei anderen Tasten erfolgt ein Rücksprung ins Untermenü.

Bild 7. Der Unterprogrammschritt Kontrolle wurde vom Untermenü (Bild 2) aus angewählt. Wird die Taste 1, 2 oder 3 gedrückt, dann kann das entsprechende Ergebnis korrigiert werden

Soll korrigiert werden, so werden die alten Ergebnisse vom Gesamtergebnis subtrahiert. Das neue Ergebnis wird eingegeben, die Ergebnisse werden sortiert und auf dem Bildschirm ausgegeben. Die beiden besten Ergebnisse werden nun wieder zum Gesamtergebnis hinzuaddiert.

Korrekturen ohne weiteres möglich

Diese Untermenümöglichkeiten bestehen für alle sechs Gruppen. Ein Ausstieg aus dem gewählten Programmschritt ist meistens möglich, falls er einmal unbeabsichtigt aufgerufen wird. Die Eingaben werden, so wie das möglich ist, auf Korrektheit überprüft. Im Falle einer festgestellten Unkorrektheit wird der Cursor rot gefärbt und die Eingabe wird ignoriert.

Bild 8. Ein Zwischenergebnis der Gruppe 3. Es wurden mehr Disziplinen ausgeführt
Bild 9. Ein Zwischenergebnis der Gruppe 6. Ohne bisherige Eingaben

Alle Peripheriegeräte können angesprochen werden

Die weiteren Programmschritte, die vom Hauptprogramm aus angewählt werden können, sind Einlesen von Daten, Abspeichern von Daten und Programmende. Die Datenspeicherung (Bild 10) kann sowohl auf Kassette als auch auf Diskette erfolgen. Die Möglichkeit einer solchen Speicherung trägt dazu bei, die Daten vor einem Stromausfall zu schützen und die Ergebnisse zu späteren Zeitpunkten wieder rekonstruieren zu können.

Bild 10. Die Bildschirmmaske, die erscheint, wenn die Daten auf einen anderen Datenträger übertragen werden sollen. Kassette und Diskette sind möglich
Bild 11. Nochmals Korrekturunterprogramm. Die Eingabe Nr. 1 wurde geändert

Um die Daten der Mannschaften zu ändern, muß zunächst die Variable A in Zeile 130 an die neue Gesamtanzahl der Mannschaften angepaßt werden. Die neuen Namen müssen in den DATA-Zeilen von 150 bis 220 geändert werden. Die dort vertretenen »..........« erklären sich dadurch, daß am Veranstaltungstag noch in letzter Minute bereits gemeldete Mannschaften ausfielen. Ihre Namen wurden dann einfach durch diese Striche ersetzt und ihre Ergebnisse wurden immer mit 0 eingegeben. Die Reihenfolge, in der die Mannschaften in den DATA-Zeilen stehen, entscheidet über die Reihenfolge der Mannschaftsnummern. Es ist hierbei darauf zu achten, daß Mannschaften, die in derselben Gruppe starten auch in der Reihenfolge der Nummern direkt nacheinander kommen. Die schließlich letzten Änderungen beziehen sich auf die Zeilen 1050, 1110, 1170, 1220 und 1350. In diesen Zeilen wird festgelegt, welche Mannschaften zu welcher Gruppe gehören und wieviele Disziplinen zu dieser Gruppe gehören. Die Anzahl der Disziplinen ist einfach dadurch zu ändern, daß man der Variable H einen anderen Wert zuweist. Die Namen selbst werden in den darauffolgenden Zeilen definiert, indem sie dem Feld der B$(x)-Variablen zugewiesen werden. Die höchstmögliche Anzahl an Disziplinen muß dann noch in Zeile 130 bei der Zuweisung zu der Variablen B geändert werden. In den oben genannten Zeilen wird z.B. in der Zeile 1050 durch die Zuweisung F=1 und G=5 festgelegt, daß die Mannschaften 1 bis 5 einschließlich zur Bundesliga Männer gehören. In der Zeile 1110 bedeutet F=6:G=10, daß die Mannschaften 6 bis 10 zur Landesliga Männer gehören. Dies gilt ähnlich für die übrigen, oben genannten Zeilen. Die Reihenfolge der Gruppen ist hierbei die gleiche wie die im Hauptmenü verwendete.

(Volker Ritzhaupt)
100-140 Ausgabe der Copyrights auf dem Bildschirm, setzen der Hintergrundfarben und Eingabe der gegenwärtigen Zeit. Der WAIT-Befehl wartet auf einen Tastendruck und muß bei der Anpassung an andere Computer so wie die beiden POKE-Befehle entfernt werden
150-240 Festlegung der Mannschaften in DATAs, Bestimmung der Arrays durch die DIM-Anweisung und Einlesen der Mannschaften
250-390 Aufbau der Bildschirmmaske für das Hauptmenü
400-440 Auswahl des Unterprogramms, das angewählt wurde
450-510 Aufbau der Untermenübildschirmmaske und Verzweigung zu den jeweiligen Unterprogrammen, die von diesem angesprungen werden können
520-570 Auswahl der Disziplin und Ausgabe der Liste aller Disziplinen einer Gruppe
580-690 Eingabe der Ergebnisse, Sortieren der Ergebnisse und Ausgabe der sortierten Ergebnisse. Außerdem Addition zum Gesamtergebnis und Ausgabe des Gesamtergebnisses
700-840 Ausgabe des Zwischenergebnisses auf dem Bildschirm
850-860 Anschalten des Tones
870-940 Ausgabe der Fehlermeldung und des Tones im Falle einer Falscheingabe. Vorbereitung auf die Neueingabe der Ergebnisse
950-1020 Auslisten der Einzelergebnisse zur Kontrolle
1030-1040 Ändern des konkreten Ergebnisses
1050-1390 Unterprogramm zur Definition der Disziplinen und der Mannschaftsanzahl einer Gruppe
1510-1570 Schreiben der Daten auf Kassette
1580-1640 Lesen der Daten von Kassette
1680-1730 Unterprogramm zur Vorbereitung auf die Datenspeicheroperationen
1740-1820 Schreiben der Daten auf die Diskette in eine sequentielle Datei, die den Namen DMM-Daten trägt
1830-1870 Lesen der Daten von Diskette
1880-1890 Eröffnen einer Pseudo-Datei auf der Diskette, falls noch keine Datei angelegt war
3000-3100 Ausgabe der Zwischenergebnisse auf dem Drucker
4000-4010 Unterprogramm zum Drucken der Überschrift
Erläuterung des DMM-Programms anhand der Zeilennummern
A$(x) Name der Vereine
A(x) Gesamtergebnis eines Vereins
A Anzahl der Mannschaften
B$(x) Namen der Disziplinen einer Gruppe
B Maximale Anzahl an Disziplinen
C(x,y,z) Einzelergebnis, wobei x die Mannschaftsnummer ist
y die Disziplin repräsentiert und
z die Nummer des Einzelergebnisses ist (von 1-3)
C$ Variable für 4 Cursorbewegungen nach unten
E$(x) Ergebniszeichenkette, die sich aus Gesamtpunktzahl und Mannschaftsnamen zusammensetzt
E(x,y) Flag zur Überprüfung, ob eine Disziplin bereits eingegeben wurde
x steht für die Mannschaftsnummer und y für die Disziplin
E1$ Zwischenspeicherstring zur Formatierung der Ergebnisse
F Untere Grenze der Mannschaftsnummer einer Gruppe
G Obere Grenze der Mannschaftsnummern einer Gruppe
F$ Variable für Bildschirm löschen und 3 Cursorbewegungen nach unten
G$(x) Namen der unterschiedlichen Gruppen
G1 Anzahl der Mannschaften einer Gruppe
H Anzahl der Disziplinen einer Gruppe
S1 Basisadresse des SID im C 64 (Sound Controller)
T Wellenform des Tones
TI$ Interne Uhr des C 64
T1$ Stunden
T2$ Minuten
T3$ Sekunden
V Anzahl der durchgeführten Disziplinen
V1 Zählvariable
X1 Angewähltes Unterprogramm beziehungsweise angewählte Gruppe
P0,K0 Flag für bestimmten Programmodus
X$,Y$,D$,P$,RI$ Stringvarible ohne bleibenden Wert. (Ja/Nein-Entscheidungen etc.)
I,X,D,J,RI Numerische Variable ohne bleibenden Wert (Laufvariable etc.)
Variablendefinition zum DMM-Programm
100 poke53281,0:poke53280,0:print"{clr}{down}{down}{down}{down}{down}{down}{lred}      d m m - p r o g r a m m  "
110 print"{yel}{down}{down}{down}          copyrights by
120 print"{down}{down}{down}{grn}         volker ritzhaupt
130 print"{down}{down}{down}{lblu}               1983":wait203,63:getx$:a=27:b=17
140 print"{clr}{yel}":poke53281,6:poke53280,6:gosub850:input"zeit (format:hhmmss)";ti$
150 datatsg 78 heidelberg,tsv schoenau,vfb gaggenau
160 datalag obere murg,lsg saarbr.sulzbachtal
170 datatsg akus weinheim,stv singet,tv lahr,tv gengenbach,tv radolphzell
180 data----------,tg oetigheim,usc freiburg,tv zunsweier
190 datausc heidelberg,lav rala ludwigshafen
200 datatv lahr,tsg akus weinheim,tv eppelheim,tsv mannheim,sv waldkirch
210 data----------,tg oetigheim,---------,usc freiburg,ts ottersdorf
220 datalg coop kurpfalz
230 dima$(a),a(a),b$(b),c(a,b,3),e$(a),e(a,b)
240 fori=1toa:reada$(i):next:fori=1toa:e$(i)="0":next:c$="{down}{down}{down}{down}":f$="{clr}{down}{down}{down}"
250 print"{clr}{down}{down}     welche gruppe ?
260 g$(1)="bundesliga maenner
270 print"{down}  1 "g$(1)
280 g$(2)="landesliga maenner
290 print"{down}  2 "g$(2)
300 g$(3)="bezirksliga maenner
310 print"{down}  3 "g$(3)
320 g$(4)="bundesliga frauen
330 print"{down}  4 "g$(4)
340 g$(5)="landesliga frauen
350 print"{down}  5 "g$(5)
360 g$(6)="bezirksliga frauen
370 print"{down}  6 "g$(6)
380 print"{down}  7 abspeichern":print"{down}  8 einlesen
390 print"{down}  9 programmende
400 gosub1650
410 x1=val(x$):ifx1<1then400
420 ifx1=9thenprint"{clr}":end
430 onx1gosub1050,1110,1170,1220,1290,1350,1510,1580
440 ifp0=1thenp0=0:goto250
450 x=0:d=0:print"{clr}{blk} "g$(x1):print"{lred}":fori=ftog:printi" "a$(i):next
460 print"{down}{gry3} z  zwischenergebnis":print" a  anfang":print" k  kontrolle
470 print"{down}{cyn}geben sie die nr.des vereins ein":d$=""
480 inputx$:ifx$="a"then250
490 ifx$="z"then700
500 ifx$="k"thenk0=1:print"vereinsnummer zur kontrolle":goto480
510 x=val(x$):ifx<f orx>gthenprint"{up}{up}{lred}":goto480
520 print"{clr}{pur}":fori=1toh:printb$(i):next:print"{down}{blk}geben sie nr. der disziplin";
530 print" (0)=ausstieg"
540 inputd$:ifd$=""orval(d$)<0orval(d$)>hthenprint"{up}{up}{lred}":goto540
550 d=val(d$):ifd=0then450
560 ifk0=1thenk0=0:goto950
570 ife(x,d)=1then870
580 e(x,d)=1
590 print"{clr}{lred}eingabe "a$(x)
600 print"{down}disziplin: "b$(d)
610 print:fori=1to3:print"{down}{yel}ergebnis nr.:"i:inputc(x,d,i):next
620 fori=1to2:forj=i+1to3:ifc(x,d,j)<=c(x,d,i)then640
630 ri=c(x,d,i):c(x,d,i)=c(x,d,j):c(x,d,j)=ri
640 nextj,i
650 print"{clr}{lblu}sortierte ergebnisse:{grn}{down}{down}":printc(x,d,1):printc(x,d,2):print"{lred}"
660 printc(x,d,3):a(x)=a(x)+c(x,d,1)+c(x,d,2)
670 print"{down}{down}{blk}total "a$(x)":"a(x):print"{down}{orng}taste druecken"
680 gosub1650
690 goto450
700 gosub830:fori=ftog-1:forj=i+1tog:ife$(j)<=e$(i)then720
710 ri$=e$(i):e$(i)=e$(j):e$(j)=ri$
720 nextj,i:print"{home}"c$c$c$c$"{down}{cyn}ausgefuehrte disziplinen:"
730 v=0:fori=1tob:forj=ftog:ife(j,i)<>0thenv1=v1+1
740 nextj:ifv1=g1thenprintright$(b$(i),len(b$(i))-4),:v=v+1
750 v1=0:nexti
760 print"{pur}{home}"c$:fori=ftog:printe$(i):next:print"{yel}"
770 ifv=1thenprint"{down}stand nach der ersten disziplin":goto800
780 ifv=0thenprint"{down}noch keine disziplin komplett!":goto800
790 print"{down}stand nach"v" disziplinen!{down}"
800 print"{orng}taste druecken!":print"(d fuer ausgabe auf drucker)
810 gosub1650:ifx$="d"thengosub3000
820 goto450
830 print"{clr}{gry3}zwischenergebnis:":print"{blk}"g$(x1):fori=ftog
840 e1$="      "+str$(a(i)):e$(i)=right$(e1$,7)+" "+a$(i):next:return
850 s1=54272:poke54296,15
860 pokes1+3,8:pokes1+6,240:t=64:return
870 print"{lred}{clr}"c$c$"      wurde schon eingegeben!!!"
880 pokes1+1,40:pokes1,80:fori=1to5:pokes1+4,t+1:forj=1to50:next
890 pokes1+4,t:forj=1to30:nextj,i:pokes1+1,0:pokes1,0
900 print"{down}{down}{down}    wollen sie neu eingeben? (j/n)"
910 gety$:ify$=""then910
920 ify$="j"then940
930 goto540
940 fori=1to2:a(x)=a(x)-c(x,d,i):next:goto580
950 print"{clr}{blk}"g$(x1):print"{down}{lred}verein:"a$(x)
960 print"{down}{cyn}disziplin:"right$(b$(d),len(b$(d))-4)
970 print:fori=1to3:print"{yel}ergebnis"i" :"c(x,d,i):next
980 print"{down}{orng}taste druecken"
990 print"{down}nr. des ergebnisses fuer korrektur"
1000 getx$:ifx$=""then1000
1010 ifx$="1"orx$="2"orx$="3"then1030
1020 goto450
1030 i=val(x$):a(x)=a(x)-c(x,d,1)-c(x,d,2)
1040 print"neues ergebnis"i;;:inputc(x,d,i):goto620
1050 h=b:f=1:g=5:g1=g-f+1:b$(1)=" 1  100m":b$(2)=" 2  200m":b$(3)=" 3  400m"
1060 b$(4)=" 4  800m":b$(5)=" 5  1500m":b$(6)=" 6  5000m"
1070 b$(7)=" 7  110m h":b$(8)=" 8  400m h":b$(9)=" 9  4V100m"
1080 b$(10)="10  hoch":b$(11)="11  stabhoch":b$(12)="12  weit"
1090 b$(13)="13  drei":b$(14)="14  kugel":b$(15)="15  diskus"
1100 b$(16)="16  hammer":b$(17)="17  speer":return
1110 h=9:f=6:g=10:g1=g-f+1:b$(1)=" 1  100m":b$(2)=" 2  400m"
1120 b$(3)=" 3  800m":b$(4)=" 4  5000m"
1130 b$(5)=" 5  4V100m"
1140 b$(6)=" 6  hoch":b$(7)=" 7  weit"
1150 b$(8)=" 8  kugel":b$(9)=" 9  diskus"
1160 return
1170 h=4:f=11:g=14:g1=g-f+1:b$(1)=" 1  100m"
1180 b$(2)=" 2  4V100m"
1190 b$(3)=" 3  weit"
1200 b$(4)=" 4  kugel"
1210 return
1220 h=12:f=15:g=16:g1=g-f+1:b$(1)=" 1  100m":b$(2)=" 2  200m":b$(3)=" 3  400m"
1230 b$(4)=" 4  800m":b$(5)=" 5  3000m"
1240 b$(6)=" 6  100m h":b$(7)=" 7  4V100m"
1250 b$(8)=" 8  hoch":b$(9)=" 9  weit"
1260 b$(10)="10  kugel":b$(11)="11  diskus"
1270 b$(12)="12  speer"
1280 return
1290 h=7:f=17:g=22:g1=g-f+1:b$(1)=" 1  100m"
1300 b$(2)=" 2  800m"
1310 b$(3)=" 3  4V100m"
1320 b$(4)=" 4  hoch":b$(5)=" 5  weit"
1330 b$(6)=" 6  kugel":b$(7)=" 7  diskus"
1340 return
1350 h=4:f=23:g=27:g1=g-f+1:b$(1)=" 1 100m"
1360 b$(2)=" 2  4V100m"
1370 b$(3)=" 3  weit"
1380 b$(4)=" 4  kugel"
1390 return
1510 gosub1680:ifp$="e"then250
1520 ifp$="d"then1740
1530 open1,1,1,"daten
1540 fori=1toa:print#1,a(i):printi,:next
1550 fori=1toa:forj=1tob:fork=1to3:print#1,c(i,j,k):printi,:nextk,j,i
1560 fori=1toa:forj=1tob:print#1,e(i,j):printi,:nextj,i
1570 close1:p0=1:return
1580 gosub1680:ifp$="e"then250
1590 ifp$="d"then1830
1600 open1,1,0,"daten
1610 fori=1toa:input#1,a(i):printi,:next
1620 fori=1toa:forj=1tob:fork=1to3:input#1,c(i,j,k):printi,:nextk,j,i
1630 fori=1toa:forj=1tob:input#1,e(i,j):printi,:nextj,i
1640 close1:p0=1:return
1650 getx$:t1$=left$(ti$,2)+":":t2$=mid$(ti$,3,2)+":":t3$=right$(ti$,2)
1660 print"{home}"tab(30)t1$t2$t3$:ifx$=""then1650
1670 return
1680 printf$"{yel}bitte die kassette fertigmachen
1690 print"{down}{down}und dann taste druecken
1700 print"{down}{down}{cyn}e-fuer ausstieg eingeben
1710 print"{down}{down}{lred}d-fuer diskette eingeben
1720 getp$:ifp$=""then1720
1730 return
1740 print"{clr}{lblu}existiert bereits eine datei":print"{down}auf der diskette ? (j/n)
1750 getx$:ifx$=""then1750
1760 ifx$="n"thengosub1880
1770 ifx$<>"n"andx$<>"j"then1750
1780 open1,8,1,"@0:dmm-daten,s,w"
1790 fori=1toa:print#1,a(i):printi,:next
1800 fori=1toa:forj=1tob:fork=1to3:print#1,c(i,j,k):printi,:nextk,j,i
1810 fori=1toa:forj=1tob:print#1,e(i,j):printi,:nextj,i
1820 close1:p0=1:return
1830 open1,8,0,"dmm-daten,s,r"
1840 fori=1toa:input#1,a(i):printi,:next
1850 fori=1toa:forj=1tob:fork=1to3:input#1,c(i,j,k):printi,:nextk,j,i
1860 fori=1toa:forj=1tob:input#1,e(i,j):printi,:nextj,i
1870 close1:p0=1:return
1880 open1,8,1,"dmm-daten,s,w":print#1,"fuer daten reserviert!"
1890 close1:return
3000 open1,4:print#1:print#1:print#1,"stand "left$(ti$,2)" uhr "mid$(t$,3,2)
3005 print#1:gosub4000:fori=ftog-1:forj=i+1tog:ife$(j)<=e$(i)then3020
3010 ri$=e$(i):e$(i)=e$(j):e$(j)=ri$
3020 nextj,i:print#1,"ausgefuehrte disziplinen:"
3030 v=0:fori=1tob:forj=ftog:ife(j,i)<>0thenv1=v1+1
3040 nextj:ifv1=g1thenprint#1,right$(b$(i),len(b$))-4),:v=v+1
3050 v1=0:nexti:print#1
3060 print#1:fori=ftog:print#1,e$(i):next
3070 ifv=1thenprint#1,"stand nach der ersten disziplin":goto3100
3080 ifv=0thenprint#1,"noch keine disziplin komplett!":goto3100
3090 print#1,"stand nach"v" disziplinen!"
3100 close1:return
4000 print#1,"zwischenergebnis:":print#1,chr$(1)g$(x1):fori=ftog
4010 e1$="      "+str$(a(i)):e$(i)=right$(e1$,7)+" "+a$(i):next:print#1:return
Listing des DMM-Programms
PDF Diesen Artikel als PDF herunterladen
Mastodon Diesen Artikel auf Mastodon teilen
← Vorheriger ArtikelNächster Artikel →