aboutsummaryrefslogtreecommitdiff
path: root/docs/user
diff options
context:
space:
mode:
authorBen Burwell <ben@benburwell.com>2015-04-01 20:47:40 -0400
committerBen Burwell <ben@benburwell.com>2015-04-01 20:47:40 -0400
commit4a04db9470cc0492a4bfb9752de14d8e12209177 (patch)
tree52ea5efdefb181ed9b76d3e749766f2924b69044 /docs/user
parentd8463e5ebbf8805c30ee6402e6667eb5f78446cc (diff)
add docs
Diffstat (limited to 'docs/user')
-rw-r--r--docs/user/UserMan.pdfbin0 -> 188050 bytes
-rw-r--r--docs/user/UserMan.tex35
-rw-r--r--docs/user/description_of_commands.tex618
-rw-r--r--docs/user/overview_of_comhan.tex38
-rw-r--r--docs/user/summary_of_commands.tex20
-rw-r--r--docs/user/summary_of_errors.tex40
6 files changed, 751 insertions, 0 deletions
diff --git a/docs/user/UserMan.pdf b/docs/user/UserMan.pdf
new file mode 100644
index 0000000..d27fe8d
--- /dev/null
+++ b/docs/user/UserMan.pdf
Binary files differ
diff --git a/docs/user/UserMan.tex b/docs/user/UserMan.tex
new file mode 100644
index 0000000..7e0a52f
--- /dev/null
+++ b/docs/user/UserMan.tex
@@ -0,0 +1,35 @@
+\documentclass[11pt]{book}
+\usepackage{amsmath}
+\usepackage{amssymb}
+\usepackage{makeidx}
+\usepackage{graphicx}
+\usepackage{tabularx}
+\usepackage{makeidx}
+
+
+\author{B. Burwell and A. Morash}
+\title{MPX--OS User Manual}
+\date{Fall 2013}
+\makeindex
+
+
+
+\begin{document}
+
+\maketitle
+
+\frontmatter
+\tableofcontents
+
+\mainmatter
+\include{overview_of_comhan}
+\include{summary_of_commands}
+\include{description_of_commands}
+\include{summary_of_errors}
+
+\printindex
+
+\backmatter
+
+
+\end{document} \ No newline at end of file
diff --git a/docs/user/description_of_commands.tex b/docs/user/description_of_commands.tex
new file mode 100644
index 0000000..0b2a3c4
--- /dev/null
+++ b/docs/user/description_of_commands.tex
@@ -0,0 +1,618 @@
+\chapter{Detailed Description of Each Command}
+\label{description_of_commands}
+
+\section{\tt version}
+\index{version@{\tt version}}
+\label{version_cmd}
+
+This command will display some information about the current version of MPX that is
+running.
+
+\subsection{Syntax}
+The command has the form {\tt version}.
+
+\subsection{Usage}
+The command can be called from the MPX prompt at any time.
+
+\subsection{Example}
+\begin{enumerate}
+ \item To get the version of MPX-OS that is currently running: \\
+ {\bf Input:} {\tt version} \\
+ {\bf Output:} {\tt MPX OS - Version 1.0}
+\end{enumerate}
+
+\subsection{Possible Errors}
+There are no error conditions.
+
+
+
+
+
+
+
+
+\section{\tt date}
+\index{date@{\tt date}}
+\label{date_cmd}
+
+This command is used to retrieve and set the system date. Note that the date does not
+actually increment as time passes.
+
+\subsection{Syntax}
+The command optionally takes a date string formatted as {\tt mm/dd/yyyy} where {\tt mm}
+is a two-digit one-based integer representing the month ({\tt 01} corresponding to January,
+{\tt 02} to February, and so on), {\tt dd} similarly corresponding to a one-based date of
+month, and {\tt yyyy} a year.
+
+The command has the form {\tt date [mm/dd/yyyy]}.\footnote{Note that in this document, we
+use {\tt [ ]} to denote optional parameters.}
+
+\subsection{Usage}
+The command can be called from the MPX prompt at any time.
+
+\subsection{Example}
+\begin{enumerate}
+ \item To get the current system date: \\
+ {\bf Input:} {\tt date} \\
+ {\bf Output:} {\tt 12/04/2013}
+ \item To set the system date: \\
+ {\bf Input:} {\tt date 12/04/2013} \\
+ {\bf Output:} None.
+ \item Attempting to set an invalid date: \\
+ {\bf Input:} {\tt date 99/99/9999} \\
+ {\bf Output:} {\tt Invalid date.}
+\end{enumerate}
+\subsection{Possible Errors}
+The message ``Invalid date'' will be displayed if the date is not in a valid format, i.e.
+the month is not between 1 and 12 or date not between 1 and 31, year not a number.
+
+
+
+
+
+
+
+
+\section{\tt directory}
+\index{directory@{\tt directory}}
+\label{directory_cmd}
+
+The directory command will display a listing of all available MPX programs that can be
+loaded and run, along with their sizes.
+
+\subsection{Syntax}
+
+The command has the form {\tt directory}.
+
+\subsection{Usage}
+
+The command can be called from the MPX prompt at any time.
+
+\subsection{Example}
+\begin{enumerate}
+ \item Get a listing of programs when there are none: \\
+ {\bf Input:} {\tt directory} \\
+ {\bf Output:} {tt You have no programs}
+ \item Get a listing of programs when there is one: \\
+ {\bf Input:} {\tt directory} \\
+ {\bf Output:} {tt You have 1 program}
+ \item Get a listing of programs when there are four: \\
+ {\bf Input:} {\tt directory} \\
+ {\bf Output:} {tt You have 4 programs}
+\end{enumerate}
+
+\subsection{Possible Errors}
+This command will not generate any errors.
+
+
+
+
+
+
+
+
+\section{\tt stop}
+\index{stop@{\tt stop}}
+\label{stop_cmd}
+
+The stop command allows the user to exit MPX-OS and return to DOS. When the command is
+issued, the user will be prompted to confirm their action by typing the character {\tt y}.
+If any other character is entered, the user will remain in MPX-OS.
+
+\subsection{Syntax}
+
+The command has the form {\tt stop}.
+
+\subsection{Usage}
+
+The command can be called at any time through the MPX prompt.
+
+\subsection{Example}
+\begin{enumerate}
+ \item User calls stop, but does not want to exit: \\
+ {\bf Input:} {\tt stop} \\
+ {\bf Output:} {\tt Are you sure you want to exit? [y/n]:} \\
+ {\bf Input:} {\tt n} \\
+ {\bf Output:} None.
+ \item User calls stop, and does confirm wanting to exit: \\
+ {\bf Input:} {\tt stop} \\
+ {\bf Output:} {\tt Are you sure you want to exit? [y/n]:} \\
+ {\bf Input:} {\tt y} \\
+ {\bf Output:} {\tt ** COMHAN execution complete **}
+
+\end{enumerate}
+\subsection{Possible Errors}
+
+There are no error conditions.
+
+
+
+
+
+
+
+
+\section{\tt help}
+\index{help@{\tt help}}
+\label{help_cmd}
+
+The help command allows the user to get help about using MPX commands. If the command is
+run with no options, a brief description of all commands. Alternately, if called with the
+name of a command as an option, it will give only the description of that command.
+
+\subsection{Syntax}
+
+The command has the form {\tt help [command]}.
+
+\subsection{Usage}
+
+The command can be called at any time through the MPX prompt.
+
+\subsection{Example}
+\begin{enumerate}
+ \item User wants help for all processes: \\
+ {\bf Input:} {\tt help} \\
+ {\bf Output:} \\
+ \begin{tabular}{ll}
+ {\tt Name } & \tt{Use } \\
+ {\tt ==================== } & \tt{=================================================} \\
+ {\tt version } & \tt{Display version number } \\
+ {\tt help } & \tt{Provide information about commands } \\
+ {\tt directory } & \tt{List .mpx files } \\
+ {\tt date [mm/dd/yyyy] } & \tt{Display or set the system date } \\
+ {\tt stop } & \tt{Terminate execution of COMHAN } \\
+ {\tt prompt string } & \tt{Change the prompt for commands } \\
+ {\tt alias command=string } & \tt{Create an alias for a command } \\
+ {\tt show } & \tt{Prints PCB information } \\
+ {\tt allocate } & \tt{Builds PCB with specified options } \\
+ {\tt free name } & \tt{Frees the PCB called name } \\
+ {\tt load name[=ppp] } & \tt{Creates a process called name with priority ppp } \\
+ {\tt resume name } & \tt{Resumes the process called name } \\
+ {\tt run name[=ppp] } & \tt{Runs a process called name with priority ppp } \\
+ {\tt suspend name } & \tt{Suspends the process called name } \\
+ {\tt terminate name } & \tt{Terminates the process called name } \\
+ {\tt setpriority name=ppp } & \tt{Sets the priority of process name } \\
+ {\tt dispatch } & \tt{Runs each process once } \\
+ {\tt clock [stop|start] } & \tt{Perform clock operations } \\
+ \end{tabular}
+
+ \item User wants help for the {\tt show} command: \\
+ {\bf Input:} {\tt help show} \\
+ {\bf Output:} \\
+ \begin{tabular}{ll}
+ {\tt Name } & \tt{Use } \\
+ {\tt ==================== } & \tt{=================================================} \\
+ {\tt show } & \tt{Prints PCB information } \\
+ \end{tabular}
+
+\end{enumerate}
+\subsection{Possible Errors}
+
+There are no error conditions for this command.
+
+
+
+
+
+
+
+
+\section{\tt prompt}
+\index{prompt@{\tt prompt}}
+\label{prompt_cmd}
+
+This command is used to alter the prompt that is displayed to the user by the command
+handler. For example, the user could change the prompt from the default {\tt mpx>} to
+{\tt >>}.
+
+\subsection{Syntax}
+
+The command has the form {\tt prompt string}, where {\tt string} is the new prompt.
+
+\subsection{Usage}
+
+The command can be called from the MPX prompt at any time.
+
+\subsection{Example}
+\begin{enumerate}
+ \item User wants to set the prompt to ``os'': \\
+ {\bf Input:} {\tt prompt os} \\
+ {\bf Output:} No output.
+\end{enumerate}
+
+\subsection{Possible Errors}
+
+If a {\tt string} is not passed, the user will receive the error ``No prompt specified.''
+
+
+
+
+
+
+
+
+\section{\tt alias}
+\index{alias@{\tt alias}}
+\label{alias_cmd}
+
+The alias command allows the user to make an alias for any of the commands. For example,
+if the user needs to access the value of the system clock in rapid succession, the
+{\tt clock} command could be aliased to simply {\tt c}.
+
+\subsection{Syntax}
+
+The syntax for this command is: {\tt alias command=new}, with {\tt command} the name of
+the command to be aliased, and {\tt new} the string that should be made equivalent to
+{\tt command}.
+
+\subsection{Usage}
+
+The command can be called from the MPX prompt at any time.
+
+\subsection{Example}
+\begin{enumerate}
+ \item Setting ``c'' to be an alias for ``clock'': \\
+ {\bf Input:} {\tt alias clock=c} \\
+ {\bf Output:} None.
+\end{enumerate}
+\subsection{Possible Errors}
+
+If {\tt command} or {\tt new} are not specified, the user will receive the error ``No
+prompt specified.''
+
+
+
+
+
+
+
+
+\section{\tt show}
+\index{show@{\tt show}}
+\label{show_cmd}
+
+The show command is used to view the status of various processes.
+
+\subsection{Syntax}
+
+The command is of the form {\tt show type}, where type is one of {\tt free}, {\tt all},
+{\tt system}, {\tt application}, {\tt suspended}, {\tt ready}, or {\tt init}.
+
+\subsection{Usage}
+
+\begin{enumerate}
+ \item[{\tt free}] Display all free process control blocks.
+ \item[{\tt all}] Display all process control blocks.
+ \item[{\tt system}] Display all system processes.
+ \item[{\tt application}] Display all application processes.
+ \item[{\tt suspended}] Display all suspended processes.
+ \item[{\tt ready}] Display all ready processes.
+ \item[{\tt init}] Display all processes that are waiting for I/O.
+\end{enumerate}
+
+If a type is not given by the user, a message describing the possible values is displayed.
+
+\subsection{Example}
+\begin{enumerate}
+ \item User wants a listing of all process control blocks: \\
+ {\bf Input:} {\tt show all} \\
+ {\bf Output:} A table of data about all process control blocks.
+\end{enumerate}
+\subsection{Possible Errors}
+
+If the type specified is not one of the valid types, an empty table will be displayed.
+
+
+
+
+
+
+
+\section{\tt load}
+\index{load@{\tt load}}
+\label{load_cmd}
+
+This command loads a program file into memory and prepares it for execution by MPX-OS.
+
+\subsection{Syntax}
+
+The command has the form {\tt load proc[=ppp]} where {\tt proc} is the name of the process
+to be loaded (and stored in the file {\tt proc.mpx}), and {\tt ppp} is an optional
+execution priority (default is zero). The priority $p$ must satisfy $-127 < p < 127$.
+
+\subsection{Usage}
+
+The command can be called from the MPX prompt at any time.
+
+\subsection{Example}
+\begin{enumerate}
+ \item User wants to load the process ``proc1'': \\
+ {\bf Input:} {\tt load proc1} \\
+ {\bf Output:} None.
+ \item User wants to load the process ``proc2'' with priority 100: \\
+ {\bf Input:} {\tt load proc2=100} \\
+ {\bf Output:} None.
+\end{enumerate}
+\subsection{Possible Errors}
+
+Several errors and warnings can occur when calling the command. If there is no file named
+{\tt proc.mpx} where {\tt proc} is the name argument to the load command, the message
+``Error: No program found with that name'' will be displayed and the program will not be
+loaded.
+
+If the program file does exist, but MPX-OS is unable to allocate sufficient memory for it
+to be loaded, the message ``Error: Insufficient memory'' will be displayed and the program
+will not be loaded.
+
+If there is sufficient memory, but the system encounters an error while loading the
+program file into memory, the message ``Error: Could not load program into memory'' will
+be displayed, and again, the program will not be loaded.
+
+If an invalid priority was specified by the user, the message ``Warning: invalid priority
+specified, using default'' will be displayed. MPX-OS will continue to load the program,
+but with zero as the priority.
+
+If there are no available process control blocks to allocate to the process, MPX cannot
+run the program at this time. In this case, the message ``Error: No free PCBs'' will be
+displayed and the program will not be loaded.
+
+In the case that there is an error building the process control block for the process that
+has been loaded into memory, MPX-OS will not be able to execute it. Thus, the memory will
+be deallocated and the message ``Error: Unable to build PCB'' will be displayed to the
+user.
+
+
+
+
+
+
+\section{\tt resume}
+\index{resume@{\tt resume}}
+\label{resume_cmd}
+
+The resume command allows a suspended process to continue running.
+
+\subsection{Syntax}
+
+The resume command has the format {\tt resume name|*}.\footnote{Note that we are using {\tt |} to denote ``or.''} If a {\tt name} is given, MPX-OS
+will attempt to find a process named {\tt name} and resume it. Otherwise, if {\tt *} is
+given, MPX-OS will resume all currently suspended processes.
+
+\subsection{Usage}
+
+The resume command is used when the user has suspended a process and wishes it to resume
+its execution.
+
+\subsection{Example}
+\begin{enumerate}
+ \item User wants to resume the process {\tt proc}: \\
+ {\bf Input:} {\tt resume proc} \\
+ {\bf Output:} None.
+ \item User wants to resume all processes: \\
+ {\bf Input:} {\tt resume *} \\
+ {\bf Output:} None.
+\end{enumerate}
+\subsection{Possible Errors}
+
+When {\tt resume} is called with no options, a message reminding the user to enter the
+name of a process to resume or an asterisk is displayed.
+
+If a name was given as the option, but MPX-OS cannot find a process with that name, the
+message ``No process named $x$'' will be displayed.
+
+Upon correct execution, there will be no output.
+
+
+
+
+
+\section{\tt run}
+\index{run@{\tt run}}
+\label{run_cmd}
+
+The run command behaves similarly to the load command, with the difference being quite
+minor. Whereas the load command simply allocated memory and set up a process control block
+for a process to be later run by a user using the resume command, the run command
+compresses these steps into one operation. Put simply, the run command does just that: it
+load a program from the disk and runs it.
+
+\subsection{Syntax}
+
+The command has the form {\tt run proc[=ppp]} where {\tt proc} is the name of the program
+(i.e., there is a file named {\tt proc.mpx}) and {\tt ppp} is the priority that should be
+used, where {\tt ppp} satisfies the condition $-127 < {\tt ppp} < 127$.
+
+\subsection{Usage}
+Usage
+\subsection{Example}
+\begin{enumerate}
+ \item User wants to run the process ``proc1'': \\
+ {\bf Input:} {\tt run proc1} \\
+ {\bf Output:} None.
+ \item User wants to run the process ``proc2'' with priority 100: \\
+ {\bf Input:} {\tt run proc2=100} \\
+ {\bf Output:} None.
+\end{enumerate}
+\subsection{Possible Errors}
+
+Since the run command first loads the process, all of the error messages from the load
+command can be obtained by using the run command.
+
+In addition, if there was an error loading the process, the message ``Error: process did
+not load correctly'' will be displayed.
+
+
+
+
+
+
+
+\section{\tt suspend}
+\index{suspend@{\tt suspend}}
+\label{suspend_cmd}
+
+The suspend command is used when a running program needs to be temporarily paused.
+
+\subsection{Syntax}
+
+The command has the form {\tt suspend proc|*} where {\tt proc} is the name of the program
+to be suspended. If the {\tt *} option is used, all running application processes will be
+suspended.
+
+\subsection{Usage}
+The command can be called whenever there is a running program.
+
+\subsection{Example}
+\begin{enumerate}
+ \item User wants to suspend the process {\tt proc}: \\
+ {\bf Input:} {\tt suspend proc} \\
+ {\bf Output:} None.
+ \item User wants to suspend all processes: \\
+ {\bf Input:} {\tt suspend *} \\
+ {\bf Output:} None.
+\end{enumerate}
+\subsection{Possible Errors}
+
+If there is no process named {\tt proc}, the message ``No process with the specified name''
+will be displayed.
+
+
+
+
+
+
+
+\section{\tt terminate}
+\index{terminate@{\tt terminate}}
+\label{terminate_cmd}
+
+The terminate command frees the PCB that was associated with an application process and
+frees the memory that was in use by the program.
+
+\subsection{Syntax}
+
+Similarly to the resume and suspend commands, the format is {\tt terminate name|*}, where
+{\tt name} corresponds to the name of the application process to be terminated, and {\tt *}
+to the fact that all application processes should be terminated.
+
+\subsection{Usage}
+
+The command can be run when there are currently running or suspended application processes.
+
+\subsection{Example}
+\begin{enumerate}
+ \item User wants to terminate the process {\tt proc}: \\
+ {\bf Input:} {\tt terminate proc} \\
+ {\bf Output:} None.
+ \item User wants to terminate all processes: \\
+ {\bf Input:} {\tt terminate *} \\
+ {\bf Output:} None.
+\end{enumerate}
+\subsection{Possible Errors}
+
+If there is no process called {\tt name}, the message ``No process with the specified name''
+will be displayed.
+
+
+
+
+
+
+
+\section{\tt setpriority}
+\index{setpriority@{\tt setpriority}}
+\label{setpriority_cmd}
+
+The setpriority command allows the user to specify an execution priority for a process.
+
+\subsection{Syntax}
+The format of the command is {\tt setpriority name=ppp} where {\tt name} refers to the
+name of the affected process and {\tt ppp} to the priority. As only the priority of
+application processes can be set, $-127 < {\tt ppp} < 127$ must be satisfied.
+
+\subsection{Usage}
+The command can be called when there is a non-zero number of application processes in MPX.
+
+\subsection{Example}
+\begin{enumerate}
+ \item Set the priority of programm {\tt proc} to be $-90$: \\
+ {\bf Input:} {\tt setpriority proc=-90} \\
+ {\bf Output:} None.
+\end{enumerate}
+\subsection{Possible Errors}
+
+There are two possible errors from this command. First, the priority could be invalid, in
+which case the message ``Error: invalid priority'' will be displayed. In the other, there
+is not really any process with the name specified, and MPX-OS will display ``Error: invalid
+process name.''
+
+
+
+
+
+
+
+\section{\tt clock}
+\index{clock@{\tt clock}}
+\label{clock_cmd}
+
+The clock command is used to perform various tasks using the system clock. The clock can
+be stopped and started, set to a particular value, or have its value read.
+
+\subsection{Syntax}
+
+The command uses the form {\tt clock job|time}, where {\tt job} is one of {\tt stop},
+{\tt start} and {\tt time} is a string formatted as {\tt hh:mm:ss} with {\tt hh} hours,
+{\tt mm} minutes, and {\tt ss} seconds.
+
+\subsection{Usage}
+
+The clock command can be called at any time from the MPX-OS command handler.
+
+\subsection{Example}
+\begin{enumerate}
+ \item Starting the clock: \\
+ {\bf Input:} {\tt clock start} \\
+ {\bf Output:} None.
+ \item Stopping the clock: \\
+ {\bf Input:} {\tt clock stop} \\
+ {\bf Output:} None.
+ \item Getting the clock value: \\
+ {\bf Input:} {\tt clock} \\
+ {\bf Output:} {\tt The current time is 21:09:44}
+ \item Setting the system clock: \\
+ {\bf Input:} {\tt clock 21:09:44} \\
+ {\bf Output:} None.
+\end{enumerate}
+\subsection{Possible Errors}
+
+If for some reason, the clock is unable to be set, the message ``Error setting clock''
+will be displayed.
+
+
+
+
+
+
+
+
diff --git a/docs/user/overview_of_comhan.tex b/docs/user/overview_of_comhan.tex
new file mode 100644
index 0000000..e4b10b1
--- /dev/null
+++ b/docs/user/overview_of_comhan.tex
@@ -0,0 +1,38 @@
+\chapter{Overview of COMHAN}
+\label{overview_of_comhan}
+
+\section{The Command Handler}
+
+All of your interactions with MPX-OS \index{MPX-OS} will be through the
+``Command Handler,'' \index{Command Handler} referred to
+as ``comhan.'' The command handler is a process that is loaded when MPX-OS first starts
+and allows users to execute commands such as getting help, running programs, setting the
+date, and other system-wide functionality.
+
+To use the command handler, you must only start MPX. You will see the prompt {\tt mpx>}
+which indicates that the system is ready to accept commands. You may then type in a
+command on the keyboard and press return. The command handler will then attempt to parse
+your command. If what you have entered is a valid system command, MPX will execute your
+request and then prompt you for the next command. If the text you enter at the MPX prompt
+is not valid, you will see an error message.
+
+Note that the command handler parses your input case insensitively; that is, typing
+{\tt version}, {\tt VERSION}, and {\tt vERsiOn} at the prompt will result in identical
+output.
+
+All of the commands used in MPX-OS are listed in \ref{summary_of_commands}. Alternately,
+when in MPX-OS, the command {\tt help} will display a list of commands and a brief usage
+description. Of particular note, however, is the {\tt stop} command, which will terminate
+MPX-OS and return control of the computer to DOS.
+
+\section{A Note on Errors}
+
+When writing MPX-OS, we have subscribed to the philosophy that the user does not need to
+know what the system is doing unless it pertains to their actions. Thus, for the most part,
+the normal behavior of a command is to see no output. For example, when changing the
+prompt (see p. \pageref{prompt_cmd}), there is no ``prompt changed'' message; the user
+should be able to trust the system to perform correctly.
+
+Thus, messages will generally only be displayed when some unexpected behavior has occurred.
+For full and more precise details on exactly what the output of each command, see the
+appropriate documentation in this Manual.
diff --git a/docs/user/summary_of_commands.tex b/docs/user/summary_of_commands.tex
new file mode 100644
index 0000000..31a644e
--- /dev/null
+++ b/docs/user/summary_of_commands.tex
@@ -0,0 +1,20 @@
+\chapter{Summary of Commands}
+\label{summary_of_commands}
+
+\begin{tabular}{r c l}
+ {\tt version} & Page \pageref{version_cmd} & Prints the currently running version of MPX-OS. \\
+ {\tt date} & Page \pageref{date_cmd} & Prints or updates the system date. \\
+ {\tt directory} & Page \pageref{directory_cmd} & Prints a listing of MPX programs that may be run. \\
+ {\tt stop} & Page \pageref{stop_cmd} & Stops MPX-OS and returns to DOS. \\
+ {\tt help} & Page \pageref{help_cmd} & Prints help on MPX commands. \\
+ {\tt prompt} & Page \pageref{prompt_cmd} & Changes the MPX prompt. \\
+ {\tt alias} & Page \pageref{alias_cmd} & Adds an alias for an MPX command. \\
+ {\tt show} & Page \pageref{show_cmd} & Displays a table of MPX processes. \\
+ {\tt load} & Page \pageref{load_cmd} & Loads a program. \\
+ {\tt resume} & Page \pageref{resume_cmd} & Resumes a suspended program. \\
+ {\tt run} & Page \pageref{run_cmd} & Runs a program. \\
+ {\tt suspend} & Page \pageref{suspend_cmd} & Puts a program into the suspended state. \\
+ {\tt terminate} & Page \pageref{terminate_cmd} & Terminates a program, freeing its resources. \\
+ {\tt setpriority} & Page \pageref{setpriority_cmd} & Sets the execution priority for a program. \\
+ {\tt clock} & Page \pageref{clock_cmd} & Prints or updates the system time. \\
+\end{tabular}
diff --git a/docs/user/summary_of_errors.tex b/docs/user/summary_of_errors.tex
new file mode 100644
index 0000000..45dbeae
--- /dev/null
+++ b/docs/user/summary_of_errors.tex
@@ -0,0 +1,40 @@
+\chapter{Summary of Error Messages}
+\label{summary_of_errors}
+
+\begin{tabular}{| l | c | c | c |}
+ \hline
+ \bf Error & \bf Command & \bf Section & \bf Page \\
+ \hline
+ Invalid date & {\tt date} & \ref{date_cmd} & \pageref{date_cmd} \\
+ \hline
+ No prompt specified & {\tt prompt} & \ref{prompt_cmd} & \pageref{prompt_cmd} \\
+ \hline
+ No prompt specified & {\tt alias} & \ref{alias_cmd} & \pageref{alias_cmd} \\
+ \hline
+ Error: No program found with that name & {\tt load} & \ref{load_cmd} & \pageref{load_cmd} \\
+ \hline
+ Error: Insufficient memory & {\tt load} & \ref{load_cmd} & \pageref{load_cmd} \\
+ \hline
+ Error: Could not load program into memory & {\tt load} & \ref{load_cmd} & \pageref{load_cmd} \\
+ \hline
+ Warning: invalid priority specified, using default & {\tt load} & \ref{load_cmd} & \pageref{load_cmd} \\
+ \hline
+ Error: No free PCBs & {\tt load} & \ref{load_cmd} & \pageref{load_cmd} \\
+ \hline
+ Error: Unable to build PCB & {\tt load} & \ref{load_cmd} & \pageref{load_cmd} \\
+ \hline
+ No process named $x$ & {\tt resume} & \ref{resume_cmd} & \pageref{resume_cmd} \\
+ \hline
+ Error: process did not load correctly & {\tt run} & \ref{run_cmd} & \pageref{run_cmd} \\
+ \hline
+ No process with the specified name & {\tt suspend} & \ref{suspend_cmd} & \pageref{suspend_cmd} \\
+ \hline
+ No process with the specified name & {\tt terminate} & \ref{terminate_cmd} & \pageref{terminate_cmd} \\
+ \hline
+ Error: invalid priority & {\tt setpriority} & \ref{setpriority_cmd} & \pageref{setpriority_cmd} \\
+ \hline
+ Error: invalid process name. & {\tt setpriority} & \ref{setpriority_cmd} & \pageref{setpriority_cmd} \\
+ \hline
+ Error setting clock & {\tt clock} & \ref{clock_cmd} & \pageref{clock_cmd} \\
+ \hline
+\end{tabular} \ No newline at end of file