CONST Gsx =115; Monitor_ID = 01; Printer_LR_ID = 21; Printer_HR_ID = 22; Plotter_ID = 11; TYPE String_10 = STRING [10]; DevType = (Monitor,Printer_LR,Printer_HR,Plotter); VAR DE_Address, X_Resolution, Y_Resolution : Integer; Pb : Array [1..5] of Integer; Contrl : Array [1..6] of Integer; Intin : Array [1..10] of Integer; Intout : Array [1..45] of Integer; Ptsin : Array [1..4] of Integer; Ptsout : Array [1..12] of Integer; PROCEDURE Grafic_On (Dev: Devtype); VAR I : Integer; BEGIN Write (Chr(27),'0'); { Statuszeile ausblenden } Write (Chr(27),'y'); { 32 * 90 Bildschirmmodus } DE_Address := Addr(Pb [1]); Pb[1] := Addr(Contrl [1]); Pb[2] := Addr(Intin [1]); Pb[3] := Addr(Ptsin [1]); Pb[4] := Addr(Intout [1]); Pb[5] := Addr(Ptsout [1]); Contrl [1] := 1; Contrl [2] := 0; Contrl [4] := 10; CASE Dev OF Monitor : Intin [1] := Monitor_ID; Printer_LR : Intin [1] := Printer_LR_ID; Printer_HR : Intin [1] := Printer_HR_ID; Plotter : Intin [1] := Plotter_ID; END; FOR I := 2 TO 10 DO Intin [I] := 1; Bdos(Gsx,DE_Address); Contrl [1] := 5; Contrl [6] := 2; Contrl [2] := 0; Bdos(Gsx,DE_Address); X_Resolution := Intout [1]; Y_Resolution := Intout [2]; END; PROCEDURE Grafic_Off; BEGIN Contrl [1] := 4; Contrl [2] := 0; Bdos (Gsx,DE_Address); Gotoxy (0,0); Contrl [1] := 5; Contrl [6] := 3; Contrl [2] := 0; Bdos(Gsx,DE_Address); Contrl [1] := 2; Contrl [2] := 0; Bdos(Gsx, DE_Address); Write (Chr(27),'1'); Write (Chr(27),'e'); { Cursor sichtbar } END; PROCEDURE Clr_Grafic; BEGIN Contrl [1] := 3; Contrl [2] := 0; Bdos(Gsx,DE_Address); END; PROCEDURE DIRECTION (I: INTEGER); BEGIN Contrl [1] := 13; Contrl [2] := 0; Intin [1] := I * 900; Intin [2] := Round (100 * Cos (I * Pi / 2)); Intin [3] := Round (100 * Sin (I * pi / 2)); Bdos (Gsx, DE_Address); END; PROCEDURE Color (Typ: Integer); BEGIN Contrl [1] := 17; Contrl [2] := 0; Intin [1] := Typ; Bdos(Gsx,DE_Address); END; PROCEDURE Set_CharHeight(Height: Integer); BEGIN Contrl [1] := 12; Contrl [2] := 1; Contrl [3] := 2; Ptsin [1] := 0; Ptsin [2] := Height*192; Bdos (Gsx, DE_Address); END; PROCEDURE Line_Type (Typ: Integer); BEGIN Contrl [1] := 15; Contrl [2] := 0; Intin [1] := Typ; Bdos(Gsx,DE_Address); END; PROCEDURE Fill_Type (Sort,Option: Integer); BEGIN Contrl [1] := 23; Contrl [2] := 0; Intin [1] := Sort; Bdos (Gsx,DE_Address); Contrl [1] := 24; Contrl [2] := 0; Intin [1] := Option; Bdos (Gsx, DE_Address); END; PROCEDURE Line (X1,Y1,X2,Y2: Integer); BEGIN Contrl [1] := 6; Contrl [2] := 2; Ptsin [1] := X1; Ptsin [2] := Y1; Ptsin [3] := X2; Ptsin [4] := Y2; Bdos(Gsx,DE_Address); END; PROCEDURE Plot (X1,Y1: Integer); BEGIN Contrl [1] := 6; Contrl [2] := 2; Ptsin [1] := X1; Ptsin [2] := Y1; Ptsin [3] := X1; Ptsin [4] := Y1; Bdos(Gsx,DE_Address); END; PROCEDURE Printxy (X_Pos,Y_Pos: Integer ; Text: String_10); VAR I : Integer; BEGIN Contrl [1] := 8; Contrl [2] := 1; Contrl [4] := Length (Text); FOR I := 1 TO Length (Text) DO Intin [I] := Ord (Text [I]); Ptsin [1] := X_Pos; Ptsin [2] := Y_Pos; Bdos(Gsx,DE_Address); END; PROCEDURE Box (X1,Y1,X2,Y2: Integer); BEGIN Contrl [1] := 11; Contrl [2] := 2; Contrl [6] := 1; Ptsin [1] := X1; Ptsin [2] := Y1; Ptsin [3] := X2; Ptsin [4] := Y2; Bdos (Gsx,DE_Address); END;