TITLE DMU.MAC SUBTTL Betriebsart des Druckers K6313 / 07.12.87 / gu. K6313 EQU 1 ; Tabellen fuer K6313 in RFE 4/87 K6311 EQU 0 LX86 EQU 0 .XLIST .Z80 PAGE 92 MPUSH MACRO X1,X2,X3,X4,X5,X6,X7,X8 PUSH X1 IFB EXITM ENDIF PUSH X2 IFB EXITM ENDIF PUSH X3 IFB EXITM ENDIF PUSH X4 IFB EXITM ENDIF PUSH X5 IFB EXITM ENDIF PUSH X6 IFB EXITM ENDIF PUSH X7 IFB EXITM ENDIF PUSH X8 ENDM MPOP MACRO X1,X2,X3,X4,X5,X6,X7,X8 POP X1 IFB EXITM ENDIF POP X2 IFB EXITM ENDIF POP X3 IFB EXITM ENDIF POP X4 IFB EXITM ENDIF POP X5 IFB EXITM ENDIF POP X6 IFB EXITM ENDIF POP X7 IFB EXITM ENDIF POP X8 ENDM MDBYTE MACRO B0,B1,B2,B3,B4,B5,B6,B7,B8,B9,BA,BB,BC,BD,BE,BF DB B0 IFB EXITM ENDIF DB B1 IFB EXITM ENDIF DB B2 IFB EXITM ENDIF DB B3 IFB EXITM ENDIF DB B4 IFB EXITM ENDIF DB B5 IFB EXITM ENDIF DB B6 IFB EXITM ENDIF DB B7 IFB EXITM ENDIF DB B8 IFB EXITM ENDIF DB B9 IFB EXITM ENDIF DB BA IFB EXITM ENDIF DB BB IFB EXITM ENDIF DB BC IFB EXITM ENDIF DB BD IFB EXITM ENDIF DB BE IFB EXITM ENDIF DB BF ENDM MDB$ MACRO TEXT DB '&TEXT' DB '$' ENDM MDB MACRO TEXT DB '&TEXT' ENDM ; Positionieren einer Textkette im Bildspeicher TXPOS MACRO TADR,CADR DW TADR ;TADR = Adresse der Textkette DW CADR ;CADR = Cursorposition ENDM LINES EQU 16 ;Anzahl der Zeilen auf Bildschirm WIDTH EQU 64 ;Zeichen pro Bildschirmzeile .SALL .LIST ; ***************************************** .PRINTX * Drucker K6313 einstellen * ; ***************************************** DMU:: LD SP,STACK LD HL,MVER LD B,SELP-MVER LOMERK:: LD M,0 INC HL DJNZ LOMERK ;Merkzellen geloescht LD A,0CH CALL PUTA ;Bildschirm loe START:: LD HL,(1) LD BC,42 ADD HL,BC LD BC,K63RET PUSH BC ;RETURN-Adresse fuer BIOS JP (HL) ;CALL Druckerstatusabfrage TXNB1:: MDB$ TXNB2:: MDB$ TXNB3:: MDB$ TXNB4:: MDB$ TXNB5:: MDB$ NBTAB:: TXPOS TXT1,10FH TXPOS TXNB1,0405H TXPOS TXNB2,0505H TXPOS TXNB3,0605H TXPOS TXNB4,0805H TXPOS TXNB5,0905H DW 0 K63RET:: INC A ;Drucker bereit? JR Z,START0 ;ja LD IX,NBTAB CALL MENU0 CALL SELEC2 ;nur ET1 wird angenommen RES 5,A CP 'E' JP NZ,START LD H,14 CALL CURS0 RST 0 ;Ende mit Warmstart START0:: LD IX,TXTTAB ;Tabelle der Text- und Bildadressen CALL MENU START1:: CALL SELEC0 CP '?' JP Z,SELH RES 5,A IF K6313 CP 'A' JP Z,SELA ENDIF CP 'D' JP Z,SELD CP 'B' JP Z,SELB CP 'F' JP Z,SELF CP 'P' JP Z,SELP CP 'S' JP Z,SELS CP 'T' JP Z,SELT CP 'Z' JP Z,SELZ JP START1 TXT1:: MDB IF K6313 MDB$ <6313> TXT2:: MDB$ TXT4:: MDB$ ENDIF IF K6311 MDB$ <6311> TXT2:: MDB$ ENDIF TXT3:: MDB$ TXT5:: MDB$ TXT6:: MDB$

