New Releases – July 2024

By | July 22, 2024

It’s been a little bit too long, but hey, Demonic Productions is back with a slew of new releases!

Reading a test news message with Hinews 0.2

First off, esc is in the midst of another bout of hyper-focusing on Daydream/Linux. Not only does that mean impending updates to Daydream itself, but it also means more mods! Continuing the theme of his last several Daydream releases, he’s taken some of his favorite old, but now totally broken Daydream mods and utilities by other authors and got them working again, along with bug fixes and other updates. As usual, these all include some sick oldschool ASCII artwork and their complete source code:

  • dd_listmsgs v1.0.3 – originally by Niels Haedecke, this is a simple message lister door.
  • ddtext v1 – originally by 2mad^Gilden and later pandur, ddtext is a nice little TUI based utility for editing your Daydream strings files.
  • Hinews v0.2 – originally by Rezine/Drunken, Hinews is a news bulletin door that will only show new/unviewed bulletins to each user. Throw it in your login process!
  • Last 100 ULS Grouped v1.2 – originally by flOwer/project deedee, this door displays a sorted/grouped list of the last 100 uploads.

Additionally, esc has put together a quick guide on how to build and configure a 32-bit Windows 7 VPN on DigitalOcean. A handy answer to those questions that often come up regarding how to started with remotely hosting a BBS using Windows.

Moving on to my (Jack Phlash) own stuff, literally the day after releasing REFDoor v1.3, I started working to provide a more complete example of how REFDoor could be used to create an e-mag. The @SHOW SCROLL function is pretty much all you need, and the WHATSNEW.REF file included with REFDoor and “The Bloody Claw Newsletter” included in RTREAD02.ZIP get you a lot of the way there. Still, I wanted to build an approximation of an actual, full-fledged take on a traditional e-mag. Given my involvement with Gutter and that Natedogg and I released the full source code to one of the issues previously with Demonic, including all of the raw data I’d need, that was the most logical and, honestly, easiest place to start. What I’m calling Gutter #11 REF Edition includes this original version in “G11RV1.ZIP” which also comes with some more detailed notes on what it took to do the conversion.

Reading Gutter #11 via REFDoor!

While I think the results are passable, I did encounter some issues that made the conversation a little less ideal than I’d imagined. That’s where REFDoor 1.4.1 comes in. It includes a lot of miscellaneous additions and changes, but practically all of them related to my work on this script. Here’s the whole whatsnew.txt:

