8-Bit-Nirvana Startseite  
?CPU FEELS BORED ERROR IN 13730
[ Home | Index | Werbung | Forum | Flohmarkt | Gästebuch | Links | Info ]

Sharp

Commodore-Floppyinterface für den Sharp MZ700

von Karl-Heinz Mau

[ Hardware | Software | Download ]

Das folgende Interface wurde für die 1571 von Commodore entworfen (und wird auch damit benutzt). Es spricht aber nichts dagegen, andere Laufwerke von Commodore mit gleichem Bus zu benutzen, wie z.B. die 1541 oder sogar die 1581.

Eine Warnung aber vorweg: wer nicht weiß, an welcher Seite ein Lötkolben heiß wird oder seiner Umwelt durch ständiges Zertrümmern von Gegenständen auffällt, sollte sich besser erst gar nicht am Nachbau der folgenden Schaltungen versuchen! Die hier aufgeführten Informationen wurden nach bestem Wissen zusammengestellt, Fehler sind aber trotzdem nicht auszuschließen. Für evtl. auftretende Probleme im Zusammenhang mit dieser Anleitung kann und will niemand die Haftung übernehmen, das Risiko liegt also ganz allein bei Dir.

Na, immer noch da? Dann los! ;-) Dieses Dokument ist in drei Teile gegliedert, zuerst wird der Zusammenbau der Hardware beschrieben, danach kommt die Erklärung der benötigten Software. Am Ende des Dokuments stehen alle Texte, Bilder und Programme zum Download zur Verfügung.


Teil I: Die Hardware

Es werden mindestens vier Leitungen zur 1571 benötigt: |ATN, CLK, DATA und GND. Für die Kommunikation mit dem Laufwerk müssen die Leitungen bidirektional arbeiten, d.h. daß sie sowohl als Eingabe- als auch als Ausgabeleitung funktionieren.

Der 8255 des MZ700 hat drei unbenutzte Ausgabeleitungen, die für das Interface benutzt werden. Leider gibt es keine drei unbenutzten Eingabeleitungen, daher wird der Joystickport dafür mißbraucht. Der Joystick kann nach wie vor benutzt werden, aber nicht während eines Diskettenzugriffs (sollte nicht weiter stören).

Fangen wir mit dem Schaltbild für das benötigte Interface an:


Schaltbild Interface MZ7xx-1571 Bild: Verbindung zwischen MZ700 und Interface

Die Hardware für das Interface ist von allem das Wenigste. Sie besteht nur aus einem IC vom Typ 7406, drei Widerständen zu je 1 kOhm, sechs Lötstützpunkten, einer 6-Pin DIN-Buchse (DIN45322), etwas Draht und einer kleinen Platine.

Der IC 7406 enthält sechs identische Inverter, drei davon werden vom Interface benutzt. Das Ausgangssignal des Inverters entspricht genau dem Gegenteil des Eingangssignals, aus einer logischen 1 wird eine logische 0 und umgekehrt.

Die drei Widerstände zu je 1 kOhm dienen dazu, die Eingangsleitungen auf logisch 1 zu ziehen (+5V).

PA4, PA5 und PA6 sind die drei unbenutzten Ausgabeleitungen des MZ700. JA1, JA2 und JB2 sind die Joystickeingänge, die für die Signale des Interfaces umfunktioniert werden. Die Nummern der ICs (4C und 8E) sind die Bauteilbezeichnungen auf der Bestückungsseite des MZ700-Motherboards.

Hier nun die benötigte Platine:


Bestückungsseite Bild: Bestückungsseite

Lötseite Bild: Lötseite

Da die Platine nur etwa 46 mm x 33 mm groß ist und nur wenige Bauteile enthält, empfehle ich den Aufbau auf einer Lochrasterplatine anstatt der Anfertigung einer gedruckten Schaltung (der Aufwand hierfür wäre zu hoch).


Bestückungsseite Bild: Bestückungsseite

Lötseite Bild: Lötseite

Im Anschluß an die Verdrahtung der Lochrasterplatine sind folgende Drahtverbindungen mit isoliertem Schaltdraht durchzuführen:

