[fpc-devel] Current state of atari port

Thorsten Otto admin at tho-otto.de
Thu Feb 10 13:00:48 CET 2022


Hi,

i've pushed now the remaining parts of the AES/VDI library (and also a few 
other additions). Another few enhancements will be done soon, but the 
ObjectGEM library can already be compiled.

I just wanted to share what problems may occur when porting PurePascal code to 
FreePascal:

- the units are named differently, so for freepascal you also have to import 
the aes and vdi units, as needed. No big deal.

- Luckily, almost all the compiler switches that PurePascal uses (it only 
knows about the short directives) are named identical, and have the same 
meaning. Notable exception is the $Z switch, so have to watch out for this.

- both vdi libraries provide a vdi function that makes it possible to extend 
the interface in your application. However, in the implementation you can just 
call it with "vdi", while from an application you have to call it explicitly 
"vdi.vdi", because the unit has the same name.

- when constructing objects, ObjectGEM uses contructs like
  new(PGroupBox, init(...)
  Such constructs are not supported by FreePascal, you have to assign the 
result to some variable (i think that is also an incompatibility to 
TurboPascal)

- in a few places i got some strange warnings. For example the code
var tg,mo,jr: word;
tsetdate(((jr-1980) shl 9) or (mo shl 5) or tg);
Gives:
Hint: (4035) Mixing signed expressions and longwords gives a 64bit result

I have no idea why calculations with word (16bit) should give a 64bit result?


- ObjectGEM uses the type "integer" for all vdi/aes parameters. Since that 
might be some implementation specific size, i started to replace it in a few 
places by "smallint", and doing a "type smallint = integer;" because 
PurePascal does not know that type. That turned out to be not so a good idea: 
although the types are identical, using "smallint" in the interface part and 
"integer" in the implementation is happily accepted by FreePascal, but 
PurePascal complains about a mismatch.

- PurePascal does not seem to have a builtin unsigned 32bit integer type,so 
watch out when doing operations on longints, especially shifts.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.freepascal.org/pipermail/fpc-devel/attachments/20220210/c219204a/attachment.htm>


More information about the fpc-devel mailing list