[ GTermix ]
( home - download - screenshots - about TextFX - contact )

About TextFX

TextFX is a VGA textmode terminal extender targetted at BBSes. TextFX supports many extensions to emulations like ANSI such as VGA palette and font manipulation, window scrolling, and palette morphing. Aside from these extensions, the protocol itself is also more efficient than ANSI in that BBS graphics will typically take up fewer bytes for the escape sequences.

TextFX was originally created by Mike Fricker for Iniquity BBS Software (for DOS and OS/2). TextFX never really took off, probably due to the fact that it was released rather late in the life of active dial-up BBSes, and also because the only terminal that supported the emulation was Iniquity's own.

gtermix includes a TextFX demo under the "Help" menu which demonstrates some of its capabilities.

Screenshot: gtermix displaying a TextFX graphic with VGA textmode emulation


 TextFX - VGA textmode terminal extender, by Mike Fricker

 Specification revision 2.0

 Revision History:
    2.0 - cursor hiding/showing commands added (Nate Case)

 Based on the ANSI/2 specification by Hooptie

 Programmer's notes:
    each sequence begins with an  character (27h)
    all values are of 1 byte each (not ascii)
    all command characters are case-sensitive
    all screen position values are 1-based (x:1, y:1 is the top-left pos)
    ^Z (eof) characters must be ignored; wait for a real eof
    initial default text attribute = 07h
    high intensity backgrounds always enabled, no blinking in tfx
    user palette default to all-black initially
    setting new screen window resets coords to x:1, y:1

 code syntax:  [parameters...]

 a      - move cursor up 1 row
 Ax     - move cursor up x rows
 b      - move cursor down 1 row
 Bx     - move cursor down x rows
 Cx     - move cursor right x columns
 c      - move cursor right 1 column
 Dx     - move cursor left x columns
 d      - move cursor left 1 column
 E      - environment request, returns: "ENV" (ends w/ a null)
 Fp..   - set new text font, p is a 4096 byte packet of font data
 Gclx.. - set font for range of chars, c = 1st char; l = #chars; x = font data
 h      - home cursor (move to 1, 1)
 Hxy    - move cursor to screen position x, y
 i      - restore last saved color attribute
 I      - save current color attribute
 j      - clear text window with default text attribute (07h)
 J      - clear text window with current attribute
 k      - clear from cursor to end of line with default text attribute (07h)
 K      - clear from cursor to end of line with current attribute
 lx     - set default color attribute to x (00h-FFh)
 Mx     - set current color attribute to x (00h-FFh)
 n      - turn the cursor off [hide]
 N      - turn the cursor on [show]
 px     - change to color palette x (ascii x is the palette buffer, see below)
 Prgb.. - set color palette,  64 r/g/b (0-63) trios (192 bytes exactly)
 Qx     - save current palette in user-palette buffer x (1-3)
 rcx    - write character c x-number of times in current attribute
 Rcrgb  - set palette register c (0-255) to specified r/g/b (0-63) values
 s      - restore last saved cursor position
 S      - save cursor position
 t      - scroll window down once, top row cleared w/ current attribute
 Tx     - scroll window down x lines, top row cleared w/ current attribute
 u      - scroll window up once, bottom row cleared w/ current attribute
 Ux     - scroll window up x lines, bottom row cleared w/ current attribute
 V      - textFX version request, returns: "TFXv" (v = textFX ver# byte)
 Wabxy  - defines window; a,b = upper left; x,y = lower right, homes cursor
 Xfts   - morph palette from f to t (see below) in s (byte) number of steps
 zwfp   - partial reset; w(window), f(font) and p(palette) = 0 or 1 (yes/no)
 Z      - reset console (resets attr, screen, palette, font and window cords)

 predefined color palettes (ascii):
    A  all-white palette
    B  all-black palette
    C  current palette
    D  default textmode palette
    E  greyscale palette
    1  user-palette #1
    2  user-palette #2
    3  user-palette #3

SourceForge Logo