home *** CD-ROM | disk | FTP | other *** search
/ synchro.net / synchro.net.tar / synchro.net / main / BBS / HDISP16.ZIP / HDUDDIM.DOC < prev    next >
Encoding:
Text File  |  1995-02-01  |  23.7 KB  |  560 lines

  1.  
  2.     SUPPLEMENTAL TECH NOTE for HACKDISP v1.666
  3.  
  4.     The HACKDISP Universal Display Driver w/Intelligent Monochrome
  5.  
  6.     (HDUDD/IM)
  7.  
  8.     copyright 1995 James L. Powers
  9.  
  10. ===============================================================================
  11.  
  12.  
  13.    I. What happened with DOS 6.x?
  14.    ==============================
  15.  
  16.  
  17.     All versions of HACKDISP prior to HACKDISP with MOTAMA and HDUDD/IM
  18.     used the host system's resident ANSI driver when displaying ANSI
  19.     files.  This was the primary HACK in HACKDISP.  It simplified a lot
  20.     of things and kept the program very small.
  21.  
  22.     Then came DOS 6 and some undocumented changes to the ANSI.SYS
  23.     driver.
  24.  
  25.     HACKDISP v1.5's default behavior in a non-DESQview environment was
  26.     to trap the screen display scroll interrupt (int 10h, func 06h) to
  27.     prevent the display, which was output via the host system's ANSI
  28.     driver, from losing the topmost line.
  29.  
  30.     HACKDISP accomplished this by re-vectoring interrupt 10h and
  31.     inspecting every call to the interrupt for the value 0x06 in the
  32.     AH register.  When 0x06 was found, it was replaced with 0x0F (a
  33.     harmless call to read the video mode), preventing the screen from
  34.     scrolling.  On program termination, the original interrupt vector
  35.     was restored.
  36.  
  37.     The entire process was a cheap HACK (just like the rest of HACKDISP)
  38.     and worked with every ANSI driver I tested except DVANSI.COM, which
  39.     produced very weird results.
  40.  
  41.     Anticipating more weird results in the future, the /NOTRAP switch
  42.     was added to HACKDISP.  Nothing like foresight, eh?  Smart guy!
  43.  
  44.     However, looking back with 20/20 hindsight, the proper course of
  45.     action would have been to use a /TRAP switch, since most people who
  46.     used HACKDISP seemed to be unaware the /NOTRAP switch ever existed.
  47.  
  48.     Both HACKDISP and DOS 6.0 came out in March 1993.  I did not upgrade
  49.     to DOS 6.2 until December of 1994.  When I did, I learned about
  50.     the problem.  I still don't know when it started, but the /NOTRAP
  51.     switch (that every HACKDISP user was blissfully unaware of even
  52.     though it was well documented) took care of the problem.
  53.  
  54.     From the appearance of the displayed ANSI files, it's obvious (to me
  55.     at least) that somewhere between DOS 6.0 and DOS 6.2 Microsoft started
  56.     calling interrupt 10h function 06h for all carriage return/line feed
  57.     pairs.
  58.  
  59.     It figures.  Just my luck, I guess.  A good HACK gone bad.
  60.  
  61.     Why they did this is anyone's guess, but I imagine it must have
  62.     had something to do with running programs in a DOS window in Windows
  63.     386 Enhanced Mode, since the same thing happens (and is avoided
  64.     with /NOTRAP) in a DOS window under OS/2.  Apparently, this was
  65.     similar to the problem with DVANSI.COM, which must send ALL
  66.     characters through the scroll interrupt.
  67.  
  68.     At the time, the HACKDISP Universal Display Driver was complete but
  69.     was never implemented in a public release of HACKDISP.  It was a bad
  70.     enough situation to warrant a new release of a program that I had,
  71.     quite frankly, abandoned due to the sudden and startling revelation
  72.     in May 1993 that there really is no substitute for ANSI, and that
  73.     @-codes, as they were (and still are) implemented, were an inadequate
  74.     substitute.
  75.  
  76.     After all, what is the POINT of making a tight, @-coded file if the
  77.     very BBS software that is supposed to use it turns it into badly
  78.     formatted ANSI?  Obviously, it is simply an excersize in futility.
  79.     More on this later.
  80.  
  81.     But the problems with DOS 6.2's ANSI.SYS demanded a new (and perhaps
  82.     the FINAL) release of HACKDISP.
  83.  
  84.     The moral to this story is NEVER trust someone else's code to stay
  85.     the same.
  86.  
  87.  
  88.  
  89. ===============================================================================
  90.  
  91.  
  92.  
  93.     II. What ANSI functions are supported?
  94.     ======================================
  95.  
  96.     All color, monochrome, and cursor-positioning ESCape sequences are
  97.     supported.
  98.  
  99.     Key redefinition, device status request (DSR), set mode (SM), and
  100.     reset mode (RM) are not supported.  The ESCape codes for these
  101.     functions are NOT guaranteed to be stripped from the file.
  102.  
  103.     The "concealed" sequence, ESC[8m, sets the foreground attribute
  104.     to the background attribute.  This may or may not be the correct
  105.     behavior, but I've seldom seen it used.
  106.  
  107.     Illegal color values may be a source of problems.  Microsoft's
  108.     ANSI.SYS driver for DOS has the amazing ability to make sense out of
  109.     nonsense strings like:
  110.  
  111.     ESC[234214;43532124;199;43252;134345;65536;131314;574234132;2135464m
  112.  
  113.     but HACKDISP's driver might (or might not) barf on them.  However,
  114.     all cursor-positioning sequences are checked for maximum and minimum
  115.     values.  Some otherwise decent ANSI drivers don't do bounds checking
  116.     and will send the BIOS an interrupt that will cause your machine to
  117.     blink out and reboot.  This appears to be a new variation on the
  118.     old "ANSI Bomb" trick that affects only the ANSI drivers in some
  119.     (not all, but I won't name names) offline readers.  Cute.  But if
  120.     anyone asks, you didn't hear about it from me.
  121.  
  122.     An ESCape (hex 1B) *NOT* followed by a left bracket (hex 5B) is
  123.     ignored.  Therefore you cannot display the "" character with
  124.     HDUDD/IM!  ANSI.SYS acts the same way.
  125.  
  126.     (In TXT mode, ANYTHING is displayed.  Laughing Dog and Binary files
  127.     are not handled by HDUDD/IM and can use any character, although
  128.     NULL's and hex FF's are transformed into spaces.)
  129.  
  130.     Scrolling is not exactly MSDOS ANSI.SYS compatible unless the
  131.     /MSANSI switch is used.
  132.  
  133.     The only RIP sequence detected is "ESC[!".  It is ignored.
  134.  
  135.     A "BS" character (or backspace, ASCII 8) is always a backspace.
  136.  
  137.     A "DEL" (or delete, ASCII 127) is always the character "" from the
  138.     IBM character set.  SOME TERMINAL PACKAGES HARD CODE ASCII 127 AS
  139.     "DEL", so beware.
  140.  
  141.     The DEL/BS "animation" you see sometimes on old Unix systems will
  142.     not be displayed properly.
  143.  
  144.     Tabs (hex 09) are only expanded with the /T switch.  They are always
  145.     eight spaces wide.  If you like seven or nine space tabs, seek
  146.     professional help.
  147.  
  148.     Formfeeds (hex 0C) will not clear the screen.  Leaving this out is
  149.     probably a mistake, but you really don't see it used much anymore.
  150.  
  151.     I have seen a curious combination of hex 13 (decimal 19) followed by
  152.     hex 10 (decimal 16) that I don't understand.  I have a suspicion
  153.     that it's a mistranslation of hex 0D (decimal 13) and hex 0A
  154.     (decimal 10), which is the carriage return/line feed combination.
  155.     In fact a cr/lf is almost always followed by this mysterious pair.
  156.  
  157.     According to my sources, this (13h/10h) is a "DC3/DLE" (Device
  158.     Control 3/Data Link Escape) sequence.  I have no idea what that
  159.     means, either by itself or in context with a cr/lf.  Surprisingly
  160.     enough, I don't care either.  It seems to be relatively rare so I'm
  161.     going to ignore it.
  162.  
  163.     There is no way at this time to control the display speed of the
  164.     HDUDD.  I like it fast!
  165.  
  166.     Finally, that GAWD-AWFUL cacophonus claptrap people call "ANSI
  167.     Music" is NOT supported.  HACKDISP strips it out and throws it
  168.     into the bit bucket where it belongs!
  169.  
  170.     I toyed with the idea of supporting ANSI Music and pulled an old
  171.     file out of my archives to see what was going on with it.  I could
  172.     NOT stand the dinkety-dink version of "Wabash Canonball" that
  173.     screeched out of the speaker.  It was so bad, I had to give the
  174.     computer the old three-finger salute to get rid of it and I *NEVER*
  175.     do that when it's running a program!
  176.  
  177.     ANSI Music will NEVER be supported!  The debugging alone would
  178.     drive me nuts, so please don't ask.  Besides, after hearing one
  179.     or two tunes, most normal people (those who use eight space tabs)
  180.     usually don't care to hear any more.
  181.  
  182.  
  183.  
  184.  
  185.  
  186. ===============================================================================
  187.  
  188.  
  189.  
  190.     III. Do I still need an ANSI driver?
  191.     ====================================
  192.  
  193.     Not for HACKDISP, unless you want to use the /MYDRIVER switch.
  194.  
  195.     HDUDD/IM does not exactly emulate the way ANSI.SYS scrolls the
  196.     screen up although it displays a file as if it did.  It always
  197.     clears the bottom line of the screen to low intensity white on
  198.     black.  ANSI.SYS clears it to the last color attribute.  This is
  199.     generally not a problem.  For a clearer discussion of why this is,
  200.     see Rule Three in "MOTAMA.DOC".
  201.  
  202.     Many people (especially Windows folks) don't even bother to load one
  203.     up.  Sysops like to avoid using them because of ANSI bombers, or to
  204.     save memory.  Most BBS software, terminal programs, and offline
  205.     readers have built-in drivers.
  206.  
  207.     Some door programs need an ANSI driver to correctly display
  208.     locally.  In fact, HACKDISP's ANSI driver is currently being
  209.     implemented in a set of extensions for Ricky Belitz's CKIT door
  210.     developer's programming library so that CKIT doors need not depend
  211.     on external ANSI drivers either!
  212.  
  213.     I CHING - The Online Oracle v1.0, available at better BBS's
  214.     everywhere, was the first BBS door implementation of HDUDD/IM.
  215.  
  216.  
  217.  
  218.  
  219.  
  220. ===============================================================================
  221.  
  222.  
  223.     IV. File Mutants
  224.     ================
  225.  
  226.     Whenever HDUDD encounters ANSI, Wildcat, PCBoard, or Synchronet
  227.     color codes, they will be displayed.  Prior to v1.666, HACKDISP had
  228.     separate display routines for each format.  Now, they are lumped
  229.     into one routine and mutant files containing all the supported color
  230.     coding schemes can be displayed.  Hence the "universal" aspect of
  231.     the HACKDISP Universal Display Driver.
  232.  
  233.     This is absolutely CERTAIN to cause SOMEBODY SOMEWHERE problems!
  234.  
  235.     Say, for instance, your name is Ed.  You are an ANSI artist.  You
  236.     sign all your works with "@ED@".  Well, Ed, I hate to tell you this,
  237.     but your silly signature means "blinking brown background, magenta
  238.     foreground" to Wildcat and you will NEVER see it when you display
  239.     your ANSI artwork with HACKDISP.
  240.  
  241.     As for those black "smiley faces" (ASCII 1 or ""), they are, sadly,
  242.     the Ctrl-A character, Synchronet's marker for their particular
  243.     flavor of ANSI substitutes.  If you use them in ANSI artwork, it
  244.     probably won't work, depending on the character that follows it.
  245.     Use the white guys ('s) instead and there won't be any problem.
  246.  
  247.     With my luck there's probably a Christian African American ANSI
  248.     artist named Ed somewhere in cyberspace who has a fondness for
  249.     smiley faces, oddball tabs, ANSI music, and is offended by the
  250.     ".666" version of HACKDISP.
  251.  
  252.     Ed, if you're out there, leave me alone!
  253.  
  254.  
  255.  
  256. ===============================================================================
  257.  
  258.  
  259.     V. Intelligent Monochrome
  260.     =========================
  261.  
  262.     HDUDD/IM offers monochrome users the option of better viewing of
  263.     ANSI and other display files that don't translate well on a
  264.     monochrome monitor.
  265.  
  266.     Many characters simply disappear on monochrome systems!  Some
  267.     background and foreground combinations cause underlining, which is
  268.     unsupported on (most) color monitors.  HDUDD will try to create
  269.     the most reasonable-looking monochrome translation of the color
  270.     file when the "/M" switch is used with HACKDISP.
  271.  
  272.     The "/B" switch simply replaces every color attribute with low
  273.     intensity white.
  274.  
  275.     Color users who've never experienced the wonders of a monochrome
  276.     system can get a clue (sort of) as to what us poor chumps who can't
  277.     afford color have to put up with.  IM offers them a unique "duotone"
  278.     look.
  279.  
  280.     This is a small feature of HDUDD, but you'd be surprised how many
  281.     software developers just ASSUME their color screens are going to
  282.     be readable on monochrome monitors.
  283.  
  284.     Laughing Dog and Binary files are not processed by HDUDD, but the
  285.     IM feature is still available.
  286.  
  287.     Monochrome viewing on color systems with the resident ANSI driver
  288.     (the "/MYDRIVER" command line switch) is not supported.
  289.  
  290.  
  291.  
  292.  
  293. ===============================================================================
  294.  
  295.  
  296.  
  297.  
  298.     VI.  PCBOARD AND SYNCHRONET USE
  299.     ===============================
  300.  
  301.     It's no great secret that HACKDISP was originally a Wildcat utility.
  302.  
  303.     These systems are not completely supported since I run a Wildcat BBS
  304.     and have no idea of the day-to-day features or problems with the
  305.     software.  There is a good possibility that may change in the
  306.     future.
  307.  
  308.     PCBoard users will probably find the most bugs in HACKDISP's output,
  309.     especially as it pertains to system codes.  Any PCBoard @-code macro
  310.     that HACKDISP doesn't understand should be left in the file.  You
  311.     may have to edit the output of the converted file.
  312.  
  313.     Synchronet's pause, date, time, and cursor forward macros are all
  314.     supported.  "Elite" text is displayed in the color of the last
  315.     attribute encountered.  HACKDISP's Moron-O-Tronic features may not
  316.     perform as well with Synchronet files.  So far the only native
  317.     screens I've had to work with were the ones in the demo package.
  318.  
  319.  
  320.  
  321.  
  322.  
  323. ===============================================================================
  324.  
  325.  
  326.  
  327.  
  328.     VII. Wildcat BBS Features and HDUDD/IM
  329.     ======================================
  330.  
  331.     If you don't run Wildcat BBS, in particular version 3.x, skip this
  332.     section.
  333.  
  334.     The flaws mentioned in this document are not to be construed to mean
  335.     that the software that demonstrates them is in any way undesirable
  336.     or unusable.
  337.  
  338.     First of all, if you coded your own screens or edited HACKDISP's
  339.     output and you failed to capitalize the hexadecimal numbers A
  340.     through F in an @-code, HACKDISP forces them to upper case and
  341.     generates the correct color attribute.  It will look fine with
  342.     HACKDISP but display improperly on your BBS.  Don't blame HACKDISP,
  343.     it cut you some slack.
  344.  
  345.     (So, Ed, if you're out there, @ed@ or @Ed@ won't make it either.)
  346.  
  347.     All black-on-black attributes ("@00@") are removed.  Some editors
  348.     don't like them.  Some don't care.  HACKDISP never produces this
  349.     attribute, even if your original uses it.
  350.  
  351.     HACKDISP's Universal Display Driver bends the rules when it comes to
  352.     very long line lengths and 80 column files that have been @-coded.
  353.     This is Wildcat 3.x specific but may also apply to PCBoard and/or
  354.     Synchronet.  Somehow I doubt it.  It may or may not be a problem in
  355.     Wildcat 4, but I really have no idea since I declined on the upgrade
  356.     offer.  Twice.
  357.  
  358.     These particular problems were either ignored or forgotten about for
  359.     the lifetime of version 3.  Only a few people ever actually complained
  360.     about them (well, a few SYSOPS.  Users loved to complain about it
  361.     and they still do!).
  362.  
  363.     In fact, the sysop of a local BBS here in Columbus, Ohio actually
  364.     gave Jim Harrer (in person) a disk with an example of the Tomcat
  365.     ANSI translation problem on April 25, 1992.  He never did get that
  366.     disk back!  I understand it was forwarded to the programming team,
  367.     but it seems to have gotten lost in transit.  Cheers.
  368.  
  369.  
  370.     A. THE 256 CHARACTERS PER LINE LIMIT
  371.     ====================================
  372.  
  373.     Wildcat 3.x apparently reads one line, as delimited by a carriage
  374.     return/line feed pair, into a buffer deep inside its guts.  Then it
  375.     proceeds to translate the FIRST 256 BYTES of that buffer into ANSI.
  376.     If that line is larger than 256 bytes, you are out of luck.  The rest
  377.     of that line is gone forever and will not be translated.  HACKDISP
  378.     will display it, but your Wildcat version 3.x BBS will not.
  379.  
  380.     Truthfully, this is not NORMALLY a problem, but let's face some
  381.     facts here and do a little simple arithmetic.  In the worst case
  382.     scenario, the longest possible line of @-coded junk would be if
  383.     every character on a single line were a different color.  That's
  384.     five bytes (four for the @-code, one for the character) times 80
  385.     characters plus two bytes for the cr/lf.
  386.  
  387.     Don't go running for your calculator, that's 402 bytes.
  388.  
  389.     Exactly 146 less than MSI thinks you need.  Add a few non-printing
  390.     "macros" like @CLS@, @NOPAUSE@, and @NOSTOP@ and you can crank the
  391.     minimum value up to around 425 bytes just to be safe.
  392.  
  393.     See the file "WORSTCAS.BBS", included with this archive, for a
  394.     good example of this.
  395.  
  396.     This works backwards when Tomcat 3.x translates the @-coded file
  397.     back into ANSI.  The maximum line length of the ANSI translation is
  398.     256 bytes.  So you can have an @-coded screen that has LESS than 256
  399.     characters per line, but the translation may still get messed up!
  400.  
  401.     For a graphic example of this see the files "BEFORE.BBS" and
  402.     "AFTER.ANS", included in this archive.  This demonstrates the same
  403.     problem that was on the famous "Lost Disk of 1992".  Note that the
  404.     longest line in "BEFORE.BBS" is exactly 256 characters wide but many
  405.     lines in "AFTER.ANS" are truncated at the 256 character limit.
  406.  
  407.     (Also take note that "BEFORE.BBS" is NOT a terribly complex screen
  408.     by anyone's definition.)
  409.  
  410.     This is NOT A PROBLEM for HACKDISP.  There is no 256 character
  411.     limit imposed on @-codes!
  412.  
  413.     I've toyed with the idea of forcing HACKDISP to ruin the display of
  414.     your file the way Wildcat 3.x would (for educational purposes only),
  415.     but I don't want people to come crying to ME over a problem MSI
  416.     never bothered themselves with.  I also don't want to deal with the
  417.     different bugs in all the different versions (the lone "@" problem
  418.     of pre-3.5 Wildcat releases comes immediately to mind!).
  419.  
  420.     And besides, if I ever got them to look EXACTLY like they would in
  421.     version 3.x, with my luck I would probably get dragged into court
  422.     with a "look and feel" lawsuit!  No, thanks!
  423.  
  424.     Remember:
  425.  
  426.     JUST BECAUSE IT LOOKS GOOD WITH HACKDISP DOESN'T MEAN WILDCAT
  427.     VERSION 3.X WON'T SCREW IT UP ON YOUR BOARD!
  428.  
  429.     Out of self-defense, HACKDISP will yank your chain whenever an
  430.     @-coded file's line length exceeds 256 characters (during file
  431.     conversion only).  DON'T say you weren't warned!
  432.  
  433.     If you haven't already noticed, this doesn't only apply to @-coded
  434.     screens.  Any ANSI (*.SCR) file that has line lengths greater than
  435.     256 characters will also get trashed.  HACKDISP's ANSI output
  436.     routines have been specially coded to force all lines of ANSI code
  437.     to be LESS than 256 characters without truncating any display
  438.     lines.  But ANSI optimization is a tough nut to crack and HACKDISP
  439.     won't necessarily give you the tighest file possible (working on
  440.     it!).
  441.  
  442.  
  443.     B. THE EIGHTY COLUMN SCREEN (LINE WRAP) PROBLEM
  444.     ===============================================
  445.  
  446.     HDUDD goes to great lengths to display your @-coded files the way
  447.     you want them to look.  However, EIGHTY COLUMN @-CODED SCREENS ARE A
  448.     PROBLEM!  They are not MY problem.  They may or may not be your
  449.     CALLERS' problem.  They are YOUR problem!
  450.  
  451.     HACKDISP goes through hoops to make 80 column screens, that is,
  452.     screens with DISPLAYABLE characters on the 1st and 80th columns,
  453.     display CORRECTLY (or INcorrectly, depending on your viewpoint).
  454.     Throw them into Wildcat 3.x and watch each line get separated by a
  455.     BLANK line on the local display.
  456.  
  457.     What the hell is going on here?
  458.  
  459.     Well...  remember each line must be separated by a cr/lf or it
  460.     gets hacked off at the 257th character.  HACKDISP dutifully did
  461.     EXACTLY what you wanted it to do.  It took a perfectly decent ANSI
  462.     file and automagically turned it into something Wildcat 3.x can
  463.     destroy!
  464.  
  465.     Strictly speaking, HDUDD/IM should display that file with blanks
  466.     between the lines.  But it takes special note of these problems so
  467.     that YOU won't go blaming HACKDISP for screwing up the file on your
  468.     BBS.
  469.  
  470.     Take that 80 column screen and trim it down to 79 columns.  It's the
  471.     only thing you can do for now.  HACKDISP is putting the cr/lf's
  472.     where they belong; Wildcat 3.x is wrapping to the NEXT line after it
  473.     hits the 80th column, finds a cr/lf, and outputs it, skipping the
  474.     line it wrapped to.  Hence, the blank lines.
  475.  
  476.     Wild, wacky stuff.
  477.  
  478.     What Wildcat 3.x SHOULD do is wrap to the beginning of the line it
  479.     ran off the end of, THEN process the cr/lf.  If it did, everyone
  480.     would be happy and people wouldn't complain that their HACKDISP'd
  481.     screens don't display correctly on their BBS.
  482.  
  483.     Be advised that ALTHOUGH WILDCAT SCREWS IT UP LOCALLY THE REMOTE
  484.     USER MAY SEE A SCREEN *>WITHOUT<* BLANK LINES.  Why?  Because the
  485.     terminal software is SMART!  The software does what it SHOULD do.
  486.     Surprise!  The only person getting annoyed is YOU!
  487.  
  488.     Go ahead, DON'T take my word for it.  Try it yourself sometime.
  489.     It may not work with ALL terminal software.
  490.  
  491.  
  492.     C. WILDCAT SYSTEM AND USER "MACROS"
  493.     ===================================
  494.  
  495.     Wildcat v2.x system macros were never supported and still aren't!
  496.  
  497.     Version 4 may have added macros I'm not aware of.  Sorry if this
  498.     causes any problems.
  499.  
  500.     If you reconvert your present @-coded screens to take advantage of
  501.     HACKDISP's Moron-O-Tronic Attribute Minimizing Algorithm (see
  502.     "MOTAMA.DOC"), most common, NON-PRINTING "macros" will be stripped
  503.     out.  You'll have to put them back in either with HACKDISP's file
  504.     suffixes and prefixes or by editing the file manually.  This does
  505.     NOT affect user and system variables (presently only the @DATE@ and
  506.     @TIME@ macros are expanded during viewing; all the others will show
  507.     up as "@NAME@" or "@BBS@" or "@[whatever]@" on the screen).  If you
  508.     use ANSI cursor positioning codes in these files (which you really
  509.     shouldn't be doing because that runs counter to the primary intent
  510.     of using @-codes in the first place), you will lose them, too, but
  511.     the cursor will be moved correctly.
  512.  
  513.     When viewing files, you may have to hit [Enter] more than once to
  514.     continue multi-screen files because a @PAUSE@ macro may appear at
  515.     the last line, causing a "double-pause" situation.  Using the /F
  516.     (fast) switch with HACKDISP will force only macros to pause the
  517.     screen.
  518.  
  519.  
  520.  
  521.     D. THE FUTURE OF @-CODES
  522.     ========================
  523.  
  524.     The last @-code bug fix that MSI ever made that I am aware of was
  525.     the problem of displaying a single "@" character.  This was fixed in
  526.     Wildcat 3.5, but from versions 3.55-3.91 MSI seemed preoccupied
  527.     with "graphical user interfaces" for Wildcat.  Small wonder the
  528.     @-code problems were left on the back burner.
  529.  
  530.     At the time of this writing, version 4.10 of Wildcat is scheduled to
  531.     be released in about a month (to be exact, February 15, 1995,
  532.     according to an article in Computer Reseller's News, January 16,
  533.     1995, page 55).  Let's hope the problems with @-codes get fixed.
  534.  
  535.  
  536.  
  537.  
  538. ===============================================================================
  539.  
  540. PCBoard            copyright Clark Development Co., Inc.
  541. Wildcat & Tomcat   copyright Mustang Software Inc.
  542. Synchronet         copyright Digital Dynamics
  543. RIP                copyright TeleGrafix
  544. OS/2               copyright IBM
  545. MSDOS & Windows    copyright Microsoft
  546. DESQview           copyright Quarterdeck Office Systems
  547. CKIT               copyright Rickie Belitz
  548. Laughing Dog       copyright Jeff Sloan & Yardbird Software
  549.  
  550. HACKDISP, HDUDD/IM, & MOTAMA
  551.            copyright James L. Powers
  552.  
  553. ===============================================================================
  554.  
  555. Oh yeah, almost forgot...
  556.  
  557. @ED@               copyright Ed
  558.  
  559. ===============================================================================
  560.