• src/sbbs3/dosxtrn/dosxtrn.c

    From rswindell@VERT to CVS commit on Tue Apr 14 21:22:33 2020
    src/sbbs3/dosxtrn dosxtrn.c 1.24 1.25
    Update of /cvsroot/sbbs/src/sbbs3/dosxtrn
    In directory cvs:/tmp/cvs-serv3878

    Modified Files:
    dosxtrn.c
    Log Message:
    So 20 years ago I decided that the DOSXTRN.ENV file created by SBBS would never have more than 10 environment variables defined in it. I added no bounds checking or dynamic allocation, so if the file contained more than 10 environment variables (and it has since 2002), other stack memory in DOSXTRN would get over-written (classic buffer overflow).

    When I recently experimented with adding another environment variable (PCBDIR), all dosxtrn NTVDM instances would crash with a familiar but mysterious error dialog. This bug may have been causing other dosxtrn instances to crash for a long tmie.
    I also had an arbitrary limit on the number of command-line arguments, 16, with no bounds-checking, so passing a long list of space-separated arguments could also crash DOSXTRN.

    So I've increased both limits to 32 and added bounds checking. I had to break out the old 16-bit MSVC (v1.52) and an NT2K DDK (and remove the 64-bit int stuff from gen_defs.h) to get this thing to build. But here it is. Updated again after all these years. Who'd a thunk.


    ---
    þ Synchronet þ Vertrauen þ Home of Synchronet þ [vert/cvs/bbs].synchro.net
  • From Rob Swindell@VERT to Git commit to main/sbbs/master on Tue Nov 23 16:19:16 2021
    https://gitlab.synchro.net/main/sbbs/-/commit/a87ecd0f174aeefdfd9fd685
    Modified Files:
    src/sbbs3/dosxtrn/dosxtrn.c
    Log Message:
    Implement FOSSIL function 0Dh (Keyboard read without wait)

    As a work around for TradeWars 2 (v11.14 and v11.20) FOSSIL support:
    This door game would never call the FOSSIL "get received character"
    function (02h) . But I did notice that it was calling the "Keyboard
    read" functions. I never implemented the "Keyboard read" functions
    (figured the door game could read the keyboard itself if it wanted to),
    but appparently TW2 won't ever read the COM port (using function 02h)
    unless the Keyboard read function returns AX=0xFFFF (no keyboard data available). So now, I just do that and TW2 works (with FOSSIL I/O).

    Incremented the revision to 26.
    Logging the Git branch/hash and other helpful FOSSIL-debug stuff now.

    ---
    þ Synchronet þ Vertrauen þ Home of Synchronet þ [vert/cvs/bbs].synchro.net
  • From Rob Swindell@VERT to Git commit to main/sbbs/master on Mon Dec 13 13:23:16 2021
    https://gitlab.synchro.net/main/sbbs/-/commit/bdb8fd268401bb90cdad32e7
    Modified Files:
    src/sbbs3/dosxtrn/dosxtrn.c
    Log Message:
    Simplify the enabling of all the optional interrupt counters for debug

    ---
    þ Synchronet þ Vertrauen þ Home of Synchronet þ [vert/cvs/bbs].synchro.net
  • From Rob Swindell@VERT to Git commit to main/sbbs/master on Thu Apr 28 10:05:48 2022
    https://gitlab.synchro.net/main/sbbs/-/commit/d4024229466dc841c757a561
    Modified Files:
    src/sbbs3/dosxtrn/dosxtrn.c
    Log Message:
    Report CTS status in FOSSIL driver (high when outbuf has some space)

    Some programs (e.g. sbbs.exe v2.30) check for CTS (when configured/enabled for hardware flow control), so reflect the signal (Clear To Send) accurately.

    ---
    þ Synchronet þ Vertrauen þ Home of Synchronet þ [vert/cvs/bbs].synchro.net
  • From Rob Swindell@VERT to Git commit to main/sbbs/master on Sat May 7 20:43:59 2022
    https://gitlab.synchro.net/main/sbbs/-/commit/5e9cc98f6a9b5681487a788b
    Modified Files:
    src/sbbs3/dosxtrn/dosxtrn.c
    Log Message:
    Support an optional ini filename argument, write to DOSXTRN.ERR

    If a 4th optional argument is provided, use that as the ini filename for virtual UART/FOSSIL driver settings instead of "sbbsexec.ini". Using this feature requires an updated sbbsexec.dll that supports an ini-filename argument (instead of a directory) to the VDD_LOAD_INI_FILE command.

    If DOSXTRN fails to execute the passed command-line, _spawnvp() returns -1, log the errno value and description to DOSXTRN.ERR (in the same directory as DOSXTRN.ENV). This will help diagnose issues executing DOS command-lines (e.g. file not found).

    Upon failure to open/create DOSXTRN.RET, don't prematurely terminate as that would skip a lot of important cleanup.

    ---
    þ Synchronet þ Vertrauen þ Home of Synchronet þ [vert/cvs/bbs].synchro.net