.COMMENT \ MXSET Rev. 1.2 by Simon J. Ewins, Toronto, Ontario, Canada. *********************************************************** This program will set/reset all of the major functions of the Epson MX-80 printer. The program uses Z80 Zilog mnemonics and calls are made to Richard Conn's excellent SYSLIB.REL file. Microsoft's M80 macro assembler is needed for assembly of this file as well as the SYSLIB file. June 28, 1983. Toronto, Ontario. ****************************************************************************** \ .Z80 CSEG START: CALL PRINT## DB 13,10,10,10,10,10 DB 'MXSET Rev. 1.2',13,10 DB 'by Simon J. Ewins -- 06/28/83',13,10,10 DB 'OPTIONS:',13,10,10 DB 'A: Set printer to defaults',13,10 DB 'B: Home printhead',13,10 DB 'C: Turn ON underline mode -- use A: to turn OFF',13,10 DB 'D: Turn ON unidirectional mode -- use A: to turn OFF',13,10 DB 'E: Set column length',13,10 DB 'F: Turn ON perforation skipover',13,10 DB 'G: Turn OFF perforation skipover',13,10 DB 'H: Turn ON paper-end detector',13,10 DB 'I: Turn OFF paper-end detector',13,10 DB 'J: Select character fonts',13,10 DB 'K: Print test',13,10 DB '^C=Quit to CP/M',13,10,10 DB 'Enter your choice: ',0 LD A,1 CALL BBLINE## LD A,(HL) LA: CP 'A' ;Set printer to defaults JR NZ,LB CALL ESC CALL LPRINT## DB 64,13,10,0 JP START LB: CP 'B' ;Home printhead JR NZ,LC CALL ESC CALL LPRINT## DB 60,13,10,0 JP START LC: CP 'C' ;Turn on underline mode JR NZ,LD CALL ESC CALL LPRINT## DB 45,1,13,10,0 JP START LD: CP 'D' ;Turn on unidirectional JR NZ,LE CALL ESC CALL LPRINT## DB 85,13,10,0 JP START LE: CP 'E' ;Set column length JP NZ,LF LE1: CALL PRINT## DB 13,10,10,'Enter column length: ',13,10 DB 'Up to <80> when in normal or emphasized mode.',13,10 DB ' <132> when in condensed mode.',13,10 DB ' <40> when in enlarged mode.',13,10 DB ' <60> when in enlarged-condensed mode',13,10 DB '---> ? ',0 LD A,0 CALL BBLINE## CALL EVAL10## PUSH AF LD HL,132 CALL COMPHD## JP C,LE1 POP AF CP 0 JP Z,START LD (LE2),A CALL ESC CALL LPRINT## DB 81 LE2: DS 1 DB 13,10,0 JP START LF: CP 'F' ;Turn on perf. skip-over JR NZ,LG CALL ESC CALL LPRINT## DB 78,13,10,0 JP START LG: CP 'G' ;Turn off perf. skip-over JR NZ,LH CALL ESC CALL LPRINT## DB 79,13,10,0 JP START LH: CP 'H' ;Turn on paper-end detector JR NZ,LI CALL ESC CALL LPRINT## DB 57,13,10,0 JP START LI: CP 'I' ;Turn off paper-end detector JR NZ,LJ CALL ESC CALL LPRINT## DB 56,13,10,0 JP START LJ: CP 'J' ;Choose alternate fonts JP NZ,LK CALL PRINT## DB 13,10,10 DB '1: Set italics ON',13,10 DB '2: Set italics OFF',13,10 DB '3: Set emphasized ON',13,10 DB '4: Set emphasized OFF',13,10 DB '5: Set double print ON',13,10 DB '6: Set double print OFF',13,10 DB '7: Set condensed ON',13,10 DB '8: Set condensed OFF',13,10 DB '9: Set enlarged ON (ignores linefeeds) -- ' DB 'use option A: to turn OFF',13,10,10 DB 'Enter your choice: ',0 LD A,0 CALL BBLINE## CALL EVAL10## PUSH AF LD HL,9 CALL COMPHD## JP C,LJ POP AF CP 0 JP Z,START CP 9 JR NZ,LJ1 CALL ESC LD A,87 CALL LOUT## LD A,1 CALL LOUT## CALL LPRINT## DB 13,10,0 JP START DATA: DB 52,53,69,70,71,72,15,18 LJ1: DEC A LD (LJ2),A ;store A for index LD IX,DATA ;set indexed pointer DB 11011101B ;1st byte of LD A,(IX+d) DB 01111110B ;2nd byte of LD A,(IX+d) LJ2: DS 1 ;storage for index LD (LJ3),A PUSH AF CALL ESC POP AF CP 15 JR NZ,LJ2A CALL LOUT## LD A,13 LD (LJ3),A JR LJ2C LJ2A: CP 18 JR NZ,LJ2C CALL LOUT## LD A,13 LD (LJ3),A LJ2C: CALL LPRINT## LJ3: DS 1 DB 13,10,0 JP START LK: CP 'K' ;Print test JP NZ,START CALL LPRINT## DB 13,10,10 DB 'ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz',13,10 DB "1234567890-=['\;,./",'!@#$%^&*()_+]"|:<>?',13,10,10,0 JP START ESC: PUSH AF LD A,27 CALL LOUT## POP AF RET END