TXT7:: MDB$ TXT8:: MDB$ TXT9:: MDB$ TXTA:: MDB$ TXTTAB:: TXPOS TXT1,10FH TXPOS TXT2,0305H TXPOS TXT3,0405H IF K6313 TXPOS TXT4,0505H ENDIF TXPOS TXT5,0605H TXPOS TXT6,0705H TXPOS TXT7,0805H TXPOS TXT8,0905H TXPOS TXT9,0A05H TXPOS TXTA,0B05H DW 0 PAGE ; ***************************************** .PRINTX * Abstand der Zeilen festlegen * ; ***************************************** SELA:: LD IX,TXATAB LD A,(AMERK) CALL MENU SELA1:: CALL SELEC1 CP '6' LD HL,DRA6 JR Z,SELA8 CP '8' LD HL,DRA8 SELA8:: JR NZ,SELA1 LD (AMERK),A ;Abstandsmerker gesetzt CALL DROUT ;Zeichenausgabe zum Drucker JR SELA1 DRA6:: DB 1BH,32H,0FFH DRA8:: DB 1BH,30H,0FFH TXTA0:: MDB$ TXTA1:: MDB$ <6 (Zeilen pro Zoll)> TXTA2:: MDB$ TXTA3:: MDB$ IF K6313 TXTA4:: MDB$ <8 (Zeilen pro Zoll)> TXTA5:: MDB$ TXTA6:: MDB$ ENDIF TXATAB:: TXPOS TXTA0,010FH TXPOS TXTA1,0305H TXPOS TXTA2,0408H TXPOS TXTA3,0508H IF K6313 TXPOS TXTA4,0605H TXPOS TXTA5,0708H TXPOS TXTA6,0808H ENDIF DW 0 ; ***************************************** .PRINTX * Beenden des Programms * ; ***************************************** SELB:: LD A,(FMERK) LD HL,DRF2 CP '2' JR Z,SELB2 LD HL,DRF1 SELB2:: CALL DROUT LD IX,TXTSB CALL MENU LD H,14 CALL CURS0 RST 0 ;Ende mit Warmstart TXTSB1:: MDB$

