+ Another interesting example worth mentioning is the emulation of "C"'s "union" keyword
+ using *.abs*. For example, the following "C" code:
+
+ ::
+
+ struct spritesheet
+ {
+ short spf_w;
+ short spf_h;
+ short spf_xo;
+ short spf_yo;
+ union { int spf_em_colour; int spf_emx_colour; };
+ union { int spf_em_psmask[16]; int spf_emx_colouropt; };
+ }
+
+ can be expressed as:
+
+ ::
+
+ .abs
+ *-------------------------------------------------------*
+ spf_w: ds.w 1 ;<- common
+ spf_h: ds.w 1
+ spf_xo: ds.w 1
+ spf_yo: ds.w 1
+ spf_data: ds.l 0
+ *-------------------------------------------------------*
+ ; .union set
+ spf_em_colour: ds.l 1 ;<- union #1
+ spf_em_psmask: ds.l 16
+ *-------------------------------------------------------*
+ .68000
+ .abs spf_em_colour
+ ; .union reset
+ spf_emx_colour: ds.l 1 ;<- union #2
+ spf_emx_colouropt: ds.l 1
+ spf_emx_psmask: ds.l 16
+ spf_emx_psmaskopt: ds.l 16
+
+ .68000
+ ;*-------------------------------------------------------*
+
+ move #spf_em_colour,d0
+ move #spf_emx_colour,d0
+
+ In this example, *spf_em_colour* and *spf_emx_colour* will have the same value.
+