2 // coded by Ketmar // Vamprile Avalon
11 #include "liburasm/liburasm.h"
14 static uint8_t memory
[65536];
17 static uint8_t getByte (uint16_t addr
) {
22 static const char *cmdName (const char *s
) {
24 const char *t
= strchr(s
, '\t');
26 memset(cmd
, 0, sizeof(cmd
));
28 while (strlen(cmd
) < 5) strcat(cmd
, " ");
33 static const char *cmdArgs (const char *s
) {
34 const char *t
= strchr(s
, '\t');
35 if (!t
) return s
+strlen(s
);
40 int main (int argc
, char *argv
[]) {
42 uint16_t pc
= 0x0100U
;//0xECC8UL;
44 int len
, idx
, len1
, f
;
45 FILE *fl
= fopen(argc
>1?argv
[1]:"zout_0100.bin", "rb");
46 if (!fl
) { fprintf(stderr
, "ERROR: can't open input file!\n"); return 1; }
47 if (argc
> 2) pc
= (strtol(argv
[2], NULL
, 0))&0xffff;
48 maxlen
= fread(memory
+pc
, 1, 65536-pc
, fl
);
53 if (pc
>= 65535-16) break;
54 idx
= urDisassembleFind(pc
);
56 len
= urDisassembleLength(idx
);
57 len1
= urDisassembleOne(dstr
, pc
);
58 printf("%04X: [", pc
);
59 for (f
= 0; f
< len1
; ++f
) { if (f
) putchar(' '); printf("%02X", memory
[pc
+f
]); }
60 for (; f
< 4; ++f
) { if (f
) putchar(' '); printf(" "); }
61 printf("] idx=%d; len=%d; len1=%d; [%s%s]\n", idx
, len
, len1
, cmdName(dstr
), cmdArgs(dstr
));
62 if (len
!= len1
) abort();
63 if (len
<= 0) abort();
64 pc
+= len1
; maxlen
-= len1
;