unsigned Undef; /* Count of undefined externals */
FILE* F; /* Output file */
const char* Filename; /* Name of output file */
+ Import* RunAd; /* Run Address */
};
D->Undef = 0;
D->F = 0;
D->Filename = 0;
+ D->RunAd = 0;
/* Return the created struct */
return D;
+void XexSetRunAd (XexDesc* D, Import *RunAd)
+/* Set the RUNAD export */
+{
+ D->RunAd = RunAd;
+}
+
+
+
static unsigned XexWriteExpr (ExprNode* E, int Signed, unsigned Size,
unsigned long Offs attribute ((unused)),
void* Data)
}
/* Write header */
- Write16(D->F, 0xFFFF);
+ if (ftell (D->F) == 0)
+ Write16(D->F, 0xFFFF);
Write16(D->F, M->Start);
Write16(D->F, Addr-1);
WriteMult (D->F, M->FillVal, ToFill);
M->FillLevel = M->Size;
}
+
}
XexWriteMem (D, M);
}
+ /* Write RUNAD at file end */
+ if (D->RunAd) {
+ Write16 (D->F, 0x2E0);
+ Write16 (D->F, 0x2E1);
+ Write16 (D->F, GetExportVal (D->RunAd->Exp));
+ }
+
/* Close the file */
if (fclose (D->F) != 0) {
Error ("Cannot write to `%s': %s", D->Filename, strerror (errno));