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.ASM < prev    next >
Assembly Source File  |  2000-06-30  |  9KB  |  367 lines

  1. ; SETIDS v1.4    IDS MICROPRISM PRINTER UTILITY    4/7/84
  2. ;
  3. ; PREPARED BY R. BLOOM AND E. BOYD,
  4. ; BASED ON SETMX by IRVIN M. HOFF
  5. ;
  6. ; This program sets the IDS MICROPRISM printer to various
  7. ; configurations such as:
  8. ;
  9. ;    10 CPI or 16.5 CPI
  10. ;    Normal or Double Strike
  11. ;    6 or 8 vertical lines per inch
  12. ;    Emphasized print
  13. ;
  14. ; ===========================================================
  15. ;
  16.     ORG    100H
  17. ;
  18. ;
  19.     JMP    START        ;JUMP INTO PROGRAM
  20. ;
  21. ; GENERAL EQU'S
  22. ;
  23. BDOS    EQU    5        ;SYSTEM CALL ENTRY POINT
  24. CONIN    EQU    1        ;GET KEYBOARD CHARACTER
  25. CR    EQU    0DH        ;CONTROL-M FOR CARRIAGE RETURN
  26. CONOUT  EQU    2        ;CRT OUTPUT ROUTINE
  27. CTLC    EQU    3        ;CONTROL-C TO TERMINATE
  28. ESC    EQU    1BH        ;ESCAPE CHARACTER
  29. LF    EQU    0AH        ;CONTROL-J FOR LINE FEED
  30. LIST    EQU    5        ;LIST DEVICE OUTPUT
  31. STRING  EQU    9        ;PRINT STRING ON CONSOLE
  32. ;
  33. ; DATA STRINGS TO CONTROL IDS PRINTER
  34. ;
  35. DEFLT:    DB    11H,2,1BH,'R2$',1EH,1BH,'B8$',6H,5H,0
  36.             ;Printer on, Normal size chars, Draft Quality,
  37.             ;12 Pitch, 6 lines/inch, Fixed Pitch chars,
  38.             ;No right Justification.
  39.  
  40. DUBL:    DB    1,0    ;Double Width Characters
  41. NORM:    DB    2,0    ;Normal size chars
  42. JUST:    DB    4,0    ;Fully Justified
  43. NONJ:    DB    5,0    ;Right Justification Off
  44. FXED:    DB    6,0    ;Fixed Pitch
  45. PORP:    DB    10H,0    ;Proportional Pitch
  46. PRIN:    DB    11H,0    ;Print all Characters (printer on)
  47. NONP:    DB    13H,0    ;Ignore all Character (printer off)
  48. TENP:    DB    1DH,0    ;Ten Pitch
  49. TWELP:    DB    1EH,0    ;Twelve Pitch
  50. SIXTP:    DB    1FH,0    ;16.8 Pitch
  51. GRAPH:    DB    3,2,0    ;Toggle graphics
  52. NLQ:    DB    1BH,'R1$',0    ;Near Letter Quality
  53. DRAF:    DB    1BH,'R2$',0    ;Draft Quality
  54. SIXL:    DB    1BH,'B8$',0    ;6 lines per inch
  55. EIGHL:    DB    1BH,'B6$',0    ;8 lines per inch
  56. TENL:    DB    1BH,'B5$',0    ;10 lines per inch
  57. TWELL:    DB    1BH,'B4$',0    ;12 lines per inch
  58. TURNUP:    DB    CR,LF,'$'
  59. ;
  60. ; SIGN-ON MESSAGE
  61. ;
  62. SOM:    DB    CR,LF,LF,LF,LF,LF,LF,LF
  63.     DB    CR,LF,'IDS Microprism Printer Options v1.4  4/7/84'
  64.     DB    CR,LF,LF,'0 --> Reset to all default parameters    (*Defaults)'
  65.     DB    CR,LF,LF,'1 --> Normal Sized Characters*     A --> 10 Pitch'
  66.     DB    CR,LF,'2 --> Double Sized Characters      B --> 12 Pitch*'
  67.     DB    CR,LF,'                                   C --> 16.8 Pitch'
  68.     DB    CR,LF,'3 --> Near Letter Quality'
  69.     DB    CR,LF,'4 --> Draft Quality Print*         D --> Print received chars*'
  70.     DB    CR,LF,'                                   E --> Ignore received chars'
  71.     DB    CR,LF,'5 --> Fixed Character Spacing*'
  72.     DB    CR,LF,'6 --> Proportionally Spacing       F --> 6 Lines per inch*'
  73.     DB    CR,LF,'                                   G --> 8 Lines per inch'
  74.     DB    CR,LF,'7 --> Non-Justified Print*         H --> 10 Lines per inch'
  75.     DB    CR,LF,'8 --> Fully Justified Print        I --> 12 Lines per inch'
  76.     DB    CR,LF,LF,'9 --> Toggle Graphics Mode         M --> Set Margins'
  77.     DB    CR,LF,LF,LF,LF,LF,'Enter Option --> '
  78.     DB    '$'
  79. ;
  80. ; SET VARIOUS MARGINS
  81. ;
  82. MRST    DB    1BH,'J0,960$',1BH,'L,408,408,$',0    ;RESET TO DEFAULTS
  83. ;
  84. RM75    DB    1BH,'J0,900$',0    ;7.5 INCH RIGHT MARGIN
  85. RM7    DB    1BH,'J0,840$',0    ;7 INCH RIGHT MARGIN
  86. RM65    DB    1BH,'J0,780$',0    ;6.5 INCH RIGHT MARGIN
  87. RM6     DB    1BH,'J0,720$',0    ;6 INCH RIGHT MARGIN
  88. RM55    DB    1BH,'J0,660$',0    ;5.5 INCH RIGHT MARGIN
  89. ;
  90. LM05    DB    1BH,'J60$',0    ;0.5 INCH LEFT MARGIN
  91. LM1    DB    1BH,'J120$',0    ;1 INCH LEFT MARGIN
  92. LM15    DB    1BH,'J180$',0    ;1.5 INCH LEFT MARGIN
  93. LM2    DB    1BH,'J240$',0    ;2 INCH LEFT MARGIN
  94. LM25    DB    1BH,'J300$',0    ;2.5 INCH LEFT MARGIN
  95. ;
  96. TBM0:    DB    1BH,'L,408,408,$',0    ;No page break (top and bottom margins)
  97. TBM05:    DB    1BH,'L,408,384,$',0    ;.5 inch top + bottom margins
  98. TBM1:    DB    1BH,'L,408,360,$',0    ;1 inch top + bottom margins
  99. TBM15:    DB    1BH,'L,408,336,$',0    ;1.5 inch top + bottom margins
  100. TBM2:    DB    1BH,'L,408,312,$',0    ;2 inch top + bottom margins
  101. ;
  102. ; set margins menu
  103. ;
  104. SMRGN:    DB    CR,LF,LF,LF,LF,LF,LF,LF,LF,LF,LF,LF,LF
  105.     DB    CR,LF,'IDS Microprism Printer Margins Options v1.4a  4/7/84'
  106.     DB    CR,LF,LF,'0 --> Reset to margins (LM=0 RM=Max, TM=0, BM=0)'
  107.     DB    CR,LF,LF,'Left Margins           Right Margins (resets LM to 0)'  
  108.     DB    CR,LF,'1 --> .5 Inch          A --> 7.5 Inch'
  109.     DB    CR,LF,'2 --> 1 Inch           B --> 7 Inch'
  110.     DB    CR,LF,'3 --> 1.5 Inch         C --> 6.5 Inch'
  111.     DB    CR,LF,'4 --> 2 Inch           D --> 6 Inch'
  112.     DB    CR,LF,'5 --> 2.5 Inch         E --> 5.5 Inch'
  113.     DB    CR,LF,LF,'Page Break (top + bottom margins)'
  114.     DB    CR,LF,'H --> None             J --> 1 Inch'
  115.     DB    CR,LF,'                       K --> 1.5 Inch'
  116.     DB    CR,LF,'I --> .5 Inch          L --> 2 Inch'
  117.     DB    CR,LF,LF,'O --> Back to Options menu.'
  118.     DB    CR,LF,LF,LF,LF,LF,'Enter Margin Option --> '
  119.     DB    '$'
  120. ;
  121. ;**********************************************************************
  122. ;
  123. ;            PROGRAM STARTS HERE
  124. ;
  125. ;**********************************************************************
  126. ;
  127. START:    POP    H        ;RETURN ADDRESS TO 'CCP'
  128.     SHLD    EXIT1+1        ;STORE
  129.     LXI    SP,STACK    ;SET UP STACK
  130. REST:    LXI    D,SOM        ;SIGNON MESSAGE
  131.     CALL    DSTRNG        ;SHOW ON THE CRT
  132.                 ;comment the following 2 lines if you don't
  133.                 ;want printer reset to non-entered defaults
  134. ;    LXI    H,DEFLT        ;SET THE PRINTER TO NORMAL CONDITIONS
  135. ;    JMP    PSTRNG
  136. ;
  137. SELECT:    CALL    INPUT    ;GET A CHAR.
  138. ;
  139.     CPI    '0'        ;RESET TO DEFAULT PARAMETERS
  140.     LXI    H,DEFLT
  141.     JZ    PSTRNG
  142. ;
  143.     CPI    '1'
  144.     LXI    H,NORM        ;NORMAL sized characters
  145.     JZ    PSTRNG
  146. ;
  147.     CPI    '2'
  148.     LXI    H,DUBL        ;Double sized characters
  149.     JZ    PSTRNG
  150. ;
  151.     CPI    '3'
  152.     LXI    H,NLQ        ;near letter quality font
  153.     JZ    PSTRNG
  154. ;
  155.     CPI    '4'
  156.     LXI    H,DRAF        ;draft high speed font
  157.     JZ    PSTRNG
  158. ;
  159.     CPI    '5'
  160.     LXI    H,FXED        ;fixed character size
  161.     JZ    PSTRNG
  162. ;
  163.     CPI    '6'
  164.     LXI    H,PORP        ;proportionally spaced characters
  165.     JZ    PSTRNG
  166. ;
  167.     CPI    '7'
  168.     LXI    H,NONJ        ;no justification
  169.     JZ    PSTRNG
  170. ;
  171.     CPI    '8'
  172.     LXI    H,JUST        ;fully justified to margins
  173.     JZ    PSTRNG
  174. ;
  175.     CPI    '9'
  176.     LXI    H,GRAPH        ;toggle graphics
  177.     JZ    PSTRNG
  178. ;
  179.     CPI    'A'
  180.     LXI    H,TENP        ;10 chars/inch
  181.     JZ    PSTRNG
  182. ;
  183.     CPI    'B'
  184.     LXI    H,TWELP        ;12 chars/inch
  185.     JZ    PSTRNG
  186. ;
  187.     CPI    'C'
  188.     LXI    H,SIXTP        ;16.8 chars/inch
  189.     JZ    PSTRNG                
  190. ;
  191.     CPI    'D'
  192.     LXI    H,PRIN        ;print all received chars
  193.     JZ    PSTRNG
  194. ;
  195.     CPI    'E'
  196.     LXI    H,NONP        ;ignore received chars
  197.     JZ    PSTRNG
  198. ;
  199.     CPI    'F'
  200.     LXI    H,SIXL        ;6 lines/inch
  201.     JZ    PSTRNG
  202. ;
  203.     CPI    'G'
  204.     LXI    H,EIGHL        ;8 lines/inch
  205.     JZ    PSTRNG
  206. ;
  207.     CPI    'H'
  208.     LXI    H,TENL        ;10lines/inch
  209.     JZ    PSTRNG
  210. ;
  211.     CPI    'I'
  212.     LXI    H,TWELL        ;12lines/inch
  213.     JZ    PSTRNG
  214. ;
  215.     CPI    'M'
  216.     JZ    MSET        ;jump to margin setter
  217. ;
  218.     JMP    SELECT    ;IF NONE OF THESE, ASK AGAIN
  219. ;
  220. ;----------------------
  221. ; margin setter
  222. ;---------------------
  223. ;
  224. MSET:    LXI    D,SMRGN        ;SIGNON MESSAGE
  225.     CALL    DSTRNG        ;SHOW ON THE CRT
  226. ;
  227. MSLCT:    CALL    INPUT    ;GET A CHAR.
  228. ;
  229.     CPI    '0'        ;RESET TO DEFAULT PARAMETERS
  230.     LXI    H,MRST
  231.     JZ    MSTRNG
  232. ;
  233.     CPI    '1'        ;0.5 INCH LM
  234.     LXI    H,LM05
  235.     JZ    MSTRNG
  236. ;
  237.     CPI    '2'        ;1 LM
  238.     LXI    H,LM1
  239.     JZ    MSTRNG
  240. ;
  241.     CPI    '3'        ;1.5 LM
  242.     LXI    H,LM15
  243.     JZ    MSTRNG
  244. ;
  245.     CPI    '4'        ;2 LM
  246.     LXI    H,LM2
  247.     JZ    MSTRNG
  248. ;
  249.     CPI    '5'        ;2.5 LM
  250.     LXI    H,LM25
  251.     JZ    MSTRNG
  252. ;
  253.     CPI    'O'        ;JUMP BACK TO OPTIONS
  254.     JZ    REST
  255. ;
  256.     CPI    'A'        ;7.5 INCH RM
  257.     LXI    H,RM75
  258.     JZ    MSTRNG
  259. ;
  260.     CPI    'B'        ;7 RM
  261.     LXI    H,RM7
  262.     JZ    MSTRNG
  263. ;
  264.     CPI    'C'        ;6.5 RM
  265.     LXI    H,RM65
  266.     JZ    MSTRNG
  267. ;
  268.     CPI    'D'        ;6 RM
  269.     LXI    H,RM6
  270.     JZ    MSTRNG
  271. ;
  272.     CPI    'E'        ;5.5 RM
  273.     LXI    H,RM55
  274.     JZ    MSTRNG
  275. ;
  276.     CPI    'H'        ;0 TM+BM
  277.     LXI    H,TBM0
  278.     JZ    MSTRNG
  279. ;
  280.     CPI    'I'        ;0.5 TM+BM
  281.     LXI    H,TBM05
  282.     JZ    MSTRNG
  283. ;
  284.     CPI    'J'        ;1 TM+BM
  285.     LXI    H,TBM1
  286.     JZ    MSTRNG
  287. ;
  288.     CPI    'K'        ;1.5 TM+BM
  289.     LXI    H,TBM15
  290.     JZ    MSTRNG
  291. ;
  292.     CPI    'L'        ;2 TM+BM
  293.     LXI    H,TBM2
  294.     JZ    MSTRNG
  295. ;
  296.     JMP    MSLCT    ;IF NONE OF THESE, ASK AGAIN
  297. ;
  298. ;======================================================================
  299. ;
  300. ;            ROUTINES START HERE
  301. ;
  302. ;======================================================================
  303. ;
  304. EXIT:    LXI    D,TURNUP    ;TURN UP SOME EXTRA LINES
  305.     CALL    DSTRNG    ;DISPLAY ON THE CRT
  306. ;
  307. EXIT1:    JMP    0        ;FILLED BY 'START' FOR RETURN TO 'CCP'
  308. ;
  309. ; GET A KEYBOARD CHARACTER
  310. ;
  311. INPUT:    MVI    C,CONIN    ;KEYBOARD ROUTINE
  312.     CALL    BDOS
  313.     ANI    7FH    ;STRIP AWAY ANY PARITY
  314.     CPI    CTLC    ;CONTROL-C?
  315.     JZ    EXIT    ;IF YES, ALL FINISHED
  316.     CPI    CR    ;CONTROL-M FOR RETURN?
  317.     JZ    EXIT    ;IF YES, ALL FINISHED
  318.             ;NOW MAKE ALL CAPS
  319.     CPI    61H    ;"a" or greater?
  320.     RC        ;if not, ret with char
  321.     CPI    7BH    ;"{" or greater?
  322.     RNC        ;if so, ret with char
  323.     SUI    20H    ;if lc, subtract offset
  324.     RET
  325. ;
  326. ; DISPLAY A STRING ON THE CRT
  327. ;
  328. DSTRNG:    MVI    C,STRING    ;CONSOLE STRING ROUTINE
  329.     JMP    BDOS    ;SEND TO THE CRT
  330. ;
  331. ; PRINT A STRING OF CHARS
  332. ;
  333. PSTRNG:    MOV    A,M    ;GET THE CHARACTER IN THE STRING
  334.     ORA    A    ;SEE IF FINISHED YET
  335.     JZ    SELECT    ;GET ANOTHER ANSWER IF FINISHED
  336. ;
  337.     PUSH    H    ;SAVE THE ADDRESS IN THE STRING
  338.     MVI    C,LIST    ;PRINTER ROUTINE
  339.     MOV    E,A    ;PUT THE CHAR. INTO 'E' REG.
  340.     CALL    BDOS    ;SEND TO THE PRINTER
  341.     POP    H    ;BACK TO THE STRING ADDRESS
  342.     INX    H    ;NEXT LOCATION
  343.     JMP    PSTRNG    ;DO THE NEXT ONE
  344. ;
  345. ; PRINT A STRING TO RESET MARGIN
  346. ;
  347. MSTRNG:    MOV    A,M    ;GET THE CHARACTER IN THE STRING
  348.     ORA    A    ;SEE IF FINISHED YET
  349.     JZ    MSLCT    ;GET ANOTHER ANSWER IF FINISHED
  350. ;
  351.     PUSH    H    ;SAVE THE ADDRESS IN THE STRING
  352.     MVI    C,LIST    ;PRINTER ROUTINE
  353.     MOV    E,A    ;PUT THE CHAR. INTO 'E' REG.
  354.     CALL    BDOS    ;SEND TO THE PRINTER
  355.     POP    H    ;BACK TO THE STRING ADDRESS
  356.     INX    H    ;NEXT LOCATION
  357.     JMP    MSTRNG    ;DO THE NEXT ONE
  358. ;
  359.  
  360. ;    STACK AREA
  361. ;
  362.     DS    20H        ;ALLOW SPACE FOR STACK
  363. ;
  364. STACK    DS    0
  365. ;
  366.     END
  367.