For backward labels, set happens before write. For forward labels, write happen before set. The write operation writes a dummy placeholder, and then the set operation writes the offset at that placeholder's address. Variable actions are expected to be called with labels in front of them. Example, "L2 FSET" About that "1 -": z80 relative jumps record "e-2", that is, the offset that *counts the 2 bytes of the jump itself*. Because we set the label *after* the jump OP1 itself, that's 1 byte that is taken care of. We still need to adjust by another byte before writing the offset.