206 lines
9.3 KiB
Plaintext
206 lines
9.3 KiB
Plaintext
The HACTRN
|
||
|
||
Once before a console dreary, while I programmed, weak and weary,
|
||
Over many a curious program which did TECO's buffer fill, --
|
||
While I pondered, nearly sleeping, suddenly there came a feeping,
|
||
As of something gently beeping, beeping with my console's bell.
|
||
"'Tis my DDT," I muttered, "feeping on my console's bell:
|
||
Once it feeped, and now is still."
|
||
|
||
Ah, distinctly I remember that dark night in bleak December,
|
||
And each separate glowing symbol danced before me, bright and chill.
|
||
Eagerly I wished the morrow; vainly I had sought to borrow
|
||
From my HACTRN aid for sorrow -- sorrow for the bugs which fill --
|
||
For the strange unknown and nameless bugs which ever all my programs fill --
|
||
Bugs which now I searched for still.
|
||
|
||
And the coughing, whirring, gritty fan I heard inside my TTY
|
||
Made me with fantastic terrors never known before to thrill;
|
||
So that now, to still the beating of my heart I stood repeating,
|
||
"'Tis some interrupt entreating DDT to signal me --
|
||
Some strange interrupt entreating DDT to signal me --
|
||
Its importance surely nil."
|
||
|
||
Presently my soul grew stronger: hesitating then no longer
|
||
I decided that I would respond to this strange program's call;
|
||
TECO, which I then attended, to my soul more strength extended;
|
||
With ^Z I ascended, going to my DDT --
|
||
V I typed, and answered soon my DDT --
|
||
TECO there, and that was all!
|
||
|
||
Dumbly at my console peering, as I sat there, wondering, fearing,
|
||
Doubting now that any interrupt was ever there to call;
|
||
But the silence was unbroken, and my HACTRN gave no token,
|
||
And the only sound there spoken from my TTY's whirring fan --
|
||
The low and rough and distant sound came from my TTY's whirring fan --
|
||
TECO there, and that was all.
|
||
|
||
Back into my TECO going, with my pounding heart now slowing,
|
||
Soon again I heard a feeping, somewhat louder than before.
|
||
"Surely," said I, "surely this is some strange bug of RMS's
|
||
Which an interrupt professes, though I have no other job;
|
||
Let me then ask DDT if it thinks there's another job --
|
||
'Tis a bug, and nothing more!"
|
||
|
||
Again I went up to my HACTRN while cold shivers up my back ran
|
||
V I typed, my jobs now once more to display.
|
||
Only TECO was there listed; though my trembling heart resisted
|
||
Yet I willed my hand, insisted, J to quickly type --
|
||
To answer this bold query DDT did hesitantly type
|
||
A ghostly "FOOBARJ".
|
||
|
||
From V protected, now, this phantom job, selected
|
||
Gave no clue to why it had invoked that former beeping shrill.
|
||
"Though," I said, "you're no inferior, I shall act as your superior
|
||
And examine your interior, this strange matter to explore."
|
||
Then I typed a 0/ this matter further to explore --
|
||
Quoth the HACTRN, ":KILL".
|
||
|
||
Much I worried -- this outrageous bug might prove to be contagious,
|
||
Though thus far it had not seemed to do my TECO any ill:
|
||
For we cannot help concurring such a bug would cause a stirring,
|
||
Feeping on a console whirring, disappearing then from sight --
|
||
An evanescent mystery subjob disappearing then from sight
|
||
With no clue but ":KILL"!
|
||
|
||
But my HACTRN, swapping, running, gave no further sign of cunning
|
||
By this unknown phantom, which was in a thirty second sleep;
|
||
None of this I comprehended; to my TECO I descended,
|
||
And in terror I pretended that the bug had gone away --
|
||
I pretended that for good the mystery bug had gone away --
|
||
When my console gave a feep.
|
||
|
||
Now I quickly, hoping, praying, started up a PEEK displaying
|
||
All the the jobs and subjobs there which did the system fill:
|
||
What I found was quite unpleasant, for there was no FOOBAR present:
|
||
Only TECO was there present, underneath my DDT;
|
||
I quit the PEEK, and "FOOBARJ" typed out my DDT --
|
||
Then quoth the HACTRN, ":KILL".
|
||
|
||
But -- this FOOBAR now beguiling all my sad soul into smiling --
|
||
I tightly grinned, determined that this glitch should cause nobody ill;
|
||
Now, into my armchair sinking, I betook myself to linking
|
||
Fancy unto fancy, thinking why this unknown phantom job --
|
||
Why this grim, ungainly, ghastly, gaunt, and unknown phantom job
|
||
Feeped and did a ":KILL".
|
||
|
||
This I sat engaged in guessing, but conceived no thought expressing
|
||
How a phantom job could sound those strange and ghostly beeps;
|
||
This and more I sat divining, with my head at ease reclining,
|
||
With the symbols coldly shining at me from the CRT,
|
||
With the bright, sharp symbols coldly shining on the CRT --
|
||
Which suddenly gave seven feeps!
|
||
|
||
Then methought the air grew denser, filled with clouds which grew immenser,
|
||
As when under darkened daylight thick and stormy weather brews;
|
||
With some bit of hesitation stemming from my trepidation
|
||
Again I typed that incantation finding out how much I'd lose --
|
||
V I typed again to find how much I'd lose --
|
||
TECO there, and seven FOOs!
|
||
|
||
"Job!" said I, "with ghostly manner! -- subjob still, if LISP or PLANNER!
|
||
Whether accident, or feeping as another hacker wills!
|
||
Tell me now why I am losing, why my HACTRN you're abusing,
|
||
Which no doubt is of your choosing: echo truly on my screen!"
|
||
Then DDT as if in answer echoed quickly on my screen,
|
||
Typing seven ":KILLs".
|
||
|
||
"Job!" said I, "with ghostly manner! -- subjob still, if LISP or PLANNER!
|
||
By the ITS above us which the DSKDMP doth fulfill,
|
||
I shall be the system's saviour: I shall mend your crude behaviour,
|
||
I shall halt your strange behaviour, and thee from the system lock!"
|
||
Madly, wildly laughing I made DDT invoke a LOCK,
|
||
And quickly typed thereat -- "5KILL"!
|
||
|
||
"Be this now our sign of parting, phantom job!" I shrieked, upstarting,
|
||
As my HACTRN now informed me ITS was going down in 5:00.
|
||
"You have run your last instruction and performed your final function!"
|
||
But, refuting this deduction HACTRN then my TTY grabbed --
|
||
To type out yet another message HACTRN now my TTY grabbed --
|
||
Quoth the HACTRN, "ITS REVIVED!"
|
||
|
||
And the FOOBAR, never sleeping, still is beeping, still is beeping
|
||
On the glaring console out from which I cannot even log!
|
||
And other happenings yet stranger indicate inherent danger
|
||
When bugs too easily derange or mung the programs of machines;
|
||
When programs too "intelligent" start taking over the machines:
|
||
Is this the end of AutoProg?
|
||
|
||
-- The Great Quux
|
||
(with apologies to
|
||
Edgar Allan Poe)
|
||
|
||
Notes for those not familar with the terms in this poem:
|
||
|
||
TTY ("titty") = any terminal, not necessarily a teletype (in this case,
|
||
a CRT); in particular, a terminal associated with and in control
|
||
of a job tree (see "DDT" below). The terminal may be passed up
|
||
and down the job tree; at any point in time only one job in the
|
||
tree may use the tree's TTY. When ^Z is typed on the TTY, the
|
||
system intervenes, stopping the job which has the TTY, and
|
||
interrupts that job's superior in the tree, which may then grab
|
||
the TTY from the inferior job.
|
||
|
||
DDT ("dee dee tee") = HACTRN ("hack-tran") = top level debugging and job
|
||
controlling procedure, capable of controlling up to eight
|
||
simultaneous jobs (which may themselves be DDTs!) and performing
|
||
other miscellaneous functions. HACTRN specifically denotes a
|
||
DDT at the top of a job tree, while DDT is the more general
|
||
term. The two terms refer to the same job in the poem, and are
|
||
thus treated as synonymous. Note that DDT requires its subjobs
|
||
to have unique names for obvious reasons; hence the concern
|
||
over seven jobs all named FOO.
|
||
|
||
PEEK = a program similar to the SYSTAT of certain PDP-10 monitor systems
|
||
of dubious quality. PEEK is actually much more versatile, giving
|
||
information in any of some dozen modes, such a job status,
|
||
DECtape status, Arpanet sockets, terminal status, and scheduler
|
||
variables and statistics. It also has provisions for
|
||
maintaining a continuously updated display on a CRT, and for
|
||
line printer usage.
|
||
|
||
TECO ("teeko") = text editor and corrector (that is, the good version of
|
||
several versions of TECO which are floating around).
|
||
|
||
:KILL ("colon kill") = message typed out by DDT whenever it kills a
|
||
subjob. Note that subjobs, if running, may request DDT to kill
|
||
themselves. If the job does not have the TTY when it makes such
|
||
a request, DDT merely rings the TTY's bell (which on the CRT in
|
||
the poem above is a particularly obnoxious flavor of "beep"),
|
||
and prints nothing until you ascend to DDT, and perhaps type J
|
||
(see below).
|
||
|
||
LOCK = utility program, which interprets the particular command "nKILL"
|
||
to mean "please bring the time-sharing system down in n minutes"
|
||
(where it is required that n5). The system will then go down
|
||
at the prescribed time unless the request is countermanded with
|
||
a "REVIVE" request.
|
||
|
||
ITS = Incompatible Timesharing System, the good timesharing system for
|
||
the PDP-10.
|
||
|
||
DSKDMP ("disk dump") = program used to, among other things, bootstrap
|
||
ITS into a running state.
|
||
|
||
= "altmode"; read it as such to preserve the meter.
|
||
|
||
V = command to DDT, requesting it to print out the names of all its
|
||
subjobs.
|
||
|
||
J = command to DDT, asking that it select the job which has requested
|
||
attention so that it may be dealt with. DDT responds
|
||
"jobnameJ" so that you will know which job it was.
|
||
|
||
^Z ("control zee") = command to ITS to stop the job which currently has
|
||
the TTY, and interrupt the next higher job in the job tree.
|
||
Ordinarily this has the effect of returning to DDT.
|
||
|
||
0/ ("zero slash") = command to DDT, asking it to print out the contents
|
||
of location zero of the selected subjob. This operation is
|
||
theoretically transparent to the subjob itself.
|
||
|
||
RMS = Richard M. Stallman, who does an admirable job of keeping DDT, as
|
||
well as many other programs, relatively bug-free.
|
||
|
||
(C) Copyright 1973, 1974 Guy L. Steele Jr. All rights reserved.
|