	There are many complicated things to the setup I have in mind for this Operating System and the purpose of this
text file is to bring a lot of the ideas together to form a logical working system.

The Big Link to the Structure of HCP's File and Authorization System.

I.  Mounting
	A. Each device that is mounted may have multiple names, one by each user. When a user wants to write/read from
	   a hardware device, a user check is made in which:
		1. The current user is looked up in the user_data segment and a privelege check is made to make
		   sure that the user isn't blocked from the directory he is trying to read/write from/to
		   and if the file already exists, that the file isn't blocking him.
	B. Each user will only see the files that he is allowed to see. Therefore in the dir command, the string that
	   is returned must be filtered to meet the current user's privelege.
II. File Creation
	A. First, the given mount device (see C) is checked to make sure it has the directory ability.
	B. When a file create request is made, the current user is determined and a privelege check as described in
	   FileFrmt.txt is made to make sure that the user isn't blocked from the directory
	C. The file creation call requires a couple of input things:
		1. A pointer in ds:esi to the asciiz string = mount name & directory & filename
		2. IF BIT6 OF FLAGS (STEP 3) IS SET, THE FOLLOWING IS NECESSARY:
		   A pointer in es:edi to an asciiz string/wordlist that points to user names/privelege levels that
		   will be blocked from this file. NOTE: A user at level 4 cannot decide to block his file from users at
		   levels 3 and more priveleged.
		3. Flags in ax:
			a. bits15-14 - If executable, these are DPL of this file's Code segments. This may require a
				     privelege check at runtime.
			b. bits13-8 = 000000xb
			c. bit7 - es:edi pointer points to a wordlist of privelege levels not usernames
			d. bit6 - User protection exists (Also see bits2&1)
			e. bit5 - file requires system encryption/decryption
			f. bit4 - file is executable
			g. bit3 = 0
			h. bit2 - If this and bit6 are set, the list in es:edi is a list of users/user priveleges that
				  CANNOT access this file.
			i. bit1 - The es:edi list (if necessary) is a list of privelege levels, not a user# list.
			j. bit0 = 0xb
	D. The inputs are used to create the entry in the File list table and add the entry in the correct directory
	   listing entry. The file location of this file isn't written to the file location table until the file is written
	   to.
III.Parts of the system
	A. Devices Segment
		1. Keeps track of all mounted devices. A single device may be mounted more than once. The first time,
		   a long entry for the device is created. Each additional time, only a short entry is created.
		2. Device Long Entry Format
			a. dword = length of this entry (including itself)
			b. byte flags
				(1. bit7 - device holds a directory
				(2. bit6 - hardware device (if clear it is a software emulated device)
				(3. bit5 - Long Entry
				(4. bit4 - This entry was mounted by the root user, who has decided to limit access.
					   In order for anyone else to access this, the root user must create a separate
					   long mount entry for them.
				(5. bits3-0 = 0000xb
			c. dword = device # (ID to OS)
			d. word user# = user# of user who created this device entry
			e. word device type: 0=floppy drive, 1=hd, 2=LPT port
			f. dword reserved
			g. asciiz string = standard device name. EX: "\hd0\",0 or "\hd0\user\",0 or even "\LPT1\hd0\",0
			h. asciiz string name - given by user who created this mount
			i. If bit7 flags is set, then this is a directory listing. If bit7 is clear, this is 10 dwords of
			   reserved space for the device to list device drivers, etc.
		3. Device Short Entry Format
			a. dword = length of this entry
			b. flags (same as Long Entry, except bit5 will be clear)
			c. 16 bytes name - given by user who created this mount
			d. word user# = user# of user who created this device entry
			e. dword = mother device # (device entry # in device_sel of the Long Entry of this Device)
			f. asciiz string  - whatever is present in this string gets concatenated with the string in the
					    corresponding long entry. EX: IF long entry has "\hd0\",0 and this has
					    "etc\",0, This short entry will point to "\hd0\etc\",0.
			NOTE: Directory listing is not present. It is looked up in this short entry's corresponding
			      long entry. Step e is also very important in this lookup process!!!!!