The order that Blitz calls ReadLine for each of the 4 arguments for the Graphics3D command like other programming languages is not guaranteed (you are incorrectly assuming blitz will evaluate your 4 arguments from left to right).
The never-ending discussion. You must not assume that a compiler will evaluate the operands of a expression from left to right, but you can be sure that different expressions will be evaluated in a sequential order. The arguments of a function should be considered different expressions.The book 'C. Reference Manual. 4th edition', by Herbert Schildt, says the following about the comma operator (translated from spanish):
When used as an operator, the comma is used to concatenate several expressions. [...] In the example 'x = (y=3, y+1);', the first element in the comma separated list must be evaluated, so '3' is assigned to 'y'. Then the result of 'y+1' is added to 'x'.