home *** CD-ROM | disk | FTP | other *** search
- (* ------------------------------------------------------ *)
- (* UNIGRAF.PAS *)
- (* residenter, universeller BGI-Grafiktreiber *)
- (* (c) 1990 Rainer Hamann & TOOLBOX *)
- (* ------------------------------------------------------ *)
- PROGRAM UniversellerGrafikTreiber;
-
- {$M 1500,12000,12000} (* Platz für *.BGI und *.CHR *)
-
- {$F+,V-}
-
- USES Dos, Graph;
-
- CONST
- GrafikInterrupt = $60;
- BGIInstalled : BOOLEAN = FALSE;
- PutPixelCode = 1;
- GetPixelCode = 2;
- LineCode = 3;
- CircleCode = 4;
- ArcCode = 5;
- SetColorCode = 10;
- SetGraphModeCode = 11;
- RestoreCrtModeCode = 12;
- SetViewPortCode = 13;
- ClearViewPortCode = 14;
- OutTextXYCode = 15;
- ImageSizeCode = 16;
- GetImageCode = 17;
- PutImageCode = 18;
- InstallCode = 19;
-
- TYPE
- Str80 = STRING[80];
- ParameterRecord = RECORD
- BefehlsCode,
- x1, y1, x2, y2, w, Farbe : WORD;
- Zeiger : POINTER;
- Clipping : BOOLEAN;
- Text : Str80;
- END;
- VAR
- Parameter : ^ParameterRecord;
- OldInt : POINTER;
- Treiber, GrafikKarte : INTEGER;
-
- PROCEDURE GrafikBefehl(p : POINTER);
- BEGIN
- Parameter := p;
- WITH Parameter^ DO BEGIN
- CASE BefehlsCode OF
- PutPixelCode : PutPixel(x1, y1, Farbe);
- GetPixelCode : Farbe := GetPixel(x1, y1);
- LineCode : Line(x1, y1, x2, y2);
- CircleCode : Circle(x1, y1, x2);
- ArcCode : Arc(x1, y1, x2, y2, w);
- SetColorCode : SetColor(Farbe);
- SetGraphModeCode : SetGraphMode(GetGraphMode);
- RestoreCrtModeCode : RestoreCrtMode;
- SetViewPortCode : SetViewPort(x1, y1,
- x2, y2, Clipping);
- ClearViewPortCode : ClearViewPort;
- OutTextXYCode : OutTextXY(x1, y1, Text);
- ImageSizeCode : x1 := ImageSize(x1, y1, x2, y2);
- GetImageCode : GetImage(x1, y1, x2,
- y2, Zeiger^);
- PutImageCode : PutImage(x1, y1, Zeiger^,
- NormalPut);
- InstallCode : BEGIN
- IF NOT BGIInstalled THEN BEGIN
- Treiber := Detect;
- DetectGraph(Treiber,
- GrafikKarte);
- InitGraph(Treiber,
- GrafikKarte,
- GetEnv('BGI'));
- BGIInstalled := TRUE;
- END;
- x1 := GetMaxX;
- y1 := GetMaxY;
- END;
- END;
- END;
- END;
-
- PROCEDURE GraphDevice(Flags,CS,IP,AX,BX,CX,
- DX,SI,DI,DS,ES,BP: WORD);
- INTERRUPT;
- BEGIN
- GrafikBefehl(PTR(AX, BX));
- END;
-
- BEGIN
- GetIntVec(GrafikInterrupt, OldInt);
- SetIntVec(GrafikInterrupt, ADDR(GraphDevice));
- WriteLn('Mit EXIT entfernen Sie UNIGRAF ',
- 'aus dem Speicher.');
- EXEC(GetEnv('COMSPEC'),'');
- WriteLn('UNIGRAF ist aus dem Speicher entfernt.');
- SetIntVec(GrafikInterrupt, OldInt);
- END.
- (* ------------------------------------------------------ *)
- (* Ende von UNIGRAF.PAS *)