home *** CD-ROM | disk | FTP | other *** search
/ CP/M / CPM_CDROM.iso / mbug / mbug115.arc / SETMX.ASM < prev    next >
Assembly Source File  |  1979-12-31  |  7KB  |  198 lines

  1. ; SETMX v1.0     EPSON MX-80 PRINTER UTILITY       10/10/82
  2. ;
  3. ;                            by
  4. ;                       IRVIN M. HOFF
  5. ;                LOS ALTOS HILLS, CA  94022
  6. ;
  7. ;
  8. ;     This program sets the EPSON MX-80 printer to various
  9. ;     configurations such as:
  10. ;
  11. ;                   10 CPI or 16.5 CPI
  12. ;                   Normal or Double Strike
  13. ;                   6 or 8 vertical lines per inch
  14. ;                   Emphasized print
  15. ;
  16. ;     There are numerous other selections that could be added.
  17. ;     This program should give you the background to include
  18. ;     other options, if desired, yourself.  These seemed the
  19. ;     most important.
  20. ;
  21. ;
  22. ;
  23. ;     COMMAND CHARACTERS FOR THE EPSON PRINTER:
  24. ;
  25. ;        17         CTL-Q       Enable printer to receive data
  26. ;        27,'0'     ESC 0       8 vertical lines per inch
  27. ;        27,'2'     ESC 2       6 vertical lines per inch (Normal)
  28. ;        27,'E'     ESC E       Emphasized print
  29. ;        27,'F'     ESC F       Non-emphasized print      (Normal)
  30. ;        27,'G'     ESC G       Double-strike print
  31. ;        27,'H'     ESC H       Single-strike print       (Normal)
  32. ;        27,14      ESC CTL-N   Double-width print on
  33. ;        27,20      ESC CTL-T   Double-width print off    (Normal)
  34. ;  15 or 27,15      ESC CTL-O   16.5 Characters per inch  (Compressed)
  35. ;  18 or 27,18      ESC CTL-R   10 characters per inch    (Normal)
  36. ;
  37. ; +   +   +   +   +   +   +   +   +   +   +   +   +   +   +   +   +   +
  38. ;
  39. ;
  40.     ORG    100H
  41. ;
  42. ;
  43.         JMP   START          ;JUMP INTO PROGRAM
  44. ;
  45. ;
  46. ; GENERAL EQU'S
  47. ;
  48. BDOS    EQU   5              ;SYSTEM CALL ENTRY POINT
  49. CONIN   EQU   1              ;GET KEYBOARD CHARACTER
  50. CR      EQU   0DH            ;CONTROL-M FOR CARRIAGE RETURN
  51. CONOUT  EQU   2              ;CRT OUTPUT ROUTINE
  52. CTLC    EQU   3              ;CONTROL-C TO TERMINATE
  53. ESC     EQU   1BH            ;ESCAPE CHARACTER
  54. LF      EQU   0AH            ;CONTROL-J FOR LINE FEED
  55. LIST    EQU   5              ;LIST DEVICE OUTPUT
  56. STRING  EQU   9              ;PRINT STRING ON CONSOLE
  57. TAB     EQU   09H            ;CONTROL-I FOR HORIZONTAOL TAB
  58. ;.....
  59. ;
  60. ;
  61. ; DATA STRINGS TO CONTROL EPSON PRINTER
  62. ;
  63. CD:     DB    15,ESC,'F',ESC,'G',ESC,'2',0    ;16.5 CPI, DOUBLE STRIKE
  64. CN:     DB    15,ESC,'F',ESC,'H',ESC,'2',0    ;16.5 CPI, NORMAL
  65. DEFLT:  DB    17,18,ESC,'F',ESC,'H',ESC,'2',0 ;DEFAULT PARAMETERS
  66. EMPH:   DB    ESC,'E',0                       ;EMPHASIZED
  67. UCD:    DB    18,ESC,'F',ESC,'G',ESC,'2',0    ;10 CPI, DOUBLE STRIKE
  68. UCN:    DB    18,ESC,'F',ESC,'H',ESC,'2',0    ;10 CPI, NORMAL
  69. EIGHT:  DB    ESC,'0',0                       ;8 LINES PER INCH
  70. TURNUP: DB    CR,LF,'$'
  71. ;.....
  72. ;
  73. ;
  74. ; SIGN-ON MESSAGE
  75. ;
  76. SOM:    DB    CR,LF,LF,LF,LF,LF,LF,LF
  77.         DB    TAB,TAB,'MX-80 Printer options v1.0 10/11/82'
  78.         DB    CR,LF,LF,TAB,TAB,'0 = Reset to default parameters'
  79.         DB    CR,LF,LF,TAB,TAB,'1 = 10   CPI, Normal'
  80.         DB    CR,LF,TAB,TAB,'2 = 10   CPI, Double Strike'
  81.         DB    CR,LF,TAB,TAB,'3 = 16.5 CPI, Normal'
  82.         DB    CR,LF,TAB,TAB,'4 = 16.5 CPI, Double Strike'
  83.         DB    CR,LF,LF,TAB,TAB,'5 = Emphasized'
  84.         DB    CR,LF,TAB,TAB,'8 = vertical lines per inch'
  85.         DB    CR,LF,LF,LF,LF,LF,LF,TAB,'Select: '
  86.         DB    '$'
  87. ;.....
  88. ;
  89. ;
  90. ;**********************************************************************;
  91. ;                                                                      ;
  92. ;                     PROGRAM STARTS HERE                              ;
  93. ;                                                                      ;
  94. ;**********************************************************************;
  95. ;
  96. ;
  97. START:  POP   H              ;RETURN ADDRESS TO 'CCP'
  98.         SHLD  EXIT1+1        ;STORE
  99.         LXI   SP,STACK       ;SET UP STACK
  100.         LXI   D,SOM          ;SIGNON MESSAGE
  101.         CALL  DSTRNG         ;SHOW ON THE CRT
  102.         LXI   H,DEFLT        ;SET THE PRINTER TO NORMAL CONDITIONS
  103.         JMP   PSTRNG
  104. ;...
  105. ;
  106. ;
  107. SELECT: CALL  INPUT          ;GET A CHAR.
  108. ;
  109.         CPI   '0'            ;RESET TO DEFAULT PARAMETERS
  110.         LXI   H,DEFLT
  111.         JZ    PSTRNG
  112. ;
  113.         CPI   '1'
  114.         LXI   H,UCN          ;10 CPI, NORMAL
  115.         JZ    PSTRNG
  116. ;
  117.         CPI   '2'
  118.         LXI   H,UCD          ;10 CPI, DOUBLE STRIKE
  119.         JZ    PSTRNG
  120. ;
  121.         CPI   '3'
  122.         LXI   H,CN           ;16.5 CPI, NORMAL
  123.         JZ    PSTRNG
  124. ;
  125.         CPI   '4'
  126.         LXI   H,CD           ;16.5 CPI, DOUBLE STRIKE
  127.         JZ    PSTRNG
  128. ;
  129.         CPI   '5'
  130.         LXI   H,EMPH         ;EMPHASIZED
  131.         JZ    PSTRNG
  132. ;
  133.         CPI   '8'
  134.         LXI   H,EIGHT        ;GO TO 8 VERTICAL LINES PER INCH
  135.         JZ    PSTRNG
  136. ;
  137.         JMP   SELECT         ;IF NONE OF THESE, ASK AGAIN
  138. ;.....
  139. ;
  140. ;
  141. ;======================================================================;
  142. ;                                                                      ;
  143. ;                     ROUTINES START HERE                              ;
  144. ;                                                                      ;
  145. ;======================================================================;
  146. ;
  147. ;
  148. EXIT:   LXI   D,TURNUP       ;TURN UP SOME EXTRA LINES
  149.         CALL  DSTRNG         ;DISPLAY ON THE CRT
  150. ;
  151. EXIT1:  JMP   0              ;FILLED BY 'START' FOR RETURN TO 'CCP'
  152. ;.....
  153. ;
  154. ;
  155. ; GET A KEYBOARD CHARACTER
  156. ;
  157. INPUT:  MVI   C,CONIN        ;KEYBOARD ROUTINE
  158.         CALL  BDOS
  159.         ANI   7FH            ;STRIP AWAY ANY PARITY
  160.         CPI   CTLC           ;CONTROL-C?
  161.         JZ    EXIT           ;IF YES, ALL FINISHED
  162.         CPI   CR             ;CONTROL-M FOR RETURN?
  163.         JZ    EXIT           ;IF YES, ALL FINISHED
  164.         RET
  165. ;.....
  166. ;
  167. ;
  168. ; DISPLAY A STRING ON THE CRT
  169. ;
  170. DSTRNG: MVI   C,STRING       ;CONSOLE STRING ROUTINE
  171.         JMP   BDOS           ;SEND TO THE CRT
  172. ;.....
  173. ;
  174. ;
  175. ; PRINT A STRING OF CHARS. ON THE EPSON MX-80
  176. ;
  177. PSTRNG: MOV   A,M            ;GET THE CHARACTER IN THE STRING
  178.         ORA   A              ;SEE IF FINISHED YET
  179.         JZ    SELECT         ;GET ANOTHER ANSWER IF FINISHED
  180. ;
  181.         PUSH  H              ;SAVE THE ADDRESS IN THE STRING
  182.         MVI   C,LIST         ;PRINTER ROUTINE
  183.         MOV   E,A            ;PUT THE CHAR. INTO 'E' REG.
  184.         CALL  BDOS           ;SEND TO THE PRINTER
  185.         POP   H              ;BACK TO THE STRING ADDRESS
  186.         INX   H              ;NEXT LOCATION
  187.         JMP   PSTRNG         ;DO THE NEXT ONE
  188. ;.....
  189. ;
  190. ;
  191. ;    STACK AREA
  192. ;
  193.     DS    20H            ;ALLOW SPACE FOR STACK
  194. ;
  195. STACK    DS    0
  196. ;
  197.     END
  198.