Commodore Floppy 1541-II für den Z1013

Dirk Ambras

FUNKAMATEUR 6/1992 S. 319


Die Speicherung von Computerdaten auf Magnetbandkassetten genügt bezüglich Speicherumfang und -sicherheit durchaus. Der Zugriff zu Dateien ist aber alles andere als komfortabel und beim heutigen Preis von Diskettenlaufwerken auch nicht mehr zwingend. Der folgende Beitrag beschreibt die wenig aufwendige Anpassung des Z1013 an die Commodore-Floppy 1541-II.

Der C64 und seine Floppy sind normalerweise über ein serielles Bussystem (IEC-Bus) miteinander verbunden. Durch eine kleine Außenbeschaltung, ähnlich der des C64 [1], wird der PIO U855 die Arbeit mit dem IEC-Bus ermöglicht. Floppy und Z1013 bleiben unverändert. Die IEC-Operationen sind zeitkritisch; das Programm ist daher für die Z1013-Arbeit mit 2 MHz zeitoptimiert und läuft sehr wahrscheinlich nur mit diesem Takt. Softwareseitig muß das abgedruckte MC-Programm eingetippt werden. Es arbeitet mit dem normalen Userport 0 des Z1013, benutzt RST 20h-Rufe und den erweiterten Sprungverteiler (Adressen FFBBh bis FFFFh) nach [2].

Menüfunktionen

Die Startadresse des "Disk Monitor" ist E000h. Es erscheint ein Menü, das folgende Funktionen anbietet: Laden von- und Speichern auf Diskette, Kopieren von Kassette (HSAVE!) auf Diskette oder Kopieren auf eine zweite Diskette, Anzeige der Directory, direktes Senden von Befehlen an die Floppy oder einen Centronics-Drucker, Auswählen einer Floppy unter mehreren. Die Laderoutine liest grundsätzlich erst die Directory (maximal 144 Einträge), aus der man dann mit den Tasten Cursor hoch/tief (0Bh/0Ah) das gewünschte Programm auswählt. Ein Tastendruck beendet dabei vorzeitig das Auflisten. Zeigt der Cursor auf den Namen, drückt man ENTER; soll nichts geladen werden, STOP (03h). Unterschieden wird Kommando "L" für Laden und evtl. Starten von Programmen (Typ "C") sowie "l" {Anm.:kleines L} für Laden auf andere Speicherbereiche und Unterdrücken eines Autostarts. Die Save-Routine verlangt bei "Adressen:" die Eingabe von Anfangs-, End- und gegebenfalls Startadresse (durch Leerzeichen getrennt). Name und Typ werden wie beim Headersave abgefragt. Sind Name und Typ schon vergeben, wird wahlweise abgebrochen oder die alte Datei automatisch gelöscht und ein neuer Schreibversuch gestartet. Die Wahl trifft der Nutzer durch die Belegung einer Steuerzelle. Größere PCs erzeugen dabei aus der alten eine BAK-Datei, um Datenverlust vorzubeugen. Das habe ich jedoch nicht für nötig gehalten, weil es die Bearbeitungszeit der SAVE-Anweisung verlängert und das Programm noch umfangreicher machen würde. Die Directory wird stets ohne Speicherverlust angezeigt; im Menübetrieb ist darüber hinaus die Simultanausgabe auf einen über Centronics angeschlossenen Drucker möglich. Zusätzlich erfolgt die Anzeige der Anzahl der gelisteten Files. Ein direkter Befehl wird unbearbeitet an die Floppy übermittelt und muß deshalb die in [3] vorgeschriebene Syntax beachten. Möglich sind u.a. Formatieren der Diskette sowie Löschen, Umbenennen und Zusammenfassen von Files. Danach werden automatisch der Fehlerkanal gelesen und das Ergebnis der Aktion oder die OK-Meldung angezeigt. In [3] sind die möglichen Meldungen erklärt. Man kann Befehle, insbesondere ESC-Sequenzen, auch an den Drucker abschicken. Der letzte Punkt ist die Auswahl des aktuellen Geräts. Die Floppy besitzt dazu zwei DIP-Schalter, mit denen sich die Geräteadresse zwischen 8 und 11 variieren läßt. Es können also vier Floppies gleichzeitig am Bus angeschlossen sein. Jede Operation richtet sich nur an das vom Nutzer ausgewählte Gerät. Drücken der STOP-Taste beendet die Menüarbeit - das Programm springt RST 38h an.

Sprungverteiler

Das Programm beginnt mit einer Sprungtabelle, durch die eine Diskettenarbeit aus anderen Programmen heraus möglich ist (CALL adr.). Alle Routinen - mit Ausnahme des Menüs - kehren in das rufende Programm zurück.

