home *** CD-ROM | disk | FTP | other *** search
- (* ------------------------------------------------------ *)
- (* SETCOLOR.PAS *)
- (* (c) 1990 by Ralph Seelig & toolbox *)
- (* ------------------------------------------------------ *)
- program SetColors;
-
- uses crt,dos,graph;
-
- const
- raster : array[0..7] of byte=
- ( $aa, $55, $aa, $55, $aa, $55, $aa, $55 );
- farben : array[0..4] of byte=
- ( 0, 9, 12, 14, 0);
- farbmuster : array[0..8] of byte=
- ( $13, $10, $11, $32, $30, $33, $21, $20, $22 );
-
- graphpath = ''; { Verzeichnis der BGI Dateien }
- r : integer = 4;
- xp = 110;
- yp = 70;
- a = 25;
-
- var
- gd,gm,
- x,y : integer;
- f,i : byte;
- ch : char;
- datpuffer : array[0..1000] of byte;
- dat : file;
- datlang : word;
-
- procedure NewPalette(var cf);
- { setzt Farben aus der EGA Palette im CGA 4 Farbenmodus }
-
- var
- reg : registers;
- CFarben : array[0..16] of byte;
- i : byte;
- begin
- move(CF,CFarben[0],5);
- cfarben[16]:= cfarben[4];
- for i:= 0 to 16 do
- if cfarben[i]>7 then inc(cfarben[i],8);
- reg.es:= seg(CFarben);
- reg.dx:= ofs(Cfarben);
- reg.al:= 2;
- reg.ah:= $10;
- intr($10,reg);
- end;
-
- procedure ZeigeEintraege;
- begin
- TextColor(3);
- gotoxy(21,1);
- for i:= 0 to 3 do
- write(farben[i],' ');
- end;
-
- procedure NeueFarben(nr : byte; zeich : char);
- begin
- if ord(zeich)> 96 then
- if farben[nr]< 15 then inc(farben[nr])
- else farben[nr]:= 0
- else
- if farben[nr]> 0 then dec(farben[nr])
- else farben[nr]:= 15;
- NewPalette(farben);
- ZeigeEintraege;
- end;
-
-
- function IsBit(zahl : word; stelle : byte) : boolean;
- begin
- if odd(zahl shr stelle) then IsBit:= true else IsBit:= false;
- end;
-
- procedure SetBB(x1,y1,x2,y2 :integer; fa :byte; var muster);
- var
- mus : array[0..7] of byte absolute muster;
- x,y : integer;
- bz,hz,st : byte;
- begin
- hz:= 0;
- for y:= y1 to y2 do
- begin
- st:= 7;
- for x:= x1 to x2 do
- begin
- if isbit(mus[hz],st) then putpixel(x,y,(fa and $0f))
- else putpixel(x,y,(fa shr 4));
- if st> 0 then dec(st) else st:= 7;
- end;
- if hz<7 then inc(hz) else hz:= 0;
- end;
- end;
-
- begin
- directvideo:= false;
- gd:= 1; gm:= 1;
- initgraph(gd,gm,graphpath);
- NewPalette(farben);
- TextColor(2);
- gotoxy(1,1); write('Paletteneintraege : ');
- ZeigeEintraege;
- TextColor(1);
- gotoxy(15,6); write('EGA Farben');
- TextColor(2);
- gotoxy(14,7); write('im CGA Modus');
- SetColor(3);
- SetLineStyle(4,$8888,1);
- rectangle(xp-r,yp-r,xp+(3*(r+a)),yp+(3*(r+a)));
- r:= r+a;
- for y:= 0 to 2 do
- for x:= 0 to 2 do
- begin
- f:= Farbmuster[x+(y*3)];
- SetBB((x*r)+xp,(y*r)+yp,(x*r)+xp+a,(y*r)+yp+a,f,raster);
- end;
- ch:= #0;
- repeat
- ch:= readkey;
- case ch of
- 'a','A' : neuefarben(0,ch);
- 's','S' : neuefarben(1,ch);
- 'd','D' : neuefarben(2,ch);
- 'f','F' : neuefarben(3,ch);
- end;
- until ch= #27;
- textcolor(3);
- gotoxy(1,25);
- write('Farben in CGACOLOR.COM speichern (J/N) ?');
- repeat
- ch:= upcase(readkey);
- until ch in [#74,#78];
- closegraph;
- if ch = #74 then
- begin
- assign(dat,'cgacolor.com');
- {$I-} reset(dat,1); {$I+}
- if ioresult<> 0 then
- begin
- writeln(#13,#10,'CGACOLOR.COM nicht gefunden',#13,#10);
- halt;
- end;
- datlang:= filesize(dat);
- blockread(dat,datpuffer,datlang);
- close(dat);
- move(farben,datpuffer[$ad],4);
- assign(dat,'cgacolor.com');
- rewrite(dat,1);
- blockwrite(dat,datpuffer,datlang);
- close(dat);
- end;
- end.
- (* ------------------------------------------------------ *)
- (* Ende von SETCOLOR.PAS *)
-