[fpc-pascal] variable declarations with 'absolute' syntax

Mark Morgan Lloyd markMLl.fpc-pascal at telemetry.co.uk
Wed Oct 14 17:50:54 CEST 2015

Marco van de Voort wrote:
> In our previous episode, Tomas Hajny said:
>>>> There's a lot of use in embedded targets:
>>> Ah, thank you. Finally an answer I can understand. :)
>> The case of MS-DOS using it e.g. to provide direct access to the video
>> adapter memory ($B800:0000), low-level information maintained by BIOS
>> ($40:xxx), etc., as already mentioned by someone else (Marco?) is in
>> principle the same as use cases relevant for embedded targets.
> Yes, but I thought it was square brackets, not parentheses. Address is
> linearized using seg*16+ofs and addressed via %fs (for go32v2, for i8086 it
> probably is used as is)

[Checks] No bracket or parentheses in the case of Turbo Pascal, but I'd 
point out that the syntax was $B800:$0000 i.e. the absolute address was 
two concatenated 16-bit words rather than a colon being acceptable in 
the middle of a 32-bit word. Modula-2 IIRC was about the same.

The C crowd would probably like to use (square) brackets on account of 
their array semantics, and in the general case it's arguable whether 
defining an absolute variable is better or worse than defining a pointer 
with an absolute initial value. I suppose that a compiler/linker could 
potentially interpret an absolute declaration as indicating that that 
location should not be swapped/overlaid/relocated.

Mark Morgan Lloyd
markMLl .AT. telemetry.co .DOT. uk

[Opinions above are the author's, not those of his employers or colleagues]

More information about the fpc-pascal mailing list