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 / PRNTRASM.TXT < prev    next >
Text File  |  2000-06-30  |  5KB  |  165 lines

  1. PRINTER CONTROL PROGRAM
  2. by D. Kingery, PUGSKUG, August 1987
  3.  
  4. (You modify and assemble this printer control program)
  5.  
  6. This article is a sort of takeoff on the articles Stan Gee did
  7. for a while on simple programs (see December 1983 through May
  8. 1984 issues).  For those of you who may be interested in
  9. assembler code, the following program is very versatile. Its
  10. purpose is control of printer functions, and I'll give some
  11. variations.
  12.  
  13. This article only touches the surface; if you're interested in
  14. more information, I suggest "SOUL OF CP/M" by Waite and Lafore or
  15. "CP/M REVEALED" by Dennon.  In any event, it would help to read
  16. Stan Gee's articles in prior issues (December 1983 through May
  17. 1984).
  18.  
  19. By the way, I wrote this article a long time ago and never
  20. printed it.  I hope everything works OK.  If there's any
  21. interest, it would be easy to put together a menu-driven, menu-
  22. bypassable program that you could install for your own printer.
  23.  
  24. Using your favorite word processor (in the nondocument mode if
  25. it's Wordstar), type the following program into a file called
  26. "PRO17.ASM":
  27.  
  28. PRO17 has been written to change the font on a ProWriter printer
  29. to 12-pitch.
  30.      ;
  31. org  100h
  32.      ;
  33.  
  34. This part changes the printer pitch.
  35.  
  36.  
  37.               ;
  38.         lxi   h,msg1           ;load msg1 address
  39. loop1:  mov   e,m      ;put character in 'e'
  40.         push  h        ;save address
  41.         mvi   c,05h    ;signal 'LIST OUTPUT'
  42.         call  05h      ;call BDOS to send the
  43.                        ;character to the printer
  44.         pop   h        ;retrieve address
  45.         inx   h        ;get ready for the next
  46.                        ; character
  47.         cmp   m        ;BUT, look at it first 
  48.         jnz   loop1      ;if it's not zero, go 
  49.                        ;back and process it
  50.               ; 
  51.  
  52. This part prints a message to the screen.
  53.  
  54.               ;
  55.         lxi   h,msg2           ;load msg2 address
  56. loop2:  mov   e,m       ;put character in 'e'
  57.         push  h         ;save address
  58.         mvi   c,02h     ;signal 'LIST OUTPUT'
  59.         call  05h       ;call BDOS to put the 
  60.                         ; character on the screen
  61.         pop   h         ;retrieve address
  62.         inx   h         ;get ready for the next 
  63.                         ;       character
  64.         cmp   m         ;BUT, look at it first
  65.         jnz   loop2       ;if it's not zero, go 
  66.                         ;  back and put it on the
  67.                         ;          screen       
  68.         jp    00h       ;otherwise, warm boot
  69.               ;
  70.               ;
  71. msg1:   db    1bh,45h
  72.         db    0dh,0ah,00h
  73.               ;
  74.               ;
  75. msg2:   db   1ah,0dh,0ah,0ah,0ah,0ah,'The ProWriter '
  76.         db   'has just been switched to 12-pitch (if'
  77.         db   ' it was hooked up).  Have a good day!'
  78.         db   0dh,0ah,0ah
  79.         db   00h
  80. end
  81.  
  82. You can type this verbatim without understanding any of it, if
  83. you like, but your CP/M handbook (the one that came with your
  84. machine) will explain anything you want to know about 8080
  85. assembler language.  One thing you may have figured out for
  86. yourself:  anything preceded by a semicolon is a comment.
  87.  
  88. After you get it typed in and saved to the disk, you can assemble
  89. the program.  For this, you need ASM.COM and LOAD.COM, both of
  90. which should be on the systems utilities disk that came with your
  91. KayPro.  Load that disk and log on to it.  Now, type:
  92.  
  93. asm x:pro12<cr>
  94.  
  95. where x is the drive that pro12.asm is on if it's not on the
  96. default drive.  You should get a screen printout like this:
  97.  
  98. CP/M ASSEMBLER - VER 2.0
  99. 018B
  100. 000H USE FACTOR
  101. END OF ASSEMBLY
  102.  
  103. Warm Boot
  104.  
  105. Now, show the directory of the disk that pro12 is on.  You'll see
  106. the following new entries for files generated by asm.com:
  107.  
  108. PRO12.PRN
  109. PRO12.HEX
  110.  
  111. If you've made some typing errors, the ASM program will show them
  112. on the screen, and you can go back and correct them.  If there
  113. are no errors shown, type:
  114.  
  115. load pro12<cr>
  116.  
  117. And you'll get a screen printout like this:
  118.  
  119. FIRST ADDRESS 0100
  120. LAST ADDRESS  018A
  121. BYTES READ    008B
  122. RECORDS WRITTEN 02
  123.  
  124. When you check the disk directory, you'll find another new file
  125. called PRO12.COM, and if you type:
  126.  
  127. pro.12<cr>
  128.  
  129. AND your printer is a ProWriter AND it's plugged in AND turned
  130. on, etc., etc., your new program will set your printer to 12-
  131. pitch.
  132.  
  133. If your printer ISN'T a ProWriter, simply change the line
  134. beginning "msg1" so that it speaks to your printer with
  135. directions that your printer understands.  For the Epson FX-
  136. series printers, enter the "msg1:" line as follows:
  137.  
  138. msg1:  db 1bh,4dh
  139.  
  140. or, if you wish:
  141.  
  142. msg1:  db 1bh,'M'
  143.  
  144. (omitting the original msg1 line, of course), or for printers
  145. recognizing Diablo protocol, enter the following:
  146.  
  147. msg1:  db 1bh,1fh,0bh
  148.  
  149. I know the PRO17program works; I tested it on my ProWriter.  I
  150. have  not tested it on the other two printer types.  If it
  151. doesn't work for you on one of the last two, double-check the
  152. codes against your printer manual.
  153.  
  154. One last variation; a msg1: command that puts the ProWriter into
  155. expanded condensed mode:
  156.  
  157. msg1:  db 1bh,45h,0eh
  158.  
  159. The Epson equivalent is:
  160.  
  161. msg1:  db 0fh,0eh
  162.  
  163. You should invent suitable titles for programs like this, of
  164. course.  And that's it for this time folks.
  165.