1. 22 Oct, 2018 2 commits
    • rswindell's avatar
      The big PETSCII commit: · 31303187
      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)
      31303187
    • rswindell's avatar
      Fixed bug where if you used the /W (whisper) command in multi-node chat · dede8b35
      rswindell authored
      and then hit 'Q', it would kick you out of multi-node chat (because
      the abort flag was set).
      dede8b35
  2. 21 Oct, 2018 6 commits
    • rswindell's avatar
    • rswindell's avatar
      Stop filtering non-translated Ctrl-Key combinations (from the local · db2a627a
      rswindell authored
      keyboard). PETSCII BBSes include prompts like "Hit Ctrl-X to abort", so
      they expect the terminal to be able to send control-key combinations.
      Both CGTerm and CBMTerm are able to send all the relevant control-key
      combinations (and their single-key equivalents, like ESC and TAB) as well.
      db2a627a
    • rswindell's avatar
      Bug-fix for PETSCII modes: disable reverse video upon carriage-return (13). · 7d8f1404
      rswindell authored
      Should this also be done for 141 (shift-CR)? I'd love to know where you
      found the document which inspired the comment ("disabled reverse") - but
      the code just wasn't doing it and it was apparent when viewing PETSCII
      art and comparing the behavior with other emulators.
      7d8f1404
    • deuce's avatar
      Add missing brace. · 501384a1
      deuce authored
      501384a1
    • deuce's avatar
      Translate C128 colour codes to CGA palette. · f97fb96a
      deuce authored
      This may mess up colour hacks in other places, but should fix C128 colours
      in the terminal.
      f97fb96a
    • rswindell's avatar
      Bug-fix: when using Telnet, we would *always* send the terminal type · b2d98bb2
      rswindell authored
      (if the server supported the option), as "ANSI". Now, if the current cterm
      emualation is PETASCII [sic], or ATASCII, send "PETSCII" or "ATASCII"
      instead.
      
      Now this brings up a couple of discussion points:
      1. Should that default Telnet term-type be "ANSI-BBS" (or "ansi-bbs") instead?
      2. Similarlly, RLogin connections *always* send the term-type as "ansi-bbs" -
         I think a similar change is needed in rlogin.c to be technically correct,
         but we should probably be consistent about how SyncTERM in ANSI-BBS emulation
         mode identifies itself ("ANSI", "ANSI-BBS", or "ansi-bbs").
      3. If there is terminal type advertised via SSH, that probably needs addressing
         as well.
      b2d98bb2
  3. 20 Oct, 2018 4 commits
  4. 18 Oct, 2018 1 commit
  5. 17 Oct, 2018 7 commits
  6. 16 Oct, 2018 3 commits
  7. 15 Oct, 2018 10 commits
  8. 11 Oct, 2018 5 commits
  9. 09 Oct, 2018 2 commits