home *** CD-ROM | disk | FTP | other *** search
/ 8bitfiles.net/archives / archives.tar / archives / genie-commodore-file-library / C128CPM / GRC128.ZIP / BIGINI.PAS next >
Encoding:
Pascal/Delphi Source File  |  1991-06-15  |  14.3 KB  |  463 lines

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