{$D+,I+,L+,P-,Q+,R+,S+,T+,V+,X+,Y+}
{$M 8192,0,655360}
PROGRAM TEST;
CONST
        maxBlockSize    = 1 SHL 13;
TYPE
        byteBlock               = ARRAY[0..PRED(maxBlockSize)] OF byte;
VAR
        bb0                     : ^byteBlock;
TYPE
        rec     =       RECORD  i1,     len     : word  END;
VAR
        mr              : rec;
        bw              : word;
BEGIN
        NEW(bb0);
        mr.i1:=0; mr.len:=0;
        bb0^[0] := 1;
        bb0^[1] := 2;
       {$T+}
        // Addr return untyped pointer, @ typed
        bw:=word((@bb0^[mr.i1])^);
        if bw <> 1 then
          halt(1);
       {$T-}
        bw:=word(Addr(bb0^[mr.i1])^);
{$ifndef ENDIAN_BIG}
        if bw <> (2 shl 8 + 1) then
{$else ENDIAN_BIG}
        if bw <> (1 shl 8 + 2) then
{$endif ENDIAN_BIG}
          halt(1);
END
.

