home *** CD-ROM | disk | FTP | other *** search
/ Oakland CPM Archive / oakcpm.iso / cpm / list / citoh.lbr / CITOH.AQM / CITOH.ASM
Assembly Source File  |  1987-12-29  |  8KB  |  194 lines

  1. ; CITOH.ASM v1.0     C-ITOH M-1550 PRINTER UTILITY       10/10/82
  2. ;
  3. ;                            by
  4. ;                       IRVIN M. HOFF
  5. ;                LOS ALTOS HILLS, CA  94022
  6. ;
  7. ;     MODIFIED 10/30/84 BY D. TALKINGTON FOR C-ITOH PRINTER
  8. ;
  9. ;     This program sets the C-ITOH M-1550 printer to various
  10. ;     configurations such as:
  11. ;
  12. ;                   10, 12, or 17 Characters Per Inch
  13. ;                   Normal or Double Strike
  14. ;                   Normal or Enlarged Print
  15. ;                   6 or 8 vertical lines per inch
  16. ;
  17. ;     There are numerous other selections that could be added.
  18. ;     This program should give you the background to include
  19. ;     other options, if desired, yourself.  These seemed the
  20. ;     most important.
  21. ;
  22. ; +   +   +   +   +   +   +   +   +   +   +   +   +   +   +   +   +   +
  23. ;
  24. ;     COMMAND CHARACTERS FOR THE C-ITOH M-1550 PRINTER:
  25. ;
  26. ;        17         CTL-Q       Enable printer to receive data
  27. ;        27,'65'    ESC A       6 vertical lines per inch (Normal)
  28. ;        27,'66'    ESC B       8 vertical lines per inch
  29. ;        27,'33'    ESC !       Emphasized print
  30. ;        27,'34'    ESC "       Non-emphasized print      (Normal)
  31. ;        14         SO          Double-width print on
  32. ;        15         SI          Double-width print off    (Normal)
  33. ;        27,78      ESC N       10 characters per inch    (Normal)
  34. ;        27,69      ESC E       12 characters per inch    Elite
  35. ;        27,81      ESC Q       17 characters per inch    Compressed
  36. ;        27,76,010  ESC L,010   set left margin to 10
  37. ;
  38. ; +   +   +   +   +   +   +   +   +   +   +   +   +   +   +   +   +   +
  39.         ORG     100H
  40.         JMP   START          ;JUMP INTO PROGRAM
  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. ; DATA STRINGS TO CONTROL C-ITOH M-1550 PRINTER
  56. ;
  57. DEFLT:  DB    17,ESC,'N',ESC,'A',ESC,'"',ESC,'L','000',15,0  ;DEF PARAMETERS
  58. TEN:    DB    ESC,'N',0                             ;10 CHARACTERS PER INCH
  59. TWELV:  DB    ESC,'E',0                             ;12 CHARACTERS PER INCH
  60. SVTEEN: DB    ESC,'Q',0                             ;17 CHARACTERS PER INCH
  61. LOFF:   DB    15,0                                  ;NORMAL PRINT
  62. LON:    DB    14,0                                  ;LARGE PRINT
  63. BOFF:   DB    ESC,'"',0                             ;BOLD PRINT OFF
  64. BON:    DB    ESC,'!',0                             ;BOLD PRINT ON
  65. SIX:    DB    ESC,'A',0                             ;6 LINES PER INCH
  66. EIGHT:  DB    ESC,'B',0                             ;8 LINES PER INCH
  67. LMS:    DB    ESC,'L','010',0                       ;SET LEFT MARGIN TO 10
  68. TURNUP: DB    CR,LF,'$'
  69. ;
  70. ; SIGN-ON MESSAGE
  71. ;
  72. SOM:    DB    CR,LF,TAB
  73.         DB    '          C-ITOH Printer Options v1.1 10/30/84'
  74.         DB    CR,LF,LF,TAB
  75.         DB    '          Computer Services of Redding (c)1984'
  76.         DB    CR,LF,LF,TAB
  77.         DB    'Select any combination of letters and type <RETURN> key'
  78.         DB    CR,LF,LF,TAB,TAB,' A = Reset to 10 CPI & 6 LPI'
  79.         DB    CR,LF,TAB,TAB,' B = 10 characters per inch'
  80.         DB    CR,LF,TAB,TAB,' C = 12 characters per inch'
  81.         DB    CR,LF,TAB,TAB,' D = 17 characters per inch'
  82.         DB    CR,LF,TAB,TAB,' E = emphasized print off'
  83.         DB    CR,LF,TAB,TAB,' F = emphasized print on'
  84.         DB    CR,LF,TAB,TAB,' G = normal size print'
  85.         DB    CR,LF,TAB,TAB,' H = large size print'
  86.         DB    CR,LF,TAB,TAB,' I = 6 vertical lines per inch'
  87.         DB    CR,LF,TAB,TAB,' J = 8 vertical lines per inch'
  88.         DB    CR,LF,TAB,TAB,' K = set left margin to 10'
  89.         DB    CR,LF,LF,LF,LF,LF,LF,TAB,'Select: '
  90.         DB    '$'
  91. ;
  92. ;**********************************************************************;
  93. ;                                                                      ;
  94. ;                     PROGRAM STARTS HERE                              ;
  95. ;                                                                      ;
  96. ;**********************************************************************;
  97. ;
  98. START:  POP   H              ;RETURN ADDRESS TO 'CCP'
  99.         SHLD  EXIT1+1        ;STORE
  100.         LXI   SP,STACK       ;SET UP STACK
  101.         LXI   D,SOM          ;SIGNON MESSAGE
  102.         CALL  DSTRNG         ;SHOW ON THE CRT
  103.         LXI   H,DEFLT        ;SET THE PRINTER TO NORMAL CONDITIONS
  104.         JMP   PSTRNG
  105. ;
  106. SELECT: CALL  INPUT          ;GET A CHAR.
  107. ;
  108.         CPI   'A'            ;RESET TO DEFAULT PARAMETERS
  109.         LXI   H,DEFLT
  110.         JZ    PSTRNG
  111.         CPI   'B'
  112.         LXI   H,TEN          ;10 CPI
  113.         JZ    PSTRNG
  114.         CPI   'C'
  115.         LXI   H,TWELV        ;12 CPI
  116.         JZ    PSTRNG
  117.         CPI   'D'
  118.         LXI   H,SVTEEN       ;17 CPI
  119.         JZ    PSTRNG
  120.         CPI   'E'
  121.         LXI   H,BOFF         ;BOLD PRINT OFF
  122.         JZ    PSTRNG
  123.         CPI   'F'
  124.         LXI   H,BON          ;BOLD PRINT ON
  125.         JZ    PSTRNG
  126.         CPI   'G'
  127.         LXI   H,LOFF         ;NORMAL SIZE PRINT
  128.         JZ    PSTRNG
  129.         CPI   'H'
  130.         LXI   H,LON          ;LARGE PRINT ON
  131.         JZ    PSTRNG
  132.         CPI   'I'
  133.         LXI   H,SIX          ;SIX VERTICAL LINES PER INCH
  134.         JZ    PSTRNG
  135.         CPI   'J'
  136.         LXI   H,EIGHT        ;EIGHT VERTICAL LINES PER INCH
  137.         JZ    PSTRNG
  138.         CPI   'K'
  139.         LXI   H,LMS          ;SET LEFT MARGIN TO 10
  140.         JZ    PSTRNG
  141.         JMP   SELECT         ;IF NONE OF THESE, ASK AGAIN
  142. ;======================================================================;
  143. ;                                                                      ;
  144. ;                     ROUTINES START HERE                              ;
  145. ;                                                                      ;
  146. ;======================================================================;
  147. ;
  148. ;
  149. EXIT:   LXI   D,TURNUP       ;TURN UP SOME EXTRA LINES
  150.         CALL  DSTRNG         ;DISPLAY ON THE CRT
  151. ;
  152. EXIT1:  JMP   0              ;FILLED BY 'START' FOR RETURN TO 'CCP'
  153. ;.....
  154. ;
  155. ;
  156. ; GET A KEYBOARD CHARACTER
  157. ;
  158. INPUT:  MVI   C,CONIN        ;KEYBOARD ROUTINE
  159.         CALL  BDOS
  160.         ANI   7FH            ;STRIP AWAY ANY PARITY
  161.         CPI   CTLC           ;CONTROL-C?
  162.         JZ    EXIT           ;IF YES, ALL FINISHED
  163.         CPI   CR             ;CONTROL-M FOR RETURN?
  164.         JZ    EXIT           ;IF YES, ALL FINISHED
  165.         RET
  166. ;
  167. ; DISPLAY A STRING ON THE CRT
  168. ;
  169. DSTRNG: MVI   C,STRING       ;CONSOLE STRING ROUTINE
  170.         JMP   BDOS           ;SEND TO THE CRT
  171. ;
  172. ; PRINT A STRING OF CHARS. ON THE C-ITOH M-1550
  173. ;
  174. PSTRNG: MOV   A,M            ;GET THE CHARACTER IN THE STRING
  175.         ORA   A              ;SEE IF FINISHED YET
  176.         JZ    SELECT         ;GET ANOTHER ANSWER IF FINISHED
  177. ;
  178.         PUSH  H              ;SAVE THE ADDRESS IN THE STRING
  179.         MVI   C,LIST         ;PRINTER ROUTINE
  180.         MOV   E,A            ;PUT THE CHAR. INTO 'E' REG.
  181.         CALL  BDOS           ;SEND TO THE PRINTER
  182.         POP   H              ;BACK TO THE STRING ADDRESS
  183.         INX   H              ;NEXT LOCATION
  184.         JMP   PSTRNG         ;DO THE NEXT ONE
  185. ;
  186. ;       STACK AREA
  187. ;
  188.         DS      20H            ;ALLOW SPACE FOR STACK
  189. ;
  190. STACK   DS      0
  191. ;
  192.         END
  193. 
  194.     Ç