// step 0 : have a protocol that can handle open / close / seek / read / write
//
// step 1 : have an unhandled exception handler installed in the kernel to capture the pcdrv functions; that sounds scary, but it's extremely straightforward (I think @sickle currently has one for his debugger)
//
// step 1.5: implement the pcopen / pcclose / pcread / pcwrite / pcseek functions, which are basically the same model as my syscalls.h file
//
// step 2 : implement the unhandler exception handler in a way that properly redirects the calls to the step 0 protocol, and returns gracefully to the caller when done - that can be a bit tricky, but it's totally doable
// this step requires understanding the ReturnFromException mechanism basically which, to be fair, is sort of understandable from this one file:
// you can see the syscall_unresolvedException() call at the bottom , this just needs to follow the same pattern
// and break down the caller, modify the current thread's registers, and return to the caller
// at this point, we have a working basic pcdrv feature, using pcopen / pcclose / pcread / pcwrite / pcseek
//
// step 3 : add a kernel driver for "pcdrv:" that just piggy backs on pc* functions so that people can simply do a int file = open("pcdrv:blah.txt", O_RDONLY);
// (and thus support things like CSOTN technically)