Both sides previous revisionPrevious revisionNext revision | Previous revision |
util:svdm [2022/06/04 15:21] – [Configure] Document new options digital man | util:svdm [2025/03/29 19:54] (current) – [Configure] maybe -> may be deuce |
---|
====== Synchronet Virtual DOS Modem ====== | ====== Synchronet Virtual DOS Modem ====== |
SVDM is a modem emulator for Windows which utilizes the Synchronet Virtual UART/FOSSIL Driver (''DOSXTRN.EXE/SBBSEXEC.DLL'') to enable support for DOS communications programs on Windows NT-based operating systems. 64-bit Windows support is enabled by also installing [[http://www.columbia.edu/~em36/ntvdmx64.html|NTVDMx64]]. | SVDM is a MODEM emulator for Windows which utilizes the Synchronet Virtual UART/FOSSIL Driver (''DOSXTRN.EXE/SBBSEXEC.DLL'') to enable support for DOS communications programs on Windows NT-based operating systems. 64-bit Windows support is enabled by also installing [[https://mendelson.org/ntvdmx64.html|NTVDMx64]]. |
| |
SVDM should run on 32-bit and 64-bit editions of Windows XP and later. | SVDM should run on 32-bit and 64-bit editions of Windows XP and later. |
Although SVDM reuses components of the Synchronet BBS Software and shares some of its source code and libraries, it is is not technically "part of" Synchronet BBS nor is it required for the normal use or operation of a Synchronet BBS. | Although SVDM reuses components of the Synchronet BBS Software and shares some of its source code and libraries, it is is not technically "part of" Synchronet BBS nor is it required for the normal use or operation of a Synchronet BBS. |
| |
| You can find the latest "release" of SVDM available for download (as ''svdm??.zip'') at [[http://synchro.net/Synchronet/]]. |
===== Uses ===== | ===== Uses ===== |
* Use 16-bit DOS terminal programs (e.g. Telix, ProComm, Qmodem, Telemate, etc.) to connect to Internet-connected BBSes | * Use 16-bit DOS terminal programs (e.g. Telix, ProComm, Qmodem, Telemate, etc.) to connect to Internet-connected BBSes |
* Telnet client and server support | * Telnet client and server support |
* Raw TCP client and server support | * Raw TCP client and server support |
| * Play optional sound (wave) files upon "ring", connection, and disconnection |
* Accurate Hayes Smartmodem / USRobotics Sportster Modem "AT Command Set" emulation | * Accurate Hayes Smartmodem / USRobotics Sportster Modem "AT Command Set" emulation |
* Complete with virtual NVRAM settings/number storage (i.e. AT&W, AT&Zn=S) | * Complete with virtual NVRAM settings/number storage (i.e. AT&W, AT&Zn=S) |
AT&ZL? | AT&ZL? |
| |
Save dial strings (numbers) can be dialed by using the ''ATDSn'' command: | Saved dial strings (numbers) can be dialed by using the ''ATDSn'' command: |
ATDS0 | ATDS0 |
| |
If your DOS terminal program of choice has trouble dialing long dial strings (e.g. accommodating long DNS hostnames or IPv6 addresses), try using the saved number storage feature to resolve that limitation. After enter the following command, dialing "S0" as a "phone number" would actually connect to "telnet:vert.synchro.net:23". | If your DOS terminal program of choice has trouble dialing long dial strings (e.g. accommodating long DNS hostnames or IPv6 addresses), try using the saved number storage feature to resolve that limitation. After enter the following command, dialing "S0" as a "phone number" would actually connect to "telnet:vert.synchro.net:23". |
AT&Z0=telnet:vert.synchro.net:23 | AT&Z0=telnet:vert.synchro.net:23 |
| |
| Another option for dialing longer dial strings is to specify "aliases" in the ''[alias]'' section of your ''svdm.ini'' file. Any combination of printable ASCII characters may be used for a dial string alias, except for the colon ('':'') and equals (''='') characters. |
| <code ini> |
| [alias] |
| vertrauen=telnet:vert.synchro.net:23 |
| </code> |
| ATDvertrauen |
| |
===== Configure ===== | ===== Configure ===== |
| //Root// | ''BusyNotice'' | hard-coded | Message to send before disconnecting remote connections when already-servicing a remote client/user connection | | | //Root// | ''BusyNotice'' | hard-coded | Message to send before disconnecting remote connections when already-servicing a remote client/user connection | |
| //Root// | ''AnswerBanner'' | hard-coded | Message to display upon incoming connections, blank to disable | | | //Root// | ''AnswerBanner'' | hard-coded | Message to display upon incoming connections, blank to disable | |
| | //Root// | ''RingSound'' | //blank// | Wave file to play upon incoming "ring" | |
| | //Root// | ''ConnectSound'' | //blank// | Wave file to play upon connection | |
| | //Root// | ''DisconnectSound'' | //blank// | Wave file to play upon disconnection | |
| //Root// | ''IpFilterFile'' | //blank// | Path/filename of file containing lists of IP addresses/patterns/ranges to reject incoming connections from | | | //Root// | ''IpFilterFile'' | //blank// | Path/filename of file containing lists of IP addresses/patterns/ranges to reject incoming connections from | |
| //Root// | ''clientFile'' | ''client.ini'' | File to write incoming connected client information (e.g. IP address), blank to disable | | | //Root// | ''clientFile'' | ''client.ini'' | File to write incoming connected client information (e.g. IP address), blank to disable | |
| | //Root// | ''MainLoopDelay'' | ''0'' | Milliseconds to yield CPU in application main loop | |
| | //Root// | ''SocketSelectTimeout'' | ''0'' | Milliseconds to wait for receive data on TCP socket | |
| ''Modem'' | ''AutoAnswer'' | ''false'' | Automatically answer/accept incoming TCP-connection attempts (''ATS0'') | | | ''Modem'' | ''AutoAnswer'' | ''false'' | Automatically answer/accept incoming TCP-connection attempts (''ATS0'') | |
| ''Modem'' | ''CallerID'' | ''false'' | Incoming/client IP address reporting between RING results (''AT+VCID'' or ''AT#CID'') | | | ''Modem'' | ''CallerID'' | ''false'' | Incoming/client IP address reporting between RING results (''AT+VCID'' or ''AT#CID'') | |
| ''UART'' | ''IRQ'' | //depends// | Hardware interrupt request (IRQ) line to virtualize, e.g. 4 | | | ''UART'' | ''IRQ'' | //depends// | Hardware interrupt request (IRQ) line to virtualize, e.g. 4 | |
| ''UART'' | ''Address'' | //depends// | Hardware I/O port base address (use ''0x'' prefix for hexadecimal notation, e.g. ''0x3f8'') | | | ''UART'' | ''Address'' | //depends// | Hardware I/O port base address (use ''0x'' prefix for hexadecimal notation, e.g. ''0x3f8'') | |
| ''sockopts'' | various | | See ''[[config:sockopts.ini]]'' | | | ''alias'' | various | | Each key is a unique dial string alias (e.g. ''mybbs = protocol:address:port'') | |
| | ''sockopts'' | various | | Options listed at ''[[config:sockopts.ini]]'' may be included in the ''[sockopts]'' section (for advanced uses only) | |
| |
Settings changed via modem AT command take precedence over command-line options which take precedence over .ini file settings. | Settings changed via modem AT command take precedence over command-line options which take precedence over ''.ini'' file settings. |
| |
Settings in the //Root// section may also be specified in a program-specific section (named after the program itself), to create program-specific settings. | Settings in the //Root// section may also be specified in a program-specific section (named after the program itself), to create program-specific settings. |
| ''Hn'' | Control ON/OFF hook (e.g. ''ATH0'' to hang-up) | | | ''Hn'' | Control ON/OFF hook (e.g. ''ATH0'' to hang-up) | |
| ''In'' | Display modem information | | | ''In'' | Display modem information | |
| | ''Ln'' | Control speaker volume (ignored) | |
| | ''Mn'' | Enable speaker (e.g. ''ATM1'' enables wave file playback) | |
| ''O'' | Return online (from command mode) | | | ''O'' | Return online (from command mode) | |
| ''Qn'' | Display/suppress result codes (e.g. ''ATQ1'' enables //quiet mode//) | | | ''Qn'' | Display/suppress result codes (e.g. ''ATQ1'' enables //quiet mode//) | |
| | ''P'' | Pulse mode dialing (ignored) | |
| ''Sr=n''| Set register //r// to //n//. | | | ''Sr=n''| Set register //r// to //n//. | |
| ''Sr?'' | Display value of S-Register //r//. | | | ''Sr?'' | Display value of S-Register //r//. | |
| | ''T'' | Tone mode dialing (ignored) | |
| ''Vn'' | Control verbal result codes (e.g. ''ATV0'' enables //numeric// result mode) | | | ''Vn'' | Control verbal result codes (e.g. ''ATV0'' enables //numeric// result mode) | |
| ''Xn'' | Control extended result codes (e.g. ''ATX0'' disables extended result codes) | | | ''Xn'' | Control extended result codes (e.g. ''ATX0'' disables extended result codes) | |
| ''Z'' | Initialize/re-initialize modem | | | ''Z'' | Initialize/re-initialize modem (e.g. re-read ''.ini'' file) | |
| ''&W'' | Write modem settings to ''.ini'' file | | | ''&W'' | Write modem settings to ''.ini'' file | |
| ''&Zn=s'' | Store a dial string //s// into slot //n// (0-19) | | | ''&Zn=s'' | Store a dial string //s// into slot //n// (0-19) | |
| ''&Zn=L'' | Store last-dialed string into slot //n// (0-19) | | | ''&Zn=L'' | Store last-dialed string into slot //n// (0-19) | |
| ''&Zn?'' | Display saved dial string from slot //n// | | | ''&Zn?'' | Display saved dial string from slot //n// | |
| ''&ZL?'' | Display last dialed string | | | ''&ZL?'' | Display last dialed string | |
| | ''+VCID=n'' | Control Caller ID reporting (alias: ''#CID='') | |
| | ''+VCID?'' | Query Caller ID enabled status (alias: ''#CID?'') | |
| |
S-Registers store additional/advanced modem settings as decimal-numeric values: | S-Registers store additional/advanced modem settings as decimal-numeric values: |