diff options
Diffstat (limited to 'asmmon.c')
-rw-r--r-- | asmmon.c | 23 |
1 files changed, 8 insertions, 15 deletions
@@ -181,7 +181,6 @@ void list(uint16_t start, uint16_t end, uint8_t all, uint8_t ln, uint8_t addr, u } if (flags & 0x20) { printf("%s", symbols[tokline[i].sym]->name); - /*get_symname(tokline[i].sym, 0));*/ if (tokline[i].islabel) { printf(": "); } else if (tokline[i].issym) { @@ -363,13 +362,11 @@ uint64_t assemble(uint8_t dbg) { opsize = 0; skip = 0; if ((flags & 0x53) == 0x42) { - /*value = use_symbol("", symid, tmpaddr, 1, 0);*/ value = symbols[symid]->val; } else { value = tokline[i].op; } if ((flags & 0x51) == 0x41) { - /*value = use_symbol("", symid, tmpaddr, 1, 0);*/ value = symbols[symid]->val; } if (flags & 0x220) { @@ -583,23 +580,19 @@ int asmmon(const char *fn) { uint8_t dbg = 0; init_symbol(); while (!done) { - /*char *buf = NULL;*/ char *cmd; char *arg = malloc(sizeof(char *)*128); char *tmp = malloc(sizeof(char *)*128); - char *lex_line = NULL; - size_t size; - ssize_t line_len; + char lex_line[0x1000]; + uint16_t size = 0; uint8_t cmds = 0; - /* Is shortend command. */ + uint8_t dummy = 0; + /* Is single character command. */ uint8_t isshcmd = 0; - if (!strcasecmp(fn, "stdin")) { - line_len = getline(&lex_line, &size, stdin); - } else { - line_len = getline(&lex_line, &size, fp); - } - cmd = malloc(sizeof(char *)*(line_len+1)); - memcpy(cmd, lex_line, line_len+1); + fgets(lex_line, sizeof(lex_line), (!strcasecmp(fn, "stdin")) ? stdin : fp); + size = strlen(lex_line)+1; + cmd = malloc(size); + memcpy(cmd, lex_line, size); cmd = strtok_r(cmd, " \t\n", &tmp); if (cmd != NULL) { isshcmd = (cmd[1] == '\0' || cmd[1] == ' '); |