Beschreibung der Floppy

Die Floppy 1541-II ist ein sogenanntes intelligentes Laufwerk und organisiert das physische Lesen und Schreiben der Diskette selbst. Die normale Schreib/Lese-Geschwindigkeit liegt etwas höher als die des 2-MHz-Headersave. Verfügbar sind 170 KByte je Diskettenseite. Die Floppy ist ein selbständig arbeitsfähiger Computer, der RAM und ROM besitzt und mit dem gleichen Prozessortyp (6510) wie der C64 arbeitet. Es ist z.B. möglich, ein Programm in ihren RAM zu schreiben und ausführen zu lassen oder einzelne Diskettenblöcke gezielt zu manipulieren. Es gibt einen "Floppyspeeder" für den C64, der die Übertragungsgeschwindigkeit 6,8fach beschleunigt. Diesen Speeder auf den Z1013 zu übertragen, gelang mir bisher nicht. Ich wäre einem C64-Nutzer für Hilfe (dokumentierter Assemblerquelltext?) sehr dankbar. Es gibt im Handel außerdem Bausätze zur parallelen Datenübertragung. Sie verlangen aber einen Eingriff in die Floppy und benötigen andere Software. [4] enthält interessante Beispielprogramme für direkten Zugriff auf die Diskette sowie ausführliche Tips zu Pflege, Justierung und Reinigung des Laufwerkes. Die Nutzer der Routinen E01Bh bis E030h finden in [1] eine eingehende Beschreibung der IEC-Datenübertragung. Ein neues Gerät kostet inzwischen noch um die 270 DM, gelegentlich auch noch weniger, und mit etwas Geduld bekommt man aber auch ein gutes Gebrauchtgerät für vielleicht 150 DM. Ich empfehle 5,25"-DS-Disketten.

Tricks nebenbei

Die Z1013-Aufzeichnungen sind mit denen des C 64(128) kompatibel. Das ermöglicht für den Z1013 den Zugriff auf eine sehr große Vielfalt an Daten, z.B. 200 Zeichensätze und jede Menge Grafiken. Allein in Deutschland wurden mindestens 1 Million C64 verkauft. Sicher gibt es auch C64-Nutzer, die Übertragungswünsche haben. Es ist sogar zulässig, C64 und Z1013 gleichzeitig mit dem Bus verbunden zu haben. Keinesfalls dürfen jedoch beide Rechner zur selben Zeit einen Buszugriff durchführen. Sicher ist auch ein Anschluß anderer Commodore-Geräte möglich, z. B. eines Druckers. Bediensoftware läßt sich mit den Routinen E01Bh bis E030h programmieren. Ausprobiert habe ich es nicht, und eine Garantie kann auch nicht übernommen werden.

 

Bild 1: Schaltung des Floppy-Interface
 

 

Bild 2: Leitungsführung der Platine für das Interface
 

 

Bild 3:

Bestückungsplan der Interfaceleiterplatte. Die Masseanschlüsse von Z1013 und 1541-II sind miteinander verbunden; der 3x5polige Stecker wird rechts auf die Leiterplatte geklebt.

 

 

Bild 4: Steckerbelegung von Z1013 (links) und 1541-II
(Blick auf die Lötseite)

 

Sprungverteiler von 1541.bin
Adr. Funktion Parameter Besonderheiten
E000h Menüruf - -
E003h DLOAD (siehe [2]) kompatibel zu LORUF Auswahl über Directory
E006h DSAVE (siehe [2]) kompatibel zu SARUF -
E009h Directory anzeigen - Nur auf Bildwiederholspeicher
E00Ch Befehl senden - Tastatureingabe
E00Fh Befehl senden (HL): Befehlstext Textende: 0
E012h Meldung der Floppy lesen - Text auf Bildwiederholspeicher
E015h Befehl an Drucker - Tastatureingabe; Ausgabeport 50h
E018h Initialisieren - zu Beginn der IEC-Arbeit aufrufen
       
Routinen zum Aufbau eigener IEC-Programme
Adr. Funktion Parameter Besonderheiten
E01Bh Eröffnen Leseoperationen C: Sekundäradresse -
E01Eh Lesen beenden - auch für Abbruch
E021h Eröffnen Schreiboperationen C: Sekundäradresse -
E024h Schreiben beenden - -
E027h File mit Namen eröffnen (HL): Text
C: Sekundäradresse
Textende: 0
E02Ah File schließen C: Sekundäradresse  
E02Dh Byte an Floppy senden (HL): Byte HL:=HL+1
Fehler nach AF
E030h Byte von Floppy lesen Byte nach (HL) HL:=HL+1
Fehler nach AF
       
