Hello,
I am trying to recompile FD-KEYB using 16-bit DOS FreePascal, in order to
see if I can produce a FPC version and thus avoid using TPC for compiling.
I am not being very lucky with compiling itself, and I haven't raised too
much attention in the FPC lists, either because it is difficult, or most
probably, compiling for an old 16-bit OS does not raise too much interest.
So I am trying this list here, in case some of you have ever mangled 16-bit
FPC and know the answer.
The biggest problem I am having is with the procedural type variables.
Whereas TPC would swallow this:
VAR
v: procedure;
procedure P;
begin
...
end;
v := P;
FPC does not like it, as it is trying to assign the RESULT of P (untyped)
to v.
KEYB.PAS(2960,21) Error: Incompatible types: got "untyped" expected
"<procedure variable type of procedure;Pascal>"
The documentation tells me to use
v := @P;
but it does not work, it gives:
KEYB.PAS(2960,21) Error: Illegal type conversion: "<address of
procedure;far;Pascal>" to "<procedure variable type of procedure;Pascal>"
which puzzles me, because to my mind, they are the same thing.
Using -MTP compiler option does not help, I get lots of new errors, unless
I avoid it by
TYPE
SimpleProc = procedure; far; { parameter-less callable
function }
(which is NOT standard TP language at all), but would in turn give me:
KEYB.PAS(2960,21) Error: Illegal type conversion: "<address of
procedure;far;Pascal>" to "NearCsPointer"
You can read the full thread here:
Far pointer versus Pointer in 16-bit DOS (freepascal.org)
<https://forum.lazarus.freepascal.org/index.php/topic,60973.0.html>
Any hints on how to circumvent this problem?
Thanks in advance,
Aitor
_______________________________________________
Freedos-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/freedos-devel