Ihr Akkustikkoppler wird zum Modem und der C 64 zur Mailbox
Die Anregung zu der Entwicklung der Schaltung entstand aus dem Ärgernis, daß jeder Besitzer eines Akustikkopplers, wenn er eine Mailbox betreiben will, bei jedem Anruf aufspringen und dann die Anfrage an den Computer weiterleiten muß. Mit Hilfe meiner Schaltung ist es nun möglich, daß der Mailbox-Computer auf einen Anruf reagiert und selbständig die Verbindung herstellt.
Bei einem Anruf wird von der Vermittlungsstelle ein Rufwechselstrom zum Teilnehmer gesendet. Dieser Strom steuert die Leuchtdiode des Optokopplers und der Kopplertransistor wird niederohmig und zieht den BC 547 nach Masse, so daß dieser im Takt des Rufwechselstroms den Eingang (Port H) des C 64 ebenfalls taktet. Wird nun der Port getaktet, so reagiert der Computer und der Pegel am Ausgang (Port F) wird auf 5 V (High) gesetzt. Durch die positive Spannung leitet nun der Relaistransistor, das Relais zieht an und stellt die Verbindung zum Fernsprechapparat her. Nun kann der Computer mit der Datenkommunikation über den Koppler beginnen.
Aufbau der Hardware
Die Schaltung kann problemlos auf einer Experimentierkarte aufgebaut werden. Wichtig ist nur die galvanische Trennung von Fernsprechleitung und Computer-Hardware.
Die Bauteile sind handelsüblich und meist sogar in jeder Bestelliste vorhanden. Wichtig für die Funktion der Schaltung ist nur die Tatsache, daß das Relais bei 5 V sicher schaltet und einen Strom von weniger als 50 mA zieht.
Die Schaltung kann anschlußfertig mit Mailbox-Software beim Autor bezogen werden.
Die DIN-Bezeichnungen entsprechen dem Günther-Dil-Relais 3570 1301 051. Der Anschluß der Schaltung an den C 64 erfolgt über den Userport. Der Koppler wird über den RS232-Stecker (25polig) angeschlossen. Der Anschluß ans Telefonnetz erfolgt folgendermaßen:
Die Leitung a (La) wird von der Anschlußdose getrennt und auf den Anschluß 7 des Interfaces gelegt. Der Anschluß 4 wird parallel auf die Lb aufgelegt. Anschluß 7 wird auf den Anschluß La der Dose geklemmt.
Für die weitere Benutzung des Apparates sollte man parallel zu den Relaiskontakten (1,7) einen Schalter legen, der diese Kontakte überbrückt.
Funktionen
- Umsetzung des Rufsignals 60 V 25 Hz auf TTL-Pegel zur Auswertung durch den Computer (Auswertung des Rufs durch Computer)
- V.24-5-Schnittstelle für Akustikkoppler (Datenkommunikation)
- Anschalten des Fernsprechapparates durch Signal vom Computer (automatisches Abheben)
- Wahlmöglichkeit für den Benutzer (automatische Wahl)
Bedienungsanleitung
Für die Benutzung der Funktionen 3 bis 4 ist der Schalter in die Stellung »Modem« zu bringen und danach das entsprechende Programm in den Computer zu laden, das heißt, wenn nur die Wahlfunktion genutzt wird, zum Beispiel das Programm Wählautomat. Für den Betrieb einer Mailbox das entsprechende Mailbox-Programm. Der weitere Ablauf ist im Programm beschrieben. Die Funktionen 1 bis 2 sind unabhängig von der Schalterstellung.
Achtung! Diese Schaltung darf nur an Hausanlagen angeschlossen werden, die nicht mit dem öffentlichen Telefonnetz verbunden sind!
Zu Beginn fragt das Programm, ob der Apparat an einer Nebenstellenanlage angeschlossen ist. Ist dies der Fall, so geben Sie bitte »j« ein und geben dann anschließend die Nummer für die Anwahl einer Amtsleitung ein. Diese Nummer wird dann der Telefon-Rufnummer vorangestellt.
Das Programm »Wählautomat«
Nach RETURN gelangen Sie ins Hauptmenü. Mit den Tasten f 1 und f 3 wählen Sie den Menüpunkt an. Ist er gefunden, so drücken Sie bitte RETURN.
Neue Adressen
Geben Sie bitte in die Eingabemaske die entsprechenden Angaben ein und drücken RETURN. Danach gehen Sie in die Zeile mit dem einzelnen Strich und drücken RETURN. Falls Sie noch etwas ändern wollen, so geben Sie bei den Sicherheitsabfragen »n« ein.
Adresse ändern oder löschen
Nachdem Sie mit dem Cursor und den Tasten f 1 und f 3 die gewünschte Adresse gefunden haben, drücken Sie f 5.
Danach können Sie auswählen, ob Sie ändern, löschen oder wieder ins Hauptmenü wollen. Wenn Sie die Daten ändern, gehen Sie bitte nach dem Abschnitt »Neue Adressen« vor. Vor dem Löschen von Daten werden Sie jeweils zur Sicherheit gefragt, ob Sie diese wirklich löschen wollen.
Adresse anwählen
Hier können Sie sich Ihren Gesprächspartner mit den Tasten f 1 und f 3 aussuchen. Danach drücken Sie f 5. Darauf erscheinen die Daten des Teilnehmers und ein weiteres Menü. Drücken Sie bitte gemäß Ihres Wunsches die revers angezeigte Taste. Danach gehen Sie bitte entsprechend dem Menü vor. Für eine Direktwahl drücken Sie f 7.
Der Anschluß
1. extern
Die ankommende Leitung a wird mit dem Anschluß 1 (grau gekennzeichnet) verbunden. Die Leitung a des Telefons wird mit dem Anschluß 2 (isoliert ohne Kennzeichnung) verbunden. Anschluß 3 (Abschirmung) wird parallel auf die Leitung b geklemmt.
2. intern im Apparat: (dazu Deckel abschrauben)
Stecker des Nummernschalters oder Tastwahlblockes abziehen. Anschluß 1 (grau gekennzeichnet) mit Anschluß 1 der 4polige Buchse verbinden. 2 (isoliert ohne Kennzeichnung) mit 2 der Buchse. Abschirmung (Anschluß 3) mit 4 der Buchse. Deckel wieder zuschrauben.
(Rudolf Möllenbeck/rg)3 x BC 237 B o.ä.
1 x BC 547 B o.ä.
1 x 1 N 4148
1 x LED 5 mm
1 x Optokoppler IL 74
1 x Z-Diode 12 V 400 MW
1 x 1 N 4001
Widerstände Kondensatoren
1 x 150 Ω ¼ W 10%
1 x 330 Ω ¼ W
2 x 2k2 ¼ W
2 x 4k1 ¼ W
1 x 5k6 ¼ W
1 x 10k ¼ W
1 x 56k ¼ W
1 x 1 µF 100 V UK11
1 x 470 µF 16 V Elko
Sonstiges
1 x Dil-Relais, Günther 3570 1301 051
1 x RS232-Stecker (25pol)
1 x Userport-Stecker
1 x Schalter (1 x Um)


