★ HARDWARE ★ Programmübertragung von CPC 464 zum C64 ★ |
Programmuebertragung von CPC 464 zum C64 (Computer Schau) |
Leider hat auch der CPC 464 der Firma Schneider, so wie viele seiner Konkurrenten, keinen eingebauten Maschinensprache- oder Hexmonitor. Will man aber mehr über diesen Computer wissen, dann sind Hilfsmittel dieser Art unbedingt erforderlich. Dazu soll das - von uns „Hexpeeker” genannte -Programm dienen. Oft ist es für Computerbesitzer von Interesse, Basic-Programme von einem zu einem anderen Computersystem zu übertragen. Handelt es sich um Computersysteme unterschiedlicher Fabrikate, so ist dies in vielen Fällen - selbst für Spezialisten - nur mit großem Aufwand möglich. Das Problem liegt meist in unterschiedlichen Formaten der Massenspeicher, wie Bandaufzeichnungsverfahren oder Diskettenformate. In diesem Falle gibt es dann üblicherweise nur die Möglichkeit, anhand eines ausgedruckten Programmes (Programmlisting) die entsprechenden Eingaben, also die Programmeingabe, von Hand durchzuführen. Bei kleineren Programmen mag dies noch relativ einfach sein, bei größerem Programmumfang aber artet eine derartige Tätigkeit in „echte Arbeit” aus. Daß es aber, selbst bei zwei doch relativ unterschiedlichen Computern wie den beiden obengenannten Systemen, möglich ist, zeigen wir in diesem Artikel, und auch das Programmlisting ist mit abgedruckt. Außerdem hoffen wir, mit diesem Artikel Anregungen zu geben, wie solche Lösungen auch mit anderen Computern erreicht werden können. Ein sinnvoller Grund für derartige „Überspielungen“ ist also, zeitraubende Abtipparbeiten zu ersparen. Daß derartig übertragene Programme aber nicht unbedingt in der dann vorliegenden Form im „Empfänger-Computer“ lauffähig sind, leuchtet jedem ein, wenn er berücksichtigt, daß beide Computer stark unterschiedliche Basic-Befehlssätze haben. Wurde aber das Programm so geschrieben, daß es nur die Syntax und die Befehlsworte des C64 beinhaltet und außerdem keine systemspezifischen Peeks, Pokes usw., dann ist es sofort nach der Übertragung lauffähig. Inwieweit nach der Überspielung noch Änderungen durchzuführen sind, hängt also von dem zu übertragenden Programm ab. Ein anderer Grund für eine derartige Übertragung von Programmen kann aber auch sein, daß man mangels eines eigenen Druckers sein Programm, z. B. bei einem Bekannten, der den C 64 mit entsprechender Peripherie besitzt, ausdrucken kann. Bei uns war es so, daß es etwas Probleme gab, den zum CPC 464 gehörenden Drucker zu erhalten. Deshalb sannen wir auf einen Ausweg, um Sie doch mit Programmen für den. „Schneider“ versorgen zu können. Zwischenzeitlich haben wir natürlich den Drucker; aber es hat sich gezeigt, daß es drucktechnisch für uns besser ist, die Ausdrucke über den MPS 802 (den Commodore-Drucker) zu machen. (Anmerkung des Chefredakteurs: Der Autor flunkert, er beherrscht die Commodore-Systeme besser als die Schneider-Geräte, aber er bemüht sich!) (Anmerkung des Autors: Stimmt fast, aber es ist nur eine Frage der Zeit, wann ich den Schneider ebenso beherrsche! Außerdem warder Schneider-Drucker zum entsprechenden Zeitpunkt wirklich nicht lieferbar!) Scherz beiseite, nun wieder zum eigentlichen Thema. Zwei Stecker, etwas Draht und ein kleines Programm Wie geschieht die Ausgabe vom Schneider? Hierzu benützen wir den Druckerausgang des CPC, an dem die Daten bei jedem (List-) Druckvorgang ja ausgegeben werden und „lügen“ dem sendenden Schneider vor, er solle nun ausdrucken. An diesem Anschlußport aber haben wir - bereits vorher - mittels eines passenden Platinensteckers und einem lladrigen Kabel die Verbindung zu einem ebenfalls passenden Stecker und damit zum User-Port des C 64 hergestellt. (Dieses Verbindungskabel kann sehr leicht selbst hergestellt werden. Die entsprechende Tabelle finden Sie in diesem Artikel. Überprüfen Sie vor dem Anschluß und der Inbetriebnahme aber bitte mehrmals die Korrektheit Ihrer Lötarbeit, damit keiner der angeschlossenen Computer Schaden erleidet.) Den Rest erledigen die entsprechenden Befehlseingaben in die beiden Computer und natürlich vor allem das im C 64 stehende, wirklich sehr kurze Programm. Wer zweimal lügt... Der Trick an der ganzen Geschichte ist eigentlich sehr simpel. Wir „belügen“ nämlich auch den C64 und gaukeln ihm vor, daß die übertragenen Programmzeilen, welche vom Schneider stammen - und dann mittels des kleinen Programmes auf den Bildschirm des C64 geschrieben werden - von uns durch Tastendruck übernommen werden. Wir spielen dem guten Commodore also vor, wir hätten den Cursor auf die entsprechende Zeilennummer gestellt und mehrmals RETURN gedrückt. Da einige Zeilen darunter ein Sys-Befehl steht und auch dieser mit RETURN „beglückt“ wird, „springt“ der C 64 wieder in das Maschinenprogramm. Bei der Übertragung geschieht also folgendes: Vom CPC 464 wird ein Listing (Zeichen für Zeichen) gesandt, der C 64 gibt dieses dann jeweils auf dem Bildschirm aus und prüft nach jedem Zeichen, ob es sich um Chr$(13), also ein „Carriage Return“ handelt.
Zeile für Zeile Ist dies der Fall, dann ist nämlich eine komplette Basiczeile übertragen. Der C 64 beendet dadurch dann sein Programm und springt in den normalen Basicmode zurück. Doch bevor dies geschieht, haben wir seinen Tastaturpuffer manipuliert. Was dadurch bewirkt wird, haben wir bereits beschrieben. Der CPC sendet dann die nächste Zeile usw., bis zur Beendigung der Listingaus-gabe. Das war ganz pauschal betrachtet eigentlich alles. Im Detail ist es natürlich noch etwas komplizierter. Vor allem ist zu berücksichtigen, daß die Definition der Chr$-Zuordnung, also die Festlegung der Zeichensätze, unterschiedlich ist. Deshalb haben wir uns darauf beschränkt, alles in Großbuchstaben zu wandeln, denn grafische Zeichen nach einer Zeilen-Nummer akzeptiert der C 64 bei der Programmeingabe nicht. Außerdem vertauscht er immer Groß-/Kleinschrift. Mit etwas größerem Programmaufwand wäre es uns aber ganz sicher auch möglich gewesen, dieses Problem zu meistern. Aber wir wollen vor allem nur die Anregung geben, den „Zuschnitt“ auf ihre speziellen Wünsche können unsere Leser dann ggf. selbst durchführen. Aus diesem Grunde finden Sie nicht nur das Programm als Datalisting, sondern auch das Assembler-listing ist (kommentiert) abgedruckt.
Ehre, wem Ehre gebührt Auf ein paar Dinge wollen wir noch hinweisen:
Auch in Basic wart möglich! Nur so am Rande erwähnt: Die erste Version des Übertragungsprogrammes war ein reines Basicprogramm: um einiges länger, lief aber genauso problemlos. Nun noch die Bedienung des Programmes bzw. die Handhabung zur Übertragung. Stellen Sie das Verbindungskabel laut unserer Aufstellung her. Schließen Sie dieses an die beiden Computer an. Schalten Sie beide Computer ein und laden Sie das abgeschriebene Datalisting in den C64. Danach starten Sie dieses Programm mit RUN. Nach Beendigung des Programmlaufes geben Sie in den C 64 „NEW“ ein. Laden Sie nun das zu übertragende Programm in den CPC 464. Nach dem Ladevorgang teilen Sie dem „Schneider“ mit, daß er ein Listing drucken soll. Dies geschieht durch: List #8 Starten Sie das Commodore-Programm mit Sys 12*4096 oder mit Sys 49152 Nun können Sie verfolgen, wie Zeile für Zeile übertragen wird. Nach Beendigung der Übertragung könnten Sie zwar den C 64 „gewaltsam“ über die Tastenkombination RUN/ STOP-RESTORE aus seiner Wartestellung bringen, besser und sauberer aber ist es, dem CPC folgendes mitzuteilen: print #8,chr$(0);Vergessen Sie aber das Semikolon am Schluß nicht, sonst ist der Schneider in „Warteposition“. Ein wichtiger Punkt noch zum Schluß: Die zu übernehmenden Basiczeilen dürfen (inklusive der Zeilennummern) zwei C64-Zeilen nicht überschreiten, sonst vergißt der Commodore den Rest dieser Basiczeile. L. Miedel, Computer Schau Kommentiertes Assemblerlisting auf der nächsten Seite.
|