program t38; (* TP3 refuses a boolean I/O with error 66 ("I/O not allowed here", TPSRC8 prderrtp) and its runtime has no boolean reader at all -- xrdreal, xrdchar, xrdint and xrdbyte exist; xrdbool does not. A BOOLEAN is one byte, so an accepted read would be a two-byte store into it, and the second of those bytes is the byte that follows the variable. The position pinned in expected.tsv is the ')' after b: IoCall has parsed the whole argument, and the atom parser has already skipped the whitespace after it, so the parser stands on the ')' when IoCall dispatches on the variable's class. *) var b : boolean; begin readln (b) end.