Von den Lötpunkten 38, 39 und 40 (siehe Bestückungsseite der Platine) sind je eine Drahtverbindung zum IC 8E, das ist die PIO 8255 im MZ700, an dessen Pins 38, 39 und 40 anzulöten. Hierzu empfehle ich den Anschluß von der Lötseite des MZ-Boards an das IC.

Dazu muß das Gerät natürlich geöffnet werden. Zuerst sind die 5 rückwärtigen Schrauben und die 3 Schrauben vorne unter der Tastatur herauszuschrauben. Dann Ausbau des Datenrekorders und/oder Plotters (sofern vorhanden). Hierzu die Steckverbindungen von der Platine lösen. Danach noch eine Schraube hinten rechts (war unter dem Datenrekorder bis jetzt verborgen) lösen. Nun sollte sich das Gehäuseoberteil am hinteren Ende nach oben anheben lassen. Es folgt daraufhin der Ausbau der Tastatur (je 1 Schraube an den beiden Masseleitungen), der TV-HF-Modulatorbox (3 Schrauben) und das Abziehen des Netz- und Lautsprechersteckers. Das Board ist mit 4 weiteren Schrauben befestigt, die man ebenfalls lösen muß. Durch Herausschieben aus den beiden vorderen Befestigungsschlitzen läßt es sich dann nach oben herausnehmen.

Die Lochrasterplatine selbst bleibt oberhalb des Boards, darunter ist nicht genügend Platz für die kleine, neue Platine. Auch die Lötpunkte 2, 4 und 14 werden mit der Unterseite des Boards, jedoch mit dem IC 4C (74LS367) verbunden.

Die IC-Nummern (IC 8E und IC 4C) sind oberhalb des Boards an den ICs selbst zu finden (Brille auf und suchen :) ). Der IC 4C (16 Pins) ist in der Nähe des Tape-Schiebeschalters und der IC 8E (40 Pins) unter der Tastatur in Platinenmitte zu finden.

Bei der Oberseite des Boards beginnt die PIN-Numerierung der ICs wie folgt (vergleiche als Beispiel auch das Layout des Bestückungsplans und der Lötseite für den IC 7406): Befindet sich die Kerbe auf dem IC (oder manchmal auch nur ein eingelassener Punkt) links vom Betrachter (IC-Beine zeigen dabei nach unten), dann beginnt die Zählung der Pins mit dem ersten Pin links unten am IC. Dies ist der Pin 1. Weiter geht es von links nach rechts bis zum Ende der Pinreihe. Der letzte Pin des IC 8E ist Pin 20, beim IC 4C ist es der Pin 8. Danach geht die Zählung mit dem gegenüberliegendem Pin (obere Reihe rechts) weiter und zwar nun von rechts nach links bis zum Ende der Reihe. Betrachtet man den IC von der Lötseite des Boards, beginnt die Zählung natürlich seitenverkehrt. Vorsichtshalber kann mit dem 7406 geübt werden, lieber zweimal überlegen, ehe man einen Draht an die MZ-IC's anlötet oder vorher auf Papier aufzeichnen.

Die DIN-Buchse habe ich rechts neben dem RGB-Ausgang, über dem I/O-Busanschluß eingebaut. Einen weiteren Platz dafür habe ich wegen der Enge nicht gefunden. Hierzu mußte ein 16mm großes Loch in die Kunststoffrückwand und dann auch noch passend in den dahinterliegenden inneren Metallrahmen gebohrt/gestanzt werden, an dem ich die Buchse mit ihren zwei Laschen mittels zweier M3-Schrauben und -Muttern befestigt habe. Die Anschlüße |ATN, CLK und Data der Lochrasterplatine sind wie folgt mit der Buchse zu verbinden:

PlatineBuchse
|ATN Pin 3
CLKPin 4
DATAPin 5
DIN 45322
Beschaltung der Buchse DIN 45322

Zusätzlich muß noch Pin 2 der Buchse mit einer nahegelegenen Masseleiterbahn des MZ verbunden werden. Die Pins 1 (SRQ) und 6 (Reset) habe ich (noch) nicht benutzt.

