Datenbertragung von Commodore-Plus4 auf den PC        clv03jul89

////Stichworte: Commodore-Plus4
            serielle Datenbertragung
            Screenformat_40mal25
            volksFORTH
////Abstract:

Der Autor hatte das Problem, seine in ultraFORTH auf Plus4 entwickelten 
Quelltext-Screens auf einen IBM-
kompatiblen PC zu transportieren, um sie dort 
unter volksFORTH 3.8.1-2 weiterzuverarbeiten. Dieser 
technologische Sprung erfordert ein gewisses Maá an Soft-
 und Hardware, das es 
erstmal zu entwickeln gilt. Die vorgestellten L”sungen sind weder besonders 
intelligent noch besonders schwierig, k”nnen aber sicher dem einen oder der 
anderen helfen, die Zeit lieber fr wichtigere Dinge zu verwenden. Teile der 
L”sungen sind auch fr den Transport vom C64 aus und fr den Transport auf 
andere Zielrechner (z.B. Atari ST) zu verwenden. 
Es werden Hard- und Software fr die Plus4-Seite und geringe 
Software„nderungen fr die PC-Seite vorgestellt.

////Artikel:

Zur Weiterverarbeitung von C16- und C64-
Screens auf anderen Rechnern stellen
sich folgende Probleme:
1) Die hardware-Verbindung der beiden Rechner
2) Ein šbertragungsprogramm auf dem Plus4
3) Die Anpassung der Software auf dem PC auf das Commodore-Screen-Format
   von 25 Zeilen … 41 Buchstaben. Dies erfordert geringe Žnderungen im
   volksForth-System, im Editor und im Druckertreiber.

1) Die hardware-Verbindung: Sie ist ganz einfach. (s.Tabelle 1 und 2)
Einerseits ist ein geeignetes Kabel erforderlich, ein User-Port-Stecker fr den
C64, ein RS-232-Stecker fr die andere Seite. Dazwischen muá aber noch ein
wenig Elektronik her, zur Konvertierung der TTL-Pegel der CBM-Rechner
(0 und +5 Volt) auf die vorgeschriebenen RS232-Pegel (+/- 3 Volt bis +/-
15 Volt). Die im User-Port vorhandene 9 Volt-Wechselspannung l„át sich meiner
Ansicht nach hierfr nicht verwenden, da sie nicht potentialfrei von der
TTL-Versorgungsspannung ist. Ein zus„tzliches Netzteil wollte ich mir sparen,
sodaá die Wahl auf den MAX232 (kostet ca. 10 DM) fiel, der keine hohe externe
Versorgungsspannung erfordert. Der Inverter 7406 wurde gew„hlt, da das DCD- und
DSR-Signal bereits im Plus4 mit einem Kollektorwiderstand versehen ist. Da
dieses Signal von unserer Schaltung aber garnicht ver„ndert wird (Es liegt
immer auf High), ist ein 7404 sinnvoller, der keine Kollektorwiderst„nde
erfordert.

2) Ein šbertragungsprogramm fr den Plus4. (s.CBM-TERM.SCR)

Im Handbuch fr den Plus4 ist ein kurzes Terminalprogramm vorgestellt. Es
arbeitet mit oben vorgestelltem Kabel durchaus zusammen. Allerdings kann es zum
Filetransfers kaum eingesetzt werden, da die zugrundeliegenden
Betriebssystemroutinen keinen korrekten Hardwarehandshake machen. Ein
XON/XOFF-Protokoll ist im Betriebssystem zwar implementiert, aber nachdem noch
nicht einmal das Handbuch dies zu erw„hnen wagt, erscheint es auch nicht grade
als zuverl„ssige Variante. Die selbst erstellte Software lehnt sich ein
wenig an SERIAL.SCR der PC-Version an. Sie greift direkt auf den Chip des Plus4
zu (ein 6551, der bis zu 19.200 baud erlaubt, also nix fr C64!). Es werden
elementare W”rter (RX TX RX? TX?) definiert, ankommende Zeichen werden in einem
128 byte tiefen Buffer per Interrupt zwischengelagert.
H”here W”rter erlauben eine einfache Teletype-Emulation sowie die šbertragung
von Forth-Screens.

3) notwendige Žnderungen an der PC-Software. (s.CBM.SCR)

Dieser Teil bezieht sich auf volksFORTH3.8.1-2. Einzelne Teile sind aber sicher
auch auf andere Forth-Systeme bertragbar (oder eventuell sogar auf die
neueren, immer zahlreicher erscheinenden volksFORTH-Versionen).
Die Žnderungen sind ausschlieálich deshalb erforderlich, weil ultraFORTH
ein etwas exotisches, dem kleinen Bildschirm angepaátes Screenformat verwendet.
Im Gegensatz zum Standard (der 16 Zeilen … 64 Buchstaben vorschreibt), werden
25 Zeilen benutzt, von denen die ersten 24 je 41 Buchstaben haben, die 25te nur
40 Buchstaben.

Zun„chst muá dem Forth-System das neue Format mitgeteilt werden. Dies ist
n”tig, da Worte wie: \ \needs  sonst fehlerhaft arbeiten. Dies kann sehr
einfach durch patchen von C/L und L/S geschehen. Nun ist auch bereits ein
angucken der Screens mit LIST problemlos m”glich. Hierbei macht sich der
fehlende 41te Buchstabe der 25ten Zeile l„stig bemerkbar. An seiner Stelle
erscheint ein Zufallszeichen, da LIST fr jede Zeile 41 Buchstaben ausgibt. Ein
Sch”nheitsfehler, mit dem sich leben l„át.

