|
DataMuseum.dkPresents historical artifacts from the history of: DKUUG/EUUG Conference tapes |
This is an automatic "excavation" of a thematic subset of
See our Wiki for more about DKUUG/EUUG Conference tapes Excavated with: AutoArchaeologist - Free & Open Source Software. |
top - metrics - downloadIndex: T v
Length: 4102 (0x1006) Types: TextFile Names: »vt640vdu.c«
└─⟦52210d11f⟧ Bits:30007239 EUUGD2: TeX 3 1992-12 └─⟦883b7f77d⟧ »dvi2vdu.tar.Z« └─⟦f158c222e⟧ └─⟦this⟧ »dvi2vdu/dvi2vdu-1.1J/src/vt640vdu.c«
/* Original Author: Andrew Trevorrow Implementation: Modula-2 under VAX/UNIX 4.2 BSD Date Started: June, 1986 Description: Implements the InitVT640()procedure that initializes the generic VDU routines and parameters used in DVItoVDU. The VT640 VDU has a Transparent mode in which it behaves like a VT100, but it can also emulate a Tektronix 4010 terminal in which the screen is 1024 pixels wide by 780 pixels high. (The actual resolution of the VT640 screen is 640 by 480 pixels; the appropriate scaling is done automatically.) The bottom left pixel is the point (x=0,y=0). Note that x coordinates increase to the right and y coordinates increase up the screen. DVItoVDU uses a coordinate scheme in which horizontal (=h) coordinates also increase to the right but vertical (=v) coordinates increase DOWN the screen, i.e. the top left pixel on the screen is the point (h=0,v=0). This means that the Tektronix 4010 routines will have to do a simple translation of the vertical coordinates passed by DVItoVDU. This version converted to C and ported to BSD and System V UNIX by some chaps at Kernel Technology up to September 1989. Contact mjh@uk.co.kernel (Mark J. Hewitt) with bug fixes etc. Involved were: Mark J. Hewitt Dave Dixon Marc Hadley */ #include "def.h" static char sccsid[] = "@(#)vt640vdu.c 1.1"; extern Void TEK4010ClearScreen(), TEK4010ShowRectangle(), TEK4010StartGraphics(), TEK4010StartText(), TEK4010ShowChar(), TEK4010LoadFont(); Void VT640MoveToTextLine (); Void VT640ClearTextLine (); Void VT640ClearScreen (); Void VT640ResetVDU (); /******************************************************************************/ void InitVT640 () { /* The dialog region will be the top 4 text lines in VT100 mode: Line 1 = DVI status line, Line 2 = window status line, Line 3 = message line, Line 4 = command line. The window region will be text lines 5 to 24 in VT100 mode. */ DVIstatusl = 1; /* DVItoVDU assumes top text line = 1 */ windowstatusl = 2; messagel = 3; commandl = 4; bottoml = 24; /* also number of text lines on screen */ /* The above values assume the VT640 is in VT100 mode; the following values assume it is emulating a Tektronix 4010. Note that windowv must be given a value using DVItoVDU's coordinate scheme where top left pixel is (0,0). */ windowv = 130; /* approx. height in TEK4010 pixels of 4 text lines i.e. 4 * 780/24 */ windowh = 0; windowht = 780 - windowv; windowwd = 1024; MoveToTextLine = VT640MoveToTextLine; ClearTextLine = VT640ClearTextLine; ClearScreen = VT640ClearScreen; StartText = TEK4010StartText; StartGraphics = TEK4010StartGraphics; LoadFont = TEK4010LoadFont; ShowChar = TEK4010ShowChar; ShowRectangle = TEK4010ShowRectangle; ResetVDU = VT640ResetVDU; } /******************************************************************************/ Void VT640MoveToTextLine (line) unsigned int line; { Write (GS); /* cannot send CAN if VT640 is */ /* already in VT100 mode */ Write (CAN); /* switch to VT100 mode */ MoveAbs (line, 1); } /******************************************************************************/ Void VT640ClearTextLine (line) unsigned int line; { Write (GS); Write (CAN); MoveAbs (line, 1); Write (ESC); WriteString ("[K"); /* erase to end of line */ } /******************************************************************************/ Void VT640ClearScreen () { Write (GS); Write (CAN); Write (ESC); WriteString ("[2J"); /* erase all alphanumerics - need for VIS550! */ TEK4010ClearScreen (); } /******************************************************************************/ Void VT640ResetVDU () { Write (GS); /* cannot send CAN if VT640 is already in VT100 mode */ Write (CAN); /* switch to VT100 mode */ } /******************************************************************************/