jcw@cvl.UUCP (06/25/84)
Here is an assembly language routine for changing the standard
printer device, i.e. the printer written to through using system
call 5. I wrote it for use with the old version of Computer Innovations'
C compiler, which only supports one printer device, "prn:", which
normally sends to "lpt1:". The asm function below can change this
to any other device, even a file, by saying something like
"newprn("lpt3:")". I also have a modified routine, newaux, by just
changing the output mode from 1 to 2 and the device handle from 4
to 3.
Note that this routine was written for CI-C86 calling conventions.
;
; Newprn: change standard printer device, by jay@rochester
;
; newprn(devname)
; char *devname;
;
code segment byte public
assume cs:code
public newprn
newprn:
push bp
mov bp,sp
push dx
mov dx,4[bp]
mov al,1 ; printer is only for output
mov ah,3dh
int 21h ; open named device
push cx
push bx
push ax
mov bx,ax
mov cx,4 ; handle of standard printer
mov ah,46h
int 21h ; force a dup of that handle on stdprn
mov ah,3eh
int 21h ; close first device handle
pop ax
pop bx
pop cx
pop dx
pop bp
ret
code ends
end
----------
Jay Weber
..!seismo!rlgvax!cvl!jcw
..!seismo!rochester!jay
jay@rochester.arpa