Sharp logo
MZ-700 Centronics interface 
( Eigenbau )  
Beschreibung der Hardware
Circuit diagram of the  Centronics-Interface
Schaltbild für das Adapterkabel

Zur Herstellung der Verbindung zwischen dem MZ-700 und dem Centronics-Druckerkabel ist ein Adapterkabel wie im Schaltbild dargestellt zu löten.


Print card connector 2 x 13pins!
Steckkarten-Verbinder


Zum Anschluß an den MZ-700 wird ein 2 x 13poliger Steckkarten-Verbinder benötigt.

Leider ist der im Bild gezeigte Steckkarten-Verbinder nur 2 x 10polig, denn es war kein anderes Foto vorhanden, aber er entspricht dem gleichen Typ des hier verwendeten Steckkarten-Verbinders mit 2 x 13 Polen.

An diesen Verbinder ist nun ein Flachbandkabel AWG 28 ( 14adrig ) zu montieren. Die übrige, äußere Ader ( nicht die markierte! ) muß abgetrennt werden. Die markierte Ader ( meist roter oder blauer Streifen ) ist dabei mit dem Pin 1 des Steckers zu verbinden.

An das freie Ende des Kabels ist eine 25polige SUB-D-Buchsenleiste mit Gehäuse, wie im obigen Schaltbild gezeigt, anzulöten.

Vor dem Anlöten empfiehlt sich unbedingt das Aufstecken des Gehäuses über das Kabel! :-) Hierzu habe ich das Flachbandkabel "eingerollt" und mit einem kleinen Stück Isolierschlauch vor mechanischer Beanspruchung ( Knicken etc. ) geschützt.

Das fertige Adapterkabel wird dann mit dem Stecker des Druckerkabels verbunden und an die Platinensteckverbindung am MZ-700, welche links neben Resettaster und Lautstärkeregler sitzt, eingesteckt ( ist auch am MZ-700 mit 'PRINTER' beschriftet ). Dazu muß vorher, falls noch vorhanden, die Schutzabdeckung am MZ-700 abgeschraubt werden ( 2 Schrauben ).

Der Steckkarten-Verbinder hat keinen Verdrehungsschutz, deshalb muß immer darauf geachtet werden, daß sich die gekennzeichnete Ader des Flachbandkabels beim Anschließen von hinten gesehen auf der rechten Seite befindet ( am Besten ein für alle Mal eine Markierung am Steckkartenverbinder anbringen ).

Der Druckerwahlschalter im MZ-700 muß nun auf externen Betrieb umgeschaltet werden. Der MZ-700 kann nämlich entweder nur den Plotter oder nur den Drucker bedienen. Ein wahlweiser Betrieb von Plotter und Drucker ist daher leider nur durch Umschaltung dieses Schalters zu erreichen.

Dazu muß der MZ-700 geöffnet und aufgeschraubt werden ( siehe hierzu die Beschreibung beim 1571 Interface ). Der Schiebe-Schalter befindet sich bei den Anschlüssen für den Plotter. Für Druckerbetrieb muß dieser nach links betätigt werden, wenn die Tastatur bedienbar vorn ist. ( rechte Stellung ist mit INT auf der Platine für den internen Plotterbetrieb markiert ).

Technische Infos zu den Signalen:

MZ-700 printer bus
Pin
Signal
1
RDP
3 - 17
RD1 - RD8
19
IRT
21
RDA
23
STA
25
GND
 
SUB-D connector
Pin
Signal
1
STROBE
2 - 9
D0 - D7
10
ACK
11
BUSY
16
RESET
18 - 25
GND
Beschreibung der Software
Aufruf aus eigenen Programmen mit Mzprint.mzf

Die Software kann über CALL $B800 aus eigenen Maschinencode-Programmen aufgerufen werden. Das Druckerbyte muß dazu vorher in den Accu geladen werden. ( Siehe auch Dokumentarzeilen im Programm selbst ).

Beim ersten Aufruf sollte das Programm mit CALL $B803 aufgerufen werden mit dem zu übergebende Druckerbyte im Accu. Hierbei wird das Ausgabeport und der Drucker per Reset in den Betriebszustand versetzt, sonst läuft nix. Der Aufruf über $B803 muß nach jedem Einschalten des MZ-700 erfolgen, da nach Power off die Ports vom Programm neu initialisiert werden müßen. Danach kann das Programm dann jeweils über die Adresse $B800 gerufen werden.

