System/65 will be an essentially functional system with just the monitor. However, this is pretty obviously going to be insufficient for anything other than simple programming experiements. So I'm going to need some kind of operating system in order to do much useful on the machine. However, since writing any kind of real operating system is a pretty sizeable task and I'll want something pretty much right away, the easier method is going to be for me to port an existing OS to the System/65.

There are a few different 6502-based operating systems out there, but the one I'm going to go with is Richard Leary's DOS/65. DOS/65 is a CP/M workalike for 6502 computers. It's not especially full-featured, but it's simple and portable, which is perfectly good for a start, and getting it working on System/65 should be as simple as updating the DOS/65 BIOS code to use the System/65 BIOS calls.

There will also probably be some stand-alone boot-disk applications of one sort or another, as DOS/65 is just a little too limiting for some uses (i.e. text editing.) I'm going to try and keep these to a minimum, though.

Eventually, however, I'm going to be writing an operating system specifically for System/65, which, for lack of a better name at present, I'll call OS/65. OS/65 will be tailored to use System/65's features for some kind of multi-tasking, though I'm not yet sure whether it'll be pre-emptive, cooperative, or simple task-switching. It will also use the FAT16 filesystem, so that I can simply transfer files directly between my PC and the System/65.

Whatever the details of task control, OS/65 will be able to hold multiple programs in memory at once. It will accomplish this by keeping the OS code in the common area of RAM, and using the bank-selector to put the start of each program's memory at the bottom of the banked area. This means that each program will have its own zero page and stack, and will not need to worry about causing a stack overflow or trampling on another program's zero-page data.

Now, this would theoretically mean that program size is limited to the 32KB size of the banked area; however, we're going to make provisions for programs to be larger than that. OS/65 applications can include a common-area segment that is placed in common RAM; when running from this area, they can move the banked area around in memory. And since the zero page and stack are switched separately, we don't need to worry about accidentally mucking up stack operations.

Like the BIOS, OS/65 will use software interrupts for system calls, so that applications don't have to know where given routines are located. These will be documented as the operating system is developed.