The X1 allowed conditional execution of every instruction, not just branches as is the case in most computers. A similar capability existed in the
Zuse Z22 and the
ZEBRA, and much later in the
ARM architecture. The approach used in the X1 is more flexible than these others: it makes execution conditional on the current state of the
condition flag that is set by a previous instruction if it includes a modifier for that purpose, but untouched otherwise. As a result, conditional execution can be based on tests made some number of lines earlier, rather than being conditional only based on the result of the most recent arithmetic operation. This allowed for compact expression of programs. The following example demonstrates the loading of the value of memory at
n into the accumulator
A, calling a subroutine (which presumably uses that value in
A), and finally setting
A to be the absolute value of the number read: 2A n P // copy [
n] to A, set condition flag to "yes" if positive 6T fn 0 // call the function at
fn, which will return with the condition flag preserved N 5P AA // if condition flag is "no", copy -A to A The X1 arithmetic operators used binary
ones' complement arithmetic. ==Assembler==