home *** CD-ROM | disk | FTP | other *** search
/ 8bitfiles.net/archives / archives.tar / archives / genie-commodore-file-library / C128CPM / GRC128.ZIP / BIGWINI.SRC < prev    next >
Encoding:
Text File  |  1991-06-15  |  14.5 KB  |  466 lines

  1.  
  2.     type
  3.          tsrec = record
  4.            xs:integer;
  5.            ys: integer;
  6.            xe:integer;
  7.            ye:integer;
  8.            car:array[1..8] of char;
  9.            linv:byte;
  10.            lover:byte
  11.          end;
  12.  
  13.  
  14.          nstr=record
  15.            xw:integer;
  16.            yw:integer;
  17.            xq:integer;
  18.            yq:integer;
  19.            wt:integer;
  20.            sinv:byte;
  21.            sover:byte
  22.           end;
  23.  
  24.          feld=array [1..4096] of byte;
  25.  
  26.          ttextrec = record
  27.             inv:integer;
  28.             offs:integer;
  29.             zeile:integer;
  30.             spalte:integer;
  31.             addr:integer
  32.           end;
  33.  
  34.         xrec = record
  35.            kx:integer;
  36.            ky:integer
  37.         end;
  38.  
  39.         xyz = array [1..8] of char;
  40.  
  41. var  ndd:nstr;
  42.      speicher:feld;
  43.      lrec:xrec;
  44.      textrec:ttextrec;
  45.      s,e:integer;
  46.      srec,erec:tsrec;
  47.      x,y:integer;
  48.      mytext:string [11];
  49.      ch:char;
  50.      dummy : integer;
  51.  
  52. external function @bdos(func:integer;parm:word):integer;
  53.  
  54. procedure GrFOn;
  55.    begin
  56.    dummy:= @bdos(153, wrd(0))
  57.    end;
  58.  
  59. procedure GrSOn;
  60.    begin
  61.    dummy:= @bdos(154, wrd(0))
  62.    end;
  63.  
  64. procedure GrFOff;
  65.    begin
  66.    dummy:= @bdos(155, wrd(0))
  67.    end;
  68.  
  69.  
  70. procedure SetPix(xp,yp:integer);
  71.    begin
  72.    lrec.kx:=xp;lrec.ky:=yp;
  73.    dummy:= @bdos(156, wrd(addr(lrec)))
  74.    end;
  75.  
  76. procedure EraPix (xp,yp:integer);
  77.     begin
  78.     lrec.kx:=xp;lrec.ky:=yp;
  79.     dummy:= @bdos(157, wrd(addr(lrec)))
  80.     end;
  81.  
  82.  
  83. procedure ClrGr;
  84.     begin
  85.     dummy:= @bdos(158, wrd(0))
  86.     end;
  87.  
  88. procedure SaveWi(x1,y1,x2,y2:integer);
  89.     begin
  90.     ndd.xw:=x1;
  91.     ndd.yw:=y1;
  92.     ndd.xq:=x2;
  93.     ndd.yq:=y2;
  94.     ndd.wt:=addr(speicher);
  95.     dummy:= @bdos(159, wrd(addr(ndd)))
  96.     end;
  97.  
  98.  
  99. procedure LoadWi(x1,y1,x2,y2:integer;inv:byte;over:byte);
  100.     begin
  101.     ndd.xw:=x1;
  102.     ndd.yw:=y1;
  103.     ndd.xq:=x2;
  104.     ndd.yq:=y2;
  105.     ndd.wt:=addr(speicher);
  106.     ndd.sinv:=inv;
  107.     ndd.sover:=over;
  108.     dummy:= @bdos(160, wrd(addr(ndd)))
  109.     end;
  110.  
  111. procedure SaveFW (x1,y1,x2,y2:integer;xk:xyz);
  112.     begin
  113.     srec.xs:=x1;
  114.     srec.ys:=y1;
  115.     srec.xe:=x2;
  116.     srec.ye:=y2;
  117.     srec.car[1]:=xk[1];srec.car[2]:=xk[2];
  118.     srec.car[3]:=xk[3];srec.car[4]:=xk[4];
  119.     srec.car[5]:=xk[5];srec.car[6]:=xk[6];
  120.     srec.car[7]:=xk[7];srec.car[8]:=xk[8];
  121.     dummy:= @bdos(161, wrd(addr(srec)))
  122.     end;
  123.  
  124. procedure LoadFW (x1,y1,x2,y2:integer;xk:xyz;inv:byte;over:byte);
  125.     begin
  126.     srec.xs:=x1;
  127.     srec.ys:=y1;
  128.     srec.xe:=x2;
  129.     srec.ye:=y2;
  130.     srec.car[1]:=xk[1];srec.car[2]:=xk[2];
  131.     srec.car[3]:=xk[3];srec.car[4]:=xk[4];
  132.     srec.car[5]:=xk[5];srec.car[6]:=xk[6];
  133.     srec.car[7]:=xk[7];srec.car[8]:=xk[8];
  134.     srec.linv:=inv;srec.lover:=over;
  135.     dummy:= @bdos(162, wrd(addr(srec)))
  136.     end;
  137.  
  138. procedure GFtext (i,o,z,s,a :integer);
  139.     begin
  140.     textrec.inv:=i;
  141.     textrec.offs:=o;
  142.     textrec.spalte:=s;
  143.     textrec.zeile:=z;
  144.     textrec.addr:=a;
  145.     dummy:= @bdos(163, wrd(addr(textrec)))
  146.    end;
  147.  
  148. procedure scrdump (i:integer);
  149.    begin
  150.    dummy:= @bdos(164, wrd(i))
  151.    end;
  152.  
  153. procedure SaveBX (x1,y1,x2,y2:integer;xk:xyz);
  154.     var filename:xyz;
  155.         xdiff,ydiff,xanz,yanz,zaehler:integer;
  156.         xstart,ystart,zhl1,zhl2,start:integer;
  157.         wert:byte;
  158.         xeven,yeven:integer;
  159.  
  160.               begin (* beide zu gross *)
  161.               filename:=xk;
  162.               xdiff:=x2-x1;
  163.               ydiff:=y2-y1;
  164.               xanz:=xdiff div 96;
  165.               yanz:=ydiff div 50;
  166.               xeven:=xdiff div 96;
  167.               yeven:=ydiff div 50;
  168.               ystart:=y1;
  169.               for zhl2:= 1 to yanz do
  170.                   begin
  171.                   xstart:=x1;
  172.                   for zhl1:= 1 to xanz do
  173.                       begin
  174.                       SaveFW(xstart,ystart,xstart+96,ystart+50,filename);
  175.                       xstart:=xstart+96;
  176.                       wert:=ord(filename[8])-ord('0');
  177.                       if wert <> 9 then
  178.                          begin
  179.                          wert:=wert+1;
  180.                          filename[8]:=chr(ord('0')+wert)
  181.                          end
  182.                       else
  183.                          begin
  184.                          filename[8]:='0';
  185.                          wert:=ord(filename[7])-ord('0');
  186.                          wert:=wert+1;
  187.                          filename[7]:=chr(ord('0')+wert)
  188.                          end;
  189.  
  190.                       if ((zhl1 = xanz) and (xeven <> 0)) then
  191.                           begin
  192.                           SaveFW(xstart,ystart,xstart+xeven,ystart,filename);
  193.                           wert:=ord(filename[8])-ord('0');
  194.                           if wert <> 9 then
  195.                             begin
  196.                             wert:=wert+1;
  197.                             filename[8]:=chr(ord('0')+wert)
  198.                             end
  199.                           else
  200.                             begin
  201.                             filename[8]:='0';
  202.                             wert:=ord(filename[7])-ord('0');
  203.                             wert:=wert+1;
  204.                             filename[7]:=chr(ord('0')+wert)
  205.                             end
  206.                           end
  207.                       end;
  208.                   ystart:=ystart+50
  209.                   end;
  210.               if (yeven <> 0) then
  211.                    begin
  212.                    xanz:=xdiff div 96;
  213.                    xeven:=xdiff mod 96;
  214.                    start:=x1;
  215.                    for zaehler:=1 to xanz do
  216.                        begin
  217.                        SaveFW(start,ystart,start+96,ystart+yeven,filename);
  218.                        start:=start+96;
  219.                        wert:=ord(filename[8])-ord('0');    (* klklk *)
  220.                       if wert <> 9 then
  221.                          begin
  222.                          wert:=wert+1;
  223.                          filename[8]:=chr(ord('0')+wert)
  224.                          end
  225.                       else
  226.                          begin
  227.                          filename[8]:='0';
  228.                          wert:=ord(filename[7])-ord('0');
  229.                          wert:=wert+1;
  230.                          filename[7]:=chr(ord('0')+wert)
  231.                          end;
  232.                      if (zaehler=xanz) and (xeven <> 0) then
  233.                      SaveFW(start,ystart,start+xeven,ystart+yeven,filename)
  234.                  end
  235.               end
  236.             end;
  237.  
  238. procedure SaveBW (x1,y1,x2,y2:integer;xk:xyz);
  239.     var filename:xyz;
  240.         xdiff,ydiff,xanz,yanz,zaehler:integer;
  241.         xstart,ystart,zhl1,zhl2,start:integer;
  242.         wert:byte;
  243.         xeven,yeven:integer;
  244.     begin
  245.     filename:=xk;
  246.     filename[7]:='0';filename[8]:='0';
  247.     xdiff:=x2-x1;
  248.     ydiff:=y2-y1;
  249.     if ((xdiff<=96) and (ydiff<=50)) then
  250.        SaveFW(x1,y1,x2,y2,filename)
  251.     else
  252.        if ((xdiff>96) and (ydiff<=50)) then
  253.           begin
  254.           xanz:=xdiff div 96;
  255.           xeven:=xdiff mod 96;
  256.           start:=x1;
  257.           for zaehler:=1 to xanz do
  258.               begin
  259.               SaveFW(start,y1,start+96,y2,filename);
  260.               start:=start+96;
  261.               wert:=ord(filename[8])-ord('0');    (* klklk *)
  262.               if wert <> 9 then
  263.                  begin
  264.                  wert:=wert+1;
  265.                  filename[8]:=chr(ord('0')+wert)
  266.                  end
  267.               else
  268.                  begin
  269.                  filename[8]:='0';
  270.                  wert:=ord(filename[7])-ord('0');
  271.                  wert:=wert+1;
  272.                  filename[7]:=chr(ord('0')+wert)
  273.                  end;
  274.                  if (zaehler=xanz) and (xeven <> 0) then
  275.                      SaveFW(start,y1,start+xeven,y2,filename)
  276.               end
  277.           end
  278.  
  279.        else
  280.           if ((xdiff<=96) and (ydiff > 50)) then
  281.               begin
  282.               yanz:=ydiff div 50;
  283.               yeven:=ydiff mod 50;
  284.               start:=y1;
  285.               for zaehler:=1 to yanz do
  286.                   begin
  287.                   SaveFW(x1,start,x2,start+50,filename);
  288.                   start:=start+50;
  289.                   wert:=ord(filename[8])-ord('0');
  290.                   if wert <> 9 then
  291.                      begin
  292.                      wert:=wert+1;
  293.                      filename[8]:=chr(ord('0')+wert)
  294.                      end
  295.                   else
  296.                      begin
  297.                      filename[8]:='0';
  298.                      wert:=ord(filename[7])-ord('0');
  299.                      wert:=wert+1;
  300.                      filename[7]:=chr(ord('0')+wert)
  301.                      end;
  302.                   if ((zaehler = yanz) and (yeven <> 0)) then
  303.                       SaveFW(x1,start,x2,start+yeven,filename);
  304.                   end
  305.               end
  306.            else
  307.                SaveBX(x1,y1,x2,y2,filename);
  308.           end;
  309.  
  310. procedure LoadBX (x1,y1,x2,y2:integer;xk:xyz;inv:byte;over:byte);
  311.     var filename:xyz;
  312.         xdiff,ydiff,xanz,yanz,zaehler:integer;
  313.         xstart,ystart,zhl1,zhl2,start:integer;
  314.         wert:byte;
  315.         xeven,yeven:integer;
  316.  
  317.               begin (* beide zu gross *)
  318.               filename:=xk;
  319.               xdiff:=x2-x1;
  320.               ydiff:=y2-y1;
  321.               xanz:=xdiff div 96;
  322.               yanz:=ydiff div 50;
  323.               xeven:=xdiff mod 96;
  324.               yeven:=xdiff mod 50;
  325.               ystart:=y1;
  326.               for zhl2:= 1 to yanz do
  327.                   begin
  328.                   xstart:=x1;
  329.                   for zhl1:= 1 to xanz do
  330.                       begin
  331.                       LoadFW(xstart,ystart,xstart+96,ystart+50,filename,inv,over);
  332.                       xstart:=xstart+96;
  333.                       wert:=ord(filename[8])-ord('0');
  334.                       if wert <> 9 then
  335.                          begin
  336.                          wert:=wert+1;
  337.                          filename[8]:=chr(ord('0')+wert)
  338.                          end
  339.                       else
  340.                          begin
  341.                          filename[8]:='0';
  342.                          wert:=ord(filename[7])-ord('0');
  343.                          wert:=wert+1;
  344.                          filename[7]:=chr(ord('0')+wert)
  345.                          end;
  346.  
  347.                       if ((zhl1 = xanz) and (xeven <> 0)) then
  348.                          begin
  349.                          LoadFW(xstart,ystart,xstart+xeven,ystart+50,filename,inv,over);
  350.                          wert:=ord(filename[8])-ord('0');
  351.                          if wert <> 9 then
  352.                             begin
  353.                             wert:=wert+1;
  354.                             filename[8]:=chr(ord('0')+wert)
  355.                             end
  356.                           else
  357.                             begin
  358.                             filename[8]:='0';
  359.                             wert:=ord(filename[7])-ord('0');
  360.                             wert:=wert+1;
  361.                             filename[7]:=chr(ord('0')+wert)
  362.                             end
  363.                          end
  364.                       end;
  365.                   ystart:=ystart+50
  366.                   end;
  367.               if (yeven <> 0) then
  368.                    begin
  369.                    xanz:=xdiff div 96;
  370.                    xeven:=xdiff mod 96;
  371.                    start:=x1;
  372.                    for zaehler:=1 to xanz do
  373.                        begin
  374.                        LoadFW(start,ystart,start+96,ystart+yeven,filename,inv,over);
  375.                        start:=start+96;
  376.                        wert:=ord(filename[8])-ord('0');    (* klklk *)
  377.                       if wert <> 9 then
  378.                          begin
  379.                          wert:=wert+1;
  380.                          filename[8]:=chr(ord('0')+wert)
  381.                          end
  382.                       else
  383.                          begin
  384.                          filename[8]:='0';
  385.                          wert:=ord(filename[7])-ord('0');
  386.                          wert:=wert+1;
  387.                          filename[7]:=chr(ord('0')+wert)
  388.                          end;
  389.                      if (zaehler=xanz) and (xeven <> 0) then
  390.                      LoadFW(start,ystart,start+xeven,ystart+yeven,filename,inv,over)
  391.                      end
  392.                   end
  393.                end;
  394.  
  395.  
  396. procedure LoadBW (x1,y1,x2,y2:integer;xk:xyz;inv:byte;over:byte);
  397.     var filename:xyz;
  398.         xdiff,ydiff,xanz,yanz,zaehler:integer;
  399.         xstart,ystart,zhl1,zhl2,start:integer;
  400.         wert:byte;
  401.         xeven,yeven:integer;
  402.  
  403.     begin
  404.     filename:=xk;
  405.     filename[7]:='0';filename[8]:='0';
  406.     xdiff:=x2-x1;
  407.     ydiff:=y2-y1;
  408.     if ((xdiff<=96) and (ydiff<=50)) then
  409.        LoadFW(x1,y1,x2,y2,filename,inv,over)
  410.     else
  411.        if ((xdiff>96) and (ydiff<=50)) then
  412.           begin
  413.           xanz:=xdiff div 96;
  414.           xeven:=xdiff mod 96;
  415.           start:=x1;
  416.           for zaehler:=1 to xanz do
  417.               begin
  418.               LoadFW(start,y1,start+96,y2,filename,inv,over);
  419.               start:=start+96;
  420.               wert:=ord(filename[8])-ord('0');    (* klklk *)
  421.               if wert <> 9 then
  422.                  begin
  423.                  wert:=wert+1;
  424.                  filename[8]:=chr(ord('0')+wert)
  425.                  end
  426.               else
  427.                  begin
  428.                  filename[8]:='0';
  429.                  wert:=ord(filename[7])-ord('0');
  430.                  wert:=wert+1;
  431.                  filename[7]:=chr(ord('0')+wert)
  432.                  end;
  433.               if ((zaehler = xanz) and (xeven <> 0)) then
  434.                  LoadFW(start,y1,start+xeven,y2,filename,inv,over)
  435.               end
  436.           end
  437.        else
  438.           if ((xdiff<=96) and (ydiff > 50)) then
  439.               begin
  440.               yanz:=ydiff div 50;
  441.               start:=y1;
  442.               for zaehler:=1 to yanz do
  443.                   begin
  444.                   LoadFW(x1,start,x2,start+50,filename,inv,over);
  445.                   start:=start+50;
  446.                   wert:=ord(filename[8])-ord('0');
  447.                   if wert <> 9 then
  448.                      begin
  449.                      wert:=wert+1;
  450.                      filename[8]:=chr(ord('0')+wert)
  451.                      end
  452.                   else
  453.                      begin
  454.                      filename[8]:='0';
  455.                      wert:=ord(filename[7])-ord('0');
  456.                      wert:=wert+1;
  457.                      filename[7]:=chr(ord('0')+wert)
  458.                      end;
  459.                   if ((zaehler = yanz) and (yeven <> 0)) then
  460.                      LoadFW(x1,start,x2,start+yeven,filename,inv,over)
  461.                   end
  462.               end
  463.           else
  464.                LoadBX(x1,y1,x2,y2,filename,inv,over)
  465.            end;
  466.