dillon@CORY.BERKELEY.EDU (Matt Dillon) (12/16/86)
>In any case, to put in my 2 cents, I want to see the CLI do consistent >file name expansion. I don't want each individual program to do it in >it's own way. I don't have any problems with file name expansion with >the unix shell, and I don't see why I would with my Amiga. ABSOLTELY NOT!. Remember that most utilities *require* their very own CLI. If you make the CLI too big, the overhead for your favorite utilities will go up to. What I *do* want to see is some library support (dos library) for executing processes will full I/O redirection with their very own CLI attached. To get the functionality, use a shell program (for instance, mine). NOW LOOK C-A, I'VE ENOUGH OF THIS SH#$%%T. WILL YOU *PLEASE* POST DOCUMENTATION ON BCPL STARTUP AND ALL THE STRANGE THINGS IT DOES TO THE STDIO FILEHANDLES SO WE CAN WRITE AN EXEC() THAT WORKS!!!. I thought I had gotten an exec() that worked, but no, when I modify it to APPEND to the output file instead of CREATE/TRUNCATE, the BCPL program fails to write everything to the file. Why the hell you didn't add this to the 1.2 DOS library I'll never know. -Matt
carolyn@cbmvax.cbm.UUCP (Carolyn Scheppner) (12/18/86)
In article <8612152348.AA29410@cory.Berkeley.EDU> dillon@CORY.BERKELEY.EDU (Matt Dillon) writes: > > NOW LOOK C-A, I'VE ENOUGH OF THIS SH#$%%T. WILL YOU *PLEASE* POST >DOCUMENTATION ON BCPL STARTUP AND ALL THE STRANGE THINGS IT DOES TO THE >STDIO FILEHANDLES SO WE CAN WRITE AN EXEC() THAT WORKS!!!. I thought I had >gotten an exec() that worked, but no, when I modify it to APPEND to the >output file instead of CREATE/TRUNCATE, the BCPL program fails to write >everything to the file. Why the hell you didn't add this to the 1.2 DOS >library I'll never know. > > -Matt I've had more than enough of your SCREAMING and CURSING. You act like we're hoarding some Magic Document that would endow the reader with Instant Knowledge of the Glorious Inner Secrets of AmigaDOS. Well Matt, there is no magic document. I wish there was. What we have is the AmigaDOS source code. BCPL is a bit like C, and it is possible to decipher and even make changes to localized portions of the code. But when you start to trace code that interfaces with the private global functions via run-time linking, you get stopped by tables of labels and vectors that specify numerical offsets into other tables that are built at run time. And if you manage to make it to the other side of the table because a corresponding label on the other side happens to have a similar name, you get stuck there because because that code starts loading registers with labels defined as offsets into the run-time table. So, you can either pay Tim King to reveal the inner secrets, or wait until someone here has time to decipher a very large and very complex program that jumps all over the place. carolyn -- =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= Carolyn Scheppner -- CBM >>Amiga Technical Support<< UUCP ...{allegra,caip,ihnp4,seismo}!cbmvax!carolyn PHONE 215-431-9180 =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
carolyn@cbmvax.cbm.UUCP (Carolyn Scheppner) (12/18/86)
This is for everyone but Matt Dillon who has been rather rude lately. I've spent the past three days typing this in between phone calls and after hours. I even had to type the first hundred lines in twice because our VAX went down before I had saved the file. The following is a summary of an article that Tim King wrote for the CBM UK developer's newsletter. He sheds some light on the inner workings of AmigaDOS. carolyn -------------------------------------------------------------------------- Some AmigaDOS Info from Tim King ================================ GLOBAL VECTOR ============= To cut down on link times, BCPL allows modules to link at run-time. Different modules communicate using a common data area known as the "global vector". The global vector is a large table containing global variables and addresses of global routines that all modules know about. Note that the global vector table is for the internal convenience of AmigaDOS. It is likely to vary from version to version, and application programs are not supposed to use it. Most references to "global vector" refer to one master table used by the whole of AmigaDOS. However some processes such as the file-handler are tied together using their own private global vector. WORDS and BPTRs =============== The only data type supported by BCPL is the machine-word. In 68000 BCPL implementations this is a 32-bit quantity (LONG or ULONG). AmigaDOS makes use of normal machine addresses (APTRs) internally. For example, entries in the global vector corresponding to global routines are usually APTRs. However, since BCPL does everything in terms of long-words, its own pointers are expressed as pointers to long-words called BPTRs. (BPTR = APTR/4) Note that anything accessed via a BPTR must be long-word aligned. (in other words, have an address evenly divisible by 4) STRINGS and BSTRs ================= A C string is a pointer to a string of characters terminated by a null. A BCPL string (BSTR) is a BPTR to a structure containing the lenghth of the string in the first byte, with the actual string characters following. Be warned that references to BSTRs normally mean a BPTR to a BSTR structure, but sometimes refer to the BSTR itself. SEGMENT LISTS ============= Another BCPL structure used extensively by AmigaDOS is a "Segment List". This is a simple forward linked list: -------------------- -------------------- -------------------- | Length of seg | | Length of seg | | Length of seg | | BPTR to next seg |--->| BPTR to next seg |--/ /-->| Null (no more) | | Data | | Data | | Data | -------------------- -------------------- -------------------- An example of this type of list is the segment list created by the scatter loader. THE AMIGADOS KERNEL =================== AmigaDOS consists of a small "kernel" written in assembler, plus various "processes" such as file-handlers and CLIs, mostly written in BCPL, plus various "devices" such as DF0: and CON:, also written mostly is BCPL but interfacing to "device drivers" written in assembler. AmigaDOS uses exec as its kernel, and makes use of Exec "devices" such as trackdisk.device as its device drivers. THE AMIGADOS LIBRARY ==================== The AmigaDOS "library" is organized so that it can be accessed as either an Exec library (dos.library) or as a Tripos-style resident library. As an Exec library, DOS is somewhat peculiar. It does not support Expunge() and its jump table does not consist of jump instructions. Instead, the table consists of a series of six-byte entries (same length as jump instruction) organized as follows: MOVEQ #entry_number_in_global_vector, D0 BRA action MOVEQ #another_entry_number_in_global_vector, D0 BRA action etc. The "action" routine, which is in the library positive offset area, grabs 1500 bytes below your current stack pointer for use as a BCPL stack and sets up A1 as a BCPL stack pointer. BCPL stacks are used from the bottom upwards. No bounds check is done on this so you better have 1500 bytes available on your stack when you call AmigaDOS. It then zeros a0, and sets up registers A2 = global vector, A5 = DOS kernel action routine from ROM, and A6 = DOS kernel cleanup routine from ROM, from locations which are also in the library positive offsets, and puts the appropriate action address from the global vector table into A4. The ROM is now invoked by JSR (A5), and deals with the call. This often involves constructing the appropriate "packet" for the DOS call in question, sending it to the right process, and waiting for a reply indicating successful completion or an error. Note that D1, D2, D3, and D4 are used to pass values to AmigaDOS. Results are returned form the ROM action routine in D1, then transferred to D0 for return to the calling program. PROCESSES ========= A Process is the basic structure used to control multi-tasking in AmigaDOS. It is built on the Exec concept of a Task, and consists of an Exec task control block, a message port, and some things needed by AmigaDOS. A process can be distinguished from a task by the task control block's node type which will be either NT_PROCESS or NT_TASK. The process message port is used by AmigaDOS for its own "packet" based communication between processes. The other things following the message port include the current directory lock for the process and the current input and output "streams" (handles for the current input and output files). Anything which calls AmigaDOS directly or indirectly (for example by opening a disk-resident Amiga library or font) must be a Process rather than a simple Task. Most of the Amiga's tasks are processes. Workbench, CLI, the file system, and the handlers for AmigaDOS devices (CON, PRT, etc.) are processes. The only simple tasks are things such as Exec devices (printer.device, input.device, etc). AmigaDOS refers to each process by its Process ID, which is an APTR to the message port in the Process structure. This is the pointer returned by CreateProc(). To find the Process structure subtract the size of a Task structure from this APTR. PACKETS ======= The "packet" is the basic unit of message-passing in AmigaDOS and it is built on the Exec concept of a "message". The part of the message structure defined as pointer to a name is used instead to point to a Tripos structure called a "packet", as follows: APTR back to message structure APTR to reply port LONG packet type LONG result1 LONG result2 LONG argument1 LONG argument2 etc. AmigaDOS gets things done by sending "packets" like this to the message-ports of appropriate processes such as file-handlers. Note that you can also get things done by sending packets to processes, instead of calling AmigaDOS library routines. This is handy if you want to operate asynchronously. COROUTINE ========= Co-routine is a term from Tripos useful in understanding AmigaDOS. The term means a routine which is executed as part of a particular process, but using its own private stack instead of the process's standard stack. When a co-routine is about to be invoked, memory is allocated for its stack by the process, the stack pointer is saved then altered to point at this new stack, and the new stack is initialized to contain its own size, plus a return address to the main process. Then the co-routine is invoked. When the co-routine exits, control returns to the main process code, which restores its stack pointer to the old value and de-allocates the co-routine's stack memory. This technique is used by a CLI process to execute commands. The fact that the process pushes the size of the stack to the new stack is significant here, as it means that you can check if you've been given enough stack space, and refuse to run if you haven't. CLI === A CLI is a Process with some special attributes including: a CLI number (1 to 20) standard input and output streams (usually a CON: device) a path list to use when searching for command files a prompt string definition default stack size for co-routines The CLI provides a user interface, executes commands typed in at the keyboard or read in from a file and provides IO redirection. Some special setup is needed to start a CLI (initializing input and output streams etc.), and another process is needed to do this. It is important not to confuse the process which creates a CLI (such as the CLI tool you click on from Workbench) with the actual CLI process once running. The standard code for handling the CLI environment is in KickStart. COMMANDS ======== A "command" is code which is executed from a CLI process when it is invoked by name, usually loaded from a disk file with the same name as the command. AmigaDOS looks for commands in the current or specified directory, or in the C: directory. Under 1.2, it is possible to specify further directory paths to be searched for commands by using the PATH command. Commands are executed as part of the CLI process from which they are invoked. Stack space for the command's use is allocated and control is passed to the code at the start of the first segment of the command's code. On entry to the command's code, the registers contain: A0 a pointer to the command line for execution D0 the length of the command line Other registers contain defined, but not documented, values. These are irrelevant to command written in C or assembler. However, commands written in BCPL will expect to be entered with these registers properly initialized: A1 BCPL stack pointer A2 global vector etc., very much as set up by the DOS "action" routine explained above. This explains why it is not possible, for example, to load NewCli or DiskEd with Wack and execute them with GO, since these registers will not contain the appropriate values. Commands run as co-routines under the CLI will generally start with some form of standard startup code (eg LStartup.obj or AStartup.obj) which amongst other things deal with obtaining the current CLI input and output streams, and using them to set up their own IO vectors such as C "stdin" and "stdout". There is a significant difference here between programs started from CLI and those started from Workbench. A program started from Workbench is a separate process, rather than a co-routine of CLI, and has no default input or output stream. Some startups (such as LStartup) provide these streams by opening a CON: window on the Workbench. Commands are not required to preserve any registers, and the main process can not rely on any being preserved when the co-routine exits. REDIRECTION =========== When a CLI process obtains a command line for execution, it checks for redirection specifications in the form of AmigaDOS file or device names preceded by < (input redirection) or > (output redir.). The CLI will attempt to perform the requested redirection, so that the current input and output streams are those asked for, before control is passed to the command's code. The command will only respond to the redirection if it uses the default input/output streams (stdin/stdout in C) for its IO. DEVICES, DEVICES, and DEVICES ============================= Like "library", the word "device" is somewhat overworked on the Amiga, being used to refer to 3 different things: 1. Exec device (as in OpenDevice(), trackdisk.device) 2. AmigaDOS device, which is an interface between AmigaDOS and an Exec device (as in SER:, DF0:, PRT:) 3. Logical AmigaDOS device name a. an AmigaDOS device as in #2 b. the volume name of a disk (such as Extras:) c. a directory with a sytem or user ASSIGNed logical device name (such as C:, SYS:, THISISMEFOLKS:) HANDLER PROCESSES ================= AmigaDOS devices (as in #2 above) have associated processes for performing the actions required of them. These can be compared with the associated tasks used by some Exec devices such as the console.device, and are known as handler processes. The AmigaDOS function DeviceProc() allows you to obtain the Process ID for the handler process of a named AmigaDOS device. example: df0handlerID = DeviceProc("DF0:"); Handler processes generally have the same name as their device but without the colon. However, this is not always the case. The floppy disk handlers (for DF0:, DF1:, ...) are each called "File System". The handler for a CON: window is called CON. Each open CON: or RAW: window will have its own handler, so it is commaon to have many processes with these names present. One cannot use DeviceProc() to find the handler process for a CON: or a RAW: because there may be more than one handler for the specified device. Handler processes speend much of their time in wait states, waiting to receive AmigaDOS packets at their message ports asking them to perform some action, such as reading or writing data or closing a file. They then perform the required action, then reply the packet to the sender. --------------------------------------------------------------- -- =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= Carolyn Scheppner -- CBM >>Amiga Technical Support<< UUCP ...{allegra,caip,ihnp4,seismo}!cbmvax!carolyn PHONE 215-431-9180 =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
phillip@cbmvax.cbm.UUCP (Phillip Lindsay) (12/18/86)
> In article <8612152348.AA29410@cory.Berkeley.EDU> dillon@CORY.BERKELEY.EDU (Matt Dillon) writes: > > > > NOW LOOK C-A, I'VE ENOUGH OF THIS SH#$%%T. WILL YOU *PLEASE* POST > >DOCUMENTATION ON BCPL STARTUP AND ALL THE STRANGE THINGS IT DOES TO THE > >STDIO FILEHANDLES SO WE CAN WRITE AN EXEC() THAT WORKS!!!. I thought I had > >gotten an exec() that worked, but no, when I modify it to APPEND to the > >output file instead of CREATE/TRUNCATE, the BCPL program fails to write > >everything to the file. Why the hell you didn't add this to the 1.2 DOS > >library I'll never know. > > > > -Matt > > I've had more than enough of your SCREAMING and CURSING. > > You act like we're hoarding some Magic Document that would endow the > reader with Instant Knowledge of the Glorious Inner Secrets of AmigaDOS. > > Well Matt, there is no magic document. I wish there was. > What we have is the AmigaDOS source code. > > BCPL is a bit like C, and it is possible to decipher and even > make changes to localized portions of the code. But when you > start to trace code that interfaces with the private global functions > via run-time linking, you get stopped by tables of labels and vectors > that specify numerical offsets into other tables that are built at > run time. And if you manage to make it to the other side of the > table because a corresponding label on the other side happens to > have a similar name, you get stuck there because because that code > starts loading registers with labels defined as offsets into the > run-time table. > > So, you can either pay Tim King to reveal the inner secrets, > or wait until someone here has time to decipher a very large and > very complex program that jumps all over the place. > > carolyn > -- > =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= > Carolyn Scheppner -- CBM >>Amiga Technical Support<< > UUCP ...{allegra,caip,ihnp4,seismo}!cbmvax!carolyn > PHONE 215-431-9180 > =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= Let me add one thing to Carolyn's response: Tim King is currently working on improving the file system through put. (Which he has done. [as reported on BIX]) The next thing on Tim's list (according to Tim King himself) is documentation on how to write a CLI (what everyone has been waiting for). CLI does not start a new process, but simply loads a code segment and runs it-- And on exit returns to the CLI. -- ============================================================================== Phillip Lindsay - Commodore Business Machines - Amiga Technical Support UUCP: {ihnp4|seismo|caip}!cbmvax!phillip - Phone: (215) 431-9180 No warranty is implied or otherwise given in the form of suggestion or example. Any opinions found here are of my making. /* eof */
rokicki@navajo.STANFORD.EDU (Tomas Rokicki) (12/18/86)
> (Matt Dillon) writes: > > NOW LOOK C-A, I'VE ENOUGH OF THIS SH#$%%T. WILL YOU *PLEASE* POST > >DOCUMENTATION ON BCPL STARTUP AND ALL THE STRANGE THINGS IT DOES TO THE > >STDIO FILEHANDLES SO WE CAN WRITE AN EXEC() THAT WORKS!!!. Howdy, Matt! You've got a disassembler; you're a hacker; let's see you figure it out. It's really not that bad (I've been pulling apart the WCS a little lately) and it is sure fun. I've been using Manx db for this. -tom
wilkes@beatnix..UUCP (John Wilkes) (12/19/86)
In article <1136@cbmvax.cbmvax.cbm.UUCP> carolyn@cbmvax.UUCP (Carolyn Scheppner) writes: > > This is for everyone but Matt Dillon who has been rather rude lately. > > I've spent the past three days typing this in between phone calls >and after hours. I even had to type the first hundred lines in >twice because our VAX went down before I had saved the file. > {{{ lots of juicy info deleted }}} >-- >=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= >Carolyn Scheppner -- CBM >>Amiga Technical Support<< > UUCP ...{allegra,caip,ihnp4,seismo}!cbmvax!carolyn > PHONE 215-431-9180 >=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= Carolyn, I love you. Thanks for this (and all your previous and future) contributions to comp.sys.amiga. You are generally one of the first on the net with answers (when they exist). You have earned the eternal affection and gratitude of all net-Amigoids. As for Matt, don't worry about him, he suffers from UMS (ugly mood swings). -- John Wilkes -- UUCP: {ihnp4|decwrl|pyramid}!sun!elxsi!beatnix!wilkes USPS: ELXSI, 2334 Lundy Pl., San Jose CA 95131 # My Employer appologizes for the fact that I have access to the network. # Furthermore, my Employer has absolutely no responsibility for the above # random ramblings, which are clearly the product of a deranged mind.
keithe@tekgvs.UUCP (Keith Ericson) (12/19/86)
In article <1135@cbmvax.cbmvax.cbm.UUCP> carolyn@cbmvax.UUCP (Carolyn Scheppner) writes: >In article <8612152348.AA29410@cory.Berkeley.EDU> dillon@CORY.BERKELEY.EDU (Matt Dillon) writes: >> >> NOW LOOK C-A, I'VE ENOUGH OF THIS SH#$%%T. WILL YOU *PLEASE* POST >>DOCUMENTATION ON BCPL STARTUP... >> -Matt > > I've had more than enough of your SCREAMING and CURSING. > > You act like we're hoarding some Magic Document that would endow the >reader with Instant Knowledge of the Glorious Inner Secrets of AmigaDOS. Well, maybe not a "reader" in general, but Matt seems to be a cut above the average Amiga user! > > Well Matt, there is no magic document. I wish there was. Somebody screwed up the contract with the AmigaDos writers :-) > What we have is the AmigaDOS source code. Oh boy oh boy oh boy. I'm glad somebody has it! > > BCPL is a bit like C, and it is possible to decipher and even >make changes to localized portions of the code. But when you >start to trace code that interfaces with the private global functions >via run-time linkin... > > So, you can either pay Tim King to reveal the inner secrets, (see comment on contracts, above) >or wait until someone here has time to decipher a very large and >very complex program that jumps all over the place. sounds like a good job for a computer... >carolyn Carolyn - do you really get paid to take all this abuse? CBM probably doesn't realize the bargain they're getting. ---------------------------------------------------------------------- Hey everybody: Have a [pick the greeting of your choice:] Merry Christmas! Happy Hannukah! (I hope I spelled it correctly) Great Vavation! keith
news@cit-vax.Caltech.Edu (Usenet netnews) (12/20/86)
Organization : California Institute of Technology Keywords: From: tim@tomcat.Caltech.Edu (Tim Kay) Path: tomcat!tim In article <1962@tekgvs.UUCP> keithe@tekgvs.UUCP (Keith Ericson) writes: >In article <1135@cbmvax.cbmvax.cbm.UUCP> carolyn@cbmvax.UUCP (Carolyn Scheppner) writes: >> What we have is the AmigaDOS source code. > >Oh boy oh boy oh boy. I'm glad somebody has it! C-A could publish the source code.... Timothy L. Kay tim@csvax.caltech.edu Department of Computer Science Caltech, 256-80 Pasadena, CA 91125
wilkes@beatnix..UUCP (John Wilkes) (12/21/86)
In article <1393@cit-vax.Caltech.Edu> tim@tomcat.UUCP (Tim Kay) writes: >In article <1962@tekgvs.UUCP> keithe@tekgvs.UUCP (Keith Ericson) writes: >|In article <1135@cbmvax.cbmvax.cbm.UUCP> carolyn@cbmvax.UUCP (Carolyn Scheppner) writes: >|< What we have is the AmigaDOS source code. >| >|Oh boy oh boy oh boy. I'm glad somebody has it! > >C-A could publish the source code.... ....on floppies! %^)# -- John Wilkes -- UUCP: {ihnp4|decwrl|pyramid}!sun!elxsi!beatnix!wilkes USPS: ELXSI, 2334 Lundy Pl., San Jose CA 95131 # My Employer appologizes for the fact that I have access to the network. # Furthermore, my Employer has absolutely no responsibility for the above # random ramblings, which are clearly the product of a deranged mind.
keithd@cadovax.UUCP (Keith Doyle) (12/22/86)
In article <199@elxsi.UUCP> wilkes@beatnix.UUCP (John Wilkes) writes: >Carolyn, I love you. Thanks for this (and all your previous and future) >contributions to comp.sys.amiga. You are generally one of the first on the net >with answers (when they exist). You have earned the eternal affection and >gratitude of all net-Amigoids. As for Matt, don't worry about him, he suffers >from UMS (ugly mood swings). >-- John Wilkes -- UUCP: {ihnp4|decwrl|pyramid}!sun!elxsi!beatnix!wilkes Hear hear (and Merry Christmas or Happy Holidays), Keith Doyle # {ucbvax,ihnp4,decvax}!trwrb!cadovax!keithd # cadovax!keithd@ucla-locus.arpa
sean@ukma.ms.uky.csnet (Sean Casey) (12/24/86)
In article <1393@cit-vax.Caltech.Edu> tim@tomcat.UUCP (Tim Kay) writes: >C-A could publish the source code.... I've seen the developer's manuals. I've seen the Addison Wesley publications. I've seen just about everything else on AmigaDOS and everything else (and I don't even own one yet :-) ). It's a *miracle* that anyone has gotten anything to work. If someone shoved the documentation at me and said "write me a device driver", I think I'd cry. It is the worst, most disorganized documentation that I have ever seen. Don't get me wrong. I think the Amiga is the best thing since sliced bread, but C-A really needs to hire some real documentation writers and produce some good, well ordered, well exampled manuals on the internals of the dos and hardware. One of the reasons software appeared so quickly for the IBM PC is that IBM offered a decent set of manuals. It appears that C-A is waiting for a third party to do just that. I really think this is wrong, and unfair to the people that buy their machines and software. It's also just plain bad business, as IBM will tell ya. To the C-A people on the net: please don't take this personally. I'm not blaming you. It would be kind of nice if you hinted to the people upstairs that the Amiga developers would be willing to pay for some good documentation. At least the situation is not as bad as it is with the Atari ST. From what I've seen, there are some hackers that know more about the thing than the people that designed it. Sean BTW: BCPL???!! Why in God's name BCPL? What's wrong with C? -- =========================================================================== Sean Casey UUCP: cbosgd!ukma!sean CSNET: sean@ms.uky.csnet ARPA: ukma!sean@anl-mcs.arpa BITNET: sean@UKMA.BITNET
sean@ukma.ms.uky.csnet (Sean Casey) (12/24/86)
In article <1393@cit-vax.Caltech.Edu> tim@tomcat.UUCP (Tim Kay) writes: >C-A could publish the source code.... I've seen the developer's manuals. I've seen the Addison Wesley publications. I've seen just about everything else on AmigaDOS and everything else (and I don't even own an Amiga yet :-) ). It's a *miracle* that anyone has gotten anything to work. If someone shoved the documentation at me and said "write me a device driver", I think I'd cry. It is the worst, most disorganized documentation that I have ever seen. It's so bad that one really *does* need the source code to figure out what the hell is going on. Don't get me wrong. I think the Amiga is the best thing since sliced bread, but C-A really needs to hire some real documentation writers and produce some good, well ordered, well exampled manuals on the internals of the dos and hardware. One of the reasons software appeared so quickly for the IBM PC is that IBM offered a decent set of manuals. It appears that C-A is waiting for a third party to do just that. I really think this is wrong, and unfair to the people that buy their machines and software. It's also just plain bad business, as IBM will tell ya. To the C-A people on the net: please don't take this personally. I'm not blaming you. It would be kind of nice if you hinted to the people upstairs that the Amiga developers would be willing to pay for some good documentation. At least the situation is not as bad as it is with the Atari ST. From what I've seen, there are some hackers that know more about the thing than the people that designed it. Sean BTW: BCPL???!! Why in God's name BCPL? What's wrong with C? -- =========================================================================== Sean Casey UUCP: cbosgd!ukma!sean CSNET: sean@ms.uky.csnet ARPA: ukma!sean@anl-mcs.arpa BITNET: sean@UKMA.BITNET