Computers About JFCL DCL V2

About JFCL

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

[image: the DECsystem-10 quick reference card]

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]

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…

KL10_E.jpg (16948 bytes)

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.

 

Last revised March 03, 2002.
Copyright © 2000 by Robert Armstrong and Deborah Norling.  All rights reserved.
Send mail to webmaster@jfcl.com with questions or comments about this web site.