C 64
Modem und Akustikkoppler

Terminalprogramm für den C 64

Dieses Programm ermöglicht es Ihnen, über eine RS232-Schnittstelle und Akustikkoppler oder Modem mit anderen Computern in Verbindung zu treten. Der Austausch von Daten, Nachrichten und ganzen Programmen ist möglich - ebenso die Abfrage von Datenbanken. Wir haben dieses Programm mit der Software-Expreß-Schnittstelle und dem Epson CX-21-Akustikkoppler getestet und waren von Anfang an begeistert.

Das Terminalprogramm bietet folgende Möglichkeiten:

  1. Die mit der Tastatur eingegebenen Zeichen werden über die RS232-Schnittstelle zur Gegenstelle gesandt.
  2. Die von der Gegenstelle empfangenen Daten werden auf dem Bildschirm angezeigt.
  3. Die von der Gegenstelle empfangenen Daten können zur weiteren Bearbeitung in den »Terminal-Speicher« geschrieben werden.
  4. Diese gespeicherten Daten können dann wieder ausgesandt, auf den Bildschirm oder Drucker ausgegeben, beziehungsweise auf Diskette gespeichert werden.
  5. Dateien können von der Diskette, zur weiteren Bearbeitung, in den »Terminal-Speicher« geladen werden.
  6. Empfangene und im »Terminal-Speicher« befindliche Programme (als ASCII-Datei gespeichert) können über eine »Wandler«-Software aufbereitet werden. Hierbei besteht eine Kontroll- und Editiermöglichkeit der einzelnen Programmzeilen.
  7. Die Übertragungsparameter sind dem Standard entsprechend eingestellt. Durch Änderung der beiden CHR$-Befehle in den »OPEN«-Anweisungen können andere Parameter eingestellt werden. Die entsprechenden »OPEN«-Anweisungen befinden sich in Basic-Zeilennummer 10 + 50. Die Werte für das Kontroll- und Befehlsregister (1. und 2. CHR$ Befehl) sind im Commodore Programmier-Handbuch aufgeführt.

Der »Terminal-Speicher« belegt den Adressenbereich Hex 5000-9FFF.

Der Basic-Speicher endet bei Hex 3FFF.

Das Terminalprogramm wird mit Load »terminal«, 8 geladen und anschließend mit Run gestartet. Nach einer kurzen Wartezeit, während der Maschinenspracheteil angelegt wird, erscheint das Menü auf dem Bildschirm.

Über das Menü und mit Hilfe der Funktionstasten werden alle Programmabläufe gesteuert.

Menüpunkt 1 erklärt die Bedeutung der Funktionstasten Fl bis F8, der ←Taste und der RUN/Stop Taste.
Funktionstaste F1:

Durch Betätigung werden empfangene Daten als ASCll-Datei in den »Terminal-Speicher« geschrieben. Ein empfangenes Hex 02-Zeichen (Start of Text) bewirkt ebenfalls ein Abspeichern. Zur Erinnerung ändert sich die Rahmenfarbe des Bildschirmes in Braun.
Funktionstaste F3:

Die Betätigung beziehungsweise ein empfangenes Hex 03-Zeichen (End of Text) beendet das Abspeichern. Die Bildschirm-Rahmenfarbe wird wieder grün.
Funktionstaste F5:

Mit dieser Taste wird an den Anfang des »Terminal-Speichers« zurückgesetzt und die erste Zeile (bis zum Return-Zeichen) auf den Bildschirm übertragen.
Funktionstaste F7:

Ein wiederholtes Drücken dieser Taste führt schrittweise bis ans Ende des Textes. Das Textende ist durch + + + gekennzeichnet. Ein Speicherplatzende wird ebenfalls durch + + + angezeigt.
Funktionstaste F2:

Mit dieser Taste wird ein Vorschreiben in den »Terminal-Speicher« eingeleitet. Die Zeichen werden gleichzeitig auf dem Bildschirm angezeigt. Hierbei sind die Cursor-Tasten außer Funktion. Falsch eingegebene Zeichen können mit der Del-Taste gelöscht werden.
Funktionstaste F4:

Diese Taste beendet das Vorschreiben.
Funktionstaste F6:

Durch Betätigung dieser Taste wird wieder an den Anfang des »Terminal-Speichers« zurückgesetzt. Bis zum ersten Return-Zeichen werden die Daten über die RS232-Schnittstelle ausgegeben und gleichzeitig auf dem Bildschirm angezeigt.
Funktionstaste F8:

