Wrong.
It is true only if it equals 1, false only when it equals zero, all other values are undefined.
You believe that ? ... I got a really good deal for you on a bridge in NY...
It has already been shown that FPC will consider any value other than 0 to be TRUE for a boolean. That's not undefined territory, that's a FACT. That's been proved, your wishful thinking doesn't change reality.
You and/or anyone else for that matter, can claim Santa Claus exists but, it doesn't make it that way.
@Martin,
The point remains the same, FPC can't tell a boolean from a dead duck.
It accepts DWORD('a') which it should not. It should require ord('a') because of the size mismatch but, since it accepts that then it should also accept DWORD('ab') and DWORD('abc') but it doesn't.
The bottom line is this: FPC erroneously considers a boolean as a data type consisting of 8, 16, 32 or 64 bits which is an atrocity. A boolean is a single bit. The container is NOT the type.
Plus, it's patently wrong and absurd for the compiler to accept boolean(8) without any complaint whatsoever but complain about boolean(512). That proves beyond any doubt, reasonable or otherwise, that FPC _incorrectly_ considers a boolean a byte/word/dword/qword sized type, when it is not.
There is no boolean in FPC. In FPC the boolean type is "undefined" and _unknown_ "territory".
I love Pascal but, it is no wonder it's on its way to the grave. Some of it's developers (and some of its users) have no regard whatsoever for logical and mathematical correctness. writable constants, boolean characters and strings, $61 is between 0 and 1, 0 is a signed numeral... etc, etc,