I'm sorry to have inadvertantly confused you. The Architecture is question
used the 24-bit value 0xeeeeee as the sentinal value that indicated
end of a linked list of entries. That is one purpose of C's null/NULL
pointer. And of course languages other than C also have a concept of
a NULL pointer by whatever name you want to use.
The machine was a BCD machine without fixed operand sizes[*] (pointers
were originally six BCD digits because the machine only supported
one million digits (500kB) of memory). Later, a multi-level segmenting
scheme was added to the architecture which exended pointers to 8 BCD
digits (co-incidentally 32-bits). The high order 8 bits of the pointer
were a sign digit and a base selector digit; the remaining 6 digits
were the offset from the specified base register. Those 6 digits were
set to the value 0xEEEEEE (an invalid BCD address) to indicate end
of list (and for a null pointer); The hardware had instructions to walk
linked lists (SLT instruction) and the hardware reinstate list (the list
of read-to-run thread/task/process contexts) was also organized as a linked
list and was dispatched using the privileged BRV (Branch Reinstate Virtual) instruction.
[*] The arithmetic instruction operands could be from one to 100 digits
(or bytes with the zone digit ignored) in length.
While we tried a couple times to make a useful C compiler for the architecture,
the lack of any form of bit shifting and/or rotation instructions made it
too inefficient for the architecture, which frankly was designed specifically
for COBOL.