; SETMX v1.0 EPSON MX-80 PRINTER UTILITY 10/10/82 ; ; by ; IRVIN M. HOFF ; LOS ALTOS HILLS, CA 94022 ; ; ; This program sets the EPSON MX-80 printer to various ; configurations such as: ; ; 10 CPI or 16.5 CPI ; Normal or Double Strike ; 6 or 8 vertical lines per inch ; Emphasized print ; ; There are numerous other selections that could be added. ; This program should give you the background to include ; other options, if desired, yourself. These seemed the ; most important. ; ; ; ; COMMAND CHARACTERS FOR THE EPSON PRINTER: ; ; 17 CTL-Q Enable printer to receive data ; 27,'0' ESC 0 8 vertical lines per inch ; 27,'2' ESC 2 6 vertical lines per inch (Normal) ; 27,'E' ESC E Emphasized print ; 27,'F' ESC F Non-emphasized print (Normal) ; 27,'G' ESC G Double-strike print ; 27,'H' ESC H Single-strike print (Normal) ; 27,14 ESC CTL-N Double-width print on ; 27,20 ESC CTL-T Double-width print off (Normal) ; 15 or 27,15 ESC CTL-O 16.5 Characters per inch (Compressed) ; 18 or 27,18 ESC CTL-R 10 characters per inch (Normal) ; ; + + + + + + + + + + + + + + + + + + ; ; ORG 100H ; ; JMP START ;JUMP INTO PROGRAM ; ; ; GENERAL EQU'S ; BDOS EQU 5 ;SYSTEM CALL ENTRY POINT CONIN EQU 1 ;GET KEYBOARD CHARACTER CR EQU 0DH ;CONTROL-M FOR CARRIAGE RETURN CONOUT EQU 2 ;CRT OUTPUT ROUTINE CTLC EQU 3 ;CONTROL-C TO TERMINATE ESC EQU 1BH ;ESCAPE CHARACTER LF EQU 0AH ;CONTROL-J FOR LINE FEED LIST EQU 5 ;LIST DEVICE OUTPUT STRING EQU 9 ;PRINT STRING ON CONSOLE TAB EQU 09H ;CONTROL-I FOR HORIZONTAOL TAB ;..... ; ; ; DATA STRINGS TO CONTROL EPSON PRINTER ; CD: DB 15,ESC,'F',ESC,'G',ESC,'2',0 ;16.5 CPI, DOUBLE STRIKE CN: DB 15,ESC,'F',ESC,'H',ESC,'2',0 ;16.5 CPI, NORMAL DEFLT: DB 17,18,ESC,'F',ESC,'H',ESC,'2',0 ;DEFAULT PARAMETERS EMPH: DB ESC,'E',0 ;EMPHASIZED UCD: DB 18,ESC,'F',ESC,'G',ESC,'2',0 ;10 CPI, DOUBLE STRIKE UCN: DB 18,ESC,'F',ESC,'H',ESC,'2',0 ;10 CPI, NORMAL EIGHT: DB ESC,'0',0 ;8 LINES PER INCH TURNUP: DB CR,LF,'$' ;..... ; ; ; SIGN-ON MESSAGE ; SOM: DB CR,LF,LF,LF,LF,LF,LF,LF DB TAB,TAB,'MX-80 Printer options v1.0 10/11/82' DB CR,LF,LF,TAB,TAB,'0 = Reset to default parameters' DB CR,LF,LF,TAB,TAB,'1 = 10 CPI, Normal' DB CR,LF,TAB,TAB,'2 = 10 CPI, Double Strike' DB CR,LF,TAB,TAB,'3 = 16.5 CPI, Normal' DB CR,LF,TAB,TAB,'4 = 16.5 CPI, Double Strike' DB CR,LF,LF,TAB,TAB,'5 = Emphasized' DB CR,LF,TAB,TAB,'8 = vertimal lines per inch' DB CR,LF,LF,LF,LF,LF,LF,TAB,'Select: ' DB '$' ;..... ; ; ;**********************************************************************; ; ; ; PROGRAM STARTS HERE ; ; ; ;**********************************************************************; ; ; START: POP H ;RETURN ADDRESS TO 'CCP' SHLD EXIT1+1 ;STORE LXI SP,STACK ;SET UP STACK LXI D,SOM ;SIGNON MESSAGE CALL DSTRNG ;SHOW ON THE CRT LXI H,DEFLT ;SET THE PRINTER TO NORMAL CONDITIONS JMP PSTRNG ;... ; ; SELECT: CALL INPUT ;GET A CHAR. ; CPI '0' ;RESET TO DEFAULT PARAMETERS LXI H,DEFLT JZ PSTRNG ; CPI '1' LXI H,UCN ;10 CPI, NORMAL JZ PSTRNG ; CPI '2' LXI H,UCD ;10 CPI, DOUBLE STRIKE JZ PSTRNG ; CPI '3' LXI H,CN ;16.5 CPI, NORMAL JZ PSTRNG ; CPI '4' LXI H,CD ;16.5 CPI, DOUBLE STRIKE JZ PSTRNG ; CPI '5' LXI H,EMPH ;EMPHASIZED JZ PSTRNG ; CPI '8' LXI H,EIGHT ;GO TO 8 VERTICAL LINES PER INCH JZ PSTRNG ; JMP SELECT ;IF NONE OF THESE, ASK AGAIN ;..... ; ; ;======================================================================; ; ; ; ROUTINES START HERE ; ; ; ;======================================================================; ; ; EXIT: LXI D,TURNUP ;TURN UP SOME EXTRA LINES CALL DSTRNG ;DISPLAY ON THE CRT ; EXIT1: JMP 0 ;FILLED BY 'START' FOR RETURN TO 'CCP' ;..... ; ; ; GET A KEYBOARD CHARACTER ; INPUT: MVI C,CONIN ;KEYBOARD ROUTINE CALL BDOS ANI 7FH ;STRIP AWAY ANY PARITY CPI CTLC ;CONTROL-C? JZ EXIT ;IF YES, ALL FINISHED CPI CR ;CONTROL-M FOR RETURN? JZ EXIT ;IF YES, ALL FINISHED RET ;..... ; ; ; DISPLAY A STRING ON THE CRT ; DSTRNG: MVI C,STRING ;CONSOLE STRING ROUTINE JMP BDOS ;SEND TO THE CRT ;..... ; ; ; PRINT A STRING OF CHARS. ON THE EPSON MX-80 ; PSTRNG: MOV A,M ;GET THE CHARACTER IN THE STRING ORA A ;SEE IF FINISHED YET JZ SELECT ;GET ANOTHER ANSWER IF FINISHED ; PUSH H ;SAVE THE ADDRESS IN THE STRING MVI C,LIST ;PRINTER ROUTINE MOV E,A ;PUT THE CHAR. INTO 'E' REG. CALL BDOS ;SEND TO THE PRINTER POP H ;BACK TO THE STRING ADDRESS INX H ;NEXT LOCATION JMP PSTRNG ;DO THE NEXT ONE ;..... ; ; ; STACK AREA ; DS 20H ;ALLOW SPACE FOR STACK ; STACK DS 0 ; END