class Person
{
        U8 first                [32];
        U8 last                 [32];
        U8 address1     [64];
        U8 address2     [64];
        U8 city                 [32];
        U8 state_zip    [32];
};

U0 OffsetDemo1()
{
        Person *p = MAlloc(sizeof(Person));

        StrCopy(p->first,         "Terry");
        StrCopy(p->last,          "Davis");
        StrCopy(p->address1,  "8144 Sickle Lane");
        StrCopy(p->address2,  "");
        StrCopy(p->city,          "Las Vegas");
        StrCopy(p->state_zip, "NV 89128");
}

U(&OffsetDemo1, 34);
PressAKey;

/*

x86 has signed 8-bit    displacements
                and signed 32-bit displacements.

This example uses 8-bit negative displacements.

*/

class Person
{ $ = -128;
U8 first                [32];
U8 last                 [32];
U8 address1     [64];
U8 address2     [64];
U8 city                 [32];
U8 state_zip    [32];
};

U0 OffsetDemo2()
{
        Person *p = MAlloc(sizeof(Person))(I64) + 128;

        StrCopy(p->first,         "Terry");
        StrCopy(p->last,          "Davis");
        StrCopy(p->address1,  "8144 Sickle Lane");
        StrCopy(p->address2,  "");
        StrCopy(p->city,          "Las Vegas");
        StrCopy(p->state_zip, "NV 89128");
}

U(&OffsetDemo2, 34);
PressAKey;