Displaying Mathematics on the VT340

July 8, 2023 · View on GitHub

The VT340 can display the DEC Technical Character Set, which contains Greek letters, mathematical symbols, and logical symbols. Additionally, it contains characters that may be used to construct larger mathematical symbols, such as large integral and summation signs.


The whole is greater than the summation of its parts.


Also see dectech.c, a program that shows a table of the DEC Technical Character Set and its output, dectech.vt which can be sent to a terminal such as the VT340 using cat.

    dectech

Basic usage from a programmer's perspective:

Until someone [hackerb9?] writes a proper locale charmap so that Unicode can be automatically translated into the DEC Technical Character Set, these characters will not be available to most users without a specialized program. However, programmers can display them easily:

  1. Assign the DEC Technical Set to "G3" via SCS (Select Character Set).

    Esc+>

  2. Every time you want to print a mathematical character, first send SS3 to temporarily shift to G3...

    EscO

  3. And then send an ASCII character from one of the tables below to choose a symbol.

    @ → ∴ (Therefore)

Slightly more detail

1. Assign the DEC Tech character set to G3

Esc+>

You can actually set any of over a dozen different character sets to four different translation tables: G0, G1, G2, and G3.

    Character SetG0G1G2G3
    U.S. ASCIIESC(BESC)BESC*BESC+B
    DEC TechnicalESC(>ESC)>ESC*>ESC+>
    VT100 GraphicsESC(0ESC)0ESC*0ESC+0
    DEC SupplementalESC(<ESC)<ESC*<ESC+<

2. Send SS3 (non-locking shift to G3)

Renders next character using G3: EscO

    NameMnemonicSequenceHexFunction
    Single Shift 3SS3ESC O1B 4FUse G3 character set just for the next character.

Locking-shifts are also available, see the charset README.

3. Send an ASCII character to display a mathematical character

Display the ∴ symbol: @

    HexASCIINameSymbol
    40@Therefore

The full tables of symbols can be found below.

Notes

  • Position reserved for future standardization in the DEC technical set are shown as the error character ␦ (reverse question mark) both on the screen and in print.

  • Component characters are imaged so that adjacent component characters form connected lines at all pitches.

  • DEC compatible printers work the same way as terminals and use the same escape sequences to access different character sets.

DEC Technical Character Set Tables

The following tables are taken mostly from the "Printronix LG Programmers Manual", with corrections, and using Unicode characters found at https://vt100.net/charsets/technical.html.

Individual Technical Characters

Greek

    HexASCIINameSymbolUnicode
    44DUppercase DeltaΔ0x0394
    46FUppercase PhiΦ0x03A6
    47GUppercase GammaΓ0x0393
    4AJUppercase ThetaΘ0x0398
    4CLUppercase LambdaΛ0x039B
    50PUppercase PiΠ0x03A0
    51QUppercase PsiΨ0x03A8
    53SUppercase SigmaΣ0x03A3
    57WUppercase OmegaΩ0x03A9
    58XUppercase KsiΞ0x039E
    59YUppercase UpsilonΥ0x03A5
    61aLowercase Alphaα0x03B1
    62bLowercase Betaβ0x03B2
    63cLowercase Chiχ0x03C7
    64dLowercase Deltaδ0x03B4
    65eLowercase Epsilonε0x03B5
    66fLowercase Phiφ0x03C6
    67gLowercase Gammaγ0x03B3
    68hLowercase Etaη0x03B7
    69iLowercase Iotaι0x03B9
    6AjLowercase Thetaθ0x03B8
    6BkLowercase Kappaκ0x03BA
    6ClLowercase Lambdaλ0x03BB
    6EnLowercase Nuν0x03BD
    70pLowercase Piπ0x03C0
    71qLowercase Psiψ0x03C8
    72rLowercase Rhoρ0x03C1
    73sLowercase Sigmaσ0x03C3
    74tLowercase Tauτ0x03C4
    77wLowercase Omegaω0x03C9
    78xLowercase Xiξ0x03BE
    79yLowercase Upsilonυ0x03C5
    7AzLowercase Zetaζ0x03B6

Mathematical

    HexASCIINameSymbolUnicode
    3C<Less Than or Equal To0x2264
    3D=Not Equal0x2260
    3E>Greater Than or Equal To0x2265
    3F?Integral0x222B
    41AVariation or Proportional To0x221D
    42BInfinity0x221E
    43CDivision or Divided By÷0xF7
    45ENabla or Del0x2207
    48HIs Approximate To0x223C
    49ISimilar or Equal To0x2243
    4BKTimes or Cross Product×0xD7
    56VRadical0x221A
    6FoPartial Derivative0x2202
    76vFunctionƒ0x0192
    7B{Left Arrow0x2190
    7C|Upward Arrow0x2191
    7D}Right Arrow0x2192
    7E~Downward Arrow0x2193

Logic

    HexASCIINameSymbolUnicode
    40@Therefore0x2234
    4DMIf and Only If0x21D4
    4ENImplies0x21D2
    4FOIdentical To0x2261
    5AZIs Included In0x2282
    5B[Includes0x2283
    5C\Intersection0x2229
    5D]Union0x222A
    5E^Logical And0x2227
    5F_Logical Or0x2228
    60`Logical Not¬0xAC

Building Large Mathematical Symbols

This table shows how to build large mathematical symbols. The characters are designed to connect to adjacent character cells to form technical characters that can occupy several vertically adjacent and/or horizontally adjacent character positions. To use this table, find the character you want to build (along the top of the table). On the left side of the table are various pieces of the characters needed to create the whole. Follow the top row choice, say, INTEGRAL, all the way down the table. Use the hex value beside the symbol name you wish to print. For example, to build an oversize integral, you will need a top integral (hex 24), bottom integral (hex 25), and vertical connector (hex 26).

    Component Characters for Large Mathematics

    HexASCIINameSymbolUnicode
    RADICAL

    INTEGRAL
    SQUARE
    BRACKETS
    CURLY
    BRACES
    PAREN-
    THESES
    SUM-
    MATION
    21!Left Radical0x23B7X
    22"Top Left Radical0x250CX
    23#Horizontal Connector0x2500XX
    24$Top Integral0x2320X
    25%Bottom Integral0x2321X
    26&Vertical Connector0x2502XXXXX
    27'Top Left Square Bracket0x23A1X
    28(Bottom Left Square Bracket0x23A3X
    29)Top Right Square Bracket0x23A4X
    2A*Bottom Right Square Bracket0x23A6X
    2B+Top Left Parenthesis0x239BXX
    2C,Bottom Left Parenthesis0x239DXX
    2D-Top Right Parenthesis0x239EXX
    2E.Bottom Right Parenthesis0x23A0XX
    2F/Left Middle Curly Brace0x23A8X
    300Right Middle Curly Brace0x23ACX
    311Top Left SummationX
    322Bottom Left SummationX
    333Top Vertical Summation ConnectorX
    344Bottom Vertical Summation ConnectorX
    355Top Right SummationX
    366Bottom Right SummationX
    377Right Middle SummationX

    ␦ marks characters which Unicode (as of 2023) is unable to reproduce, namely the large summation character. Note that Unicode has summation top (⎲) and bottom (⎳) characters, but those are insufficient even for the simplest mathematics. In contrast, DEC's sigma can grow arbitrarily large in either axis which means it can be centered vertically with the equation to its right and properly span the initial state (e.g., i=i=-∞) beneath it.

One can see a sample of the mathematical symbols at different sizes by catting the file components.vt to a VT340.

Screenshot of a VT340 showing various large mathematical symbols made from smaller characters