Mailbox für jedermann
Mit diesem Programm machen Sie Ihren C 64 zu einem elektronischen Briefkasten. Sie brauchen nur noch ein Gerät, das automatisch den Hörer abhebt.
Der Betreiber der M.C.S.-Mailbox, Kürzel [THW], hat uns sein Programm zur Verfügung gestellt. Es hat sich in der Praxis bereits bestens bewährt. Mitdiesem Programm kann jeder seine eigene Mailbox aufmachen.
Ein Mailboxprogramm ist eigentlich nichts anderes als ein kombiniertes Verwaltungs- und Textverarbeitungsprogramm. Der Unterschied zu den genannten Programmen liegt nur in der Art der Datenverwaltung. Es verwaltet alle ankommenden Daten in seinem System und bietet viele Möglichkeiten es weiter auszubauen.
Das Programm kann bis zu 400 Benutzer mit einer 1541 verwalten. Zuzüglich der Text- und Info-Files.
Neue Texte, die für alle bestimmt sind, werden vom Programm automatisch in das vorhandene Nachrichten-File (Datei für hinterlassene Nachrichten) eingebunden, so daß der nächste Anrufer diese Nachrichten sofort lesen kann. Damit ist gewährleistet, daß der Informationsfluß nicht unterbrochen wird und neue Daten sofort verfügbar sind.
Die Verwaltung der Anrufer wurde mit einer relativen Datei verwirklicht, da diese sich am besten dazu bewährt hat. Pluspunkte einer solchen Datei sind zum einen der schnelle Zugriff auf die einzelnen Records und das unproblematische Ändern von Daten.
Die Schnelligkeit wird auch dadurch erreicht, daß parallel zur Recordnummer auch ein Indexfeld mit den Anfangsbuchstaben der eingetragenen Anrufer im Computer mitläuft.
Damit wird die Suche nach einem Namen zum Kinderspiel und macht sich bei der Identifizierung (UID) sehr schnell positiv bemerkbar.
Als Indexfeld wurde ein Integerfeld (U%(X)) verwendet, das einige Besonderheiten aufweist. Integervariablen verbrauchen bekanntlich wenig Platz im Speicher. Man muß dann allerdings alle ASCII-Zeichen in eine Zahl konvertieren und diese im Feld ablegen. Beim Suchen wird dann die Zahl wieder in ein Zeichen umgewandelt. Die Zeit, die dafür verloren geht, ist aber so gering, daß sie nicht ins Gewicht fällt.
Eine entsprechende Lösung über ein Stringfeld ist nicht anzuraten. Dieses verbraucht nur unnötig Speicherplatz und zum anderen kann die Garbage Collection erbarmungslos zuschlagen.
Noch ein Wort zur Koppler- oder Modemsteuerung.
Das Programm verwendet die folgenden Signale und Anschlüsse am User-Port:
| PB1 | Koppler/Modem | ||
| Pegel | high | aus | |
| low | aktiv | ||
| PB3 | Klingelerkennung | ||
| Pegel | high | kein Anruf | |
| low | Anruf erkannt | ||
| PB4 | Detect-Anzeige | ||
| Pegel | high | keine Gegenstelle | |
| low | Gegenstelle vorhanden |
Es ist wichtig, daß ein Relais zur Aktivierung des Kopplers und zum »Abheben« des Telefonhörers über einen Transistor als Treiber gesteuert wird, da nur so die User-Port-Ausgänge nicht zu stark belastet werden. Außerdem erzielt man damit auch die nötige Invertierung der Signale. Man kann dazu die Auto-Modem-Schaltung aus der 64’er, Ausgabe 9/84, Seite 114verwenden. Allerdings muß die Leitung PB5 (Anschluß H im Schaltplan) mit PB1 verbunden werden.
Die Befehle für die Koppler/Modemsteuerung sind in diesem Programm durch REM-Zeilen ausgewiesen.
Das Programmpaket besteht aus drei einzelnen Programmteilen, die zur Inbetriebnahme der Mailbox notwendig sind.
1. DATEI/SORT/COPY
Mit diesem Programm wird eine Datendiskette, mit allen Files, die das Hauptprogramm erwartet, kreiert.
Nach der Frage »Datei anlegen« kann unterschieden werden, ob nur eine relative Datei, oder ob eine »komplette Datei« angelegt werden soll. Der Unterschied ist, daß bei der ersten Wahl nur die Diskette formatiert wird, eine relative Datei und ein sequentielles Indexfeld angelegt wird.
Bei der zweiten Wahl wird eine komplette Datei angelegt mit den folgenden Files, die alle das Programm »MAILBOX« erwarten:
| Filename | Filetyp | Blöcke | Verwendungszweck |
|---|---|---|---|
| USER | rel | 128 | Anrufer verwalten |
| M-INDEX | seq | X | Persönliches Indexfeld |
| A-INDEX | seq | X | Zwischenspeicher aktueller Daten |
| BILD | seq | X | Titelbild |
| MESSAGE | seq | X | Öffentliche Nachrichten (Texte) |
| AL | seq | X | Allgemeines File (frei verfügbar) |
| RI | seq | X | Rechner Info (frei verfügbar) |
| TEL | seq | X | Telefonverzeichnis (frei verf.) |
| CL | seq | X | Clubfile (frei verfügbar) |
| AK | seq | X | Aktuelles (frei verfügbar) |
| P1-P50 | seq | X | 50 einzelne persönliche Nachrichten |
Die Files BILD,AL,RI,TEL,CL und AK müssen vom Mailbox-Betreiber selbst editiert werden. Denn diese werden vom Benutzer nur angesehen aber nicht beschrieben.
Man nimmt dazu einen Editor (Terminal 64 ist dazu sehr gut), gibt dort seine Texte ein und speichert diese auf der Datendiskette ab, indem man das vorhandene File überschreibt. Die anderen Files werden vom System selbst verwaltet.
Im File »USER« werden die Benutzer, soweit sie sich eingetragen haben, gespeichert.
Es können bei dieser Version maximal 400 Benutzer verwaltet werden.
Pro eingetragenen Anrufer beziehungsweise pro Record der Datei werden folgende Daten abgelegt:
| Anrufername | 19 | Zeichen |
| Wohnort/Stadt | 19 | Zeichen |
| Rechnersystem | 10 | Zeichen |
| Passwort | 10 | Zeichen |
| Datum des letzten Login | 8 | Zeichen |
| Uhrzeit des letzten Login | 8 | Zeichen |
| Bell on/off | 1 | Zeichen |
| Linefeed on/off | 1 | Zeichen |
| Profi/Anfänger | 1 | Zeichen |
| Reserve | 2 | Zeichen |
| Gesamte Recordlänge | 79 | Zeichen |
| Plus ein Return (CR) | 80 | Zeichen |
Der File M-INDEX speichert die Namen und Paßwörter der eingetragenen Benutzer, für die eine persönliche Nachricht vorhanden ist.
Wenn sich ein Anrufer zu erkennen gibt (UID), sucht das System, ob der Name und das Paßwort im Indexfeld vorhanden ist. Wenn ja, ergibt die Laufvariable I (FORI=1TO50) das persönliche Textfile (P 1 bis P 50) und wird dem Benutzer gezeigt.
Im File A-INDEX werden alle aktuellen Daten gesichert, damit diese nicht verloren gehen, wenn das System sich einmal aufhängen sollte. Gesichert wird das Datum, Anzahl der Anrufe, und wann die letzte Nachricht abgespeichert wurde.
Nach jedem Durchgang (Login-Logoff) werden die Daten dort gesichert.
Persönliche Nachrichten werden in den Files P 1 bis P 50 abgelegt. Die Belegung dieser Files läuft parallel mit dem M-Indexfeld. Mit dem M-Indexfeld wird auch überprüft, ob noch Platz für eine weitere persönliche Nachricht vorhanden ist.
Wird eine Nachricht für jemanden abgelegt, für den schon eine vorhanden ist, so wird der neue Text an das vorhandene File mit dem Append-Befehl (,s,a) angehängt.
Die öffentlichen Texte, die von jedem Benutzer eingegeben werden können, werden automatisch an den Anfang des MESSAGE-Files gestellt.
Besondere Bedeutung erhält das File »BILD«. Mit diesem File hat der Betreiber (Sysop) die Möglichkeit, die Anfangsmeldung seiner Box zu kreieren.
2. [ML] INR
Das Listing muß mit dem MSE eingegeben und auf Diskette gespeichert werden. Startadresse dieses Maschinenprogramms ist $C000. Die Maschinenroutine wird automatisch, wenn man das Mailboxprogramm gestartet hat, nachgeladen und aktiviert.
Das Maschinenprogramm beinhaltet folgende Funktionen :
a) Mit SYS49152 wird die RS232-Schnittstelle eröffnet und die Pufferzeiger in den $C000-Bereich verbogen.
Würde man den Kanal in Basic eröffnen, würde der C 64 die beiden Ein-/Ausgabe-Puffer am Ende des Basic-Speichers anlegen und dadurch den Hauptspeicher um 512 Byte kürzen. Aber warum soll man den Basic-Speicher verschwenden, wenn man den $C000-Bereich dafür nutzen kann.
b) DieZeiger$F157 (Input), $F1CA(Output) und $F13E (Get) werden »verbogen« und zeigen auf die eigene Routine. Dort erfolgen die Umrechnungen des ASCII-CBM-Codes. Damit spart man sich das lästige Konvertieren in Basic, was sich sicherlich auch in einer langsameren Geschwindigkeit auswirkt.
So genügt es einfach zu sagen: PRINT#2,"HALLO" um am User-Port reinen ASCII-Code zu senden.
Zum anderen ist dieser PRINT-Befehl auch für die Bildschirmausgabe zuständig. Mit einem einzigen PRINT erfolgt die Ausgabe auf dem Bildschirm und am User-Port. Dadurch erspart man sich die doppelten Ausgaben mit PRINT und PRINT #, was sich sicherlich auch vom Speicherplatz her bemerkbar macht.
Der GET #-Befehl ist im Gegensatz zum PRINT # nur für ein Eingabegerät zuständig.
c) Die letzte Routine hat schließlich die Aufgabe, Texte von der Floppy auf dem Bildschirm und gleichzeitig auf dem User-Port auszugeben.
Unter anderem wird die Tastatur und der User-Port auf Eingaben abgefragt, und die Eingaben auf Steuerzeichen hin geprüft.
Mit den Codes
Ctrl/S Halt
Ctrl/Q Weiter
Ctrl/X Abbruch
Ctrl/N Nächster
kann die Textausgabe vom Benutzer gesteuert werden.
Nebenbei wird auch die Detect-Anzeige (CD-Leitung aktiv, Carrier erhalten) vom Koppler abgefragt und nach Ausbleiben die Textausgabe unterbrochen.
3. MAILBOX
Um eine gewisse Übersicht und Struktur im Programm zu erreichen, wurden die einzelnen Funktionen in Programm-Blöcke aufgeteilt.
Diese sind nach ihrem Zweck entsprechend mit REM-Zeilen gekennzeichnet.
Die einzelnen Blöcke sind in Tabelle 1 dargestellt.
| Zeile | Funktion | ||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|
| 10 | Floppy initialisieren | ||||||||||
| 17 | Maschinenroutine laden | ||||||||||
| 32 | Programm initialisieren (Variablenzuweisung) | ||||||||||
| 104 | Indexfeld der Anrufer-Datei laden | ||||||||||
| 114 | Farbe setzen | ||||||||||
| 118 | Eingabe der RS232 erfolgt nur in Großschrift | ||||||||||
| 121 | Es ist Groß- und Kleinschrift erlaubt | ||||||||||
| 125 | Warteschleife für Telefon oder Direktstart | ||||||||||
| 156 | Ein-/Ausgabe und Berechnung der Uhrzeit und des Datums | ||||||||||
| 247 | Dialog beenden (Verbindung abbauen und Daten sichern) | ||||||||||
| 265 | Mailbox beenden (Daten sichern und Programm stoppen) | ||||||||||
| 272 | Daten sichern (A + M-Indexfeld) | ||||||||||
| 286 | Steuerzeichen für Ausgabe abfragen | ||||||||||
| 297 | Textausgabe von Floppy (Einsprung zur Maschinenroutine) | ||||||||||
| 311 | Abfrage des Klingelsignals, erkennt dann Start | ||||||||||
| 320 | Bell on/off (CHR$(7)) | ||||||||||
| 330 | Linefeed on/off (CHR$(10)) | ||||||||||
| 339 | Detect-Abfrage am Akustikkoppler/Modem | ||||||||||
| 351 | Timeout und Timelimit überprüfen | ||||||||||
| 372 | Eingabeschleife für Box-Befehle | ||||||||||
| 385 |
|
||||||||||
| 397 | String zusammen setzen (GET-Schleife) | ||||||||||
| 415 | Relative Datei öffnen | ||||||||||
| 425 | Record-Nummer für die relative Datei berechnen | ||||||||||
| 433 | Anrufer erkannt und Start der Mailbox | ||||||||||
| 448 | Anzeige der Mailbox-Menüs | ||||||||||
| 463 | Anzeige der Mailbox-Befehle | ||||||||||
| 478 | Befehle auswerten und ausführen | ||||||||||
| 521 | Berechnung des Timelimits | ||||||||||
| 535 | Benutzer in der Datei mittels Indexfeld suchen | ||||||||||
| 560 | Benutzer ruft den Sysop | ||||||||||
| 586 | Anrufer/Sysop-Dialog (Chat, gleichbedeutend mit Taste F1) | ||||||||||
| 602 | Eintrag für persönliche Nachricht löschen | ||||||||||
| 608 | Ausgabe für Uhrzeit/Datum und Online-Zeit | ||||||||||
| 624 | Neuer Anrufereintrag (Freiwillige Eingabe) | ||||||||||
| 656 | Benutzerdaten ändern | ||||||||||
| 742 | Ausgabe der eingetragenen Benutzer der Box | ||||||||||
| 802 | Benutzer-ID überprüfen | ||||||||||
| 855 | Prüfen, ob eine persönliche Nachricht vorhanden ist | ||||||||||
| 867 | Eingabe einer persönlichen Nachricht für einen anderen Benutzer | ||||||||||
| 892 | Texteditor | ||||||||||
| 1053 | Benutzer-ID erkannt und identifiziert | ||||||||||
| 1058 | Tonausgabe für Anruf und SOR (Sysop rufen) | ||||||||||
| 1074 | Begrüßung des eingetragenen Benutzers | ||||||||||
| 1100 | Kontaktadresse der Box | ||||||||||
| 1105 | Fehlerabfrage der Floppy | ||||||||||
| 1121 | Auto-Update (Neue Texte einbinden) | ||||||||||
| 1169 | Ton wieder ausschalten | ||||||||||
| 1177 | Mailbox-Texte und Systemmeldungen | ||||||||||
| 1277 | Help-Liste Texteditor | ||||||||||
| 1289 | Help-Liste Hauptmenü | ||||||||||
| 1301 | Mailbox-Menü | ||||||||||
| 1329 | Infomenü |
Die einzelnen Befehle für die Box kann man den Help-Listen entnehmen, so daß hier nur ein paar Befehle beschrieben werden sollen.
Da die Box sehr offen gehalten ist, kann sich jeder Anrufer selbst im System eintragen. Man gibt einfach »NU« ein, und danach seinen Namen, Stadt, Computer und das persönliche Paßwort. Nach einem »LOGOFF« wird man in die Benutzerliste aufgenommen und man kann sich dann mit dem Befehl UID <name> zu erkennen geben. Um einem anderen eingetragenen Benutzer eine persönliche Nachricht zu schicken, wird der Befehl PME angewendet. Das System fragt dann nach dem Namen und wenn vorhanden, kann man danach seine Nachricht im Texteditor eingeben und abspeichern.
Es besteht auch die Möglichkeit, sich die Anruferliste anzuschauen. Es gibt mehrere Arten der Ausgabe und Suche:
| UL | Hiermit wird die gesamte Liste angezeigt. |
| ULA | Es wird die Anzahl der eingetragenen Benutzer angezeigt. |
| ULN | Es werden nur die Namen der Benutzer gezeigt. |
| ULN ..... | Hiermit kann man direkt einen Benutzer suchen. Es wird der gesamte Name überprüft. |
| ULN ....* | dito., allerdings wird nur die Anzahl der eingegebenen Zeichen überprüft. |
| ULS ..... | Es wird nach der Stadt gesucht (Funktion wie oben). |
| DULR ..... | Nach Computer suchen (Funktion wie oben). |
| ULD ..... | Nach Datum suchen (Funktion wie oben). |
| UIDA | Mit diesem Befehl kann der Benutzer seine persönlichen Daten in der Datei ändern (beispielsweise neuer Computer, neue Stadt, etc.). |
| SOR | Damit kann der Benutzer den Betreiber (Sysop) rufen, und wenn dieser anwesend ist, kann ein Gespräch (Chat) geführt werden. |
| PRO | Es werden die Systemmeldungen unterdrückt. Wenn man die Befehle kennt, ist es sehr nützlich die Help-Listen und Systemmeldungen blockieren zu können, da diese Ausgaben Zeit kosten, was sich in der Telefonrechnung niederschlägt. |
| TI | Man erhält das aktuelle Datum und Uhrzeit. Unter anderem wird die im System verbrachte Zeit angegeben. |
| PML | Hat ein eingetragener Benutzer eine persönliche Nachricht erhalten, so kann er sie sich mit diesem Befehl noch einmal anschauen, da diese nach einem »LOGOFF« automatisch vom System gelöscht wird. |
| BE | Einige Terminals verwenden ein akustisches Signal, um den Benutzer auf bestimmte Meldungen aufmerksam zu machen. Dieses kann mit diesem Befehl unterbunden oder freigegeben werden. |
| LF | Bestimmte DFÜ-Programme brauchen ein Linefeed, um den Cursor eine Zeile nach unten zu bewegen, da bei ihnen ein RETURN den Cursor nur am Zeilenanfang plaziert (on/off- Modus) |
Obwohl dieses Programm für den Mailbox-Betrieb geschrieben wurde, so besteht doch für den einen oder anderen die Möglichkeit, diese oder jene Funktion für andere Programme zu verwenden. Ein Beispiel wäre die Benutzerverwaltung. Damit kann man sich ein sehr komfortables Adressenprogramm mit Direktzugriff aufbauen.
Oder das Datum, das um 00.00 Uhr vom System automatisch erhöht wird. Schaltjahre werden selbstverständlich berücksichtigt.
Compiler
Es ist sicherlich ratsam, das Programm zu compilieren. Es erhöht auf alle Fälle die Geschwindigkeit. Aber die Frage ist, welcher Compiler sich dafür eignet.
Der Petspeed eignet sich leider nicht dafür, da er Register in der Zeropage benutzt, die normalerweise der RS232 zugeordnet sind.
Der Bass-Compiler ist sehr mühsam, langsam und umständlich.
Bewährt haben sich der Austro- und der Austrospeed Compiler von Commodore.
Empfehlenswert ist der Basic 64 von Data Becker. Dieser bietet so viele Möglichkeiten wie kein anderer. Allerdings sind einige Bedingungen oder Einstellungen nötig:
Da Basic 64 den gesamten RAM-Bereich benutzt, somit auch den $C000-Bereich, wo die Maschinenroutine liegt, muß man dem Compiler klar machen, daß dieser Bereich für ihn tabu ist.
Das macht man, indem man in der Parameterliste des Compilers Basic 64 den Punkt »E« aufruft und dort die Adresse 49150 eingibt. Dadurch erkennt der Compiler, wo seine Grenze ist, und die Routine im $C000 Bereich bleibt erhalten.
Noch einmal die Abtippvorschriften:
Zuerst sollten Sie die beiden Basic-Programme (Listing 1 und 2) eintippen und auf Diskette speichern. Dann das Maschinenprogramm (Listing 3). Mit dem Programm »DATEI/SORT/-COPY« generieren Sie dann eine extra Datendiskette.
Die M.C.S.-Box, das heißt, das hier abgedruckte Programm im praktischen Einsatz, erreichen Sie über die Telefonnummer 040-2512371.
(Thomas Wieske/hm)1 rem *************************************************************************
2 rem ********************* master mailbox programm v3.0 *********************
3 rem ********************* (c) 1985 copyright by m.c.s. *********************
4 rem *************************** 2000 hamburg 76 ***************************
5 rem *************************** lessingstrasse 2 ***************************
6 rem *************************************************************************
7 :
8 poke650,128:goto19
9 :
10 rem -- floppy initialisieren -----------------------------------------------
11 :
12 close15
13 open15,8,15,"i"
14 close15
15 return
16 :
17 rem -- [ml] routine laden --------------------------------------------------
18 :
19 x=17:printchr$(14)chr$(8)chr$(147)chr$(x)chr$(x)chr$(158)
20 print" Master-Mailbox-System vers.3.0"
21 gosub12
22 printchr$(x)" (C) 1985 Written by [THW] of M.C.S."
23 fa=0
24 gosub115
25 ifa=2then127
26 ifpeek(49152)<>169anda=0thena=1:load"[ml]*",8,1
27 printchr$(17)"Bitte Datendiskette einlegen"chr$(17)
28 print"OK J"chr$(157)chr$(157)chr$(157);:inputx$
29 ifx$="n"thenend
30 ifx$<>"J"then19
31 :
32 rem -- programm initialisieren ---------------------------------------------
33 :
34 printchr$(x)"**** SYSTEM BOOTEN ****"chr$(x)
35 ifpeek(828)<8then41
36 open15,8,15,"v"
37 print"Validate"
38 fa=2
39 gosub115
40 poke828,0
41 gosub12
42 close3:clr
43 open3,3
44 poke49800,240
45 sys49152
46 te=56577
47 si=54272
48 c=56584
49 mx=50
50 u%=400
51 dimte$(40)
52 dimm$(50)
53 dimu%(400)
54 be$=chr$(7)
55 li$=chr$(10)
56 cr$=chr$(13)
57 xn$=chr$(17)
58 xf$=chr$(19)
59 xe$=chr$(24)
60 ru$=be$+"*"
61 ga=1
62 t2=1
63 be=2
64 li=1
65 dx=1
66 lm=1500
67 ll=100
68 d=2
69 ub$="Gast"
70 c$="COMMAND ->"
71 po=-1
72 fi$="a-index"
73 gosub299
74 input#8,da$,an$,nr$,ak$
75 close8
76 an=val(an$)
77 gosub421
78 fi$="m-index"
79 gosub299
80 fori=1tomx
81 input#8,m$(i)
82 next
83 close8
84 nr=val(nr$)
85 close1:open1,0
86 s$=" "
87 s$=s$+s$
88 j$(1)="Sonntag"
89 j$(2)="Montag"
90 j$(3)="Dienstag"
91 j$(4)="Mittwoch"
92 j$(5)="Donnerstag"
93 j$(6)="Freitag"
94 j$(7)="Samstag"
95 j$(0)=j$(7)
96 o$(1)="ON"
97 o$(2)="OFF"
98 rl$=cr$+li$
99 q$=xn$+xn$+xn$+xn$+xn$+xn$+xn$+xn$
100 a=2
101 fori=0to3
102 poke830+i,0
103 next
104 rem -- indexfeld user relativ datei ---------------------------------------
105 gosub417
106 re=60
107 forbl=u%-nr+1tou%
108 gosub427
109 get#8,u$
110 u%(bl)=asc(u$)
111 next
112 gosub421
113 goto19
114 rem -- farbe setzen -------------------------------------------------------
115 poke53280,fa
116 poke53281,fa
117 return
118 rem -- nur grosschrifft fuer rs232 ----------------------------------------
119 poke49398,196
120 return
121 rem -- gross und kleinschrifft rs232 --------------------------------------
122 poke49398,195
123 return
124 :
125 rem -- warteschleife fuer anrufer -----------------------------------------
126 :
127 printxf$xn$q$
128 gosub173
129 print"Anrufe "right$(s$+an$,10)
130 pe=0
131 me=0
132 ux$=""
133 print"Anzahl User "right$(s$+nr$,10)
134 print"MSG "ak$
135 an=an+1
136 an$=str$(an)
137 nr$=str$(nr)
138 printxf$q$q$"'T'ime 'D'atum 'S'tart 'E'nde"
139 gosub205
140 ti$=ur$
141 gosub171
142 pokete,255:rem relais an pb1 ausschalten
143 dy=0
144 gosub313
145 gosub163
146 print
147 gete$:ife$=""then143
148 ife$="t"thengosub163:goto158
149 ife$="d"thengosub171:goto165
150 ife$="e"thengosub267:end
151 ife$="s"then435
152 gosub205
153 ti$=ur$
154 goto143
155 :
156 rem -- ein/ausgabe und berechnung der uhrzeit und des datums --------------
157 :
158 x$=chr$(157)+chr$(157)+chr$(157)+chr$(157):x$=x$+x$
159 printx$;:inputur$
160 gosub195
161 ti$=ur$
162 goto143
163 printxf$q$"Uhrzeit "ti$;
164 return
165 printchr$(145)"Datum heute ";
166 inputda$
167 dx=1
168 gosub173
169 gosub171
170 goto143
171 printxf$xn$q$left$(j$(z)+s$,10)"den "da$
172 return
173 ta=val(left$(da$,2))
174 mo=val(mid$(da$,4,2))
175 ja=val(right$(da$,4))
176 ifdx=1thendx=0:goto181
177 ta=ta+1
178 ifta>31thenta=1:mo=mo+1:ifmo>12thenmo=1:ja=ja+1
179 ifmo=2thenifta>28thenifja/4<>int(ja/4)thenmo=3:ta=1
180 ifta>30and(mo=4ormo=6ormo=9ormo=11)then177
181 k=int(.6+(1/mo))
182 r=ja-k
183 o=mo+12*k
184 p=r/100
185 z=(int(13*(o+1)/5))+(int((5*r)/4))-(int(p))+(int(p/4))+ta
186 z=(z-(7*int(z/7)))
187 ta$=str$(ta)
188 iflen(ta$)=2thenta$=" 0"+right$(ta$,1)
189 mo$=str$(mo)
190 iflen(mo$)=2thenmo$=" 0"+right$(mo$,1)
191 ja$=str$(ja)
192 iflen(ja$)=2thenja$=" 0"+right$(ja$,1)
193 da$=right$(ta$,2)+"."+right$(mo$,2)+"."+right$(ja$,4)
194 return
195 pokec+7,peek(c+7)and127
196 pokec+6,peek(c+6)or128
197 h=val(left$(ur$,2))
198 m=val(mid$(ur$,3,2))
199 s=val(right$(ur$,2))
200 ifh>11thenh=h+68
201 pokec+3,16*int(h/10)+h-int(h/10)*10
202 pokec+2,16*int(m/10)+m-int(m/10)*10
203 pokec+1,16*int(s/10)+s-int(s/10)*10
204 pokec,0:return
205 h=peek(c+3)
206 m=peek(c+2)
207 s=peek(c+1)
208 sx=peek(c)
209 fl=1
210 if(hand128)=128thenh=h-128:fl=0
211 iffl=1then214
212 ifh=18then215
213 h=h+18
214 ifh=18andfl=1thenh=0
215 ur$=""
216 v=h
217 gosub226
218 gosub228
219 v=m
220 gosub226
221 gosub228
222 v=s
223 gosub226
224 gosub228
225 return
226 v=int(v/16)*10+v-int(v/16)*16
227 return
228 v$=str$(v)
229 iflen(v$)=2thenv$=" 0"+right$(v$,1)
230 ifh=>18andm=>0andfl=0andpeek(706)=1thenpoke706,0
231 ifh=>0andm=>0andfl=1andpeek(706)=0then233
232 goto237
233 poke706,1
234 gosub173
235 dx=1
236 ifdy=0thengosub171
237 ur$=ur$+right$(v$,2)
238 return
239 k$=str$(xx)
240 yy=len(k$)
241 k$=right$(k$,yy-1)
242 ifyy=1thenreturn
243 ifyy=2thenk$="00"+k$
244 ifyy=3thenk$="0"+k$
245 return
246 :
247 rem -- dialog beenden (logoff) --------------------------------------------
248 :
249 poke53280,7
250 gosub308
251 gosub616
252 gosub308
253 gosub613
254 gosub1097
255 gosub679
256 gosub309
257 gosub513
258 gosub604
259 gosub268
260 a$=""
261 gosub1123
262 lo=0
263 goto34
264 :
265 rem -- mailbox beenden (direct) -------------------------------------------
266 :
267 printq$"Mailbox beenden"
268 x=peek(828)
269 x=x+1
270 poke828,x
271 :
272 rem -- daten sichern ------------------------------------------------------
273 :
274 gosub421
275 open8,8,2,"@:a-index,s,w"
276 printrl$"Interner Check...."
277 print#8,da$;cr$;str$(an);cr$;str$(nr);cr$;ak$;cr$
278 gosub421
279 open8,8,2,"@:m-index,s,w"
280 fori=1tomx
281 print#8,m$(i)
282 next
283 gosub421
284 return
285 :
286 rem -- control abfrage ----------------------------------------------------
287 :
288 get#1,x$
289 get#2,y$
290 ifx$=""andy$=""and(ex=0orex=2)thenreturn
291 ifx$=xf$ory$=xf$thenex=1:print"xoff":gosub327
292 ifx$=xn$ory$=xn$thenex=0:print"xon":gosub327
293 ifx$=xe$ory$=xe$thenex=2:print"xend":gosub327
294 gosub353
295 goto288
296 :
297 rem -- textausgabe floppy > rs232 -----------------------------------------
298 :
299 gosub421
300 open8,8,0,fi$+",s,r"
301 return
302 print#d,rl$
303 gosub299
304 sys49665
305 gosub308
306 gosub421
307 return
308 print#3," ";:print#d,rl$;:return
309 print#3," ";:print#d,rl$:return
310 :
311 rem -- klingelabfrage & start wenn pb3 = 1 (dez.8) ist --------------------
312 :
313 if(peek(te)and8)=8thenreturn
314 pokete,255-2:rem relais an pb1 einschalten
315 print#d,rl$;
316 tn=225
317 gosub1059
318 goto435
319 :
320 rem -- on/off bell --------------------------------------------------------
321 :
322 be=be+1
323 ifbe=3thenbe=1
324 print#d,"BELL "o$(be);rl$
325 return
326 ifbe=2thenreturn
327 print#d,be$;
328 return
329 :
330 rem -- on/off linefeed ----------------------------------------------------
331 :
332 li=li+1
333 ifli=>3thenli=1
334 ifli=1thenrl$=cr$+li$
335 ifli=2thenrl$=cr$
336 print#d,"LINEFEED "o$(li);rl$
337 return
338 :
339 rem -- detect abfrage an pb4 (dez.16) ist pb4 = 1 dann detect vorhanden ---
340 :
341 ifco=1thenreturn
342 if(peek(te)and16)=0thenreturn
343 ife2>=4then256
344 e1=e1+1
345 ife1>130thene1=0:e2=e2+1:gosub347:e$="":x$=cr$:return
346 return
347 print#d,rl$rl$"BITTE DEN HOERER FESTER IN DEN KOPPLER PRESSEN!";
348 print#d,rl$"Hinw."str$(e2)rl$rl$
349 return
350 :
351 rem -- timeout/timelimit --------------------------------------------------
352 :
353 ifco=1thenreturn
354 gosub342
355 ifga=1andval(ti$)>lmthent=12:gosub1179:goto256
356 t1=t1+1
357 ift1>2000thent1=1000:goto359
358 return
359 ift2=0then256
360 t=11
361 gosub1179
362 fori=1to40
363 print#d,be$;"!";
364 next
365 t2=0
366 e$=""
367 x$=cr$
368 return
369 ifx1>1thenx1=x1+1:ifx1>350thene$="":x$=cr$:goto399
370 goto377
371 :
372 rem -- get schleife 1 -----------------------------------------------------
373 :
374 e$=""
375 gosub326
376 get#2,x$
377 get#2,x$
378 gosub353
379 ifx$=""then382
380 get#1,y$
381 ify$=""then399
382 get#1,x$
383 ifx$=""thenprintchr$(159)"{CBM-P}"chr$(157)chr$(158);:goto369
384 :
385 rem -- interne befehle ----------------------------------------------------
386 :
387 rem -- direct verbindung vom sysop ----------------------------------------
388 ifx$=chr$(133)thentt$=ti$:ce=1:co=1:gosub597:e$="":return
389 rem -- adresse ausgeben vom sysop -----------------------------------------
390 ifx$="{CBM-A}"thengosub1101:goto382
391 rem -- detect abfrage unterdruecken ---------------------------------------
392 ifx$=chr$(136)thenprint"detect ein":co=0:poke49800,240:goto382
393 ifx$=chr$(140)thenprint"detect aus":co=1:poke49800,208:goto382
394 rem -- dialog beenden vom sysop -------------------------------------------
395 ifx$=chr$(178)then250
396 :
397 rem -- string zusammensetzten ---------------------------------------------
398 :
399 x=asc(x$)
400 ifx<>13then406
401 t1=0
402 ll=100
403 gosub308
404 pe=0
405 return
406 ifce=1andx$=xe$thengosub308:return
407 ifx=17orx=19then377
408 ifce=0thenif(x=8orx=20)andlen(e$)>0thene$=left$(e$,len(e$)-1):goto413
409 iflen(e$)=>llthengosub327:goto377
410 ifce=0thenife$=""and(x=8orx=20)thengosub327:goto377
411 ifce=0thene$=e$+x$
412 ifpe=1thenx$=ru$
413 print#d,x$;:goto377
414 :
415 rem -- relative datei oeffnen ---------------------------------------------
416 :
417 gosub421
418 open15,8,15
419 open8,8,2,"user"
420 return
421 close8
422 gosub12
423 return
424 :
425 rem -- recordnummer fuer relative datei -----------------------------------
426 :
427 hb=int(bl/256)
428 lb=bl-hb*256
429 x$=chr$(2)+chr$(lb)+chr$(hb)+chr$(1+re)
430 print#15,"p"+x$
431 return
432 :
433 rem -- anrufer erkannt und start des mailbox dialoges ---------------------
434 :
435 printchr$(147)q$" Start "xn$xn$
436 co=1
437 x1=10
438 fori=1to2000
439 next
440 print#d,rl$rl$rl$"M.C.S.->";
441 get#2,x$,x$
442 gosub374
443 gosub1088
444 co=0
445 x1=0
446 ti$="000000"
447 :
448 rem -- mailbox-menues -----------------------------------------------------
449 :
450 print#d,rl$
451 gosub119
452 gosub1170
453 onmegoto456,458
454 print#d,"- HAUPTMENUE -";
455 gosub460
456 print#d,"- INFO-MENUE -";
457 gosub460
458 print#d,"- MAILBOX-MENUE -";
459 gosub460
460 ifpo=1andct=0thenprint#d," PROFI -";rl$;:ifga=1thenpo=-1:goto450
461 ifpo=1then472
462 :
463 rem -- mailbox-befehle ----------------------------------------------------
464 :
465 print#d,rl$
466 onmegoto469,471
467 print#d,"HELP-MA-IN-UID-SOR-PRO-BE-LF-TI-LOGOFF"rl$;
468 goto472
469 print#d,"HELP-RI-AK-AL-CL-TEL-MA-HM"rl$;
470 goto472
471 print#d,"HELP-NU-UL-UIDA-PME-PML-ME-ML-IN-HM"rl$;
472 print#d,rl$
473 ifga=1thengosub523
474 print#d,c$;
475 gosub374
476 ife$=""then474
477 :
478 rem -- befehle auswerten --------------------------------------------------
479 :
480 x$=left$(e$,2)
481 x=len(e$)
482 ifx>1thensu$=right$(e$,x-2)
483 y$=left$(e$,4)
484 x=len(e$)
485 ifx>3thenz$=right$(e$,x-4)
486 ife$="HELP"ore$="?"thengosub1286:goto450
487 ife$="HM"thenme=0:goto450
488 ife$="IN"thenme=1:goto450
489 ife$="MA"thenme=2:goto450
490 ify$="UID "thengosub804:se=1:goto450
491 ifx$="UL"thengosub744:goto450
492 ife$="NU"thengosub626:goto450
493 ife$="LOGOFF"ore$="ENDE"thenlo=1:goto249
494 ife$="UIDA"thenb$=x1$:gosub529:goto450
495 ife$="PME"thenmf=2:gosub869:goto450
496 ife$="PML"thengosub857:goto450
497 ife$="LF"thengosub309:gosub332:gosub308:goto474
498 ife$="RI"thenfi$="ri":goto511
499 ife$="TI"thengosub308:gosub613:gosub616:gosub308:goto474
500 ife$="ML"thenfi$="message":goto511
501 ife$="ME"thenfb$="n message":mf=1:au$="Oeff. Message":gosub894:goto59
502 ife$="CL"thenfi$="cl":goto511
503 ife$="SOR"thengosub562:goto450
504 ife$="AK"thenfi$="ak":goto511
505 ife$="AL"thenfi$="al":goto511
506 ife$="TEL"thenfi$="tel":goto511
507 ife$="BE"thengosub309:gosub322:gosub308:goto474
508 ife$="PRO"thengosub531:goto450
509 gosub515
510 goto472
511 gosub302
512 goto450
513 print#d,rl$"DFUE END...."rl$;
514 return
515 er=er+1
516 print#d,rl$"?>"e$"<?"rl$;
517 return
518 print#d,rl$"DEIN USER ID IST AKTIV"rl$
519 return
520 :
521 rem -- ausgabe timelimit fuer gaeste --------------------------------------
522 :
523 a1=int(ti/60)
524 a2=int(a1/60)
525 a1=a1-a2*60
526 j$=str$(14-a2)+" m."+str$(59-a1)
527 print#d,rl$"Timelimit :"j$" s."rl$
528 return
529 ifga=0thenae=1:gosub653:ae=0:return
530 goto532
531 ifga=0thenpo=-po:return
532 print#d,rl$"FUNKTION GESPERRT"rl$
533 return
534 :
535 rem -- user suchen im indexfeld und in der relativen datei ----------------
536 :
537 fu=0
538 gosub417
539 ud$=left$(ua$,1)
540 forbl=u%-nr+1tou%
541 re=60
542 ifud$<>chr$(u%(bl))then554
543 gosub427
544 input#8,u$
545 ifu$<>ua$then554
546 if(fx=2orfx=4)andxl=blthen554
547 iffx=2andu$=ua$thenre=0:gosub427:gosub730:fu=1:goto556
548 iffx=4andu$=ua$thenfu=1:goto556
549 re=0
550 gosub427
551 gosub730
552 iffx=1andco$=cx$thenfu=1:goto556
553 iffx=3thenfu=1:goto556
554 next
555 fu=0
556 gosub421
557 re=0
558 return
559 :
560 rem -- benutzer ruft den sysop --------------------------------------------
561 :
562 t=5
563 gosub1179
564 tt$=ti$
565 fori=1to10
566 print#d,ru$;
567 tn=180
568 gosub1059
569 forj=1to100
570 ru=ru+1
571 ifru=30thenru=1:fa=0:gosub115
572 ifru=15thenfa=2:gosub115
573 get#1,x$
574 get#2,y$
575 ifx$=""andy$=""then578
576 ify$=xe$orx$=xe$thenfa=0:gosub115:return
577 ifx$="j"then588
578 next
579 next
580 t=6
581 gosub1179
582 fa=0
583 gosub115
584 return
585 :
586 rem -- user - sysop dialog ------------------------------------------------
587 :
588 t=7
589 gosub1179
590 gosub1170
591 print#d,"-->";
592 fa=0
593 ce=1
594 co=1
595 tt$=ti$
596 gosub115
597 ll=100
598 gosub374
599 ifx$=xe$thenco=0:ce=0:ti$=tt$:return
600 goto597
601 :
602 rem -- check index feld fuer pers. msg ------------------------------------
603 :
604 fori=1tomx
605 ifpp$=m$(i)thenm$(i)="loes"
606 next:return
607 :
608 rem -- ausgabe time/datum/online ------------------------------------------
609 :
610 gosub205
611 te$=left$(ur$,2)+"."+mid$(ur$,3,2)+"."+right$(ur$,2)
612 return
613 gosub610
614 print#d,j$(z)" den "da$" / "te$" Uhr"
615 return
616 m$=mid$(ti$,3,2)
617 se$=right$(ti$,2)
618 gosub308
619 print#d,"Online : "m$" min. und "se$" sec.";rl$;
620 return
621 print#d,rl$"Einen Moment bitte.."rl$
622 return
623 :
624 rem -- neuer user eintrag -------------------------------------------------
625 :
626 ifse=1orfh=>3thengosub532:return
627 ifsp=1thengosub518:return
628 ife2>1orer>3thent=10:gosub1179:return
629 t=8
630 gosub1179
631 print#d,"Wie ist Dein Name >";
632 l=18
633 gosub374
634 iflen(e$)>0thenx1$=e$
635 a$=left$(e$,1)
636 fori=1to64
637 ife$=""ora$=chr$(i)thenx1$=b$:return
638 next
639 ub$=e$
640 print#d,"Von wo rufst Du an >";
641 l=18
642 gosub374
643 iflen(e$)>0thenx2$=e$
644 print#d,"Dein Rechnersystem >";
645 l=10
646 gosub374
647 iflen(e$)>0thenx3$=e$
648 gb=1
649 print#d,"Dein Pers.Passwort >";
650 l=10
651 gosub374
652 iflen(e$)>0thenx4$=e$
653 gosub309
654 ifgb=0andsp=0thengosub532:gb=0:return
655 :
656 rem -- user daten aendern -------------------------------------------------
657 :
658 print#d,"Name >"ub$;rl$;
659 print#d,"Stadt >"x2$;rl$;
660 print#d,"System >"x3$;rl$;
661 print#d,"Passw. >"x4$;rl$;
662 print#d,rl$"Fertig/Ok J/Y/N >";
663 gosub374
664 ife$=""ore$="Y"ore$="J"then712
665 ife$<>"N"thengosub677:goto662
666 print#d,rl$"Korrektur J/Y/N >";
667 gosub374
668 ife$="Y"ore$="J"thengosub308:goto631
669 ife$="N"then712
670 gosub677
671 goto666
672 un$=x1$
673 st$=x2$
674 rs$=x3$
675 co$=x4$
676 return
677 print#d,rl$"'J'a / 'Y'es oder/or 'N'o !!"rl$;
678 return
679 ifx1$=""orx2$=""orx3$=""orx4$=""ore2>3thenreturn
680 iflo=1andxl>0thenbl=xl:gosub672:gosub417:gosub708:return
681 goto700
682 gosub610
683 u$=left$(left$(da$,6)+right$(da$,2),8)+te$
684 xy=1
685 xx=sr
686 gosub239
687 u$=u$+" "+k$
688 xx=li
689 gosub239
690 u$=u$+k$
691 xx=po+1
692 gosub239
693 u$=u$+k$
694 xx=be
695 gosub239
696 u$=u$+k$+left$(st$+s$,19)
697 xy=0
698 u$=u$+left$(rs$+s$,10)+left$(co$+s$,10)+left$(un$+s$,19)
699 return
700 gosub417
701 nr=nr+1
702 ifnr>u%thennr=u%
703 bl=u%-nr+1
704 un$=x1$
705 st$=x2$
706 rs$=x3$
707 co$=x4$
708 gosub682
709 gosub427
710 print#8,u$
711 return
712 ifsp=0andae=0then716
713 ifsp=1andae=0thenreturn
714 ifsp=1andae=1then716
715 return
716 gosub621
717 print#d,rl$;
718 ua$=left$(x1$+s$,19)
719 cx$=left$(x4$+s$,10)
720 ifx1$=""orx2$=""orx3$=""orx4$=""then682
721 fx=4
722 gosub537
723 ifae=1andfu=0thenprint#d,rl$"OK Daten geaendert"rl$:gosub1054:ae=0:return
724 ifae=0andfu=0thent=9:gosub1179:sp=1:return
725 print#d,rl$"Dieser Name ist leider schon belegt !"rl$
726 x1$=b$
727 ub$=uc$
728 gosub1054
729 goto658
730 input#8,u$
731 d$=left$(u$,8)
732 i$=mid$(u$,9,8)
733 s1=val(mid$(u$,19,1))
734 s2=val(mid$(u$,20,1))-1
735 s3=val(mid$(u$,21,1))
736 rs$=mid$(u$,41,10)
737 s4=val(mid$(u$,18,1))
738 st$=mid$(u$,22,19)
739 co$=mid$(u$,51,10)
740 un$=mid$(u$,61,19)
741 return
742 rem -- userliste anzeigen -------------------------------------------------
743 :
744 z$=left$(su$,1)
745 print#d,rl$"Eingetragene user bei M.C.S."rl$
746 gosub417
747 su=0
748 re=0
749 w$=""
750 v=len(su$)
751 o$=mid$(su$,3,v)
752 ua$=left$(o$+s$,19)
753 ifsp=0thenprint#d,rl$"Die Ausgabe ist fuer Gaeste begrenzt"rl$:goto755
754 ifz$="A"thenprint#d,rl$"Anzahl User zur Zeit : "nr$;rl$;:goto766
755 w=0
756 w$=right$(su$,1)
757 ifsp=0thenz$="N":ss=1:su$="":goto760
758 ss=len(su$)
759 ifz$=""thena$="Alle "+nr$+" User anzeigen ":goto768
760 ifz$="N"andss=1thena$="Nach namen suchen":su=1:l=18:re=60:goto768
761 ifz$="N"andw$<>"*"andss>1thenprint#d,"Nach Namen suchen"rl$:w$="/":goto773
762 ifz$="N"andw$="*"andss>1thena$="Nach Namen suchen":su=1:l=18:goto768
763 ifz$="D"andss>1thena$="Nach Datum suchen":su=2:l=8:goto768
764 ifz$="R"andss>1thena$="Nach Rechner suchen":su=3:l=10:goto768
765 ifz$="S"andss>1thena$="Nach Stadt suchen":su=4:l=18:goto768
766 gosub421
767 return
768 ifz$="N"andw$="*"theno$=left$(o$,len(o$)-1)
769 v=len(o$)
770 ifv>lthengosub421:w$=""
771 ifss<>1thenprint#d,rl$a$rl$:goto773
772 goto777
773 print#d,"User -------------- System ------------ Stadt ------------- Datum"
774 print#d,rl$
775 ifw$="/"thenfx=3:gosub537:iffu=0thent=13:gosub1179:return
776 ifw$="/"andfu=1thenus$=u$:re=0:ss=0:goto787
777 forbl=u%-nr+1tou%
778 gosub427
779 input#8,us$
780 gosub288
781 ifex=2then795
782 ifsu=1andmid$(us$,61,v)<>o$then796
783 ifsu=2andleft$(us$,v)<>o$then796
784 ifsu=3andmid$(us$,41,v)<>o$then796
785 ifsu=4andmid$(us$,22,v)<>o$then796
786 ifre>0thenprint#d,us$;:ifsp=0thensu=0
787 ifre=0thenprint#d,mid$(us$,61,19);
788 ifw<3andre>0thenprint#d," ";
789 ifss=1then791
790 print#d," "mid$(us$,41,10)" "mid$(us$,22,19)" "left$(us$,8);
791 ifss<>1thenprint#d,rl$;
792 ifw$="/"thenprint#d,rl$;:return
793 gosub288
794 ifss=1thenw=w+1:ifw=4thenw=0:a$="":print#d,rl$;
795 ifex=2thenex=0:gosub421:re=0:print#d,rl$:return
796 t1=0
797 next
798 re=0
799 gosub421
800 return
801 :
802 rem -- user id (uid) pruefen ----------------------------------------------
803 :
804 iffh=3thengosub532:return
805 ifsp=1thengosub518:return
806 y=0
807 x=len(z$)
808 ifz$=""then450
809 fori=1tox
810 ify=0andmid$(z$,i,1)=","theny=i:e$=right$(z$,x-i):goto813
811 next
812 ify=0theny=20
813 ua$=left$(z$,y-1)
814 ub$=ua$
815 ua$=left$(ua$+s$,19)
816 uc$=ub$
817 ify<>20then823
818 print#d,rl$"PASSWORT >";
819 pe=1
820 gosub374
821 pe=0
822 ife$=""thenreturn
823 cx$=left$(e$+s$,10)
824 gosub621
825 sp=0
826 ga=1
827 fx=1
828 gosub537
829 iffu=1then833
830 print#d,rl$"Unbekannter Name/Passwort"rl$
831 fh=fh+1
832 return
833 gosub309
834 sp=1
835 gosub1076
836 print#d,rl$"Dein letzter Anruf erfolgte"rl$;
837 xl=bl
838 print#d,"am "d$" um "i$;rl$;
839 li=s1
840 po=s2
841 be=s3
842 ga=0
843 sw=0
844 gosub324
845 gosub334
846 pp$=un$+co$
847 x1$=un$
848 x2$=st$
849 x3$=rs$
850 x4$=co$
851 gosub857
852 gosub1054
853 return
854 :
855 rem -- check pers. message ------------------------------------------------
856 :
857 fori=1tomx
858 ifpp$=m$(i)thensw=1:gosub863
859 next
860 ifsw=0thenprint#d,rl$"Keine Pers. Message fuer Dich vorhanden"rl$
861 ifsw=1thenprint#d,rl$"Das waren alle pers. Message fuer dich"rl$
862 return
863 print#d,rl$"Pers. Message fuer Dich.."
864 fi$="p"+str$(i)
865 gosub302
866 return
867 rem -- eingabe pers. message ----------------------------------------------
868 :
869 fori=1tomx
870 ifm$(i)="loes"then875
871 next
872 t=1
873 gosub1179
874 return
875 gosub308
876 ifpo=-1thent=2:gosub1179
877 print#d,"Pers. MSG fuer >";
878 gosub374
879 ife$=""thenreturn
880 au$=e$
881 ua$=left$(e$+s$,19)
882 ok=0
883 gosub621
884 fx=2
885 gosub537
886 iffu=0thengosub309:t=13:gosub1179:goto877
887 ok=1
888 p$=un$+co$
889 gosub421
890 goto895
891 :
892 rem -- text editor --------------------------------------------------------
893 :
894 ifpeek(830+mf)>3thent=4:gosub1179:return
895 yz=0
896 gosub308
897 tz=1
898 fori=1to40
899 te$(i)=""
900 next
901 ty=1
902 ifpo=-1thent=3:gosub1179
903 print#d,rl$"- TEXT-EDITOR -"rl$
904 print#d,"Deine Eingabe fuer "au$rl$
905 eo=0
906 ongagosub523
907 print#d,rl$"HELP-E-A-L-SP-ECHO ("o$(eo+1)")-MA"rl$
908 gosub119
909 iftz<yzthentz=sz
910 print#d,rl$c$;
911 gosub374
912 ife$=""then910
913 ee$=left$(e$,1)
914 lx=val(right$(e$,len(e$)-1))
915 ife$="?"or"HELP"=e$thent=14:gosub1179:goto908
916 ifee$="A"thengosub960:goto907
917 ife$="ECHO"then924
918 ifee$="L"thengosub974:gosub308:goto907
919 ifee$="E"thenontygoto927,996
920 ife$="MA"thenog=2:goto1004
921 ife$="SP"thenog=1:goto1004
922 gosub515
923 goto910
924 eo=eo+1
925 ifeo=2theneo=0
926 goto907
927 gosub122
928 print#d,rl$;
929 xz=tz
930 ty=2
931 ifeo=0thengosub955
932 e$=""
933 iftz=>41thentz=40:goto907
934 gosub341
935 get#2,x$
936 ifx$=""then938
937 goto940
938 get#1,x$
939 ifx$=""thenprintchr$(159)"_"chr$(157)chr$(158);:goto934
940 x=asc(x$)
941 ifx=24orx=27thengosub309:gosub308:goto905
942 ifx=17orx=19then934
943 if(x=8orx=20)andlen(e$)>0thene$=left$(e$,len(e$)-1):goto949
944 iflen(e$)=>70thengosub327:iflen(e$)=>79thengosub308:goto951
945 iflen(e$)<1and(x=8orx=20)thengosub327:goto934
946 ifx=13then951
947 e$=e$+x$
948 ifeo=1thenprintx$;
949 ifeo=0thenprint#d,x$;
950 goto934
951 ife$="..."ore$="END"thenprint#d,rl$:eo=0:goto905
952 te$(tz)=e$
953 tz=tz+1
954 goto927
955 a$=str$(xz)
956 a=len(a$)
957 ifa=2thena$=mid$(a$,2,1):print#d,"0"+a$+">";
958 ifa=3thenprint#d,mid$(a$,2,2)+">";
959 return
960 print#d,rl$
961 iflx=0then967
962 iflx<0orlx>40thenreturn
963 xz=lx
964 gosub971
965 print#d,rl$
966 return
967 forxz=1totz
968 gosub971
969 next
970 return
971 gosub955
972 print#d,te$(xz);rl$;
973 return
974 print#d,rl$"Loeschen ? >";
975 gosub374
976 ife$=""then974
977 ife$<>"J"ande$<>"Y"thenreturn
978 iflx=0then983
979 iflx<0orlx>40thenreturn
980 i=lx
981 goto991
982 return
983 fori=1totz
984 gosub994
985 next
986 print#d,rl$"Alle Zeilen geloescht"rl$
987 tz=1
988 yz=1
989 sz=1
990 goto993
991 gosub994
992 print#d,rl$"Zeile"+str$(i)" geloescht"rl$
993 return
994 te$(i)=""
995 return
996 sw=sw+1
997 ifsw=1thenx=0
998 yz=tz
999 iflx=0thenyz=0:tz=1:goto927
1000 iflx<0orlx>40then910
1001 sz=tz
1002 tz=lx
1003 goto927
1004 lx=0
1005 fori=1totz
1006 lx=lx+len(te$(i))
1007 next
1008 iflx>10thenonoggoto1016,1011
1009 a$="Kein Text zum Abspeichern vorhanden !"
1010 goto1013
1011 a$="Dein Text ist noch im Editor !"
1012 og=0
1013 ifog=2then450
1014 print#d,rl$a$rl$
1015 goto908
1016 gosub621
1017 gosub610
1018 ak$=da$+" / "+left$(te$,5)
1019 bk$=cr$+ub$+" / "+ak$+cr$+cr$
1020 gosub421
1021 ifok=1then1042
1022 x=peek(830+mf)
1023 x=x+1
1024 poke830+mf,x
1025 fi$="@:"+fb$+",s,w"
1026 ifx>1thenfi$=fb$+",s,a"
1027 gosub12
1028 gosub1118
1029 open8,8,2,fi$
1030 bc$=cr$+cr$+"-NEXT-"+cr$+chr$(14)+cr$
1031 print#8,bk$;
1032 forj=1totz
1033 print#8,te$(j)
1034 next
1035 print#8,bc$;
1036 close8
1037 gosub1106
1038 print#d,rl$"Dein MSG wurde abgespeichert"rl$;
1039 ifok=1thenok=0:gosub308:return
1040 print#d,"und ist beim naechsten Anruf abrufbar"rl$
1041 goto450
1042 fori=1tomx
1043 ifm$(i)=p$thenfa$="p":fb$=",s,a":goto1049
1044 next
1045 fori=1tomx
1046 ifm$(i)="loes"thenm$(i)=p$:fa$="@:p":fb$=",s,w":goto1049
1047 next
1048 goto869
1049 gosub12
1050 gosub1118
1051 open8,8,2,fa$+str$(i)+fb$
1052 goto1031
1053 rem -- user erkannt und anzeigen -----------------------------------------
1054 ux$=ub$
1055 gosub309
1056 c$=ux$+"->"
1057 return
1058 rem -- ton ausgabe -------------------------------------------------------
1059 pokesi,tn
1060 pokesi+1,tn
1061 pokesi+5,11
1062 pokesi+6,10
1063 pokesi+24,15
1064 pokesi+7,tn+3
1065 pokesi+8,tn+3
1066 pokesi+12,10
1067 pokesi+13,11
1068 pokesi+4,32
1069 pokesi+4,33
1070 pokesi+11,32
1071 pokesi+11,33
1072 return
1073 :
1074 rem -- begruessung des erkannten users -----------------------------------
1075 :
1076 gosub205
1077 a$="Hallo"
1078 tt=val(ur$)
1079 iftt>1andtt<90000thena$="Guten Morgen"
1080 iftt>90000andtt<180000thena$="Guten Tag"
1081 iftt>190000andtt<235959thena$="Guten Abend"
1082 iftt>120000andtt<140000thena$="Mahlzeit"
1083 print#d,rl$rl$a$" "ub$;rl$;
1084 return
1085 :
1086 rem -- mailbox begruessung (start) ---------------------------------------
1087 :
1088 gosub308
1089 gosub205
1090 te$=left$(ur$,2)+":"+mid$(ur$,3,2)
1091 ife$="*"thend=3:goto1094
1092 ife$="."then1094
1093 fi$="bild":gosub302
1094 print#d,rl$"Du bist der "+an$". Anrufer"
1095 print#d,"am "da$" um "te$" Uhr"rl$;
1096 return
1097 print#d,rl$"Tschuess and Bye bye "ux$rl$;
1098 print#d,rl$rl$"Bis zum naechsten mal"rl$
1099 return
1100 rem -- adresse vom sysop (m.c.s........) ---------------------------------
1101 print#d,rl$"[THW]"rl$;
1102 print#d,"2000 Hamburg 70"rl$;
1103 print#d,"Auf dem Koenigslande 43"rl$
1104 return
1105 rem -- fehler abfrage floppy ---------------------------------------------
1106 input#15,e,ee$,ex1,ex2
1107 ife<1thenreturn
1108 printxn$"FLOPPY ERROR";e;ee$;ex1;ex2
1109 fori=1to50
1110 ifi>25thentn=100:fa=2:gosub115:gosub1059
1111 ifi<25thentn=70:fa=10:gosub115:gosub1059
1112 next
1113 getx$
1114 ifx$=""then1109
1115 ifx$="w"thenreturn
1116 ifx$="s"thenend
1117 goto1109
1118 close15
1119 open15,8,15:return
1120 :
1121 rem -- text in message einbinden (autoupdate) ----------------------------
1122 :
1123 printchr$(147)xn$"Checking Update"xn$
1124 gosub12
1125 fa$="message"
1126 fori=0to3
1127 ifpeek(830+i)=0thennext:return
1128 gosub12
1129 open15,8,15,"v"
1130 print"Validate"xn$xn$
1131 gosub1106
1132 close15
1133 poke828,0
1134 open15,8,15,"r:"+fa$+"r"+"="+fa$
1135 gosub1106
1136 close15
1137 q=0
1138 e$=""
1139 cx=0
1140 open15,8,15,"r:"+fa$+"=n "+fa$
1141 gosub1106
1142 close15
1143 open5,8,6,fa$+",s,a"
1144 open8,8,0,fa$+"r,s,r"
1145 sr=st
1146 ifsr>0then1159
1147 get#8,x$
1148 ifx$=""then1145
1149 ifx$=cr$then1152
1150 e$=e$+x$
1151 goto1145
1152 q=q+len(e$)
1153 printchr$(145)"Message file "right$(" "+str$(q),6)
1154 ifq>17000then1159
1155 ifq>15000ande$="-NEXT-"then1159
1156 print#5,e$;chr$(13);
1157 e$=""
1158 goto1145
1159 print#5,"-END-";cr$;
1160 close5
1161 close8
1162 open15,8,15
1163 gosub1106
1164 close15
1165 open15,8,15,"s:n "+fa$+","+fa$+"r"
1166 close15
1167 next
1168 return
1169 rem -- ton ausschalten ---------------------------------------------------
1170 pokesi,0
1171 pokesi+1,0
1172 pokesi+7,0
1173 pokesi+8,0
1174 pokesi+24,0
1175 return
1176 :
1177 rem -- mailbox texte -----------------------------------------------------
1178 :
1179 print#d,rl$
1180 cmdd
1181 ontgoto1186,1191,1194,1199,1204,1208,1214
1182 ift>7thent=t-7
1183 ontgoto1218,1227,1236,1245,1256,1266,1278
1184 print#2,rl$
1185 return
1186 print"Es koennen zur Zeit keine pers. MSG"rl$;
1187 print"abgespeichert werden !"rl$;
1188 print"Bitte nimm den Oeffendlichen Teil."rl$;
1189 print"Das System"rl$
1190 return
1191 print"**** Persoenliche Message eingabe ****"rl$;
1192 print"Bitte den Namen des Users angeben"rl$
1193 return
1194 print"Maximal 40 Zeilen a'80 Zeichen"rl$;
1195 print"Eingabe mit 'E' oder mit 'W' beginnen"rl$;
1196 print"Mit Ctrl/X / ESC / END oder mit ..."rl$;
1197 print"kann die eingabe abgebrochen werden."rl$
1198 return
1199 print"Der Updatespeicher ist voll!"rl$;
1200 print"Neue Texte koennen erst beim"rl$;
1201 print"naechsten Anruf angenommen werden."rl$;
1202 print"Das System"rl$
1203 return
1204 print"SYSTEM OPERATER RUFEN"rl$;
1205 print"BITTE WARTEN ODER MIT Ctrl/X ABBRECHEN"rl$;
1206 print".......... <END"rl$;
1207 return
1208 print"SORRY ER IST ZUR ZEIT NICHT ANWESEND."rl$;
1209 print"VERSUCH ES BITTE SPAETER NOCH MAL ODER"rl$;
1210 print"HINTERLASSE EINE PERS. MESSAGE UNTER"rl$;
1211 print">>>>> *SYSOP oder [THW] <<<<<"rl$;
1212 print"Das System."rl$
1213 return
1214 print"Hurra ...... Er ist anwesend !!"rl$;
1215 print"Zum Menue kommst wieder mit Ctrl/X"rl$;
1216 print"wenn Du mit dem Gespraech fertig bist."rl$
1217 return
1218 print"Du hast die moeglichkeit dich hier"rl$;
1219 print"einzutragen um Mitbenutzter der"rl$;
1220 print"M.C.S. - BOX zu werden."rl$;
1221 print"Alle Angaben erfolgen freiwillig"rl$;
1222 print"und werden nicht weiter verwendet."rl$;
1223 print"Bitte achte auf Uebertragungsfehler und"rl$;
1224 print"BITTE nur ernstgemeinte Eintragungen"rl$;
1225 print"vornehmen !!"rl$
1226 return
1227 print"Ok. Wenn Du die Box spaeter mit LOGOFF"rl$;
1228 print"verlaesst wird der Rechner Dich in die"rl$;
1229 print"Userliste eintragen."rl$;
1230 print"Beim naechsten Anruf von Dir musst"rl$;
1231 print"Du dich bitte mit UID Name und Deinem"rl$;
1232 print"Passwort einloggen damit Du Deine Pers."rl$;
1233 print"Message lesen kannst."rl$;
1234 print"Das System."rl$
1235 return
1236 print"Du hast zu viele Uebertragungsfehler"rl$;
1237 print"Aus Sicherheitsgruenden die Dir"rl$;
1238 print"sicherlich einleuchten muss ich"rl$;
1239 print"Dir leider die Funktion sperren."rl$;
1240 print"Versuch es bitte noch mal mit einer"rl$;
1241 print"besseren Telefonleitung oder"rl$;
1242 print"ueberpruefe Deinen Koppler einmal."rl$;
1243 print"Das System."rl$
1244 return
1245 print"IST DAS HIER SO LANGWEILIG DAS DU HIER"rl$;
1246 print"EINPENNST ????"rl$;
1247 print"Wenn ich von Dir weiter nichts hoeren"rl$;
1248 print"sollte sehe ich mich gezwungen die"rl$;
1249 print"Verbindung von meiner Seite zu Unter-"rl$;
1250 print"brechen."rl$;
1251 print"Schliesslich wollen auch andere in die Box."rl$;
1252 print"ALSO KOMM IN DIE HUFEN !!!!"rl$;
1253 print"DAS WAR DIE ALLERLETZTE WARNUNG !!"rl$;
1254 print"Das System."rl$
1255 return
1256 print"TIMEOUT PERIOD EXPIRED"rl$;
1257 print"----------------------"rl$;
1258 print"Du hast leider Dein Zeitlimit ueber-"rl$;
1259 print"schritten !!!!!!"rl$;
1260 print"Habe bitte verstaendnis dafuer das ich"rl$;
1261 print"die Verbindung von meiner Seite ab-"rl$;
1262 print"breche um auch anderen Usern die Gele-"rl$;
1263 print"genheit zu geben hier anzurufen."rl$;
1264 print"So long...... Das System."rl$
1265 return
1266 print"Sorry dieser User ist so bei mir nicht"rl$;
1267 print"eingetragen."rl$;
1268 print"Suche doch mal mit dem Befehl ULN NAME*"rl$;
1269 print"im MAILBOXMENUE nach dem User aber gib"rl$;
1270 print"nur die Anfangs Buchstaben und '*'"rl$;
1271 print"(Joker) an."rl$;
1272 print"Sollte er immer noch nicht gefunden"rl$;
1273 print"werden so ist dieser User noch nicht"rl$;
1274 print"bei mir eingetragen."rl$;
1275 print"Das System."rl$
1276 return
1277 rem -- helplisten --------------------------------------------------------
1278 print"Exx Eingabe"rl$;
1279 print"Axx Anzeigen"rl$;
1280 print"Lxx Loeschen"rl$;
1281 print"xx Zeile"rl$;
1282 print"SP Speichern"rl$;
1283 print"ECHO "+o$(eo+1)rl$;
1284 print"MA Mailboxmenue"rl$
1285 return
1286 print#d,rl$
1287 cmdd
1288 onmegoto1321,1302
1289 rem -- help hauptmenue ---------------------------------------------------
1290 print"Help gibt diese Liste aus"rl$;
1291 print"MA Mailbox-menue"rl$;
1292 print"IN Info-menue"rl$;
1293 print"UID User ID"rl$;
1294 print"SOR System Operater rufen"rl$;
1295 print"PRO Profiumschaltung"rl$;
1296 print"BE Bell on/off"rl$;
1297 print"LF Linefeed on/off"rl$;
1298 print"TI Time/Datum/Online"rl$;
1299 print"LOGOFF Verbindung beenden"rl$;
1300 print#d:return
1301 rem -- help mailboxmenue -------------------------------------------------
1302 print"Help gibt diese Liste aus"rl$;
1303 print"NU Neuer User eintrag"rl$;
1304 print"UL Userliste gesammt"rl$;
1305 print"ULA Anzahl User"rl$;
1306 print"ULN Nur Namen anzeigen"rl$;
1307 print"ULN .... Nach Namen suchen"rl$;
1308 print"ULN ...* mit Joker"rl$;
1309 print"ULS .... Nach Stadt suchen"rl$;
1310 print"ULR .... Nach Rechner suchen"rl$;
1311 print"ULD .... Nach Datum suchen"rl$;
1312 print"UIDA User Daten aendern"rl$;
1313 print"PME Pers. Message eingabe"rl$;
1314 print"PML Pers. Message lesen"rl$;
1315 print"ME Message eingabe"rl$;
1316 print"ML Message lesen"rl$;
1317 print"IN Infomenue"rl$;
1318 print"HM Hauptmenue"rl$;
1319 print#d:return
1320 rem -- help infomenue ----------------------------------------------------
1321 print"Help gibt diese Liste aus"rl$;
1322 print"RI Rechner Info"rl$;
1323 print"AK Aktuelles"rl$;
1324 print"AL Allgemeines"rl$;
1325 print"CL Clubinfos"rl$;
1326 print"MA Mailboxmenue"rl$;
1327 print"HM Hauptmenue"rl$;
1328 print#d:return
1 rem *************************************************************************
2 rem ************************** datei / sort / copy **************************
3 rem ***************************** mailbox v3.0 *****************************
4 rem ************************* (c) 1985 by m.c.s. ***************************
5 rem *************************************************************************
6 poke53280,0
7 poke53281,0
8 dimu$(400):x=17
9 c$=chr$(x)+chr$(x)+chr$(x)+chr$(x)+chr$(x)
10 c$=chr$(19)+c$+c$
11 print"Einen Augenblick bitte"chr$(14)
12 gosub226
13 printchr$(147)chr$(158)"Datei/Sort/Copy V3.0 M.C.S."
14 printchr$(x)chr$(x)"Rel > Seq [1]
15 printchr$(x)"Seq > Rel [2]
16 printchr$(x)"Datei anlegen [3]
17 printchr$(x)"End [4]
18 printc$
19 ifa<10thenprint"Bitte ----> [ ]";
20 ifa>10thenprint"Bitte ----> [?]";
21 a=a+1
22 ifa>20thena=0
23 geta$
24 ifa$=""then18
25 printchr$(157)chr$(157)a$
26 onval(a$)goto36,80,116,115,212
27 run
28 printchr$(x)chr$(x)"Anzahl User > ";nr;
29 printchr$(157)chr$(157)chr$(157)chr$(157);
30 inputan
31 return
32 hb=int(bl/256)
33 lb=bl-hb*256
34 print#15,"p"+chr$(2)+chr$(lb)+chr$(hb)+chr$(1)
35 return
36 gosub198
37 gosub28
38 open15,8,15
39 open8,8,2,"user"
40 printchr$(147)
41 forbl=400-an+1to400
42 gosub32
43 l=an+bl-400
44 input#8,u$(l)
45 u$=mid$(u$(l),61,4)
46 printchr$(19)u$
47 printchr$(x)u$(l)
48 u$(l)=u$+u$(l)
49 next
50 close8
51 close15
52 printchr$(147)"Sortieren"
53 !,an,u$(1)
54 fori=1toan
55 u$(i)=right$(u$(i),79)
56 next
57 printchr$(147)chr$(x)"Fertig"
58 gosub212
59 an=nr
60 printchr$(x)"Bitte Diskette wechseln"
61 printchr$(x)"Wenn auf einer Neuen Datendiskette als"
62 print"Relativ dann nur Return"
63 printchr$(x)"Als Sequenzeles File OK eingeben"
64 printchr$(x)"Bitte Waehl RE ";
65 printchr$(157)chr$(157)chr$(157)chr$(157)chr$(157);
66 inputa$
67 ifa$="RE"then99
68 ifa$<>"ok"then60
69 open1,8,2,"@:user sortiert,s,w"
70 printchr$(147)"Speichern"
71 fori=1toan
72 print#1,u$(i)
73 printchr$(19)chr$(x)chr$(x)u$(i)
74 next
75 print#1,"end"
76 close1
77 printchr$(x)"Das editierte File mit dem Namen"
78 print"'user fertig' abspeichern."
79 run
80 printchr$(147)"File laden"
81 an=0
82 printchr$(x)chr$(x)"Filename ";
83 inputa$
84 iflen(a$)>16orlen(a$)<1then80
85 open1,8,0,a$+",s,r"
86 sr=st
87 ifsr>0then94
88 input#1,e$
89 ife$="end"then94
90 an=an+1
91 u$(an)=e$
92 printchr$(147)an
93 goto86
94 printchr$(x)"Fertig"
95 close1
96 printchr$(x)"Bitte Diskette wechseln und Return";
97 geta$
98 ifa$<>chr$(13)then97
99 open15,8,15
100 open8,8,2,"user"
101 printchr$(147)
102 forbl=400-an+1to400
103 gosub32
104 l=an+bl-400
105 printchr$(19)l
106 print#8,u$(l)
107 printchr$(x)u$(l)
108 next
109 close15
110 close8
111 printchr$(147)chr$(x)"Anzahl User jetzt >"an
112 nr=an
113 gosub203
114 run
115 sys64738
116 printchr$(147)chr$(x)"Mailboxdatei anlegen"
117 printchr$(x)"Bitte neue Diskette einlegen"
118 printchr$(x)chr$(x)"Compl. Datei [1]
119 printchr$(x)"Nur Rel. Datei [2]
120 printchr$(x)"Return [3]
121 printc$chr$(x)
122 ifa<10thenprint"Bitte ----> [ ]";
123 ifa>10thenprint"Bitte ----> [?]";
124 a=a+1
125 ifa>20thena=0
126 geta$
127 ifa$=""then121
128 printchr$(157)chr$(157)a$
129 ifa$="1"thenx=0:goto133
130 ifa$="2"thenx=1:goto133
131 ifa$="3"thenrun
132 goto116
133 printchr$(147)chr$(x)"Diskette Formatieren"
134 open15,8,15,"n:datendisk m.m.d.,v3"
135 close15
136 printchr$(x)"Relatives File fuer User"
137 rn=400
138 hb=int(rn/256)
139 lb=rn-hb*256
140 open1,8,2,"user,l,"+chr$(80)
141 open15,8,15
142 print#15,"p"+chr$(2)+chr$(lb)+chr$(hb)+chr$(1)
143 print#1,chr$(255)
144 print#15,"p"+chr$(2)+chr$(144)+chr$(1)+chr$(1)
145 a$="01.06.8500.00.00 0000HAMBURG SX-64 MASTER [THW] "
146 print#1,left$(a$+" ",79)
147 close1
148 close15
149 ifx=1thenrun
150 print"{down}Index Feld fuer pers. Message"
151 open1,8,2,"m-index,s,w"
152 fori=1to50
153 print#1,"loes"
154 next
155 close1
156 print"Index Feld fuer Allgemeines"
157 open1,8,2,"a-index,s,w"
158 print#1,"01.06.85"
159 print#1,"1"
160 print#1,"1"
161 print#1,"01.06.85 / 00.00"
162 close1
163 print"File fuer Titelbild"
164 open1,8,2,"bild,s,w"
165 print#1,"Master-Control-System"
166 close1
167 print"File fuer Message"
168 open1,8,2,"message,s,w"
169 print#1,"-NEXT-"
170 close1
171 print"File fuer Allgemeines"
172 open1,8,2,"al,s,w"
173 print#1,"leer"
174 close1
175 print"File fuer Rechnerinfo"
176 open1,8,2,"ri,s,w"
177 print#1,"leer"
178 close1
179 print"File fuer Telefon"
180 open1,8,2,"tel,s,w"
181 print#1,"leer"
182 close1
183 print"File fuer Clubs"
184 open1,8,2,"cl,s,w"
185 print#1,"leer"
186 close1
187 print"File fuer Aktuelles"
188 open1,8,2,"ak,s,w"
189 print#1,"leer"
190 close1
191 print"Files fuer pers. Message"
192 fori=1to50
193 open1,8,2,"p"+str$(i)+",s,w"
194 close1
195 next
196 printchr$(x)"Fertig"
197 run
198 open1,8,0,"a-index,s,r"
199 input#1,da$,an$,nr$,ak$
200 close1
201 nr=val(nr$)
202 return
203 open1,8,2,"@:a-index,s,w"
204 nr$=str$(nr)
205 c$=chr$(13)
206 print#1,da$
207 print#1,an$
208 print#1,nr$
209 print#1,ak$
210 close1
211 return
212 ax=0
213 ax=ax+1
214 printu$(ax)
215 ifax>nrthenreturn
216 print"uebernehmen J "chr$(157)chr$(157)chr$(157)chr$(157)chr$(157)chr$(157);
217 inputa$
218 ifa$="J"then213
219 ifa$="s"thenreturn
220 ifa$<>"n"then216
221 fori=axtonr
222 u$(i)=u$(i+1)
223 next
224 nr=nr-1
225 goto213
226 ifpeek(52286)=169thenreturn
227 xx=0
228 fori=52286to53131
229 reada
230 pokei,a
231 xx=xx+a
232 next
233 ifxx=128958then236
234 print"data-fehler!"
235 stop
236 sys52286
237 return
238 data169,73,141,8,3,169,204,141,9
239 data3,96,32,115,0,201,33,240,6,32
240 data121,0,76,231,167,32,115,0,234,234
241 data234,234,234,32,100,204,76,174
242 data167,32,253,174,32,158,173,32
243 data247,183,165,20,141,152,207,165
244 data21,141,153,207,32,253,174,32
245 data158,173,56,165,71,233,3,133,75
246 data165,72,233,0,133,76,162,1,173
247 data152,207,157,160,207,173,153,207
248 data157,180,207,169,1,157,200,207
249 data169,0,157,220,207,189,200,207
250 data141,156,207,189,220,207,141,157
251 data207,189,160,207,141,158,207,189
252 data180,207,141,159,207,32,47,207
253 data173,151,207,48,4,202,208,221
254 data96,189,200,207,141,156,207,189
255 data220,207,141,157,207,169,1,141
256 data158,207,169,0,141,159,207,32,101
257 data207,189,160,207,141,158,207,141
258 data154,207,189,180,207,141,159,207
259 data141,155,207,32,47,207,173,151
260 data207,48,3,76,167,205,32,131,207
261 data173,156,207,141,143,207,173,157
262 data207,141,144,207,173,154,207,141
263 data145,207,173,155,207,141,146,207
264 data32,132,206,32,180,206,173,151
265 data207,48,218,173,156,207,141,143
266 data207,173,157,207,141,144,207,173
267 data158,207,141,156,207,173,159,207
268 data141,157,207,169,1,141,158,207
269 data169,0,141,159,207,32,101,207,173
270 data156,207,141,158,207,173,157,207
271 data141,159,207,173,143,207,141,156
272 data207,173,144,207,141,157,207,32
273 data47,207,173,151,207,16,35,173
274 data154,207,141,143,207,173,155,207
275 data141,144,207,173,158,207,141,145
276 data207,173,159,207,141,146,207,32
277 data132,206,32,180,206,173,151,207
278 data48,152,32,47,207,173,151,207
279 data16,18,173,156,207,141,143,207
280 data173,157,207,141,144,207,32,132
281 data206,32,31,207,76,241,204,234
282 data189,160,207,141,143,207,189,180
283 data207,141,144,207,173,156,207,141
284 data145,207,173,157,207,141,146,207
285 data32,132,206,32,31,207,173,156
286 data207,141,158,207,141,143,207,173
287 data157,207,141,159,207,141,144,207
288 data32,81,207,189,160,207,141,158
289 data207,189,180,207,141,159,207,32
290 data101,207,173,151,207,48,15,189
291 data200,207,141,158,207,189,220,207
292 data141,159,207,32,101,207,169,1
293 data141,158,207,169,0,141,159,207
294 data173,143,207,141,156,207,173,144
295 data207,141,157,207,173,151,207,16
296 data52,189,200,207,232,157,200,207
297 data202,189,220,207,232,157,220,207
298 data32,101,207,173,156,207,157,160
299 data207,173,157,207,157,180,207,32
300 data131,207,32,131,207,202,173,156
301 data207,157,200,207,173,157,207,157
302 data220,207,76,128,206,32,131,207
303 data232,173,156,207,157,200,207,173
304 data157,207,157,220,207,202,189,160
305 data207,232,157,160,207,202,189,180
306 data207,232,157,180,207,202,32,101
307 data207,32,101,207,173,156,207,157
308 data160,207,173,157,207,157,180,207
309 data232,76,162,204,160,3,165,75,133
310 data79,133,81,165,76,133,80,133,82
311 data24,165,79,109,143,207,133,79
312 data165,80,109,144,207,133,80,24
313 data165,81,109,145,207,133,81,165
314 data82,109,146,207,133,82,136,208
315 data223,96,160,0,140,151,207,177,79
316 data141,147,207,177,81,141,148,207
317 data200,152,205,147,207,240,2,176
318 data13,205,148,207,240,21,144,19
319 data238,151,207,76,30,207,205,148
320 data207,240,2,176,62,206,151,207
321 data76,30,207,140,149,207,160,1,177
322 data79,133,77,200,177,79,133,78,172
323 data149,207,136,177,77,141,150,207
324 data140,149,207,160,1,177,81,133
325 data77,200,177,81,133,78,172,149
326 data207,177,77,200,205,150,207,208
327 data3,76,195,206,144,184,76,224,206
328 data96,160,2,177,79,72,177,81,145
329 data79,104,145,81,136,16,243,96,169
330 data0,141,151,207,173,157,207,205
331 data159,207,144,6,240,8,238,151,207
332 data96,206,151,207,96,173,156,207
333 data205,158,207,144,244,208,238,96
334 data173,156,207,24,109,158,207,141
335 data156,207,173,157,207,109,159,207
336 data141,157,207,96,169,0,141,151,207
337 data56,173,156,207,237,158,207,141
338 data156,207,173,157,207,237,159,207
339 data141,157,207,176,3,206,151,207
340 data96,238,156,207,208,3,238,157
341 data207,96
342 return
PROGRAMM : [ML] INR C000 C5D1 ----------------------------------- C000 : A9 39 8D 24 03 A9 AC 8D 79 C008 : 26 03 A9 C0 8D 25 03 8D 5B C010 : 27 03 8D 2B 03 A9 20 4C 18 C018 : 99 C1 60 49 FF 00 6F 00 91 C020 : A5 99 D0 08 A5 C6 F0 0F 39 C028 : 78 4C B4 E5 C9 02 D0 18 D0 C030 : 84 97 20 F0 C0 A4 97 18 66 C038 : 60 A5 99 D0 0B A5 D3 85 23 C040 : CA A5 D6 85 C9 4C 32 E6 D9 C048 : C9 03 D0 09 85 D0 A5 D5 09 C050 : 85 C8 4C 32 E6 B0 38 C9 FB C058 : 02 F0 3F 86 97 20 99 F1 38 C060 : B0 16 48 20 99 F1 B0 0D 37 C068 : D0 05 A9 40 20 1C FE C6 9A C070 : A6 A6 97 68 60 AA 68 8A 6E C078 : A6 97 60 20 0D F8 D0 0B F8 C080 : 20 41 F8 B0 11 A9 00 85 FE C088 : A6 F0 F0 B1 B2 18 60 A5 D1 C090 : 90 F0 04 A9 0D 18 60 4C 7A C098 : 13 EE 20 4E F1 B0 81 C9 32 C0A0 : 00 D0 F2 AD 97 02 29 60 6A C0A8 : D0 E9 F0 EE 48 A5 9A C9 36 C0B0 : 03 D0 04 68 4C 16 E7 90 60 C0B8 : 04 68 4C DD ED 4A 68 85 9D C0C0 : 9E 8A 48 98 48 90 23 20 9E C0C8 : 0D F8 D0 0E 20 64 F8 B0 B2 C0D0 : 0E A9 02 A0 00 91 B2 C8 30 C0D8 : 84 A6 A5 9E 91 B2 18 68 CC C0E0 : A8 68 AA A5 9E 90 02 A9 E5 C0E8 : 00 60 A5 9E 4C 40 C1 60 E4 C0F0 : 20 86 F0 A8 B9 D0 C4 48 6A C0F8 : 20 CC FF 68 60 EA EA EA 6A C100 : EA EA EA EA EA EA EA EA FF C108 : EA EA EA EA EA EA EA EA 07 C110 : EA EA EA EA EA EA EA EA 0F C118 : EA EA EA EA EA EA EA EA 17 C120 : EA EA EA EA EA EA EA EA 1F C128 : EA EA EA EA EA EA EA EA 27 C130 : EA EA EA EA EA EA EA EA 2F C138 : EA EA EA EA EA EA EA 60 22 C140 : 85 9E 20 16 E7 A5 9E A8 57 C148 : B9 D0 C2 85 9E 20 17 F0 F4 C150 : AD 9D 02 CD 9E 02 D0 F8 35 C158 : 4C DE C0 EA EA EA EA EA 28 C160 : EA EA EA EA EA EA EA EA 5F C168 : EA EA EA EA EA EA EA EA 67 C170 : EA EA EA EA EA EA EA EA 6F C178 : EA EA EA EA EA EA EA EA 77 C180 : EA EA EA EA EA EA EA EA 7F C188 : EA EA EA EA EA EA 85 9E 59 C190 : 20 17 F0 4C DE C0 60 06 83 C198 : 00 8D 2A 03 A9 02 A2 02 83 C1A0 : A0 00 20 BA FF A9 02 A2 3A C1A8 : 97 A0 C1 20 BD FF 20 C0 E2 C1B0 : FF A9 00 85 F7 A9 CD 85 44 C1B8 : F8 A9 00 85 F9 A9 CE 85 69 C1C0 : FA 60 A2 08 20 C6 FF 20 0C C1C8 : E4 FF 8D 1B C0 20 CC FF B3 C1D0 : 60 A2 01 20 C6 FF 20 E4 7C C1D8 : FF 60 A2 02 20 C6 FF 20 69 C1E0 : E4 FF 60 A2 02 20 C9 FF 79 C1E8 : AD 1B C0 20 D2 FF C9 0D C5 C1F0 : D0 05 A9 0A 20 D2 FF 60 48 C1F8 : AD 1F C0 C9 00 F0 02 60 EE C200 : 60 A0 00 8C 1C C0 20 C2 10 C208 : C1 A5 90 8D 1F C0 C9 00 91 C210 : D0 18 AD 1B C0 C9 00 F0 F7 C218 : ED AC 1C C0 99 00 C6 EE 0D C220 : 1C C0 C9 0E F0 04 C0 FE 01 C228 : D0 DC A0 00 B9 00 C6 8D 60 C230 : 1B C0 C8 8C 1E C0 20 E3 9F C238 : C1 AC 1E C0 CC 1C C0 F0 82 C240 : B7 EA EA EA 20 D1 C1 C9 AF C248 : 00 D0 05 20 DA C1 C9 00 D9 C250 : AC 1E C0 F0 D7 C9 0E F0 3F C258 : 32 C9 18 F0 2D C9 03 F0 A2 C260 : 2A C9 13 D0 C7 20 D1 C1 96 C268 : C9 00 D0 07 20 DA C1 C9 BA C270 : 00 F0 10 C9 18 F0 13 C9 0E C278 : 03 F0 10 C9 0E F0 0C C9 5D C280 : 11 F0 CD A9 10 2C 01 DD D4 C288 : F0 DB 60 A2 0A 8E 1D C0 DD C290 : AE 1D C0 BD BB C2 CE 1D FC C298 : C0 8D 1B C0 20 E3 C1 AE 83 C2A0 : 1D C0 D0 EC 20 C2 C1 A5 59 C2A8 : 90 C9 00 D0 DD AD 1B C0 70 C2B0 : C9 00 F0 F0 C9 0E D0 EC FE C2B8 : 4C F8 C1 0D 0D 2D D4 D8 D2 C2C0 : C5 CE 2D 0D 0D 00 00 00 AA C2C8 : 00 00 00 00 00 00 00 00 C9 C2D0 : 00 01 02 03 04 05 06 07 C0 C2D8 : 08 09 0A 0B 0C 0D 0E 0F C8 C2E0 : 10 11 12 13 08 15 16 17 10 C2E8 : 18 19 1A 1B 1C 1D 1E 1F D8 C2F0 : 20 21 22 23 24 25 26 27 E0 C2F8 : 28 29 2A 2B 2C 2D 2E 2F E8 C300 : 30 31 32 33 34 35 36 37 F0 C308 : 38 39 3A 3B 3C 3D 3E 3F F8 C310 : 60 61 62 63 64 65 66 67 00 C318 : 68 69 6A 6B 6C 6D 6E 6F 08 C320 : 70 71 72 73 74 75 76 77 10 C328 : 78 79 7A 5B 5C 5D 5E 5F 50 C330 : 60 61 62 63 64 65 66 67 20 C338 : 68 69 6A 6B 6C 6D 6E 6F 28 C340 : 70 71 72 73 74 75 76 77 30 C348 : 78 79 7A 7B 7C 7D 7E 7F 37 C350 : 80 81 82 83 84 85 86 87 3F C358 : 88 89 8A 8B 8C 8D 8E 8F 47 C360 : 90 91 92 93 94 95 96 97 4F C368 : 98 99 9A 9B 9C 9D 9E 9F 57 C370 : A0 A1 A2 A3 A4 A5 A6 A7 5F C378 : A8 A9 AA AB AC AD AE AF 67 C380 : B0 B1 B2 B3 B4 B5 B6 B7 6F C388 : B8 B9 BA BB BC BD BE BF 77 C390 : 40 41 42 43 44 45 46 47 80 C398 : 48 49 4A 4B 4C 4D 4E 4F 88 C3A0 : 50 51 52 53 54 55 56 57 90 C3A8 : 58 59 5A DB DC DD DE DF B7 C3B0 : E0 E1 E2 E3 E4 E5 E6 E7 9F C3B8 : E8 E9 EA EB EC ED EE EF A7 C3C0 : F0 F1 F2 F3 F4 F5 F6 F7 AF C3C8 : F8 F9 FA FB FC FD FE FF B6 C3D0 : 00 00 00 00 00 00 00 07 DF C3D8 : 14 00 0A 00 00 0D 00 00 D7 C3E0 : 00 00 00 00 00 00 00 00 E1 C3E8 : 18 00 00 1B 00 00 00 00 64 C3F0 : 20 21 22 23 24 25 26 27 E0 C3F8 : 28 29 2A 2B 2C 2D 2E 2F E8 C400 : 30 31 32 33 34 35 36 37 F0 C408 : 38 39 3A 3B 3C 3D 3E 3F F8 C410 : 40 C1 C2 C3 C4 C5 C6 C7 7F C418 : C8 C9 CA CB CC CD CE CF 07 C420 : D0 D1 D2 D3 D4 D5 D6 D7 0F C428 : D8 D9 DA 5B 5C 5D 5E 5F F8 C430 : C0 41 42 43 44 45 46 47 A0 C438 : 48 49 4A 4B 4C 4D 4E 4F 28 C440 : 50 51 52 53 54 55 56 57 30 C448 : 58 59 5A 5B 5C 5D 5E 7F 78 C450 : 00 00 00 00 00 00 00 07 5F C458 : 14 00 0A 00 00 0D 00 00 57 C460 : 00 00 00 00 00 00 00 00 61 C468 : 18 00 00 1B 00 00 00 00 E4 C470 : 20 21 22 23 24 25 26 27 60 C478 : 28 29 2A 2B 2C 2D 2E 2F 68 C480 : 30 31 32 33 34 35 36 37 70 C488 : 38 39 3A 3B 3C 3D 3E 3F 78 C490 : 40 C1 C2 C3 C4 C5 C6 C7 FF C498 : C8 C9 CA CB CC CD CE CF 87 C4A0 : D0 D1 D2 D3 D4 D5 D6 D7 8F C4A8 : D8 D9 DA 5B 5C 5D 5E 5F 78 C4B0 : C0 41 42 43 44 45 46 47 20 C4B8 : 48 49 4A 4B 4C 4D 4E 4F A8 C4C0 : 50 51 52 53 54 55 56 57 B0 C4C8 : 58 59 5A 5B 5C 5D 5E 7F F8 C4D0 : 00 00 00 0E 00 00 00 07 A0 C4D8 : 14 00 0A 00 00 0D 0E 00 10 C4E0 : 00 11 00 13 00 00 00 00 CB C4E8 : 18 00 00 1B 00 00 00 00 64 C4F0 : 20 21 22 23 24 25 26 27 E0 C4F8 : 28 29 2A 2B 2C 2D 2E 2F E8 C500 : 30 31 32 33 34 35 36 37 F0 C508 : 38 39 3A 3B 3C 3D 3E 3F F8 C510 : 40 C1 C2 C3 C4 C5 C6 C7 7F C518 : C8 C9 CA CB CC CD CE CF 07 C520 : D0 D1 D2 D3 D4 D5 D6 D7 0F C528 : D8 D9 DA 5B 5C 5D 5E 5F F8 C530 : C0 C1 C2 C3 C4 C5 C6 C7 1F C538 : C8 C9 CA CB CC CD CE CF 27 C540 : D0 D1 D2 D3 D4 D5 D6 D7 2F C548 : D8 D9 DA 5B 5C 5D 5E 7F 58 C550 : 00 00 00 0E 00 00 00 07 20 C558 : 14 00 0A 00 00 0D 0E 00 90 C560 : 00 11 00 13 00 00 00 00 4B C568 : 18 00 00 1B 00 00 00 00 E4 C570 : 20 21 22 23 24 25 26 27 60 C578 : 28 29 2A 2B 2C 2D 2E 2F 68 C580 : 30 31 32 33 34 35 36 37 70 C588 : 38 39 3A 3B 3C 3D 3E 3F 78 C590 : 40 C1 C2 C3 C4 C5 C6 C7 FF C598 : C8 C9 CA CB CC CD CE CF 87 C5A0 : D0 D1 D2 D3 D4 D5 D6 D7 8F C5A8 : D8 D9 DA 5B 5C 5D 5E 5F 78 C5B0 : C0 C1 C2 C3 C4 C5 C6 C7 9F C5B8 : C8 C9 CA CB CC CD CE CF A7 C5C0 : D0 D1 D2 D3 D4 D5 D6 D7 AF C5C8 : D8 D9 DA 5B 5C 5D 5E 7F D8 C5D0 : 20 E2