It’s been a little bit too long, but hey, Demonic Productions is back with a slew of new releases!
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.
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!