; 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