Return Styles: Pseud0ch, Terminal, Valhalla, NES, Geocities, Blue Moon. Entire thread

Pointer for ROM variable in a RAM variable?

Name: Anonymous 2012-11-20 17:54

I'm doing a project using the Microchip C18 compiler.
I have a struct called a block that points to other blocks (north east south west)
These blocks will make me a map.
I then have a pointer that I use to evaluate everything.
Just using RAM it looks like:

struct block{
        struct block *north, *east, *south, *west;
};
struct block map[5] = {     // just a simple line.
        { NULL, &map[1], NULL, NULL },
        { NULL, &map[2], NULL, &map[0]},
        { NULL, &map[3], NULL, &map[2]},
        { NULL, &map[4], NULL, &map[3]},
        { NULL, NULL, NULL, &map[4]}
};
struct block* position = &map[0];

This lets me do stuff like:

void goWest()
{
        if(position -> west != NULL) position = position -> west;
}


I ran out of RAM however, so here is my attempt at using rom:

struct block{
        rom struct block *north, *east, *south, *west;
};
rom struct block map[5] =
{ // just a simple line.
        { NULL, &map[1], NULL, NULL }
        .....

If done some debugging and can tell the above part works, but trying to make the position pointer is giving me grief.
so I guess my question is:

How do I hold the rom variable addresses in a pointer which I can edit the values of?

When i try: struct block *position = &map[0];
I get "Warning [2066] type qualifier mismatch in assignment"

I realize that a rom variable and ram variable are two different things,
but I have no idea what to do.

Newer Posts
Don't change these.
Name: Email:
Entire Thread Thread List