Ein frei verschiebbarer Druckertreiber für den Zl0l3
Der in Erfurt angebotene E/AModul für den Z 1013 ist gut geeignet,
einen Drucker mit seriellem Eingang anzusteuern. Dazu ist es aber erforderlich,
die an den Drucker zu übergebenen Zeichen so auzubereiten, daß
die in einem Byte vorliegende Information Bit für Bit nacheinander
(seriell) an den Drucker ausgegeben wird. Außerdem muß der
Computer bei der Ausgabe der Zeichen sich unaufhörlich mit dem
Computer verständigen, wann das nächste Zeichen gesendet
werden kann.
Diese und weitere Aufgaben erfüllt der hier vorgestellte Druckertreiber.
Damit nun jeder Z 1013-Freak diesen Druckertreiber an seine eigene Hardwarekonfiguration
anpassen kann, wird nicht ein fertiges Programm sondern eine ASSEMBLER-Quelle
angegeben. Wer die Programme der Dresdener Softwarekassette besitzt, kann
mit dem Texteditor die Quelle eintippen (z.B. ab Adresse 3000H)
und anschließend mit dem ASSEMBLER in ein Maschinenprogramm übersetzen
lassen.
Die Lage des Maschinenprogramms im RAM wird in der ORG-Anweisung festgelegt.
Es muß nicht unbedingt auf der Adresse E800H beginnen.
Legt man das Programm auf eine andere Adresse, muß man aber in
der aufrufenden Software die dort vielleicht schon vorgesehene Ansprungadresse
ändern. Will man z. B. im KC-BASIC+ den Druckertreiber auf E400H
festlegen, so wird ab Adresse 2FDH der Befehl C3 00 E4
eingetragen.
In der Zeile 3 wird durch PIOD die verwendete Kanaladresse
für den E/A-Modul festgelegt. Soll statt seiner die interne PIO verwandet
werden, so muß anstelle der 34H die Adresse 00H
eingetragen werden.
Peter Berg/Uwe Rehn
practic 4/88
PN V24-INTERFACE
ORG 0E800H
PIOD: EQU 34K
PIOC: EQU PIOD+1
JMP E82F
JMP E82B
JMP E827
JMP E84f
JMB E84B
JMP E847
SLA A
JR M21-#
INIT:
PUSH AF ;PIO-Init
LD A,0CFH
OUT PIOC ;BIT-E/A
LD A,0FEH
OUT PIOC ;BIT 0->A
LD A,1
OUT PIOD ;Stop
POP AF
RET
E827:
CMP 1EH
JRZ M07-#
E82B:
CMP 0DH
JRZ M08-#
E82F:
SLA A
CALL M09
RET
M07:
LD A,0DH
M08:
CALL E82F
LD A,0AH
JR E82F-#
M12:
LD A,0DH
M13:
CALL E84F
LD A,0AH
JR E84F-#
E847:
CMP 1EH
JRZ M12-#
E84B:
CMP 0DH
JRZ M13-#
E84F:
SLA A
OR A
JPPO M09
SCF
JR M21-#
M09:
SCF
CCF
M21:
PUSH KL
PUSH BC
PUSK AF
CALL M14
POP AF
LD B,9
M16:
NOP
NOP
OUT PIOD
RRA
CALL M15
DJNZ M16-#
INC HL
LD A,1
OUT PIOD
CALL M15
POP BC
POP HL
RET
M15:
PUSH BC
LD B,0AH
M17:
DJNZ M17-#
POP BC
RET
M14:
IN PIOD
BIT 4,A
RZ
LD C,0
M19:
LD HL,1000H
M18:
DEC HL
BIT 7,H
JRZ M18-#
IN PIOD
BIT 4,A
RZ
DEC C
JRNZ M19-#
RST 20H
DB 2
DB 'TIME-OUT',8DH
M20:
IN PIOD
BIT 4,A
RZ
JR M20-#
END