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