X-Git-Url: http://shamusworld.gotdns.org/cgi-bin/gitweb.cgi?p=rmac;a=blobdiff_plain;f=68kgen.c;h=b614454bbb601d7df82c059dc1455cfa5a77c974;hp=eb4df1a466d1c38e376e2f6385282c1b5951324a;hb=d7d2c7f14734504d68d67ee5d46ecd3472c0922e;hpb=d28f432296e812643e236d1bfc9b556a7b11c461 diff --git a/68kgen.c b/68kgen.c index eb4df1a..b614454 100644 --- a/68kgen.c +++ b/68kgen.c @@ -1,9 +1,10 @@ -//////////////////////////////////////////////////////////////////////////////////////////////////// +// // RMAC - Reboot's Macro Assembler for the Atari Jaguar Console System // 68KGEN.C - Tool to Generate 68000 Opcode Table // Copyright (C) 199x Landon Dyer, 2011 Reboot and Friends // RMAC derived from MADMAC v1.07 Written by Landon Dyer, 1986 // Source Utilised with the Kind Permission of Landon Dyer +// #include #include @@ -13,26 +14,27 @@ int kwnum = 1; /* current op# for kwgen output */ -FILE *kfp; /* keyword file */ +FILE * kfp; /* keyword file */ int lineno = 0; void error(char *, char *); void procln(int, char **); -void main(int argc, char **argv) { - char *namv[256]; - char *s; +int main(int argc, char ** argv) +{ + char * namv[256]; + char * s; int namcnt; char ln[256]; - if (argc == 2) - if ((kfp = fopen(argv[1], "w")) == NULL) - error("Cannot create: %s", argv[1]); + if ((argc == 2) && ((kfp = fopen(argv[1], "w")) == NULL)) + error("Cannot create: %s", argv[1]); - while (gets(ln) != NULL) + while (fgets(ln, 256, stdin) != NULL) { ++lineno; /* bump line# */ + if (*ln == '#') /* ignore comments */ continue; @@ -42,30 +44,38 @@ void main(int argc, char **argv) { */ namcnt = 0; s = ln; + while (*s) + { if (isspace(*s)) ++s; else { namv[namcnt++] = s; + while (*s && !isspace(*s)) ++s; + if (isspace(*s)) *s++ = EOS; } + } if (namcnt) procln(namcnt, namv); } + + return 0; } /* * Parse line */ -void procln(int namc, char **namv) { +void procln(int namc, char ** namv) +{ int i, j; - char *s; + char * s; if (namc == 1) /* alias for previous entry */ { @@ -88,34 +98,38 @@ void procln(int namc, char **namv) { printf("CGSPECIAL"); else for (s = namv[1], i=0; *s; ++s) printf("%sSIZ%c", (i++ ? "|" : ""), *s); + printf(", %s, %s, ", namv[2], namv[3]); if (*namv[4] == '%') /* enforce little fascist percent signs */ { - for (i=1, j=0; i < 17; ++i) + for(i=1, j=0; i<17; ++i) { j <<= 1; - if (namv[4][i] == '1' || - isupper(namv[4][i])) + + if (namv[4][i] == '1' || isupper(namv[4][i])) ++j; } + printf("0x%04x, ", j); } - else printf("%s, ", namv[4]); + else + printf("%s, ", namv[4]); - if (namc == 7 && - *namv[6] == '+') + if (namc == 7 && *namv[6] == '+') printf("%d, ", kwnum+1); - else printf("0, "); + else + printf("0, "); printf("%s},\n", namv[5]); ++kwnum; } -void error(char *s, char *s1) { + +void error(char * s, char * s1) +{ fprintf(stderr, s, s1); fprintf(stderr, "\n"); exit(1); } -