//
-// RMAC - Reboot's Macro Assembler for the Atari Jaguar Console System
+// RMAC - Renamed 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-2021 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 <stdio.h>
#include <ctype.h>
#include <stdlib.h>
+
#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 **);
+
int main(int argc, char ** argv)
{
char * namv[256];
while (fgets(ln, 256, stdin) != NULL)
{
- ++lineno; /* bump line# */
+ lineno++; /* bump line# */
if (*ln == '#') /* ignore comments */
continue;
namv[namcnt++] = s;
while (*s && !isspace(*s))
- ++s;
+ s++;
if (isspace(*s))
*s++ = EOS;
}
-/*
- * Parse line
- */
+//
+// 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;
}
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;
+ j++;
}
printf("0x%04x, ", j);
printf("%s, ", namv[4]);
if (namc == 7 && *namv[6] == '+')
- printf("%d, ", kwnum+1);
+ printf("%d, ", kwnum + 1);
else
printf("0, ");
printf("%s},\n", namv[5]);
- ++kwnum;
+ kwnum++;
}
fprintf(stderr, "\n");
exit(1);
}
+