Annotation of 43BSDReno/share/doc/smm/20.termdesc/termdesc.me, revision 1.1

1.1     ! root        1: .\"    @(#)termdesc.me 6.2 (Berkeley) 5/20/86
        !             2: .\"
        !             3: .+c
        !             4: .(l C
        !             5: .sz 14
        !             6: .b "Writing \s-2NROFF\s0 Terminal Descriptions"
        !             7: .sp
        !             8: .sz 10
        !             9: Eric Allman
        !            10: .i "Britton-Lee, Inc."
        !            11: .)l
        !            12: .sp 2
        !            13: .sh 1 "INTRODUCTION"
        !            14: .eh 'SMM:20-%''Writing NROFF Terminal Descriptions'
        !            15: .oh 'Writing NROFF Terminal Descriptions''SMM:20-%'
        !            16: .pp
        !            17: As of the Version 7 Phototypesetter release of \s-2UNIX\s0,*
        !            18: .(f
        !            19: *\s-2UNIX\s0 is a trademark of Bell Laboratories.
        !            20: .)f
        !            21: \s-2NROFF\s0 has supported terminal description files.
        !            22: These files describe the characteristics of available hard-copy printers.
        !            23: This document describes some of the details of how to write
        !            24: terminal description files.
        !            25: .pp
        !            26: .ul
        !            27: Disclaimer.
        !            28: This document describes the results of my personal experience.
        !            29: The effects of changing some of the fields from the norms
        !            30: may not be well defined,
        !            31: even if it seems like it
        !            32: .q ought
        !            33: to work given the descriptions herein.
        !            34: These tables are known to vary slightly
        !            35: for different versions of \s-2UNIX\s0.
        !            36: I have not seen \s-2UNIX\s0 3.0 at this time,
        !            37: so this may be irrelevant in that context.
        !            38: .sh 1 "GENERAL"
        !            39: .pp
        !            40: When \s-2NROFF\s0 starts up,
        !            41: it looks for a
        !            42: .b \-T
        !            43: flag describing the terminal type.
        !            44: For example,
        !            45: if the command line is given as
        !            46: .(b
        !            47: nroff \-T300s
        !            48: .)b
        !            49: \s-2NROFF\s0 prepares output for a
        !            50: .i DTC300S
        !            51: terminal.
        !            52: This terminal is described in the file
        !            53: /usr/lib/term/tab300s
        !            54: on most systems.
        !            55: .pp
        !            56: If no
        !            57: .b \-T
        !            58: flag is given,
        !            59: the terminal type
        !            60: .b 37
        !            61: (ASR 37 \*- a relic assumed for historical humor only)
        !            62: is assumed.
        !            63: .pp
        !            64: The terminal description table is a stripped
        !            65: .q \&.o
        !            66: file generated from a data structure,
        !            67: shown in figure one.
        !            68: .(z
        !            69: .hl
        !            70: .ta 8n 24n
        !            71: #define INCH 240       /* one inch in units */
        !            72: struct
        !            73: {
        !            74:        int bset;       /* stty bits to set */
        !            75:        int breset;     /* stty bits to reset */
        !            76:        int Hor;        /* horizontal resolution in units */
        !            77:        int Vert;       /* vertical resolution in units */
        !            78:        int Newline;    /* the distance a newline moves */
        !            79:        int Char;       /* the distance one char moves */
        !            80:        int Em; /* size of an Em */
        !            81:        int Halfline;   /* the distance a halfline up/down moves */
        !            82:        int Adj;        /* default adjustment width */
        !            83:        char *twinit;   /* string to init the terminal */
        !            84:        char *twrest;   /* string to reset the terminal */
        !            85:        char *twnl;     /* string to send a newline (CR-LF) */
        !            86:        char *hlr;      /* half line reverse string */
        !            87:        char *hlf;      /* half line forward string */
        !            88:        char *flr;      /* full line reverse string */
        !            89:        char *bdon;     /* string to turn boldface on */
        !            90:        char *bdoff;    /* string to turn boldface off */
        !            91:        char *ploton;   /* string to turn plot on */
        !            92:        char *plotoff;  /* string to turn plot off */
        !            93:        char *up;       /* move up in plot mode */
        !            94:        char *down;     /* move down in plot mode */
        !            95:        char *right;    /* move right in plot mode */
        !            96:        char *left;     /* move left in plot mode */
        !            97:        char *codetab[256-32];  /* the codes to send for characters */
        !            98:        int zzz;        /* padding */
        !            99: };
        !           100: .sp
        !           101: .ce
        !           102: Figure 1 \*- the terminal descriptor data structure
        !           103: .hl
        !           104: .)z
        !           105: This structure can be dealt with in two sections:
        !           106: the terminal capability descriptor (everything to codetab),
        !           107: and the output descriptor.
        !           108: .sh 1 "TERMINAL CAPABILITIES"
        !           109: .pp
        !           110: The section of the data structure up to but excluding
        !           111: .i codetab
        !           112: describes the basic functions and setup requirements of the terminal.
        !           113: Distances are measured in
        !           114: .q units,
        !           115: which are 1/240 of an inch in \s-2NROFF\s0.
        !           116: In general, \s-2NROFF\s0 assumes that there is a
        !           117: .q "plot mode"
        !           118: on the terminal that allows you to move in small increments.
        !           119: A terminal has a resolution when in plot mode
        !           120: that is measured in units.
        !           121: This limits how well the terminal can simulate
        !           122: printing Greek and special characters.
        !           123: .sh 2 "bset, breset"
        !           124: .pp
        !           125: These fields define bits in a vanilla stty(2) word
        !           126: (sg_flags) to
        !           127: set and clear respectively when
        !           128: \s-2NROFF\s0 starts.
        !           129: They are normally represented in octal,
        !           130: although you could include <sgtty.h>.
        !           131: [Note:
        !           132: these fields are presumably different
        !           133: in \s-2UNIX\s0 3.0.]
        !           134: .sh 2 "Hor, Vert"
        !           135: .pp
        !           136: These represent the horizontal and vertical resolution respectively
        !           137: of the terminal when it is in plot mode.
        !           138: They are given in units.
        !           139: .sh 2 "Newline"
        !           140: .pp
        !           141: This field describes the distance that the
        !           142: .i twnl
        !           143: field (below) will move the paper;
        !           144: it is literally the size of a newline.
        !           145: .sh 2 "Char"
        !           146: .pp
        !           147: This is the distance that a regular character
        !           148: will move the print head to the right.
        !           149: .sh 2 "Em"
        !           150: .pp
        !           151: The
        !           152: .q em
        !           153: is a typesetting unit,
        !           154: approximately equal to the width of the letter
        !           155: .q m .
        !           156: In \s-2NROFF\s0 driver tables,
        !           157: this must be the distance a space or backspace character will move
        !           158: the carriage.
        !           159: .sh 2 "Halfline"
        !           160: .pp
        !           161: This is the distance that the
        !           162: .i hlr
        !           163: or
        !           164: .i hlf
        !           165: strings move the print head
        !           166: (reverse or forward respectively).
        !           167: .sh 2 "Adj"
        !           168: .pp
        !           169: This is the resolution that \s-2NROFF\s0 will normally adjust
        !           170: your lines to horizontally.
        !           171: Typically this is the same as Char.
        !           172: If the
        !           173: .b \-e
        !           174: flag is given to \s-2NROFF\s0,
        !           175: output resolution will be to the full device resolution.
        !           176: .sh 2 "twinit, twrest"
        !           177: .pp
        !           178: These strings are output when \s-2NROFF\s0 starts and finishes
        !           179: respectively.
        !           180: .sh 2 "twnl"
        !           181: .pp
        !           182: This string is output when \s-2NROFF\s0 wants to do a carriage return.
        !           183: Typically it will be
        !           184: .q "\er\en" .
        !           185: Remember,
        !           186: the terminal will normally have CRMOD turned off
        !           187: when this is set.
        !           188: .sh 2 "hlr, hlf"
        !           189: .pp
        !           190: These strings are sent to move the carriage back or forward
        !           191: one half line respectively.
        !           192: The actual amount that they moved is defined by
        !           193: Halfline.
        !           194: The carriage should be left in the same column.
        !           195: .sh 2 "flr"
        !           196: .pp
        !           197: The string to send to move a full line backwards.
        !           198: This should leave the carriage in the same column.
        !           199: .sh 2 "bdon, bdoff"
        !           200: .pp
        !           201: These strings are sent to turn boldface mode on and off
        !           202: respectively.
        !           203: Normally this will set the terminal into overstrike mode.
        !           204: If they are not given,
        !           205: some newer versions of \s-2NROFF\s0 will output the characters
        !           206: four times to force overstriking.
        !           207: .sh 2 "ploton, plotoff"
        !           208: .pp
        !           209: These strings turn plot mode on and off respectively.
        !           210: In plot mode,
        !           211: the carriage moves a very small amount,
        !           212: and only under specific control;
        !           213: i.e., characters do not automatically cause any carriage motion.
        !           214: .sh 2 "up, down, right, left"
        !           215: .pp
        !           216: These strings are only output in plot mode.
        !           217: They should move the carriage up, down, left, and right
        !           218: respectively;
        !           219: they will move the carriage a distance of Hor or Vert
        !           220: as appropriate.
        !           221: .sh 2 "An Example"
        !           222: .pp
        !           223: Consider the following table describing a
        !           224: DTC300S:
        !           225: .(b
        !           226: .ta 1.5i
        !           227: /*bset*/       0,
        !           228: /*breset*/     0177420,
        !           229: /*Hor*/        INCH/60,
        !           230: /*Vert*/       INCH/48,
        !           231: /*Newline*/    INCH/6,
        !           232: /*Char*/       INCH/10,
        !           233: /*Em*/ INCH/10,
        !           234: /*Halfline*/   INCH/12,
        !           235: /*Adj*/        INCH/10,
        !           236: /*twinit*/     "\e033\e006",
        !           237: /*twrest*/     "\e033\e006",
        !           238: /*twnl*/       "\e015\en",
        !           239: /*hlr*/        "\e033H",
        !           240: /*hlf*/        "\e033h",
        !           241: /*flr*/        "\e032",
        !           242: /*bdon*/       "",
        !           243: /*bdoff*/      "",
        !           244: /*ploton*/     "\e006",
        !           245: /*plotoff*/    "\e033\e006",
        !           246: /*up*/ "\e032",
        !           247: /*down*/       "\en",
        !           248: /*right*/      " ",
        !           249: /*left*/       "\eb",
        !           250: .)b
        !           251: This describes a terminal that should have the
        !           252: ALLDELAY and CRMOD bits turned off,
        !           253: 1/60" horizontal and 1/48" vertical resolution,
        !           254: six lines per inch and ten characters per inch, including space,
        !           255: halfline takes 1/12" (one half of a full line),
        !           256: should send ESC-control-F to initialize and reset the terminal
        !           257: (to insure that it is in a normal state),
        !           258: takes <CR><LF> to give a newline,
        !           259: <ESC>H to move back one half line,
        !           260: <ESC>h to move forward one half line,
        !           261: control-Z to move back one full line,
        !           262: has no bold mode,
        !           263: takes control-F to enter plot mode
        !           264: and escape-control-F to exit plot mode,
        !           265: and uses control-Z, linefeed, space, and backspace
        !           266: to move up, down, right, and left respectively
        !           267: when in plot mode.
        !           268: .sh 1 "CHARACTER DESCRIPTIONS"
        !           269: .pp
        !           270: There is one character description
        !           271: for each possible character to be output.
        !           272: The easiest way to find what character corresponds to what position
        !           273: is to edit an existing character table;
        !           274: one is given in the appendix as an example.
        !           275: Character representations are represented as a string per
        !           276: character.
        !           277: .pp
        !           278: The first character of the string
        !           279: is interpreted as a binary number
        !           280: giving the number of character spaces taken up
        !           281: by this character.
        !           282: For regular characters
        !           283: this will always be
        !           284: .q "\e001" ,
        !           285: but Greek and special characters can take more.
        !           286: If the 0200 bit is set in this character,
        !           287: it indicates that the character should be underlined
        !           288: if we are in italic (underline) mode.
        !           289: Thus,
        !           290: alphabetic and numeric descriptions
        !           291: will begin
        !           292: .q "\e201" .
        !           293: .pp
        !           294: The remainder of the string is output to represent the character.
        !           295: If the first output character
        !           296: (i.e.,
        !           297: the second character in the total string)
        !           298: has the 0200 bit set,
        !           299: the character will be output in plot mode
        !           300: so that fancy characters can be built up from existing characters.
        !           301: If necessary,
        !           302: the
        !           303: .q "\e200"
        !           304: character can be used as a null character
        !           305: to force \s-2NROFF\s0 to set the terminal into plot mode.
        !           306: All characters without the 0200 bit are output literally;
        !           307: characters with the 0200 bit are not output,
        !           308: but are used to indicate local carriage movement.
        !           309: The next two bits (0140 bits) represent direction:
        !           310: .(b
        !           311: .ta \w'0200  'u
        !           312: 0200   right
        !           313: 0240   left
        !           314: 0300   down
        !           315: 0340   up
        !           316: .)b
        !           317: The bottom five bits represent a distance in terminal resolution units.
        !           318: This is rather confusing,
        !           319: but the examples should make this much more clear.
        !           320: .sh 2 "Some Examples"
        !           321: .pp
        !           322: The following examples are from the DTC300S table:
        !           323: .(b
        !           324: .ta 2i
        !           325: "\e001 ",      /*space*/
        !           326: "\e001=",      /*=*/
        !           327: "\e201A",      /*A*/
        !           328: .)b
        !           329: These entries show that all of these characters
        !           330: take one character width when output.
        !           331: The letter A is underlined in italic mode,
        !           332: but neither space nor equal sign is.
        !           333: .(b
        !           334: .ta 2i
        !           335: "\e001o\eb+",  /*bullet*/
        !           336: "\e002[]",     /*square*/
        !           337: "\e202f\^i",   /*f\^i*/
        !           338: .)b
        !           339: The bullet character takes only one character position,
        !           340: but is created by outputing the letter
        !           341: .q o
        !           342: and overstriking it with a plus sign.
        !           343: The square character is approximated
        !           344: with two brackets;
        !           345: it takes two full character positions
        !           346: when output.
        !           347: The
        !           348: .q fi
        !           349: ligature
        !           350: is produced using the letters
        !           351: .q f
        !           352: and
        !           353: .q i
        !           354: (surprise!);
        !           355: it is underlined in italic mode.
        !           356: .(b
        !           357: "\e001\e241c\e202(\e241", /*alpha*/
        !           358: "\e001\e200B\e242\e302|\e202\e342", /*beta*/
        !           359: .)b
        !           360: The letters alpha and beta both take a single character position.
        !           361: The alpha is output by entering plot mode,
        !           362: moving left 1 terminal unit (1/60" if you recall),
        !           363: outputing the letter
        !           364: .q c ,
        !           365: moving right 2/60",
        !           366: outputing a left parenthesis,
        !           367: and finally moving left 1/60";
        !           368: it is critical that the net space moved
        !           369: be zero both horizontally and vertically.
        !           370: The beta first has a dummy 0200 character
        !           371: to enter plot mode but not output anything.
        !           372: It then outputs a
        !           373: .q B ,
        !           374: moves left 2/60",
        !           375: moves down 2/48",
        !           376: outputs a vertical bar
        !           377: (which is designed to partically overstrike the left edge of the
        !           378: .q B ,
        !           379: and finally move right 2/60" and up 2/48"
        !           380: to set us back to the right place.
        !           381: .sh 1 "INSTALLATION"
        !           382: .pp
        !           383: To install a terminal descriptor,
        !           384: make it up by editing an existing terminal descriptor.
        !           385: Assuming your terminal name is
        !           386: .i term ,
        !           387: call your new descriptor
        !           388: .b tab \c
        !           389: .i term \c
        !           390: .b .c .
        !           391: Then, execute the following commands:
        !           392: .(b
        !           393: cc -c tabterm.c
        !           394: strip tabterm.c
        !           395: cp tabterm.o /usr/lib/term/tabterm
        !           396: .)b
        !           397: The directory /usr/src/cmd/troff/term
        !           398: typically has a shell file to do this.
        !           399: .+c
        !           400: .ce 2
        !           401: APPENDIX
        !           402: .sp
        !           403: A Sample Table
        !           404: .sp 3
        !           405: This table describes the DTC 300S.
        !           406: .(l
        !           407: .re
        !           408: #define INCH 240
        !           409: /*
        !           410: DASI300S
        !           411: nroff driving tables
        !           412: width and code tables
        !           413: */
        !           414: 
        !           415: struct {
        !           416:        int bset;
        !           417:        int breset;
        !           418:        int Hor;
        !           419:        int Vert;
        !           420:        int Newline;
        !           421:        int Char;
        !           422:        int Em;
        !           423:        int Halfline;
        !           424:        int Adj;
        !           425:        char *twinit;
        !           426:        char *twrest;
        !           427:        char *twnl;
        !           428:        char *hlr;
        !           429:        char *hlf;
        !           430:        char *flr;
        !           431:        char *bdon;
        !           432:        char *bdoff;
        !           433:        char *ploton;
        !           434:        char *plotoff;
        !           435:        char *up;
        !           436:        char *down;
        !           437:        char *right;
        !           438:        char *left;
        !           439:        char *codetab[256-32];
        !           440:        int zzz;
        !           441:        } t = {
        !           442: /*bset*/       0,
        !           443: /*breset*/     0177420,
        !           444: /*Hor*/                INCH/60,
        !           445: /*Vert*/       INCH/48,
        !           446: /*Newline*/    INCH/6,
        !           447: /*Char*/       INCH/10,
        !           448: /*Em*/         INCH/10,
        !           449: /*Halfline*/   INCH/12,
        !           450: /*Adj*/                INCH/10,
        !           451: /*twinit*/     "\e033\e006",
        !           452: /*twrest*/     "\e033\e006",
        !           453: /*twnl*/       "\e015\en",
        !           454: /*hlr*/                "\e033H",
        !           455: /*hlf*/                "\e033h",
        !           456: /*flr*/                "\e032",
        !           457: /*bdon*/       "",
        !           458: /*bdoff*/      "",
        !           459: /*ploton*/     "\e006",
        !           460: /*plotoff*/    "\e033\e006",
        !           461: /*up*/         "\e032",
        !           462: /*down*/       "\en",
        !           463: /*right*/      " ",
        !           464: /*left*/       "\eb",
        !           465:        /*codetab*/
        !           466: "\e001 ",      /*space*/
        !           467: "\e001!",      /*!*/
        !           468: "\e001\e"",    /*"*/
        !           469: "\e001#",      /*#*/
        !           470: "\e001$",      /*$*/
        !           471: "\e001%",      /*%*/
        !           472: "\e001&",      /*&*/
        !           473: "\e001'",      /*' close*/
        !           474: "\e001(",      /*(*/
        !           475: "\e001)",      /*)*/
        !           476: "\e001*",      /***/
        !           477: "\e001+",      /*+*/
        !           478: "\e001,",      /*,*/
        !           479: "\e001-",      /*- hyphen*/
        !           480: "\e001.",      /*.*/
        !           481: "\e001/",      /*/*/
        !           482: "\e2010",      /*0*/
        !           483: "\e2011",      /*1*/
        !           484: "\e2012",      /*2*/
        !           485: "\e2013",      /*3*/
        !           486: "\e2014",      /*4*/
        !           487: "\e2015",      /*5*/
        !           488: "\e2016",      /*6*/
        !           489: "\e2017",      /*7*/
        !           490: "\e2018",      /*8*/
        !           491: "\e2019",      /*9*/
        !           492: "\e001:",      /*:*/
        !           493: "\e001;",      /*;*/
        !           494: "\e001<",      /*<*/
        !           495: "\e001=",      /*=*/
        !           496: "\e001>",      /*>*/
        !           497: "\e001?",      /*?*/
        !           498: "\e001@",      /*@*/
        !           499: "\e201A",      /*A*/
        !           500: "\e201B",      /*B*/
        !           501: "\e201C",      /*C*/
        !           502: "\e201D",      /*D*/
        !           503: "\e201E",      /*E*/
        !           504: "\e201F",      /*F*/
        !           505: "\e201G",      /*G*/
        !           506: "\e201H",      /*H*/
        !           507: "\e201I",      /*I*/
        !           508: "\e201J",      /*J*/
        !           509: "\e201K",      /*K*/
        !           510: "\e201L",      /*L*/
        !           511: "\e201M",      /*M*/
        !           512: "\e201N",      /*N*/
        !           513: "\e201O",      /*O*/
        !           514: "\e201P",      /*P*/
        !           515: "\e201Q",      /*Q*/
        !           516: "\e201R",      /*R*/
        !           517: "\e201S",      /*S*/
        !           518: "\e201T",      /*T*/
        !           519: "\e201U",      /*U*/
        !           520: "\e201V",      /*V*/
        !           521: "\e201W",      /*W*/
        !           522: "\e201X",      /*X*/
        !           523: "\e201Y",      /*Y*/
        !           524: "\e201Z",      /*Z*/
        !           525: "\e001[",      /*[*/
        !           526: "\e001\e\e",   /*\e*/
        !           527: "\e001]",      /*]*/
        !           528: "\e001^",      /*^*/
        !           529: "\e001_",      /*_ dash*/
        !           530: "\e001`",      /*` open*/
        !           531: "\e201a",      /*a*/
        !           532: "\e201b",      /*b*/
        !           533: "\e201c",      /*c*/
        !           534: "\e201d",      /*d*/
        !           535: "\e201e",      /*e*/
        !           536: "\e201f",      /*f*/
        !           537: "\e201g",      /*g*/
        !           538: "\e201h",      /*h*/
        !           539: "\e201i",      /*i*/
        !           540: "\e201j",      /*j*/
        !           541: "\e201k",      /*k*/
        !           542: "\e201l",      /*l*/
        !           543: "\e201m",      /*m*/
        !           544: "\e201n",      /*n*/
        !           545: "\e201o",      /*o*/
        !           546: "\e201p",      /*p*/
        !           547: "\e201q",      /*q*/
        !           548: "\e201r",      /*r*/
        !           549: "\e201s",      /*s*/
        !           550: "\e201t",      /*t*/
        !           551: "\e201u",      /*u*/
        !           552: "\e201v",      /*v*/
        !           553: "\e201w",      /*w*/
        !           554: "\e201x",      /*x*/
        !           555: "\e201y",      /*y*/
        !           556: "\e201z",      /*z*/
        !           557: "\e001{",      /*{*/
        !           558: "\e001|",      /*|*/
        !           559: "\e001}",      /*}*/
        !           560: "\e001~",      /*~*/
        !           561: "\e000\e0",    /*narrow sp*/
        !           562: "\e001-",       /*hyphen*/
        !           563: "\e001o\eb+",   /*bullet*/
        !           564: "\e002[]",      /*square*/
        !           565: "\e001-",       /*3/4 em*/
        !           566: "\e001_",       /*rule*/
        !           567: "\e000\e0",     /*1/4*/
        !           568: "\e000\e0",     /*1/2*/
        !           569: "\e000\e0",     /*3/4*/
        !           570: "\e001-",       /*minus*/
        !           571: "\e202f\^i",    /*fi*/
        !           572: "\e202f\^l",    /*fl*/
        !           573: "\e202f\^f",    /*ff*/
        !           574: "\e203f\^f\^i",         /*ffi*/
        !           575: "\e203f\^f\^l",         /*ffl*/
        !           576: "\e000\e0",     /*degree*/
        !           577: "\e000\e0",     /*dagger*/
        !           578: "\e000\e0",     /*section*/
        !           579: "\e001'",       /*foot mark*/
        !           580: "\e001'",       /*acute accent*/
        !           581: "\e001`",       /*grave accent*/
        !           582: "\e001_",       /*underrule*/
        !           583: "\e001/",       /*slash (longer)*/
        !           584: "\e000\e0",    /*half narrow space*/
        !           585: "\e001 ",      /*unpaddable space*/
        !           586: "\e001\e241c\e202(\e241", /*alpha*/
        !           587: "\e001\e200B\e242\e302|\e202\e342", /*beta*/
        !           588: "\e001\e200)\e201/\e241", /*gamma*/
        !           589: "\e001\e200o\e342<\e302", /*delta*/
        !           590: "\e001<\eb-", /*epsilon*/
        !           591: "\e001\e200c\e201\e301,\e241\e343<\e302", /*zeta*/
        !           592: "\e001\e200n\e202\e302|\e242\e342", /*eta*/
        !           593: "\e001O\eb-", /*theta*/
        !           594: "\e001i",       /*iota*/
        !           595: "\e001k",       /*kappa*/
        !           596: "\e001\e200\e\e\e304\e241'\e301\e241'\e345\e202", /*lambda*/
        !           597: "\e001\e200u\e242,\e202", /*mu*/
        !           598: "\e001\e241(\e203/\e242", /*nu*/
        !           599: "\e001\e200c\e201\e301,\e241\e343c\e241\e301`\e201\e301", /*xi*/
        !           600: "\e001o",       /*omicron*/
        !           601: "\e001\e341-\e303\e"\e301\e"\e343", /*pi*/
        !           602: "\e001\e200o\e242\e302|\e342\e202", /*rho*/
        !           603: "\e001\e200o\e301\e202~\e341\e242", /*sigma*/
        !           604: "\e001\e200t\e301\e202~\e243~\e201\e341", /*tau*/
        !           605: "\e001v",       /*upsilon*/
        !           606: "\e001o\eb/", /*phi*/
        !           607: "\e001x",       /*chi*/
        !           608: "\e001\e200/-\e302\e202'\e244'\e202\e342", /*psi*/
        !           609: "\e001\e241u\e203u\e242", /*omega*/
        !           610: "\e001\e242|\e202\e343-\e303\e202`\e242", /*Gamma*/
        !           611: "\e001\e242/\e303-\e204-\e343\e\e\e242", /*Delta*/
        !           612: "\e001O\eb=", /*Theta*/
        !           613: "\e001\e242/\e204\e\e\e242", /*Lambda*/
        !           614: "\e000\e0",     /*Xi*/
        !           615: "\e001\e242[]\e204[]\e242\e343-\e303", /*Pi*/
        !           616: "\e001\e200>\e302-\e345-\e303", /*Sigma*/
        !           617: "\e000\e0",     /**/
        !           618: "\e001Y",       /*Upsilon*/
        !           619: "\e001o\eb[\eb]", /*Phi*/
        !           620: "\e001\e200[]-\e302\e202'\e244`\e202\e342", /*Psi*/
        !           621: "\e001\e200O\e302\e241-\e202-\e241\e342", /*Omega*/
        !           622: "\e000\e0",     /*square root*/
        !           623: "\e000\e0",     /*terminal sigma*/
        !           624: "\e000\e0",     /*root en*/
        !           625: "\e001>\eb_",   /*>=*/
        !           626: "\e001<\eb_",   /*<=*/
        !           627: "\e001=\eb_",   /*identically equal*/
        !           628: "\e001-",       /*equation minus*/
        !           629: "\e001=\eb~",   /*approx =*/
        !           630: "\e000\e0",     /*approximates*/
        !           631: "\e001=\eb/",   /*not equal*/
        !           632: "\e002->",      /*right arrow*/
        !           633: "\e002<-",      /*left arrow*/
        !           634: "\e001|\eb^",   /*up arrow*/
        !           635: "\e000\e0",     /*down arrow*/
        !           636: "\e001=",       /*equation equal*/
        !           637: "\e001x",       /*multiply*/
        !           638: "\e001/",       /*divide*/
        !           639: "\e001+\eb_",   /*plus-minus*/
        !           640: "\e001U",       /*cup (union)*/
        !           641: "\e000\e0",     /*cap (intersection)*/
        !           642: "\e000\e0",     /*subset of*/
        !           643: "\e000\e0",     /*superset of*/
        !           644: "\e000\e0",     /*improper subset*/
        !           645: "\e000\e0",     /* improper superset*/
        !           646: "\e002oo",      /*infinity*/
        !           647: "\e001\e200o\e201\e301`\e241\e341`\e241\e341`\e201\e301", /*partial derivative*/
        !           648: "\e001\e242\e\e\e343-\e204-\e303/\e242", /*gradient*/
        !           649: "\e001\e200-\e202\e341,\e301\e242", /*not*/
        !           650: "\e001\e200|'\e202`\e243\e306'\e241`\e202\e346",       /*integral sign*/
        !           651: "\e000\e0",     /*proportional to*/
        !           652: "\e000\e0",     /*empty set*/
        !           653: "\e000\e0",     /*member of*/
        !           654: "\e001+",       /*equation plus*/
        !           655: "\e001r\ebO",   /*registered*/
        !           656: "\e001c\ebO",   /*copyright*/
        !           657: "\e001|",       /*box rule */
        !           658: "\e001c\eb/",   /*cent sign*/
        !           659: "\e000\e0",     /*dbl dagger*/
        !           660: "\e000\e0",     /*right hand*/
        !           661: "\e001*",       /*left hand*/
        !           662: "\e001*",       /*math * */
        !           663: "\e000\e0",     /*bell system sign*/
        !           664: "\e001|",       /*or (was star)*/
        !           665: "\e001O",       /*circle*/
        !           666: "\e001|",       /*left top (of big curly)*/
        !           667: "\e001|",       /*left bottom*/
        !           668: "\e001|",       /*right top*/
        !           669: "\e001|",       /*right bot*/
        !           670: "\e001|",       /*left center of big curly bracket*/
        !           671: "\e001|",       /*right center of big curly bracket*/
        !           672: "\e001|",      /*bold vertical*/
        !           673: "\e001|",      /*left floor (left bot of big sq bract)*/
        !           674: "\e001|",      /*right floor (rb of ")*/
        !           675: "\e001|",      /*left ceiling (lt of ")*/
        !           676: "\e001|"};     /*right ceiling (rt of ")*/
        !           677: .)l

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.