home *** CD-ROM | disk | FTP | other *** search
/ Computer Club Elmshorn Atari PD / CCE_PD.iso / mac / 0300 / CCE_0385.ZIP / CCE_0385.PD / PLOTTER / PASCAL.PAS < prev    next >
Pascal/Delphi Source File  |  1991-06-29  |  1KB  |  57 lines

  1. program plot;
  2.  
  3.  (* algorithmus für plotter *)
  4.  
  5.  var adr          : long_integer;
  6.      str          : string;
  7.      i,n          : integer;
  8.      MaxX, MaxY,
  9.      LastWord,
  10.      WordsProZeile: long_integer;
  11.   
  12.  
  13.  function wpeek(adr:long_integer):integer;            (* aus Pastrix *)
  14.   external;
  15.   
  16.  procedure wpoke(adr: long_integer;wert:integer);     (* aus Pastrix *)
  17.   external;
  18.  
  19.  procedure setbit(var a: integer; bit: integer);   (* setzt bit in a  *)
  20.   var n: integer;
  21.   
  22.   begin
  23.    n:=shl(1,bit);
  24.    a:=a | n;
  25.   end;
  26.  
  27.  procedure punkt(x,y: integer);
  28.   var wordpos   : long_integer;
  29.       xneu,wert : integer;
  30.       
  31.   begin
  32.    wordpos:=y * WordsProZeile * 2 + (x div 16) * 2;  
  33.    if wordpos<=LastWord * 2 then
  34.     begin
  35.      xneu:=15-(x mod 16);
  36.      wert:=wpeek(adr+wordpos);  
  37.      setbit(wert,xneu);
  38.      wpoke(adr+wordpos,wert);
  39.     end;
  40.   end;
  41.     
  42.  begin
  43.   Cmd_GetArg(1,str);
  44.   readv(str,adr);
  45.   Cmd_GetArg(2,str);
  46.   readv(str,MaxX);
  47.   Cmd_GetArg(3,str);
  48.   readv(str,MaxY);
  49.   WordsProZeile:=(MaxX+1) DIV 16;
  50.   LastWord     :=((MaxX+1) * (MaxY+1) DIV 16)-1;
  51.   
  52.   for i:=0 to MaxX do
  53.    punkt(i,Maxy div 2);   
  54.    
  55.   for i:=0 to maxy do
  56.    punkt(maxx div 2,i);  
  57.  end.