Add creation of .dat file by writing header and few machine codes
[zilutils.git] / zilasm / header.c
index 54ce75e95d553fc05b6645e452c3646cbd0528d3..e5f350fbaa0265d5a0267721a2137714df8e58f3 100644 (file)
@@ -1,7 +1,7 @@
 /*
  * header.c -- part of ZilUtils/ZilAsm
  *
- * Copyright (C) 2016 Jason Self <j@jxself.org>
+ * Copyright (C) 2016, 2019 Jason Self <j@jxself.org>
  *
  * This program is free software: you can redistribute it and/or modify
  * it under the terms of the GNU Affero General Public License as
@@ -21,6 +21,7 @@
 
 #include <string.h>  /* bzero */
 #include <assert.h>
+#include <stdio.h>
 
 #include "header.h"
 
@@ -41,3 +42,20 @@ ZMemblock *program_header_build(void)
        /* TODO */
        return zmb;
 }
+
+
+Word swapBytes(Word w)
+{
+       return ((w & 255) << 8) + (w >> 8);
+}
+
+
+void outputToFile(Program_header_struct *pHeader, FILE* file)
+{
+       Program_header_struct h;
+       memcpy(&h, pHeader, sizeof(Program_header_struct));
+
+       h.startPC = swapBytes(h.startPC);
+       h.h_file_size = swapBytes(h.h_file_size);
+       fwrite(&h, sizeof(Program_header_struct), 1, file);
+}
\ No newline at end of file