- 08 Oct, 2019 1 commit
-
-
rswindell authored
JS console.gotoxy() and the GOTOXY @-code now work with PETSCII terminals (homes the cursor then moves down and right the appropriate number of rows and columns). Bummer I didn't think of this method sooner.
-
- 21 Sep, 2019 2 commits
-
-
rswindell authored
Use cursor-right movement rather than spaces for left-margin. Don't do the clear-to-EOL thing added in previous commit.
-
rswindell authored
"width" argument (in columns), defaults the user's current screen column-width but you can now over-ride this value when an additional/optional argument. Also, center() now clears-to-EOL before sending the CRLF to the terminal. Hopefully this doesn't mess up anyone's existing use of center().
-
- 10 Sep, 2019 1 commit
-
-
rswindell authored
it's a CP437 character (e.g. inadvertently included in a UTF-8 encoded text) and display as such.
-
- 20 Aug, 2019 1 commit
-
-
rswindell authored
when "extra raw" output is needed. Use putcom() and comprintf() instead of rputs() and rprintf() for ANSI escape sequences. This doesn't actually fix any problem, but since rputs() is "less raw" than it used to be, let's use direct-output routines instead, for ANSI output.
-
- 19 Aug, 2019 1 commit
-
-
rswindell authored
line counter was never cleared (upon rputs() of "\n") and the current attribute was not saved when a new line was being buffered. This applies to JS console.write() as well since it uses rputs().
-
- 05 Aug, 2019 3 commits
-
-
rswindell authored
-
rswindell authored
- new @-code BPS:x (where x is 0/unlimited, 300, 600, 1200, 2400, ... 115200) - new JS property: console.output_rate So you can have mutliple output rate changes in a single file by using multiple BPS @-codes. Hopefully this doesn't do weird things with non-compliant terminals.
-
rswindell authored
now accept an optional "count" argument (default: 1). JS console.backspace() and carrage_return() methods now accept an optional "count" argumnet (default: 1).
-
- 04 Aug, 2019 1 commit
-
-
rswindell authored
- bstrlen() moved to sbbs_t, accepts an option pmode argument so it can account for UTF-8 encoded strings correctly - JS console.strlen() now accepts an optional pmode argument (e.g. P_UTF8) - Renamed sbbs_t::utf8_to_cp437 to sbbs_t::print_utf8_as_cp437 - Create/use msghdr_hfield() to perform UTF-8->CP437 conversions as needed for printing/copying UTF-8 encoded message header fields. - Defined XTRN_UTF8 misc setting flag. If a message editor does *not* have this flag, it is assumed to *not* support UTF-8. Will likely use this for UTF-8 doors as some point too (none known to exist, yet).
-
- 03 Aug, 2019 1 commit
-
-
rswindell authored
auto-limiting the length of printed lines to avoid terminal line wrapping. putmsg() already supported this pmode flag.
-
- 24 Jul, 2019 2 commits
-
-
rswindell authored
-
rswindell authored
- Export all FIDOCTRL (other FTN kludge lines) to the QWK HEADERS.DAT file. These should already be imported if they exist, but were never added during export, so untested/new behavior. The control paragraph (kludge line) of specific interest here is the "CHRS" (charset) kludge we need for UTF-8. - Don't use the QWK "newline" character (0xE3) when the message is UTF-8. Use bare-LF's instead. This is pretty untested at this point as I will need another QWKnet board to post or receive UTF-8 encoded messages to test, getting the code into CVS is the first step. At least for now, there's no opt-in/out for this behavior. If your BBS has UTF-8 encoded messages, some QWK nodes or offline readers may have trouble with packets which include those messages. Or they may work fine (but likely display garbage CP437 chars in-place of the proper Unicode codepoint glyph). - The beginning of UTF-8 input support in getstr() - which needs more work, particularly around character and word deletion and insertion. - The internal message editor now supports UTF-8 messages and kind of somewhat supports inputting UTF-8 characters in message text. New put/print text flag: P_AUTO_UTF8 which can auto-detect UTF8 strings and do the "right thing" for the user's terminal. New associated sbbs_t method: auto_utf8() which automatically sets P_UTF8 for any stirng that begins with a UTF-8 BOM (ZWNBSP). Else, if the P_AUTO_UTF8 mode flag is set, then it checks to see if the string contains invalid US-ASCII chars but valid UTF-8 sequences and then sets P_UTF8 accordingly. Used by putmsg() and bputs(). There's a new permuation of bprintf() which accepts a mode argument (i.e. for P_UTF8) and passes it on to the new mode-capable bputs().
-
- 11 Jul, 2019 3 commits
- 10 Jul, 2019 4 commits
-
-
rswindell authored
terminal "type" string (ANSI, RIP, PETSCII, or DUMB). Expose this value in JS via the new console.type read-only property. The TERM @-code now expands to this string rather than the (often client-supplied) sbbs_t.terminal string value.
-
rswindell authored
Create a sbbs_t method: wide(), which displays a string using "fullwidth" Unicode characters, when possible, otherwise, double-spaced. Exposed in JS via console.wide() and a new @-code: WIDE:<string>
-
rswindell authored
with UNICODE_*
-
rswindell authored
@U+<codepoint-in-hex>@ - automatic CP437 fallback char, if available @U+<codepoint-in-hex|cp437char-in-hex>, specify CP437 fallback char @U+<codepoint-in-hex!cp437char-in-hex>, specify CP437 fallback char (used if no automatic fallback mapping is available)
-
- 09 Jul, 2019 2 commits
- 08 Jul, 2019 1 commit
-
-
rswindell authored
New function (derived from sbbs_t::utf8_to_cp437()): unicode_to_cp437() New utf8 functions: utf8_replace_chars(), utf8_str_is_valid(). utf8_getc() enhancement: val arg may be NULL (for length/validation uses). Convert quoted UTF-8 message text to CP437 when terminal is not UTF8. Set Fido CHRS: UTF-8 header field when posted message is UTF-8.
-
- 06 Jul, 2019 3 commits
-
-
rswindell authored
for both US-ASCII (non-CP437) terminals and UTF-8 terminals.
-
rswindell authored
notice.
-
rswindell authored
with ZWNBSP/BOM UTF-8 sequence) and messages (with the "CHRS: UTF-8" FTN control paragra or MIME "charset=utf-8" parts). Not all UNICODE codepoints are supported (obviously). Tested with various files from ftp://columbia.edu/kermit/charsets/ (e.g. test.utf8, utf8-boxes.txt)
-
- 28 Jun, 2019 1 commit
-
-
rswindell authored
translation from CP437 -> UTF-8 and only when using high-level text output functions - so the output from native/DOS doors and scripts that use low-level output methods won't be translated. UTF-8 is auto-detected (only) at this time during answer (before login) by sending a ZWNBSP and checking (via ANSI) if the cursor position moved - an idea "borrowed" from Ozz Nixon (aka SqZ). This commit requires the new "encode" library (src/encode), so you may need to perform a cvs checkout to get that module!
-
- 09 May, 2019 1 commit
-
-
rswindell authored
- for PETSCII, this is automatic and you don't lose blink, but you do lose colored foreground when enabling a bright background ("reverse video") - for ANSI, this mode is typically referred to as "iCE colors" and disables blinking-text support - Ctrl-AE (^AE) is the new attribute code to enable bright-background (will have no effect on ANSI terminals that are not iCE color enabled) "E" is now valid in the ctrl/attr.cfg file and string values for JS console.attributes assignments, as well - Ctrl-AI (^AI) - blink - now does nothing for ANSI/ICE color terminals (blinking is not supported in combination with bright-background) - Using a new/non-standard CGA attribute bit-flag to indicate the selection of bright-background colors (BG_BRIGHT, bit 10), separate from BLINK. This change required all/most char/uchar attribute representations to be converted to int/uint. New text.dat strings: - PetTerminalDetected (renamed from PetTermDetected) - PetTerminalQ - TerminalAutoDetect - TerminalColumns - TerminalRows - TerminalMonochrome - TerminalColor - TerminalIceColor - IceColorTerminalQ This also moved the MsgCarbonCopyList definition to the end of the file for now. PETSCII reverse-video attribute fix: When a CR is sent to the terminal, the reverse-video attibute is auto-disabled so update our "current attribute" (curatr) value to match the remote. Support new printfile/putmsg mode flag: P_WRAP to force an ungraceful line-wrap (splitting) to the specified column width. If no column width is specified (0), then this mode will force an ungraceful wrap before the last terminal column where some terminals *may* auto-wrap. JS console.printfile() and printtail() methods now support an optional "orig_columns" argument, similar to console.putmsg(). Must specify P_WORDWRAP or P_WRAP for this argument to have any effect. Much improved terminal-type selection/configuration in the user defaults menu and abort (^C) at any of the yes/no prompts is now detected/handled much better (to answers to the prompted questions are not saved to the user settings).
-
- 06 May, 2019 1 commit
-
-
rswindell authored
-
- 04 May, 2019 1 commit
-
-
rswindell authored
when set, force a clear-to-end-of-line sequence to be sent to the remote terminal before sending a carriage-return (CR, '\r') character. This is useful in scenarios where you want to move/home the cursor and *not* clear the screen and then display or execute something that assumes clean lines are being displayed on and thus wouldn'd bother with any clear-to-eol sequences before line-endings. Any scripts that enable this mode should disable it upon exit (e.g. using js.on_exit() to restore the original console status).
-
- 28 Apr, 2019 1 commit
-
-
rswindell authored
will be sending 0x7f (DEL) when the backspace key is struck: SWAP_DELETE For example, xterm sends 0x7f when backspace and hit and an ANSI escape sequence when the DEL key is hit. I don't yet have a way to *enable* this setting. Also, allow the user's setting of NO_EXASCII to take effect even when auto-terminal type detection is used (yes, the user's terminal can support ANSI and *not* CP437).
-
- 19 Feb, 2019 1 commit
-
-
rswindell authored
I noticed that printable ctrl chars (e.g. 0x18 and 0x19) were not causing the current column position to increment, so that got me looking at this code and wondering why the LF/FF checking was outside the if(!outchar_esc) condition and being executed when CON_R_ECHO is off. So now, using a switch statement, it's cleaner and all the printable ctrl chars move the current column position correctly.
-
- 11 Jan, 2019 1 commit
-
-
rswindell authored
Oct-14-2018: It turns out, PabloDraw actually inserts a Ctrl-AZ sequence at the end of .msg (and presumably Synchronet .asc) files it edits - before the SAUCE record. This resulted in a printed Ctrl-Z character (arrow pointing right) in most terminals when viewing text/menu files created or edited with PabloDraw. :-( So, now Ctrl-AZ (uppercase) will revert to the previous definition: premature end-of-file (EOF) and a Ctrl-Az (lowercase) will output a Ctrl-Z (substitute) character. I'm not a big fan of case-sensitive Ctrl-A codes, but frankly, running out of chars and I already started this pattern with the Ctrl-AF/f sequences. Hopefully there's no existing software that is/was putting Ctrl-Az (lowercase) in files, expecting that to trigger a premature EOF. I certainly was not.
-
- 30 Oct, 2018 1 commit
-
-
rswindell authored
now have their output translated to PETSCII equivalents for PETSCII terminals (but input is not yet translated). .seq files are now sent untranslated via printfile() and putmsg() to PETSCII terminals (using the new P_PETSCII putmsg mode flag). .seq files (and P_PETSCII mode text printed via putmsg) is now converted (poorly) from PETSCII to CP437 - this is still a work-in-progress. Remove the remants of WIP and HTMLterm support from putmsg() and printfile().
-
- 25 Oct, 2018 1 commit
-
-
rswindell authored
don't use the stored user terminal type. This allows the same user (e.g. the sysop) to be logged onto multiple nodes concurrently with different terminal types without effecting the other node/session. Guest sessions were already immune to this problem.
-
- 22 Oct, 2018 1 commit
-
-
rswindell authored
So Omegix recently asked in the Synchronet Discussion group whether or not a PETSCII (Commodore) terminal could be used to access his Synchronet BBS. Now, the answer is "Yes". :-) The major issues addressed: - detecting a PETSCII terminal, solved by assigning specific (configurable): TCP ports to be used for incoming PETSCII connections, by default: port 64 is for 40-column PETSCII and port 128 is for 80-column PETSCII, but if the terminal sends a Telnet Window Size reply (e.g. SyncTERM), then either size terminal should fine on either port. The port numbers are configurable in the [BBS] section of your sbbs.ini file using the new keys: PET40Port (default value: 64) and PET80Port (default value: 128). Having these keys set doesn't make make the terminal server listen on that additional port - you'll need to add more IP:port combinations to one of Interfaces values, example: TelnetInterface=71.95.196.34,71.95.196.34:64,71.95.196.34:128 And you don't have to use Telnet for the PETSCII connections - you could use RLogin or SSH instead (or in addition). - support for terminal widths < 80 columns: This was achieved through a combination of text.dat changes (numerous), new Ctrl-A and @-codes and new optional terminal-width-specific menu files (e.g. text/menu/main.40col.asc) A side effect of these changes is actually better support for terminals *wider* than 80 columns as well! - support for terminals that don't expand tabs to spaces (e.g. PETSCII): The terminal server now handles tab expansion with a run-time settable tab-size (default size: 8) - conditional access based on PETSCII (or small) terminal use (or not): + New PETSCII ARS keyword (boolean) + New COLS and ROWS ARS keywords (for terminal width and height requirements) + New TERM (string) ARS keyword New @-codes: - WORDWRAP, when placed at the top of a file, enables auto-wordwrap for lines longer than the terminal width - CENTER, the text following before an end of line will be displayed centered on the terminal (whatever the width, in columns) - CLEAR, like CLS, except it ignores (doesn't display) a CRLF that follows - COLS, current number of terminal columns (width) - ROWS, current number of terminal rows (height) - TERM, the auto-detected or reported terminal type (e.g. ANSI, TTY, etc.) - SYSONLY, toggles "echo" (display) off/back-on for non-sysops similar to the Ctrl-A( and ) codes, but more convenient to use (and PabloDraw won't strip the @-code from the file like it does with Ctrl-A codes it doesn't support) New Ctrl-A codes: - \ conditional new-line/continuation when the terminal width is < 80 cols prints the new text.dat string LongLineContinuationPrefix yesno() will now return true if passed a blank string. noyes() will now return false if passed a blank string. getstr()'s input length limiting based on terminal width is more broadly applied now (not just when using the K_LINE mode flag). New JS bbs object method: menu_exists(<base_filename>) returns Boolean New JS console object property: tabstop (Number) New JS console object methods: getbyte() and putbyte() to recv/send raw byte value with (very little) interpretation/intervention by the terminal server New JS console object method: creturn() - performs a carriage return (or equivalent) New JS (and C) printfile() mode flag: P_TRUNCATE, causes long lines to be truncated, rather than displaying causing a line-wrap. New text.dat strings: - NoAccessTerminal (for ARS check failures) - LongLineContinuationPrefix (for breaking long lines for 40col terminals) - Scanning (replaces a previously hard-coded "Scanning" string) - Done (replaces a previusly hard-coded "Done") - Scanned (when finished scannning, clears the progress bar)
-
- 15 Oct, 2018 1 commit
-
-
rswindell authored
was so pervasive. I hope I don't regret changing this. Ctrl-AZ == Ctrl-Z just "feels right" while Ctrl-AZ == EOF feels stoopid. :-/
-
- 11 Oct, 2018 1 commit
-
-
rswindell authored
('?' from the Reading Messages prompt) would not fully display because it contains a Ctrl-Z character (for the right-arrow symbol). Rather than revert the menu() change (where CPM-EOF mode is the default for menu files) - change the Ctrl-AZ sequence from "premature end-of-file" to instead send an actual Ctrl-Z character (similiar to Ctrl-AA, Ctrl-AL, etc.). This changes the long-standing behavior of what Ctrl-AZ does, but since that was a dubious "feature" that I'm pretty sure nobody used, I'm will to take that chance. If you need a premature EOF now, just use a regular ole Ctrl-Z char instead (or even the @eof@ code). Of course the msgscan.asc now has to change accordingly.
-
- 09 Oct, 2018 1 commit
-
-
rswindell authored
terminal text and attributes with a linked-list. In doing so: - the save depth is no longer fixed (at 4), but dynamic and unbounded - the current column position is also saved/restored (bug fix) - no more copy/pasta from sbbsdefs.h into js_console.cpp - the JS console.saveline() and restore() methods now return Bool to indicate success/failure Also, some trailing white-space was auto-removed due to local editor settings.
-
- 15 Aug, 2018 1 commit
-
-
rswindell authored
previous commit: don't clear the line counter or call pause() - which will do nothing - if the console abort flag is set.
-