|
| |
What is JFCL, anyway?
JFCL is the mnemonic for the DECsystem-10 instruction "Jump on Flag and
CLear it." It’s as simple as that, but of course that’s only the
beginning of the story, not the end. Any other meanings for these four letters
are unknown to me and my apologies it turns out to be an obscenity in some
language.
Computer geeks would say that the DECsystem-10 had a very
"orthogonal" instruction set. This means that for each opcode you
could pick a basic operation (ADD, JUMP, bit Test, SKIP, etc), the source of the
data (register, memory, immediate, etc), the direction of data flow, how the
data was to be manipulated (e.g. complemented, negated, swapped, unmodified),
and how it was to be tested. For broad classes of similar operations the choice
of these "options" was independent of the basic operation.
This made the –10 wonderful for programming because the instruction set was
very regular – for example, if there was a "ADD Memory to register"
instruction then you knew, without any doubt, that there was also a "ADD
Complement of Memory to register." Likewise, if there was a "JUMP on
Greater than or Equal" instruction then there must also be "SKIP on
memory Greater than or Equal" as well as a "Compare Accumulator to
Memory and skip of Greater than or Equal".
The entire –10 instruction set was summarized by a simple diagram that
occupied just two panels of the pocket sized Quick Reference card. This diagram
showed how to "construct" a mnemonic for an instruction by picking a
basic operation from one table and then following the arrows through tables of
suffixes for the various options.
One consequence of all this flexibility is that it was easy to construction
combinations that did things that were not very useful (i.e. "MOVE to
Self" – read a memory location and then write the exact same data back to
the exact same place!), or simply did nothing at all. It was a minor
"in" joke among the crowd of –10 hackers that the JUMP instruction
never jumped (because it didn’t specify any condition to jump on!); the SKIP
instruction never skipped; the Compare instruction didn’t compare anything;
the Test instruction didn’t test anything and, well, you get the idea. The
DECsystem-10’s instruction set probably had the distinction of having more
no-ops than any other machine made.
Enter our friend, "Jump on Flag and CLear it." On the early 36 bit
machines JFCL, with no flags specified to test, was the fastest no-op in the
instruction set. Why would you care about a how fast a no-op was? Well, on a
machine that made extensive use of skip instructions for testing, you used a lot
of them. Moreover, since the flags that JFCL could test weren’t very useful
(the –10 flags were nothing like the "condition codes" of modern
CPUs), JFCL was used all the time as a no-op and almost never for its
"intended" purpose. By the time of the later KL10 CPU, JFCL was no
longer the fastest no-op - TRN ("bit Test, Right half word, No
modifications to the bits tested, and never skip") was, but by that time
the usage of JFCL was so deeply ingrained that no one switched. Besides, at the
time we thought that the KL was so blazingly fast that it really didn’t
matter which was the fastest no-op!
So, in the end, this has been a very long-winded and colorful explanation
that says simply, "JFCL is a no-op instruction." Why pick this for a
domain name? Well, a lot of the computers here are siblings of the –10,
although sadly there is no 36 bit hardware running in the garage. And
it seemed appropriate to give a "no-op" name to a site that doesn’t
try to sell you anything. And if that’s not enough, it was one of the few four
letter domain names that weren’t already taken!
|
|
![[photo: two people talking in front of a KL10 Model A processor]](images/KL10_A_small.jpg)
A KL10 model A processor. The front
panel and DECtapes you see belong to the PDP-11/40 Console Front End, not
the KL.
Digital Equipment’s 36-bit hardware
The DECsystem-10 and DECSYSTEM-20 (yes, that’s the way they should
be capitalized, but that’s another story!) were main frame timesharing systems
made by Digital Equipment Corporation from the late 60s through the mid 80s. The
name refers to the entire system and not any specific component; KA10, KI10,
KL10, KR10 and KS10 were all designations of different processors used in
various models. The PDP-6 was an earlier DEC machine that is the ancestor of all
of them. For the purposes of this discussion they’re all pretty much the same,
but of course a real 36-bit aficionado could write an entire book about their
differences… |

The KL10 model E, a fairly late model of the
DECsystem-10 family. Note that the DECtape drives of the Model A
have been replaced by state of the art 8" floppy diskettes! |
|
Another JFCL anecdote
Ok, just one more. Contrary to popular belief, hackers are a social lot and,
although they may not have talked much to "normal" people, they
certainly talked a lot to each other. Talked about things that were important to
them, that is, and that meant the –10. As a consequence, all the mnemonics in
the instruction set had to have pronunciations so that they could be used in
casual conversation. For most mnemonics the pronunciation was obvious, but a few
of them were open to discussion and in particular, for JFCL there were two
distinct dialects – those who said "Jiff Cull" and those who
believed in "Jay Fickle."
I started my career in the Systems Software group, where we worked on
compilers, text editors, and stuff like that. The Systems guys were all of the
"Jiff Cull" persuasion and I grew up never hearing anybody say
"Jay Fickle" in my life. All was fine until the day of my big
promotion to the Operating Systems group. These guys worked on serious stuff
like the operating system, TOPS-10, spoolers and so on. More over, the OS guys
got keys that would actually unlock the machine room, and they (I!) could
go inside and touch the hardware! Amazing stuff for an eighteen-year-old junior
hacker like myself.
Another talent of the OS guys was that they would, on occasion, patch the
running monitor with MDDT. This is conceptually no different than debugging any
other program, but in this case there was only one operating system running and
it was supporting over one hundred (yes, 100!) simultaneous timesharing users.
After all, the DECsystem-10 hardware cost upwards of half a million dollars and
it’s not like the University was going to buy another one just for the
Operating Systems guys to experiment with!
Patching the running monitor was tricky stuff since it was actually executing
the code as you changed it, and if you messed up it’d promptly crash, along
with the hundred or so users who were logged in at the time. This was one easy
way to become very unpopular around the computer center! The first time I got to
do it my boss, Marshall Arnett, wanted to sitting next to me just to be sure I
up to the job. When we came to a critical step Marshall said "Just Jay
Fickle that one out." Of course I just sat there, fingers frozen on the
keys, while I desperately tried to figure out exactly what "Jay
Fickle" might mean. Marshall repeated it again, "Just Jay Fickle that
one out!" but there was still no response from me. Undoubtedly Marshall was
getting a little nervous by this time, and he reached around my frozen fingers
and typed the letters "J" – "F" – "C" –
"L".
The light of understanding immediately flooded my mind and I burst out,
uncontrollably, "Oh – you mean Jiff Cull!!!!" I think I embarrassed
Marshall by making fun of his pronunciation but all three of us (Marshall, me,
and TOPS-10) survived.
|
|