-// TODO: these are obviously bogus for now!
-#define FU_FLOATSING 0x0D0B // Fixup 32-bit float
-#define FU_FLOATDOUB 0x0E0B // Fixup 64-bit float
-#define FU_FLOATEXT 0x0F0B // Fixup 96-bit float
+#define FU_FLOATSING 0x000D // Fixup 32-bit float
+#define FU_FLOATDOUB 0x000E // Fixup 64-bit float
+#define FU_FLOATEXT 0x000F // Fixup 96-bit float
+
+// OP fixups
+#define FU_OBJLINK 0x10000 // Fixup OL link addr (bits 24-42, drop last 3)
+#define FU_OBJDATA 0x20000 // Fixup OL data addr (bits 43-63, drop last 3)
+
+// DSP56001 fixups
+// TODO: Sadly we don't have any spare bits left inside a 16-bit word
+// so we use the 2nd nibble as control code and
+// stick $B or $C in the lower nibble - then it's picked up as
+// FU_56001 by the fixup routine and then a second switch
+// selects fixup mode. Since we now have 32 bits, we can fix this!
+// [N.B.: This isn't true anymore, we now have 32 bits! :-P]
+#define FU_DSPIMM5 0x090B // Fixup 5-bit immediate
+#define FU_DSPADR12 0x0A0B // Fixup 12-bit address
+#define FU_DSPADR24 0x0B0B // Fixup 24-bit address
+#define FU_DSPADR16 0x0C0B // Fixup 24-bit address
+#define FU_DSPIMM12 0x0D0B // Fixup 12-bit immediate
+#define FU_DSPIMM24 0x0E0B // Fixup 24-bit immediate
+#define FU_DSPIMM8 0x0F0B // Fixup 8-bit immediate
+#define FU_DSPADR06 0x090C // Fixup 6-bit address
+#define FU_DSPPP06 0x0A0C // Fixup 6 bit pp address
+#define FU_DSPIMMFL8 0x0B0C // Fixup 8-bit immediate float
+#define FU_DSPIMMFL16 0x0C0C // Fixup 16-bit immediate float
+#define FU_DSPIMMFL24 0x0D0C // Fixup 24-bit immediate float
+