Cast became part of Typesetter C IIRC - so V6 and before does not support casting and a number of other "modern" C features.
Again you need to think about the time. C, BLISS, PL/360 et al were being developed to replace writing in raw assembler. So supporting assembler style idioms that allowed you to get the raw addresses like PS or specific registers were natural and also remember the optimizers are still in their infancy.
i.e.
while (SOME_HW_REG_BASE_ADDR->some_sub-register&SOME_MASK) {
... do something/spin etc .. ...
}
would be a two assembler instruction loop and a natural type of thing a programmer we want to do,
The idea of things like "const" etc we use today - just did yet exist
As side note from those times, the BLISS compiler's optimizer (which was much more sophisticated than the C compilers) got so good that idioms that test constants like that were removed as . So Wulf created "code comments" (aka today's PRAGMAs) to inform the compiler that the writer of the code knew what they were doing and to "just do it." If you look at CMU kernel code from things like Hydra and other kernels of time - you will see a the code comment: "BOH" - meaning "Buzz Off Hobbes" - the nasty shot at my friend Steve Hobbes. Bill student, who did much of the BLISS optimizer.