From bf0ece4109c5cf054c158a516c31ee0f846ab01b Mon Sep 17 00:00:00 2001 From: nanochess Date: Fri, 3 Nov 2017 22:14:39 -0600 Subject: [PATCH] First commit --- README | 27 ++++ pretty6502 | Bin 0 -> 17316 bytes pretty6502.c | 330 +++++++++++++++++++++++++++++++++++++++++++++++++ pretty6502.exe | Bin 0 -> 64000 bytes 4 files changed, 357 insertions(+) create mode 100644 README create mode 100755 pretty6502 create mode 100644 pretty6502.c create mode 100644 pretty6502.exe diff --git a/README b/README new file mode 100644 index 0000000..9dbe00b --- /dev/null +++ b/README @@ -0,0 +1,27 @@ +Pretty6502 v0.1 by Oscar Toledo G. http://nanochess.org/ + +Usage: + pretty6502 [args] input.asm output.asm + +DON'T USE SAME OUTPUT FILE AS INPUT, though it's possible, +you can DAMAGE YOUR SOURCE if this program has bugs. + +Arguments: + -s0 Code in four columns (default) + label: mnemonic operand comment + -s1 Code in three columns + label: mnemonic+operand comment + -m8 Start of mnemonic column (default) + -o16 Start of operand column (default) + -c32 Start of comment column (default) + -t8 Use tabs of size 8 to reach column + -t0 Use spaces to align (default) + -a0 Align comments to nearest column + -a1 Comments at line start are aligned + to mnemonic (default) + +Assumes all your labels are at start of line and there is space +before mnemonic. + +Accepts any assembler file where ; means comment +[label] mnemonic [operand] ; comment diff --git a/pretty6502 b/pretty6502 new file mode 100755 index 0000000000000000000000000000000000000000..ab6669526f2df8cef75f9f3e0df7e33e5003dc80 GIT binary patch literal 17316 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 +#include +#include +#include + +#define VERSION "v0.1" +int tabs; + +/* +** Request space in line +*/ +void request_space(FILE *output, int *current, int new, int force) +{ + + /* + ** If already exceeded space... + */ + if (*current >= new) { + if (force) + fputc(' ', output); + (*current)++; + return; + } + + /* + ** Advance one step at a time + */ + while (1) { + if (tabs == 0) { + fputc(' ', output); + (*current)++; + } else { + fputc('\t', output); + *current = (*current + tabs) / tabs * tabs; + } + if (*current >= new) + return; + } +} + +/* +** Main program +*/ +int main(int argc, char *argv[]) +{ + int c; + int style; + int start_mnemonic; + int start_operand; + int start_comment; + int align_comment; + FILE *input; + FILE *output; + char line[4096]; + int input_lines; + int allocation; + char *data; + int current_line; + int next_position; + char *p; + char *p1; + char *p2; + int current_column; + int request; + + /* + ** Show usage if less than 3 arguments (program name counts as one) + */ + if (argc < 3) { + fprintf(stderr, "\n"); + fprintf(stderr, "Pretty6502 " VERSION " by Oscar Toledo G. http://nanochess.org/\n"); + fprintf(stderr, "\n"); + fprintf(stderr, "Usage:\n"); + fprintf(stderr, " pretty6502 [args] input.asm output.asm\n"); + fprintf(stderr, "\n"); + fprintf(stderr, "DON'T USE SAME OUTPUT FILE AS INPUT, though it's possible,\n"); + fprintf(stderr, "you can DAMAGE YOUR SOURCE if this program has bugs.\n"); + fprintf(stderr, "\n"); + fprintf(stderr, "Arguments:\n"); + fprintf(stderr, " -s0 Code in four columns (default)\n"); + fprintf(stderr, " label: mnemonic operand comment\n"); + fprintf(stderr, " -s1 Code in three columns\n"); + fprintf(stderr, " label: mnemonic+operand comment\n"); + fprintf(stderr, " -m8 Start of mnemonic column (default)\n"); + fprintf(stderr, " -o16 Start of operand column (default)\n"); + fprintf(stderr, " -c32 Start of comment column (default)\n"); + fprintf(stderr, " -t8 Use tabs of size 8 to reach column\n"); + fprintf(stderr, " -t0 Use spaces to align (default)\n"); + fprintf(stderr, " -a0 Align comments to nearest column\n"); + fprintf(stderr, " -a1 Comments at line start are aligned\n"); + fprintf(stderr, " to mnemonic (default)\n"); + fprintf(stderr, "\n"); + fprintf(stderr, "Assumes all your labels are at start of line and there is space\n"); + fprintf(stderr, "before mnemonic.\n"); + fprintf(stderr, "\n"); + fprintf(stderr, "Accepts any assembler file where ; means comment\n"); + fprintf(stderr, "[label] mnemonic [operand] ; comment\n"); + exit(1); + } + + /* + ** Default settings + */ + style = 0; + start_mnemonic = 8; + start_operand = 16; + start_comment = 32; + tabs = 0; + align_comment = 1; + + /* + ** Process arguments + */ + c = 1; + while (c < argc - 2) { + if (argv[c][0] != '-') { + fprintf(stderr, "Bad argument\n"); + exit(1); + } + switch (argv[c][1]) { + case 's': /* Style */ + style = atoi(&argv[c][2]); + if (style != 0 && style != 1) { + fprintf(stderr, "Bad style code: %d\n", style); + exit(1); + } + break; + case 'm': /* Mnemonic start */ + start_mnemonic = atoi(&argv[c][2]); + break; + case 'o': /* Operand start */ + start_operand = atoi(&argv[c][2]); + break; + case 'c': /* Comment start */ + start_comment = atoi(&argv[c][2]); + break; + case 't': /* Tab size */ + tabs = atoi(&argv[c][2]); + break; + case 'a': /* Comment alignment */ + align_comment = atoi(&argv[c][2]); + if (align_comment != 0 && align_comment != 1) { + fprintf(stderr, "Bad comment alignment: %d\n", align_comment); + exit(1); + } + break; + default: /* Other */ + fprintf(stderr, "Unknown argument: %c\n", argv[c][1]); + exit(1); + } + c++; + } + + /* + ** Validate constraints + */ + if (style == 1) { + if (start_mnemonic > start_comment) { + fprintf(stderr, "Operand error: -m%d > -c%d\n", start_mnemonic, start_comment); + exit(1); + } + start_operand = start_mnemonic; + } else if (style == 0) { + if (start_mnemonic > start_operand) { + fprintf(stderr, "Operand error: -m%d > -o%d\n", start_mnemonic, start_operand); + exit(1); + } + if (start_operand > start_comment) { + fprintf(stderr, "Operand error: -o%d > -c%d\n", start_operand, start_comment); + exit(1); + } + } + if (tabs > 0) { + if (start_mnemonic % tabs) { + fprintf(stderr, "Operand error: -m%d isn't a multiple of %d\n", start_mnemonic, tabs); + exit(1); + } + if (start_operand % tabs) { + fprintf(stderr, "Operand error: -m%d isn't a multiple of %d\n", start_operand, tabs); + exit(1); + } + if (start_comment % tabs) { + fprintf(stderr, "Operand error: -m%d isn't a multiple of %d\n", start_comment, tabs); + exit(1); + } + } + + /* + ** Open input file, measure it and read it into buffer + */ + input = fopen(argv[c], "r"); + if (input == NULL) { + fprintf(stderr, "Unable to open input file: %s\n", argv[c]); + exit(1); + } + fprintf(stderr, "Processing %s...\n", argv[c]); + input_lines = 0; + allocation = 0; + while (fgets(line, sizeof(line) - 1, input)) { + allocation += strlen(line) + 1; + input_lines++; + } + fclose(input); + data = malloc(allocation); + if (data == NULL) { + fprintf(stderr, "Unable to allocate memory\n"); + exit(1); + } + input = fopen(argv[c], "r"); + if (input == NULL) { + fprintf(stderr, "Unable to open input file: %s\n", argv[c]); + exit(1); + } + current_line = 0; + next_position = 0; + while (fgets(line, sizeof(line) - 1, input)) { + if (current_line >= input_lines || next_position + strlen(line) + 1 > allocation) { + fprintf(stderr, "Buuurp! the source file grew!\n"); + fclose(input); + exit(1); + } + strcpy(data + next_position, line); + next_position += strlen(line) + 1; + current_line++; + } + fclose(input); + + /* + ** Now generate output file + */ + c++; + output = fopen(argv[c], "w"); + if (output == NULL) { + fprintf(stderr, "Unable to open output file: %s\n", argv[c]); + exit(1); + } + p = data; + for (input_lines = 0; input_lines < current_line; input_lines++) { + current_column = 0; + p1 = p; + if (*p1 && !isspace(*p1) && *p1 != ';') { /* Label */ + while (*p1 && !isspace(*p1) && *p1 != ';') + p1++; + fwrite(p, sizeof(char), p1 - p, output); + current_column = p1 - p; + } else { + current_column = 0; + } + while (*p1 && isspace(*p1)) + p1++; + if (*p1 && *p1 != ';') { /* Mnemonic */ + if (*p1 == '=') + request = start_operand; + else + request = start_mnemonic; + request_space(output, ¤t_column, request, 1); + p2 = p1; + while (*p2 && !isspace(*p2)) + p2++; + fwrite(p1, sizeof(char), p2 - p1, output); + current_column += p2 - p1; + p1 = p2; + while (*p1 && isspace(*p1)) + p1++; + if (*p1 && *p1 != ';') { /* Operand */ + request = start_operand; + request_space(output, ¤t_column, request, 1); + p2 = p1; + while (*p2 && *p2 != ';' && *p2 != '\r' && *p2 != '\n') { + if (*p2 == '"') { + p2++; + while (*p2 && *p2 != '"') + p2++; + p2++; + } else if (*p2 == '\'') { + p2++; + while (*p2 && *p2 != '"') + p2++; + p2++; + } else { + p2++; + } + } + while (p2 > p1 && isspace(*(p2 - 1))) + p2--; + fwrite(p1, sizeof(char), p2 - p1, output); + current_column += p2 - p1; + p1 = p2; + while (*p1 && isspace(*p1)) + p1++; + } + } + if (*p1 == ';') { /* Comment */ + if (current_column == 0) + request = 0; + else if (current_column < start_mnemonic) + request = start_mnemonic; + else + request = start_comment; + if (current_column == 0 && align_comment == 1) + request = start_mnemonic; + request_space(output, ¤t_column, request, 0); + p2 = p1; + while (*p2 && *p2 != '\r' && *p2 != '\n') + p2++; + while (p2 > p1 && isspace(*(p2 - 1))) + p2--; + fwrite(p1, sizeof(char), p2 - p1, output); + fputc('\n', output); + current_column += p2 - p1; + while (*p++) ; + continue; + } + fputc('\n', output); + while (*p++) ; + } + fclose(output); + free(data); + exit(0); +} diff --git a/pretty6502.exe b/pretty6502.exe new file mode 100644 index 0000000000000000000000000000000000000000..cba50a8aa7afa03f71f029d39b545bb2c3ed52fa GIT binary patch literal 64000 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≫}xR?`wUz}=w* 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