100 rem +++++++++++++++++++++++++++++++ 105 rem +++ +++ 110 rem +++ c a t a l o g +++ 120 rem +++ +++ 130 rem +++ all copyrights by +++ 140 rem +++ +++ 150 rem +++ thomas koether +++ 160 rem +++ +++ 170 rem +++++++++++++++++++++++++++++++ 1000 : 1010 rem m e n u e 1020 : 1030 print"{clr} 1040 print"{down}{down}{down}{down} c a t a l o g" 1045 print" CCCCCCCCCCCCCCC{down}{down}" 1050 print"neuen catalog anlegen.............<1>" 1060 print"neue produkte anhaengen...........<2>" 1080 print"e n d e...........................<0> 1090 print"{down}i h r e e i n g a b e............<"; 1100 getw$:ifw$=""then1100 1105 printw$ 1110 ifw$="1"then1185 1120 ifw$="2"then1250 1140 ifw$="0"thenend 1150 print"{up}{up}{up}":w$="":goto1090 1160 : 1170 rem dateiinhalt loeschen 1180 : 1185 ifg=1then1000 1190 open1,8,15,"s:catalog":close1 1200 g=1 1210 goto1430 1220 : 1230 rem infos anhaengen 1240 : 1250 ifg=1thenprint"datei nicht vorhanden":fora=1to2000:next:goto1000 1260 open1,8,3,"catalog,s,a" 1270 gosub9000 1280 gosub8000 1290 getw$:ifw$=""then1290 1300 ifw$="y"orw$="j"thenprint#1,"AAA":goto1270 1310 ifw$="n"thenprint#1,"AAA":close1:goto1000 1320 goto1290 1400 : 1410 rem infos eingeben 1420 : 1430 open1,8,4,"catalog,s,w":g=0:print#1,"first" 1440 gosub9000 1445 gosub8000 1450 getw$:ifw$=""then1450 1460 ifw$="y"orw$="j"thenprint#1,"AAA":goto1440 1470 ifw$="n"thenprint#1,"AAA":close1:goto1000 1480 goto1450 8000 print"{up}{up}{up}{up}{up}{up}{up}{up}{up}{up}":x=1 8010 z$="" 8020 ifx>9then8090 8030 getq$:ifq$=""thenprint"{rvon} {rvof}{left}";:goto8035 8032 goto8039 8035 getq$:ifq$=""thenprint" {left}";:goto8030 8039 print" {left}"; 8040 ifq$=chr$(13)then8060 8045 ifq$="_"thenfora=xto12:print"{down}":next:goto8090 8047 ifq$=chr$(20)thenl=len(z$):z$=left$(z$,l-1):printchr$(157);:goto8030 8050 z$=z$+q$:printq$;:goto8030 8060 x=x+1 8070 print#1,z$:print:goto8010 8080 w$="" 8090 print"{down}{down}{down}wollen sie noch mehr infos eingeben ?" 8100 return 8110 : 8120 : 8130 : 9000 print"{clr}{down}{down}{down}{down}{down}" 9010 ifg=1thenprint"datei nicht vorhanden":fora=1to2000:next:goto1000 9020 fora=1to9:forb=1to39:printchr$(46);:next:print:next 9030 return
100 rem +++++++++++++++++++++++++++++++ 105 rem +++ +++ 110 rem +++ i n f o s i n p u t +++ 120 rem +++ +++ 130 rem +++ all copyrights by +++ 140 rem +++ +++ 150 rem +++ thomas koether +++ 160 rem +++ +++ 170 rem +++++++++++++++++++++++++++++++ 1000 : 1010 rem m e n u e 1020 : 1030 print"{clr} 1040 print"{down}{down}{down}{down} a k t u e l l e i n f o s 1045 print" CCCCCCCCCCCCCCCCCCCCCCCCCCCC{down}{down}{down}{down}{down}{down}{down}{down}{down}{down}{down}" 1050 print"dateiinhalt loeschen..............<1>" 1060 print"neue infos anhaengen..............<2>" 1070 print"infos in geloeschte datei.........<3> 1075 print"infos lesen.......................<4> 1080 print"e n d e...........................<0> 1090 print"{down}i h r e e i n g a b e............<"; 1100 getw$:ifw$=""then1100 1105 printw$ 1110 ifw$="1"then1185 1120 ifw$="2"then1250 1130 ifw$="3"then1430 1135 ifw$="4"then10000 1140 ifw$="0"thenend 1150 print"{up}{up}{up}":w$="":goto1090 1160 : 1170 rem dateiinhalt loeschen 1180 : 1185 ifg=1then1000 1190 open1,8,15,"s:aktuell":close1 1200 g=1 1210 goto1000 1220 : 1230 rem infos anhaengen 1240 : 1250 ifg=1thenprint"datei nicht vorhanden":fora=1to2000:next:goto1000 1260 open1,8,3,"aktuell,s,a" 1270 gosub9000 1280 gosub8000 1290 getw$:ifw$=""then1290 1300 ifw$="y"orw$="j"thenprint#1,"AAA":goto1270 1310 ifw$="n"thenprint#1,"AAA":close1:goto1000 1320 goto1290 1400 : 1410 rem infos eingeben 1420 : 1430 open1,8,4,"aktuell,s,w":g=0:print#1,"first" 1440 gosub9000 1445 gosub8000 1450 getw$:ifw$=""then1450 1460 ifw$="y"orw$="j"thenprint#1,"AAA":goto1440 1470 ifw$="n"thenprint#1,"AAA":close1:goto1000 1480 goto1450 8000 print"{up}{up}{up}{up}{up}{up}{up}{up}{up}{up}{up}{up}{up}":x=1 8010 z$="" 8020 ifx>12then8090 8030 getq$:ifq$=""thenprint"{rvon} {rvof}{left}";:goto8035 8032 goto8039 8035 getq$:ifq$=""thenprint" {left}";:goto8030 8039 print" {left}"; 8040 ifq$=chr$(13)then8060 8045 ifq$="_"thenfora=xto12:print"{down}":next:goto8090 8046 ifq$=chr$(20)thenl=len(z$):z$=left$(z$,l-1):printchr$(157);:goto8030 8050 z$=z$+q$:printq$;:goto8030 8060 x=x+1 8070 print#1,z$:print:goto8010 8080 w$="" 8090 print"{down}{down}{down}wollen sie noch mehr infos eingeben ?" 8100 return 8110 : 8120 : 8130 : 9000 print"{clr}{down}{down}{down}{down}{down}" 9010 ifg=1thenprint"datei nicht vorhanden":fora=1to2000:next:goto1000 9020 fora=1to12:forb=1to39:printchr$(46);:next:print:next 9030 return 10000 open1,8,2,"aktuell,s,r":open2,8,15:input#2,a:ifa=0then10020 10010 print"Fehler";a:close1:close2:run 10020 input#1,a$:printa$:ifst><66then10020 10030 close1:close2:run
900 printchr$(14):print"{clr} 950 p$="...................................... 1000 print"Wenn Sie ein eigenes Impressum" 1010 print"eingeben wollen druecken Sie bitte <i>.":print 1020 print"Wenn Sie schon ein Impressum haben " 1030 print"dann <h> 1040 getq$:ifq$=""then1040 1050 ifq$="i"then1110 1060 ifq$="h"thenprint:print"A B{$a0}C C D E F G H{$a0}I{$a0}N":goto2000 1070 goto1040 1080 : 1090 rem eingabe impressum 1100 : 1110 print"{clr}":print 1120 print"Bitte geben Sie Ihr Impressum ein 1130 print"Maximal 10 Zeilen a 35 Zeichen" 1140 print 1150 open1,3,0:open2,0,1 1160 forz=1to10:printz;tab(4):input#2,fe$(z):print:next:close2:close1 1270 print"Alles OK ?"; 1280 geta$:ifa$=""then1280 1290 ifa$="j"ora$="y"then1320 1300 ifa$="n"thenprint"{home}{down}{down}{down}{down}":goto1150 1310 goto1280 1320 open8,8,5,"@:impressum,u,w" 1330 fora=1to10:print#8,fe$(a):next 1340 close8 1350 print"{clr} 1360 print"Bitte geben Sie jetzt Ihr Hauptmenue ein":print 1370 print"BEISPIEL":print 1380 print"1. Aktuelle Informationen" 1390 print"2. Catalog" 1400 print"3. Electronic Mail" 1410 print"{home}{down}{down}{down}{down}{down}":open1,3,0:open2,0,1 1420 fora=1to3:input#2,fe$(a):print:next:close2:close1 1460 fe$(1)=fe$(1)+right$(p$,36-len(fe$(1)))+"<1>" 1470 fe$(2)=fe$(2)+right$(p$,36-len(fe$(2)))+"<2>" 1480 fe$(3)=fe$(3)+right$(p$,36-len(fe$(3)))+"<3>" 1490 print:print 1500 fora=1to3:printfe$(a):next:print 1510 print"Eingabe OK ?" 1520 geta$:ifa$=""then1520 1530 ifa$="j"ora$="y"then1560 1540 ifa$="n"then1350 1550 goto1520 1560 open8,8,5,"impressum,u,a" 1570 fora=1to3:print#8,fe$(a):next 1580 close8 2000 : 2010 rem time out einstellen 2020 : 2030 print:print:print 2040 print"Bitte geben{$a0}Sie nun den Timeout ein 2050 print"Das heisst,wie lange ein Anrufer in 2060 print"der Mailbox arbeiten darf" 2070 print" 1 .. 50 Minuten 2080 inputt:ift<1ort>50then2080 2090 printt" Minuten OK" 2100 poke2,t 10000 fori=51200to51481 10010 readx:pokei,x:s=s+x:n=n+1:next 10020 data173,14,220,9,128,141,14,220,173,15,220,41 10030 data127,141,15,220,32,121,,240,101,32,253,174 10040 data32,158,173,32,163,182,201,6,208,107,160, 10050 data177,34,56,233,48,201,3,176,96,10,10,10 10060 data10,133,251,200,177,34,56,233,48,201,10,176 10070 data80,5,251,208,4,169,146,208,15,201,36,176 10080 data68,201,19,144,7,56,248,233,18,216,9,128 10090 data141,11,220,32,253,200,141,10,220,32,253,200 10100 data141,9,220,169,,141,8,220,32,121,,240 10110 data13,32,253,174,32,158,183,224,16,176,22,142 10120 data167,2,120,173,20,3,73,161,141,20,3,173 10130 data21,3,73,34,141,21,3,88,96,76,72,178 10140 data165,251,72,165,252,72,173,136,2,133,252,169 10150 data,133,251,160,30,173,11,220,201,18,240,17 10160 data201,128,144,15,41,127,201,18,240,9,248,24 10170 data105,18,216,208,2,169,,32,219,200,173,10 10180 data220,32,219,200,173,9,220,32,219,200,173,8 10190 data220,9,48,32,243,200,104,133,252,104,133,251 10200 data76,49,234,72,41,240,74,74,74,74,24,105 10210 data48,32,243,200,104,41,15,24,105,48,32,243 10220 data200,169,58,145,251,173,167,2,153,,216,200 10230 data96,200,177,34,56,233,48,201,6,176,134,10 10240 data10,10,10,133,251,200,177,34,56,233,48,201 10250 data10,176,238,5,251,96 15000 open1,8,2,"impressum,u,r" 15010 input#1,a$:printa$:ifst=0then15010 15020 close1:print:print"ok j/n" 15030 wait198,1:geta$:ifa$="n"thenrun 20000 print"{clr}{down}bitte laden Sie nun mba2 nach!
0 open1,2,2,chr$(166)+chr$(224) 1 poke53281,0:poke53280,43 25 open9,8,5,"Anrufer,s,r":input#9,an%:close9 30 poke56579,peek(56579)or8:poke56577,0 1000 rem ******************************* 1010 rem *** m a i l b o x *** 1020 rem *** all copyrights by *** 1030 rem *** thomas koether *** 1035 rem *** und rudolf moellenbeck *** 1040 rem ******************************* 1050 : 1060 rem initialisierung 1070 : 1080 print"{clr}{lblu}":print"Mailbox Initialisierung... 1100 printchr$(14) 1110 bl$=" " 1120 p$="...................................." 1130 dimna$(40):dimpa$(40):dimbr$(16):dimem$(11):dimbe$(100) 1140 dimo%(256):dimi%(256):gosub5700 1150 open2,8,3,"namen,s,r":input#2,n$:an=val(n$) 1160 ifan>0thenfora=1toan:input#2,n$:na$(a)=n$:next 1170 close2 1180 e$="Ihre Eingabe......................? :" 1190 forx=1to5:reada$:me$(x)=a$:next:forx=1to4:reada$:in$(x)=a$:next 1200 open2,8,5,"impressum,u,r":fora=1to10:input#2,im$(a):next 1210 fora=1to3:input#2,me$(a):next:close2 1220 fora=1to11:reada$:em$(a)=a$:next 1230 open2,8,3,"passwort,s,r" 1240 input#2,n$:an=val(n$) 1250 ifan>0thenfora=1toan:input#2,p$:pa$(a)=p$:next 1260 close2 1270 t=peek(2):tt=t:open15,8,15:input#15,a%:close15 1275 : 1280 print"{clr}":print"Mailbox 64 {rvon}Ich warte auf Anruf":a=peek(56577) 1285 print"Zum manuellen Start Taste druecken" 1290 printpeek(56577):geta$:ifa=peek(56577)anda$=""thenprint"{up}";:goto1290 1295 ifa$><""then1305 1300 ar=ar+1:ifar<10then1290 1302 poke56577,peek(56577)or8 1305 an%=an%+1:open9,8,5,"@:Anrufer,s,w":print#9,an%:close9 1310 fora=1to25:print:print#1:next:print:print#1:z$=str$(an%) 1311 z$=right$(z$,len(z$)-1):print" Sie sind der ";z$;". Anrufer 1312 print#1," Sie sind der ";z$;" Anrufer":fora=1to2000:next 1315 sys51200,"000000",1:ti$="000000" 1320 gosub5800:rem begruessungs bild 1330 : 1340 rem modem abfrage 1350 : 1360 rem menue 1370 : 1380 fora=1to5:print#1:next 1390 fora=1to5:print:next 1400 print#1," H a u pt m e n u e" 1410 print" H a u p t m e n u e" 1420 print#1," --------------------" 1430 print" --------------------" 1440 print#1:print#1 1450 print:print 1460 fora=1to5:ifa=4then1490 1470 print#1,me$(a):gosub1510 1480 printme$(a) 1490 next 1500 goto1790 1510 : 1520 rem antwort 1530 : 1540 gosub9000:ift%>ttthen8030 1550 get#1,q$:ifq$=""then1630 1560 q=o%(asc(q$)):q$=chr$(i%(asc(q$))) 1570 ifq=19then1720 1580 ifq=24thengoto8030 1590 return 1600 : 1610 rem eigene eingabe 1620 : 1630 getr$:ifr$=""thenreturn 1640 ifr$="^"thenprint:print"< ";:goto1660 1642 ifr$=chr$(20)thenr$=chr$(8) 1645 q$=r$ 1650 return 1660 getr$:ifr$=""then1660 1670 ifr$=chr$(13)thenprint#1,r$:printr$:return 1680 print#1,r$;:printr$;:goto1660 1690 : 1700 rem halteschleife 1710 : 1720 get#1,q$:ifq$=""then1720 1730 q=o%(asc(q$)):q$=chr$(i%(asc(q$))) 1740 ifq=17thenreturn 1750 ifq=24thengoto8030 1760 print#1,q$ 1770 printq$:goto1720 1780 : 1790 rem eingabe online 1800 : 1810 print#1 1820 print 1830 print#1,e$;:gosub1510 1840 printe$; 1850 gosub1510 1860 ifq$=""then1850 1870 q=o%(asc(q$)):q$=chr$(i%(asc(q$))):print#1,q$:printq$ 1880 ifq=49then1960 1890 ifq=50then2230 1900 ifq=51then3120 1910 ifq=52then1850 1920 ifq=48thenprint#1,"auf wiedersehen":print"auf wiedersehen":goto8030 1930 ifq=24then8030 1940 goto1850 1950 : 1960 rem aktuelle informationen 1970 : 1980 fora=1to5:print#1:print:next:gosub1510 1990 print#1," N e w s" 2000 print" N e w s" 2010 print#1:print#1 2020 print:print 2030 open2,8,3,"aktuell,s,r":w$="" 2040 input#2,w$:w$="":ifst=64then2090 2050 get#2,h$:ifh$<>chr$(13)thenw$=w$+h$:goto2050 2060 ifst=64then2090 2070 ifw$="AAA"then2160 2080 goto2150 2090 print#1:print#1:print#1,"E n d e d e r I n f o s":w$="" 2100 print:print:print"E n d e d e r I n f o s":w$="" 2110 print#1:print#1,"T a s t e d r u e c k e n" 2120 print:print"T a s t e d r u e c k e n" 2130 gosub1510:ifq$=""then2130 2140 fora=1to5:print#1:print:next:gosub1510:close2:goto1360 2150 print#1,w$:printw$:w$="":gosub1510:goto2050 2160 w$="":print#1:print#1," Weiter (Return) sonst (0) 2170 w$="":print:print" Weiter (Return) sonst (0) 2180 gosub1510 2190 ifq=13thenprint#1,q$:printq$:goto2050 2200 ifq=48thenclose2:goto1360 2210 goto2180 2220 : 2230 : 2240 rem catalog 2250 : 2260 : 2270 fora=1to5:print#1:print:next:gosub1540 2280 open3,8,3,"catalog,s,r":c$="":an=0 2290 input#3,c$:c$="":ifst=64then3050 2300 z=1:s=9:fora=1to5:print#1:print:next 2310 get#3,h$:ifh$<>chr$(13)thenc$=c$+h$:goto2310 2320 ifst=64thenfl=8:goto2390 2330 ifc$="AAA"then2390 2335 z$=str$(z):z$=right$(z$,len(z$)-1) 2340 print#1,z$"."c$:printz$"."c$:gosub1540 2350 fe$(z)=c$:z=z+1:s=s-1:c$="":goto2310 2360 : 2370 rem catalog menue 2380 : 2390 c$="":print#1:print#1,"Moechten Sie etwas bestellen <b>" 2400 print:print"Moechten Sie etwas bestellen <b>" 2410 iffl=8then2440 2420 print#1,"die Liste weiter sehen <w>" 2430 print"die Liste weiter sehen <w>" 2440 print#1,"oder zurueck zum Menue <m>";" " 2450 print"oder zurueck zum Menue <m>";" " 2460 gosub1540 2470 ifq$=""then2460 2480 ifq=98orr$="b"then2550 2490 ifq=119orr$="w"thenz=1:fora=1to5:print#1:print:next:goto2300 2500 ifq=109orr$="m"thenclose3:goto2910 2510 goto2460 2520 : 2530 rem bestellen 2540 : 2550 ifop=1then2720 2560 op=1:print#1:print 2570 print#1,"Bitte geben Sie Ihren Namen ein":n$="" 2580 print"Bitte geben Sie IHren Namen ein" 2590 gosub1540 2600 ifq$=""then2590 2610 ifq=13then2650 2620 : 2630 ifq=20thenb$=n$:gosub6050:n$=b$:goto2590 2640 n$=n$+q$:print#1,q$;:printq$;:goto2590 2650 print#1:print#",und nun Ihre Adresse" 2660 print:print"und nun Ihre Adresse" 2670 gosub1540 2680 ifq$=""then2670 2690 ifq=13then2720 2700 ifq=20thenb$=ad$:gosub6050:ad$=b$:goto2670 2710 ad$=ad$+q$:print#1,q$;:printq$;:goto2670 2720 print#1:print 2730 print#1,"Bitte geben Sie die Titelnummer ein" 2740 print"Bitte geben{$a0}Sie die Titelnummer ein":an=an+1 2750 gosub1540 2760 ifq$=""then2750 2770 ifq<49orq>57-sthen2750 2780 print#1,q$:printq$:t=val(q$):print#1:print:print#1,fe$(t):printfe$(t) 2790 be$(an=fe$(t) 2800 print#1,"Wollen Sie noch etwas bestellen ?"; 2810 print"Wollen Sie noch etwas bestellen{$a0}?"; 2820 gosub1540 2830 ifq$=""then2820 2840 ifq=106orq=121thenprint#1,q$:printq$:goto2720 2850 ifq=110andfl<>8thenprint#1,q$:printq$:goto2300 2860 iffl=8then3050 2870 goto2820 2880 : 2890 rem bestelliste absaven 2900 : 2910 print#1:print 2920 print#1,"Die bestellten Artikel werden in ein" 2930 print"Die bestellten Artikel werden in ein" 2940 print#1,"paar{$a0}Tagen bei{$a0}Ihnen sein" 2950 print"paar Tagen bei Ihnen sein" 2960 open10,8,10,"bestelliste,s,a" 2970 ifan=0thenclose10:goto1370 2980 fora=1toan:print#10,be$(a):next 2990 print#10,"AAA":close10 3000 gosub1540 3010 goto1370 3020 : 3030 rem catalog zuende 3040 : 3050 print#1:print#1:print#1,"C A T A L O G Z U E N D E":print#1:print#1 3060 print:print:print"C A T A{$a0}L O{$a0}G Z U E N{$a0}D E":print:print 3070 print#1,"T a s t e d r u e c k e n" 3080 print"T a s t e d r u e c k e n" 3090 gosub1540 3100 ifq$=""then3090 3110 close3:goto1370 3120 : 3130 rem electronic mail entry 3140 : 3150 fora=1to5:print#1:print:next 3160 print#1," E L{$a0}E C T R O N I C M{$a0}A{$a0}I{$a0}L" 3170 print" E{$a0}L{$a0}E C T R O{$a0}N I{$a0}C M A I L" 3180 print#1," -----------------------------" 3190 print" -----------------------------" 3200 print#1:print#1 3210 print:print 3220 fora=1to5 3230 print#1,em$(a):gosub1510 3240 printem$(a) 3250 next:print#1:print 3260 print#1,e$;:printe$ 3270 gosub1510 3280 ifq$=""then3270 3290 ifq<48orq>52then3270 3300 print#1,q$:printq$ 3310 ifq=48then1360 3320 ifq=49then3390 3330 ifq=50then4020 3340 ifq=51then4610 3350 goto5160:rem q=52 3360 : 3370 rem menuepunkt 1 3380 : 3390 fora=1to5:print#1:print:next:gosub1510 3400 print#1,em$(6):print#1,em$(7):n$="" 3410 printem$(6):printem$(7):n$="" 3420 gosub1510 3430 ifq$=""then3420 3440 ifq=13thenfl=1:print#1,q$:printq$:goto3520 3450 ifq=20thenb$=n$:gosub6050:n$=b$:goto3420 3460 print#1,q$; 3470 printq$; 3480 n$=n$+q$:goto3420 3490 : 3500 rem namens kontrolle 3510 : 3520 iflen(n$)=0then3120 3530 z=1 3540 ifna$(z)=n$thenonflgoto3620,4140,5270 3550 ifz<20thenz=z+1:goto3540 3560 print#1:print 3570 print#1,n$;" hat kein{$a0}Postfach bei uns!!!" 3580 printn$;" hat kein{$a0}Postfach bei uns!!!":fora=1to2000:next:goto3120 3590 : 3600 rem brief eingabe 3610 : 3620 open15,8,15,"io":print#15,"m-r"chr$(250)chr$(2) 3630 get#15,l$:ifl$=""thenl$=chr$(0) 3640 print#15,"m-r"chr$(252)chr$(2):get#15,m$:ifm$=""thenm$=chr$(0) 3650 fr=asc(l$)+256*asc(m$):close15 3660 iffr>15then3720 3670 print#1:print#1,"Leider kein Speicherplatz mehr vorhanden !!!" 3680 print:print"Leider kein Speicherplatz mehr vorhanden !!!" 3690 fora=1to2000:next:goto3120 3700 : 3710 : 3720 open2,8,3,n$+pa$(z)+",s,a" 3730 print#1,"Geben Sie Ihre Nachricht ein max. 15 Zeilen" 3740 print"Geben Sie Ihre Nachricht ein max. 15 Zeilen" 3750 print#1:print#1,"Abschluss mit Leerzeile":print#1 3760 print:print"Abschluss mit Leerzeile":print 3770 z=1:w$=" " 3780 ifz=16thenprint#1:print#1,"Zeilengrenze erreicht" 3790 ifz=16thenprint:print"Zeilengrenze erreicht":goto3950 3800 get#1,q$:ifq$=""then3800 3810 q$=chr$(i%(asc(q))) 3820 ifasc(q$)=13andasc(w$)=13thenbr$(z)="AAA":goto3950 3830 ifasc(q$)=13thenw$=q$:print#1:print:br$(z)=b$:b$="":z=z+1:goto3780 3840 ifasc(q$)<>20then3870 3850 gosub6050 3860 goto3800 3870 print#1,q$;:printq$; 3880 b$=b$+q$:w$=q$ 3890 iflen(b$)<80then3800 3900 print#1,"Z E I L{$a0}E Z U L{$a0}A{$a0}N G !!!":b$="":print#1 3910 print"Z I L{$a0}E Z U L{$a0}A N{$a0}G !!!":b$="":print:goto3800 3920 : 3930 rem brief absaven 3940 : 3950 print#1:print#1,"Brief wird abgespeichert" 3960 print:print"Brief wird abgespeichert" 3970 fora=1toz:print#2,br$(a):next:close2:goto3120 3980 : 3990 : 4000 rem menuepunkt 2 4010 : 4020 fora=1to5:print#1:print:next:gosub1510 4030 print#1,em$(8):n$="" 4040 printem$(8):n$="" 4050 gosub1510 4060 ifq$=""then4050 4070 ifq=13thenfl=2:print#1,q$:printq$:goto3520 4080 ifq=20thenb$=n$:gosub6050:n$=b$:goto4050 4090 print#1,q$;:printq$; 4100 n$=n$+q$:goto4050 4110 : 4120 rem passwort eingabe 4130 : 4140 fl=1 4150 print#1,em$(10):p$="" 4160 printem$(10):p$="" 4170 gosub1510 4180 ifq$=""then4170 4190 ifq=13thenprint#1,q$:printq$:goto4260 4200 ifq=20thenb$=p$:gosub6050:p$=b$:goto4170 4210 print#1,q$;:printq$; 4220 p$=p$+q$:goto4170 4230 : 4240 rem passwort kontrolle 4250 : 4260 iflen(p$)=0then3120 4270 ifpa$(z)=p$thenonflgoto4330,5310 4280 print#1:print#1,"Falsche Eingabe !!!" 4290 print:print"Falsche Eingabe !!!":goto4150 4300 : 4310 rem brief ausgabe 4320 : 4330 open2,8,3,na$(z)+pa$(z)+",s,r":t$="" 4340 fora=1to5:print#1:print:next 4350 input#2,t$:ifst=64then4510 4360 t$="" 4370 get#2,h$:ifh$<>chr$(13)thent$=t$+h$:goto4370 4380 ifst=64then4510 4390 ift$="AAA"then4410 4400 print#1,t$:printt$:t$="":gosub1510:goto4370 4410 print#1:print#1,"Weiter (Return) Ende (0)":t$="" 4420 print:print"Weiter (Return){$a0}Ende (0)":t$="" 4430 gosub1510 4440 ifq$=""then4430 4450 ifq=13thenfora=1to5:print#1:print:next:goto4370 4460 ifq=48thenclose2:goto3120 4470 goto4430 4480 : 4490 rem brief zuende 4500 : 4510 print#1:print#1,"Keine weiteren Briefe vorhanden !!!" 4520 close2:print:print"Keine weiteren Briefe vorhanden !!!" 4530 print#1:print#1,"Taste druecken" 4540 print:print"Taste druecken" 4550 gosub1510 4560 ifq$=""then4550 4570 goto3120 4580 : 4590 rem mailbox einrichten 4600 : 4610 ifan=40thenprint#1,em$(11):printem$(11):fora=1to3000:next:goto3120 4620 fora=1to5:print#1:print:next:gosub1510 4630 print#1,em$(8):n$="":z=1 4640 printem$(8):n$="" 4650 gosub1510 4660 ifq$=""then4650 4670 ifz<1thenz=1 4680 ifq=13thenprint#1,q$:printq$:goto4720 4690 ifq=20thenz=z-1:b$=n$:gosub6050:n$=b$:goto4650 4700 ifz<9thenprint#1,q$;:printq$;:n$=n$+q$:z=z+1 4710 goto4650 4720 iflen(n$)=0then3120 4730 z=1 4740 ifna$(z)=n$then4770 4750 ifz<19thenz=z+1:goto4740 4760 goto4820 4770 print#1:print#1,"Name schon existent":print 4780 print:print"Name schon existent":print:goto4630 4790 : 4800 rem passwort definieren 4810 : 4820 print#1,em$(9):p$="":z=1 4830 printem$(9):p$="" 4840 gosub1510 4850 ifq$=""then4840 4860 ifq=13then4910 4870 ifz<1thenz=1 4880 ifq=20thenz=z-1:b$=p$:gosub6050:p$=b$:goto4840 4890 ifz<9thenprint#1,q$;:printq$;:p$=p$+q$:z=z+1 4900 goto4840 4910 iflen(p$)=0then3120 4920 z=1 4930 ifpa$(z)=p$then4960 4940 ifz<an-1thenz=z+1:goto4930 4950 goto5020 4960 print#1:print#1,"Password schon existent" 4970 print:print"Password schon existent" 4980 goto4820 4990 : 5000 rem neue mailbox creieren 5010 : 5020 an=an+1:na$(an)=n$:pa$(an)=p$ 5030 print#1:print#1,"...B i t t e w a r t e n..." 5040 print:print"...B i t t e w a r t e n...":gosub1510 5050 open5,8,5,na$(an)+pa$(an)+",s,w":print#5,"first":close5 5060 open5,8,5,"@:namen,s,w":print#5,an:fora=1toan:print#5,na$(a):next:close5 5070 open5,8,5,"@:passwort,s,w":print#5,an:fora=1toan:print#5,pa$(a):next 5080 close5 5090 print#1:print 5100 print#1,"Postfach mit dem Namen ";n$;" eroeffnet" 5110 print,"Postfach mit dem Namen ";n$;" eroeffnet" 5120 goto3120 5130 : 5140 rem mailbox loeschen 5150 : 5160 fora=1to5:print#1:print:next:gosub1510 5170 print#1,em$(8):n$="":fl=3 5180 printem$(8):n$="":fl=3 5190 gosub1510 5200 ifq$=""then5190 5210 ifq=13thenfl=3:print#1,q$:printq$;:goto3520 5220 ifq=20thenb$=n$:gosub6050:n$=b$:goto5190 5230 print#1,q$;:printq$;:n$=n$+q$:goto5190 5240 : 5250 rem passwort 5260 : 5270 fl=2:goto4150 5280 : 5290 rem mailbox loeschen 5300 : 5310 fora=ztoan-1:na$(a)=na$(a+1):pa$(a)=pa$(a+1):next:na$(an)="":pa$(an)="" 5320 an=an-1 5330 print#1,"...B i t t e w a r t e n..." 5340 print"...B i t t e w a r t e n..." 5350 open5,8,5,"@:namen,s,w" 5360 print#5,an:fora=1toan:print#5,na$(a):next:close5 5370 open5,8,5,"@:passwort,s,w" 5380 print#5,an:fora=1toan:print#5,pa$(a):next:close5 5390 open5,8,15,"s:"+n$+p$:close5 5400 print#1:print 5410 print#1,"Postfach ist geloescht" 5420 print"Postfach ist geloescht" 5430 goto3120 5440 : 5450 rem menue - datas 5460 : 5470 data"Aktuelle Informationen.............<1>" 5480 data"Catalog............................<2>" 5490 data"Electronic Mail....................<3>" 5500 data"Info - Service....................<4>" 5510 data"Ende der Kommunikation.............<0>" 5520 : 5530 rem info - datas 5540 : 5550 data"vc 64","vc 20","spectrum","atari 5560 : 5570 rem electronic mail menue 5580 : 5590 data"Brief Eingabe......................<1>" 5600 data"Briefe lesen.......................<2>" 5610 data"Postfach einrichten................<3>" 5620 data"Postfach loeschen..................<4>" 5630 data"Zum Hauptmenue.....................<0>" 5640 data"An wen wollen Sie einen Brief 5650 data"schreiben ? 5660 data"Bitte geben{$a0}Sie Ihren Namen ein max. 8 Zeichen :" 5670 data"Bitte definieren Sie ein Passwort max. 8 Zeichen :" 5680 data"Bitte geben Sie Ihr Passwort ein :" 5690 data"Maximale Teilnehmerzahl erreicht !!" 5700 rem asciichange 5710 forz=32to64:o%(z)=z:next:o%(13)=13:o%(20)=8:o%(160)=32 5720 forz=65to90:y=z+32:o%(z)=y:next:forz=91to95:o%(z)=z:next 5730 forz=193to218:y=z-128:o%(z)=y:next 5740 forz=133to140:o%(z)=z:next:o%(20)=20 5750 forz=0to255:y=o%(z):ify<>0theni%(y)=z 5760 next:o%(17)=17:o%(19)=19:o%(24)=24 5770 return 5780 : 5790 rem eingangs bild 5800 : 5820 print#1,"+++++++++++++++++++++++++++++++++++++++" 5830 print,"+++++++++++++++++++++++++++++++++++++++" 5840 print#1,"+++ M A I L B O X 6 4 +++" 5850 print,"+++ M A I L B O X 6 4 +++" 5860 print#1,"+++ copyright SOFTWARE E +++" 5870 print,"+++ copyright SOFTWARE EXPR +++" 5880 print#1,"+++++++++++++++++++++++++++++++++++++++" 5890 print,"+++++++++++++++++++++++++++++++++++++++" 5900 fora=1to8:print#1:print:next 5910 print#1," Dieses{$a0}Mailbox Programm wurde auf" 5920 print" Dieses{$a0}Mailbox Programm wurde auf" 5930 print#1," einen Commodore VC 64 realisiert" 5940 print," einen Commodore VC 64 realisiert" 5950 print#1," geschrieben von Thomas Koether" 5960 print," geschrieben von Thomas Koether" 5970 print#1," adaptiert auf Automodem":print#1:print#1 5975 print" adaptiert auf Automodem 5976 print#1," von Rudolf Moellenbeck":print#1:print#1 5977 print" von{$a0}Rudolf Moellenbeck":print:print 5980 print#1," T a s t e d r u e c k e n" 5990 print," T a s t e d r u e c k e n" 6000 get#1,q$:ifq$<>""then6010 6005 getq$:ifq$=""then6000 6010 goto6070 6020 : 6030 rem inst/del 6040 : 6050 l=len(b$):ifl>0thenb$=left$(b$,l-1):print#1,chr$(20);:printq$; 6060 return 6070 : 6080 rem impressum 6090 : 6100 fora=1to5:print#1:print:next 6170 fora=1to10:print#1,im$(a):printim$(a):next 6180 fora=1to7:print#1:print:next 6190 print#1," T a s t e d r u e c k e n" 6200 print," T a s t e d r u e c k e n" 6210 get#1,q$:ifq$<>""then6220 6215 getq$:ifq$=""then5210 6220 goto1380 8000 : 8020 : 8030 : 8040 sys51200:print#1:print#1;"Auf wieder sehen... 8045 close2:close3:close4:close5:close6:close7:close8:close9:close10 8050 poke56577,0:goto1275 9000 t%=val(mid$(ti$,3,2)):ift<t%thenreturn 9010 ift-t%<ttthentt=tt-1 9020 return