TXTSB2:: MDB$ TXTSB3:: MDB$ TXTSB:: TXPOS TXTSB1,0114H TXPOS TXTSB2,0405H TXPOS TXTSB3,0605H DW 0 PAGE ; ***************************************************************** .PRINTX * K6313: Einstellung der DIL - Schalter uebernehmen * ; * K6311: Drucker - RESET * ; ***************************************************************** SELD:: LD IX,TXDTAB CALL MENU LD HL,MVER LD B,SELP-MVER LD A,'D' SELD0:: LD M,A INC HL DJNZ SELD0 ;Merkzellen mit 'D' belegt LD HL,DRD1 CALL DROUT SELD1:: CALL SELEC2 JR SELD1 IF K6313 TXTD1:: MDB$ TXTD2:: MDB$ TXTD3:: MDB$ TXTD4:: MDB$ ENDIF IF K6311 TXTD1:: MDB$ TXTD2:: MDB$ TXTD3:: MDB$ TXTD4:: MDB$ ENDIF TXDTAB:: TXPOS TXTD1,108H TXPOS TXTD2,0405H TXPOS TXTD3,0505H TXPOS TXTD4,0705H DW 0 IF K6313 DRD1:: DB 1BH,40H,0FFH ENDIF IF K6311 DRD1:: MDBYTE 7FH,0FFH ENDIF ; ***************************************** .PRINTX * Formularlaenge festlegen * ; ***************************************** SELF:: LD IX,TXFTAB LD A,(FMERK) CALL MENU SELF1:: CALL SELEC1 CP '1' SELF01:: LD HL,DRF1 JR Z,SELF12 CP '2' LD HL,DRF2 SELF12:: JR NZ,SELF1 LD (FMERK),A CALL DROUT JR SELF1 TXTF1:: MDB$ TXTF2:: MDB$ <1 = 12 Zoll (A4)> TXTF3:: MDB$ <2 = 6 Zoll (A5)> TXFTAB:: TXPOS TXTF1,10FH TXPOS TXTF2,0505H TXPOS TXTF3,0605H DW 0 IF K6313 DRF1:: DB 1BH,'C',0,12,0FFH ;12 Zoll pro Seite DRF2:: DB 1BH,'C',0, 6,0FFH ; 6 Zoll pro Seite ENDIF IF K6311 DRF1:: DB 1BH,5BH,'1','4','4',7DH,0FFH ;12 Zoll pro Seite DRF2:: DB 1BH,5BH,'7','2',7DH,0FFH ; 6 Zoll pro Seite ENDIF PAGE ; ************************************************* .PRINTX * Anzeige der gewaehlten Einstellung * ; ************************************************* SELH:: LD A,(MVER) AND A ;veraendert? LD IX,TXTH1T JR Z,SELHM ;nein LD IX,TXTHDT ;DIL-Schalter eingestellt CP 'D' JR Z,SELHM ;ja LD IX,TXTHVT XOR A SELHM:: CALL MENU SELHVR:: CALL SELEC2 JR SELHVR TXTHDT:: TXPOS TXTH0,010FH TXPOS TXTD1,0405H TXPOS TXTD2,0605H TXPOS TXTD3,0705H TXPOS TXTD4,0805H DW 0 TXTH0:: MDB$ TXTH1:: MDB$ TXTH2:: MDB$ TXTH1T:: TXPOS TXTH0,010FH ;keine Veraenderung TXPOS TXTH1,0405H TXPOS TXTH2,0505H DW 0 TXTHV1:: MDB$ TXTHV2:: MDB$ TXTHV3:: MDB$ IF K6313 TXTHV5:: MDB$ <"Einstellung: D" bedeutet, dasz fuer diese Betriebsart> TXTHV6:: MDB$ TXTHV7:: MDB$ TXTHV8:: MDB$ TXTHV9:: MDB$ ENDIF IF K6311 TXTHV5:: MDB$ <"Einstellung: D" bedeutet, dasz fuer diese Betriebsart> TXTHV6:: MDB$ ENDIF TXTHVT:: TXPOS TXTH0,010FH TXPOS TXTHV1,0305H TXPOS TXTHV2,0405H TXPOS TXTHV3,0505H TXPOS TXTHV5,0705H TXPOS TXTHV6,0805H IF K6313 TXPOS TXTHV7,0905H TXPOS TXTHV8,0A05H TXPOS TXTHV9,0B05H ENDIF DW 0 MSAM:: DS 1 ;Sammelmerker MVER:: DS 1 ;Merker Veraenderung AMERK:: DS 1 ;Merker Zeilenabstand DMERK:: DS 1 ;Merker DIL-Schalter FMERK:: DS 1 ;Merker Formularlaenge PMERK:: DS 1 ;Merker Pascal-Vorzugsvariante SMERK:: DS 1 ;Merker Schriftart TMERK:: DS 1 ;Merker Testdruck ZMERK:: DS 1 ;Merker Zeichensatz MWAHL:: DS 1 PAGE ; ***************************************** .PRINTX * PASCAL-Vorzugsvariante * ; ***************************************** SELP:: LD IX,TXPTAB LD A,(PMERK) LD (MWAHL),A CALL MENU SELPC1:: CALL SELEC1 CP '0' LD HL,DRP0 ;Elite 6 LPI JR Z,SELPX CP '1' LD HL,DRP1 ;Komprimiert 6 LPI JR Z,SELPX CP '2' LD HL,DRP2 ;Pica 6 LPI IF K6313 JR Z,SELPX CP '3' LD HL,DRP3 ;Elite 8 LPI JR Z,SELPX CP '4' LD HL,DRP4 ;Komprimiert 8 LPI JR Z,SELPX CP '5' LD HL,DRP5 ;Pica 8 LPI ENDIF JR NZ,SELPC1 SELPX:: LD (PMERK),A CALL DROUT INC HL LD A,M LD (SMERK),A ;Merker Schriftart INC HL IF K6313 LD A,M LD (AMERK),A ;Merker Zeilenabstand ENDIF INC HL LD A,M LD (ZMERK),A ;Merker Zeichensatz INC HL LD A,M LD (FMERK),A ;Merker Format JP SELPC1 IF K6313 DRP0:: DB 12H,1BH,4DH,1BH,32H,1BH,52H,0,1BH,'C',0,12,0FFH DB 'E601' ;Merkzellen ELITE 6LPI AMERIK. A4 DRP1:: DB 0FH,1BH,32H,1BH,52H,0,1BH,'C',0,12,0FFH DB 'K601' ;Merkzellen KOMPR 6LPI AMERIK. A4 DRP2:: DB 12H,1BH,50H,1BH,32H,1BH,52H,0,1BH,'C',0,12,0FFH DB 'P601' ;Merkzellen PICA 6LPI AMERIK. A4 DRP3:: DB 12H,1BH,4DH,1BH,30H,1BH,52H,0,1BH,'C',0,12,0FFH DB 'E801' ;Merkzellen ELITE 8LPI AMERIK. A4 DRP4:: DB 0FH,1BH,30H,1BH,52H,0,1BH,'C',0,12,0FFH DB 'K801' ;Merkzellen KOMPR 8LPI AMERIK. A4 DRP5:: DB 0FH,1BH,50H,1BH,30H,1BH,52H,0,1BH,'C',0,12,0FFH DB 'P801' ;Merkzellen PICA 8LPI AMERIK. A4 ENDIF IF K6311 DRP0:: MDBYTE 1BH,5BH,32H,20H,4BH,1BH,52H,0,1BH,5BH,37H,32H,7DH,0FFH DB 'E601' ;Merkzellen ELITE 6LPI AMERIK. A4 DRP1:: MDBYTE 1BH,5BH,33H,20H,4BH,1BH,52H,0,1BH,5BH,37H,32H,7DH,0FFH DB 'K601' ;Merkzellen KOMPR 6LPI AMERIK. A4 DRP2:: MDBYTE 1BH,5BH,30H,20H,4BH,1BH,52H,0,1BH,5BH,37H,32H,7DH,0FFH DB 'P601' ;Merkzellen PICA 6LPI AMERIK. A4 ENDIF TXTP0:: MDB$ TXTP1:: MDB$ < Bei allen Varianten wird der amerikanische Zeichensatz> TXTP2:: MDB$ < und das Format A4 eingestellt.> TXTP3:: MDB$ < 0 = Elite mit 6 Zeilen pro Zoll > TXTP4:: MDB$ < 1 = Komprimiert mit 6 Zeilen pro Zoll > TXTP5:: MDB$ < 2 = Pica mit 6 Zeilen pro Zoll > IF K6313 TXTP6:: MDB$ < 3 = Elite mit 8 Zeilen pro Zoll > TXTP7:: MDB$ < 4 = Komprimiert mit 8 Zeilen pro Zoll > TXTP8:: MDB$ < 5 = Pica mit 8 Zeilen pro Zoll > ENDIF TXPTAB:: TXPOS TXTP0,10FH TXPOS TXTP1,0305H TXPOS TXTP2,0405H TXPOS TXTP3,050AH TXPOS TXTP4,060AH TXPOS TXTP5,070AH IF K6313 TXPOS TXTP6,090AH TXPOS TXTP7,0A0AH TXPOS TXTP8,0B0AH ENDIF DW 0 PAGE ; ***************************************** .PRINTX * Schriftart festlegen * ; ***************************************** SELS:: LD IX,TXSTAB LD A,(SMERK) CALL MENU SELS1:: CALL SELEC1 RES 5,A CP 'E' SELSE:: LD HL,DRSE JR Z,SELSX CP 'K' SELSK:: LD HL,DRSK JR Z,SELSX CP 'P' SELSP:: LD HL,DRSP JR NZ,SELS1 SELSX:: LD (SMERK),A CALL DROUT JR SELS1 IF K6313 DRSE:: DB 12H,1BH,4DH,0FFH DRSK:: DB 0FH,0FFH DRSP:: DB 12H,1BH,50H,0FFH ENDIF IF K6311 DRSE:: MDBYTE 1BH,5BH,30H,20H,4BH,0FFH DRSK:: MDBYTE 1BH,5BH,33H,20H,4BH,0FFH DRSP:: MDBYTE 1BH,5BH,32H,20H,4BH,0FFH ENDIF TXTS0:: MDB$ TXTS1:: MDB$ TXTS2:: MDB$ TXTS3:: MDB$

