home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
CP/M
/
CPM_CDROM.iso
/
mbug
/
mbug014.arc
/
SETRX.ASM
< prev
next >
Wrap
Assembly Source File
|
1979-12-31
|
8KB
|
236 lines
;
; SETRX v1.0 EPSON RX-80 PRINTER UTILITY 11 JULY 1985
;
; Adapted from SET510A which was adapted by
; ASH NULLAWALLA, MELBOURNE, AUSTRALIA
;
; from SETMX which was written by
; IRVIN M. HOFF, LOS ALTOS HILLS, CA 94022, USA.
;
; EPSON RX-80 version by Mark Bishop, Melbourne, Australia.
;
; This program sets the EPSON RX-80 printer and many Epson clones
; to various configurations such as:
;
; 10 CPI, 12 CPI or 16.5 CPI
; 6, 8, or 12 vertical lines per inch
; Half speed, Unidirectional
; Emphasized print
; Double Strike
; Italics,Elite
; Superscript, Subscript
;
; I wanted a program to set my printer to, say, 12 CPI without
; much trouble before printing a WordStar file. SET510A was a
; good start, and I added many more options whilst changing
; some values.
;
; + + + + + + + + + + + + + + + + + +
;
ORG 100H
;
JMP START ;JUMP INTO PROGRAM
;
;
; GENERAL EQUATES
;
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
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 HORIZONTAL TAB
;
; DATA STRINGS TO CONTROL EPSON RX-80 PRINTER
;
DEFLT: DB 27,64,0 ;INITIALISE
;
ENLRG1: DB 27,87,49,0 ;40 COLS
ENLRG2: DB 27,14,0 ;40 COLS FIRST LINE ONLY
PICA: DB 27,80,0 ;80 COLS, NORMAL
ELITE: DB 27,77,0 ;96 COLS, ELITE
COND: DB 15,0 ;132 COLS, CONDENSED
ITALIC: DB 27,52,0 ;ITALICS
SUPERS: DB 27,83,48,0 ;SUPERSCRIPT
SUBS: DB 27,83,49,0 ;SUBSCRIPT
SIX: DB 27,50,0 ;1/6" LINE SPACE
EIGHT: DB 27,48,0 ;1/8" LINE SPACE
TEN: DB 27,49,0 ;7/72" LINE SPACE
DOUBLE: DB 27,71,0 ;DOUBLE STRIKE
EMPH: DB 27,69,0 ;EMPHASIZED
UNID: DB 27,85,49,0 ;UNIDIRECTIONAL PRINTING
HALF: DB 27,115,49,0 ;HALF SPEED
MWB: DB 10,10,10,27,108,8 ;LLIST MWB FILE. LF*3, COL.HD 8
DB 27,81,72,27,67,66 ;COL.END 72, FORM LEN. 66
DB 27,78,6,0 ;SKIP PERF. 6
TURNUP: DB CR,LF,'$'
BACK: DB 8,32,8,'$' ;BACKSPACE,ERASE,BACKSPACE
;
;
; SIGN-ON MESSAGE
;
SOM: DB CR,LF,LF,LF,TAB,TAB,'---------------- S E T R X -----------------'
DB CR,LF
DB CR,LF,TAB,TAB,'Adapted from SET510A.ASM by Mark Bishop'
DB CR,LF,TAB,TAB,'Epson RX-80 Printer options v1.0 11/07/85'
DB CR,LF,TAB,TAB,'Will also work on most xxx80 Epson clones'
DB CR,LF
DB CR,LF,TAB,TAB,'A = Enlarged 40 columns'
DB CR,LF,TAB,TAB,'B = Enlarged 40 columns (first line only)'
DB CR,LF,TAB,TAB,'C = Pica 80 columns'
DB CR,LF,TAB,TAB,'D = Elite 96 columns'
DB CR,LF,TAB,TAB,'E = Condensed 132 columns'
DB CR,LF,TAB,TAB,'F = Superscript'
DB CR,LF,TAB,TAB,'G = Subscript'
DB CR,LF,TAB,TAB,'H = Italic'
DB CR,LF,TAB,TAB,'I = 1/6" Line Spacing'
DB CR,LF,TAB,TAB,'J = 1/8" Line Spacing'
DB CR,LF,TAB,TAB,'K = 7/72" Line Spacing'
DB CR,LF,TAB,TAB,'L = Double Strike'
DB CR,LF,TAB,TAB,'M = Emphasized'
DB CR,LF,TAB,TAB,'N = Unidirectional'
DB CR,LF,TAB,TAB,'O = Half Speed'
DB CR,LF,TAB,TAB,'P = Microworld Basic LLIST screen format'
DB CR,LF,LF,TAB,TAB,'Make Selection:- (May be combined e.g. IJN)'
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 DEFAULT CONDITIONS
JMP PSTRNG
;
;
SELECT: CALL INPUT ;GET A CHARACTER FROM KEYBOARD
ANI 95 ;MASK BITS 5,7
;
CPI 'A'
LXI H,ENLRG1 ;40 COLS ENLARGED
JZ PSTRNG
;
CPI 'B'
LXI H,ENLRG2 ;40 COLS ENLARGED FIRST LINE ONLY
JZ PSTRNG
;
CPI 'C'
LXI H,PICA ;80 COLS, NORMAL
JZ PSTRNG
;
CPI 'D'
LXI H,ELITE ;96 COLS, ELITE
JZ PSTRNG
;
CPI 'E'
LXI H,COND ;132 COLS, CONDENSED
JZ PSTRNG
;
CPI 'F'
LXI H,SUPERS ;SUPERSCRIPT
JZ PSTRNG
;
CPI 'G'
LXI H,SUBS ;SUBSCRIPT
JZ PSTRNG
;
CPI 'H'
LXI H,ITALIC ;ITALIC
JZ PSTRNG
;
CPI 'I'
LXI H,SIX ;1/6" LINE SPACING
JZ PSTRNG
;
CPI 'J'
LXI H,EIGHT ;1/8" LINE SPACING
JZ PSTRNG
;
CPI 'K'
LXI H,TEN ;7/72" LINE SPACING
JZ PSTRNG
;
CPI 'L'
LXI H,DOUBLE ;DOUBLE STRIKE
JZ PSTRNG
;
CPI 'M'
LXI H,EMPH ;EMPHASIZED
JZ PSTRNG
;
CPI 'N'
LXI H,UNID ;UNIDIRECTIONAL
JZ PSTRNG
;
CPI 'O'
LXI H,HALF ;HALF SPEED
JZ PSTRNG
;
CPI 'P'
LXI H,MWB ;LLIST .MWB FILE IN SCREEN FORMAT
JZ PSTRNG
;
LXI D,BACK ;BACKSPACEè CALL DSTRNG ;CURSOR
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 STAR DP-510
;
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