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

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