v1.4.1 - Released 7/15/24 (A few minor fixes for 1.4.0)
---
 ! Greatly reduced the artificial delay experienced when using the escape key
   via any single key input routines (such as DO GETKEY, LIGHTBAR, CHOICE,
   etc.) This delay was added in order to properly trap ANSI style arrow key
   codes (which of course, start with an escape character.) The delay should
   now be much less noticeable and will still HOPEFULLY sufficient to work with
   arrow keys, even over slow dial-up connections.
 ! Fixed WHATSNEW.TXT to remove various "O" SethCode references, which totally
   broke the hell out of the included WHATSNEW.REF demonstration script as they
   would inadvertently turn code parsing back on, leaving it on when scrolling
   down just a bit more and encountering the note about `^ stripping, which
   would then turn all of the foreground text black for the rest of the file,
   making it appear as if the text wasn't being rendered properly. Doh!
 ! Script variables will now be re-initialized every time a new script is
   launched from the REF picker menu. This is more in line with how RTReader
   works and, well, how you'd think it would work. Not re-initializing
   variables between launching scripts could otherwise cause some bizarre or
   at least unexpected results. Note that variables are still maintained
   when launching scripts using ROUTINE or RUN, as before.

 v1.4.0 - Unreleased (Gutter #11 related fixes and changes.)
---
 ! Fixed the way REFDoor appends .REF to filenames from the command line.
   Previously, any filename that didn't include ".REF" would have the extension
   appended, which caused the unintended behavior of REF scripts with different
   extensions (i.e. ".LIB") to be appended with an additional extension. Now
   it will only append .REF to any filename without an extension. This also
   impacts other commands which call new scripts such as "ROUTINE" and "RUN".
 + Minor logging addition to log the filesize of a script when in memory mode
   with verbose logging enabled. This should make it easier to troubleshoot
   not enough memory errors when using memory mode with REFD16.EXE.
 + Added new command "ESCCHOICE [option]" which can set how the ESC key behaves
   by default when using the "CHOICE" and "LIGHTBAR" commands. If set to 0, ESC
   acts the same as ENTER, just like in previous versions. If set to a valid
   option, it will default to that. If set to an invalid option, it simply does
   nothing. This is mainly intended for scripts that are heavily reliant on
   lightbar menus in which case escape might be used to quickly back out of
   multiple submenus, and defaulting to enter instead breaks desired flow.
 + Added new command "DISPLAYSPEED  [delay]" which can be used to slow
   down the display of the "DISPLAY" and "DISPLAYFILE" commands in order to
   output ANSI at rates approximating modem baud rates. A parameter of 0 is
   default/best effort, while 1-255 are valid speeds, with 1 being the slowest.
   What the speed ACTUALLY represents is how many characters to display before
   delaying. The default delay is 1ms, but the optional delay parameter allows
   you to raise that up to 255ms (which is about a quarter of a second.) Used
   in conjunction, for instance, with speed set to 1 and delay 255, you can
   slow your display to an absolute crawl. Unfortunately because this relies
   on how fast the ANSI is parsed, the speed of the two display commands is
   *highly* dependent on the performance of the system they're executing on and
   the build itself, with REF16.EXE tending to far out perform REFD32.EXE. For
   instance, on my system using the REFD32.EXE, a speed resembling 57600 bps is
   "75" while using REFD16.EXE, it's closer to "7". Quite a difference! That
   said, I highly suspect this varies wildly. For that reason, I'd recommend
   assigning the speed to an easy to change variable in any scripts you
   distribute that rely on this command so SysOps can easily tweak it as
   desired. Note: Avoid using NOSKIP when combined with slow speeds and long
   ANSIs, unless you hate your users.
 ! "DISPLAY" now only stops when a new section ("@#") is encountered. Prior to
   this fix, REFDoor would treat ANY "@" encountered as the end of the section,
   which was not only inaccurate to how RTReader behaved, but would also cause
   headaches when trying to display files with legitimate uses of the @
   character (Internet email addresses being an obvious example.)
 ! Fixed a bug in "KEY" and "PAUSE" where the cursor was moved back to column 1
   after the prompt had been erased. This was NOT accurate to RTReader's
   behavior, which would move it back to its original location. This was likely
   rarely encountered since "SHOW" is the main form of output used in REF and
   always writes an entire line at a time, but could cause some issues with "DO
   WRITE" and "PRINT".
 + Added the new "O" SethCode style display code which allows you to toggle
   parsing of control codes on and off dynamically. This is not a global
   setting, and is reset after the calling command has completed. Furthermore,
   this functionality is only supported by specific commands:
      * "DISPLAY" and "DISPLAYFILE" - O will affect parsing of display codes.
        Control codes parsed when read will not be affected, as they are not
        normally parsed by these commands. As with other display codes, O will
        take effect as soon as the code in encountered. Also, note that O
        interacts with the NOCODE parameter added in REFDoor 1.3. For example,
        if O is found in a file that is being displayed with NOCODE, it will
        re-enable code parsing.
      * "SHOW" and "SHOW SCROLL" - O will affect parsing of all codes, although
        control codes parsed when read are only affected on a line by line
        rather than a character by character basis. In other words, if you
        disable parsing, non-display codes will still be parsed until the next
        line of text is processed. As with "DISPLAY" and "DISPLAYFILE", O
        interacts with "SHOW SCROLL"'s implementation of the NOCODE parameter.
      * "DO WRITE" "PRINT" and "CENTER" - O will affect parsing of display
        codes. While technically capable of disabling non-display codes as
        well, since these codes are parsed on a line by line basis, and each of
        these commands only outputs a single line of code, this will have no
        effect. The good news is that it's unlikely that parsing non-display
        codes will cause display problems as only VALID codes are removed,
        unlike when display codes are parsed.
   This new code should be stripped as normal by various internal functions and
   commands (i.e. "STRIPBAD") that strip SethCodes.
 ! Fixed a bug where SethCode `^ was missing from STRIPBAD which could have
   caused it to be accidentally stripped.
 + "SHOW SCROLL" (in either mode) will now support lines of text with a
   theoretically unlimited length. Of course, "SHOW SCROLL" generally assumes
   that the text is more or less preformatted, so you should still keep your
   text less than 80 columns wide for the best results. This is AFTER parsing,
   however, which means that complex ANSIs (which can include lines that are
   many hundreds of characters long) should now render properly, which was
   the entire point of this fix, actually. Woot!

   Note: For best results, ANSIs should not include long lines stored as a
   single line that wraps on the 80th column down to multiple lines. While
   these will render fine themselves, they break the rendering of the "SHOW
   SCROLL" routine because of improper calculation of the number of lines and
   pages. The easiest way to avoid this is the old tried and true method of
   erasing/deleting text on the 80th column, which should cause most ANSI
   editors to place each new line on a separate line in the file.
 * In relation to the above "SHOW SCROLL" changes, temporary files created when
   calling "SHOW SCROLL" without providing an external file name will be
   converted to a format that includes full line length, but only if long lines
   are detected. This conversion process is a little kludgy due to otherwise
   needing to majorly rewrite parts of the main parser to implement, so it
   isn't extremely efficient right now, and a delay may be noticeable when
   running this on older machines. Worth the trade-off for full ANSI support in
   "SHOW SCROLL", IMHO.
 * Note: The normal "SHOW" command doesn't support lines longer than 255
   characters, but ANSIs saved with a 255 or less line length will render fine
   since, unlike "SHOW SCROLL", the cursor up ANSI codes (ESC[xA) typically
   used by ANSI editors to compensate for splitting lines) will not interfere
   with rendering when scrolling. "DISPLAY" and "DISPLAYFILE" (which do support
   long line lengths) can also be used as alternatives.
 ! Fixed an issue with the way I was patching CRT for the infamous RTE200 issue
   in REFD16.EXE - the fixed "delay" routine didn't seem to always work
   properly, sometimes causing inaccurate timing when using the "DELAY" command
   and so much other stuff.
 ! Fixed a very rare issue with "DISPLAY" which could cause REFDoor to get
   stuck in an infinite loop trying to find a header *if* the header happened
   to be cutoff by the end of the buffer I use for these searches. This should
   be extremely rare, but now if it is encountered, REFDoor will fallback to
   doing a partial search for the header, which should hopefully be adequate
   most of the time. If you run into issues with "DISPLAY" not finding your
   headers or causing other issues, try using /V to look for the log message
   that indicates this issue. Moving things around in your script (even just
   adding an extra blank line) is often enough to workaround the buffer issue.
 ! Fixed a longstanding (though likely rarely encountered) issue with the way
   that the "SHOW SCROLL" routine (in both normal and memory mode) would
   calculate the number of pages, occasionally resulting in a last page that
   was entirely blank. Not a huge deal, but this has annoyed me for quite a
   while now.

Gutter #11 REF Edition also includes a version 2 in “G11RV2.ZIP” which has been updated to take advantage of the fixes and additions in REFDoor 1.4, as well as some other changes (like fixing all of the ANSIs to display properly in NetRunner.) Naturally, v2 is the superior version of the script, but of course requires REFDoor 1.4 and, honestly, I thought including both made for a more interesting release all around.

That’s it for now. Stay tuned for more, and I think we’re overdue for another one of those wacky Demonic NFO files. I’m not sure when I’ll get around to it, but expect at least one this year!

Leave a Reply

Your email address will not be published. Required fields are marked *