home *** CD-ROM | disk | FTP | other *** search
- { Donated by Warren Smith, Feb 1982 }
-
- Module CRT_Televideo;
-
- { This set of routines is designed to support a Televideo 912/920 type }
- { of terminal. If you have trouble adapting it to your terminal, give }
- { me a call. }
-
- Const
- Direct_IO = 6 ;
- Crt_Status_Port = $5D; { Godbout System Support 1 serial status port }
- Char_Rcvd_Bit = 2; { may be unique to the Signetics 2651 U/SART }
-
- { This is an external function supplied with Pascal MT+ which gives }
- { you a hook into CPM. }
- External Function @BDOS (Func, Parm : integer) : integer;
-
- Function Con_In : char ; { non-echoed input from the console }
-
- Const
- Parm = 255;
-
- Begin { Con_In }
- Con_In := chr(@BDOS(Direct_IO, Parm))
- end ; { Con_In }
-
- Procedure Con_Out (Out_Char : char) ;
-
- Var
- Dummy : integer ;
-
- Begin { Con_Out }
- Dummy := @BDOS(Direct_IO, ord(Out_Char))
- end ; { Con_Out }
-
- Function KeyPressed : Boolean ;
-
- Begin { KeyPressed }
- KeyPressed := Tstbit (Inp[$5D], 1) { Specific to System Support board }
- end ; { KeyPressed }
-
- Function Get_Console : char ; { waits for a single character from the }
- { console. }
- Begin { Get_Console }
- While not KeyPressed do;
- Get_Console := Con_In
- end ; { Get_Console }
-
- Procedure GoToXY (X, Y : integer) ;
-
- Const X_PLAC = 4 ;
- Y_PLAC = 3 ;
- MAX_X = 80 ;
- MAX_Y = 24 ;
- X_OFF = 31 ;
- Y_OFF = 31 ;
-
- Var BUFFER : array [1..4] of char ;
-
- Begin { GoToXY }
- BUFFER [1] := chr(27) ;
- BUFFER [2] := '=' ;
- If X < 1 Then
- BUFFER [X_PLAC] := chr(X_OFF)
- else
- If X > MAX_X then
- BUFFER [X_PLAC] := chr(MAX_X + X_OFF)
- else
- BUFFER [X_PLAC] := chr(X + X_OFF) ;
-
- If Y < 1 then
- BUFFER [Y_PLAC] := chr(Y_OFF)
- else
- If Y > MAX_Y then
- BUFFER [Y_PLAC] := chr(MAX_Y + Y_OFF)
- else
- BUFFER [Y_PLAC] := chr(Y + Y_OFF) ;
-
- Con_Out(Buffer[1]) ;
- Con_Out(Buffer[2]) ;
- Con_Out(Buffer[3]) ;
- Con_Out(Buffer[4])
-
- end ; { GoToXY }
-
- Procedure Home ;
-
- Begin { Home }
- Con_Out (chr($1E))
- end ; { Home }
-
- Procedure ScreenClr ;
-
- Begin { ScreenClr }
- Con_Out (chr(26))
- end ; { ScreenClr }
-
- Procedure LineClr;
-
- Begin { LineClr }
- Con_Out (chr(27));
- Con_Out ('t')
- end; { LineClr }
-
- Procedure Read_Cursor (Var X, Y : integer);
-
- Var
- Discard : char;
-
- begin { Read_Cursor }
- { request cursor coordinates from TeleVideo 912 or 920 }
- ConOut (chr(27));
- ConOut ('?');
- While not KeyPressed do;
- Y := ord(ConIn) - $1F;
- While not KeyPressed do;
- X := ord(ConIn) - $1F;
- While not KeyPressed do;
- Discard := ConIn { this last character is supposed to be a CR }
- end; { Read_Cursor }
-
- ModEnd.
-