aboutsummaryrefslogtreecommitdiff
path: root/listbas.c
diff options
context:
space:
mode:
Diffstat (limited to 'listbas.c')
-rw-r--r--listbas.c25
1 files changed, 15 insertions, 10 deletions
diff --git a/listbas.c b/listbas.c
index bac42c1..ee6b764 100644
--- a/listbas.c
+++ b/listbas.c
@@ -29,13 +29,15 @@
#define MAG_INV "{inv}"
#define MAG_NORM "{norm}"
-/* colors. don't use blue, it's fugly. */
+/* colors. */
#define NO_COLOR -1
#define C_RED 1
#define C_GREEN 2
#define C_YELLOW 3
+#define C_BLUE 4
#define C_PURPLE 5
#define C_CYAN 6
+#define C_WHITE 7
#define ENV_OPTS "LISTBAS_OPTS"
#define ENV_MAX_ARGS 64
@@ -60,7 +62,8 @@ int color_op = C_GREEN;
int color_func = C_PURPLE;
int color_const = C_RED;
int color_lineno = C_CYAN;
-int color_text = C_CYAN;
+int color_rem = C_BLUE;
+int color_data = C_CYAN;
int color_varnames = NO_COLOR;
int badtok = 0; /* set to 1 if we find a bad token */
@@ -82,16 +85,17 @@ int parse_color(char c) {
void parse_color_scheme(const char *arg) {
if(!arg) return;
- if(strlen(arg) != 7)
- die("Color scheme must be 7 characters.");
+ if(strlen(arg) != 8)
+ die("Color scheme must be 8 characters.");
color_cmd = parse_color(arg[0]);
color_op = parse_color(arg[1]);
color_func = parse_color(arg[2]);
color_const = parse_color(arg[3]);
color_lineno = parse_color(arg[4]);
- color_text = parse_color(arg[5]);
- color_varnames = parse_color(arg[6]);
+ color_rem = parse_color(arg[5]);
+ color_data = parse_color(arg[6]);
+ color_varnames = parse_color(arg[7]);
}
void print_help(void) {
@@ -357,13 +361,14 @@ void print_ata_chr(unsigned char c) {
void print_string(unsigned int pos, unsigned int len) {
inv = 0;
+ if(color) color_on(color_op);
outchr('"');
if(color) color_on(color_const);
while(len--) print_ata_chr(program[pos++]);
if(inv) {
end_inv(0);
}
- if(color) color_off();
+ if(color) color_on(color_op);
outchr('"');
}
@@ -446,18 +451,18 @@ CALLBACK(print_text) {
unsigned char c, is_data = program[pos - 1] == CMD_DATA, comma = 0;
inv = 0;
- if(color) color_on(color_text);
+ if(color) color_on(is_data ? color_data : color_rem);
while(program[pos] != 0x9b) {
c = program[pos++];
if(color && is_data && c == ',') {
- color_off();
+ color_on(color_op);
comma = 1;
} else {
comma = 0;
}
print_ata_chr(c);
if(comma)
- color_on(color_text);
+ color_on(is_data ? color_data : color_rem);
}
if(inv) end_inv(0);
if(color) color_off();