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;