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
/
SETIDS.AQM
/
SETIDS.ASM
Wrap
Assembly Source File
|
2000-06-30
|
9KB
|
367 lines
; SETIDS v1.4 IDS MICROPRISM PRINTER UTILITY 4/7/84
;
; PREPARED BY R. BLOOM AND E. BOYD,
; BASED ON SETMX by IRVIN M. HOFF
;
; This program sets the IDS MICROPRISM 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
;
; ===========================================================
;
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
;
; DATA STRINGS TO CONTROL IDS PRINTER
;
DEFLT: DB 11H,2,1BH,'R2$',1EH,1BH,'B8$',6H,5H,0
;Printer on, Normal size chars, Draft Quality,
;12 Pitch, 6 lines/inch, Fixed Pitch chars,
;No right Justification.
DUBL: DB 1,0 ;Double Width Characters
NORM: DB 2,0 ;Normal size chars
JUST: DB 4,0 ;Fully Justified
NONJ: DB 5,0 ;Right Justification Off
FXED: DB 6,0 ;Fixed Pitch
PORP: DB 10H,0 ;Proportional Pitch
PRIN: DB 11H,0 ;Print all Characters (printer on)
NONP: DB 13H,0 ;Ignore all Character (printer off)
TENP: DB 1DH,0 ;Ten Pitch
TWELP: DB 1EH,0 ;Twelve Pitch
SIXTP: DB 1FH,0 ;16.8 Pitch
GRAPH: DB 3,2,0 ;Toggle graphics
NLQ: DB 1BH,'R1$',0 ;Near Letter Quality
DRAF: DB 1BH,'R2$',0 ;Draft Quality
SIXL: DB 1BH,'B8$',0 ;6 lines per inch
EIGHL: DB 1BH,'B6$',0 ;8 lines per inch
TENL: DB 1BH,'B5$',0 ;10 lines per inch
TWELL: DB 1BH,'B4$',0 ;12 lines per inch
TURNUP: DB CR,LF,'$'
;
; SIGN-ON MESSAGE
;
SOM: DB CR,LF,LF,LF,LF,LF,LF,LF
DB CR,LF,'IDS Microprism Printer Options v1.4 4/7/84'
DB CR,LF,LF,'0 --> Reset to all default parameters (*Defaults)'
DB CR,LF,LF,'1 --> Normal Sized Characters* A --> 10 Pitch'
DB CR,LF,'2 --> Double Sized Characters B --> 12 Pitch*'
DB CR,LF,' C --> 16.8 Pitch'
DB CR,LF,'3 --> Near Letter Quality'
DB CR,LF,'4 --> Draft Quality Print* D --> Print received chars*'
DB CR,LF,' E --> Ignore received chars'
DB CR,LF,'5 --> Fixed Character Spacing*'
DB CR,LF,'6 --> Proportionally Spacing F --> 6 Lines per inch*'
DB CR,LF,' G --> 8 Lines per inch'
DB CR,LF,'7 --> Non-Justified Print* H --> 10 Lines per inch'
DB CR,LF,'8 --> Fully Justified Print I --> 12 Lines per inch'
DB CR,LF,LF,'9 --> Toggle Graphics Mode M --> Set Margins'
DB CR,LF,LF,LF,LF,LF,'Enter Option --> '
DB '$'
;
; SET VARIOUS MARGINS
;
MRST DB 1BH,'J0,960$',1BH,'L,408,408,$',0 ;RESET TO DEFAULTS
;
RM75 DB 1BH,'J0,900$',0 ;7.5 INCH RIGHT MARGIN
RM7 DB 1BH,'J0,840$',0 ;7 INCH RIGHT MARGIN
RM65 DB 1BH,'J0,780$',0 ;6.5 INCH RIGHT MARGIN
RM6 DB 1BH,'J0,720$',0 ;6 INCH RIGHT MARGIN
RM55 DB 1BH,'J0,660$',0 ;5.5 INCH RIGHT MARGIN
;
LM05 DB 1BH,'J60$',0 ;0.5 INCH LEFT MARGIN
LM1 DB 1BH,'J120$',0 ;1 INCH LEFT MARGIN
LM15 DB 1BH,'J180$',0 ;1.5 INCH LEFT MARGIN
LM2 DB 1BH,'J240$',0 ;2 INCH LEFT MARGIN
LM25 DB 1BH,'J300$',0 ;2.5 INCH LEFT MARGIN
;
TBM0: DB 1BH,'L,408,408,$',0 ;No page break (top and bottom margins)
TBM05: DB 1BH,'L,408,384,$',0 ;.5 inch top + bottom margins
TBM1: DB 1BH,'L,408,360,$',0 ;1 inch top + bottom margins
TBM15: DB 1BH,'L,408,336,$',0 ;1.5 inch top + bottom margins
TBM2: DB 1BH,'L,408,312,$',0 ;2 inch top + bottom margins
;
; set margins menu
;
SMRGN: DB CR,LF,LF,LF,LF,LF,LF,LF,LF,LF,LF,LF,LF
DB CR,LF,'IDS Microprism Printer Margins Options v1.4a 4/7/84'
DB CR,LF,LF,'0 --> Reset to margins (LM=0 RM=Max, TM=0, BM=0)'
DB CR,LF,LF,'Left Margins Right Margins (resets LM to 0)'
DB CR,LF,'1 --> .5 Inch A --> 7.5 Inch'
DB CR,LF,'2 --> 1 Inch B --> 7 Inch'
DB CR,LF,'3 --> 1.5 Inch C --> 6.5 Inch'
DB CR,LF,'4 --> 2 Inch D --> 6 Inch'
DB CR,LF,'5 --> 2.5 Inch E --> 5.5 Inch'
DB CR,LF,LF,'Page Break (top + bottom margins)'
DB CR,LF,'H --> None J --> 1 Inch'
DB CR,LF,' K --> 1.5 Inch'
DB CR,LF,'I --> .5 Inch L --> 2 Inch'
DB CR,LF,LF,'O --> Back to Options menu.'
DB CR,LF,LF,LF,LF,LF,'Enter Margin Option --> '
DB '$'
;
;**********************************************************************
;
; PROGRAM STARTS HERE
;
;**********************************************************************
;
START: POP H ;RETURN ADDRESS TO 'CCP'
SHLD EXIT1+1 ;STORE
LXI SP,STACK ;SET UP STACK
REST: LXI D,SOM ;SIGNON MESSAGE
CALL DSTRNG ;SHOW ON THE CRT
;comment the following 2 lines if you don't
;want printer reset to non-entered defaults
; 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,NORM ;NORMAL sized characters
JZ PSTRNG
;
CPI '2'
LXI H,DUBL ;Double sized characters
JZ PSTRNG
;
CPI '3'
LXI H,NLQ ;near letter quality font
JZ PSTRNG
;
CPI '4'
LXI H,DRAF ;draft high speed font
JZ PSTRNG
;
CPI '5'
LXI H,FXED ;fixed character size
JZ PSTRNG
;
CPI '6'
LXI H,PORP ;proportionally spaced characters
JZ PSTRNG
;
CPI '7'
LXI H,NONJ ;no justification
JZ PSTRNG
;
CPI '8'
LXI H,JUST ;fully justified to margins
JZ PSTRNG
;
CPI '9'
LXI H,GRAPH ;toggle graphics
JZ PSTRNG
;
CPI 'A'
LXI H,TENP ;10 chars/inch
JZ PSTRNG
;
CPI 'B'
LXI H,TWELP ;12 chars/inch
JZ PSTRNG
;
CPI 'C'
LXI H,SIXTP ;16.8 chars/inch
JZ PSTRNG
;
CPI 'D'
LXI H,PRIN ;print all received chars
JZ PSTRNG
;
CPI 'E'
LXI H,NONP ;ignore received chars
JZ PSTRNG
;
CPI 'F'
LXI H,SIXL ;6 lines/inch
JZ PSTRNG
;
CPI 'G'
LXI H,EIGHL ;8 lines/inch
JZ PSTRNG
;
CPI 'H'
LXI H,TENL ;10lines/inch
JZ PSTRNG
;
CPI 'I'
LXI H,TWELL ;12lines/inch
JZ PSTRNG
;
CPI 'M'
JZ MSET ;jump to margin setter
;
JMP SELECT ;IF NONE OF THESE, ASK AGAIN
;
;----------------------
; margin setter
;---------------------
;
MSET: LXI D,SMRGN ;SIGNON MESSAGE
CALL DSTRNG ;SHOW ON THE CRT
;
MSLCT: CALL INPUT ;GET A CHAR.
;
CPI '0' ;RESET TO DEFAULT PARAMETERS
LXI H,MRST
JZ MSTRNG
;
CPI '1' ;0.5 INCH LM
LXI H,LM05
JZ MSTRNG
;
CPI '2' ;1 LM
LXI H,LM1
JZ MSTRNG
;
CPI '3' ;1.5 LM
LXI H,LM15
JZ MSTRNG
;
CPI '4' ;2 LM
LXI H,LM2
JZ MSTRNG
;
CPI '5' ;2.5 LM
LXI H,LM25
JZ MSTRNG
;
CPI 'O' ;JUMP BACK TO OPTIONS
JZ REST
;
CPI 'A' ;7.5 INCH RM
LXI H,RM75
JZ MSTRNG
;
CPI 'B' ;7 RM
LXI H,RM7
JZ MSTRNG
;
CPI 'C' ;6.5 RM
LXI H,RM65
JZ MSTRNG
;
CPI 'D' ;6 RM
LXI H,RM6
JZ MSTRNG
;
CPI 'E' ;5.5 RM
LXI H,RM55
JZ MSTRNG
;
CPI 'H' ;0 TM+BM
LXI H,TBM0
JZ MSTRNG
;
CPI 'I' ;0.5 TM+BM
LXI H,TBM05
JZ MSTRNG
;
CPI 'J' ;1 TM+BM
LXI H,TBM1
JZ MSTRNG
;
CPI 'K' ;1.5 TM+BM
LXI H,TBM15
JZ MSTRNG
;
CPI 'L' ;2 TM+BM
LXI H,TBM2
JZ MSTRNG
;
JMP MSLCT ;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
;NOW MAKE ALL CAPS
CPI 61H ;"a" or greater?
RC ;if not, ret with char
CPI 7BH ;"{" or greater?
RNC ;if so, ret with char
SUI 20H ;if lc, subtract offset
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
;
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
;
; PRINT A STRING TO RESET MARGIN
;
MSTRNG: MOV A,M ;GET THE CHARACTER IN THE STRING
ORA A ;SEE IF FINISHED YET
JZ MSLCT ;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 MSTRNG ;DO THE NEXT ONE
;
; STACK AREA
;
DS 20H ;ALLOW SPACE FOR STACK
;
STACK DS 0
;
END