This course marks the ending of courses where programming is taught in class. Rather, the concepts of insightful and robust design behind an operating system are covered, amongst other bits of relavent computing information.
Our first assignment brought us back to the basics, requiring that we construct a recursive factorial function built entirely in Assembly. We also needed to come up with a method of printing the decimal output of our first function. We were lucky enough to use Murrell's emulator, rather than having to delve into any Intel workstation setup.
Because we hadn't had enough Assembly from the first assignment, our next assignment was to construct the basic building blocks of a very basic operating system. To segment this objective, the first stage involved designing a simple language of our own along with an interpreter that could parse this language. In parsing the language, this interpreter would later be modified to create a namespace for any global/local variables, as well as functions and constants. This system would eventually output Assembly code that would carry out the desired functionality of our designed language.
With this compiler built, the second part of this assignment was to create a file system which could allocate space on a virtual drive, create/open/delete files, and perform any other basic tasks that a rudimentary file system would be able to do. Once completed, the code for the file system (originally written in C++), would then be transfered into the Autocode language, and built in Assembly. We nearly got everything to sync nicely, but fell short in the end with our final implementation. Nonetheless, all of our source files are here for your code-grubbing pleasure.