Nun muß das IC der Lochrasterplatine noch die Spannungsversorgung von 5 Volt erhalten. Hierzu habe ich mir eine Leiterbahn im MZ7xx mit dem Voltmeter ausgemessen. An den Lötpunkt für die +5 Volt an der Lochrasterplatine habe ich ein kurzes Stück Silberdraht von 1 mm Durchmesser angelötet und dieses an die gefundene Leiterbahn im MZ von oben angelötet. Durch den dickeren Draht findet die Platine freitragenden Halt im MZ7xx. Ich habe dazu die dickere Plusleiterbahn, die senkrecht zwischen IC 6C (74LS32, 14 Pin) und IC 7A (M60719, 60 Pins) ausgewählt und so "schwebt" sie zwischen dem Platz von IC 6C und IC 8C (7417, 14 Pins). Die 0 Volt Leitung habe ich mit Schaltdraht mit einer naheliegenden Masse verbunden, die übrigens fast um die ganze Platine des Boards außenherum verläuft. Messungen für +5V/0V sind exakt nur mit Voltmeter waehrend des Betriebes möglich, Ohmmetermessungen versagen wegen der Elko-Kapazitäten etc.

Die Hardware für das Interface ist hiermit eigentlich fertig, Du kannst den MZ700 wieder zusammenbauen und einen kurzen Funktionstest durchführen. Falls der Rechner noch läuft <g>, schalte ihn wieder aus, schließe das Diskettenlaufwerk an und lade die folgende Software.


Teil II: Die Software

Die folgende Software ist in der Lage, Speicherbereiche des MZ700 auf einem Commodore Laufwerk (1540, 1541, 1570, 1571 oder 1581) zu speichern, mehr als die oben beschriebene simple Hardware ist nicht nötig.

Die folgenden Funktionen werden von dieser Version unterstützt:

Mit dieser Version ist es noch nicht möglich, BASIC-Programme zu speichern oder zu laden. Dies wird aber in einer der nächsten Versionen implementiert sein.

Das Programm wird mit J A000 über den Monitor gestartet (es liegt von $A000 bis $AB3F im Speicher). Es erscheint folgende Eingabeaufforderung:

LSVCDIPF:

Jeder Buchstabe ist die Kurzform eines der möglichen Kommandos. Es folgt eine kurze Beschreibung der einzelnen Befehle:

LOAD lädt Maschinencode in den Speicher. Beispiel:
LSVCDIPF: L
Filename: MYFILE

Searching for MYFILE
Load to : C000
Searching for MYFILE
Loading MYFILE
00, OK,00,00

MYFILE ist der Name der zu ladenden Datei. C000 wird vom Programm vorgegeben, da das Programm mit dieser Startadresse abgespeichert wurde. Die Adresse kann abgeändert werden, falls das Programm in einen anderen Speicherbereich geladen werden soll.

SAVE speichert Maschinencode auf Diskette. Beispiel:
LSVCDIPF: S
Filename: MYFILE

Begin   : C000
End     : CA94
Saving MYFILE
00, OK,00,00

Der Name, unter dem die Datei gespeichert wird, ist MYFILE. In diesem Fall wird der Speicherbereich von $C000 bis $CA94 auf Disk gesichert.

VERIFY vergleicht die gesicherten Daten mit denen im Speicher. Dieses Kommando muß direkt nach dem Speichern ausgeführt werden, andernfalls könnte die Daten im Speicher bereits wieder geändert sein. Beispiel für einen erfolgreichen Vergleich:
LSVCDIPF: V
Searching for MYFILE
Verifying MYFILE
00, OK,00,00

Sollte es beim Speichern zu Fehlern gekommen sein (defekte Disk o.ä.), wird folgende Meldung ausgegeben:
LSVCDIPF: V
Searching for MYFILE
Verifying MYFILE
Verifying error
00, OK,00,00

Es empfiehlt sich, dann eine andere Diskette zu nehmen und nochmal zu speichern.

