Как вывести изображение на Printer?

Пример вывода изображения в режиме 640x480 на матричный принтер:

{Из книжки Вальвачева пpо гpафикy с пpимеpами на Паскале.}
{Для контpоля: на Епсонах (LX-100, LQ-100) pаботает ;) }
uses crt,printer,graph;
const
  horisontal=0;
  vertical=1;
  esc=#$1b;
var
  d,m:integer;
 
procedure Printing(turn:integer);
var
  n1,n2,i,k,m,j:integer;
begin
  sound(1000); delay(100);
  sound(500); delay(100); nosound;
  setviewport(0,0,639,479,false);
  write(lst,esc,'A',#$07);
  IF turn=horisontal THEN
   begin
     n1:=639 and $00FF;
     n2:=639 shr 8;
     for j:=0 to 479 div 8 do
      begin
        write(lst,esc,'*',char(1),char(n1),char(n2));
        for i:=0 to 639 do
         begin
           m:=0;
           for k:=0 to 7 do
            begin
              m:=m shl 1;
              if getpixel(i,j*8+k)<>0 then inc(m)
            end;
           write(lst,char(m))
         end;
        write(lst,#$0d,#$0a)
      end
   end
  ELSE
   begin
     n1:=479 and $00FF;
     n2:=479 shr 8;
     j:=0;
     repeat
       write(lst,esc,'*',char(1),char(n1),char(n2));
       for i:=479 downto 0 do
        begin
          m:=0;
          for k:=0 to 7 do
           begin
             m:=m shl 1;
             if getpixel(j+k,i)<>0 then inc(m)
           end;
          write(lst,char(m))
        end;
       write(lst,#$0d,#$0a);
       inc(j,8)
     until j>= 638
   end;
  write(lst,#$0c);
  sound(500); delay(100);
  sound(1000); delay(100);
  nosound
end;
 
 
begin
  d:=detect;
  initgraph(d,m,'');
  circle(639 div 2, 479 div 2,50);
  line(200,200,250,270);
  outtextxy(260,120,'Printing form the TURBO PASCAL');
  printing(horisontal);
  repeat until keypressed;
  closegraph
end.