home *** CD-ROM | disk | FTP | other *** search
/ CP/M / CPM_CDROM.iso / cpm / programs / list / printcpm.lbr / SETOK.AZM / SETOK.ASM
Assembly Source File  |  1987-06-14  |  6KB  |  188 lines

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