# Shells Turaco-DOS reserves a portion of main memory for a "shell", a program which exists to load and run other programs, and handle their return values. This shell might be a command line, or some other program that manages other programs, such as a batch file interpreter. The active shell has a "resident" portion of memory, which stays in memory as long as the shell is active, and a "transient" portion of memory which is only used while the shell is not running an external program. When the shell runs a program, and that program exits, its main function returns a two-byte value; this value is stored in a specific memory address, and used by the shell as the "status" code for the program's exit. Like Unix, a zero value is considered a normal exit, with any positive value being some type of error. Additionaly, when running a program, the shell can provide the program with a sequence of arguments, which populate the two arguments to the main() function.