STRING.ASM
----------
StrLen   - returns the length of an ASCIIZ string
INPUT:
DS:SI - address of string
OUTPUT:
AX    - length of string in chars

StrLenW  - returns the length of a wide (two-byte) ASCIIZ string
INPUT:
DS:SI - address of string
OUTPUT:
AX    - length of string in chars

StrCpy - copies one string into another
INPUT:
DS:SI  - source string
ES:DI  - dest string
OUTPUT:
dest string = source string

StrCat - appends one string onto another
INPUT:
DS:SI  - source string
ES:DI  - dest string
OUTPUT:
dest string = source string + dest string

StrCmp - compares two strings
INPUT:
DS:SI  - string 1
ES:DI  - string 2
OUTPUT:
Carry set if they are unequal
AL     - 0 if strings are equal, negative if str1<str2, positive if str1>str2

StrCmpI - compares two strings, case insensitive
INPUT:
DS:SI  - string 1
ES:DI  - string 2
OUTPUT:
Carry set if they are unequal
AL     - 0 if strings are equal, negative if str1<str2, positive if str1>str2

StrChr - returns first occurence in a string of a given character
INPUT:
AL     - character to look for
DS:SI  - string to search
OUTPUT:
Carry set if character not found
DS:SI  - pointer to character.. or SI = 0 if not found (DS unchanged)

StrUpper - uppercases a string
INPUT:
DS:SI  - string to uppercase
OUTPUT:
STRING IS IN UPPERCASE

StrLower - lowercases a string
INPUT:
DS:SI  - string to lowercase
OUTPUT:
string is in lowercase


CTYPE.ASM
---------
IsSpace - returns true if character is whitespace (9h - 0Dh, 20h)
INPUT:
AL - character
OUTPUT:
Carry set if character is whitespace

IsAlnum - returns true if character is a letter or number
INPUT:
AL - character
OUTPUT:
Carry set if character is a letter or number

IsAlpha - returns true if character is a letter
INPUT:
AL - character
OUTPUT:
Carry set if character is a number

IsCntrl - returns true if characters is a control code (0h - 1Fh, 7Fh)
INPUT:
AL - character
OUTPUT:
Carry set if character is a control character

IsDigit - returns true if character is a number
INPUT:
AL - character
OUTPUT:
Carry set if character is a number

IsLower - returns true if character is a lowercase letter
INPUT:
AL - character
OUTPUT:
Carry set if character is a lowercase letter

IsUpper - returns true if character is an uppercase letter
INPUT:
AL - character
OUTPUT:
Carry set if character is an uppercase letter

IsPunct - returns true if character is punctuation (20h - 7Eh !IsSpace !AlNum)
INPUT:
AL - character
OUTPUT:
Carry set if character is a punctuation character

ToUpper - converts a character to uppercase
INPUT:
AL - character
OUTPUT:
AL - character in uppercase

ToLower - converts a character to lowercase
INPUT:
AL - character
OUTPUT:
AL - character in lowercase


SCREEN.ASM
----------
WriteChar - writes a single character to the display, control characters
          - can be used to control output
INPUT:
al - character to write
OUTPUT:
none

WriteCharM - writes a character to the display cx times, control characters
           - can be used to control output
INPUT:
al - character to write
cx - times to write it
OUTPUT:
none

WriteCharAttr - writes a character/attribute cx times to the screen
INPUT:
al - character to write
bl - attribute
cx - times to write it
OUTPUT:
none

ClearScreen  - Clears the screen
INPUT:
al - character
bl - attribute
OUTPUT:
none

WriteString  - writes the ASCIIZ string at the current cursor pos.
INPUT:
DS:SI - address of string
OUTPUT:
none

WriteStrAttr - writes string at cursor pos. with a certain attribute
INPUT:
DS:SI - address of string
BL    - attribute
OUTPUT:
none

WriteAttrStr - writes string with interleaved char/attr values
INPUT:
DS:SI - address of string
OUTPUT:
none


KEYBOARD.ASM
------------
GetKeypress - waits for and gets a single keypress
INPUT:
none
OUTPUT:
AH - scan code
AL - ascii character

CheckForKey - checks to see if a key is ready to be read but doesnt remove it
              from the keyboard buffer
INPUT:
none
OUTPUT:
ZF - set for no key, clear for key
AH - bios scan code
AL - ascii code

ReadString  - reads a string from the keyboard, skips extended characters
INPUT:
DS:SI - input buffer
CX    - buffer length (including null terminator)
OUTPUT:
CX    - chars read


MISC.ASM
--------
SetInterrupt - Replaces a vector in the interrupt table
INPUT:
al - interrupt to replace
DS:DX - seg:offset of new handler
OUTPUT:
NONE

