home *** CD-ROM | disk | FTP | other *** search
-
- Unit sCrt;
-
- InterFace
-
- uses
- Crt;
-
- procedure init;
- procedure ws(X, Y, Atr : Byte; Ch : Char);
- function rs(X, Y : byte) : Char;
- procedure wst(X, Y, Atr : Byte; S : String);
- procedure WstCenter(X, Y, Atr : Byte; Str : string);
- procedure WstRight(X, Y, Atr : Byte; Str : string);
-
- Implementation
-
- var
- ScreenSeg : longint;
- att : byte; (* atributt(se over) *)
-
- procedure init;
- (* Denne prosedyren finner ut skjermadressen i RAM og setter att *)
- (* til 15 (hvitt p} sort), dette funker b}de p} farge og monoskjerm *)
- begin
- if (Mem[0000:1040] and 48) <> 48 then
- ScreenSeg := $B800
- else
- ScreenSeg := $B000;
- Att := 15;
- end;
-
- procedure ws(X, Y, Atr : Byte; Ch : Char);
- (* Skriver ut et tegn(thischar) i posisjon (col,row), der col er *)
- (* vanrett (1-80) og row er loddrett (1-25) *)
- var
- locationCode : Integer;
- begin
- Att := Atr;
- locationCode := (X - 1) * 2 + (Y - 1) * 160;
- Mem[screenseg : locationcode] := Ord(Ch);
- Mem[screenseg : locationcode + 1] := Atr;
- end;
-
- function rs(X, Y : byte) : Char;
- (* Leser et tegn p} skjermen i pos. col,row *)
- var
- locationcode : Integer;
- begin
- LocationCode := (X - 1) * 2 + (Y - 1) * 160;
- rs := chr(Mem[ScreenSeg:LocationCode]);
- end;
-
- procedure wst(X, Y, Atr : Byte; S : String);
- (* Skriver ut en streng til skjermen i pos. x,y *)
- var
- t : Byte;
- begin
- for t := 1 to Length(S) do
- ws(x + t - 1, y, Atr, S(.t.));
- end;
-
- procedure WstCenter(X, Y, Atr : Byte; Str : string);
- var
- t : Byte;
- begin
- for t := 1 to Length(Str) do
- Ws(t + X - (Length(Str) div 2), Y, Atr, Str[t]);
- end;
-
- procedure WstRight(X, Y, Atr : Byte; Str : string);
- var
- t : Byte;
- begin
- for t := 1 to Length(Str) do
- Ws(t + X - Length(Str), Y, Atr, Str[t]);
- end;
-
-
- begin
- Init;
- end.