home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
ftp.barnyard.co.uk
/
2015.02.ftp.barnyard.co.uk.tar
/
ftp.barnyard.co.uk
/
cpm
/
walnut-creek-CDROM
/
CPM
/
PROGRAMS
/
LIST
/
SET192V3.ASM
< prev
next >
Wrap
Assembly Source File
|
2000-06-30
|
10KB
|
311 lines
;*****************************************************************
; TITLE: SET192V3.ASM
;
; PURPOSE: OKIDATA 192/193 PRINTER OPTIONS SELECTOR
;****************************************************************
; Adapted from the following:
; TITLE: SET92.ASM
; PURPOSE: Set-Up for OKIDATA 92 Printer
; AUTHOR: J. A. GRONEK
; COPYRIGHT: UCS, inc. 1984
; VERSION: 2.2 DATED: AUGUST 22, 1984
;::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
; SET192 revision 3.0 30 Apr 86 Jim Lill
; - added "end with <cr>" note, deleted "ctrl-C quits" note
; - added paper-out disable command (resets with "R" default)
; - moved "R" line and listed defaults on screen
; - deleted RESET to defaults from START, must force with a "R"
;::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
; SET192 revision 2.0 28 Mar 86 Jim Lill
; - reformatted menu for additional commands
; - added commands for choice of Language Sets
; - changed commands to all letters to eliminate errors such
; as hitting "6" for 6 LPI
; - changed method of handling lower case, now p/o INPUT sub-routine
;::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
; Updated for Okidata 192 9 Feb 86 Jim Lill
; From SET92.ASM, changing name and resetting rev. to 1.1
; Added:
; 1) Italics
; 2) Enhanced Print
; 3) Left offset of 1/2 inch for improving print-outs that are
; to be punched
; 4) characters to "sample"
; 5) 1/2 speed printing
; 6) unidirectional printing
; 7) Changed DEFAULT concept. Now affects only the following:
; - cancels print suppress
; - cancels Emph. and Enh. mode
; - cancels italicized print mode
; - resets left margin to column 1
; - returns to full speed printing
; - returns to bidirectional printing
; All others commands remain as last selected or power-up defaults
;::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
; Updated to version 2.3 09/05/84 Steve Sanders
;
; added "L"inefeed command and
; "P"rint sample command and upper/lower
; case conversion for letter commands
;******************************************************************
;
ORG 100H
;
JMP START ;JUMP INTO PROGRAM
;
; ENVIRONMENTAL 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
CLSCR EQU 1AH ;CLEAR SCREEN CODE
;.....
;
;
; DATA STRINGS TO CONTROL OKIDATA PRINTER
;
COMPR: DB 29,0 ;17.1 CPI
NORM: DB 30,0 ;10 CPI
TWELV: DB 28,0 ;12 CPI
DUBL: DB 31,0 ;DOUBLE WIDTH
COOR: DB ESC,'1',0 ;CORRESPONDENCE MODE
DATA: DB ESC,'0',0 ;DATA PROCESSING MODE
ITAL: DB ESC,'!','/',0 ;ITALIC MODE
EMPH: DB ESC,'T',0 ;EMPHASIZED PRINT
ENHAN: DB ESC,'H',0 ;ENHANCED PRINT
SIX: DB ESC,'6',0 ;6 LINES PER INCH
EIGHT: DB ESC,'8',0 ;8 LINES PER INCH
LEFT: DB ESC,'%','C','061',0 ;1/2 INCH LEFT MARGIN OFFSET
HSPEED: DB ESC,'<',0 ;1/2 SPEED PRINTING
ONEWAY: DB ESC,'-',0 ;ONE-WAY PRINTING
STDLAN: DB ESC,'!','0',0 ;STANDARD LANG. SET
IBMLAN: DB ESC,'!',31H,0 ;IBM LANG. SET
ASCIIZ: DB ESC,'!',40H,0 ;ASCII W/SLASH ZERO
ASCII: DB ESC,'!',41H,0 ;ASCII W/O SLASH ZERO
papero: DB ESC,'E','1',0 ;disable paper out
sample: DB cr,lf
DB 'abcdefghijklmnopqrstuvwxyz 0123456789#$%',cr,lf
DB 'ABCDEFGHIJKLMNOPQRSTUVWXYZ 0123456789#$%',cr,lf,0
line: DB lf,0
FINISH: DB cr,lf,lf,lf,lf,lf,lf,lf,lf,lf,lf,lf,lf,lf,lf,lf,lf,lf,lf
DB lf,lf,lf,lf,lf,lf,'$'
DEFLT: DB 17,CR,ESC,73,CR,ESC,37,67,'001',CR,ESC
DB 62,CR,ESC,61,CR,ESC,33,42,esc,'E','0',0
;.....
;
;
SOM: DB CR,LF,'OKIDATA'
DB tab,tab,tab,' A = '
DB '10 CPI, Normal'
DB cr,lf,'192/193'
DB TAB,TAB,TAB,' B = '
DB '12 CPI, Normal'
DB cr,lf,'Printer'
DB TAB,TAB,TAB,' C = '
DB '17.1 CPI, Normal'
DB cr,lf,'Set-up'
DB TAB,TAB,TAB,' D = '
DB 'Double width Characters'
DB cr,lf,'Utility'
DB TAB,TAB,TAB,' E = '
DB 'Correspondence Mode'
DB cr,lf,'Version 3.0'
DB TAB,TAB,' F = '
DB 'Data Processing Mode'
DB cr,lf,'Jim Lill 4/86'
DB TAB,TAB,' G = '
DB 'Italicized Mode'
DB CR,LF,TAB,TAB,TAB,' H = '
DB 'Emphasized Print Mode'
DB CR,LF,TAB,TAB,TAB,' J = '
DB 'Enhanced Print Mode'
DB CR,LF,TAB,TAB,TAB,' K = '
DB '6 Lines per inch'
DB cr,lf,TAB,TAB,' L = '
DB '8 lines per inch'
DB cr,lf,'----------------------\ M = '
DB '1/2 Inch Left Margin Offset'
DB CR,LF,'- enables Printer \ N = '
DB 'One-Way Printing'
DB CR,LF,'- enables Full-Speed \ P = '
DB '1/2-Speed (Quiet) Printing'
DB CR,LF,'- enables Bidirect. Prt. \ Q = '
DB 'Standard Character Set'
DB cr,lf,'- cancels Enhanced ===> R = '
DB 'Reset to default parameters'
DB cr,lf,'- cancels Emphasized / S = '
DB 'IBM Character Set'
DB cr,lf,'- cancels Italics / T = '
DB 'ASCII with Slash Zero'
DB cr,lf,'upper/lower case okay / U = '
DB 'ASCII w/o Slash Zero'
DB cr,lf,'----------------------/ V = '
DB 'Disable Paper-Out Alarm'
DB cr,lf,tab,tab,' W = '
DB 'Linefeed Issued to Printer'
DB cr,lf,tab,tab,tab,' X = '
DB 'Print Sample'
DB cr,lf,lf,'String as many selections as you wish, end with <cr>, SELECT:'
DB '$'
;.....
;
;
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
;...
;
;
SELECT: CALL INPUT ;GET A CHAR.
;
CPI 82 ;RESET TO DEFAULT PARAMETERS
LXI H,DEFLT
JZ PSTRNG
;
CPI 65
LXI H,NORM ;10 CPI, NORMAL
JZ PSTRNG
;
CPI 66
LXI H,TWELV ;12 CPI, NORMAL
JZ PSTRNG
;
CPI 67
LXI H,COMPR ;17.1 CPI, NORMAL
JZ PSTRNG
;
CPI 68
LXI H,DUBL ;DOUBLE WIDTH
JZ PSTRNG
;
CPI 69
LXI H,COOR ;CORRESPONDENCE PRINT
JZ PSTRNG
;
CPI 70
LXI H,DATA ;DATA PROC PRINT
JZ PSTRNG
;
CPI 71
LXI H,ITAL ;Italics
JZ PSTRNG
;
CPI 72
LXI H,EMPH ;EMPHASIZED PRINT
JZ PSTRNG
;
CPI 74
LXI H,ENHAN ;ENHANCED PRINT
JZ PSTRNG
;
CPI 75
LXI H,SIX ;6 LINES PER INCH
JZ PSTRNG
;
CPI 76
LXI H,EIGHT ;8 LINES PER INCH
JZ PSTRNG
;
cpi 77 ;LEFT MARGIN
lxi h,LEFT
jz PSTRNG
;
CPI 80
LXI H,HSPEED ; HALF SPEED
JZ PSTRNG
;
CPI 78
LXI H,ONEWAY ;ONE WAY PRINTING
JZ PSTRNG
;
cpi 86
lxi h,papero ;paper-out disable
jz pstrng
;
CPI 87
LXI H,LINE ;LINEFEED
JZ PSTRNG
;
cpi 88 ; print sample
lxi h,sample
jz PSTRNG
;
CPI 81
LXI H,STDLAN ;STD CHAR SET
JZ PSTRNG
;
CPI 83
LXI H,IBMLAN ;IBM CHAR SET
JZ PSTRNG
;
CPI 84
LXI H,ASCIIZ ;WITH SLASH ZERO
JZ PSTRNG
;
CPI 85
LXI H,ASCII ;W/O SLASH
JZ PSTRNG
;
JNZ SELECT ;IF NONE OF THESE, ASK AGAIN
;.....
;
;
;
EXIT: LXI D,FINISH ;TURN UP SOME EXTRA LINES
CALL DSTRNG ;DISPLAY ON THE CRT
;
EXIT1: JMP 0 ;FILLED BY 'START' FOR RETURN TO 'CCP'
;.....
;
;
;
INPUT: MVI C,CONIN ;KEYBOARD ROUTINE
CALL BDOS
ANI 7FH ;STRIP AWAY ANY PARITY
CPI 90 ;IS ENTRY LOWER CASE
JC NOT$LC ;JUMP IF INPUT NOT LOWER CASE
SBI 32 ;SUBTRACT 32 TO CONVERT LC TO UC
NOT$LC: CPI CTLC ;CONTROL-C?
JZ EXIT ;IF YES, ALL FINISHED
CPI CR ;CONTROL-M FOR RETURN?
JZ EXIT ;IF YES, ALL FINISHED
RET
;.....
;
;
DSTRNG: MVI C,STRING ;CONSOLE STRING ROUTINE
JMP BDOS ;SEND TO THE CRT
;.....
;
;
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
;.....
;
;
DS 20H ;ALLOW ROOM FOR STACK
;
STACK DS 0
;
END