Ok fair enough, I tried to provide enough info before (but being generic about it) but
Code: Select all
typedef struct {
int mode;
int rX;
int rY;
int rD;
long lfb;
long VRam;
} VideoMode;
typedef struct
{
char OSLoaderName[32];
int OSLoaderVer;
long SysRam;
VideoMode vid;
} OSStruct;
In my 16bit code I want to pass the address of osstruct structure called OSDT (for operating system data table)
My runkernel command can successfuly pass parameters to the 32bit kernel because one of the other commands I pass in the address to the vesa lfb, and It works for my kernel.
my kernel takes the passed adress and assigns it to the OSDT (in the kernel) like so
Code: Select all
//dtptr is an unsigned long hopefully holding the address to the // datatable pointer
OSStruct *OSDT;
OSDT = (OSStruct *)dtptr;
In the loader the OSDT is declared like a regular struct:
Code: Select all
OSStruct OSDT;
//And values are given to its elements...
Now as far as getting the address of my struct and passing it, I've tried:
Code: Select all
runkernel("kernel.o", &OSDT);
-or-
MK_FP(_DS, &OSDT);
//where _DS = my data segment
So I am not sure what to do.
Its got me completely lost.
Thanks for the help,
Rich