home *** CD-ROM | disk | FTP | other *** search
/ CP/M / CPM_CDROM.iso / mbug / mbug014.arc / SETRX.ASM < prev    next >
Assembly Source File  |  1979-12-31  |  8KB  |  236 lines

  1. ;
  2. ; SETRX v1.0     EPSON RX-80 PRINTER UTILITY       11 JULY 1985
  3. ;
  4. ;     Adapted from SET510A which was adapted by
  5. ;     ASH NULLAWALLA, MELBOURNE, AUSTRALIA
  6. ;
  7. ;     from SETMX which was written by
  8. ;     IRVIN M. HOFF, LOS ALTOS HILLS, CA 94022, USA.
  9. ;
  10. ;     EPSON RX-80 version by Mark Bishop, Melbourne, Australia. 
  11. ;
  12. ;     This program sets the EPSON RX-80 printer and many Epson clones
  13. ;     to various configurations such as:
  14. ;
  15. ;                   10 CPI, 12 CPI or 16.5 CPI
  16. ;                   6, 8, or 12 vertical lines per inch
  17. ;            Half speed, Unidirectional
  18. ;                   Emphasized print
  19. ;            Double Strike    
  20. ;            Italics,Elite
  21. ;                   Superscript, Subscript
  22. ;
  23. ;     I wanted a program to set my printer to, say, 12 CPI without
  24. ;     much trouble before printing a WordStar file.  SET510A was a
  25. ;     good start, and I added many more options whilst changing
  26. ;     some values.  
  27. ;
  28. ; +   +   +   +   +   +   +   +   +   +   +   +   +   +   +   +   +   +
  29. ;
  30.     ORG   100H
  31. ;
  32.         JMP   START          ;JUMP INTO PROGRAM
  33. ;
  34. ;
  35. ; GENERAL EQUATES
  36. ;
  37. BDOS    EQU   5              ;SYSTEM CALL ENTRY POINT
  38. CONIN   EQU   1              ;GET KEYBOARD CHARACTER
  39. CR      EQU   0DH            ;CONTROL-M FOR CARRIAGE RETURN
  40. CONOUT  EQU   2              ;CRT OUTPUT ROUTINE
  41. CTLC    EQU   3              ;CONTROL-C TO TERMINATE
  42. LF      EQU   0AH            ;CONTROL-J FOR LINE FEED
  43. LIST    EQU   5              ;LIST DEVICE OUTPUT
  44. STRING  EQU   9              ;PRINT STRING ON CONSOLE
  45. TAB     EQU   09H            ;CONTROL-I FOR HORIZONTAL TAB
  46. ;
  47. ; DATA STRINGS TO CONTROL EPSON RX-80 PRINTER
  48. ;
  49. DEFLT:  DB        27,64,0             ;INITIALISE
  50. ;
  51. ENLRG1:    DB    27,87,49,0        ;40 COLS 
  52. ENLRG2:    DB    27,14,0            ;40 COLS FIRST LINE ONLY
  53. PICA:   DB        27,80,0            ;80 COLS, NORMAL
  54. ELITE:  DB        27,77,0            ;96 COLS, ELITE 
  55. COND:   DB        15,0            ;132 COLS, CONDENSED
  56. ITALIC:    DB    27,52,0            ;ITALICS
  57. SUPERS: DB      27,83,48,0        ;SUPERSCRIPT
  58. SUBS:   DB      27,83,49,0        ;SUBSCRIPT
  59. SIX:    DB    27,50,0            ;1/6" LINE SPACE
  60. EIGHT:  DB        27,48,0                 ;1/8" LINE SPACE
  61. TEN:    DB        27,49,0            ;7/72" LINE SPACE
  62. DOUBLE:    DB    27,71,0               ;DOUBLE STRIKE 
  63. EMPH:    DB    27,69,0            ;EMPHASIZED
  64. UNID:   DB        27,85,49,0        ;UNIDIRECTIONAL PRINTING 
  65. HALF:   DB        27,115,49,0            ;HALF SPEED
  66. MWB:    DB        10,10,10,27,108,8    ;LLIST MWB FILE. LF*3, COL.HD 8
  67.         DB    27,81,72,27,67,66    ;COL.END 72, FORM LEN. 66
  68.         DB      27,78,6,0               ;SKIP PERF. 6
  69. TURNUP: DB        CR,LF,'$'
  70. BACK:    DB      8,32,8,'$'        ;BACKSPACE,ERASE,BACKSPACE    
  71. ;
  72. ;
  73. ; SIGN-ON MESSAGE
  74. ;
  75. SOM:    DB    CR,LF,LF,LF,TAB,TAB,'---------------- S E T R X -----------------'
  76.     DB    CR,LF
  77.     DB    CR,LF,TAB,TAB,'Adapted  from   SET510A.ASM   by Mark Bishop'
  78.         DB    CR,LF,TAB,TAB,'Epson RX-80  Printer options  v1.0  11/07/85'
  79.     DB    CR,LF,TAB,TAB,'Will also work  on most  xxx80  Epson clones'
  80.     DB    CR,LF
  81.     DB    CR,LF,TAB,TAB,'A = Enlarged   40  columns'    
  82.     DB    CR,LF,TAB,TAB,'B = Enlarged   40  columns (first line only)'
  83.         DB    CR,LF,TAB,TAB,'C = Pica       80  columns'
  84.     DB    CR,LF,TAB,TAB,'D = Elite      96  columns'
  85.         DB    CR,LF,TAB,TAB,'E = Condensed  132 columns'
  86.     DB    CR,LF,TAB,TAB,'F = Superscript'   
  87.     DB    CR,LF,TAB,TAB,'G = Subscript'
  88.         DB    CR,LF,TAB,TAB,'H = Italic'
  89.         DB    CR,LF,TAB,TAB,'I = 1/6"       Line Spacing'
  90.     DB    CR,LF,TAB,TAB,'J = 1/8"       Line Spacing'
  91.     DB    CR,LF,TAB,TAB,'K = 7/72"      Line Spacing'
  92.     DB    CR,LF,TAB,TAB,'L = Double Strike'
  93.         DB    CR,LF,TAB,TAB,'M = Emphasized'
  94.         DB    CR,LF,TAB,TAB,'N = Unidirectional'
  95.         DB    CR,LF,TAB,TAB,'O = Half Speed'
  96.         DB    CR,LF,TAB,TAB,'P = Microworld Basic LLIST screen format' 
  97.     DB    CR,LF,LF,TAB,TAB,'Make Selection:- (May be combined e.g. IJN)'
  98.         DB    '$'
  99. ;
  100. ;
  101. ;**********************************************************************
  102. ;*                                                                    *
  103. ;*                    PROGRAM STARTS HERE                             *
  104. ;*                                                                    *
  105. ;**********************************************************************
  106. ;
  107. ;
  108. START:  POP   H              ;RETURN ADDRESS TO 'CCP'
  109.         SHLD  EXIT1+1        ;STORE
  110.         LXI   SP,STACK       ;SET UP STACK
  111.         LXI   D,SOM          ;SIGNON MESSAGEè        CALL  DSTRNG         ;SHOW ON THE CRT
  112.         LXI   H,DEFLT        ;SET THE PRINTER TO DEFAULT CONDITIONS
  113.         JMP   PSTRNG
  114. ;
  115. ;
  116. SELECT: CALL  INPUT          ;GET A CHARACTER FROM KEYBOARD
  117.     ANI   95         ;MASK BITS 5,7    
  118. ;
  119.         CPI   'A'
  120.         LXI   H,ENLRG1       ;40 COLS ENLARGED
  121.         JZ    PSTRNG
  122. ;
  123.         CPI   'B'
  124.         LXI   H,ENLRG2       ;40 COLS ENLARGED FIRST LINE ONLY
  125.         JZ    PSTRNG
  126. ;
  127.         CPI   'C'
  128.         LXI   H,PICA         ;80 COLS, NORMAL
  129.         JZ    PSTRNG
  130. ;
  131.     CPI   'D'
  132.     LXI   H,ELITE         ;96 COLS, ELITE
  133.     JZ    PSTRNG             
  134. ;
  135.         CPI   'E'
  136.         LXI   H,COND         ;132 COLS, CONDENSED
  137.         JZ    PSTRNG
  138. ;
  139.     CPI   'F'
  140.     LXI   H,SUPERS         ;SUPERSCRIPT
  141.     JZ    PSTRNG         
  142. ;
  143.         CPI   'G'
  144.         LXI   H,SUBS         ;SUBSCRIPT
  145.         JZ    PSTRNG
  146. ;
  147.         CPI   'H'
  148.         LXI   H,ITALIC       ;ITALIC
  149.         JZ    PSTRNG
  150. ;
  151.         CPI   'I'
  152.         LXI   H,SIX          ;1/6"   LINE SPACING
  153.         JZ    PSTRNG
  154. ;
  155.         CPI   'J'
  156.         LXI   H,EIGHT         ;1/8"   LINE SPACING    
  157.         JZ    PSTRNG
  158. ;
  159.         CPI   'K'
  160.         LXI   H,TEN          ;7/72"  LINE SPACING
  161.         JZ    PSTRNG
  162. ;
  163.     CPI   'L'
  164.     LXI   H,DOUBLE         ;DOUBLE STRIKE    
  165.     JZ    PSTRNG
  166. ;
  167.     CPI   'M'
  168.     LXI   H,EMPH         ;EMPHASIZED
  169.     JZ    PSTRNG
  170. ;
  171.         CPI   'N'
  172.         LXI   H,UNID         ;UNIDIRECTIONAL
  173.         JZ    PSTRNG
  174. ;
  175.         CPI   'O'
  176.     LXI   H,HALF         ;HALF SPEED
  177.         JZ    PSTRNG
  178. ;
  179.         CPI   'P'
  180.         LXI   H,MWB         ;LLIST .MWB FILE IN SCREEN FORMAT
  181.         JZ    PSTRNG
  182. ;
  183.     LXI   D,BACK         ;BACKSPACEè        CALL  DSTRNG         ;CURSOR
  184.     JMP   SELECT         ;IF NONE OF THESE, ASK AGAIN
  185. ;
  186. ;
  187. ;======================================================================
  188. ;=                                                                    =
  189. ;=                     ROUTINES START HERE                            =
  190. ;=                                                                    =
  191. ;======================================================================
  192. ;
  193. ;
  194. EXIT:   LXI   D,TURNUP       ;TURN UP SOME EXTRA LINES
  195.         CALL  DSTRNG         ;DISPLAY ON THE CRT
  196. ;
  197. EXIT1:  JMP   0              ;FILLED BY 'START' FOR RETURN TO 'CCP'
  198. ;
  199. ;
  200. ; GET A KEYBOARD CHARACTER
  201. ;
  202. INPUT:  MVI   C,CONIN        ;KEYBOARD ROUTINE
  203.         CALL  BDOS
  204.         ANI   7FH            ;STRIP AWAY ANY PARITY
  205.         CPI   CTLC           ;CONTROL-C?
  206.         JZ    EXIT           ;IF YES, ALL FINISHED
  207.         CPI   CR             ;CONTROL-M FOR RETURN?
  208.         JZ    EXIT           ;IF YES, ALL FINISHED
  209.         RET
  210. ;
  211. ; DISPLAY A STRING ON THE CRT
  212. ;
  213. DSTRNG: MVI   C,STRING       ;CONSOLE STRING ROUTINE
  214.         JMP   BDOS           ;SEND TO THE CRT
  215. ;
  216. ; PRINT A STRING OF CHARS. ON THE STAR DP-510
  217. ;
  218. PSTRNG: MOV   A,M            ;GET THE CHARACTER IN THE STRING
  219.         ORA   A              ;SEE IF FINISHED YET
  220.         JZ    SELECT         ;GET ANOTHER ANSWER IF FINISHED
  221. ;
  222.         PUSH  H              ;SAVE THE ADDRESS IN THE STRINGè        MVI   C,LIST         ;PRINTER ROUTINE
  223.         MOV   E,A            ;PUT THE CHAR. INTO 'E' REG.
  224.         CALL  BDOS           ;SEND TO THE PRINTER
  225.     POP   H              ;BACK TO THE STRING ADDRESS
  226.         INX   H              ;NEXT LOCATION
  227.         JMP   PSTRNG         ;DO THE NEXT ONE
  228. ;
  229. ; STACK AREA
  230. ;
  231.     DS    20H          ;ALLOW SPACE FOR STACK
  232. ;
  233. STACK    DS    0
  234. ;
  235.     END
  236.