Niedawno napisałem program, którego zadaniem jest konwersja dowolnego pliku na asembler - przykładowo piszemy grę rysując grafiki w edytorze graficznym, i potem dzięki takiemu konwerterowi możemy je dołączyć do naszej gry. Wstępnie go przetestowałem konwertując jego samego, potem asemblując z powrotem i uruchamiając (uruchomił się poprawnie). Chciałbym jednak zasięgnąć waszej opinii, czy nie można by jeszcze czegoś tam poprawić.
Kod źródłowy:
/* convasm - raw data to assembly,
written by Jan Mleczko in 2022 */
#include <stdio.h>
#define bpline 19 /* bytes per line */
int main (int argc, char **argv)
{ FILE *ifp, *ofp;
unsigned int i, length = 0;
unsigned char line[bpline];
if (argc < 3)
{ puts ("convasm - raw data to assembly");
return 1;
}
ifp = fopen (argv[1], "rb");
if (!ifp)
{ puts ("can't read input file!");
return 1;
}
ofp = fopen (argv[2], "w");
if (!ofp)
{ puts ("can't write output file!");
return 1;
}
while (!feof (ifp))
{ getc (ifp);
++length;
}
--length; rewind (ifp);
fprintf (ofp, "; file %s, %u bytes\n", argv[1], length);
while (1)
{ length = fread (line, 1, bpline, ifp);
if (!length)
break;
fprintf (ofp, "DB %d", *line);
for (i = 1; i < length; ++i)
fprintf (ofp, ",%d", line[i]);
putc ('\n', ofp);
}
fclose (ifp); fclose (ofp);
return 0;
}