X-Git-Url: http://shamusworld.gotdns.org/cgi-bin/gitweb.cgi?p=rmac;a=blobdiff_plain;f=68kgen.c;h=497dbb49045a01b5a52539b31934056f28286ba6;hp=eb4df1a466d1c38e376e2f6385282c1b5951324a;hb=bdbf34766f4d074a5933eb1326fe4ce03d249e10;hpb=d28f432296e812643e236d1bfc9b556a7b11c461 diff --git a/68kgen.c b/68kgen.c index eb4df1a..497dbb4 100644 --- a/68kgen.c +++ b/68kgen.c @@ -1,38 +1,41 @@ -//////////////////////////////////////////////////////////////////////////////////////////////////// -// RMAC - Reboot's Macro Assembler for the Atari Jaguar Console System +// +// RMAC - Reboot's Macro Assembler for all Atari computers // 68KGEN.C - Tool to Generate 68000 Opcode Table -// Copyright (C) 199x Landon Dyer, 2011 Reboot and Friends +// Copyright (C) 199x Landon Dyer, 2011-2019 Reboot and Friends // RMAC derived from MADMAC v1.07 Written by Landon Dyer, 1986 -// Source Utilised with the Kind Permission of Landon Dyer +// Source utilised with the kind permission of Landon Dyer +// #include #include #include + #define EOS '\0' int kwnum = 1; /* current op# for kwgen output */ - -FILE *kfp; /* keyword file */ - +FILE * kfp; /* keyword file */ int lineno = 0; +// Function prototypes 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# */ + lineno++; /* bump line# */ + if (*ln == '#') /* ignore comments */ continue; @@ -42,34 +45,42 @@ 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; + s++; + if (isspace(*s)) *s++ = EOS; } + } if (namcnt) procln(namcnt, namv); } + + return 0; } -/* - * Parse line - */ -void procln(int namc, char **namv) { +// +// Parse line +// +void procln(int namc, char ** namv) +{ int i, j; - char *s; - if (namc == 1) /* alias for previous entry */ + // alias for previous entry + if (namc == 1) { - fprintf(kfp, "%s\t%d\n", namv[0], kwnum-1+1000); + fprintf(kfp, "%s\t%d\n", namv[0], kwnum - 1 + 1000); return; } @@ -79,41 +90,48 @@ void procln(int namc, char **namv) { exit(1); } - if (*namv[0] != '-') /* output keyword name */ + // output keyword name + if (*namv[0] != '-') fprintf(kfp, "%s\t%d\n", namv[0], kwnum + 1000); printf("/*%4d %-6s*/ {", kwnum, namv[0]); if (*namv[1] == '!') printf("CGSPECIAL"); - else for (s = namv[1], i=0; *s; ++s) + else for(char * 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 */ + // enforce little fascist percent signs + if (*namv[4] == '%') { - 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])) - ++j; + + 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] == '+') - printf("%d, ", kwnum+1); - else printf("0, "); + if (namc == 7 && *namv[6] == '+') + printf("%d, ", kwnum + 1); + else + printf("0, "); printf("%s},\n", namv[5]); - ++kwnum; + kwnum++; } -void error(char *s, char *s1) { + +void error(char * s, char * s1) +{ fprintf(stderr, s, s1); fprintf(stderr, "\n"); exit(1);