Die Ausgabe auf den Drucker erfordert noch eine kleine Žnderung. Da die Screens
etwas l„nger sind, wird es etwas enger auf der Seite. Dies l„át sich durch
Umschalten auf kleinen Zeilenabstand (Wort: 8/" ) erreichen. Zumindest
auf Endlos-Papier passen damit 6 Screens pro Seite. Die Stelle, an der dieses
Wort ausgefhrt werden muá, ist je nach Drucker verschieden. Dem
EPSON.PRN-Treiber, den ich verwendet habe, reicht es v”llig, ein einziges Mal
umgestellt zu werden. Der GRAPHICS.PRN-Treiber ist in dieser Beziehung etwas
problematischer, da das Wort NORMAL jedesmal auf den Standard-Zeilen-Abstand
von 6-Zeilen-per-Zoll zurckschaltet. Hier sollte das 8/" anschlieáend in
NORMAL ausgefhrt werden.

Auch das Betrachten und Ver„ndern von ultraFORTH-Screens mit dem Editor ist
durch Gerinfgige Žnderungen in EDITOR.SCR,  die in CBM.SCR,Scr  5 
aufgefhrt sind, 
einfach zu erreichten. Auch beim Editor ignorieren wir kleinere 
Sch”nheitsfehler: Die Statuszeile
verdeckt am Anfang die letzte Zeile, die Fehlermeldungen kann man nicht mehr
sehen.

An zus„tzlicher Software enth„lt CBM.SCR noch spezielle Worte zum Behandeln
von Ascii-Nullen im Quelltext. Commodore-Disketten enthalten auf nicht
benutzten Screens gerne allerlei bin„res Gewimmel. Sei es vom Formatieren
briggeblieben oder von alten Files: es st”rt. Es „uáert sich beim Ausdrucken
als groáe schwarze K„stchen und kostet Zeit und Farbband. Bin„re Nullen sind
ein sicheres Indiz fr solche bin„r-Screens. Die Worte SEARCH0 REPLACE0 bzw.
WIPE0 sind dafr, solche Screens zu finden, die Nullen durch Blanks zu ersetzen
bzw. den gesamten Screen mit Blanks zu berschreiben.


Claus Vogt, Blowstr. 67, D-1000 Berlin 30

--Tabelle------------------------------------------------------------------


     UP     1    User-Port-Stecker C64 (paát auch auf Plus4)
            1    Stecker-Geh„use (passend zu UP, mit Platz fr 2 ICs drin)
            2 m  9-poliges Kabel
            1    sub-d25 bzw. sub-d9-Stecker
            1    Max232-Pegelwandler
            1    7406-Inverter (oder 7404)
     R1,R2  2    Widerst„nde 10k (nur, wenn 7406)
     R3     1    Widerstand 3k
     C1..4  4    22uF-Kondensatoren
            1    kleine Lochraster-Platine

Tab1: Stckliste CBM+4-auf-PC-Kabel

--Tabelle------------------------------------------------------------------

Die aus dem User-Port kommenden Anschlsse C,D,M,K werden (teils ber Inverter 
7406 durch den (ebenfalls invertierenden Pegelwandler max232 gefhrt) und 
anschlieáend nach Bedarf an sub-d25 oder sub-d9 gefhrt.

Um die folgende - etwas esoterische Notation zu erl„utern, sei die 
erste Zeile nochmal als Klartext beschrieben: 
Das RxD-(Receive-Data)-Signal aus User-Port, Pin C wird mittels 
Leitung in den Max232, Pin 9 gefhrt, der es an Pin 8 wieder 
rausl„žt, von wo es per Leitung je nach Bedarf an den Sub-d25-
Stecker Pin 3 oder Sub-D9 Pin 2 gefhrt, ein TxD (transmit-data)-
Signal darstellt:

 RxD = UP:C ----              max232:09--08 -- sub-d25:3 bzw: sub-d9:2 = TxD
 RTS = UP:D ---- 7406:5--6 -- max232:10--07 -- sub-d25:4 bzw: sub-d9:7 = CTS
 TxD = UP:M ----              max232:11--14 -- sub-d25:2 bzw: sub-d9:3 = RxD
 CTS = UP:K ---- 7406:2--1 -- max232:12--13 -- sub-d25:5 bzw: sub-d9:8 = CTS

Die Spannungsversorgung sieht so aus:

 GND = UP:1 ---- 7406:7    -- max232:15     -- sub-d25:1 bzw: sub-d9:5
 +5V = UP:2 ---- 7406:14   -- max232:16

Der 7406 erfordert Kollektorwiderst„nde (wer sie sparen m”chte kann einen 7404
nehmen und sie weglassen).

     7406:6 -- R1=10k -- +5V
     7406:2 -- R2=10k -- +5V

Der max232 braucht noch eine Reihe 22uF-Kondensatoren fr seine Ladungspumpe:

     max232:1 --+C1-- max232:3
     max232:4 --+C2-- max232:5
     max232:6 --+C3-- GND
          GND --+C4-- max232:2 -- R3=3k -- sub_d20:4 bzw: sub-d9:6 =DSR

Tab2: Verdrahtung CBM+4-auf-PC-Kabel
