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 >
Wrap
Text File
|
2000-06-30
|
5KB
|
165 lines
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<cr>
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<cr>
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<cr>
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.