home *** CD-ROM | disk | FTP | other *** search
- ; 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