It was thus said that the Great Tony Duell once stated:
It sounds as though you
[I think he's refering to Richard Erlacher here. -spc]
are moaning that the CoCo was not a CP/M machine.
Well, of course it wasn't. It used a 6809 processor. If you wanted a CP/M
machine, then fine, buy one. But OS-9 was a much nicer OS than CP/M (I've
used both seriously...) OS-9 felt more like unix (yes, I know it was very
different internally). And the I/O system was nothing short of beautiful
(I wish it was as easy to write device drivers for other OSes).
AmigaOS may come close. Under AmigaOS, device drivers are, more or less,
shared libraries that must support a few more standard calls (IO related
calls) than normal shared libraries (that only need to support something
like to or three routines that all shared libraries need to support) and
handle IO messages.
That's it.
Very clean interface. And looking over my OS-9 documentation, it seems
very similar (well, OS-9 doesn't support message queues like AmigaOS does,
but otherwise, it looks like device drivers are just like any other module
under OS-9, except for support for a set of standard calls).
I'm not all that happy with the way Unix (and in particular Linux) handles
devices, especially devices that are easily removable, like printers,
modems, ttys, floppy disks and CD-ROMS, and the internal interface, and the
fact that you have to compile drivers into the kernel [1] and ... well ...
there's a lot I don't like about Unix.
-spc (Still better than some of what's out there ... )
[1] I know, Linux supports demand loading of device drivers, but it
still is very ugly, not clean, and *so* kernel dependent that a
device driver module compiled under 2.0.13 may, quite possibly, load
under 2.0.39, it probably won't under 2.1.x and forget about 2.2.0
or higher. And because so much of the kernel is exposed through the
module interface (heck, the *entire* kernel is exposed) that there
exist modules that will hide files, processes, network connections
and even themselves so even enabling module support on a server is a
security risk.
MS-DOS, Windows and OS/2's ability to load device drivers at boot
time is slightly better, but still annoying if you have a piece of
hardware that only periodically needs support (say, a tape device
driver for backups only). And there's a better documented interface
for kernel->module interaction (at least in MS-DOS, I'm not sure
about Windows or OS/2).
I *still* like the Amiga and OS-9 method better, but yes, in a
multiuser system would need a decent access control method (much
better than what you get under Unix) to handle user loadable (or
runtime loadable) device drivers.