home *** CD-ROM | disk | FTP | other *** search
- (*#module(turbo_comp=>off)*)
- Implementation Unit Screen;
-
- IMPORT
- PASDOS(rdkey),
- TURBOCRT(textcolor,textbackground,clrscr,clreol,gotoxy),
- TURBODOS(registers,msdos,intr),
- TURBOSYS(ABORT,_STR_INT)
- ;
-
- {========================================================================}
- Function GetInput { : byte; };
- Var
- NoInputPending : Boolean;
- tbyte : byte;
- tchar : char;
- Begin
- tchar := rdkey;
- tbyte := tchar::byte;
- GetInput := tbyte;
- End;
-
- {========================================================================}
- Procedure NewTextColor { (NewColor : Byte); };
- Var
- NewColorAnsi : String[6];
- Flash : Boolean;
- Begin
- If ReDirectTo = Console Then
- Begin
- TextColor(NewColor);
- End
- Else
- Begin
- If NewColor > 128 Then
- Begin
- NewColor := NewColor - 128;
- Flash := True;
- End
- Else
- Begin
- Flash := False;
- End;
- Case NewColor of
- 0 : NewColorAnsi := '30'; {BLACK}
- 1 : NewColorAnsi := '34'; {BLUE}
- 2 : NewColorAnsi := '32'; {GREEN}
- 3 : NewColorAnsi := '36'; {CYAN}
- 4 : NewColorAnsi := '31'; {RED}
- 5 : NewColorAnsi := '35'; {MAGENTA}
- 6 : NewColorAnsi := '33'; {BROWN}
- 7 : NewColorAnsi := '37'; {LIGHTGRAY}
- 8 : NewColorAnsi := '1;30'; {BLACK}
- 9 : NewColorAnsi := '1;34'; {BLUE}
- 10: NewColorAnsi := '1;32'; {GREEN}
- 11: NewColorAnsi := '1;36'; {CYAN}
- 12: NewColorAnsi := '1;31'; {RED}
- 13: NewColorAnsi := '1;35'; {MAGENTA}
- 14: NewColorAnsi := '1;33'; {BROWN}
- 15: NewColorAnsi := '1;37';
- Else {LIGHTGRAY}
- End;
- If Flash Then NewColorAnsi := '5;'+NewColorAnsi Else NewColorAnsi := '0;'+NewColorAnsi;
- Write(chr(27)+'['+NewColorAnsi+'m');
- End;
- End;
- {========================================================================}
- Procedure NewTextBackground { (NewColor : Byte); };
- Var
- NewColorAnsi : String[6];
- Begin
- If ReDirectTo = Console Then
- Begin
- TextBackground(NewColor);
- End
- Else
- Begin
- Case NewColor of
- 0 : NewColorAnsi := '40'; {BLACK}
- 1 : NewColorAnsi := '44'; {BLUE}
- 2 : NewColorAnsi := '42'; {GREEN}
- 3 : NewColorAnsi := '46'; {CYAN}
- 4 : NewColorAnsi := '41'; {RED}
- 5 : NewColorAnsi := '45'; {MAGENTA}
- 6 : NewColorAnsi := '43'; {BROWN}
- 7 : NewColorAnsi := '47';
- Else {LIGHTGRAY}
- End;
- Write(chr(27)+'['+NewColorAnsi+'m');
- End;
- End;
- {========================================================================}
- Procedure AnsiClearScreen;
- Begin
- If ReDirectTo = Console Then ClrScr Else Write(chr(27)+'[2J');
- End;
- {========================================================================}
- Procedure AnsiClearToEOL;
- Begin
- If ReDirectTo = Console Then ClrEol Else Write(chr(27)+'[K');
- End;
- {========================================================================}
- Procedure AnsiGotoXY { (X, Y : Byte); };
- Var
- Xpos, Ypos : String[2];
- Begin
- If ReDirectTo = Console Then
- Begin
- GotoXY(Y,X);
- End
- Else
- Begin
- _STR_INT(X, 0,Xpos); _STR_INT(Y, 0,Ypos);
- Write(chr(27)+'['+Xpos+';'+Ypos+'H');
- End;
- End;
- {========================================================================}
- End.