COMMAND erlaubt die direkte Eingabe eines Commodore-Floppybefehls:
LSVCDIPF: C
Command : U0>M1

00, OK,00,00.

In diesem Beispiel wird die Commodore 1571 vom 1541- in den 1571-Modus geschaltet.

DIR liest das Inhaltsverzeichnis der Diskette ein legt es im BASIC-Speicher (S-BASIC) ab $6BCF ab (analog zur Vorgehensweise des C64). Dann wird das Inhaltsverzeichnis auf dem Bildschirm ausgegeben. Falls der Bildschirm voll ist, wartet das Programm, bis eine Taste gedrückt wird und fährt dann mit der Ausgabe fort. Hier ein Beispiel:
LSVCDIPF: D
Searching for $
Loading $

0 "MYDISK1 " 00 2A
13 "FILE1" PRG
17 "GAME002" PRG
12 "PROGRAMM UTI" PRG
1 "MYFILE2" PRG
1 "MYTEST" PRG
618 BLOCKS FREE.

Die ersten drei Zeilen werden von der folgenden Directory-Anzeige überschrieben.

PRINT gibt das Directory auf dem externen Drucker und PLOT auf dem internen Plotter aus. Das Directory wird dabei im RAM gespeichert wie oben beschrieben und auch auf dem Bildschirm ausgegeben.

Falls der Bildschirm voll ist, muß nicht wie bei DIR eine Taste gedrückt werden. Das Programm wartet, bis das letzte auf dem Bildschirm dargestellte Zeichen ausgedruckt wird und fährt dann automatisch mit der Bildschirmausgabe fort.

Das aktuell zum Drucker/Plotter geschickte Zeichen wird auf dem Bildschirm invers dargestellt, so läßt sich der Fortschritt der Druckausgabe nachvollziehen.

FLOPPYSTATUS liest den aktuellen Floppystatus aus und zeigt ihn auf dem Bildschirm an, z.B. so:
LSVCDIPF: F
73,CBM DOS V3.0 1571,00,00

Oder so:
LSVCDIPF: F
74,DRIVE NOT READY,00,00

Der Quellcode des Programms ist im Archiv enthalten. Das Programm darf und soll den eigenen Bedürfnissen angepaßt werden, Änderungen sind also ausdrücklich erlaubt!

Eine neue, erweiterte Version des Programms wird folgen. Damit wird es dann möglich sein, Basic-Programme zu laden und zu speichern (LOAD und SAVE) und komfortabel mit RENAME, SCRATCH, FORMAT, RESET, MODE usw. direkt Aktionen auf Diskette durchzuführen. Die jetzige Version speichert nur die Startadresse in den ersten beiden Bytes der Datei. Die nächste Version wird zusätzlich auch die Ausführungsadresse speichern. Das Zwischenspeichern der Directory im RAM wird bei der nächsten Version wegfallen. Bitte etwas Geduld.

 
Quicklinks Hersteller:
Über dieses Feld kannst du die verschiedenen Hersteller anwählen. Falls du gezielt ein bestimmtes Gerät ansehen willst, findest du es im Index.

Quicklinks Sharp:
Über dieses Feld kannst du die einzelnen Geräte von Sharp anwählen.

Suchfunktion:
Zusammengesetzte Begriffe in Anführungszeichen eingeben. Ein Pluszeichen vor einem Suchbegriff erzwingt dessen Vorhandensein im Ergebnis, ein Minuszeichen schließt einen Begriff entsprechend aus.

Computer des Tages:

Valid HTML 4.01! Valid CSS!

Projekt 64'er Online Spam Poison


[ Index | Werbung | Forum | Flohmarkt | Gästebuch | Links | Info | Impressum/Datenschutz | News | Credits | Webmasters | Seitenanfang ]
(C) 1997-2024 by Sascha Hoogen/8-Bit-Nirvana, Bauplan (C) Karl-Heinz Mau, alle Rechte vorbehalten. Verwendete Marken- und Produktnamen sind Handelsmarken, Warenzeichen oder eingetragene Warenzeichen der entsprechenden Inhaber.