====== Synchronet DOS Shell (SDOS) - User Guide ======

The **DOS Shell** (''sdos.js'', listed as //DOS Shell// or //Simulated MS-DOS// in the shell chooser) makes the BBS look and act like a PC running **MS-DOS 5.0**. Instead of pressing command keys at a menu prompt, you type DOS commands at a ''C:\>'' prompt. The BBS's features are "programs" on drive C:, and you run them the way you would have run a program in 1994.

If your BBS uses a different shell, see [[user:shell:|Command Shells]].

===== The drive =====

After you log on, the shell "boots" and leaves you at the root directory of drive C:

<code>
Specified COMMAND search directory bad

Microsoft(R) MS-DOS(R) Version 5.00
             (C)Copyright Microsoft Corp 1981-1991.

C:\>
</code>

(The error on the first line is part of the joke.) Drive C: holds:

^ Directory ^ Contains ^
| ''C:\'' | General programs: ''CHAT'', ''DOORS'', ''GFILES'', ''AUTOMSG'', ''SETUP'', ''LOGOFF'', ''HELP'', ''OPEN'', and some text files you can read with ''TYPE'' |
| ''C:\FILES'' | File transfer programs: ''LIST'', ''DOWNLOAD'', ''UPLOAD'', ''VIEW'', ''NEWSCAN'', ''AREA'', ... |
| ''C:\MAIL'' | E-mail and message programs: ''READ'', ''SEND'', ''POST'', ''READMSGS'', ''NEWSCAN'', ''QWK'', ''AREA'', ... |
| ''C:\DOORS'' | One subdirectory for each external program (door) section you can access, with one ''.EXE'' for each door in it |

Use ''DIR'' to see what's in a directory and ''CD'' to move around, just as in DOS:

<code>
C:\>cd mail

C:\MAIL>dir

 Volume in drive C is BBS
 Volume Serial Number is 8317-6BE8
 Directory of C:\MAIL

.            <DIR>     08-01-94   2:34p
..           <DIR>     08-01-94   2:34p
SEND     EXE     54343 06-02-94   8:36a
SENDFILE EXE     58981 06-02-94   8:36a
NETMAIL  EXE     30566 06-02-94   8:36a
FEEDBACK EXE     12803 06-02-94   8:36a
READ     EXE    102485 06-02-94   8:36a
READSENT EXE    114705 06-02-94   8:37a
POST     EXE     81380 06-04-94   4:56p
NEWSCAN  COM      3146 06-02-94   8:36a
READMSGS EXE    287347 06-04-94   4:56p
YOURMSGS COM      1969 06-04-94   4:56p
FIND     COM      5193 06-04-94   4:57p
QWK      EXE    159876 06-02-94   8:35a
AREA     COM       905 06-02-94   8:35a
CONFIG   COM      2517 06-02-94   8:35a
       16 file(s)     916216 bytes
                  83886080 bytes free

C:\MAIL>
</code>

The drive is **read-only**. Commands that would change it (''DEL'', ''COPY'', ''REN'', ''MD'', ''RD'', or redirecting output with ''>'' or ''|'') fail with the error MS-DOS would have given, such as ''Access denied'' or ''Write protect error writing drive C''. Nothing on the BBS is changed. Drives ''A:'' and ''B:'' are "not ready", and any other drive letter is an ''Invalid drive specification''.

===== Running programs =====

Programs are found the way MS-DOS finds them:

  * By name, from the **current directory**: in ''C:\MAIL'', type ''READ''.
  * By name, from any directory on the **PATH**: the PATH starts out as ''C:\'', so the programs in the root directory (''CHAT'', ''DOORS'', ''LOGOFF'', ''HELP'', ...) work from anywhere.
  * By **relative or absolute path**: ''MAIL\READ'', ''\MAIL\READ'', ''C:\MAIL\READ'', or ''..\MAIL\READ''.
  * The extension is optional: ''READ'' and ''READ.EXE'' both work. A wrong extension (''READ.COM'') does not.

Anything that isn't a command or a program gets ''Bad command or file name''.

Some programs take a parameter on the command line, saving you a prompt:

^ Example ^ Does ^
| ''LIST *.ZIP'' | Lists the ZIP files in the current file area |
| ''DOWNLOAD SBBS*.ZIP'' | Downloads the matching files |
| ''VIEW FOO.ZIP'' / ''EXTENDED FOO.ZIP'' / ''REMOVE FOO.ZIP'' | Views, shows extended information about, or removes a file |
| ''SEND Joe'' / ''SENDFILE Joe'' | Sends e-mail (''SEND SYSOP'' mails the sysop) |
| ''NETMAIL joe@example.com'' | Sends network e-mail |
| ''OPEN lordjs'' | Runs an external program by its internal code |

Type ''HELP'' for a list of every command and program with a one-line description, or add ''/?'' to any command (''DIR /?'', ''SEND /?'') for its usage.

==== Doors ====

''DOORS'' by itself opens the BBS's usual external programs menu. You can also run a door directly as a program: each section you can access is a directory under ''C:\DOORS'', and each door in it is an ''.EXE'' named after the door's internal code:

<code>
C:\>cd \doors\games

C:\DOORS\GAMES>dir /w
...
C:\DOORS\GAMES>lordjs
</code>

DOS names are at most 8 characters, so a longer code is shortened in the Windows 95 style, for example ''GLOBAL~1.EXE''. A door you can see but aren't allowed to run gives ''Access denied''.

===== DOS commands =====

These work as they did in MS-DOS 5.0:

^ Command ^ Notes ^
| ''DIR'' | Lists a directory. Supports wildcards (''DIR S*'', ''DIR *.COM''), a path (''DIR \MAIL''), and the switches ''/W'' (wide), ''/B'' (bare), ''/S'' (subdirectories), ''/O'' (sorted; ''/ON'', ''/OS'', ''/O-D'', ...), ''/L'' (lowercase) and ''/P'' (pause each screen). Dates are always shown MS-DOS style (MM-DD-YY), whatever date format you've chosen in your user settings. |
| ''CD'' / ''CHDIR'' | Changes directory. ''CD..'', ''CD\'' and ''CD\MAIL'' (no space) work too. ''CD'' alone shows the current directory. |
| ''TYPE'' | Displays a text file. In ''C:\'': ''NODES.TXT'' (all nodes), ''WHO.TXT'' (who's online), ''LOGON.LST'' (today's callers), ''USERS.LST'' (user list), ''SYSTEM.NFO'' (system information), ''YOUR.NFO'' (your account information), plus ''AUTOEXEC.BAT'' and ''CONFIG.SYS''. |
| ''CLS'' | Clears the screen |
| ''ECHO'' | ''ECHO message'' displays a message, ''ECHO.'' displays a blank line, and ''ECHO OFF'' hides the prompt (''ECHO ON'' brings it back) |
| ''SET'' | Shows the environment, or sets a variable: ''SET NAME=value''. ''SET NAME='' removes one. |
| ''PATH'' | Shows or sets the program search path. ''PATH ;'' clears it (then only the current directory is searched). |
| ''PROMPT'' | Changes the prompt, using MS-DOS's ''$'' codes: ''$P'' drive and path, ''$G'' ''>'', ''$N'' drive, ''$D'' date, ''$T'' time, ''$V'' DOS version, ''$_'' new line, ''$E'' escape (for ANSI colors), ''$$'' dollar sign. ''PROMPT'' alone gives you the plain ''C>'' prompt; ''PROMPT $P$G'' restores the usual one. |
| ''DATE'' / ''TIME'' | Show the date or time and let you "set" it. This only changes the DOS clock in your session (what ''$D''/''$T'' and ''DATE''/''TIME'' show), not the BBS. |
| ''VER'' | Shows the MS-DOS version, followed by the BBS software version |
| ''VOL'' | Shows the volume label and serial number |
| ''COMMAND'' | Starts a second copy of the command interpreter; ''EXIT'' returns to the first, undoing any ''SET''/''PATH''/''PROMPT'' changes made in the second. ''COMMAND /C command'' runs just one command. |
| ''AUTOEXEC'' | Runs ''AUTOEXEC.BAT'', which resets the prompt and path |
| ''EXIT'' | Logs off immediately (in a second copy of ''COMMAND'', returns to the first instead) |
| ''BREAK'', ''VERIFY'', ''CHCP'', ''REM'', ''PAUSE'', ''LH'' | Accepted, for completeness |

Command names are **case-insensitive**. Use the **up** and **down arrow keys** to recall earlier command lines (like DOSKEY), or type the start of an earlier command and press **Tab** to complete it.

Your current directory, environment, and command history are kept for your whole session, including after ''SETUP''.

===== Other BBS commands =====

  * ''SETUP'' changes your [[user:settings|user settings]], including which command shell you use.
  * ''LOGOFF'' logs off with the usual confirmation (and offers to download any files in your batch queue first); ''EXIT'' hangs up without asking.
  * Lines starting with a semicolon (''%%;%%'') are passed to Synchronet's string commands, as in the other shells.
  * Sysops also have ''SYSOP.EXE'' in ''C:\'' for the sysop menu.

===== Notes for sysops =====

  * The shell is ''[[dir:exec]]/sdos.js''. Before v3.22 it was a [[util:Baja|Baja]] shell (''sdos.src''/''sdos.bin''), and its ''DIR'' output came from the display files ''text/menu/sdos/*.asc''. Those files are no longer used and can be deleted.
  * The contents of drive C: (names, sizes, dates, which programs appear) are defined in the script. To customize them, copy ''sdos.js'' to your [[dir:mods]] directory and edit the copy there.
  * The ''C:\DOORS'' tree is built from your external program sections, honoring each section's and program's access requirements.
  * The "bytes free" figure is the real free space on the disk holding the BBS's temp directory.

===== See Also =====

  * [[user:shell:|Command Shells (User Guide)]]
  * [[custom:command_shell|Command Shell (sysop / configuration perspective)]]
  * [[user:settings|User Settings]]

{{tag>user shell sdos}}
