home *** CD-ROM | disk | FTP | other *** search
/ Programmer 7500 / MAX_PROGRAMMERS.iso / PROGRAMS / UTILS / EGA_VGA / FIREWKS1.ZIP / GPALL.P < prev    next >
Encoding:
Text File  |  1986-11-21  |  16.9 KB  |  500 lines

  1. var
  2.   GDTYPE:    Integer;
  3.   GDOTHER:   Integer;
  4.   GDMEMORY:  Integer;
  5.   GDMAXCOL:  Integer;
  6.   GDMAXROW:  Integer;
  7.   GDMAXPAL:  Integer;
  8.   GDMAXCLR:  Integer;
  9.  
  10.   GDCOLOR:    Integer;
  11.   GDMERGE:    Integer;
  12.   GDSTYLE:   ^Byte;
  13.   GDSHADE:   ^Byte;
  14.   GDSHADE1:   array [0..65] of byte;
  15.   GDASPC1:    Integer;
  16.   GDASPC2:    Integer;
  17.   GDCUR_X:    Integer;
  18.   GDCUR_Y:    Integer;
  19.  
  20.   GDGSEG:     Integer;
  21.   GDGSADR:    Integer;
  22.  
  23.   GDWD_X1:    Integer;
  24.   GDWD_X2:    Integer;
  25.   GDWD_X3:    Integer;
  26.   GDWD_Y1:    Integer;
  27.   GDWD_Y2:    Integer;
  28.   GDWD_Y3:    Integer;
  29.   GDVW_X1:    Integer;
  30.   GDVW_X2:    Integer;
  31.   GDVW_X3:    Integer;
  32.   GDVW_Y1:    Integer;
  33.   GDVW_Y2:    Integer;
  34.   GDVW_Y3:    Integer;
  35.  
  36.   GDC_FLG:    Integer;
  37.   GDS_FLG:    Integer;
  38.   GDW_FLG:    Boolean;
  39.  
  40.   GDCURX1:    Integer;
  41.   GDCURY1:    Integer;
  42.  
  43. procedure GPPARMS;
  44. begin
  45.   inline
  46.     ($B4/$12/$B3/$10/$B9/$FFFF/$CD/$10/$83/$F9/$FF/$74/$40/$8A/$C7/$25/>$0001/
  47.      $34/$01/$04/$04/$A3/>GDTYPE/$89/$0E/>GDOTHER/$8A/$C3/$25/>$0003/$40/$B1/
  48.      $06/$D3/$E0/$A3/>GDMEMORY/$BB/>$0004/$3D/>$0040/$74/$03/$BB/>$0010/$89/
  49.      $1E/>GDMAXCLR/$B8/>$0010/$A3/>GDMAXPAL/$B8/$027F/$A3/>GDMAXCOL/$B8/
  50.      $015D/$A3/>GDMAXROW/$EB/$05/$33/$C0/$A3/>GDTYPE);
  51.  
  52.   GDGSEG  := $A000;
  53.   GDGSADR := $7FF8;
  54.  
  55. end;
  56.  
  57. procedure GPINIT;
  58. begin
  59.   inline
  60.     ($B4/$12/$B3/$10/$B9/$FFFF/$CD/$10/$83/$F9/$FF/$74/$0D/$B8/>$0010/$F6/$C7/
  61.      $01/$74/$03/$B8/>$000F/$CD/$10);
  62.  
  63.   GDCOLOR := LightGray;
  64.   GDMERGE := 0;
  65.   GDASPC1 := 3;
  66.   GDASPC2 := 4;
  67.   GDCUR_X := 0;
  68.   GDCUR_Y := 0;
  69.  
  70.   GDWD_X1 := 0;
  71.   GDWD_X2 := GDMAXCOL;
  72.   GDWD_X3 := GDMAXCOL + 1;
  73.   GDWD_Y1 := 0;
  74.   GDWD_Y2 := GDMAXROW;
  75.   GDWD_Y3 := GDMAXROW + 1;
  76.  
  77.   GDVW_X1 := 0;
  78.   GDVW_X2 := GDMAXCOL;
  79.   GDVW_X3 := GDMAXCOL + 1;
  80.   GDVW_Y1 := 0;
  81.   GDVW_Y2 := GDMAXROW;
  82.   GDVW_Y3 := GDMAXROW + 1;
  83.  
  84.   GDS_FLG := 0;
  85.   GDW_FLG := False;
  86. end;
  87.  
  88. procedure GPTERM;
  89. begin
  90.   inline
  91.     ($B4/$12/$B3/$10/$CD/$10/$B8/>$03/$F6/$C7/$01/$74/$03/$B8/>$07/$CD/$10);
  92. end;
  93.  
  94. procedure GPCOLOR(Color: Integer);
  95. begin
  96.     GDCOLOR := Color;
  97.     GDS_FLG := 0;
  98. end;
  99.  
  100. procedure GPSTYLE(Var Style);
  101. begin
  102.   GDSTYLE := addr(Style);
  103.   GDS_FLG := -1;
  104. end;
  105.  
  106. procedure GPSHADE(Var Shade);
  107. var
  108.   mx,my,x,y,x1,y1,i: Integer;
  109.   colors: array [0..65] of byte absolute Shade;
  110. begin
  111.  
  112.   GDSHADE := addr(Shade);
  113.  
  114.   mx := colors[0];
  115.   my := colors[1];
  116.  
  117.   x  := 0;
  118.   y  := 0;
  119.   x1 := 0;
  120.   y1 := 0;
  121.  
  122.   for i := 0 to 63 do
  123.     begin
  124.  
  125.       if x1 = 8 then
  126.         begin
  127.         x1 := 0;
  128.         y1 := y1 + 1;
  129.         y  := y + 1;
  130.         end;
  131.  
  132.       if x = mx then
  133.         begin
  134.         x := 0;
  135.         end;
  136.  
  137.       if y = my then
  138.         begin
  139.         y := 0;
  140.         end;
  141.  
  142.       GDSHADE1[y1*8+x1+2] := colors[y*mx+x+2];
  143.  
  144.       x  := x + 1;
  145.       x1 := x1 + 1;
  146.  
  147.     end;
  148.  
  149.     GDSHADE1[0] := 8;
  150.     GDSHADE1[1] := 8;
  151.  
  152.   inline
  153.     ($C7/$06/GDS_FLG/$FFFF /$BA/$03CE /$B8/$0205 /$EF /$B0/$08 /$EE /$42
  154.       /$8E/$06/GDGSEG /$8D/$36/GDSHADE1 /$46 /$46 /$8B/$3E/GDGSADR /$B9/>$40
  155.       /$B0/$80 /$EE /$26/$8A/$25 /$8A/$24 /$26/$88/$25 /$D0/$C8 /$83/$D7/$00
  156.       /$46 /$E2/$EF /$B0/$FF /$EE /$4A /$B8/>$05 /$EF);
  157. end;
  158.  
  159. procedure GPPAL(Palette,Color: Integer);
  160. begin
  161.   inline
  162.     ($8A/$5E/<Palette/$8A/$7E/<Color/$B8/$1000/$CD/$10);
  163. end;
  164.  
  165. procedure GPPLOT(X,Y: Integer);
  166. begin
  167.   inline
  168.     ($C7/$06/GDC_FLG/>$00 /$8B/$46/$04 /$3B/$06/GDVW_Y1 /$7C/$15
  169.       /$3B/$06/GDVW_Y2 /$7F/$0F /$8B/$7E/$06 /$3B/$3E/GDVW_X1 /$7C/$06
  170.       /$3B/$3E/GDVW_X2 /$7E/$08 /$C7/$06/GDC_FLG/>$02 /$EB/$49 /$A3/GDCUR_Y
  171.       /$D1/$E0 /$D1/$E0 /$03/$46/$04 /$05/$A000 /$8E/$C0 /$89/$3E/GDCUR_X
  172.       /$8B/$CF /$D1/$EF /$D1/$EF /$D1/$EF /$BA/$03CE /$8A/$26/GDMERGE /$B0/$03
  173.       /$EF /$B8/$0205 /$EF /$B0/$08 /$EE /$42 /$B0/$80 /$80/$E1/$07 /$D2/$C8
  174.       /$EE /$26/$8A/$05 /$A0/GDCOLOR /$26/$88/$05 /$B0/$FF /$EE /$4A /$B8/>$05
  175.       /$EF /$B0/$03 /$EF);
  176. end;
  177.  
  178. procedure GPBOX1(X1,Y1,X2,Y2: Integer);
  179. begin
  180.   inline
  181.     ($BA/$03CE/$8A/$26/GDMERGE/$B0/$03/$EF/$B8/$0205/$EF/$8B/$46/$0A/$8B/$5E/
  182.      $08/$8B/$7E/$06/$8B/$C8/$80/$E1/$07/$B2/$FF/$D2/$EA/$88/$56/$0A/$8B/$CF/
  183.      $80/$E1/$07/$B2/$80/$D2/$FA/$88/$56/$08/$8B/$4E/$04/$8B/$D0 /$D1/$EA/$D1/
  184.      $EA/$D1/$EA/$D1/$EF/$D1/$EF/$D1/$EF/$2B/$FA/$75/$0B/$50/$8A/$46/$08/$22/
  185.      $46/$0A/$88/$46/$08/$58/$4F/$2B/$CB/$41/$8B/$F0/$D1/$EE/$D1/$EE/$D1/$EE/
  186.      $8B/$C3/$D1/$E0/$D1/$E0/$03/$C3/$05/$A000/$8E/$C0/$BA/$03CE/$B0/$08/$EE/
  187.      $42/$8A/$26/GDCOLOR/$8A/$46/$0A/$EE/$E8/>$18/$0B/$FF/$78/$12/$74/$09/$B0/
  188.      $FF/$EE/$E8/>$0C/$4F/$75/$FA/$8A/$46/$08/$EE/$E8/>$02/$EB/$11/$51/$56/
  189.      $26/$8A/$04/$26/$88/$24/$83/$C6/$50/$E2/$F5/$5E/$59/$46/$C3/$B0/$FF/$EE/
  190.      $4A/$B8/>$03/$EF/$B8/>$05/$EF);
  191. end;
  192.  
  193. procedure GPBOX(X,Y: Integer);
  194. begin
  195.   GPBOX1(GDCUR_X,GDCUR_Y,X,Y);
  196. end;
  197.  
  198. procedure GPMOVE(X,Y: Integer);
  199. begin
  200.   GDCUR_X := X;
  201.   GDCUR_Y := Y;
  202. end;
  203.  
  204. procedure GPLINE(X1,Y1: Integer);
  205. begin
  206.   inline
  207.     ($55/$8B/$0E/GDCUR_X /$8B/$1E/GDCUR_Y /$8B/$76/$06 /$8B/$7E/$04
  208.       /$89/$36/GDCUR_X /$89/$3E/GDCUR_Y /$C7/$06/GDC_FLG/>$00 /$33/$C0
  209.       /$3B/$1E/GDVW_Y1 /$7D/$03 /$80/$CC/$08 /$3B/$1E/GDVW_Y2 /$7E/$03
  210.       /$80/$CC/$04 /$3B/$0E/GDVW_X1 /$7D/$03 /$80/$CC/$02 /$3B/$0E/GDVW_X2
  211.       /$7E/$03 /$80/$CC/$01 /$3B/$3E/GDVW_Y1 /$7D/$02 /$0C/$08 /$3B/$3E/GDVW_Y2
  212.       /$7E/$02 /$0C/$04 /$3B/$36/GDVW_X1 /$7D/$02 /$0C/$02 /$3B/$36/GDVW_X2
  213.       /$7E/$02 /$0C/$01 /$0B/$C0 /$75/$03 /$E9/>$99 /$C7/$06/GDC_FLG/>$01
  214.       /$84/$E0 /$74/$09 /$C7/$06/GDC_FLG/>$02 /$E9/$0270 /$0A/$C0 /$75/$06
  215.       /$87/$CE /$87/$DF /$86/$E0 /$A8/$02 /$75/$24 /$A8/$04 /$75/$3C /$A8/$08
  216.       /$75/$54 /$8B/$EF /$2B/$EB /$A1/GDVW_X2 /$2B/$C1 /$F7/$ED /$8B/$EE
  217.       /$2B/$E9 /$F7/$FD /$03/$C3 /$8B/$36/GDVW_X2 /$8B/$F8 /$E9/$FF6E /$8B/$EF
  218.       /$2B/$EB /$A1/GDVW_X1 /$2B/$C1 /$F7/$ED /$8B/$EE /$2B/$E9 /$F7/$FD
  219.       /$03/$C3 /$8B/$36/GDVW_X1 /$8B/$F8 /$E9/$FF52 /$8B/$EE /$2B/$E9
  220.       /$A1/GDVW_Y2 /$2B/$C3 /$F7/$ED /$8B/$EF /$2B/$EB /$F7/$FD /$03/$C1
  221.       /$8B/$F0 /$8B/$3E/GDVW_Y2 /$E9/$FF36 /$8B/$EE /$2B/$E9 /$A1/GDVW_Y1
  222.       /$2B/$C3 /$F7/$ED /$8B/$EF /$2B/$EB /$F7/$FD /$03/$C1 /$8B/$F0
  223.       /$8B/$3E/GDVW_Y1 /$E9/$FF1A /$BA/$03CE /$8A/$26/GDMERGE /$B0/$03 /$EF
  224.       /$B8/$0205 /$EF /$8B/$D6 /$3B/$D1 /$73/$04 /$87/$CA /$87/$DF /$2B/$D1
  225.       /$2B/$FB /$8B/$F3 /$D1/$E6 /$D1/$E6 /$03/$F3 /$D1/$E6 /$D1/$E6 /$D1/$E6
  226.       /$D1/$E6 /$8B/$D9 /$D1/$EB /$D1/$EB /$D1/$EB /$03/$DE /$8B/$F2 /$BA/$03CE
  227.       /$B0/$08 /$EE /$42 /$80/$E1/$07 /$B0/$80 /$D2/$C8 /$83/$3E/GDS_FLG/$00
  228.       /$75/$03 /$E9/>$BE /$56 /$C4/$36/GDSTYLE /$26/$80/$3C/$01 /$75/$08
  229.       /$26/$8A/$64/$01 /$5E /$E9/>$AB /$5E /$89/$76/$04 /$89/$7E/$06 /$0B/$FF
  230.       /$79/$0C /$F7/$DF /$3B/$FE /$77/$03 /$EB/$73/$90 /$EB/$4D/$90 /$3B/$FE
  231.       /$77/$25 /$8B/$CE /$8B/$FE /$D1/$EF /$F7/$DF /$C4/$36/GDSTYLE
  232.       /$26/$8A/$24 /$46 /$E8/$0125 /$D0/$C8 /$83/$D3/$00 /$03/$7E/$06 /$78/$F3
  233.       /$83/$C3/$50 /$2B/$7E/$04 /$EB/$EB /$8B/$CF /$D1/$EF /$F7/$DF
  234.       /$C4/$36/GDSTYLE /$26/$8A/$24 /$46 /$E8/$0102 /$83/$C3/$50 /$03/$7E/$04
  235.       /$78/$F5 /$D0/$C8 /$83/$D3/$00 /$2B/$7E/$06 /$EB/$EB /$8B/$CF /$D1/$EF
  236.       /$F7/$DF /$C4/$36/GDSTYLE /$26/$8A/$24 /$46 /$E8/>$DF /$83/$EB/$50
  237.       /$03/$7E/$04 /$78/$F5 /$D0/$C8 /$83/$D3/$00 /$03/$7E/$06 /$EB/$EB
  238.       /$8B/$CE /$8B/$FE /$D1/$EF /$F7/$DF /$C4/$36/GDSTYLE /$26/$8A/$24 /$46
  239.       /$E8/>$BA /$D0/$C8 /$83/$D3/$00 /$2B/$7E/$06 /$78/$F3 /$83/$EB/$50
  240.       /$2B/$7E/$04 /$EB/$EB /$8A/$26/GDCOLOR /$55 /$8E/$06/GDGSEG /$0B/$FF
  241.       /$79/$08 /$F7/$DF /$3B/$FE /$77/$4C /$EB/$6D /$3B/$FE /$77/$23 /$8B/$CE
  242.       /$8B/$EE /$D1/$ED /$F7/$DD /$EE /$26/$80/$3F/$00 /$26/$88/$27 /$49
  243.       /$78/$79 /$D0/$C8 /$83/$D3/$00 /$03/$EF /$78/$EC /$83/$C3/$50 /$2B/$EE
  244.       /$EB/$E5 /$8B/$CF /$8B/$EF /$D1/$ED /$F7/$DD /$EE /$26/$80/$3F/$00
  245.       /$26/$88/$27 /$49 /$78/$56 /$83/$C3/$50 /$03/$EE /$78/$EE /$D0/$C8
  246.       /$83/$D3/$00 /$2B/$EF /$EB/$E5 /$8B/$CF /$8B/$EF /$D1/$ED /$F7/$DD /$EE
  247.       /$26/$80/$3F/$00 /$26/$88/$27 /$49 /$78/$33 /$83/$EB/$50 /$03/$EE
  248.       /$78/$EE /$D0/$C8 /$83/$D3/$00 /$2B/$EF /$EB/$E5 /$8B/$CE /$8B/$EE
  249.       /$D1/$ED /$F7/$DD /$EE /$26/$80/$3F/$00 /$26/$88/$27 /$49 /$78/$10
  250.       /$D0/$C8 /$83/$D3/$00 /$03/$EF /$78/$EC /$83/$EB/$50 /$2B/$EE /$EB/$E5
  251.       /$5D /$EB/$25 /$EE /$50 /$26/$8A/$04 /$8E/$06/GDGSEG /$26/$8A/$27
  252.       /$26/$88/$07 /$8E/$06/GDSTYLE+2 /$58 /$FE/$CC /$75/$07 /$8B/$36/GDSTYLE
  253.       /$26/$8A/$24 /$46 /$49 /$78/$01 /$C3 /$58 /$BA/$03CE /$B8/>$03 /$EF
  254.       /$B8/>$05 /$EF /$B8/$FF08 /$EF/$5D);
  255. end;
  256.  
  257.  
  258. procedure GPRECT(X2,Y2: Integer);
  259. var
  260.   X1, Y1: Integer;
  261. begin
  262.   X1 := GDCUR_X;
  263.   Y1 := GDCUR_Y;
  264.   GPLINE(X1,Y2);
  265.   GPLINE(X2,Y2);
  266.   GPLINE(X2,Y1);
  267.   GPLINE(X1,Y1);
  268. end;
  269.  
  270. procedure GPCIR(Radius: Integer);
  271. begin
  272.   inline
  273.     ($83/$EC/$42 /$C7/$06/GDC_FLG/>$02 /$8B/$46/$04 /$0B/$C0 /$75/$01 /$40
  274.       /$8B/$D8 /$A1/GDCUR_X /$2B/$C3 /$3B/$06/GDVW_X2 /$76/$03 /$E9/$02DC
  275.       /$03/$C3 /$03/$C3 /$3B/$06/GDVW_X1 /$73/$03 /$E9/$02CF /$8B/$C3
  276.       /$F7/$26/GDASPC1 /$F7/$36/GDASPC2 /$8B/$D0 /$8B/$0E/GDCUR_Y /$2B/$C8
  277.       /$3B/$0E/GDVW_Y2 /$76/$03 /$E9/$02B4 /$89/$4E/$C2 /$03/$C8 /$03/$C8
  278.       /$3B/$0E/GDVW_Y1 /$73/$03 /$E9/$02A4 /$89/$4E/$C0 /$C7/$06/GDC_FLG/>$00
  279.       /$D1/$E0 /$D1/$E0 /$03/$C2 /$8B/$F0 /$A1/GDCUR_Y /$D1/$E0 /$D1/$E0
  280.       /$03/$06/GDCUR_Y /$05/$A000 /$2B/$C6 /$89/$46/$F6 /$03/$C6 /$03/$C6
  281.       /$89/$46/$F4 /$8B/$36/GDCUR_X /$89/$76/$C6 /$89/$76/$C4 /$8B/$CE /$D1/$EE
  282.       /$D1/$EE /$D1/$EE /$B0/$80 /$80/$E1/$07 /$D2/$C8 /$88/$46/$FE
  283.       /$89/$76/$FC /$88/$46/$FA /$89/$76/$F8 /$8B/$CA /$8B/$C2 /$F7/$E2
  284.       /$89/$46/$F2 /$89/$56/$F0 /$D1/$E0 /$D1/$D2 /$89/$46/$EA /$89/$56/$E8
  285.       /$8B/$C3 /$F7/$E3 /$52 /$50 /$D1/$E0 /$D1/$D2 /$89/$46/$E6 /$89/$56/$E4
  286.       /$58 /$D1/$E1 /$49 /$F7/$E1 /$89/$46/$EE /$89/$56/$EC /$58 /$F7/$E1
  287.       /$01/$46/$EC /$33/$C0 /$89/$46/$D6 /$89/$46/$D4 /$BA/$03CE
  288.       /$8A/$26/GDMERGE /$B0/$03 /$EF /$B8/$0205 /$EF /$B0/$08 /$EE /$E8/$0160
  289.       /$B9/$FFFF /$8B/$46/$D6 /$8B/$56/$D4 /$03/$46/$F2 /$13/$56/$F0
  290.       /$89/$46/$E2 /$89/$56/$E0 /$79/$08 /$33/$C1 /$33/$D1 /$40 /$73/$01 /$42
  291.       /$89/$46/$D2 /$89/$56/$D0 /$8B/$46/$D6 /$8B/$56/$D4 /$2B/$46/$EE
  292.       /$1B/$56/$EC /$89/$46/$DE /$89/$56/$DC /$79/$08 /$33/$C1 /$33/$D1 /$40
  293.       /$73/$01 /$42 /$89/$46/$CE /$89/$56/$CC /$8B/$46/$E2 /$8B/$56/$E0
  294.       /$2B/$46/$EE /$1B/$56/$EC /$89/$46/$DA /$89/$56/$D8 /$79/$08 /$33/$C1
  295.       /$33/$D1 /$40 /$73/$01 /$42 /$89/$46/$CA /$89/$56/$C8 /$8B/$46/$D2
  296.       /$8B/$56/$D0 /$3B/$56/$CC /$77/$42 /$72/$05 /$3B/$46/$CE /$73/$3B
  297.       /$3B/$56/$C8 /$77/$36 /$72/$05 /$3B/$46/$CA /$73/$2F /$D0/$46/$FE
  298.       /$83/$5E/$FC/$00 /$FF/$4E/$C6 /$D0/$4E/$FA /$83/$56/$F8/$00 /$FF/$46/$C4
  299.       /$8B/$46/$E2 /$8B/$56/$E0 /$89/$46/$D6 /$89/$56/$D4 /$8B/$46/$EA
  300.       /$8B/$56/$E8 /$01/$46/$F2 /$11/$56/$F0 /$E9/>$8D /$8B/$46/$CE
  301.       /$8B/$56/$CC /$3B/$56/$D0 /$77/$3C /$72/$05 /$3B/$46/$D2 /$73/$35
  302.       /$3B/$56/$C8 /$77/$30 /$72/$05 /$3B/$46/$CA /$73/$29 /$83/$46/$F6/$05
  303.       /$FF/$46/$C2 /$83/$6E/$F4/$05 /$FF/$4E/$C0 /$8B/$46/$DE /$8B/$56/$DC
  304.       /$89/$46/$D6 /$89/$56/$D4 /$8B/$46/$E6 /$8B/$56/$E4 /$29/$46/$EE
  305.       /$19/$56/$EC /$EB/$47/$90 /$D0/$46/$FE /$83/$5E/$FC/$00 /$FF/$4E/$C6
  306.       /$D0/$4E/$FA /$83/$56/$F8/$00 /$FF/$46/$C4 /$83/$46/$F6/$05 /$FF/$46/$C2
  307.       /$83/$6E/$F4/$05 /$FF/$4E/$C0 /$8B/$46/$DA /$8B/$56/$D8 /$89/$46/$D6
  308.       /$89/$56/$D4 /$8B/$46/$EA /$8B/$56/$E8 /$01/$46/$F2 /$11/$56/$F0
  309.       /$8B/$46/$E6 /$8B/$56/$E4 /$29/$46/$EE /$19/$56/$EC /$E8/>$1A
  310.       /$8B/$46/$F6 /$3B/$46/$F4 /$74/$03 /$E9/$FEAF /$B0/$FF /$EE /$4A
  311.       /$B8/>$05 /$EF /$B8/>$03 /$EF /$E9/>$A0 /$8A/$26/GDCOLOR /$BA/$03CF
  312.       /$8B/$5E/$C6 /$3B/$1E/GDVW_X1 /$73/$08 /$C7/$06/GDC_FLG/>$01 /$EB/$3B
  313.       /$8A/$46/$FE /$EE /$8B/$76/$FC /$8B/$5E/$C2 /$3B/$1E/GDVW_Y1 /$73/$08
  314.       /$C7/$06/GDC_FLG/>$01 /$EB/$09 /$8E/$46/$F6 /$26/$8A/$04 /$26/$88/$24
  315.       /$8B/$5E/$C0 /$3B/$1E/GDVW_Y2 /$76/$08 /$C7/$06/GDC_FLG/>$01 /$EB/$09
  316.       /$8E/$46/$F4 /$26/$8A/$04 /$26/$88/$24 /$8B/$5E/$C4 /$3B/$1E/GDVW_X2
  317.       /$76/$08 /$C7/$06/GDC_FLG/>$01 /$EB/$3B /$8A/$46/$FA /$EE /$8B/$76/$F8
  318.       /$8B/$5E/$C2 /$3B/$1E/GDVW_Y1 /$73/$08 /$C7/$06/GDC_FLG/>$01 /$EB/$09
  319.       /$8E/$46/$F6 /$26/$8A/$04 /$26/$88/$24 /$8B/$5E/$C0 /$3B/$1E/GDVW_Y2
  320.       /$76/$08 /$C7/$06/GDC_FLG/>$01 /$EB/$09 /$8E/$46/$F4 /$26/$8A/$04
  321.       /$26/$88/$24 /$C3 /$8B/$E5);
  322. end;
  323.  
  324. procedure GPFLOOD1(x1,x2,y1,y2,sadr,flg: Integer; var shade; merge,color,
  325.                    x,y,bc: Integer); external 'GPFLOOD.BIN';
  326.  
  327. procedure GPFLOOD(color: Integer);
  328. begin
  329.   GPFLOOD1(GDVW_X1,GDVW_X2,GDVW_Y1,GDVW_Y2,GDGSADR,GDS_FLG,GDSHADE1,GDMERGE,
  330.            GDCOLOR,GDCUR_X,GDCUR_Y,color);
  331. end;
  332.  
  333. procedure GPFILL(color: Integer);
  334. begin
  335.   GPFLOOD(color);
  336. end;
  337.  
  338. procedure GPWINDOW(X1,Y1,X2,Y2: Integer);
  339. var
  340.   i: Integer;
  341. begin
  342.   GDWD_X1 := X1;
  343.   GDWD_Y1 := Y1;
  344.   GDWD_X2 := X2;
  345.   GDWD_Y2 := Y2;
  346.  
  347.   GDWD_X3 := X2 - X1 + 1;
  348.   GDWD_Y3 := Y2 - Y1 + 1;
  349.   if X1 > X2 then
  350.      GDWD_X3 := X2 - X1 - 1;
  351.  
  352.   if Y1 > Y2 then
  353.      GDWD_Y3 := Y2 - Y1 - 1;
  354.  
  355.   GDW_FLG := True;
  356.  
  357. end;
  358.  
  359. procedure GPVIEWPORT(X1,Y1,X2,Y2: Integer);
  360. var
  361.   i: Integer;
  362. begin
  363.   if X1 > X2 then
  364.     begin
  365.       i  := X1;
  366.       X1 := X2;
  367.       X2 := i;
  368.     end;
  369.  
  370.   if Y1 > Y2 then
  371.     begin
  372.       i  := Y1;
  373.       Y1 := Y2;
  374.       Y2 := i;
  375.     end;
  376.  
  377.   GDVW_X1 := X1;
  378.   GDVW_Y1 := Y1;
  379.   GDVW_X2 := X2;
  380.   GDVW_Y2 := Y2;
  381.  
  382.   GDVW_X3 := X2 - X1 + 1;
  383.   GDVW_Y3 := Y2 - Y1 + 1;
  384.  
  385.   GDW_FLG := True;
  386.  
  387. end;
  388.  
  389. procedure GPSCALE(var X,Y: Integer);
  390. begin
  391.   inline
  392.     ($C4/$7E/$08 /$26/$8B/$05 /$2B/$06/GDWD_X1 /$F7/$2E/GDVW_X3
  393.       /$F7/$3E/GDWD_X3 /$03/$06/GDVW_X1 /$26/$89/$05 /$C4/$7E/$04 /$26/$8B/$05
  394.       /$2B/$06/GDWD_Y1 /$F7/$2E/GDVW_Y3 /$F7/$3E/GDWD_Y3 /$03/$06/GDVW_Y1
  395.       /$26/$89/$05);
  396. end;
  397.  
  398. function GPCLIP2(var X1,Y1,X2,Y2: Integer): Integer;
  399. begin
  400.   inline
  401.     ($55 /$C4/$7E/$10 /$26/$8B/$0D /$C4/$7E/$0C /$26/$8B/$1D /$C4/$7E/$08
  402.       /$26/$8B/$35 /$C4/$7E/$04 /$26/$8B/$3D /$33/$C0 /$89/$46/$14 /$33/$C0
  403.       /$3B/$1E/GDWD_Y1 /$7D/$03 /$80/$CC/$08 /$3B/$1E/GDWD_Y2 /$7E/$03
  404.       /$80/$CC/$04 /$3B/$0E/GDWD_X1 /$7D/$03 /$80/$CC/$02 /$3B/$0E/GDWD_X2
  405.       /$7E/$03 /$80/$CC/$01 /$3B/$3E/GDWD_Y1 /$7D/$02 /$0C/$08 /$3B/$3E/GDWD_Y2
  406.       /$7E/$02 /$0C/$04 /$3B/$36/GDWD_X1 /$7D/$02 /$0C/$02 /$3B/$36/GDWD_X2
  407.       /$7E/$02 /$0C/$01 /$0B/$C0 /$75/$03 /$E9/>$96 /$C6/$46/$14/$01 /$84/$E0
  408.       /$74/$08 /$C6/$46/$14/$02 /$5D /$E9/>$A1 /$0A/$C0 /$75/$06 /$87/$CE
  409.       /$87/$DF /$86/$E0 /$A8/$02 /$75/$24 /$A8/$04 /$75/$3C /$A8/$08 /$75/$54
  410.       /$8B/$EF /$2B/$EB /$A1/GDWD_X2 /$2B/$C1 /$F7/$ED /$8B/$EE /$2B/$E9
  411.       /$F7/$FD /$03/$C3 /$8B/$36/GDWD_X2 /$8B/$F8 /$E9/$FF71 /$8B/$EF /$2B/$EB
  412.       /$A1/GDWD_X1 /$2B/$C1 /$F7/$ED /$8B/$EE /$2B/$E9 /$F7/$FD /$03/$C3
  413.       /$8B/$36/GDWD_X1 /$8B/$F8 /$E9/$FF55 /$8B/$EE /$2B/$E9 /$A1/GDWD_Y2
  414.       /$2B/$C3 /$F7/$ED /$8B/$EF /$2B/$EB /$F7/$FD /$03/$C1 /$8B/$F0
  415.       /$8B/$3E/GDWD_Y2 /$E9/$FF39 /$8B/$EE /$2B/$E9 /$A1/GDWD_Y1 /$2B/$C3
  416.       /$F7/$ED /$8B/$EF /$2B/$EB /$F7/$FD /$03/$C1 /$8B/$F0 /$8B/$3E/GDWD_Y1
  417.       /$E9/$FF1D /$5D /$8B/$C7 /$C4/$7E/$10 /$26/$89/$0D /$C4/$7E/$0C
  418.       /$26/$89/$1D /$C4/$7E/$08 /$26/$89/$35 /$C4/$7E/$04 /$26/$89/$05);
  419. end;
  420.  
  421. procedure SetViewport(X1,Y1,X2,Y2: Integer);
  422. begin
  423.   GPVIEWPORT(X1,Y1,X2,Y2);
  424. end;
  425.  
  426. procedure SetWindow(X1,Y1,X2,Y2: Integer);
  427. begin
  428.   GPWINDOW(X1,Y1,X2,Y2);
  429. end;
  430.  
  431. procedure MovAbs(X,Y: Integer);
  432. begin
  433.   GDCURX1 := X;
  434.   GDCURY1 := Y;
  435. end;
  436.  
  437. procedure MovRel(X,Y: Integer);
  438. begin
  439.   GDCURX1 := GDCURX1 + X;
  440.   GDCURY1 := GDCURY1 + Y;
  441. end;
  442.  
  443. procedure LnAbs(X2,Y2: Integer);
  444. var
  445.   X1,Y1:  Integer;
  446.   I: Integer;
  447. begin
  448.   X1 := GDCURX1;
  449.   Y1 := GDCURY1;
  450.   GDCURX1 := X2;
  451.   GDCURY1 := Y2;
  452.  
  453.   if GPCLIP2(X1,Y1,X2,Y2) <> 2 then
  454.     begin
  455.     GPSCALE(X1,Y1);
  456.     GPMOVE(X1,Y1);
  457.     GPSCALE(X2,Y2);
  458.     GPLINE(X2,Y2);
  459.     end;
  460.  
  461. end;
  462.  
  463. procedure LnRel(X,Y: Integer);
  464. begin
  465.   LnAbs(GDCURX1 + X, GDCURY1 + Y);
  466. end;
  467.  
  468. procedure GPMERGE(Merge: Integer);
  469. begin
  470.   GDMERGE := Merge and $03 shl 3;
  471. end;
  472.  
  473. procedure GPWTCOL(var BUF; N: Integer);
  474. begin
  475.   inline
  476.     ($1E/$A1/GDCUR_Y/$D1/$E0/$D1/$E0/$03/$06/GDCUR_Y/$05/$A000/$8E/$C0/$8B/$3E/
  477.      GDCUR_X/$8B/$CF/$D1/$EF/$D1/$EF/$D1/$EF/$BA/$03CE/$8A/$26/GDMERGE/$B0/$03/
  478.      $EF/$B8/$0205/$EF/$B0/$08/$EE/$42/$B0/$80/$80/$E1/$07/$D2/$C8/$EE/$8B/$4E/
  479.      $04/$C5/$76/$06/$8A/$24/$46/$26/$8A/$1D/$26/$88/$25/$83/$C7/$50/$E2/$F2/
  480.      $B0/$FF/$EE/$4A/$B8/>$05/$EF/$B8/>$03/$EF/$1F);
  481. end;
  482.  
  483. procedure GPWTROW(var BUF; N: Integer);
  484. begin
  485.   inline
  486.     ($1E/$A1/GDCUR_Y/$D1/$E0/$D1/$E0/$03/$06/GDCUR_Y/$05/$A000/$8E/$C0/$8B/$3E/
  487.      GDCUR_X/$8B/$CF/$D1/$EF/$D1/$EF/$D1/$EF/$BA/$03CE/$8A/$26/GDMERGE/$B0/$03/
  488.      $EF/$B8/$0205/$EF/$B0/$08/$EE/$42/$B0/$80/$80/$E1/$07/$D2/$C8/$8B/$4E/$04/
  489.      $C5/$76/$06/$EE/$8A/$24/$46/$26/$8A/$3D/$26/$88/$25/$D0/$C8/$83/$D7/$00/
  490.      $E2/$EF/$B0/$FF/$EE/$4A/$B8/>$05/$EF/$B8/>$03/$EF/$1F);
  491. end;
  492.  
  493. function GPRDPAL(Palette: Integer): Integer;
  494. begin
  495.  inline
  496.    ($33/$C0/$8E/$C0/$26/$C4/$1E/$04A8/$83/$C3/$04/$26/$C4/$1F/$8C/$C0/$0B/$C3/
  497.     $74/$14/$8A/$46/<Palette/$3C/$FF/$75/$02/$B0/$11/$32/$E4/$03/$D8/$26/$8A/
  498.     $07/$32/$E4/$EB/$03/$B8/$FFFF/$89/$46/$06);
  499. end;
  500.