forrest@CSA4.LBL.GOV (07/14/88)
....................... Cut between dotted lines and save ...................... $!.............................................................................. $! VAX/VMS archive file created by VMS_SHAR V-4.03 05-Aug-1987 $! which was written by Michael Bednarek (U3369429@ucsvc.dn.mu.oz.au) $! To unpack, simply save and execute (@) this file. $! $! This archive was created by FORREST $! on Wednesday 13-JUL-1988 12:08:34.91 $! $! ATTENTION: To keep each article below 15872 bytes, this program $! has been transmitted in 2 parts. $! You should concatenate ALL parts to ONE file and execute (@) that file. $! $! It contains the following 3 files: $! README.TC2TT TC2TT.C TABLE.H $!============================================================================== $ Set Symbol/Scope=(NoLocal,NoGlobal) $ Version=F$GetSYI("VERSION") ! See what VMS version we have here: $ If Version.ges."V4.4" then goto Version_OK $ Write SYS$Output "Sorry, you are running VMS ",Version, - ", but this procedure requires V4.4 or higher." $ Exit 44 $Version_OK: CR[0,8]=13 $ Pass_or_Failed="failed!,passed." $ Goto Start $Convert_File: $ Read/Time_Out=0/Error=No_Error1/Prompt="creating ''File_is'" SYS$Command ddd $No_Error1: Define/User_Mode SYS$Output NL: $ Edit/TPU/NoSection/NoDisplay/Command=SYS$Input/Output='File_is' - VMS_SHAR_DUMMY.DUMMY f:=Get_Info(Command_Line,"File_Name");b:=Create_Buffer("",f); o:=Get_Info(Command_Line,"Output_File");Set (Output_File,b,o); Position (Beginning_of(b));Loop x:=Erase_Character(1); Loop ExitIf x<>"V"; Move_Vertical(1);x:=Erase_Character(1);Append_Line;Move_Horizontal (-Current_Offset);EndLoop;Move_Vertical(1);ExitIf Mark(None)=End_of(b) EndLoop;Exit; $ Delete VMS_SHAR_DUMMY.DUMMY;* $ Checksum 'File_is $ Success=F$Element(Check_Sum_is.eq.CHECKSUM$CHECKSUM,",",Pass_or_Failed)+CR $ Read/Time_Out=0/Error=No_Error2/Prompt=" CHECKSUM ''Success'" SYS$Command ddd $No_Error2: Return $Start: $ File_is="README.TC2TT" $ Check_Sum_is=1633702059 $ Copy SYS$Input VMS_SHAR_DUMMY.DUMMY XThis is the beta test version of a program that attempts to convert a XUnix "termcap" file into a VMS TERMTABLE.TXT file. Two output files Xare produced, a file called TERMTABLE.TXT containing SMG equivalents Xof what was found in termcap, and a file called ERRLOG. containing Xinformation about things TC2TT wasn't able to do. It is important Xthat ERRLOG. be examined after running TC2TT to see what happened. XDEC recommends, and I concur, that only terminals actually in use Xat a site be kept in TERMTABLE.TXT. This requires that someone Xedit TERMTABLE.TXT before the SMGBLDTRM program is run. X XThe task of converting termcap into TERMTABLE.TXT is made difficult by Xseveral factors. X X1) There is no real standard for termcap files. In the process Xof writing this program I have found termcap entries that don't Xfollow the TERMCAP(5) manual page. My guess is that such entries Xare fixed when the terminal with the errant entry Xappears at the site. This program makes an attempt to diagnose Xabnormal entries but no claim is made that this effort will Xalways succeed. X X2) Although the VMS documentation does a reasonable job at explaining Xthe contents of a TERMTABLE.TXT file, several key areas are ignored. XFor example, DEC doesn't allow '-' or '+' characters in terminal names Xalthough I couldn't find any specific mention of this restriction. XSince these characters are used in many places in termcap something Xhad to be done. My choice was to convert the '-' to '_' and to Xconvert '+' into the string 'plus'. I hope this is the right thing Xto do. X X3) More serious is the fact that strings in TERMTABLE.TXT can't be Xlonger than 128 characters isn't documentated. This is a problem Xbecause also not documented is the fact that if a string capability Xappears more than once in a terminal description, the second string Xdefinition is appended to the first definition. In the termcap file XI used to test TC2TT there are several termcap entries that result Xin more than one INIT_STRING capability, with a total length of over X128 characters. Such problems show up as a "expression too complex" Xerror message from SMGBLDTRM. This problem could be solved by keeping Xtrack of whether a capability has already been used and, if so, ignoring Xany subsequent usage. X X4) Termcap and curses assume a top left origin of (0,0) whereas XSMG uses (1,1). Given that DEC VTxxx family terminals also use Xa (1,1) origin this isn't too surprising. Termcap handles this Xproblem by using the "%i" construct, which adds 1 to both the line Xand column values being sent to the terminal. In order to work with Xterminals with (0,0) origins, SMG entries must subtract 1 from the Xline and column values sent to terminals. This is why some entries Xin the TERMTABLE.TXT file produced by TC2TT have SET_CURSOR_ABS Xstrings containing expressions with -1. X X5) In many cases DEC ignores capabilities that are expressed in termcap. XIn these cases TC2TT outputs a message into the errorlog file. XOne good example is the "%2d" type of construct in termcap. XThis is used, for example, when an integer is being sent to a terminal. XApparently, some terminal only want to receive 2 digits, and Xno more. Although the SYS$FAO system service allows constructs Xsuch as !2UL, the SMGBLDTRM program generates a XXX error message. X X6) One very annoying problem is that SMGBLDTRM tries to parse strings Xin all string capabilities. This sometimes causes a problem with XINIT_STRING capabilities containing any of the arithmetic expression Xcharacters. The end result of this is that any such string Xis seen as an overly complex expression by SMGBLDTRM. XTo avoid this I insert the escape character '_' in front Xof any such characters. X XTC2TT doesn't handle single termcap capabilities that extend over lines Xyet. The best example of this is the entry for tvi950-style terminals. XThis will be fixed in the next release. For the time being, edit Xyour termcap file to keep all multi-line capabilities on one line. X XAnother problem is that I have done very little to verify that Xthe output of TC2TT is correct. Most terminals at my disposal Xare some variant of ANSI-compatible. I don't have access to any of the Xolder, more bizarre terminals so I have no idea if TC2TT-generated Xdefinition really work. Please keep me informed about this. X XRestrictions: X XTC2TT doesn't support the %n, %D, %>, and %B cursor addressing modes. XWarning are written to errlog. if these are used. If these modes Xare actually needed I'll consider adding them. X XNo check is made to insure that strings are no longer than 256 Xcharacters, which is the maximum allowed by the 'ex/vi' editor. XThe requirements of this editor govern the sizes of termcap. X XOnly one level of indirection is supported for the "tc" capability. X XGiven all these conditions, I recommend that you use this first Xversion of TC2TT as an imperfect tool. You may find problems. XIf you find that SMGBLDTRM doesn't accept a line generated Xby TC2TT, look at the termcap file you used for input. In my experience X99% of such problems are caused by errors in the termcap file. If Xthis is the case, edit your TERMTABLE.TXT file to remove all entries that Xaren't acceptable to SMGBLDTRM. If you believe you've found a bug Xplease send me both the entry from the termcap file that caused Xthe error and the output generated by SMGBLDTRM. (Please don't send me Xthe whole termcap file). X XI would like to know about any problems you find. It is my goal Xto improve TC2TT to the point where it handles all but the most Xobstinate termcap entries. The next version will incorporate any Xbug fixes resulting from this beta release as well as a true Xman page. X XJon Forrest XFORREST@LBL.GOV Xucbvax!lbl-csam!ux1!forrest X415-486-4991 $ GoSub Convert_File $ Goto Part2