Steuerzellen
Adr. Funktion Parameter Besonderheiten
E033h Nummer des aktuellen Geräts Floppy: 8...11
Drucker: 4
für jede IEC-Aktion
E034h File existiert bei Save schon = 0 : Save-Abbruch
<>0: überschreiben
-
E035h Fehlercode (0 bis 74) - siehe [3]

 

Programmlisting 1541.bin   (Hex-Dump)
Binärdatei: 1541.bin   (Startadresse: E000h - Endadresse: E97Fh - Startadresse: E000h)

 

Erfahrungen

Das Interface arbeitet seit einem halben Jahr fehlerfrei. Ein Nachbau funktioniert seit vier Monaten ebenso gut. Deshalb wurde auf eine Verify-Routine verzichtet. Die Software ist außerdem niemals abgestürzt, aber andererseits nicht vor Überschreiben geschützt. Das kann zu Problemen führen. Aus technischen Gründen ist jedes geladene Programm auch 2 Byte länger als abgespeichert.
Der Sprungverteiler bewirkt eine schnelle Umrüstung von Software auf Diskettenarbeit, z.B. MicroWord oder KC-BASIC. Es muß nur geändert werden:

CD F1 FF ==> CD 03 E0 (LOAD) und
CD F4 FF ==> CD 06 E0 (SAVE)

Bezug

Interessenten können eine doppelte Headersave-Aufnahme des MC-Programms erhalten (Leerkassette an D. Ambras, Heimstättenweg 63, O-4073 Halle, PF 17/29, Rücksendung per Einschreiben und Nachnahme 16,90 DM). Kleinere Anwenderwünsche wie anderer Speicherplatz, anderer PIO-Port oder Erzeugen von BAK-Dateien lassen sich dabei noch berücksichtigen. Für umfangreichere Änderungen (z.B. Anpassung an KC) steht auch der komplette Assemblerquelltext zur Verfügung (+25 DM), ggf. auch im KC-Format.

Literatur

[1] C64 intern, Data Becker GmbH Düsseldorf
[2] Lühne, V.: Sprungverteiler für Z1013, FUNKAMATEUR 37 (1988), H. 10, S.484
[3] Disk Drive 1541-II, Benutzerhandbuch, Commodore Büromaschinen
[4] Hecht: Das große Commodore 64 Buch, Data Becker GmbH Düsseldorf


*

Alle im Artikel genannten Preise, Zeitangaben, Anschriften und Bezugsmöglichkeiten beziehen sich auf das Erscheinungsdatum im FUNKAMATEUR (Juni 1992) und sind daher wahrscheinlich nicht mehr aktuell. Die Berichtigung aus Heft 8/92 ist in diesem Artikel mit eingearbeitet. Von der 1541 sind natürlich keine Geschwindigskeits-Rekorde zu erwarten, sie läuft genauso schnell (bzw. langsam) wie am C64. Die Commodore-Floppylaufwerke sind natürlich heutzutage auf Floh-Märkte oder Internet-Auktionen (Ebay oder andere) noch billiger zu haben (ca. 10-20 EUR). Selbstverständlich sind auch andere für den C64 nutzbare Floppys anschließbar, so z.B. die VC1541, 1570/71, 1581 und kompatible anderer Hersteller. Der V40098 ist pin- und funktionskompatibel mit CD40098 bzw. HEF40098 (Datenblatt: HEF40098). Die Schaltung entspricht der im C64 verwendeten. Sie ist dort allerdings mit einem 7406 realisiert.
Noch was: Da dazu eine Anfrage gekommen ist: Der 15polige Stecker wird auf dem freien Platinenstück aufgeklebt und mit Drahtstücken mit den entsprechenden Punkten auf der Platine in freier Verdrahtung verbunden.

* Da die Software selbstmodifizierend ist, läuft sie nur im RAM. Sie ist also nicht ROM-fähig. Bei einem Z1013 mit weniger als 64k RAM ist darauf zu achten, daß der Bereich E000h bis EBFFh mit RAM ausgerüstet ist. Der Assemblerquelltext des Programms steht mir leider nicht zur Verfügung, so daß Nachfragen hiernach zweckmäßigerweise entfallen können.
* Wichtig ist auch, daß der Sprungverteiler (Adressen FFBBh bis FFFFh) nach [2] installiert ist, idealerweise der Brosig-Monitor.
 

Vielen Dank an Dirk Ambras für die Genehmigung zur Veröffentlichung.


Internetbearbeitung für Z1013.de von Holger Krull
Stand: 26. Juli 2008