TXSTAB:: TXPOS TXTS0,0116H TXPOS TXTS1,0505H TXPOS TXTS2,0605H TXPOS TXTS3,0705H DW 0 ; ***************************************** .PRINTX * Testdruck * ; ***************************************** SELT:: LD IX,TXTDTA XOR A ;fuer MWAHL LD (TMERK),A CALL MENU SELT0:: CALL SELEC1 CP '1' CALL Z,SELTW1 CP '2' CALL Z,SELTW2 JR SELT0 SELTW1:: LD HL,TXTEST XOR A CALL DROUT LD C,5 ;5 Zeilen drucken SELT1:: LD A,'!' LD B,7EH-21H SELT2:: PUSH AF CALL PRINTA POP AF INC A DJNZ SELT2 LD HL,DRTEST XOR A CALL DROUT DEC C JR NZ,SELT1 ;naechste Zeile RET SELTW2:: LD HL,DRTW2 JP DROUT IF K6313 DRTW2:: DB 1BH,'J',2 DB 1BH,'j',2,0FFH ENDIF IF K6311 DRTW2:: DB 1BH,5BH,32H,65H,0FFH DB 1BH,5BH,32H,75H,0FFH ENDIF TXTTD1:: MDB$ TXTTD2:: MDB$ <1 = 5 Zeilen ASCII - Zeichensatz drucken> TXTTD3:: MDB$ <2 = Bewegung des Druckkopfes vertikal hin + zurueck> TXTDTA:: TXPOS TXTTD1,010FH TXPOS TXTTD2,0505H TXPOS TXTTD3,0605H DW 0 TXTEST:: DB 0DH,0AH MDB DB 0AH DRTEST:: DB 0DH,0AH,0DH,0FFH PAGE ; ***************************************** .PRINTX * Zeichensatz auswaehlen * ; ***************************************** SELZ:: LD IX,TXZTAB LD A,(ZMERK) CALL MENU SELZ1:: CALL SELEC1 CP '0' JR C,SELZ1 CP '8' JR NC,SELZ1 LD (ZMERK),A AND 07H LD (DRZ+2),A OR 30H LD HL,DRZ CALL DROUT JP SELZ1 DRZ: DB 1BH,52H,0,0FFH ;fuer K6311 K6313 LX86 TXTZ1:: MDB$ TXTZ2:: MDB$ <0 = USA> TXTZ3:: MDB$ <1 = FRANKREICH> TXTZ4:: MDB$ <2 = DEUTSCHLAND> TXTZ5:: MDB$ <3 = ENGLAND> TXTZ6:: MDB$ <4 = DAENEMARK> TXTZ7:: MDB$ <5 = SCHWEDEN> TXTZ8:: MDB$ <6 = ITALIEN> TXTZ9:: MDB$ <7 = SPANIEN> TXZTAB:: TXPOS TXTZ1,10FH TXPOS TXTZ2,0405H TXPOS TXTZ3,0505H TXPOS TXTZ4,0605H TXPOS TXTZ5,0705H TXPOS TXTZ6,041EH TXPOS TXTZ7,051EH TXPOS TXTZ8,061EH TXPOS TXTZ9,071EH DW 0 ; ********************************************** .PRINTX * UP BILD: leeres Grundbild aufbauen * ; ********************************************** BILD:: LD HL,0 CALL CURSOR LD DE,STRTAB ;Tabelle der Strichzeilen LD B,LINES-1 BILD1:: PUSH BC LD A,(DE) INC DE LD H,B DEC H CP B CALL Z,STRICH CALL NZ,RAND POP BC DJNZ BILD1 RET STRTAB:: DB 15 DB 0 DB 13 DB 0 DB 0 DB 0 DB 0 DB 0 DB 0 DB 0 DB 0 DB 0 DB 3 DB 0 DB 1 DB 0 PAGE ; ***************************************************** .PRINTX * UP STRICH: Strichzeile, Zeilennummer in H * ; ***************************************************** STRICH:: PUSH AF CALL CURS0 ;Cursor auf Zeile = H, Spalte = 0 LD B,WIDTH STR1:: LD A,'-' CALL PUTA DJNZ STR1 POP AF RET ; ****************************************************** .PRINTX * UP RAND: Zeile mit Rand, Zeilennummer in H * ; ****************************************************** RAND:: PUSH AF CALL CURS0 LD A,'I' CALL PUTA LD B,WIDTH-2 RAND1:: LD A,' ' CALL PUTA DJNZ RAND1 LD A,'I' CALL PUTA POP AF RET ; ***************************************************************** .PRINTX * UP CURSOR: Cursor auf Zeile = H Spalte = L stellen * ; ***************************************************************** CURS0:: LD L,0 ;H = Zeile Spalte = 0 CURSOR:: MPUSH AF,BC,DE,HL PUSH HL LD A,1BH CALL PUTA POP AF ;A = H = Zeile SET 7,A CALL PUTA POP HL LD A,L SET 7,A CALL PUTA ;Spalte definiert MPOP DE,BC,AF RET ; ************************************************* .PRINTX * UP PRINTA: ASCII in A drucken * ; ************************************************* PRINTA:: MPUSH BC,DE,HL LD E,A LD D,0 LD C,5 CALL 5 DJNZ $-0 DJNZ $-0 MPOP HL,DE,BC RET ; ******************************************************* .PRINTX * UP PUTA: ASCII in A auf Bildschirm ausgeben * ; ******************************************************* PUTA:: MPUSH BC,DE LD C,2 LD E,A CALL 5 MPOP DE,BC RET ; ************************************************* .PRINTX * UP TEXT: Textausgabe * ; * Zeile = H Spalte = L Textanfang = DE * ; ************************************************* TEXT:: MPUSH IX,AF,BC,DE CALL CURSOR POP DE LD C,9 CALL 5 ;Textausgabe MPOP BC,AF,IX RET PAGE ; ********************************* .PRINTX * Menuebild ausgeben * ; ********************************* ; IX = Zeiger auf Tabelle der Textketten und Cursorpositionen MENU:: LD (MWAHL),A MENU0:: CALL BILD ;leeres Grundbild aufbauen MENU1:: LD E,(IX) INC IX LD D,(IX) ;DE = Anfangsadresse der Textkette INC IX LD A,D OR E RET Z ;DE = 0 -> Tabellenende LD L,(IX) INC IX LD H,(IX) ;HL = Cursorposition INC IX CALL TEXT JR MENU1 ; ************************************************* .PRINTX * Eingabe des gewuenschten Parameters * ; ************************************************* SELEC0:: LD IX,SEL0TA ;Wunsch' JR SELECH SELEC1:: LD IX,SEL1TA ;'Wunsch ... ET1...' JR SELECH SELEC2:: LD IX,SEL2TA ;mit ET1 ... SELECH:: LD H,13 ;Zeile 13 CALL RAND LD A,(MWAHL) AND A CALL NZ,WAHL CALL MENU1 SELECW:: LD C,6 LD E,0FFH CALL 5 ;Zeichen nach A AND A ;Taste gedrueckt? JR Z,SELECW ;nein CP 0DH ;ET1? RET NZ ;nein POP BC ;SP - Korr. JP START TXTSEL:: MDB$ TXTET1:: MDB$ <(mit ET1 zum Hauptmenue)> SEL1TA:: TXPOS TXTET1,0D25H SEL0TA:: TXPOS TXTSEL,0D14H DW 0 SEL2TA:: TXPOS TXTET1,0D14H DW 0 ; ********************************* .PRINTX * Anzeige der Auswahl * ; ********************************* WAHL:: LD HL,0D02H LD DE,TXTWAL CALL TEXT JP PUTA TXTWAL:: MDB$ ; ************************************************* .PRINTX * Ausgabe der Steuerzeichen zum Drucker * ; ************************************************* DROUT:: PUSH AF LD (MVER),A LD (MWAHL),A DROUT1:: LD A,M CP 0FFH JR Z,DROUTE INC HL CALL PRINTA JR DROUT1 DROUTE:: POP AF RET DS 40H ;Stack-bereich STACK:: DS 0 .PRINTX * ENDE DMU * END