Ein wiederholtes Drücken dieser Taste setzt den Sendebetrieb schrittweise bis zum Dateiende fort. Das Ende wird wieder durch + + + angezeigt.
Die ← Taste

Mit dieser Taste wird der Rücksprung in das Menü eingeleitet.
Die Run/Stop Taste

Das Terminalprogramm kann mit Run/Stop unterbrochen werden.

Menüpunkt 2 startet das eigentliche Terminalprogramm. Zum Datenaustausch ist hinzuzufügen, daß einige Steuerzeichen ausgefiltert werden, um ein einwandfreies Arbeiten mit anderen Datenbanken zu ermöglichen. Weiterhin wird eine Code-Wandlung zwischen CPM und ASCII durchgeführt. Beim Betätigen der Del-Taste wird ein Backspace (ein Zeichen zurück) zur Gegenstelle gesandt. Da die Cursor-Steuertasten ihre Funktion verloren haben, wurde auf die Anzeige des Cursors verzichtet.

Menüpunkt 3 bewirkt die Ausgabe der im »Terminal-Speicher« befindlichen Daten auf einen angeschlossenen Drucker

Menüpunkt 4 verläßt das Programm und lädt das »Wandler-Programm«. Mit diesem »Wandler« ist es möglich, ein empfangenes und im »Terminal-Speicher« abgelegtes Programm (als ASCII-Datei) in ein lauffähiges Programm zu wandeln und in den Basic-Speicher zu schreiben. Es kann dann benutzt oder auf Diskette gespeichert werden. Das »Wandler-Programm« startet selbstätig und auf dem Bildschirm erscheint: ready. »......Erste Programmzeile.......«run 60020. Der Cursor blinkt in der ersten Programmzeile. Sind in dieser Zeile keine Fehler vorhanden, so kann diese durch Betätigen der Return-Taste in den Basic-Arbeitsspeicher übernommen werden. Jetzt steht der Cursor in der Zeile »run 60020«. Ein nochmaliges Drücken der Return-Taste bringt die nächste Programmzeile auf den Bildschirm. In gleicher Weise kann bis zum Programmende fortgefahren werden. Ist die Änderung einer Programmzeile erforderlich, so kann dieses mit den üblichen Editiermöglichkeiten geschehen. Soll eine Zeile nicht übernommen werden, so wird der Cursor manuell in die Zeile »run 60020« gesteuert und mit )Return( weitergearbeitet. Zu beachten ist, daß die Programmzeile nicht länger als 80 Zeichen ist. Der Menüpunkt 4 bietet zusätzlich eine Auswahlmöglichkeit zwischen »automatischer Wandlung« und »manueller Wandlung«. Die »manuelle Wandlung« wurde beschrieben. Bei der »automatischen Wandlung« läuft das Programm selbstätig ab. Wird aber eine fehlerhafte Zeile erkannt, so bricht das Programm ab. Nach der Editierung kann mit »run 60020« weitergearbeitet werden.

Menüpunkt 5 speichert alle im »Terminalspeicher« befindlichen Daten als sequentielle Datei auf eine Diskette. Vor dem Abspeichern muß der Datei-Name eingegeben werden.

Menüpunkt 6 lädt eine sequentielle Datei von der Diskette in den »Terminal-Speicher«.

Soll ein Basic-Programm zur Gegenstelle gesandt werden, so sind einige Besonderheiten zu beachten.

  1. Das Programm sollte nur »reine ASCII-Daten« erhalten. Bildschirm-Steuerzeichen sowie Grafikzeichen werden nicht übertragen.
  2. Das Programm muß als sequentielle Datei vorliegen und nicht wie sonst üblich als Programm-Datei.

Die Wandlung einer Programm-Datei in eine sequentielle Datei wird folgendermaßen durchgeführt.

  1. Das Programm wird wie üblich mit LOAD »NAME«, 8 in den Basic-Speicher des C 64 geladen.
  2. Im Direktmodus wird folgende Zeile eingegeben: OPEN 1,8,2,»Name,S,W«:CMD1:LIST

Jetzt wird das Programm als sequentielle Datei auf die Diskette geschrieben und kann später vom Terminalprogramm aufgerufen werden. Anschließend wird mit CLOSE 1 das eröffnete File geschlossen.

(Manfred Wyrwas)

In der nächsten Ausgabe das entsprechende Treiber-Programm für den VC 20.

10 print"{clr}  einen moment bitte "
20 forx=16384to16995:ready:ds=ds+y:pokex,y:next
30 ifds<>68997thenprint"fehler in datas: soll=68997 ist="ds:stop
40 poke51,0:poke52,64:poke55,0:poke56,64:clr:f=0:goto130
50 poke53280,5:poke53281,5 :print"{blk}"
60 open2,2,0,chr$(6+32    )+chr$(32+64+128):get#2,a$
70 printchr$(14):print"{clr}":print"      datenbankdialog mit dem c64"
80 sys16394
90 close2:  poke53280,5:poke53281,5:print"{blk}":f=1:  goto130
100 open2,2,0,chr$(6+32    )+chr$(32+64+128):get#2,a$:print"{clr}":print" neustart !"
110 sys16416
120 goto90
130 printchr$(14):print"{clr}{down}{down}{rght}{rght}{rght}{rght}{rght}{rght}{rght}{rght}{rght}{rght}{rght}{rght}{rght}menue"
140 print"{down}{down}{rght}{rght}{rght}{rght}1 = bedeutung der funktionstasten"
150 iff=0then170
160 print"{down}{rght}{rght}{rght}{rght}2 = zurueck ins terminalprogramm":goto180
170 print"{down}{rght}{rght}{rght}{rght}2 = terminal programm  starten":goto180
180 print"{down}{rght}{rght}{rght}{rght}3 = empfangene und gespeicherte             daten drucken
190 print"{down}{rght}{rght}{rght}{rght}4 = empfangene und gespeicherte             programme aufbere";
200 print"iten"
210 print"{down}{rght}{rght}{rght}{rght}5 = empfangene und gespeicherte             daten auf disk. ";
220 print"speichern"
230 print"{down}{rght}{rght}{rght}{rght}6 = daten von disk. in den speicher         schreiben       "
240 print"{down}{rght}{rght}{rght} bitte waehlen 1-6 "
250 geta$:ifa$=""then250
260 ifa$="1"then340
270 ifa$="2"andf=1then100
280 ifa$="2"thenf=1:goto50
290 ifa$="3"then520
300 ifa$="4"then570
310 ifa$="5"then650
320 ifa$="6"then730
330 goto250
340 print"{clr}{rght}{rght} {rght}{rght}{down}bedeutung der funktionstasten"
350 print"{down}{down}{rght}{rght}{rght}{rght}f1 = empfangene date speichern"
360 print"{down}{rght}{rght}{rght}{rght}f3 = abspeichern beenden"
370 print"{down}{rght}{rght}{rght}{rght}f5 = gespeicherte daten ansehen              ( anfang )"
380 print"{down}{rght}{rght}{rght}{rght}f7 = gespeicherte daten ansehen              ( weiter )"
390 print"{down}{rght}{rght}{rght}{rght}f2 = text vorschreiben "
400 print"{down}{rght}{rght}{rght}{rght}f4 = vorschreiben beenden "
410 print"{down}{rght}{rght}{rght}{rght}f6 = gespeicherte daten aussenden            ( anfang )"
420 print"{down}{rght}{rght}{rght}{rght}f8 = gespeicherte daten aussenden            ( weiter )"
430 print"{down}{rght}{rght}{rght}{rght}weiter mit return"
440 geta$:ifa$=""then440
450 print"{clr}":print"   die _ taste bewirkt einen rueck-        sprung ins menue"
460 print:
470 print"   mit run/stop kann das programm          abgebrochen werden":print
480 print"   beim vorschreiben kann mit der          del-taste geloescht werden,
490 print"{down}{down}{down}   weiter mit return"
500 geta$:ifa$=""then500
510 goto130
520 open1,4,7:rem drucker vc1526
530 e=peek(16387)+peek(16388)*256
540 fori=20480toe-1
550 print#1,chr$(peek(i));:next
560 close1:goto130
570 print"{clr}{rght}{rght}{rght}{rght}{down}{down}automatisches wandeln oder              manuelles wandeln ?"
580 print"{rght}{rght}{rght}{rght}{down}{down}bitte waehlen  ( a oder m )"
590 print"{rght}{rght}{rght}{rght}{down}{down}mit return kommen sie zurueck           in das menue"
600 geta$:ifa$=""then600
610 ifa$="a"thenload"wandler 2",8:run
620 ifa$="m"thenload"wandler",8:run
630 ifa$=chr$(13)then130
640 goto600
650 print"{clr}":input"{rght}{rght}{rght}{rght}{down}{down}dateiname";d$:print"{clr}"
660 print"{rght}{rght}{rght}{rght}{down}{down}datei: ";d$;" wird auf                   diskette gespeichert"
670 close2:open1,8,2,d$+",s,w"
680 e=peek(16387)+peek(16388)*256
690 fori=20480toe-1
700 print#1,chr$(peek(i));:next
710 print"{clr}":print"{rght}{rght}{rght}{rght}{down}{down}daten sind auf diskette gespeichert":fori=1to2000:next
720 close1:goto130
730 print"{clr}":input"{rght}{rght}{rght}{rght}{down}{down}dateiname";d$:print"{clr}"
740 open1,8,2,d$+",s,r":i=20480
750 print"{rght}{rght}{rght}{rght}{down}{down}datei: ";d$;" wird von                   diskette geladen"
760 get#1,a$
770 pokei,(asc(a$)):i=i+1
780 ifst=64thenclose1:goto810
790 ifst<>0thenclose1:print"{clr}{rght}{rght}{down}{down}diskstatus ";st;"!":for i=1to5000:next:goto130
800 goto760
810 poke16387,(i-int(i/256)*256):poke16388,(i/256):goto130
820 data0,0,0,0,0,0,0,0,0,0,169,0,141,1,64,141,3,64,141,4,64,133,251,169
830 data80,133,252,169,194,141,5,64,32,228,255,201,0,240,85,201,20,240,3
840 data76,49,64,169,8,234,201,3,240,126,201,133,240,125,201,134,240,124
850 data201,135,240,123,201,136,240,122,201,137,240,121,201,138,240,120,201
860 data139,240,119,201,140,240,118,201,95,240,117,201,65,144,23,176,0,201
870 data96,176,3,76,109,64,201,192,176,8,76,116,64,105,32,76,116,64,233,128
880 data32,90,66,234,234,234,234,234,32,134,240,201,0,240,157,201,13,240
890 data17,201,2,240,43,201,3,240,42,201,32,144,233,201,128,176,229,234,201
900 data65,144,16,176,1,234,201,96,176,7,24,105,128,76,172,64,234,233,32
910 data72,32,210,255,76,220,64,76,88,66,76,212,64,76,54,65,76,190,65,76
920 data196,65,76,65,65,76,54,65,76,2,66,76,11,66,76,51,65,0,0,0,169,1,141
930 data1,64,76,32,64,169,1,205,1,64,240,12,104,24,72,169,245,141,32,208
940 data104,76,32,64,104,72,169,249,141,32,208,104,32,0,65,76,32,64,0,0,0
950 data160,0,145,251,230,251,208,2,230,252,24,165,251,141,3,64,201,255,240
960 data7,165,252,141,4,64,24,96,165,252,141,4,64,201,159,240,2,24,96,169
970 data42,32,210,255,32,210,255,32,210,255,198,251,96,0,0,169,0,141,1,64
980 data76,32,64,0,0,0,169,1,141,1,64,32,228,255,201,0,240,249,201,13,240
990 data24,201,20,240,20,201,32,144,237,201,145,240,233,201,157,240,229,201
1000 data147,240,225,201,138,240,28,32,210,255,201,20,240,3,76,127,65,198
1010 data251,208,2,198,252,24,76,70,65,0,0,32,0,65,76,70,65,76,54,65,0,0,0
1020 data0,0,169,0,133,251,169,80,133,252,165,252,205,4,64,240,3,76,174,65
1030 data165,251,205,3,64,240,3,76,174,65,24,76,215,65,0,160,0,177,251,230
1040 data251,208,2,230,252,24,234,234,234,234,96,32,141,65,32,210,255,32,149
1050 data65,32,210,255,201,13,240,3,76,196,65,76,32,64,0,0,0,32,38,65,169
1060 data13,96,0,0,0,201,65,144,23,176,0,201,96,176,3,76,244,65,201,192,176
1070 data8,76,251,65,105,32,76,251,65,233,128,32,90,66,96,0,0,0,32,141,65
1080 data32,210,255,32,224,65,32,149,65,32,210,255,32,224,65,201,13,240,185
1090 data76,11,66,76,32,64,0,201,65,144,23,176,0,201,96,176,3,76,51,66,201
1100 data192,176,8,76,58,66,105,32,76,62,66,233,128,32,210,255,96,233,31,76
1110 data58,66,0,32,141,65,32,31,66,32,149,65,32,31,66,201,13,240,3,76,74
1120 data66,96,96,0,133,158,32,8,242,96,96,0,0,0
»Terminalprogramm«
PDF Diesen Artikel als PDF herunterladen
Mastodon Diesen Artikel auf Mastodon teilen
← Vorheriger ArtikelNächster Artikel →