PRINTER CONTROL PROGRAM by D. Kingery, PUGSKUG, August 1987 (You modify and assemble this printer control program) This article is a sort of takeoff on the articles Stan Gee did for a while on simple programs (see December 1983 through May 1984 issues). For those of you who may be interested in assembler code, the following program is very versatile. Its purpose is control of printer functions, and I'll give some variations. This article only touches the surface; if you're interested in more information, I suggest "SOUL OF CP/M" by Waite and Lafore or "CP/M REVEALED" by Dennon. In any event, it would help to read Stan Gee's articles in prior issues (December 1983 through May 1984). By the way, I wrote this article a long time ago and never printed it. I hope everything works OK. If there's any interest, it would be easy to put together a menu-driven, menu- bypassable program that you could install for your own printer. Using your favorite word processor (in the nondocument mode if it's Wordstar), type the following program into a file called "PRO17.ASM": PRO17 has been written to change the font on a ProWriter printer to 12-pitch. ; org 100h ; This part changes the printer pitch. ; lxi h,msg1 ;load msg1 address loop1: mov e,m ;put character in 'e' push h ;save address mvi c,05h ;signal 'LIST OUTPUT' call 05h ;call BDOS to send the ;character to the printer pop h ;retrieve address inx h ;get ready for the next ; character cmp m ;BUT, look at it first jnz loop1 ;if it's not zero, go ;back and process it ; This part prints a message to the screen. ; lxi h,msg2 ;load msg2 address loop2: mov e,m ;put character in 'e' push h ;save address mvi c,02h ;signal 'LIST OUTPUT' call 05h ;call BDOS to put the ; character on the screen pop h ;retrieve address inx h ;get ready for the next ; character cmp m ;BUT, look at it first jnz loop2 ;if it's not zero, go ; back and put it on the ; screen jp 00h ;otherwise, warm boot ; ; msg1: db 1bh,45h db 0dh,0ah,00h ; ; msg2: db 1ah,0dh,0ah,0ah,0ah,0ah,'The ProWriter ' db 'has just been switched to 12-pitch (if' db ' it was hooked up). Have a good day!' db 0dh,0ah,0ah db 00h end You can type this verbatim without understanding any of it, if you like, but your CP/M handbook (the one that came with your machine) will explain anything you want to know about 8080 assembler language. One thing you may have figured out for yourself: anything preceded by a semicolon is a comment. After you get it typed in and saved to the disk, you can assemble the program. For this, you need ASM.COM and LOAD.COM, both of which should be on the systems utilities disk that came with your KayPro. Load that disk and log on to it. Now, type: asm x:pro12 where x is the drive that pro12.asm is on if it's not on the default drive. You should get a screen printout like this: CP/M ASSEMBLER - VER 2.0 018B 000H USE FACTOR END OF ASSEMBLY Warm Boot Now, show the directory of the disk that pro12 is on. You'll see the following new entries for files generated by asm.com: PRO12.PRN PRO12.HEX If you've made some typing errors, the ASM program will show them on the screen, and you can go back and correct them. If there are no errors shown, type: load pro12 And you'll get a screen printout like this: FIRST ADDRESS 0100 LAST ADDRESS 018A BYTES READ 008B RECORDS WRITTEN 02 When you check the disk directory, you'll find another new file called PRO12.COM, and if you type: pro.12 AND your printer is a ProWriter AND it's plugged in AND turned on, etc., etc., your new program will set your printer to 12- pitch. If your printer ISN'T a ProWriter, simply change the line beginning "msg1" so that it speaks to your printer with directions that your printer understands. For the Epson FX- series printers, enter the "msg1:" line as follows: msg1: db 1bh,4dh or, if you wish: msg1: db 1bh,'M' (omitting the original msg1 line, of course), or for printers recognizing Diablo protocol, enter the following: msg1: db 1bh,1fh,0bh I know the PRO17program works; I tested it on my ProWriter. I have not tested it on the other two printer types. If it doesn't work for you on one of the last two, double-check the codes against your printer manual. One last variation; a msg1: command that puts the ProWriter into expanded condensed mode: msg1: db 1bh,45h,0eh The Epson equivalent is: msg1: db 0fh,0eh You should invent suitable titles for programs like this, of course. And that's it for this time folks.