[fpc-devel]Porting FPC to another OS

Pierre Muller pierre at freepascal.org
Mon Apr 22 12:50:32 CEST 2002


At 12:12 22/04/2002 , Leif Ekblad a écrit:
>Pierre Muller:
> > What is RDOS? Could you point us to some web references?
>
>www.rdos.net
>
>It was originally developed to introduce multitasking to DOS, but
>currently I focus on embedded systems.
>  
> > Where does the go32v2 source have a reference to 0xf000 segment ?
> > I can't find anything about this in the latest sources?
>
>I'm not sure if it's part of the latest source, as I downloaded the last stable release (1.0.4).
>In this version, FP (and all other GO32V2 apps) accesses 000FFFF3 at this location:
>
>CS:EIP = 00BF:00001E1A
>SS:ESP = 00C7:00554A18
>GS = 00E7, base = 0
>ECX = 000FFFF3
>
>mov ax,gs:[ecx]

Free Pascal does not use register GS at all 
in the assember that it generates, 
it uses register FS for accessing real mode memory
selector set to base 0 for accessing Dos memory 
in the startup code (v2prt0.as).

I found no 'mov ax,gs:[ecx] instruction in its internal calls.
Thus I clearly suspect that this is in the startup code
of all DJGPP v2 programs.
Does this also happen with DJGPP executables,
like the following ones in the bin\go32v2 dir:
as.exe, ld.exe or make.exe?

If that is the case, then this comes from the startup code,
which source you can get from DJGPP sources.
Or maybe its in the cwsdpmi.exe server,
unless RDOS does provide its own DPMI server.
However, looking into CWSDPMI sources,
I only found a 
'mov ax, gs:[ecx-2]'
instruction....


Looking at Ralph Brown's interrupt list I found the following info:

MEM F000h:FFF0h - RESET JUMP
Size:   5 BYTEs

So the address FFFF3 of size 2 bytes represents the last two bytes of
that stuff, but I don't know really what means.






More information about the fpc-devel mailing list