FILE SYSTEM IMPLEMENTATION - FINAL VERSION Apart from the requirements for version 1, the complete version includes void delete(name) delete a file void makedirectory(name) create a subdirectory readbytes(FILE *, int numberofbytes, pointer) able to read any number of bytes requested writebytes(FILE *, int numberofbytes, pointer) listdirectory(name) print a listing of the contents of any directory To support subdirectories, the names of files given to delete, makedirectory, listdirectory, open, and create should be whole paths such as "tests/project1/file2.txt" or "tests:project1:file2.txt" etc (you can decide on the exact appearance). That way you don't have to worry about keeping track of a current directory and dealing with cd and .. Implement the basic parts of your file system in C++ or C, or if you're feeling brave, the assembly language and emulator used for the worm. The implementation should be in the form of a library of useful functions that can be included in other programs. You should provide functions with the following functionalities, but they don't need to have exactly these names, parameters, or return types. void startup() get everything ready for use, you can expect all users to call this function before using any of the others FILE * open(name) open a file for reading FILE * create(name) open a file for writing close(FILE *) obvious read512(FILE *, pointer) read the next whole block from the file into memory write512(FILE *, pointer) write a whole block to the end of the file listroot() print a listing of the contents of the root directory format(....) (re)format a disc, making it as new. No need for directories (apart from a root directory) or anything fancy for this version. You don't even need to have full support for very large files yet.