08/08/96 - John L. Miller, johnmil@cs.cmu.edu, johnmil@jprc.com FILES INCLUDED: 00readme.txt - this file VT100.H - Definitions for VT-100 emulator. VT100.C - Front end parsing code for VT-100 emulator CONSOLE.C - Back-end code to allow VT-100 in WinNt/Win95 console Many UNIX users take terminals for granted, as something you get for free with the operating system. Unfortunately, this isn't the case for many non-unix operating systems, especially PC-based ones. After a number of projects, I decided it would be nice if there was source publicly available for doing VT-100 emulation. The files included with this distribution are not a complete implementation of VT-100 terminal emulation, but do provide complete enough coverage to use many vt-100 functions over the network. For instance, its enough to use EMACS to edit, or to connect up to your favorite mud with ANSI color and graphics characters. The VT-100 emulator is broken into two parts. The first is the front end, vt100.c and vt100.h. These files were written to be fairly device-independant, though admittedly if you're running under a 16-bit operating system instead of a 32-bit, you might need to change some of the 'int' values to 'long.' Otherwise, it should work 'as-is'. The second part is a back-end. The back-end is responsible for doing the workhorse activities. The front-end parses a character stream, and decides whether to clear a part of the screen, or move the cursor, or switch fonts. Then it calls routines in the back-end to perform these activities. The back-end functions are, for the most part, very straight forward, and quite easy to implement compared to writing a vt-100 emulator from scratch. CONSOLE.C is a back-end for use in console (command, dos) windows under Windows 95 and Windows NT. This console vt-100 emulator is also being used in my TINTIN-III port and kerberized encrypted telnet port. TO USE THIS VT-100 EMULATOR: First, it's intended to be linked directly into source code. You'll need to change printf's and puts' in your source code to call vtprintf() and vtputs() instead. You can add additional functions to vt100.c as you see fit to handle other output functions like putchar() and write(). Another routine you may want to use is vtProcessedTextOut(), which accepts a buffer to output, and a count of characters in that buffer. Second, you need to make sure that your source code calls vtInitVT100() before it does ANYTHING else. This initializes the vt-100 emulator. Third, if you want to use this VT-100 emulator with anything besides Windows NT and Windows 95 consoles, you'll need to implement your own back end. The list of functions you will need to supply, as well as what they need to do is contained in vt100.h. The list (minus descriptions) is as follows: int beInitVT100Terminal(); int beAbsoluteCursor(int row, int col); int beOffsetCursor(int row, int column); int beRestoreCursor(void); int beSaveCursor(void); int beSetTextAttributes(int fore, int back); int beRawTextOut(char *text, int len); int beEraseText(int rowFrom, int colFrom, int rowTo, int colTo); int beDeleteText(int rowFrom, int colFrom, int rowTo, int colTo); int beInsertRow(int row); int beTransmitText(char *text, int len); int beAdvanceToTab(void); int beClearTab(int col); int beSetScrollingRows(int fromRow, int toRow); int beRingBell(void); int beGetTermMode(); int beSetTermMode(int newMode); For details on what each of these does, read the descriptions of each function included in vt100.h, and read over CONSOLE.C for examples. I've included copious comments in all of these files to try to make them as easy to use as possible. In any case, it should be easier than writing a VT-100 emulator from scratch. KNOWN BUGS - o Many features of VT-100 emulation aren't implemented. This includes support for graphics character set 0 and many of the answerback functions. Well, good luck!