![]() MZ-700 Centronics interface
( Eigenbau )
|
|||||||||||||||||||||||||||||||||||||||
Beschreibung der Hardware | |||||||||||||||||||||||||||||||||||||||
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:
|
|||||||||||||||||||||||||||||||||||||||
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 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 ). |