Ich kenne Pascal nicht im Detail, aber ich kann mir vorstellen, dass der Compiler den 'integer' als 32bit interpretiert oder konvertiert (Zweierkomplement), diesen dann bitweise schiebt und dann als Parameter an die Funktion 'writeln' übergibt. Probier mal
...
Dann spuckt er auch die 3 aus.
Nur ich frage mich, wieso er dann Integer als 32 Bit-Wert interpretiert, wenn alle Funktionen, die zur Ermittlung der maximalen Größe dienen, alle 16 Bit ausspucken. Sizeof(integer) sagt 2 bytes und BitSizeof(integer) sagt 16 Bit.