SYSTEM/65 DESIGN PHILOSOPHY

System/65 started simple, and it's going to stay that way. I have other plans for other projects that I'll get to one day, and those will have all my grand retrocomputing ideas, but that's not what System/65 is about. System/65 is about finding the simplest, cheapest route to making a functional, essentially useful disk-based computer, given my limited knowledge and experience with electronics (read: I've soldered some stuff.)

Let's consider those criteria for a moment. First, the simplest route. System/65 is not going to be a breathtaking feat of 8-bit engineering like the Commodore or Atari machines, or even a collection of clever hacks like the Apple II. It's going to be about as comparatively unimpressive as possible, because that's going to be a whole lot easier for an electronics newbie like me to build. This means, among other things, no video. I'll get to that in other projects, but for now I just don't need that kind of complication. As far as the cheapest route goes, much of the point to this project is to find uses for some of the parts I've acquired, so I want to use the things I already have as much as possible.

Next, what is "functional" and "essentially useful?" In this case, I mean that it's a system that I can use for something other than its own sake, if I want. In other words, it's all well and good to make a computer that blinks lights at you, but making one on which you can balance your checkbook is closer to the goal. What this means for our design is that there should be a decent amount of memory, a decent clock speed, and an architecture that lends itself to ease of programmming.

Now, the "disk-based computer" bit is pretty unambiguous; I want a computer that can use floppy disks for long-term storage. This is for a number of reasons. For one, it's hard to have a functional and useful computer if you have to re-enter a program every time you need to use it. Also, I happen to have a disk controller among the various components I've scrounged. (And finally, I just think floppies are cool.) So the computer, although it should be functional in some measure without a disk in the drive, will be disk-based; it will be able to read and boot off of 3.5" floppy disks.


APPLIED PHILOSOPHY

So now that we've covered the essential philosophy, let's talk some specifics. The simplest and cheapest route has a lot more to do with how many parts that I already have can be used, but it does inform my design decisions in that I chose not to have video output. Rather, I'm going to go the old-school route and do all non-disk I/O by means of a couple serial ports, using either a terminal emulator on a PC or my MicroVGA terminal board for communication with the computer.

Now, for the system specs. What constitutes a decent amount of memory depends on who you ask and what you're doing, but I think that for my purposes 128KB of RAM will be sufficient, plus 8KB of ROM. And what is a decent clock speed? Hard to say, but since my 65C02 is rated for 5MHz and my other components for 4MHz, I think we'll go with 4MHz.

As far as "an architecture that lends itself to ease of programming," this mostly has to do with how we do our memory-mapping. I want a computer that can conceivably be used for primitive multi-tasking without too much hassle, and our 128KB of RAM and 8KB of ROM isn't going to fit into the CPU's 64KB address space all at once. So what I'm going to do is have a banked area in the CPU address space that can be relocated to anywhere in RAM, as well as a common area that remains at the same address in RAM. I'm going to use an Intel-style segment selector with the banked area, for purposes of flexibility. The details of all this can be seen on the Memory Mapping page.

"Ease of programming" also plays into how the BIOS is designed. The System/65 BIOS isn't intended to be a comprehensive sort of thing; it just covers the basics of controlling the serial ports and disk controller. However, I intend to do as much as possible to keep it clean and separate from any other System/65 software; mainly, I intend to do this through clever use of the 6502 BRK instruction, but we'll talk more about that on the BIOS page. Another effort towards ease of programming is the presence of a ROM monitor, which is run when no disk is found at boot, or when the user presses a button on the case. The ROM monitor will be able to boot from disk, or load data from one of the serial ports into memory.

Making it a disk-based computer is fairly straightforward; I'm going to have two 3.5" floppy drives in the system, run by my disk controller. I don't plan on trying to add a hard drive or any other mass storage device to the System/65 design; I'll reserve that kind of thing for later projects.