Beim ständigen CALL über die Init-Adresse $B803 gehen vorher eventuell gesendete Escape-Sequenzen u.U. wieder verloren, da ja der Drucker wieder zurückgesetzt wird.

Während eines Busy-Status des Druckers ( Papierende / -stau, Power off, offline etc. ) kann das Programm mit SHIFT+BRK abgebrochen werden. Es wartet in einer loop auf den Ready-Status und fragt dabei die Break-Bedingung ständig ab. Die Break-Bedingung wird dem aufgerufenen Programm über das gesetzte Zeroflag mitgeteilt und die eigene Anwendung kann so individuell darauf reagieren ( Abbruch, Meldung etc. ).

Beispiel:

	LD	A,DRUBYTE ; zu druckendes Byte in den Accu laden 
	CALL	$B800	  ; Druckroutine ausführen 
	JP	Z,BREAK	  ; BRK wurde gedrückt,
	                  ; daher zur eigenen BREAK-Routine  

Das zu druckende Byte wird vom MZ-700-spezifischen Code so weit als möglich in den ASCII- Code umgewandelt.

Bildschirmausgabe mit Hardcopy.mzf

Eine Beispielanwendung ist die Hardcopy der Bildschirmausgabe. Das Programm kann eine Hardcopy sowohl über Drucker als auch über Plotter ausgeben.

Hierzu muß das Programm mit CALL $B000 gerufen werden und in die Adresse $B004 ein Wert von non-zero eingespeichert werden, damit ein Return zum aufrufenden Programm stattfindet:

	LD	A,$FF	  ; non-zero Wert in den Accu laden 
	LD	($B004),A ; und an Druck-Programm übergeben 
	CALL	$B000	  ; Druck-Programm ausführen  

Bei einem Wert von $00 auf der Adresse $B004 findet kein Return statt, sondern es findet eine Rückkehr zum Monitor-ROM statt. Hierdurch kann das Programm auch einen Sreenshot des derzeitigen Bildschirminhaltes über den Befehl 'JB000' ausgeben.

Ferner muß noch das Byte auf der Adresse $B003 gesetzt werden, um dem Programm mitztuteilen, wohin die Ausgabe gehen soll ( Plotter oder Drucker ). Für die Ausgabe auf den Plotter ist es auf hex. 50 zu setzen und für die Ausgabe auf den Drucker irgendein anderer Wert ungleich $50:

	LD	A,$FF	  ; non-zero Wert in den Accu laden 
			  ; (return to me, don't return to Monitor)
	LD	($B004),A ; Wert an Druckprogramm übergeben
	LD	A,$50	  ; für Plotter-Ausgabe $50 in den Accu laden
	LD	($B003),A ; und an Druckprogramm übergeben
	CALL	$B000	  ; Druck-Programm ausführen  

Während der Ausgabe des Bildschirminhaltes und auch beim Warten auf den Ready-Zustand des Ausgabegerätes kann das Programm mit SHIFT+BRK abgebrochen werden. Das gesetzte Zeroflag weist hierbei auf diese Bedingung hin, so daß ein eigenes Programm hierauf reagieren kann:

	LD	A,$FF	  ; non-zero Wert in den Accu laden 
			  ; (return to me, don't return to Monitor)
	LD	($B004),A ; an Druck-Programm übergeben
	LD	A,$49	  ; für Drucker-Ausgabe $49 in den Accu laden
	LD	($B003),A ; und an Druck-Programm übergeben  
	CALL	$B000	  ; Druck-Programm ausführen  
	JP	Z,BREAK	  ; BRK wurde gedrückt,
	                  ; daher zur eigenen BREAK-Routine

Screenshot vom Start des Hardcopy-Programms

Beispiel der Ausgabe vom Hardcopy-Programm

Für weitere Informationen kann auch die Doku in der Source weiterhelfen.

Ein inverses Zeichen auf dem Screen zeigt den Fortschritt bei der Ausgabe als "Cursor" an, was bei Plotterbetrieb eine zusätzliche Hilfe darstellt. Es wird das gerade zu druckende Zeichen invers dargestellt.

Download der kompletten Beschreibung und der Software einschließlich Quellcode ( 33 Kbytes ).


Zurück zum Anfang der Seite Home

letzter Update 4. August 2002
sharpmz@sharpmz.org