GetInterrupt - Retrieves the address of an interrupt vector
INPUT:
al - interrupt to get
OUTPUT:
ES:BX - seg:offset of handler


MEMORY.ASM
----------
InitMemAlloc - sets up memory allocation to start from a given base segment
INPUT:
ES - segment to begin memory allocation at
OUTPUT:
none

AllocMem - dynamically allocate a certain number of bytes
INPUT:
EAX - number of bytes requested
OUTPUT:
ES:BX - seg:offset of block (zero on error)
Carry set on error

ReallocMem - allocate, resize, or free a block of memory
INPUT:
EAX - number of bytes requested (frees the block if eax == 0)
ES:BX - seg:offset of block to resize or NULL to allocate it
OUTPUT:
ES:BX - seg:offset of block (zero on error)
Carry set on error

FreeMem - free a dynamically allocated block
INPUT:
ES:BX - seg:offset of block
OUTPUT:
none
Carry set on error

GetFreeMem - returns the amount of free memory in bytes
INPUT:
none
OUTPUT:
EAX - number of bytes of free memory

CopyMemory - copies a block of memory from one place in ram to another
INPUT:
DS:SI - source pointer
ES:DI - destination pointer
ECX   - number of bytes to copy
OUTPUT:
none

MemCmp - compares two blocks of memory
INPUT:
DS:SI - block1
ES:DI - block2
ECX   - max bytes to check
OUTPUT:
Carry set if they differ
AL    - 0 if equal,  negative if block1<block2,  positive if block1<block2


RAWDISK.ASM
-----------
ReadSectors - reads one or more sectors from the floppy disk into memory
INPUT:
ES:BX - block to write into
AL    - number of sectors to read (no more than will fit in current segment)
CX    - sector number
OUTPUT:
Carry flag set on error
AH = error code
AL = number of sectors read

WriteSectors - writes one or more sectors onto the floppy disk from memory
INPUT:
ES:BX - block to read from
AL    - number of sectors to read (no more than will fit in current segment)
CX    - sector number
OUTPUT:
Carry flag set on error
AH = error code
AL = number of sectors read


FILESLOW.ASM
---------
GetFreeSpace - returns free space on disk
INPUT:
none
OUTPUT:
carry flag set on error


FILESHI.ASM
-----------
OpenFile - opens a file
INPUT:
DS:SI - filename with optional path
AL    - file open flags (xxxxxcmm - create if needed, mode: 00-read only
                         01-writeable,11-writeable/append)
OUTPUT:
Carry set on error
DX - valid file handle if no error

FileClose - closes a file
INPUT:
DX - file handle
OUTPUT:
Carry set on error
file is closed if no error

FileRead - reads a number of bytes from a file into memory
INPUT:
ES:BX - buffer to read into
ECX   - number of bytes to read
DX    - file handle
OUTPUT:
ECX   - number of bytes read (valid even if an error occured)
Carry set on error (eof, read error, etc)

FileWrite - writes a number of bytes to a file from memory
INPUT:
ES:BX - buffer to read from
ECX   - number of bytes to write
DX    - file handle
OUTPUT:
ECX   - number of bytes written (valid even if an error occured)
Carry set on error (no free space, write error, etc )

FileLength - returns the length of a file
INPUT:
DX - file handle
OUTPUT:
Carry set on error
ECX - file length

FileTell - returns the file pointer in a file
INPUT:
DX - file handle
OUTPUT:
Carry set on error
ECX - read/write pointer position

FileSeek - seeks to a new position within a file
INPUT:
DX  - file handle
ECX - position to seek to
OUTPUT:
Carry set on error

DeleteFile - deletes a file, or a directory if it's empty
INPUT:
DS:SI - original file name with optional path
OUTPUT:
Carry set on error
else file is deleted

RenameFile - renames a file
INPUT:
DS:SI - original file name with optional path
ES:DI - new name
OUTPUT:
Carry set on error

CreateDir - creates a directory
INPUT:
DS:SI - new directory with optional path
OUTPUT:
Carry set on error
else directory is created

ChangeDir - changes default directory
INPUT:
DS:SI - path string
OUTPUT:
Carry set on error
current directory is changed if no error occurs

ChangeAttr - changes file attributes
INPUT:
DS:SI - file with optional path
AL    - new file attributes
OUTPUT:
Carry set on error
file attributes changed if no error

SetFindFile - sets up the FindNextFile function
INPUT:
DS:SI - wildcard string and optional path
AL    - attributes [xxxdahrs (directory, archive, hidden, readonly, system)]
        files with any of the specified attributes are returned
OUTPUT:
Carry set on error

FindNextFile - finds the next file that matches the specs set up with
               SetFindFile
INPUT:
ES:DI - buffer to store filename (25 byte min)
OUTPUT:
AL    - file attributes
buffer holds matching filename or empty string if none found (or error)

