You need a 2 x 13pins print card connector for the connection to the
MZ700.
Next you have to assemble a flat cable with 13 wires to this connector. The marked side (usually a red or a blue strip) of the cable is to connect with pin 1 of the connector.
To the free end of the cable a 25pins SUB-D female connector with housing is to be soldered as shown in the circuit diagram above.
Don't forget to mount the housing before soldering the cable. :-) For this I rolled up the flat cable and I protected the flat cable against mechanical load (breaks and so on) with a small piece of spaghetti tubing.
The cable is now ready to connect it to the printer connector of your MZ700.
The connector does not have a twist protection, therefore it must be paid attention always to the fact that the characterized vein of the flat cable is on the right when attaching from the rear. You can mark the plug to prevent confusion and errors.
The printer selector switch in the MZ700 must be switched now to external operation. The MZ700 can serve either only the plotter or only the printer. An optional operation of plotter and printer can be attained therefore unfortunately only by switching of this switch.
For this the MZ700 must be opened and screwed on. You'll find this switch
nearby the connector for the plotter. For printer operation this must be
operated to its left position, if the keyboard is in
front of you (right position is marked with INT on the motherboard
for the internal plotter operation). For this see the motherboard.
Additional technical information follows:
|
|
The first call to the program should be done by CALL $B803 to initiate and to reset the output port and the printer into the operating condition, otherwise the program cannot work properly. This call should be done first too after each RESET of the MZ700. Afterwards the program can be called in each case by the address $B800.
Do not call the program constantly by the initiation address $B803. Escape sequences sent will not take effect if you do. The printer is reset every time you call the program by $B803 and escape sequences sent may be lost.
During a Busy status of the printer (end of paper/back-up, power off, off-line and so on) the program can be aborted by SHIFT+BRK. The program loops waiting for the ready status of the printer and in the meanwhile the break condition is checked too. The break condition is indicated to the caller by setting the zeroflag. Your own application can react to this condition if possible (abort, message).
Example:
LD A,PRTBYTE ; load character
to be printed
CALL $B800 ; execute
print
JP Z,BREAK ; break
condition
The character to be printed is converted from the MZ specific code
into the ASCII code if possible.
For this the program is to be called by CALL $B000. A non-zero value is to be stored into $B004 to invoke a return to the caller at the end of the print program:
LD A,$FF
; load a non-zero value into the accumulator
LD ($B004),A
; transfer the value to the print routine
CALL $B000
; execute the print routine
If the storage at location $B004 contains $00 no return takes place, but it takes place a return to the monitor ROM. Thereby the program can output also a screenshot of the present screen contents by the monitor command JB000.
You have to inform the print routine too if the output is to direct to the printer or to the plotter. Set $B003 to $50 if the output is to direct to the plotter, otherwise set $B003 to any other value:
LD A,$FF
; load a non-zero value into the accumulator
; (return to me, don't return to Monitor)
LD ($B004),A
; transfer the value to the print routine
LD A,$50
; load $50 for the plotter
LD ($B003),a
; transfer the value to the print routine
CALL $B000
; execute the print routine
You can stop printing at any time by pressing SHIFT and BREAK coincidentally. If pressed, the zeroflag is set and your program can check this condition:
LD A,$FF
; load a non-zero value into the accumulator
; (return to me, don't return to Monitor)
LD ($B004),A ; transfer the
value to the print routine
LD A,$49
; load $49 to output to the printer
LD ($B003),A ; transfer the
value to the print routine
CALL $B000 ; execute
the print routine
JP Z,BREAK ; break
condition
You'll find more information in the inline documentation of the source of the program hardcopy.lst.
The byte just in work on the output device will be inverted on the screen like a cursor. You can see the output progress by the inverted character on the screen.