Q:

What is the FPD bit on the PDP-10?

When an interrupt happens on a PDP-10 right, as on many other architectures you get the program counter pushed onto the stack. Actually, the program counter includes many status bits in the upper half of the word, similar to early ARMs. 
Well one of these bits is the "First Part Done" bit, which apparently may be set to 1 or 0 depending on if something was done or not. 
My question is about that bit. What is the First Part of executing an instruction? Why service an interrupt after that thing, instead of after the entire instruction?

A:

The First Part Done bit is used to signal whether a specific part of an instruction (the "first part") is done already or not. 
It is only set on instructions like ILDB ("Increment and load byte") and ILDW ("Increment and load word") that address a pointer to a byte/word in memory, increment that pointer, and then fetch the byte or word that is referenced by that pointer into a register.
My guess is the FPD bit simply signals whether the increment has been done yet or not, as the interrupt might occur before or after the increment has been done (this seems to be a sort of "non-atomic" machine instruction).
Outside the CPU itself (for example for a program) this bit has no use whatsoever according to the manuals. It simply tells the processor where to pick up after a return from the interrupt.

A:

IIRC, this was set during very CISC-y instructions that could take many dozens of machine cycles and/or memory accesses. It was set so that if a page fault or other high-level interrupt occurred while the instruction was executing, the CPU would know not to restart the instruction from the beginning (although I'm a little hazy about how it knew where to restart it from if FPD was set).

A:

Just a quick supplement to the other answers.
The PC does not get pushed automatically.  When an interrupt happens, the processor operates in a special mode where instructions are fetched but the PC stays the same as before the interrupt.  If you want the PC saved (which is not always necessary), you should use a JSR instruction to explicitly do that.

