home *** CD-ROM | disk | FTP | other *** search
-
- UNIT VIDEO;
- {$F+}
-
- INTERFACE
-
-
- USES DOS;
-
-
- type ColorValue = record
- R,G,B : BYTE;
- END;
-
- VGAPaletteType = array[0..255] of ColorValue;
-
-
- CONST USEET4000 : BOOLEAN = TRUE; { VGA- CHIP ET4000 ODER ANDERER }
- SEGPORT : WORD = $3CD; { PORTADRESSE FÜR SEGMENTADRESSE }
-
-
- FUNCTION CPU_TYPE:INTEGER;
- FUNCTION VIDADAP:WORD;
- FUNCTION VADAPTERTEXT(I:BYTE):STRING;
-
- PROCEDURE WTSYNCH;
- PROCEDURE SETVMODE(MODE:BYTE);
- procedure VGASetAllPalette(var P : VGAPaletteType);
- procedure VGASetPalette(VON,BIS:BYTE;var P : VGAPaletteType);
- procedure VGASetCOLOR(NR:BYTE;COL:COLORVALUE);
- procedure VGAGetAllPalette(var P : VGAPaletteType);
- PROCEDURE GRAYSCALE16;
- PROCEDURE GRAYSCALE256;
- PROCEDURE SETSEG(NR:BYTE);
- PROCEDURE SETCPER(MASKE:BYTE);
-
-
- IMPLEMENTATION
-
-
- FUNCTION CPU_TYPE:INTEGER; EXTERNAL;
- {$L GETCPU}
- FUNCTION VIDADAP:WORD; EXTERNAL;
- {$L VIDEOID}
-
-
- PROCEDURE WTSYNCH;
- BEGIN
- REPEAT UNTIL (PORT[$3DA] AND 8) = 0;
- REPEAT UNTIL (PORT[$3DA] AND 8) <> 0;
- END;
-
-
- FUNCTION VADAPTERTEXT(I:BYTE):STRING;
- BEGIN
- CASE LO(I) OF
- 0 : VADAPTERTEXT := 'nicht vorhanden';
- 1 : VADAPTERTEXT := 'MDA Monochrom Display Adapter';
- 2 : VADAPTERTEXT := 'CGA Color Graphics Adapter';
- 3,9 : VADAPTERTEXT := 'reservierter DCC';
- 4 : VADAPTERTEXT := 'EGA Enhanced Graphics Adapter Color Mode';
- 5 : VADAPTERTEXT := 'EGA Enhanced Graphics Adapter Monochrom Mode';
- 6 : VADAPTERTEXT := 'PGA Professional Graphics Controller';
- 7 : VADAPTERTEXT := 'VGA Video Graphics Array mit Monochrom Display';
- 8 : VADAPTERTEXT := 'VGA Video Graphics Array mit Color Display';
- 10 : VADAPTERTEXT := 'MCGA mit digitalem Color Display';
- 11 : VADAPTERTEXT := 'MCGA mit analogem Monochrom Diaplay';
- 12 : VADAPTERTEXT := 'MCGA mit analogem Color Display';
- 64 : VADAPTERTEXT := 'HGC Hercules Graphics Card';
- ELSE
- VADAPTERTEXT := 'nicht erkannt';
- END; { CASE I }
- END; { VADAPTERTEXT }
-
-
- PROCEDURE SETVMODE(MODE:BYTE);
- VAR R : REGISTERS;
- BEGIN
- R.AH := 0;
- R.AL := MODE;
- INTR($10,R);
- END;
-
-
- procedure VGASetAllPalette(var P : VGAPaletteType);
- var R : REGISTERS;
- begin
- with R do
- begin
- AX := $1012;
- BX := 0;
- CX := 256;
- ES := Seg(P);
- DX := Ofs(P);
- end;
- Intr($10, R);
- end; { VGASetAllPalette }
-
-
- procedure VGASetPalette(VON,BIS:BYTE;var P : VGAPaletteType);
- var R : REGISTERS;
- begin
- with R do
- begin
- AX := $1012;
- BX := VON;
- CX := SUCC(BIS-VON);
- ES := Seg(P);
- DX := Ofs(P);
- end;
- Intr($10, R);
- end; { VGASetAllPalette }
-
-
- procedure VGASetCOLOR(NR:BYTE;COL:COLORVALUE);
- var REG : REGISTERS;
- begin
- with REG do
- begin
- AX := $1010;
- BX := NR;
- CH := COL.G;
- CL := COL.B;
- DH := COL.R;
- end;
- Intr($10,REG);
- end; { VGASetCOLOR }
-
-
- procedure VGAGetAllPalette(var P : VGAPaletteType);
- var R : REGISTERS;
- begin
- with R do begin
- AX := $1017;
- BX := 0;
- CX := 256;
- ES := Seg(P);
- DX := Ofs(P);
- end;
- Intr($10, R);
- end; { VGASetAllPalette }
-
-
- PROCEDURE GRAYSCALE16;
- VAR VP : ^VGAPALETTETYPE;
- I : BYTE;
- BEGIN
- { 16- STUFIGE GRAUSKALA EINSTELLEN }
- GETMEM(VP,SIZEOF(VGAPALETTETYPE));
- VGAGETALLPALETTE(VP^);
- FOR I := 0 TO 15 DO BEGIN
- VP^[I].R := I SHL 2;
- VP^[I].G := I SHL 2;
- VP^[I].B := I SHL 2;
- END;
- VGASETALLPALETTE(VP^);
- FREEMEM(VP,SIZEOF(VGAPALETTETYPE));
- END;
-
-
- PROCEDURE GRAYSCALE256;
- VAR VP : ^VGAPALETTETYPE;
- I : BYTE;
- BEGIN
- { 256- STUFIGE GRAUSKALA EINSTELLEN }
- GETMEM(VP,SIZEOF(VGAPALETTETYPE));
- FOR I := 0 TO 255 DO BEGIN
- VP^[I].R := I SHR 2;
- VP^[I].G := I SHR 2;
- VP^[I].B := I SHR 2;
- END;
- VGASETALLPALETTE(VP^);
- FREEMEM(VP,SIZEOF(VGAPALETTETYPE));
- END;
-
-
- PROCEDURE SETSEG(NR:BYTE);
- BEGIN
- IF USEET4000 THEN BEGIN
- PORT[SEGPORT] := NR + NR SHL 4;
- END ELSE BEGIN
- PORT[SEGPORT] := (NR + NR SHL 3) OR $40;
- END;
- END; { SETSEG }
-
-
- PROCEDURE SETCPER(MASKE:BYTE);
- VAR R : REGISTERS;
- BEGIN
- WITH R DO BEGIN
- AH := $10;
- AL := 0;
- BH := MASKE;
- BL := $12;
- INTR($10,R);
- END; { WITH R }
- END; { SETCPER }
-
-
- END.
-