home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
CP/M
/
CPM_CDROM.iso
/
cpm
/
programs
/
list
/
printcpm.lbr
/
SETOK.AZM
/
SETOK.ASM
Wrap
Assembly Source File
|
1987-06-14
|
6KB
|
188 lines
; SETOK v1.0 OKIDATA PRINTER UTILITY 10/10/82
;
; by
; IRVIN M. HOFF
; LOS ALTOS HILLS, CA 94022
;
;
; This program sets an OKIDATA printer to various configur-
; ations such as:
;
; 10 CPI or 16.5 CPI
; 6 or 8 vertical lines per inch
; 64 (short) or 80 (long) char. per line
;
; 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 OKIDATA PRINTER:
;
; 17 CTL Q Enable printer to receive data
; 27,'A' ESC A 80 char. per line starting col. 3
; 27,'B' ESC B 64 char. per line starting col. 9
; 29 CTL-SHFT-M 16.5 Characters per inch
; 30 CTL-SHFT-N 10 Characters per inch
; 31 CTL-SHFT-O Wider characters
; 27,'6' ESC 6 6 vertical lines per inch (Normal)
; 27,'8' ESC 8 8 vertical lines per inch
;
; + + + + + + + + + + + + + + + + + +
;
;
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 EPXON MX-80 PRINTER
;
CN: DB ESC,'A',29,ESC,'6',0 ;16.5 CPI, NORMAL
UCN: DB ESC,'A',30,ESC,'6',0 ;10 CPI, NORMAL
DEFLT: DB 17,ESC,'A',30,ESC,'6',0 ;DEFAULT PARAMETERS
EMPH: DB 31,0 ;EMPHASIZED
EIGHT: DB ESC,'8',0 ;8 LINES PER INCH
SHORT: DB ESC,'B',0 ;64 CHAR. LINES AT COL. 9
TURNUP: DB CR,LF,'$'
;.....
;
;
; SIGN-ON MESSAGE
;
SOM: DB CR,LF,LF,LF,LF,LF,LF,LF
DB TAB,TAB,'OKIDATA 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 = 16.5 CPI, Normal'
DB CR,LF,LF,TAB,TAB,'3 = Wider Characters'
DB CR,LF,TAB,TAB,'4 = 64 Char. lines starting at col. 9'
DB CR,LF,TAB,TAB,'8 = 8 vertical lines per inch'
DB CR,LF,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,CN ;16.5 CPI, NORMAL
JZ PSTRNG
;
CPI '3'
LXI H,EMPH ;EMPHASIZED
JZ PSTRNG
;
CPI '4'
LXI H,SHORT ;64 CHARACTER LINES STARTING AT COL. 9
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:1 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 NEW ANSWER IF ZERO
;
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 ROOM FOR STACK
;
STACK DS 0
;
END