dilettante wrote:
Wow, and I thought the religious wars would be over whether the machine ought to be CBMish or Appleish!
The problem is that the CBM machines are built quite similarly to the Apple machines. It is, in fact, Atari who innovated different bus architectures with the 65xx series, and that is a model to study, if not aspire to, in my opinion. (Note: The Amiga was designed by none other than Jay Minor, the father of too many Atari platforms to list here. One familiar with the Atari 800-series, IIRC, will immediately appreciate the Amiga's bus architecture and I/O chipset capabilities.)
Quote:
The Memory-I/O map ought to be identical for both because we'd want to avoid fancy memory controllers or dynamically-loading OSs as work-arounds for address-space differences.
Dynamic loading isn't hard to do. As usual, the Amiga demonstrates its viability with the use of dynamically loaded libraries, using a statically linked binary execution format, in a single-address-space environment. Even today, the people you mention something like this to will tell you, "That's not possible."
Still, supporting a binary format that takes dynamic linking into account would make things simpler and faster at run-time, due to the lack of run-time "stubs." But, alas, I have to admit, I do still prefer AmigaOS's method of load-time static linking over most DLL implementations. I feel I have greater control.
For that matter, why distinguish between an application and a library at all? The only difference I can think of is that an application has ONE entry point, while a library has multiple. But having only one entry point is merely a degenerate case of having many; hence, there is no concrete difference between the two.
Quote:
I feel that the primary storage ought to be flash myself, preferably SmartMedia but I could live with CF if I had to. I haven't scoped out the practicality of this, but here are my thoughts:
SmartMedia isn't going away, as a few here have feared. I found a USB-bus SM drive in Radio Shack a while ago for a mere $20. That's the same basic price point as *internal* floppy disk drives, suggesting an internal SM drive would be even cheaper than its floppy cousin. Also, while media prices for smart media isn't as cheap as floppies, the cost per MB of storage is still quite a bit cheaper than floppy storage.
The 65-series platform will need a USB host controller of some kind. This is the one missing piece. It should support, at a minimum, 1.5Mbps and 12Mbps throughputs (e.g., USB 1.1). Once this is taken care of, a large number of I/O-related problems will be solved.
Quote:
Boot ROM: just enough smarts to POST then load and boot an OS kernel from (internal) removeable flash written in existing flash formats (basically similar to MS-DOS formatted drives).
Usability studies seem to suggest that POSTing takes too long for most users. People want instant-on access to their computers. Hence, while I agree that POST functionality should be in the boot ROM, it should not
always run. The best way to handle this would be to run POST only if a certain key (combination) on the keyboard is pressed during booting.
For example, it takes my PC over 2 minutes to boot into Linux; just under half that time is spent in BIOS doing RAM test and bus enumeration. It's silly, because PCI bus enumeration, USB bus enumeration, and detection of devices on the various I/O ports should take at most a few milliseconds.
By the way, an approach similar to what you proposed above was used on the Atari ST. It booted from a small, fixed ROM, but its GEM desktop environment was loaded from a ROM-disk. This kept the cost of the ROM system low, as 16-bit wide ROMs that were fast enough for the 68000 were not available back in the mid-80s. The kernel was loaded into a "write-protected" region of RAM, to make the RAM behave exactly like ROM.
The 16-bit ROM width isn't an issue for our purposes, but bus speed certainly is. Therefore, booting the operating system off a ROM-disk makes a lot of sense. A primitive form of memory management, while not strictly necessary, would be highly desirable to prevent rogue software from overwriting the kernel image once loaded into memory.
Quote:
Kernel: Standard I/O supporting some small agreed-upon set of I/O, probably most of the reference basic I/O devices. Some way to natively add "driver" logic for additional devices after booting.
I personally like the concept of an
exokernel myself; the kernel provides zero resource policy, but provides only
protection of resources. Applications are then free to implement whatever I/O or resource policies they desire. "Operating systems" as we currently know them are implemented as shared libraries (this isn't too far from the truth either; by definition, an OS is a shared base of software which all applications link to at load-time or run-time). The performance of the system is, unlike microkernels, equal or superior to traditional monolithic kernel designs, as applications ultimately have (near) register-level access to resources.
The nice thing about exokernels is they make good on the promise of running software from multiple "operating systems" (which microkernels have, to date, not been able to deliver transparently). Thus, "installing an OS" is as simple as copying the relavent libraries into the appropriate place in the filesystem. The only requirement is that the variety of operating systems share at least one common filesystem (so that they know how to access their respective libraries).
Quote:
Using an internal flash drive as a personality module would not only be cool and flexible, these are readily available and inexpensive in some good sizes: 128MB for SmartMedia, larger for CF. The full set of goodies could be booted up off these things w/o any disk access at all. "Builds" could be done using PCs until things get mature.
I recommend using USB devices, because they're available, they're cheap, and they all use a consistent device driver model. That is, a USB floppy driver will/should work with *any* USB storage device, CF and SM included.
Quote:
I might go so far as to suggest that Hard Drives be optional add-ons, not even supported fully in the kernel (though the flash I/O routines could largely be recycled maybe - they're quite similar at an important level if we choose to support MS FAT style drive formats).
Compact Flash is IDE; there is *zero* difference. If you support CF, you'll inherently also support harddrives. SmartMedia is different, however. But if you use USB storage devices, you have ONE driver for all these, as they ALL use the SCSI command-set.
Also, PLEASE remember that the storage device and the filesystem used on it are
two completely different issues. There is nothing in FAT that is inherently "harddrive specific" (in fact, it's designed *specifically* for use on floppy drives); likewise, there is nothing in compact flash that mandates the use of FAT. I've used Linux's ext2fs filesystem on CompactFlash and SmartMedia several times, with complete success.
People seem to think that FAT is required because of the illusion that PC BIOS won't boot with anything else. This is NOT TRUE. BIOS boots the system by loading only the first 512 byte block on the media, and branching to that code. If that code is designed to use, say, Amiga OFS instead of FAT, then it'll boot using OFS.
Quote:
I think USB and Ethernet are musts, and some people want video but I could live w/o it. I'd want to put the thing on my network and get to it from my PCs. Probably use an HTTP/HTML interface like routers and printers and other appliances do, though fully programmable.
The original purpose of the 65-series computer is to serve as a decent replacement for the PC: low power, quiet, and user-friendly with minimum of configuration muss and fuss. Consequently, to be a replacement of the PC, then it must have video support.
Trying to use a computer purely from an HTTP interface has failed on more than one attempt. Protocols such as PC Anywhere and the open-source VNC will probably be more to your liking. If not, you might want to research distributed windowing systems, such as Berlin or X11.