.PAGE SIZE 58, 85 .NONUMBER .; for VAX .LEFT MARGIN 10 .RIGHT MARGIN 75 .; for RSX .;.LEFT MARGIN 0 .;.RIGHT MARGIN 65 .AUTOPARAGRAPH # .lm +30 .SKIP 5 .CENTER THE RSX MULTI-TASKER .SKIP .CENTER April 1989 .SKIP .CENTER "In hoc signo foobar" .SKIP .CENTER Fine Realtime Commentary .c Since 1975 .SKIP 14 .lm -30 .CENTER ^&TABLE OF CONTENTS\& .SKIP .LIT RSX SIG NEWS Editor's Corner RSX-1 In Memoriam CASTOR RSX-2 Submitting Articles to the Multi-Tasker RSX-2 New Multi-tasker Writing Guidelines RSX-3 Bulletin Board Notes RSX-5 Song of the Month Department RSX-6 ARTICLES Proposed SYSLOGIN.TXT RSX-7 Getting Values of RSX Executive Symbols RSX-8 Babbage: The Language of the Future RSX-11 Manipulating Global Event Flags from Drivers RSX-16 Humor Rumor Roundup RSX-19 .eli .s4 Opinions expressed in the Multi-Tasker are those of individual members. They do not represent the official position of the RSX SIG or that of DECUS leadership in general. .pg .C *************** ^&RSX SIG NEWS\& *************** .s2 .C Editor's Corner .S .lit Jim McGlinchey, Managing Editor Phil Hannay, Production Editor Bruce Mitchell, Minister of Propaganda .eli .s3 .c ----- Editorial ----- .s1 .c by Jim McGlinchey .s1 This is my first official issue of the Multi-Tasker since I assumed the position of Editor last October. Phil Hannay and I (mostly Phil, I'll admit) have been publishing from our backlog of material as we get ourselves organized. You'll see a change of emphasis in this and future issues not so much to make a change but to catch up on a lot of some heretofore unpublished RSX knowledge. A lot of things happen at DECUS Symposia which do not get into print, and a lot of us are the better for it. Some, however, should have been published, talks that were particularly notable. I've contacted the authors of several Symposium talks, and they're busy transcribing their talks into publishable form. Several members of our RSX Steering Committee are on tap for regular features. Alan Frisbie, our RSX archivist and trivia collector, will be submitting a "From the Archives" article now and then. Tom Wyant, our Museum Curator and erstwhile Chief Wizard, will author an occasional "RSX Hall of Fame" article. We'll be trading articles with the UK and European RSX SIGs as well. We're ready to hit the streets with our first issue, and you'll all be pleasantly surprised to find it a proper issue for April. We've spared all expense to bring this issue to you, and have scoured the RSX archives (scraped the walls) to produce some of the articles for this month. Who knows what will turn up when you plan and April 1 issue - maybe even Charlie Pratco and Justin L. Hewser will get a submission in this one. .lit Let's get on with it. -- Jim McGlinchey Sancho!! My armor!! My sword!! My TECO Macros!! .eli .pg .C ----- In Memoriam CASTOR ----- .s1 CASTOR was the last of the small number of PDP-11/74 Symmetric Multiprocessor PDP-11's which were manufactured by Digital in the late 1970's. Until its dismantling, CASTOR was running RSX-11M-PLUS. CASTOR has been dismantled. It is not our purpose to wonder as to why Digital did not see fit to make the PDP-11/74 an official product. One only has to peer at its UNIBUSes and other CPU interconnects to immediately understand why. We'll always remember CASTOR as the last executor of the M$$PRO code in the RSX-11M-PLUS executive, and we'll always wonder what the SET AFFINITY directive might have accomplished. So long, CASTOR! It was real good to know you once existed. .s4 .C ----- Submitting Articles to the Multi-Tasker ----- .s1 You are encouraged to submit articles to the Multi-Tasker. No article is too big or too small. They can be serious or funny, and of any techinical level. Please submit machine readable media if possible. Hardcopy submissions are okay if they are fairly short. Illustrations and drawings that can be photocopied may accompany the article. Most any media is acceptable, however RX50, RX01/2, TK50 and 1600 BPI magtape are preferred. All RSX volume formats are acceptable, and VMS formats are also acceptable on RX50, TK50 and 1600 BPI magtape. You can also submit articles through the RSX bulletin board system at (612) 777-7664. Kermit the file into your account and then send it via MAIL to username MULTITASKER. The Multi-Tasker begins life as a RUNOFF file, so feel free to submit your articles in RUNOFF format. The page size will be 80 columns by 58 lines, with the left margin at 10 and right margin at 75. Use literal format for code examples. If you change margins, use incremental changes rather than absolute. Mail your articles and other submissions to the expansive Multi-Tasker offices: .LITERAL Phil Hannay Cargill Research Bldg Box 9300 Minneapolis, MN. 55440 tel. 612-475-5433 (daytime) .END LITERAL .pg .CENTER ----- New Multi-Tasker Writing Guidelines ----- .s1 In an effort to produce higher quality RSX Multi-tasker articles that will meet our traditional standards of excellence, a new set of writing guidelines has been formulated. The new editors will rigidly enforce these rules, plus make up a few more of their own. .ls ,"o" .le Avoid alliteration. Always. .le Prepositions are not words to end sentences with. .le Avoid cliches like the plague. (They're old hat.) .le Employ the vernacular. .le Eschew ampersands _& abbreviations, etc. .le Parenthetical remarks (however relevant) are unnecessary. .le It is wrong to ever split an infinitive. .le Contractions aren't necessary. .le Foreign words and phrases are not apropos. .le One should never generalize. .le Eliminate quotiations. As Ralph Waldo Emerson said, "I hate quotations. Tell me what you know." .le Comparisons are as bad as cliches. .le Don't be redundant; don't use more words than necessary; it's highly superfluous. .le Be more or less specific. .le Understatement is always best. .le One-word sentences? Eliminate. .le Analogies in writing are like feathers on a snake. .le The passive voice is to be avoided. .le Go around the barn at high noon to avoid colloquialisms. .le Even if a mixed metaphor sings, it should be derailed. .le Who needs rhetorical questions? .le Exaggeration is a billion times worse than understatement. .le Eschew obfuscation. .le Subject and verb always has to agree. .le It behooves the writer to avoid archaic expressions. .le Do not use hyperbole; not one writer in a million can use it effectively. .le Mixed metaphors are a pain in the neck and should be thrown out the window. .le Placing a comma between subject and predicate, is not correct. .le Parenthetical words however must be enclosed in commas. .le Use the apostrophe in it's proper place and omit it when its not needed. .le Don't use no double negatives. .le Proofread carefully to see if you have any words out. .le Hopefully, you will use words correctly, irregardless of how others use them. .le Never use a long word when a diminutive one will do. .le No sentence fragments. .le Remember to finish what .els .pg .C ----- Bulletin Board Notes ----- .s1 The RSX Bulletin Board is online. Software availability: RSX MAIL, Kermit, old issues of The Multi-Tasker and various other items. Free advice from everybody who logs in too. A new RSX NOTES facility is being added to the Bulletin Board. This should facilitate discussions among users. It should be available soon. The system can always use additional hardware. Anything, including archaic items. We are still looking for an RL02 drive. Contact Jim Bostwick, at 612-475-6264 (daytime) if you wish to donate some equipment. The BBS number: 612-SPR-PONG (612-777-7664). This line is autobaud 110 - 1200 baud. To request an account, log in with account name ACCOUNT, password REQUEST. .pg .c ----- Song Of The Month Department ----- .s1 .c (traditional hymn) .s1 .lit That Old-Time PDP To the tune of "That Old-Time Rock'n'Roll" by Bob Seger Just take that PRO down off the shelf, I'll sit here and program it by myself. Half a meg is just fine by me, I love that old-time PDP. Refrain: I love that old-time PDP. The kinda CPU that sets you free. Instruction set sure looks good to me. I love that old-time PDP. Don't try to take me to ZK. I won't make it, I won't last a day. 32 bits is twice what I need, I love that old-time PDP. Refrain Say I'm old fashioned, say I'm over the hill, say I'm out of touch, say what you will. Those new CPUs ain't got the same thrill, I love that old-time PDP. Refrain You gotta balance complexity against function and quality. 32 bits is twice what I need, I love that old-time PDP. Refrain .eli .pg .c *************** ^&ARTICLES\& *************** .s6 .c ----- Proposed SYSLOGIN.TXT ----- .p 0 (This was sent in as a proposed SYSLOGIN.TXT file which presents the correct tone of system security enforcement -Ed.) .s1 .p 5 In accordance with the new company security policy I should inform you that if you're not supposed to be here, then you're not supposed to be here. You know know this just as well as I, and there's no use pretending that you don't. This system is positively lousy with security alarms, so if you're not supposed to be here, you really had better log out now lest something dreadful happen that you get blamed for. The corporate lawyers are in a particularly surly mood these days and are apt to do something nasty like mercilessly prosecute you until you end up hanged, drawn, quartered, flayed into small morsels, made into sausages, cremated, and your ashes flung under the floorboards of a small New England church where Irish cloggers will disturb your rest on Tuesdays, Fridays, and Sundays (not to mention the Saturday morning children's tap school) for a long, long, time. They're particularly unpleasant to repeat offenders. Don't say you weren't warned, because you were. On the other hand, if you are supposed to be here, welcome and happy computing. .pg .c ----- Getting Values of RSX Executive Symbols ----- .s1 .c by Donald Arrowsmith .c Naval Air Propulsion Center .c Box 7176 M/S IS21 .c Trenton, NJ 08628 .s 1 The light bulb went on while reading the RSX Session Notes for the Fall 1988 Symposium. The entry for "A Command File to Change the System Name" described an Indirect command file which produces a ZAP command file to change the system name. Like author Scott from NRL, I have several systems. All are (mostly) identical except for their system names. For years I have been eyeballing the executive map and then entering an address into a ZAP command file as Mr. Scott does. This resulting file is then used on each system to provide unique system names without going through repeated SYSGENs. The best solution to the problem would be to have a new ZAP which understands .STB files and allows the use of symbols. The second best solution would be to write a task which reads the symbol table file and returns the value of a symbol in the task's exit status. (This is still on my "spare time list".) As a third best solution, I used an example from the same notes on the "Programming in Indirect" session by Mr. Wyant and Mr. DeLarisch: their SYMDMP.CMD produces a complete symbol listing from a symbol table file. My RSXSYM command file, shown below, will search through the executive symbol table file for a given symbol. The value of that symbol will be returned as an octal string in . Also shown is a command file, CHGNAM.CMD, which uses RSXSYM to make a ZAP command file on the fly and in turn change the system name. RSXSYM can be used to locate any executive symbol for the purpose of making other patches to RSX when there is no command in VMR to do it directly. One could also adapt this to make patches to other task images without rebuilding. While this technique does work and eliminates any errors caused by forgetting to update a value after a new system generation, don't expect spectacular performance. Timing is dependent on the relative position of the symbol to be is extracted and the total number of symbols in the file. On our system it would take about 4 minutes to return the value of the last symbol in the file. .pg .literal .; .; CHGNAM.CMD - Change the RSX system name to ABCDEF .; @RSXSYM $SYSNM .SETS SYSNM .IF SYSNM = "177777" .EXIT .SETS A "ABCDEF" .OPEN ZAPTEMP.CMD .DATA ; .DATA ; ZAPTEMP.CMD .DATA ; .DATA RSX11M.SYS/AB .DATA 3:'SYSNM';0R $SYSNM Replace system name .DATA 0,0\ .SETS A1 A[1:1] .SETN AN 'A1%V' .DATA 'AN' .DATA 0,1\ .SETS A2 A[2:2] .SETN AN 'A2%V' .DATA 'AN' .DATA 0,2\ .SETS A3 A[3:3] .SETN AN 'A3%V' .DATA 'AN' .DATA 0,3\ .SETS A4 A[4:4] .SETN AN 'A4%V' .DATA 'AN' .DATA 0,4\ .SETS A5 A[5:5] .SETN AN 'A5%V' .DATA 'AN' .DATA 0,5\ .SETS A6 A[6:6] .SETN AN 'A6%V' .DATA 'AN' .DATA X .CLOSE ZAP @ZAPTEMP ! DECNET system name .EXIT .; .; RSXSYM.CMD - Find a symbol (P1) in the RSX executive .STB file .; and return its value in . If the symbol .; is not found, 177777 is returned. .; .IF P1 = "" .EXIT .SETS P1 P1+" " .SETS A P1[1:3] .SETS B P1[4:6] .SETS "177777" .OPENR LB:[1,54]RSX11M.STB .1: .READ R .IFT .GOTO 5 .SETS S R[1:1] .SETN W 'S%V' .IF W = 2 .GOTO 5 .IF W <> 1 .GOTO 1 .SETS R R[3:*] .2: .IF R = "" .GOTO 1 .SETS S R[6:6] .SETN T 'S%V' .IF T <> 4 .GOTO 3 .SETS U R[1:1] .SETS V R[2:2] .SETN W ('V%V'&377)*400+('U%V'&377) .SETS S "'W%X'" .IF S <> A .GOTO 3 .SETS U R[3:3] .SETS V R[4:4] .SETN W ('V%V'&377)*400+('U%V'&377) .SETS S "'W%X'" .IF S = B .GOTO 4 .3: .SETS R R[9.:*] .GOTO 2 .4: .SETS U R[7:7] .SETS V R[8.:8.] .SETN W ('V%V'&377)*400+('U%V'&377) .SETS "'W'" .5: .CLOSE .EXIT .end literal .pg .c ----- Babbage: The Language of the Future ----- .s1 .c by Tim McDonough, Rensselear Polytechnic Institute .c (reproduced without permission, but thanks anyway) .s1 The are a few things in this business that are more fun than designing a new computer language, and the very latest is Ada - the Department of Defense's new supertoy. Ada, as you know, has been designed to replace outmoded and obsolete languages such as COBOL and FORTRAN. The problem is that this cycle takes 20 to 30 years and won't start until we're really convinced present languages aren't any good. We can short-circuit this process by starting on Ada's replacement right now. Then, by the time we decide Ada is obsolete, its replacement will be ready. The new generation of language designers has taken on naming its brain children after real people rather than resorting to the usual acronyms. Pascal is named after the first person to build a calculating machine and Ada is named after the first computer programmer. As our namesake, we chose Charles Babbage, who died in poverty while trying to finish building the first computer. The new language is thus named after the first systems designer to go over budget and behind schedule. Babbage is based on language elements that were discovered after the design of Ada was completed. For instance, C.A.R. Hoare, in his 1980 ACM Turing Award lecture, told of two ways of constructing a software design: .lm +5 .rm -5 .p 0 "One way is to make it so simple that there are obviously no deficiencies and the other way is to make it so complicated that there are no obvious deficiencies." .lm -5 .rm +5 .p 5 The designers of Babbage have chosen a third alternative - a language that has only obvious deficiencies. Babbage programs are so unreliable that maintenance can begin before systems integration is completed. This guarantees a steady increase in the debug job marketplace. Like Pascal, Ada uses 'strong typing' to avoid errors caused by mixing data types. The designers of Babbage advocated "good typing" to avoid errors caused by misspelling the words in your program. Later versions of Babbage will also allow "touch typing", which will fill a long-felt need. A hotly contested issue among language designers is the method for passing parameters to subfunctions. Some advocate "call by name", other prefer "call by value". Babbage uses a new method "call by telephone". This is especially effective for long-distance parameter passing. Ada stresses the concept of software portability. Babbage encourages hardware portability. After all, what good is a computer if you can't take it with you? It's a good sign if your language is sponsored by the government. COBOL had government backing, and Ada is being funded by the department of defense. After much negotiation, the Department of Sanitation has agreed to sponsor Babbage. No subsets of Ada are allowed. Babbage is just the opposite. None of Babbage is defined except its extensibility - each user must define his own version. To end the debate of large languages versus small, Babbage allows each user to make the language any size he wants. Babbage is the ideal language for the "ME" generation. The examples that follow will give some idea of what Babbage looks like. Structured languages banned GOTOs and the multiway conditional branches by replacing them with the simpler If-Then-Else structure. Babbage has a number of new conditional statements that act like termites in the structures of your program: .lm +5 .s2 .i -5 What if - .p 0 Used in simulation languages. branches before evaluation test conditions. .s1 .i -5 Or Else - Conditional Threat, as in "Add these two numbers or else!" .s1 .i -5 Why Not? Executes the code that follows in a devil-may-care fashion. .s1 .i -5 Who else? Used for polling during I/O operations. .s1 .i -5 Elsewhere This is where your program really is when you think it's here. .s1 .i -5 Going Going Gone For writing unstructured programs. Takes a random branch to another part of your program. Does the work of 10 GOTOs. .pg .lm -5 For years, programming languages have used "FOR", "DO UNTIL", "DO WHILE", etc. to mean "LOOP". Continuing this trend, Babbage offers the following loop constructs: .lm +5 .s1 .i -5 Don't Do While Not This loop is not executed if the test condition is not false (or if it's Friday afternoon). .s1 .i -5 Didn't Do The loop executes once and hides its traces. .s1 .i -5 Can't Do The loop is pooped. .s1 .i -5 Won't Do The CPU halts because it doesn't like the code inside the loop. Execution can be resumed by typing "MAY I?" at the console. .s1 .i -5 Might Do Depends on how the CPU is feeling. Executed if the CPU is "UP", not executed if the CPU is "DOWN" or if its feelings have been hurt. .s1 .i -5 Do Unto Others Used to write the main loop for timesharing systems so that they will antagonize the users in a uniform manner. .s1 .i -5 Do-Wah Used to write timing loop for computer-generated music (rag timing). .s2 .lm -5 Every self-respecting structured language has a CASE statement to implement multiway branching. ALGOL offers an indexed CASE statement and Pascal has a labeled CASE statement. Not much of a choice. Babbage offers a variety of statements: .lm +5 .s1 .i -5 The Just-in-Case Statement For handling afterthoughts and fudge factors. Allows you to multiply by zero to correct for accidentally dividing by zero. .pg .s1 .i -5 The Brief Case Statement To encourage portable software. .s1 .i -5 The Open-and-Shut-Case Statement No proof of correctness is necessary with this one. .s1 .i -5 The In-Any-Case Statement This one always works. .s1 .i -5 The Hopeless-Case Statement This one never works. .s1 .i -5 The Basket-Case Statement A really hopeless CASE. .lm -5 .s2 .p 5 The Babbage language Design Group is continuously evaluating new features that will keep its users from reaching any level of effectiveness. For instance, Babbage's designers are now considering the 'Almost Equals' sign, used for comparing two floating point numbers. This new feature "Takes the worry out of being close". No language, no matter how bad, can stand on its own. We need a really state-of-the-art operating system to support Babbage. After trying several commercial systems, we decided to write a "virtual" operating system. Everybody has a virtual memory operating system, so we decided to try something a little different. Our new operating system is called Virtual Time Operating System (VTOS). While virtual memory systems make the computer's memory the virtual resource, VTOS does the same thing with CPU processing time. The result is that the computer can run an unlimited number of jobs at the same time. Like the virtual memory system, which actually keeps part of the memory on disk, VTOS has to play tricks to achieve its goals. Although all of your jobs seem to be running right now, some of them are actually running next week. As you can see, Babbage is still in its infancy. The Babbage language design group is seeking suggestions for his powerful new language, and as the sole member of this group (all applications for membership will be accepted), I call on the data processing community for help in making this dream a reality. .pg Here is a small programming example in Babbage for others to use as a programming template: .lit Program babbage_template by Who else What if no_program_variables_exist then create_some Or Else! Might Do loop Just-in-Case program_runs_perfectly : Delete_source_files; user_wants_modifications : Ask_for_raise; user_wants_demo : Crash_gracefully; user_wants_lobotomy : Continue; Or Else! Why Not Do Unto Others until user_panicks? Basket-Case user_pulls_out_hair : Do_wah until Elsewhere; user_pulls_out_terminal : Going Going Gone; user_enters_data : Can't Do input_data; user_wants_more : append_random_code_to_program_and_recompile; Or Else! Won't Do loop Windows; Diapers; Documentation; Loop-De-Doop. Loop-De-Doop. Margorp. .eli .pg .c ----- Manipulating Global Event Flags from Device Drivers ----- .S1 .C by Bruce R. Mitchell .C Machine Intelligence and Industrial Magic, Consultants .C RR _#1, Box 216 .C Fountain City, WI###54629 .s1 In this article we consider the problem of manipulating the RSX global event flags (event flags 33 through 64) from a device driver or a kernel-mapped privileged task. In most drivers, it is sufficient to return completion notification to the host task via local event or AST. Rarely is there an exception, but when there is, it may prove difficult for users who may not be ^&au courant\& with RSX internals. One such exception is the manipulation of global event flags from device drivers. A possible application in which it might be useful to manipulate global event flags from a driver is this. Consider a system in which it is permitted to perform compute-bound operations only when the associated robotic workcell is in a "safe" or "idle" state. The reasoning behind this is maximum response speed to machine situations. It would be possible to store a flag in a system common, but this would require the tasks monitoring the flag to continually "peek" into the common. Additionally, the workcell is controlled by a device driver, and it is inelegant for a driver to map and modify system common regions - especially checkpointable commons. A simpler solution is allocation of a global event flag, so that tasks needing to do compute-bound operations can wait for the flag to set. The driver can set and clear the event flag without task intervention and even without I/O active, if written cleverly. While there are Executive routines to operate on task local event flags, operation on the Executive-maintained system global event flags is more obscure and requires some thought to be effective, elegant and general. The system global event flags are stored in locations $COMEF and $COMEF+2. These fixed locations are part of the "null task" TCB, which is defined in Executive source module [11,10]SYSCM.MAC. $COMEF stores global event flags 33 through 48, and $COMEF+2 stores event flags 49 through 64, in low bit ascending order. Thus, bit 0 of $COMEF corresponds to global event flag 33, and bit 2 of $COMEF+2 corresponds to global event flag 66. The sense of a bit reflects the sense of the associated event flag, as one would expect; bit set corresponds to event flag set, and so conversely. Setting or clearing a global event flag now becomes a simple matter of choosing the correct word to modify, and modifying the correct bit within the word. The following code extract which sets any global event flag shows how this may be done: .SKIP 2 .LITERAL ; R0 contains valid global event flag number [33.:64.] MOV #2, R0 ; Assume 49-64, offset to $COMEF+2 SUB #49., R1 ; Convert to bit offset BPL 10$ ; If EFN 49-64, continue CLR R0 ; Else 33-48, offset to $COMEF ADD #16., R1 ; Convert to bit offset 10$: MOV #1, R2 ; Start with bit for EFN 33+xR0 ASH R1, R2 ; Shift to create bit mask for EFN BIS R2, $COMEF(R0) ; And set the global flag CALL $DRDSE ; Declare significant event .END LITERAL .SKIP If it is desired to clear a flag, the BIS instruction must be changed to a BIC to clear the associated bit. (In this example, note - as ^&always\& - that if tasks are waiting for an event flag to change state, a significant event ^&must\& be declared to force a scheduler run.) This technique is well suited for drivers which communicate one-way with tasks. It is ^¬\& suited for two-way communication by tasks to drivers, since global event flag operations should be atomic; i.e., all operations on global event flags must be non-interruptible to assure system integrity. An example may illustrate this rather dangerous point. .LITERAL BIT #2, $COMEF ; Global event flag 34 set? BEQ 10$ ; If not, bypass BIT #1, $COMEF+2 ; Global flag 49 set too? BEQ 10$ ; If not, bypass BIS #100000, $COMEF ; Set global event flag 48 CALL $DRDSE ; Declare significant event 10$: .END LITERAL Now, suppose this code is running at system state, viz. $STKDP = 0. While no task can interrupt this code, another driver certainly can and eventually will. If the interrrupting driver takes control of the CPU between the first BEQ and second BIT, and changes either $COMEF or $COMEF+2, the operation of this code may become incorrect. In effect the driver may "have its shorts pulled down", and not know it. The overall operation is non-atomic. While such critical sections are undesirable in driver code - or in any code for that matter - and should be avoided, there is a solution. It is as follows: .LITERAL MTPS #7 ; Go uninterruptible BIT #2, $COMEF ;;; Global event flag 34 set? BEQ 10$ ;;; If not, bypass BIT #1, $COMEF+2 ;;; Global flag 49 set too? BEQ 10$ ;;; If not, bypass BIS #100000, $COMEF ;;; Set global event flag 48 MTPS #0 ; Go interruptible CALL $DRDSE ; Declare significant event 10$: MTPS #0 ; Go interruptible (NOP if no BEQ) .END LITERAL The move to processor status at priority 7 ensures that the above code always executes without interruptions. It should go without saying that such sections must be extremely short and must always restore the correct processor priority after changing it. Within these limitations, this approach solves the non-atomicity problem. ^&This type of complex operation on event flags is still unwise in a device driver\&. A driver intending to operate on the same event flag frequently should compute and store the event flag word location and the event flag mask word, then use this stored information rather than recomputing every time it sets or clears the flag. This saves time and, more importantly, CPU general registers when operating at interrupt state. If the above considerations are kept in mind - one-way communication and atomic operations - use of system global event flags from device drivers is possible, practical and may be done with great profit in those exceptional cases where it is needed. .pg .C ----- Humor Rumor Roundup ----- .S1 .c by Charlie Pratco .s1 Ah, the wonders of Demon Rum, RSX SIG Suites and Mongolian Barbecue. He of a bottomless leg and hypothetical expense accounts again proves Pratco's Canard: The more lavish the spending, the more rubbery the lips. While in search of the ever-rumored ECL PDP-11 at a gathering in a Cleveland pub, my companion introduced me to a salesman from Saskatoon with a weakness for Virgin Mary's. With my Fred's Bank VISA processing more digits than RT-11 running on a PDP-11/83, he blurted out how the PDP world would never be the same again, thanks to a certain company. As the Philly Cheese Steak coated his palate with layer of nondescript effluvia, the poor slob explained how this company was going to introduce next week a symmetrical multiprocessing PDP-11 based on an ECL chip set that can run rings around certain 32-bit processors. The smarmy dweeb chortled that even Gonzo Systems was sharpening its teeth. Within months, my nemesis said, Gonzo would introduce WhiteFang and BlackTooth, code names of a workstation based on the T-11 chip, boasting a new graphics engine, an ultra high resolution display controller and a faster, flicker-free refresh rate. This one-man collection of bad information had recently seen a 25-page-per-minute laser printer with a Cummins Diesel engine, a $25,000 price tag and DEC bumper sticker on the front. Later, as I mellowed out a bit, I made a mental note to forward him not one, but two, of the oft-rumored but rarely seen Pratco Chamber Pots. He decided to reciprocate with a glass of 20-year-old Chateau Chunder. The offer was offensive but typical for this purveyor of other people's efforts, as he knew all along that I was hoping for Chateau Nuits san Wogga-Wogga, the legendary Antipodean Table Wine with a bouquet like an Aborigine's armpit. Only his voice disturbed the taste of this plenary tribute to oenology. But you don't have to worry about expense accounts, especially if you're equipped with the priceless C.PRATCO chamber pot. Just call the Rumor Hot Line at (800)555-5555 or dispatch some E-Mail to EasyLink address BR-549.