Compiled: At trottier third floor and tested there, too

Implementation: Block system with fixed block size. When a new file is opened
one BLOCK_SIZE of space is reserved for the file. When we write to the file and
exceed the first BLOCK_SIZE characters, new space is found in the HD and the index
of the starting position of the new block is written to the next three characters of 
the original block and the subsequent characters to be written are written to the 
new block. 
Each PCB receives a unique PID. The shell environment is treated as a PCB with PID 0.
Processes can only read, write, close and delete files if they own the required file
handle. 
A process ID of -1 in the file handles table indicates the handle is not owned by anyone,
or in other words, that the pointer to that file is closed. The file handle table was extended
from the specification to include 3 fields: process id, start address, and current offset; the 
start address was used for easy identification of file names from the OS FAT table. 

When a process attempts to write to a full hard-disk, the current file is closed at the current
offset and the process is put in the terminating queue. 

mySh - Help Contents: 
======================
EXIT - cause mySh to exit
VER - displays information about mySh
CLR - 'Clears' the screen
HELP - Brings up this help menu.
PROMPT VALUE - Changes the prompt string to VALUE
VERBOSE VALUE - Changes verbose mode. VALUE is either ON or OFF
SET VAR VALUE - puts VALUE into shell memory under VAR
GET VAR - displays the value for the given VAR
SCRIPT FILENAME - Executes the script at location FILENAME

Extra features: to make grading easier, *PLEASE* feel free to make use of the following commands
at any time:

INFO - print out the non-empty contents of RAM and the status of all queues (ready, waiting, loading, terminating)
HDD - print the hard-disk as is. Block size is 10, so that string should be partitioned into substrings of length 7
      where each 8, 9 and 10th character are indices to the next block of the file. 
HANDLES - print the state of all 5 file pointers of the OS
OSFAT - print the content of the OSFAT table, including file names and their respective start indices of the HDD.
READ FILENAME - read back the contents of file FILENAME

note about the provided scripts:
the script deadlock results in a deadlock since a process requests a filehandle for two separate files. The second
request is blocked and the process is placed on the waiting queue until the filehanle is freed; ofcourse, this does 
not happen, since the owner of the handle must close it. 

another script has been provided called FILL which demonstrates the case when a process attempts to write to a full
hd.
