dillon@ucbvax.BERKELEY.EDU (Matt Dillon) (01/19/86)
Time to start a new discussion. What do all you C programmers think about the OS? Now that I have had a chance to get into it, I have some comments I would like to make. First of all, for programming ease, the Amiga OS is total shit when compared with UNIX. Not only are no checks made on input parameters, but the OS itself isn't very robust. I have noticed, for instance, that if you give DoIO() bad parameters, or even simply call BeginIO() without doing an AbortIO() (mainly the serial port) when there was something else going on, the Serial port device driver gets lost and crashes the system. The OS doesn't keep track of what your process is doing, and thus you must FreeMem, CloseLibrary... etc... everything you opened before you exit, or those resources will be lost forever. This means, of course, that the Amiga cannot simply KILL a process (as someone suggested as an improvement). Many simple operations on the Amiga take many more lines of code than they should. For instance, openning windows, screens, or simply attempting to get SOME control over the serial port takes mucho code which goes very deep into the OS. This coupled with the instability and lack of error recoverability in the OS makes for quite a few machine crashes. The generalized I/O concept on the Amiga is too complex. To have any control over a resource (screens, windows, serial port), you are required to include GOBS of files, make innumerable system calls; and although these give you full control over the resource in question, they are generally very slow, and not fully implimented. The filesystem (basis for quite a lot), is a good example. The lack of IOCTL()s is very apparent. It looks as though the generalized Port() replaces that elegant call. There is no truncate() (or did I miss something??), nor is there an easy way to pass file structures around. The Execute() utility requires c:run to exist (a definate no-no), and the standard input/output devices are the exception rather than the rule. The programmer is required to delve deep into the Operating system to do a simple 'Change Directory', and even processes have distinct special cases. In my opinion, the CLI should have been more like CSH, with the base standard I/O and execute functions built into the OS rather than the CLI. Having easily changeable devices is nice, and you could theoretically have your own RAM: device, but they would have best been placed in the kernal rather than as separate processes. The Amiga OS is NOT a real-time operating system. (I'm sorry, it just isn't). I had one process running continuously, doing lots of system calls, and a seek on the disk took... well, to put it bluntly, it didn't happen until I killed the process. Such things as disk and serial I/O should have been completely interrupt driven. Not only would everything speed up, you would get a cleaner system. For those of you who have knowlege of the 4.2BSD kernal, or another UNIX like kernal, you would appreciate what has been accomplished. The basic idea is 'multi tasking user proceses, single tasking kernal', with everything interrupt or timer driven. As an example, the 4.2 kernal's device drivers may request they be called in 30 seconds, or 1/30 of a second (device driver's aren't seperate processes, but they can get service at time intervals). The reason you get much better throughput with this scheme, is that there is no idle time wasted. If something in the kernal blocks, the OS simply sleeps itself (allowing other processes to run) until the resource is freed. Thus, the device driver is driven both by low-level interrupts, and by calls to it by the kernal requesting read's, write's, ioctl's, etc... That is the way I would have liked to see the Amiga kernal, but Alas, it was not to be. --Going back to the filesystem-- What I miss most in the Amiga is the lack of a SELECT() system call, and easily implimented NON-BLOCKING I/O, plus a slight enhancement of the Read() system call. The call should return whatever is available rather than wait till the entire buffer you specify is full. File operations should be considered 'non blocking'. This is what UNIX does. I realize there is a comparable Wait() call for the Amiga, but it isn't generalized AT ALL. SELECT() is. You select on file descriptors, period. with Wait(), you have to dig into the OS. The ':' base (in addition to file path's) are a nice combination, but the directories should have implimented '.' and '..'. Additionaly, the directory entries are way too large. I tend to guess that almost no thought was given to them... tell me, a COMMENT entry??? say what? -------- ICONS ----- Graphics in general Of course, the HARDWARE is fantastic, and in fact the one major reason I bought my Amiga. The graphics support routines are excellent too. However, they are not generalized enough at the programmer's end, and check almost nothing about the validity of the data they are processing. I get the feeling that who-ever designed the Amiga OS didn't have much experience with multi-tasking or High Level languages. Apart from the PASCAL like style of all the include files, and the PASCAL like style of the basic Open() function, I would tend to want to throw every .H file away and re-write them. ---- But the Amiga people are to good to have created some of the things I have seen. What happened??? By the look of it, somebody but the bolt on the entire system... not allowing any major design changes after the first prototype was got working (and I'm talking internal prototype's... with release still years away). Could somebody shed some light on this? --- LIBRARIES, etc... The concept of libraries is not new. My complaint on their usage on the Amiga is simple: The intuition library should not be a library. The graphics library should not be a library. They should have been system calls. The programmer should not have to OpenLibrary() them, period. There are way too many programmer-"required to know about and use" structures. The system calls should have been implimented on a much higher level. Welcome to the world of OS-design, -Matthew Dillon
fnf@unisoft.UUCP (Fred Fish) (01/21/86)
In article <11448@ucbvax.BERKELEY.EDU> dillon@ucbvax.BERKELEY.EDU (Matt Dillon) writes: > >with the base standard I/O and execute functions built into the OS rather ^^^^^^^^^^^^^^^^^ >theoretically have your own RAM: device, but they would have best >been placed in the kernal rather than as separate processes. The ^^^^^^^^^^^^^^^^^^^^ >usage on the Amiga is simple: The intuition library should not be >a library. The graphics library should not be a library. They should >have been system calls. The programmer should not have to OpenLibrary() ^^^^^^^^^^^^ Caution, your Berkeley orientation is showing through. ls -l /vmunix -rwxr-xr-x 1 root 308224 Jan 13 20:03 /vmunix* Lets not shovel everything into the kernel just because it's there. -Fred
perry@atux01.UUCP (P. Kivolowitz) (01/21/86)
Matt Dillion thinks AmigaDos is ``total shit'' and believes that Unix is the god which all o.s. must emulate. Basing his opinions on the that he professes to be an expert kernel hacker he thinks all should be thrown out (except for a few graphics routines) and we should start again. Well, Matt, I don't know if you are a Unix expert and, in fact, your exp- ertise in operating system X doesn't really bear upon the argument at hand. Unix is not Tripos. And similarly, Tripos is not Unix. I think your views are too restrictive (read that narrow minded). The answer to statements like ``Unix is great because...and AmigaDos is shit because...'' are senseless and without worth. The two operating systems address different needs. Maybe you are a UNIX expert, Matt, but you definately are not an AmigaDos expert. In many ways, the kernel underlying the nifty imagery, possess truely state-of-the-art concepts in operating system design. You'd see that too if you'd not look through Unix colored glasses. --------------- No personal aspersions intended here nor do I believe any were cast. And, I don't know why you couldn't get in a disk access while other processes were going on - but I'd suggest it was something you were doing wrong since examples of doing just that abound - like running musicraft while copying or formatting disks. Perry S. Kivolowitz
mykes@3comvax.UUCP (Mike Schwartz) (01/21/86)
As someone relatively new to both Unix and AmigaDos, I have found that the similarities are very strong. However, at deeper levels, Unix and its 10+ years of maturity is better polished. However, Unix programs require MUCH MORE TIME to learn because the source programs have ZERO comments, and the function names are very short and not very mnemonic. AmigaDos has some of the best written documentation I have ever seen, although it is not always accurate (I expect the documentation will be more accurate in later versions). The source code and header files for AmigaDos are excellent, although verbose. My opinion is that I would rather read the comments, then strip them away, then to not have them at all. The names of all the Amiga functions are very descriptive of their function. I see the Amiga as an attempt to set a new standard in Personal Computers, not as some compromise between old technology and new. The hardware is so unique (no other PC has the same standard features), that the operating system was required to use all of the features of the hardware (something that UNIX does not do due to its generality). The ROM KERNEL seems to contain the proper components to create excellent video games and simulations. The device drivers seem to be a combination of two designs that not all drivers seem to adhere to. For example, I have used CreatePort() to create message ports for serial IO, but not for the Narrator device. AmigaDos is a 68K operating system that was written by MetaComco. It consists of a library, the CLI, and all the other misc. programs that run under it. 99% of the criticism seems to revolve around this piece of code. However, on a large machine (8MB, Hard Disk), I imagine that things will be quite tolerable. However, on a 512K machine, I think we all feel a need for some elbow room. Also, the floppies are just too slow to use with Lattice 'C' in a friendly manner. I agree that there is a lot to learn from an OS like Unix, but I don't care if the Amiga software has nothing in common with it. People keep saying "I wish it were more like Unix..." or "I wish it were more like OS-9...", which immediately indicates some amount of bias towards Unix or OS-9 (to me) and not a constructive point toward the Amiga stuff. Don't forget that all the boys at Amiga have Sun Workstations running Unix, and they write some gorgeous looking 'C' code, and they are not blind to the operating system that drives the Sun! My approach to dealing with the inconsistencies of the operating system was to build an interface to it more to my liking. I have built a library that has routines like rs232_open, rs232_getc, scr_open (open window), scr_putc, etc., which are simpler to call and reduces the number of header files and initialization code (very lengthy stuff) required from program to program. This solution also makes my programs a little more portable, since I am only required to rewrite these routines instead of writing OpenWindow, et al. I view the Amiga and its software as being immature. Given a chance, the machine will be a new standard. AmigaDos sure beats the heck out of MS-DOS (as far as programming it goes), and its multi-tasking gives it a unique look in the PC market. In a couple of years, the best of Unix will be ported, and the worst of AmigaDos will be improved and people will rave about it like they do OS-9 and Unix. I do not have any direct experience with the Mac or ST, but I don't imagine that their programatic interfaces are anywhere near as easy to use as the Amiga's. I see very little technical information (yet alone programs) being posted to net.micro.atari, and the Mac has long had a reputation as being a tough machine to learn.
dillon@ucbvax.BERKELEY.EDU (Matt Dillon) (01/21/86)
Ahh.... yes, the loader is rather slow. Even with lc1 in memory
it takes a couple of seconds to load. That is a definate No No, since
improvement would mean a complete revamping of the system.
>On to the file system: It's cute for a toy computer...
I agree. The filesystem should have been the CORE of the Amiga.
I'm not saying that all OS's need to have the filesystem as a core, but
on the Amiga, it would have been a giant forward leap. Right now, the fs
seems to be only half implimented.
---------------
Somebody posted to the net that I was not being specific enough.
---------------
My dream of the Amiga OS: (Definately Berkeley UNIX Biased)
(A) UNIX like filesystem
(B) Screens, Windows implimented w/ /dev/ device drivers
(C) I like the extended file-name idea (con:0/0...), put it in
(D) IOCTL'S
I believe in separation between user and hardware, through
file descriptor's and ioctl's, not through system structure's.
-Matt
hamilton@uiucuxc.CSO.UIUC.EDU (01/21/86)
> Many simple operations on the Amiga take many more lines of code >than they should. For instance, openning windows, screens, or simply >attempting to get SOME control over the serial port takes mucho code >which goes very deep into the OS. >The generalized I/O concept on the Amiga is too complex. back in the early days of unix, the only i/o you had was read() and write(). in order to do buffered, "stream", i/o, you needed GOBS of code. so somebody invented the portable i/o library out of the existing primitives. compare this to pascal which gives you high-level i/o, but no chance to roll your own. > The filesystem (basis for quite a lot), is a good example. The >lack of IOCTL()s is very apparent. It looks as though the generalized >Port() replaces that elegant call. ioctl()? elegant?! >The programmer is required to delve deep into the Operating >system to do a simple 'Change Directory', Lock() and CurrentDir() are no "deeper" that open() and chdir(). it's true that you need to do a Lock() followed by a CurrentDir() to effect a chdir(), but compare what you have to do to find the name of the current directory! > Having easily changeable devices is nice, and you could >theoretically have your own RAM: device, but they would have best >been placed in the kernal rather than as separate processes. why? what difference does it really make whether the devices are distinct processes or interruptable co-routines of a single kernel process? elsewhere you complain that devices and libraries don't do what you want; the way things are set up, _you can write your own_. you can even switch in mid-stream without re-booting! >The >Amiga OS is NOT a real-time operating system. (I'm sorry, it just >isn't). how do you figger that? what does a realtime OS have to have that exec doesn't? >Such things as disk and >serial I/O should have been completely interrupt driven. Not only >would everything speed up, you would get a cleaner system. > For those of you who have knowlege of the 4.2BSD kernal, or >another UNIX like kernal, you would appreciate what has been >accomplished. The basic idea is 'multi tasking user proceses, >single tasking kernal', with everything interrupt or timer driven. >As an example, the 4.2 kernal's device drivers may request they be >called in 30 seconds, or 1/30 of a second (device driver's aren't >seperate processes, but they can get service at time intervals). >The reason you get much better throughput with this scheme, is that >there is no idle time wasted. If something in the kernal blocks, >the OS simply sleeps itself (allowing other processes to run) until >the resource is freed. Thus, the device driver is driven both by >low-level interrupts, and by calls to it by the kernal requesting >read's, write's, ioctl's, etc... ??? so what does this have to do with the amiga? amiga devices (at least, the serial device i've studied most) are also interrupt driven. it's almost SCARY how interrupt-driven the amiga is. have you looked closely at the "interrupt server" concept? >File >operations should be considered 'non blocking'. This is what UNIX does. no, this is what some unixes let you do; i used unix for years without non-blocking i/o. typical file processing doesn't need to be asynchronous; unless you're going to the trouble of multiple-buffering, it doesn't do any good. but, if you really want it, it looks to me like it's there, it's just not handed to you on a platter. [later] upon re-reading this, it occurs to me you may be thinking amigados/exec itself is doing i/o synchronously? that while a disk block transfer is in progress _everything_ else comes to a halt? well, not on _my_ machine. > I realize there is a comparable Wait() call for the Amiga, but it >isn't generalized AT ALL. SELECT() is. You select on file descriptors, >period. with Wait(), you have to dig into the OS. Wait() is not generalized, but select() is?! c'mon! select() works ONLY on file descriptors; Wait() works for any event that posts a signal, and since you can post those signals yourself, it's open to your imagination what you can Wait() for. Wait() combines the functions of: select(), signal()/setjmp(), wait(), pause() and probably a couple others. i can't think of a _more_ general function. > The ':' base (in addition to file path's) are a nice combination, >but the directories should have implimented '.' and '..'. Additionaly, >the directory entries are way too large. I tend to guess that almost >no thought was given to them... tell me, a COMMENT entry??? say what? they do; "/" is "..". i admit to not liking the way the amigados inverts a lot of my (unix) habits. sometimes i wonder if they deliberately sowed landmines for unix freaks. the COMMENT capability is actually a useful touch. besides the canonical describe-the-file, i can see using it to contain arbitrary out-of-band data about a file. for instance, i miss having BOTH creation and modification timestamps. think of it as a programmer-accessible part of the "inode". > The concept of libraries is not new. My complaint on their >usage on the Amiga is simple: The intuition library should not be >a library. The graphics library should not be a library. They should >have been system calls. The programmer should not have to OpenLibrary() >them, period. i completely disagree. i think the library concept is very nice. it's interesting that you say this after expressing your preference for unix, since many of us unix users have wanted a dynamic library capability for years. as for the inconvenience, if you hate it that much, write your own library interface that opens and closes libraries on the fly (the way getpwuid() opens /etc/passwd). > There are way too many programmer-"required to know about and >use" structures. The system calls should have been implimented on a >much higher level. that's the price of flexibility. most of your comments boil down to "dammit, they didn't do it like unix". i've been using unix for 10 years, and much as i like it, i'm willing to try other approaches. the priority given to message passing over procedure calls, for example, is still very new to me. it'll take some time to adjust. i do miss a lot of features of unix, particularly with respect to the file system. however, it seems to me that the file system has been seperated from the rest of the OS to the extent that you can have more that one. if it becomes important enough to me, i'll try writing my own file-handler task. by the way, i notice i have more trouble with amigados than with exec. the one thing i will unreservedly pan is this damn BPTR/BSTR nonsense. wayne hamilton U of Il and US Army Corps of Engineers CERL UUCP: {ihnp4,pur-ee,convex}!uiucdcs!uiucuxc!hamilton ARPA: hamilton@uiucuxc.cso.uiuc.edu CSNET: hamilton%uiucuxc@uiuc.csnet USMail: Box 476, Urbana, IL 61801 Phone: (217)333-8703
mwm%ucbopal@BERKELEY.EDU (01/22/86)
From: Mike (I'll be mellow when I'm dead) Meyer <mwm%ucbopal@BERKELEY.EDU> Seems that whenever people start discussing OS's, and what's good and/or bad about them, they forget that they are talking about at *least* three different things: the OS proper, as seen by systems hackers and sysadmins, the interface for programming language X, and the user interface. For example, when Matt Dillon complains about the following: > From: dillon@ucbvax (Matt Dillon) > One should not need so many include files for simple programs. Why > weren't the generic Read() and Write() routines given these options? Also, > I am quite sick an tired of having to write 40 lines of code just to simply > read all the character's currently in the serial buffer, and NOT block when > there aren't any (or the buffer isn't full... yucc) > > Further gripes: The signalling was done wrong, > The Screen/Window routines are not generic enough, > The Wait(), message, and packet protocols are all > wrong. > > P.S. generic: On the Amiga it takes 40 lines of code to do things > (Like non-blocking I/O) which takes 2 lines of code (an open() and > an ioctl()) on UNIX systems. > > First of all, for programming ease, the Amiga OS is total shit >when compared with UNIX. Not only are no checks made on input parameters, >but the OS itself isn't very robust. I have noticed, for instance, that >if you give DoIO() bad parameters, or even simply call BeginIO() without >doing an AbortIO() (mainly the serial port) when there was something else >going on, the Serial port device driver gets lost and crashes the system. > > Many simple operations on the Amiga take many more lines of code >than they should. For instance, openning windows, screens, or simply >attempting to get SOME control over the serial port takes mucho code >which goes very deep into the OS. This coupled with the instability >and lack of error recoverability in the OS makes for quite a few machine >crashes. The generalized I/O concept on the Amiga is too complex. To >have any control over a resource (screens, windows, serial port), you >are required to include GOBS of files, make innumerable system calls; >and although these give you full control over the resource in question, >they are generally very slow, and not fully implimented. He's actually complaining about the C language interface. Since TRIPOS/AmigaDos wasn't writtin in/for C, it's only to be expected that that interface won't be as nice as the Unix/C interface. Then again, it's nicer than the Unix/non-C interface for most languages on Unix. At least you can do non-blocking I/O in C on the Amiga. Since TRIPOS is written in/for BCPL, I suspect that the BCPL interface is *much* nicer than then C interface. Given that BCPL has an easy, natural way of using library-like facilities, the code should be smaller (the BCPL stdio equivalent should be in a library). Commodore should release the BCPL compiler so that people who want to do systems work can use it. I haven't been fighting the Amiga long enough to really comment on the C/AmigaDOS interface. I will note that the problem with the include files appears to be something broken in the C compiler. A program that uses nothing but the things in intuition.h has to have other things included to work. On the other hand, the following things are "problems" with the OS proper. These, I'll comment on seperately. > Calls like Open, Close, Rename, Delete file, etc... should be syscalls. > Ports, Device driver calls, and specific device I/O calls should NOT. > They should have been implimented through Open. Now you know why UNIX > is based on "The File Descriptor"; you've screwed yourself by not > taking that into consideration. Nope, TRIPOS is built around processes, not files. This is actually *better* than using files, as you get IPC, remote file systems, and other things that people have been kluding into Unix for the last five years for free. In fact, they were in the original PDP-11 TRIPOS. > The multi-tasking was done all wrong. Not only are > tasks defined fuzzily (and this goes along with > the signal structure), but the OS does not have the > ability to kill a task and release it's resources. > Additionaly, most of the devices should NOT have been > done as tasks. The inability to kill a task is a real problem. Tasks being fuzzy is a minor problem, related to the way pieces of processes interact. It could have been done better (witness OS/9). The device drivers *most definitely* should have been done as tasks. Since you don't have files, but tasks, there really isn't any other way to do them. And the win from making them tasks is enormous - dynamic system reconfiguration, remote device access, etc. > The filesystem (basis for quite a lot), is a good example. The >lack of IOCTL()s is very apparent. It looks as though the generalized >Port() replaces that elegant call. IOCTL - you mean that BSD-specific system call that takes arguments that change meaning with different devices? Not exactly elegant. Of course, you can't be sure that something like ioctl (only better, one would hope) exists in the interface for the systems language for TRIPOS (BCPL). >There is no truncate() (or did I >miss something??), nor is there an easy way to pass file structures >around. You truncate files just like you do on all Eunices except 4.[23]BSD. And of course, you don't want to pass file structures around, you wou want to nt to pass ports around. >and the standard input/output devices are the exception rather than >the rule. Huh? Most eunices don't have /dev/stdin or /dev/stdout, either. Or do you mean the ability to redirect stdin and stdout? That's a problem with the user interface, *not* the OS. >In my opinion, the CLI should have been more >like CSH, with the base standard I/O and execute functions built into >the OS rather than the CLI. CLI does have problems. I'd prefer ksh myself, but tastes differ. At least it isn't tied into the OS, like so many systems are wont to do. > Having easily changeable devices is nice, and you could >theoretically have your own RAM: device, but they would have best >been placed in the kernal rather than as separate processes. But then you couldn't even theoretically write your own - at least not without being able to relink the kernel. Nor could you put it on a seperate TRIPOS system over a high-speed link. >The >Amiga OS is NOT a real-time operating system. (I'm sorry, it just >isn't). I had one process running continuously, doing lots of >system calls, and a seek on the disk took... well, to put it bluntly, >it didn't happen until I killed the process. So? Aren't many multi-tasking OS's that run on micro's that *are*. 'Bout the only one I can think of is OS/9, and that's because someone worked real hard to make it one. Of course, your example makes it seem like you mean TRIPOS isn't multi-tasking, which is false. > For those of you who have knowlege of the 4.2BSD kernal, or >another UNIX like kernal, you would appreciate what has been >accomplished. The basic idea is 'multi tasking user proceses, >single tasking kernal', with everything interrupt or timer driven. > > That is the way I would have liked to see the Amiga kernal, but >Alas, it was not to be. And if they'd done that, AmigaDOS would have looked like 4.3: two large, ugly, monolithic monitors with lots of screwy interactions, both internally and with each other. As it is, you should have a collection of processes that communicate over clean interfaces, and little or no unexpected interactions. The monolithic monitor vs. communicating processes for the kernel is a religious issue on uniprocessor systems. Of course, since I have the "right" religion, I *do* appreciate what has been accomplished with TRIPOS :-). >--Going back to the filesystem-- > I realize there is a comparable Wait() call for the Amiga, but it >isn't generalized AT ALL. SELECT() is. You select on file descriptors, >period. with Wait(), you have to dig into the OS. I think you're once again tripping over ports vs. file descriptors. From what I recall (manuals not handy), you select on *ports*. Since these fill the place of Unix file selectors (except better), this is correct. > The ':' base (in addition to file path's) are a nice combination, >but the directories should have implimented '.' and '..'. Additionaly, >the directory entries are way too large. I tend to guess that almost >no thought was given to them... tell me, a COMMENT entry??? say what? Much of the niceness associated with the ':' base comes from having a forest instead of a tree. I still haven't decided if the convenience of being able to say ':' to get to root of the current device outwieghs having yet another magic character in filenames. Also (once again, unless I'm mistaken), those aren't *directory* entries, they are file headers. I haven't delved to deeply into them, but I suspect that I can find usefull things to do with the COMMENT entry. Think of it like the user bits in the CP/M dir structure. > Of course, the HARDWARE is fantastic, and in fact the one major >reason I bought my Amiga. The graphics support routines are excellent >too. However, they are not generalized enough at the programmer's end, >and check almost nothing about the validity of the data they are >processing. I get the feeling that who-ever designed the Amiga OS >didn't have much experience with multi-tasking or High Level languages. I get the feeling that you're wrong. I get the feeling that whoever did the C interface to everything didn't etc. Then again, C is a high-level PDP-11/Unix assembler, so that's not unexpected. > But the Amiga people are to good to have created some of the >things I have seen. What happened??? By the look of it, somebody >but the bolt on the entire system... not allowing any major design >changes after the first prototype was got working (and I'm talking >internal prototype's... with release still years away). Could somebody >shed some light on this? Since AmigaDos is TRIPOS underneath, it dates back to *at least* '79, and I think it actually dates back to the early '70s (I couldn't find the paper I *wanted* on TRIPOS). Most of your complaints are actually with TRIPOS, not AmigaDos (of course, I still haven't figured out what Amiga changed in TRIPOS), which, like Unix, came out of a research environment. I suspect that it went through as much development as early Unix, and the developers were probably quite happy with it. Me, I'm glad to see TRIPOS out in the real world. Maybe we *won't* be stuck with Unix on micros through the '90s. > The concept of libraries is not new. My complaint on their >usage on the Amiga is simple: The intuition library should not be >a library. The graphics library should not be a library. They should >have been system calls. The programmer should not have to OpenLibrary() >them, period. You're right, libraries aren't new. They predate Unix. On the other hand, you couldn't be more wrong about wanting them in the library. Unless your operating system is so primitive as to *not* have something like libraries (shared library code, that is), the *only* reason to put something in as a set of kernel calls instead of a library is because it's got to be in place for the system to run anyway. You're right that a programmer shouldn't have to OpenLibrary() things. The problem there is with C (maybe just the Lattice implementation), not TRIPOS. If C supported dynamic linking in a reasonable way, this problem would go away. > There are way too many programmer-"required to know about and >use" structures. The system calls should have been implimented on a >much higher level. You're now facing the problem of wanting either high-level semantics, or lots of control. For instance, consider the problem of getting a raw interface to the console. On AmigaDos, you can do it with the open(), no pain involved. On Unix, you have to "know about and use" magic structures (whose name depends on which Unix you got). On the other hand, Unix gives you more control than the AmigaDos Open. Me, I don't find dealing with windows on AmigaDos any worse than dealing with sockets on Unix - actually a little nicer, because I have fewer structures to fool with. > Solutions, anybody? I think I'm going to re-write the OS. > > -Matt Unless you're going to redo the whole package (intuition and graphics library), I wouldn't bother. In either case, I'd wait to see what the OS/9 port to the Amiga looks like. Since OS/9 combines the best features of TRIPOS and Unix, it could be a real winner. Last random comment: Someone was considering hacking up a version of libraries that were executeable, ala OS/9. As they said, this is *far* better than the ram: device. Even better would be to make use of the track-at-a-time disk driver, and tweak the disk device to grab as much buffer space as it can get to use a a LRU track cache. It would have to catch memory request to free the stuff as needed, of course. <mike
grr@cbm.UUCP (George Robbins) (01/23/86)
> My dream of the Amiga OS: (Definately Berkeley UNIX Biased) > (A) UNIX like filesystem > (B) Screens, Windows implimented w/ /dev/ device drivers > (C) I like the extended file-name idea (con:0/0...), put it in > (D) IOCTL'S > > -Matt Matt, could you ease your tone a little? AmigaDos is not itended to be unix. It is based on a model where relatively well behaved processes cooperate to accomplish desired tasks. I have heard second hand that these concepts are expressed in the literature for the 'Thoth' operating system from the U of Waterloo. I am a self confessed unix hacker, but have worked with over a dozen assorted operating systems and have found things to love and hate in each. Contemporary versions of unix, ie System V and BSD4.2 require at least of 1MB of memory and 20-40MB of disk to do anything useful... The ATT 7300 is a lot along thing lines of what you describe, but most unix people can't stand the thing. It's slow, and half the standard commands have been made optional (read: pay more) just to get it to fit on a 20MB disk. Amiga is listening, but I think they will hear more of what you say, if you present your comments in a more positive way, and skip the my (brand)car doesn't drive like a Lambourghini diatribes. -- George Robbins - now working with, uucp: {ihnp4|seismo|caip}!cbm!grr but no way officially representing arpa: cbm!grr@seismo.css.GOV Commodore, Engineering Department fone: 215-431-9255 (only by moonlite)
steve@wlbr.UUCP (Steve Childress) (01/23/86)
In article <142@atux01.UUCP>, perry@atux01.UUCP (P. Kivolowitz) writes: > Matt Dillion thinks AmigaDos is ``total shit'' and believes that Unix > is the god which all o.s. must emulate. Basing his opinions on the that > he professes to be an expert kernel hacker he thinks all should be thrown > out (except for a few graphics routines) and we should start again. > > Perry S. Kivolowitz I agree wholeheartedly with Perry. I have struggled with CP/M-80, Apple's "DOS" (==cassette tape replacement), MAC's horrid ROM & Finder, and MS-DOg, as well as Sys III and V. For small computers, Amiga's work is innovative and reflects a general high degree of expertise and great expectations. I think most of us agree that Matt's statement is at the least far too extreme and unquestionably a a valueless, reprehensible example of an OPERATING SYSTEM ZEALOT. I'd like to commend the Commodore-Amiga designers and the support people on the phones for their professionalism. Steve Childress
cc1@ucla-cs.UUCP (01/25/86)
Ok, its time we asked one question: What are the goals of an OS? Definition: Operating system: An OS is a collection of routines designed to make use of a computer's resources. corralary: An excellent operating system is one that makes excellent use of a system's rescorces. If a system has the hardware for multi-taksing, the system should be able to multi-task. The amiga operating system. This is 256K of kickstart, plus 100K of used RAM. Thats over 300K (And we complained that Atari was 200K?). The operating system's job is to manage the computer's resorces. In particular, all programs should be forced to use the operating system. That means that the operating system must be able to use all the hardware's features. So, if I add new hardware, I need to be able to change the operating system (this is the ideal case, not the amiga specific case). In a multitasking system, no one process should be able to destroy another process. Given that the amiga has no write-protection, this is hard :-). But the operating system should not make it easy for a program. Now then, are there any flames yet? Some might not like that an o/s will let you do anything, but it is a must at some point, even if it is an ioctl() call that only root can do. GIVEN: The amiga's operating system does not check its input for accuracy The amiga's operating system kills all processes (reboots) when one process blows it The amiga's operating system does not allow full access to the system's hardware (ex: The hardware includes a disk controller which can do things like writing tracks (FORMATTING) reading tracks, reading sector id's, reading single sectors, etc. All a user can do is read/write sectors a track at a time) (If I'm wrong, my appologies, but this is the impression I got from the net; I have yet to see any real docs on this particular example) CONCLUSION: The amiga's operating system is not ideal The amiga's operating system is not sutable for use in a hostile environment The amiga's operating system is not usable unless your programs are perfect. Note that by putting another layer between the o/s and the user program, input checking can be done. Since this would probably require knowledge of o/s specific data structures, this should be part of the o/s. Now for the opinions... Now, what the blazes is an o/s designed for an obsolete machine with an obsolete language and an obsolete interface standard (programs make sure the args are correct) doing on a very much NON-obsolete peice of hardware? A well thought out interface should be language independent. C or BCPL should make no difference. A well thought out interface should be orthogonal. If you draw on the screen by saying 'wp=openwindow(); draw(wp, circle, x,y,r); close(wp);', then you should be able to put a circle on the printer by saying 'wp=openprinter(); draw(wp, circle, x,y,r); close(wp)'. Now, if you make a routine open() which checks the arg given and calls openwindow or openprinter, the same code works for both. This is called device independence; the output is independent of device used. Michael Gersten Disclaimer: The opionions here are not those of the computer club nor Ucla. They may not even be correct.
rb@ccivax (01/25/86)
> Matt Dillion thinks AmigaDos is ``total shit'' and believes that Unix > is the god which all o.s. must emulate. > > Well, Matt, I don't know if you are a Unix expert and, in fact, your exp- > ertise in operating system X doesn't really bear upon the argument at hand. > are too restrictive (read that narrow minded). The answer to statements > like ``Unix is great because...and AmigaDos is shit because...'' are > senseless and without worth. The two operating systems address different > needs. > > Maybe you are a UNIX expert, Matt, but you definately are not an AmigaDos > expert. > > Perry S. Kivolowitz Matt's article was actually quite useful and valuable. I believe his primary point was that AmigaDos is not what he considers a "Programmer Friendly" operating system. This is a very legitimate concern, because it is very hard to get a lot of applications software written for a system which requires "wizard level knowledge" of the interface. Even more important is the cost of maintaining applications for such a system. A simple unix application may require say, 8 lines of code to say "hello world". An operating system that requires 10 includes, 200 lines, and 60 parameters, reguardless of how they are structured, to open a file, and print a string to it, will cost more to maintain than in an operating system that requires six lines like: main() { char *message="hello world"; fd=open("window1",1); write(fd,message,sizeof(message)); } Of course, this is old Version 7, and even 4.2 has gotten more complicated, but still, this is a lot simpler than the "Hello world" program I saw when this board first started. Just so you don't put me in the "UNIX cheerleaders camp", there are features that MS-Dos, GEM and OS-9 have, that Unix doesn't. And since I don't know any more about Intuition than from the sources posted on this net I would like to know how it stacks up. Like: The ability to add new DEVICE DRIVERS to a running system. With Unix, you have to re-link the entire operating system kernal to add a new type of device. You can mount any number of iterations of that device type via the mount command but you can't mount a new device. Intuition? The ability to share code between applications via 'trap vectors'. Unix lets you share executables but if two routines call printf you get two copies of the full floating point library tromping around both disk and ram. OS-9 lets you share "modules" like the floating point library, graphics libraries, and the like (they are mounted like drivers). What about Intuition? Only what you need is in core. Unix has drivers for things that haven't even been invented yet just to take up kernal space. Outside of the file manager, you only mount what you really need. What about intuition? Of course, if Intuition is too complicated, Commodore may go the same way North Star went with the Horizon. North Star's dos was so complicated, you had to directly manipulate the directory to add a new file, allocate enough space when you created it, and then you could think about opening it. Eventually, they wrote a bios for CP/M and let nature take it's course. Of course they may try to go the way of Ohio Scientific, who clung to their OS to the very end, right down to their async disk format. I guess they still exist on paper somewhere.
dillon@ucbvax.BERKELEY.EDU (Matt Dillon) (01/28/86)
Yes, well, with UNIX, you DO have to re-link the kernal to get new device driver's. Why? (A) The device driver's are not process (B) process or not, it would be rather a mess adding driver's to a running system due to the VM, and the fact that it would have to be a dynamic allocation. However, for a small non-MMU/VM system like the Amiga, device driver's can be added, deleted, etc.... even if they WERE NOT processes. I didn't say that the OS should have been UNIX, just that in my opinion a more UNIX-like OS would be an improvement over the current OS. Perry S. Kivolowitz is absolutely correct in his assessment of my concerns. Although the Amiga's OS may work well for the system's programmers, writing useful applications are rather difficult. However, I do see a partial solution to the problem. Hide the OS. Hide the OS? Make yourself a library with such things as chdir(), directory search routines, generic open/close (even to the point of adding non-blocking I/O, if possible, and select, if possible) which handle serial, parallel, disk and screen devices. You could also rewrite the C startup and exit routines to open/close/deallocate everything when you leave. But there are problems which cannot be hidden: (A) Slow loader... so slow that having lc1 in the ram disk doesn't significantly reduce load time. (B) Badly put together time-slicing (especially w/ disk seeks) (C) SSLOW linker... no random libraries AT ALL (D) The Disk device make no attempt to optimize disk write's or read's by sorting requests by track. Neither does it process incomming requests properly. If you executed one program, then executed another while the first was loading, the disk reads a sector from the first, seeks to the second, reads a sector, seeks to the first, etc... Thus it takes nearly 20 times as long than if you loaded the to programs in sequence. THIS IS A MAJOR FAILING! ------------- There was a discussion a while back on OS9, where it was boasted the TEXT portion of an executable (i.e. the code), was sharable when several of the same program was running. The only way I can see this happenning is: (A) An MMU or MAP hardware (B) Some register, say A5, containing the 'base' of static data, and all static references made by adding this base to the offset and doing an indirection. It occur's to me, that (B), the only possible choice for the Amiga, would slow down static fetches quite a bit. Currently, all static fetches are made through the absolute address mode. It is interesting to note that static fetches take much longer than stack fetches: Absolute Fetch long :12 clock cycles Rel. Stack fetch :8 clock cycles It also occur's to me that method (B) above would be faster than an absolute (static) fetch for the first 32K. The disadvantage, of course, is that beyond 32K you cannot use the d(An) addressing mode, and must resort to two instructions, in which case the fetch would take much longer than 12 cycles. (NOTE: 4 cycles/memory fetch) I also noticed that lattice doesn't seem to do simple optimizations like OR's to memory (i.e. it moves to d0, then Or's, then moves back).. or am I wrong? ------------ oh yah... George Robbins from CBM made a comment that UNIX's require about 1Meg of memory and at least 20-40 Meg HD's. I agree (though I prefer at least 2 Meg and 100Meg HD). Consider that in a very short time, say a year or two, 100 Meg HD's and 8 Meg Ram will be available at the same cost as 20Meg HD + 640K ram is today. -Matt
jimomura@lsuc.UUCP (Jim Omura) (01/29/86)
Mike Gerstein says that all programs must be forced to use the OS. I take it you mean use the OS to do everything every time. Why? Cheers! -- Jim O. -- James Omura, Barrister & Solicitor, Toronto ihnp4!utzoo!lsuc!jimomura Byte Information eXchange: jimomura (416) 652-3880
bruceb@amiga.UUCP (Bruce Barrett) (01/30/86)
In article <357@ccivax.UUCP> rb@ccivax writes: (edited) >... A simple unix application may require say, 8 lines of code to say >"hello world". An operating system that requires 10 includes, 200 lines, >and 60 parameters, ... will cost more to maintain than in an operating >system that requires six lines like: > >main() >{ > char *message="hello world"; > fd=open("window1",1); ?? where is fd defined ?? > write(fd,message,sizeof(message)); >} > Ok, how about a system that takes 4 lines and 1 parameter?: main() { printf("Hello World"); } When compiled and linked using the "makesimple" execute file shipped with V1.1 of the development system (V3.03 of Lattice C) we can do this in 4 lines. Under the CLI this code prints "Hello world" in the current window, under workbench it opens a window for the output. You want to define the size and shape of the window to try: #include "stdio.h" main() { FILE *fd; fd = fopen("CON:10/10/300/150/Title of window", "w+"); fprintf(fd,"Hello World\n"); Delay(150); /* optional, so you can see output */ fclose (fd); /* optional, but good practice */ } > The ability to add new DEVICE DRIVERS to a running system... You can add device drivers without changing any of the kernel or kickstart code. >The ability to share code between applications via 'trap vectors'. Unix >lets you share executables but if two routines call printf you get two >copies of the full floating point library tromping around both disk and >ram. OS-9 lets you share "modules" like the floating point library, >graphics libraries, and the like (they are mounted like drivers). >What about Intuition? We support shared devices and libraries. At the moment the linked floating point support, printf, ... is not shared. Amiga DOS, Intuition, graphics, speech, audio, serial and parallel devices and libraries (to name a few) are shared. You can write your own libraries and devices which can be shared. >Only what you need is in core. Unix has drivers for things that haven't >even been invented yet just to take up kernal space. Outside of the >file manager, you only mount what you really need. What about intuition? Much of what you need (or don't) is in "ROM". "loadable" devices and libraries which you are not using (including: serial, parallel, printer, speech, and any custom devices and libraries) are loaded and removed on an "as needed" basis. Hope this answers some of your questions. As you can see we do things differently than Unix. Not necessarily better or worse. Designs and implimations are compromises and not always technically driven. Bruce Barrett, Commodore-Amiga, Inc.
drforsey@watcgl.UUCP (Dave Forsey) (01/30/86)
>AmigaDos is not itended to be unix. It is based on a model where relatively >well behaved processes cooperate to accomplish desired tasks. I have heard >second hand that these concepts are expressed in the literature for the 'Thoth' >operating system from the U of Waterloo. > Being the last person to maintain a Thoth system at the University of Waterloo (on a Honeywell Level 6 no less) and now involved with the step-daughter (son?) of Thoth called Harmony, I would be very interested if any Amiga developers could elaborate on the message passing structure of Intuition/AmigaDos. - Does it use blocking Sends and Receives with non-blocking Reply? - Are the messages fixed or variable length? If they are fixed is there any provision for passing longer messages? - What is the timing for a Send/Receive/Reply for a 8-byte message? - Does Intuition use the concept of "Administrators" (tasks that are continually awaiting messages requesting services)? - Thoth had the concept of "teams", groups of tasks which can share memory, do teams exist or are all tasks considered co-resident in memory? - What is the software interface to the interrupt level of the processor? (Note that "task" is used instead of "process", this is because Harmony is a multi-processor OS, and the separate nomenclature is less confusing). Dave Forsey Computer Graphics Laboratory, University of Waterloo, Waterloo, Ontario, Canada.
mwm%ucbopal@BERKELEY.EDU@caip.RUTGERS.EDU (01/31/86)
From: Mike (I'll be mellow when I'm dead) Meyer <mwm%ucbopal@BERKELEY.EDU> Matt Dillon once again savages AmigaDOS for not being Unix, among other things. To wit: (C) SSLOW linker... no random libraries AT ALL The fix is easy - use a different compiler, with a faster linker. No need to fool with the OS at all (not really an OS complaint). (A) Slow loader... so slow that having lc1 in the ram disk doesn't significantly reduce load time. I haven't noticed any serious problems loading files compared to say, a VAX running Unix. A little bit slower, but it's got floppies instead of a hard disk, and it's got to relocate stuff on the fly (no MMU - the Amigas one major failing). There was a discussion a while back on OS9, where it was boasted the TEXT portion of an executable (i.e. the code), was sharable when several of the same program was running. The only way I can see this happenning is: (A) An MMU or MAP hardware (B) Some register, say A5, containing the 'base' of static data and all static references made by adding this base to the offset and doing an indirection. And the correct answer (for OS/9) is: (C) All programs are required to be relocatable (level I and II, anyway). And what you get is actually better than Unix-like shared text. OS/9 has the ability to share the code for a library between several *different* programs running simulatenously. Multics had this, and it's one of the things that people are *still* trying to put into most Eunices. Of course, AmigaDOS has this same spiffy feature (so do most modern OS's, though), and it uses: (D) Load-time relocation. Slows down the load a little, but if done right (like, put the I/O library in one of the shared libraries), you should get back more in saved I/O after the first load than you spend relocating things. Oh, BTW, all getting Unix-like shared text requires is to have three seperate segments: text, data and stack. The only addressing mode you lose in getting shared text is pc relative. Each process gets it's own stack. I also noticed that lattice doesn't seem to do simple optimizations like OR's to memory (i.e. it moves to d0, then Or's, then moves back).. or am I wrong? I've been told that Lattice C is a recursive descent compiler. Anybody silly enough to write a recursive descent compiler for something like the Amiga (or most anything else....) is silly enough to miss OR's to memory. If this rumor is wrong, *please* let me know. oh yah... George Robbins from CBM made a comment that UNIX's require about 1Meg of memory and at least 20-40 Meg HD's. I agree (though I prefer at least 2 Meg and 100Meg HD). Consider that in a very short time, say a year or two, 100 Meg HD's and 8 Meg Ram will be available at the same cost as 20Meg HD + 640K ram is today. True, but a PIG is still a PIG. I'd rather use all those juicy resources making my life easier than providing for a piggy OS. Mat's proposed solution to some of the OS (?) problems: Hide the OS. Hide the OS? Make yourself a library with such things In other words, build a better C<->AmigaDOS interface. One of the most important things to do would be get the library allocation back into load-time, where you don't have to write funny code to deal with it. Access to the global vector would be nice (shrinking code a *lot*), also. But any attempts to squeeze a langauge onto an OS designed with another language at it's heart is going to require either a lot of work, or wind up being ugly (witness LISP, Pascal and FORTRAN on Unix). Final comment. I finally got my AmigaDOS manuals, and got a look at what's going on inside that file system. My hat's off to whoever designed it. It's simpler than the Unix file system, much more robust, and except for some special cases, should be faster (the important special case is globs). The most imporant thing to notice is ~1/2 the disk access to turn a pathname into a file*. It's just to bad that globs are so heavily used by the workbench. <mike * Except for 4.3BSD, which put caching into pathname->inode translation. Since this got back about 20% of the CPU, you can decide for yourself how important the AmigaDOS 50% decrease in disk accesses is going to be.
mwm%ucbopal@BERKELEY.EDU@caip.RUTGERS.EDU (02/01/86)
From: Mike (I'll be mellow when I'm dead) Meyer <mwm%ucbopal@BERKELEY.EDU> rb@ccivax says: >A simple unix application may require say, 8 lines of code to say >"hello world". An operating system that requires 10 includes, 200 lines, >and 60 parameters, reguardless of how they are structured, to open a >file, and print a string to it, will cost more to maintain than in an >operating system that requires six lines like: > >main() >{ > char *message="hello world"; > fd=open("window1",1); > write(fd,message,sizeof(message)); >} Ok, here, for your edification, is a simple program that opens a window, prints "hello world", and then waits for you to hit return and exits. I used the text above with the following changes: 1) Declared fd. 2) Declare message as an array, instead of a pointer. That way, sizeof will report the length of the string, instead of the length of the pointer. 3) Made message static, so that it could be initialized. 4) Changed the open call to use AmigaDOS names & numbers. 5) Added a read so the window didn't disappear. char message[]="hello world"; main() { int fd ; fd=open("CON:10/10/200/100/Window1",1006); write(fd,message,sizeof(message)); read(fd,message,sizeof(message)); } Note that it takes 8 lines, 0 includes, and exactly as many parameters as the Unix version above. Also note that this is *not* code to emulate when writing C. The second flag to open should be picked up from an include file, the open and write calls should have their return values checked, and fd should be declared as a type from an include file somewhere. It does, however, resemble much of the code to be found in Unix utilities. Now, about Unix device drivers: > The ability to add new DEVICE DRIVERS to a running system. With Unix, >you have to re-link the entire operating system kernal to add a new type >of device. You can mount any number of iterations of that device type >via the mount command but you can't mount a new device. Intuition? This reminds me of dBase-II, being that which bilge pumps suck. Each Unix device type has a driver, and those drivers have some data elements that are allocated at compile time, one per iteration of the device. Hence, the maximum number of copies of the device that can be added is fixed at compile time for the driver. The mount command has nothing to do with adding devices to a system. It's used to add a file system on a random-access device to the file system tree. AmigaDOS doesn't have such a beast, since it has a forest instead of a tree (this is a win). Now, on to AmigaDOS: >Only what you need is in core. Unix has drivers for things that haven't >even been invented yet just to take up kernal space. Outside of the >file manager, you only mount what you really need. What about intuition? AmigaDOS looks in a known directory for drivers, and loads them when you access the device. Unix, on the other hand, chews up the same amount of memory for each device, whether it's physically attached to the system or not (exception: some Eunices crash if a device configured in the kernel isn't on the system). I should explain what the mount() call really does, but suffice to say that mounting a file system doesn't change the amount of kernel space used one wit. >Matt's article was actually quite useful and valuable. I believe his primary >point was that AmigaDos is not what he considers a "Programmer Friendly" >operating system. This is a very legitimate concern, because it is very >hard to get a lot of applications software written for a system which >requires "wizard level knowledge" of the interface. I disagree. Applications don't appear on a machine because it is easy to write software for it; applications appear on a machine because people think there are going to be a lot of those machines. Witness the IBM-PC and MSDOS. Are you going to argue that that's a "programmer friendly" environment? On the other hand, consider Unix. Almost any non-trivial application requires "wizard level knowledge" of the interface (assuming you're writing in C - other languages can't get to that interface at all). But Unix is a primitive OS, so it has a simple interface, meaning that applications are easy to write. Oddly enough, no applications showed up on it for the first 10 or more years of it's life - because there wasn't a market for them. The people who developed Unix were working on a system for their own private use, and had no concerns other than making it easy to write programs for it. The people who developed AmigaDOS were developing an OS for a system that they were planning on selling to make money off of. There first concern shouldn't be making it programmer friendly, it should be making it *user* friendly. I think they did a good job. If you go back over Matt's complaints, you'll find that most of the accurate ones have to deal with the interface between C and the libraries it uses. This interface should be fixed in later releases. For the early releases, worrying about it instead of the user interface is silly; what percentage of Amiga's are going to be sold to programmers if it's going to succeed? To summarize: yes, the Intuition interface is hard to program. However, if you stay inside the CLI interface, it's about the same as Unix v7. On the other hand, Intuition is user friendly, and AmigaDOS itself is easier for naive users than any "standard" Unix shell (csh, sh, or ksh). I've been saying for over 5 years that Unix should be trashed in favor of something else. AmigaDOS provides the same level of expert-friendlyness as the Eunices that existed then. It also shows *much* more user-friendlyness for non-expert users. AmigaDOS wouldn't be a great successor for Unix. But it's adequate. <mike Celebrate, as "Unix, the OS/360 of the 80's" may not be true after all!
jimomura@lsuc.UUCP (Jim Omura) (02/01/86)
Using OS-9 on the Radio Shack Color Computer I have added device descriptors and drivers on the fly. This is because OS-9 device drivers, properly written are done in position independant code and are fully relocatable modules. Cheers! -- Jim O. -- James Omura, Barrister & Solicitor, Toronto ihnp4!utzoo!lsuc!jimomura Byte Information eXchange: jimomura (416) 652-3880
mykes@3comvax.UUCP (Mike Schwartz) (02/01/86)
Just a quick thought: How many lines of Unix code does it take to do any of the following: 1. open a window with any of the standard Unix gadgets? 2. translate and narrate a block of text? 3. animate and move objects around on the screen? 4. birth a new cli (shell) task in it's own window? 5. any Intuition function (icons, drawers, etc.)? 6. generate fonts on the screen? The point I am trying to make is that it probably takes as much code to implement the Amiga OS as it does Unix. Unix has had many years and many programmers to develop it to the point of refinement (that's the best I can say for it, text only is boring to me). OS-9 may have been a better choice than AmigaDos (or TRIPOS or whatever), but it was not chosen and it's too bad. If OS-9 ever makes it to the Amiga, it better work with all the programs everyone has been writing, or I (and maybe a few others) won't go near it. I like intuition a lot, and I am glad that Amiga chose to give us primitive routines to build libraries around instead of some real high- level limited-function interface. Have any of you Unix freaks ever seen the AT&T Unix PC? It seems to me that it is all you have been asking for. I think it is remarkably like the Amiga, with it's windows and C-Shells running in them. And it uses the mouse, and has hi-res screen and has a few gadgets, etc. It also runs UNIX native, connects to mainframes well, runs all the Unix programs you have become comfortable with over the years. It has a 68000 and comes with a hard disk. It is VERY IMPRESSIVE to me, to say the least, although I still like the Amiga better because of the software.
nckary@ndsuvax.UUCP (nckary) (02/05/86)
In message <1133@caip.RUTGERS.EDU> Mike (I'll be mellow when I'm dead) Meyer writes: > I've been told that Lattice C is a recursive descent compiler. > Anybody silly enough to write a recursive descent compiler for > something like the Amiga (or most anything else....) is silly enough Please explain yourself. I have written compilers that parse top down and compilers that parse bottom up and I don't see a reason to call either technique silly. YACC has made LALR parsing very popular and I almost always use YACC because it is so convenient, but LL parsing is just as viable and in the absence of YACC it may be easier to implement. I suppose the reason that LL (recursive descent) parsing has a bad name is that in it's simplest form the parser selects productions in a pre- determined order and backtracks when a dead end is encountered. Recursive descent can be refined by adding a selection set for each production. The selection set permits the parser to select the correct production in any situation, so backtracking is eliminated. This sort of parser is sometimes called a Deterministic Recursive Descent Parser. The execution time for this type of parser is Big Oh of n (where n is the length of the input sentence), which is as good as it gets! Another possible drawback to LL parsing is that LL grammars can not contain left recursive rules (direct or indirect). Many programming languages are specified with grammars that are left recursive because it is both convenient and intuitive. While algorithms exist to transform left recursive grammars to non left recursive grammars the result can be considerably less intuitive. There are advantages to LL parsing if you are up to the task of writing the grammar. I personally think that error detection is easier in an LL parser. Once an LL grammar is written, the parser is trivial. I would not want to write an LALR parser without the aid of something like YACC. Maybe I'm making a mountain out of a mole hill but LALR parsers seem complex to me. A good text on this subject is "Compiler Design and Construction" by Arthur B. Pyster published by PWS Publishers (Prindle, Weber & Schmidt). The text is intended for undergraduates, it is easy to read and includes an example compiler for a PASCAL like language using a recursive descent parser. The example is coded in "structured English". The only point here is that the use of recursive descent is not automatically a reason to sneer at a compiler and may well be a reason to admire it. Since I do wish Mike a long and fruitful live, I will not ask him to become mellow :-). Dan Kary North Dakota State University Computer Science Department 300 Minard Hall P.O. Box 5075 Fargo, ND 58105 (701) 237-8171 ihnp4!dicomed!ndsuvax!nckary
rb@ccivax.UUCP (02/06/86)
In article <618@amiga.amiga.UUCP> bruceb@amiga.UUCP (Bruce Barrett) writes: >In article <357@ccivax.UUCP> rb@ccivax writes: (edited) > fd = fopen("CON:10/10/300/150/Title of window", "w+"); I like this open feature, glad you pointed it out. Can you also do something like: box(TopLeftCorner,BottomRightCorner,fd) ; maybe those early postings from readers who didn't know you had a graphic version of standard I/O. >> The ability to add new DEVICE DRIVERS to a running system... > You can add device drivers without changing any of the kernel or > kickstart code. Good! Can someone write a driver that is the equivelant of a pipe? >> OS-9 lets you share "modules" like the floating point library, >>graphics libraries, and the like (they are mounted like drivers). >>What about Intuition? > We support shared devices and libraries. At the moment the > linked floating point support, printf, ... is not shared. Sounds like this is more of a matter of time, rather than lack of forsight. >>Only what you need is in core. > Much of what you need (or don't) is in "ROM". "loadable" devices > and libraries which you are not using (including: serial, parallel, > printer, speech, and any custom devices and libraries) are loaded > and removed on an "as needed" basis. I assume the 'hooks' to the "ROM" are somewhere in RAM so they can be re-vectored if necessary? >Hope this answers some of your questions. As you can see we do things >differently than Unix. Not necessarily better or worse. >Bruce Barrett, Commodore-Amiga, Inc. From the looks of things, there have been some good choices made. Seems like there's the best of Mac combined with most of the best of UNIX. Hopefully, when the cheerleaders get over the initial 'contempt prior to investigation', some of the Amiga system will be incorporated into some new 'Defacto Standards'. Any plans on liscencing Intuition? About the only variable still in question is portability. Appearently Commodore-Amiga would like to corner developers into writing source which is exclusively for their machine. IBM plays that game real well. Apple seems to be less successful in their MAC line. DEC doesn't seem to worry so much about that sort of thing, they even have their own version of UNIX. How many people are using a VAX to get this? Is it running UNIX? Probably the main reason for the 'OS-9 and Unix static' is that neither Tripos nor Intuition/AmigaDos were familiar to US programmers. Seems like people get nervous when the same company does both the hardware and the software. Maybe it's the scars from the mutually exclusive characteristics of Apple/Atari/Commodore and other 6502 machines and even the TRS-80 Lines. CP/M and MS/Dos machines, though grossly inferior, were being considered the "Business Systems", while the "proprietary boxes", with graphics and even some better software were being considered "toys". Having been burned three times, I'd like to know that I can "Hedge my bet's" before I go for double or nothing. I could care less about IBM compatibility, what I would like though is an OS that would let me buy/run/sell the same application software on the Mac, Amiga, and the ST without having to spring for a three separate copies. Or at least be able to excange data between the three without having to physically connect the machines (modem, comm-lines...). There are situations where each would be desirable (We already have a Mac, but not much software, Amiga's are powerful enough to do presentation graphics, and ST's are cheap and 'good enough for photo-copy stuff') but not if they continue to 'snub' each other. I'd hate to see the 68000 lose out to the 80386, but it might if the Mac/Amiga/ST people won't play ball with each other. Has IBM announced their '386 machine yet?
aglew@ccvaxa.UUCP (02/06/86)
How many lines of UNIX code does it take to change a lightbulb? One - use an ioctl. or None - it has to be done in the kernel.
bruceb@amiga.UUCP (Bruce Barrett) (02/10/86)
In article <374@ccivax.UUCP> rb@ccivax.UUCP (What's in a name ?) writes: >In article <618@amiga.amiga.UUCP> bruceb@amiga.UUCP (Bruce Barrett) writes: >>In article <357@ccivax.UUCP> rb@ccivax writes: (edited) >>>Only what you need is in core. >> Much of what you need (or don't) is in "ROM". "loadable" devices >> and libraries which you are not using (including: serial, parallel, >> printer, speech, and any custom devices and libraries) are loaded >> and removed on an "as needed" basis. > > I assume the 'hooks' to the "ROM" are somewhere in RAM so they > can be re-vectored if necessary? > What is in ROM are the routines necessary to load the drivers from disk. If you don't like devs:serial.device I suppose you could write your own (upwordly compatable) copy and put that in the DEVS: directory. This might create a problem later for you if Commodore-Amiga also chooses to release a new upwardly compatible version of the same driver. (Murphy says "they won't match!") --Bruce Barrett
jimomura@lsuc.UUCP (Jim Omura) (02/11/86)
In article <374@ccivax.UUCP> rb@ccivax.UUCP (What's in a name ?) writes: >In article <618@amiga.amiga.UUCP> bruceb@amiga.UUCP (Bruce Barrett) writes: >>In article <357@ccivax.UUCP> rb@ccivax writes: (edited) > >About the only variable still in question is portability. Appearently >Commodore-Amiga would like to corner developers into writing source >which is exclusively for their machine. IBM plays that game real >well. Apple seems to be less successful in their MAC line. >DEC doesn't seem to worry so much about that sort of thing, they even >have their own version of UNIX. > >How many people are using a VAX to get this? Is it running UNIX? I'm 'here' via Unix--on a *Perkin-Elmer*! > >Probably the main reason for the 'OS-9 and Unix static' is that neither >Tripos nor Intuition/AmigaDos were familiar to US programmers. Seems >like people get nervous when the same company does both the hardware >and the software. Maybe it's the scars from the mutually exclusive >characteristics of Apple/Atari/Commodore and other 6502 machines and >even the TRS-80 Lines. CP/M and MS/Dos machines, though grossly >inferior, were being considered the "Business Systems", while the >"proprietary boxes", with graphics and even some better software >were being considered "toys". Having been burned three times, I'd like >to know that I can "Hedge my bet's" before I go for double or nothing. > >I could care less about IBM compatibility, what I would like though >is an OS that would let me buy/run/sell the same application software on >the Mac, Amiga, and the ST without having to spring for a three >separate copies. Or at least be able to excange data between the >three without having to physically connect the machines >(modem, comm-lines...). There are situations where each would be >desirable (We already have a Mac, but not much software, Amiga's >are powerful enough to do presentation graphics, and ST's are >cheap and 'good enough for photo-copy stuff') but not if they >continue to 'snub' each other. I'd hate to see the 68000 lose out >to the 80386, but it might if the Mac/Amiga/ST people won't play >ball with each other. Has IBM announced their '386 machine yet? Now we're getting to the crux of the problem. If "Intuition" is only "as good as" OS-9 or anything else, or at best can become an OS of this level, then Commodore (and Atari) have really done a disservice to the 68000 world. The *last* thing we needed was another wheel reinvented. To be excusable, I have to say that TriPOS must be shown to be *better* than OS-9. It clearly isn't. For those who don't know, the 68K world has *many* excellent OS's. The most popular before the Mac were CP/M 68K, OS-9, Uniflex and either P-code or Forth among the smaller systems. In large systems the various permutations of Unix *are* the standard. Out of the above, CP/M 68K is widely bought and rarely used. There's simply no reason to bother with it. There isn't much useful software available and the only thing you can do get around it as best you can. P-code and Forth have their followings, but the same arguments for and against these are know in all the other processor family worlds. I won't repeat them. That leaves OS-9 and Uniflex. Both OS-9 and Uniflex are powerful Unix-like OS's. Both originated in the Motorola world (both on the 6809 to be precise). At this time OS-9 has become essentially a standard for small systems based on 68K's. The idea that *only* one of either the Atari or the Amiga is going to survive is silly. I don't believe it. Both are excellent machines. Why should only 1 survive? In the mean time, you have raised the standard of another non-standard why? Haven't you, Commodore learned your lesson yet? Look at the fiasco of your non-ASCII computers from the Pet through to Plus 4? Look at the problems people had trying to use other peripherals with your IEEE-488 bus, when what they wanted was true ASCII and RS-232C. Haven't you heard their cries when new software for Apple II's or Ataris were introduce? Or were you even listening? There are times and ways to break new ground--to advance the state of the art. To be different just for the sake of being different is childishness. If you must be different just for the sake of being different, then wear your shirts backwards. That much costs no else anything. Cheers! -- Jim O. -- James Omura, Barrister & Solicitor, Toronto ihnp4!utzoo!lsuc!jimomura Byte Information eXchange: jimomura (416) 652-3880
mwm%ucbopal@BERKELEY.EDU@caip.RUTGERS.EDU (02/13/86)
From: Mike (I'll be mellow when I'm dead) Meyer <mwm%ucbopal@BERKELEY.EDU> Jim Omura (lsuc!jimomura ?) Makes a few questionable statemens: > Now we're getting to the crux of the problem. If "Intuition" is >only "as good as" OS-9 or anything else, or at best can become an >OS of this level, then Commodore (and Atari) have really done a >disservice to the 68000 world. The *last* thing we needed was >another wheel reinvented. To be excusable, I have to say that >TriPOS must be shown to be *better* than OS-9. It clearly isn't. No, but it isn't clear that OS-9 is superior to TRIPOS, either. What is clear is that OS-9 inherited at least one of Unix's fundamental flaws, whereas TRIPOS didn't. In other words, it *could* be better than OS-9, given a little development time. Actually, if you're a hacker, it already is. I can do stackable line disciplines in TRIPOS. Can I do them in OS-9? There are probably other, similar things that I haven't found yet. >At this time OS-9 has become essentially a standard for small systems based >on 68K's. Can I get OS-9 for Stride? Pinnacle? the Tandy 68K box? Compupro 68K systems? I don't think so (unless it's from second-party vendors), but TRIPOS runs on both the Stride and the Pinnacle. Anyone know if carefully-written (i.e., avoiding the windowing/graphics software) code will run on TRIPOS? Along the same lines, what kind of windowing/graphics standard exists for OS/9-68K. Don't complain about Amiga having chosen a non-US OS for their box. TRIPOS does have a following (which I was happy to find out; TRIPOS has always seemed like to nice an OS to die), it's just not as visible as OS-9, being mostly in Britian. They didn't raise a new "non-standard", they just chose one you weren't familiar with. >There are times and ways to break new ground--to advance the state of the art. You're right, and I think this is one of them. It's time to outgrow Unix and it's look-alikes. OS-9 presents lots of interesting improvements over Unix's of the early 80's (most of which are now in system V, except for the much better speed), and MicroWare is to be congratulated for helping spread the word about such things. AmigaDOS presents lots of interesting improvements over Unix's today. It *isn't* useable as a replacement for either Unix or OS-9 in many places where they are used. But it makes some good ideas visible to the world, (we're talking about them, aren't we?), and is to be applauded for doing so. <mike
jimomura@lsuc.UUCP (Jim Omura) (02/15/86)
Before I begin, thank you for your very appreciated reply. In article <1270@caip.RUTGERS.EDU> mwm%ucbopal@BERKELEY.EDU@caip.RUTGERS.EDU writes: >From: Mike (I'll be mellow when I'm dead) Meyer <mwm%ucbopal@BERKELEY.EDU> > >Jim Omura (lsuc!jimomura ?) Makes a few questionable statemens: > >> Now we're getting to the crux of the problem. If "Intuition" is >>only "as good as" OS-9 or anything else, or at best can become an >>OS of this level, then Commodore (and Atari) have really done a >>disservice to the 68000 world. The *last* thing we needed was >>another wheel reinvented. To be excusable, I have to say that >>TriPOS must be shown to be *better* than OS-9. It clearly isn't. > >No, but it isn't clear that OS-9 is superior to TRIPOS, either. What >is clear is that OS-9 inherited at least one of Unix's fundamental >flaws, whereas TRIPOS didn't. In other words, it *could* be better >than OS-9, given a little development time. Actually, if you're a >hacker, it already is. I can do stackable line disciplines in TRIPOS. >Can I do them in OS-9? There are probably other, similar things that I >haven't found yet. Excellent. What are they and where do they become an advantage? > >>At this time OS-9 has become essentially a standard for small systems based >>on 68K's. > >Can I get OS-9 for Stride? Pinnacle? the Tandy 68K box? Compupro 68K >systems? I don't think so (unless it's from second-party vendors), but >TRIPOS runs on both the Stride and the Pinnacle. Anyone know if >carefully-written (i.e., avoiding the windowing/graphics software) >code will run on TRIPOS? Along the same lines, what kind of >windowing/graphics standard exists for OS/9-68K. Good point. Except OS-9 is widely used around the world. HSC in particular sells it in Europe and in Japan it runs on various Fujitsu and, I think Hitachi machines. Fujitsu in particular is a company I think most people here should have heard of by now. It is one of the big 3 computer mfrs. in Japan. They make everything from personal computers to mainframes of very high capacity and power. It would not surprise me to find out that Fujitsu's 68000 OS-9 systems have outsold Stride and Pinnacle combined on a world-wide basis. Then there are the numerous single board computers based on the Mizar, Gimix and Helix 68K multi-user systems. There is a development system for the VME-10 which should be usable with similarly configured VME bus computers and of course SS-50 systems. There are other single board OS-9 systems as well. The Emerald 68K systems come to mind. As for myself, I'm waiting for the port to the Motel Cypher board to be completed. I expect to have my 68K system up by April. The last I heard, the Atari port is expected this spring. Now, as for the Amiga port, I have no idea, but J. Jones' recent posting disturbs me. It looks like the people attempting that port are in trouble, unless I misunderstood the gist of it. >Don't complain about Amiga having chosen a non-US OS for their box. >TRIPOS does have a following (which I was happy to find out; TRIPOS >has always seemed like to nice an OS to die), it's just not as visible >as OS-9, being mostly in Britian. They didn't raise a new >"non-standard", they just chose one you weren't familiar with. I read British computer magazines on a fairly regular basis. (Which Computer?, Which Micro, Your Computer, Computing Today and whatever else comes across the pond--not all issues, but a couple of each every year with a half dozen issues/yr. of a couple of them. The British seem to be able to support an amazing number of periodicals every month.) I have rarely seen mention of TRIPOS. OS-9 68K isn't all that well known in England either, but OS-9 6809 is. But then the British even prefer Flex (no, not Uniflex but the *old* Flex) to OS-9, so what can you make of popularity in England? :-) >>There are times and ways to break new ground--to advance the state of the art. > >You're right, and I think this is one of them. It's time to outgrow >Unix and it's look-alikes. OS-9 presents lots of interesting >improvements over Unix's of the early 80's (most of which are now in >system V, except for the much better speed), and MicroWare is to be >congratulated for helping spread the word about such things. AmigaDOS >presents lots of interesting improvements over Unix's today. It >*isn't* useable as a replacement for either Unix or OS-9 in many >places where they are used. But it makes some good ideas visible to >the world, (we're talking about them, aren't we?), and is to be >applauded for doing so. I'll assume this doesn't end the discussion. I expect that you *will* find more points which you feel give you and advantage. So far, I can't say that I feel your points show that TRIPOS is a system to "grow into" from OS-9. You have pointed out a feature which you feel gives it an advantage. It isn't a feature which I recognize, but even still I have my doubts whether it's all that significant (I think I know what you're talking about, but I'm not sure and if it *is* what I think it is, I can't see any advantage to it at all--not disadvantageous, just not better.) Anyway, I'll look forward to the next instalment if any. Cheers! -- Jim O. -- James Omura, Barrister & Solicitor, Toronto ihnp4!utzoo!lsuc!jimomura Byte Information eXchange: jimomura (416) 652-3880
rb@ccivax.UUCP (rex ballard) (02/18/86)
Imagine having to gamble on a new car if GM used diesel, Ford used unleaded, Chrysler used gasahol, Honda used alcohol, Toyota used coal gas, ..... and so on for about 20 different cars, and no car could use another's gas. What kind of gas should the gas stations sell? What should the refiners produce? What investments should be made (oil wells or farm land?). This is the delemma faced by the computer industry today. Each "proprietary system" succeds or fails based on this very logic. IBM has set one standard (however obsolete), it is time for another to be set. In article <1270@caip.RUTGERS.EDU> mwm%ucbopal@BERKELEY.EDU@caip.RUTGERS.EDU writes: >From: Mike (I'll be mellow when I'm dead) Meyer <mwm%ucbopal@BERKELEY.EDU> >>The *last* thing we needed was >>another wheel reinvented. To be excusable, I have to say that >>TriPOS must be shown to be *better* than OS-9. It clearly isn't. >No, but it isn't clear that OS-9 is superior to TRIPOS, either. >>At this time OS-9 has become essentially a standard for small systems based >>on 68K's. > >Can I get OS-9 for Stride? Pinnacle? the Tandy 68K box? Compupro 68K >systems? It is possible to get OS-9 68K for all three of these machines, in fact Level 2 (Segmented with MMU), and Level 3 (Demand Paged Virtual Memory) may also be available and are source code (and object?) code compatibile. >I don't think so (unless it's from second-party vendors), but >TRIPOS runs on both the Stride and the Pinnacle. TRIPOS is a subset of Intuition, I assume it is available or portable to any manufacturer willing to port it, or a third party? (Liscence fees?). But Intuition is not in this class, if it were, the possibility of using TRIPOS as a 68K equivelant of CP/M or MS/DOS might be worth considering. >Anyone know if >carefully-written (i.e., avoiding the windowing/graphics software) >code will run on TRIPOS? Along the same lines, what kind of >windowing/graphics standard exists for OS/9-68K. There is a VDI interface included, windows are part of the whole package. (Material from UW included announcements for full 63485 support) They also support true networking capabilities. >Don't complain about Amiga having chosen a non-US OS for their box. >TRIPOS does have a following (which I was happy to find out; TRIPOS >has always seemed like to nice an OS to die), it's just not as visible >as OS-9, being mostly in Britian. They didn't raise a new >"non-standard", they just chose one you weren't familiar with. TRIPOS may or may not be a true 'standard', but the packages which make it useful and desirable (VDI graphics, Windows, Mice...) are 'Amiga Only'. >>There are times and ways to break new ground--to advance the state of the art. >You're right, and I think this is one of them. Here, I agree, this is the time to advance the state of the art in the form of a practical "Industry Standard OS" equal or better than the "Mac Enviroment" with multi-tasking. Amiga provides these things, but at the cost of data and program market incompatibility. Personally, I wouldn't care whether it was TRIPOS, OS-9, VRTX, XINU, or Concurrent CP/M 68K, but if one of these systems becomes available, it should be adopted as quickly as possible, or ALL of the 68K machines really will be just "Toy Computers" to many businesses. Apple, Atari, and Commodore had more capabilities on their machines individually than CP/M or MS-DOS put together, but those were the "REAL COMPUTERS", while the 6502 machines were "TOYS". The big 3 can compete with graphics processors, faster CPU's, floating point co-processors, and other competitive edges all they want, and they'll get good support. Right now, you have to give these machines a frontal lobotomy to make them IBM compatible, (This makes it a "serious machine") and even then Apple has not really done that well against "Big Blue's Box" even after two years. Many companies bought VAX and other non-IBM mini-computers because UNIX made them source code compatible. Even UNIX micro's have succesfully cut into the Series 1 market, because they run UNIX. The consumer will only tolerate about 3 standards. In Audio, it's 45's LP's, and Cassettes, with 45's giving way to CD-Roms. In Video, there are really only two standards, VHS and BETA. Now imagine the market situation if Sony, JVC, Magnavox, Panasonic, and Zenith all used their own "proprietary" standards. Perhaps Commodore will see the benefits of providing this industry standard system, perhaps Micro-Ware or some as yet unknown "wizard" will perform this great service. When it happens, I hope that we are all willing to accept the "trade-offs" and adopt it. If it does not happen, I hope the "industry wide crash" won't be too severe.
hollombe@ttidcc.UUCP (The Polymath) (02/19/86)
In article <408@ccivax.UUCP> rb@ccivax.UUCP (What's in a name ?) writes: >Imagine having to gamble on a new car if GM used diesel, Ford used >unleaded, Chrysler used gasahol, Honda used alcohol, Toyota used coal >gas, ..... and so on for about 20 different cars, and no car could use >another's gas. > >What kind of gas should the gas stations sell? What should the refiners >produce? What investments should be made (oil wells or farm land?). >This is the delemma faced by the computer industry today. Each "proprietary >system" succeds or fails based on this very logic. Wrong analogy, I think. This would be more appropriate if each computer had different input power requirements (60 vs 50 hz. vs DC. 110, 120, 220, 240, etc. volts) although that's more easily compensated for than differing chemical fuels. Closer to the mark would be radically differing steering and control mechanisms. Throttle on the steering column, rear-wheel steering, that sort of thing. Does it really matter which is better? Commodore is obviously committed to their operating system and isn't about to switch to OS-9 or UNIX at this point. If there's enough demand third party vendors will step in to fill the gap and all the people who don't like Intuition will get their own preference. Meanwhile, this whole debate has little to do with the Amiga per se and probably belongs in another group. Enough, already. -_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_ The Polymath (aka: Jerry Hollombe) Citicorp(+)TTI 3100 Ocean Park Blvd. Geniuses are people so lazy they Santa Monica, CA 90405 do everything right the first time. (213) 450-9111, ext. 2483 {philabs,randvax,trwrb,vortex}!ttidca!ttidcc!hollombe