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.
|