The Amiga Guru Book by Ralf Babel was one of the most valuable reference manuals for developers on the Amiga platform. Its lighthearted approach reflects much of the "Amiga spirit", a special feeling of enjoyment that made many enthusiasts support this platform well beyond reason. Manuals like the Guru Book had their part in making the Amiga the most fun platform that ever was.
That is, before Commodore collapsed, the market collapsed, and the community collapsed.
What follows are the "chapter quotes". (Each chapter of the book was introduced by one or more quotes.) Many of those are tongue-in-cheek, referring to certain bugs or shortcomings, and some might be rather meaningless to those who don't know at least some details about AmigaOS. However, on a whole, I think they might serve as a reminder that computers can and should be fun.
Disclaimer: UNIX is a trademark of Bell Laboratories
Some assembly required
The Surgeon General has determined that smoking is hazardous to your health
I was holding it for a friend
Product is sold as is with no warranty, either expressed or implied
-- Mike Robinson, net.micro.amiga
Although I do contract work for Amiga-LosGatos, my opinions probably don't represent those of Commodore or its management or its engineers, but I think the world would be a better place if they did.
-- Dale Luck, comp.sys.amiga, <326@boing.UUCP>
These views are my own and no one else's. They could be yours too, just call MrgCop() and then RethinkDisplay()!
-- Chuck McManis, comp.sys.amiga
Reading legal mush can turn your brain to guacamole!
-- Amiga ROM Kernel Reference Manual: Includes & Autodocs, 2nd edition
"What does the documentation say?" - "What documentation?"
-- Polytron Corporation, Dr. Dobb's Journal, May 1989
Even applications created by Commodore may not comply with every idea in this book.
-- Amiga User Interface Style Guide
I created everything in this book. I wrote it, I edited it, I drew all the figures, I personally made the ink to print it, I chopped down the trees for the paper, I bound every copy, I sold it. I thank no one.
-- Scott Knaster, Macintosh Programming Secrets
Now, I am a firm believer in democracy, but I also believe that there are some fields of human activity in which a count of noses does not provide the best basis for law and order.
-- Theodore M. Bernstein, The Careful Writer
There are too many people in the world to offend, and no matter what you do, someone is going to be offended by something.
-- Dan Heller, Motif Programming Manual
Computer arithmetic has two properties that add to its mystery:
* what you see is often not what you get, and
* what you get is sometimes not what you wanted.
-- Apple Numerics Manual, 2nd edition
It is possible that the accuracy of the MC68881 algorithms is actually much better than this, and at the time of this printing, an exhaustive analysis of the error bounds for these functions is being performed. It is believed that the error bound for these instructions is approximately 64 units in the last place of extended precision.
-- MC68881 Floating-Point Coprocessor User's Manual
The Greenhills compiler may have optimized this benchmark to nothing.
-- Dale Luck, Introduction to 1.3 IEEE Double-Precision Libraries
Surprising what you can do when you use the OS...
-- Randell Jesup, comp.sys.amiga.programmer, <19100@cbmvax.commodore.com>
If a function be advertised to return an error code in the event of difficulties, thou shalt check for that code, yea, even though the checks triple the size of thy code and produce aches in thy typing fingers, for if thou thinkest "it cannot happen to me", the gods shall surely punish thee for thy arrogance.
-- Henry Spencer, The Ten Commandments for C Programmers
AARRGGHHH! What a bloody nuisance. Throwing temporary RastPorts around on the stack has been a real nice win for me. [...] So now I have to do AllocMem()s with sanity checks with corresponding FreeMem()s? Foo.
-- Leo L. Schwab, comp.sys.amiga.tech, <10262@well.UUCP>
In the interim, we provide a utility with the release which pokes the (present) locations of Intuition's internal copies of the overscan settings. [...] Needless to say, behavior such as that exhibited by this utility is forbidden.
Put another way: you poke IntuitionBase, you die.
-- Jim Mackraz, Jumpstart 1.4: Intuition_Update
Believe me, not having an MMU doesn't bother me in the least!
-- Matt Dillon, comp.sys.amiga, 8 Apr. 1987
The only other alternative would have been to write the whole thing in assembler - this would have resulted in a typical assembler system, which is fast, efficient, streamlined, sexy, and not quite finished yet, sorry.
-- Ariadne Software Ltd., The Kickstart Guide to the Amiga
Assembly-language programmers, one and all, are obsequious slaves to the machine, and do whatsoever it demands of them. If their beloved processor required them to write down numbers in quintagesimal notation and to kowtow thrice in a
southwesterly direction at every occurence of a prime number, they would do so - and, worse still, proudly proclaim that even with such a method one can write programs.
-- Peter Rosenberg, Prozeduraler Schrott, c't, January 1989
We know exactly how you feel about assembler: Low-level language, high-level frustration.
-- Microsoft Corporation, Dr. Dobb's Journal, July 1991
Four-wheel-drive just means getting stuck in more inaccessible places.
-- Phillips' Law
The rule is: use Version i.0 of your product to debug the changes since Version i - 1. When the product is relatively stable again, release it as Version i.1. The user version of this rule is: don't buy anything until Version i.1 is released. The authorship of this rule is in dispute. [...] All I know for sure is that the inspiration came from Microsoft. Credit where credit is due.
-- Michael Swaine, Dr. Dobb's Journal, November 1987
char (*(*x[3])())[5]
-- Brian W. Kernighan, Dennis M. Ritchie, The C Programming Language, 2nd edition
Using C will definitely cut your life expectancy by ten years or more.
-- Carl Sassenrath, Guru's Guide #1
| V1.0 | mid 1985 | The best we could do given the timescale. |
| V1.1 | early 1986 | The best that we could do, with most of the bugs taken out. |
| V1.2 | early 1987 | What we should have done in the first place, only we needed to do versions 1.0 and 1.1 to find out. |
| -- Ariadne Software Ltd., The Kickstart Guide to the Amiga | ||
Give me a standard large enough, and a Committee to discuss it, and I will prevent the Earth from moving.
-- Andy Finkel, comp.sys.amiga.tech, <6439@cbmvax.UUCP>
The '#pragma' command is specified in the ANSI standard to have an arbitrary implementation-defined effect. In the GNU C preprocessor, '#pragma' first attempts to run the game 'rogue'; if that fails, it tries to run the game 'hack'; if that fails, it tries to run GNU Emacs displaying the Tower of Hanoi; if that fails, it reports a fatal error. In any case, preprocessing does not continue.
-- Richard M. Stallman, The GNU C Preprocessor, version 1.34
Would Manx announce their support for double-precision characters needed for those pesky extraterrestrial alphabets?
-- Mike Smithwick, Amiga Trek - Revenge of the Marketroids, part 3
I once followed a call to an Intuition routine; this is what was happening: C calculates the parameters (in registers), stuffs them onto the stack, calls the stub routine. Stub routine puts them into the registers, calls Intuition. In the ROM, the parameters are put back onto the stack, and the actual routine is called... which reads some of the stack parameters back into registers. - Fun!
-- David Gay, comp.sys.amiga
If your project doesn't work, look for the part you didn't think was important.
-- Biondi's Law
May the Source be with you!
-- John Gilmore, net.micro.amiga
The most interesting results happen only once.
-- Tanenbaum's Law of Replicability
Repetition does not establish validity.
-- Souder's Law
data vu: The vague feeling that you've fixed this particular bug before...
-- Peter Cherna, comp.sys.amiga.programmer, <23480@cbmvax.commodore.com>
You MUST NOT simply hit the hardware when you feel like it - what do you think this is, a C64?
-- Ariadne Software Ltd., The Kickstart Guide to the Amiga
205
---
Ha, you didn't take that into account. The white mackerel
is a polymorphed gold dragon and has 146735 hit points.
No honestly, you are in for a tough time. Here are the data:
White Mackerel
gross register tons 56
I recommend a seven iron.
Should you win, continue with number 17. If you lose, then
you can save yourself the trouble of referring to that section
and instead put something away for a decent funeral.
quality class A-
675 inventory
trout smoked
grooves 1
Bye have a good one
Heidi! Erika
256 KB RAM No, really?
size 43 cm
blood alcohol level 0
-- Ulrich Kaiser, Die Torte schlägt zurück
/* The mess of registers created by Angela, Dorothy, and Pam - or whatever their names are currently. */
-- "/usr/sys/amiga/inc/amigahr.h" (Amiga-UNIX equivalent of <hardware/custom.h>)
HOOK noun. An extraneous piece of software or hardware included in order to simplify later changes by a user.
-- Guy L. Steele Jr. et al., The Hacker's Dictionary
ColdCapture and CoolCapture vector operation will change because ExecBase can be in fast memory (the result of this is to raise the temperature of ColdCapture about 60 degrees).
-- Bryce Nesbitt, Compatibility Risks for 1.4 and Beyond
Never test for an error condition you don't know how to handle.
-- Steinbach's Guideline for Systems Programming
guru meditation: n. Amiga equivalent of "panic" in UNIX (sometimes just called a "guru" or "guru event"). When the system crashes, a cryptic message "GURU MEDITATION #XXXXXXXX.YYYYYYYY" appears, indicating what the problem
was. An Amiga guru can figure things out from the numbers. Generally a guru event must be followed by a -> Vulcan nerve pinch.
-- Eric S. Raymond et al., The Jargon File 2.9.9
BRAIN-DAMAGED adjective. Obviously wrong; extremly poor designed; -> CRETINOUS; -> DEMENTED. There is a connotation that the person responsible must have suffered brain damage, because he should have known better. Calling something brain-damaged is really extreme. The word implies that the thing is completely unusable, and that its failure to work is due to poor design, not accident.
-- Guy L. Steele Jr. et al., The Hacker's Dictionary
Programming is like sex: One mistake and you have to support it for life.
-- Michael Sinz, Commodore Engineering, <22153@cbmvax.commodore.com>
Hopefully, by the time that you've digested the above, you should be in a position to make up your own mind about how you like your input events (including whether you prefer your mice raw or cooked!).
-- Ariadne Software Ltd., The Kickstart Guide to the Amiga
Remember that J. Random User is watching you, and will not be at all impressed if you have to type control-shift-alt-hyper-super-meta-cokebottle to exit the program, and it gurus if you type it wrong.
-- Leo L. Schwab, comp.sys.amiga, <7659@well.UUCP>
Then why the pr_CLI entry in the Process structure? If I should "consider the CLI structure as part of the program environment", then the CLI is special, as it maintains that structure. Since writing shells appears to be somewhat of a black art, and CLI brings the main shell in existence, then the CLI must be something special.
-- Michael Richardson, comp.sys.amiga.tech
black art: n. A collection of arcane, unpublished, and (by implication) mostly ad-hoc techniques developed for a particular application or systems area (compare -> black magic).
-- Eric S. Raymond et al., The Jargon File 2.9.9
The next thing on Tim's list (according to Tim King himself) is documentation on how to write a CLI.
-- Phillip Lindsay (Amiga Technical Support), net.micro.amiga, 18. Dec. 1986
Use DISKDOCTOR to corrupt disk in DF0.
-- Freudian slip by an Amiga developer
"Ran DiskDoctor successfully"? Kinda like "Crashed my car successfully"...
-- Dave Haynie, comp.sys.amiga.programmer
A disk does not have to be inserted to be examined by DISKED.
-- The AmigaDOS Manual, 2nd edition
If you understand it, it's obsolete.
-- Bitton's postulate on state-of-the-art electronics
As all Real Programmers know, the only useful data structure is the Array. Strings, Lists, Structures, Sets - these are all special cases of arrays and can be treated that way just as easily without messing up your programming language with all sorts of complications.
-- Ed Post, Real Programmers don't use Pascal
1.3 will let me boot from "any" device, huh... Does that mean I can boot from NIL:?
-- Chad Netzer, comp.sys.amiga, <7947@cup.portal.com>
First you'd have to equip your NIL: with the appropriate boot ROMs. Second, you'd have to make your NIL: into a filesystem device. (We don't boot from printers, either.)
-- Andy Finkel, comp.sys.amiga, <4440@cbmvax.UUCP>
Uhh, Andy, wanna think about that again? I have this PostScript printer sitting here, 2 MB RAM, 68000, never gets turned off. :-)
-- Richard Sexton, comp.sys.amiga, <5391@gryphon.CTS.COM>
The DOS docs (AmigaDOS User's, Tech Ref, and Programmer's Manuals) should be read 15 times apiece, left under your pillow so you can absorb them by osmosis, read 5 more times, and constantly referred to.
-- Randell Jesup, comp.sys.amiga.tech, <5171@cbmvax.UUCP>
The DOS docs provided only enough information to allow me to scratch my head a lot.
-- Leo L. Schwab, net.micro.amiga
This means the whole resident idea is useless unless you have a program that allocates its own BSS and some space to copy the data to. I repeat - stay away from RESIDENT and CLI-RESIDENT. I agree the idea is nice, but the current way
of handling things is broken.
-- Bob Page, net.micro.amiga, <790@ulowell.UUCP>
I second this. It needs to be rethought out and redone.
-- Andy Finkel, net.micro.amiga, 3 Dec. 1986
We request the serious reader to excuse the recent bits of humor in this handbook and guarantee that from here on there will be nothing to laugh about.
-- CBM 8050 user's manual, German edition
All the popular bugs in the RAM-Handler were fixed in Version 1.3.
-- 1.3 Amiga Enhancer Software Manual
Sorry to say that there is no way to dismount a device once it is mounted.
-- Dan Schein (Commodore-Amiga Technical Support), comp.sys.amiga
Always listen to experts. They'll tell you what can't be done, and why. Then do it.
-- Colin Plumb, comp.sys.amiga
The types in all declarations of the same object must be consistent. One way of achieving this would be to provide type-checking facilities in the linker, but most linkers are 1950's designs and cannot be changed for practical reasons.
-- Bjarne Stroustrup, The C++ Programming Language
Enhancing our linker is certainly not a priority item.
-- Carolyn Scheppner, comp.sys.amiga, 18 June 1987
Delete all the material on "ATOM: (Alink Temporary Object Modifier)". It describes a product no longer sold or supported by Commodore.
-- The AmigaDOS Manual, 3rd edition
There was some attempt to make this code efficient. Unfortunately, that may have made portions of it incomprehensible. The author apologizes for any frustrations this engenders. (In honesty, my C style is known to be obscure and claims of "efficiency" are simply a convenient excuse.)
-- Van Jacobson, Compressing TCP/IP Headers for Low-Speed Serial Links (RFC-1144)
Any inaccuracies in this index may be explained by the fact that it has been prepared with the help of a computer.
-- Donald E. Knuth, Fundamental Algorithms
There are no answers, only cross-references.
-- Weiner's Law of Libraries