X-Git-Url: http://gitweb.hugovil.com/?a=blobdiff_plain;ds=sidebyside;f=src%2Fcli%2Fparser.y;h=dc4261357bad50bfa6a515948f67ac980ad9d9aa;hb=9cd867c94aabb48f44658a7a4d6832115c876b74;hp=00338b3a049d9bf39d81e9c476509533fc8d920c;hpb=c7d14532b034286e990bc28c994fa20b23aca95a;p=emu8051.git diff --git a/src/cli/parser.y b/src/cli/parser.y index 00338b3..dc42613 100644 --- a/src/cli/parser.y +++ b/src/cli/parser.y @@ -9,6 +9,7 @@ #include "menu.h" #include "memory.h" #include "timers.h" +#include "memory.h" #include "cpu8051.h" /* int yydebug = 1; */ @@ -18,16 +19,23 @@ int yylex(); int yyerror(const char *str) { - fprintf(stderr,"error: %s\n", str); + fprintf(stderr,"error: %s\n", str); return 0; } %} -%token NUMBER TOK_ENTER TOK_ALL +%union +{ + int number; + char *string; +} + +%token NUMBER +%token WORD +%token TOK_ENTER TOK_ALL %token TOK_SB TOK_RB TOK_DB %token TOK_DE TOK_DI TOK_DP TOK_DR -%token TOK_PC %token TOK_HELP %token TOK_RUN %token TOK_RST TOK_RST_TIMER @@ -35,33 +43,27 @@ int yyerror(const char *str) %token TOK_UNASM %token TOK_MOD_EXT TOK_MOD_INT TOK_MOD_PROG TOK_MOD_REG %token TOK_QUIT +%token TOK_A TOK_B TOK_C TOK_D %% -start : start command { menu_prompt(); } +start : start command | error TOK_ENTER { /* In case of error, discard entire line */ yyerrok; - menu_prompt(); } - | start TOK_ENTER { menu_prompt(); } + | start TOK_ENTER | ; command: - pc_set - | breakpoint_clr | breakpoint_set | breakpoint_display | - dump_ext_mem - | - dump_int_mem - | - dump_prog_mem + dump_mem | display_regs | @@ -84,66 +86,62 @@ breakpoint_clr: TOK_RB NUMBER TOK_ENTER { log_debug(" Remove breakpoint at $%04X", $2); - ClearBreakpoint($2); + breakpoint_clr($2); } | TOK_RB TOK_ENTER { log_debug(" Remove breakpoint at PC"); - ClearBreakpoint(cpu8051.pc); + breakpoint_clr(cpu8051.pc); } | TOK_RB TOK_ALL TOK_ENTER { log_debug(" Remove all breakpoints"); - ClearAllBreakpoints(); + breakpoints_clr_all(); } ; breakpoint_set: TOK_SB TOK_ENTER { - log_debug(" Set breakpoint at current PC"); - SetBreakpoint(cpu8051.pc); + log_debug(" Set breakpoint at PC"); + breakpoint_set(cpu8051.pc); } | TOK_SB NUMBER TOK_ENTER { log_debug(" Set breakpoint at $%04X", $2); - SetBreakpoint($2); - } + breakpoint_set($2); + } ; breakpoint_display: TOK_DB TOK_ENTER { log_debug(" Display breakpoints"); - ShowBreakpoints(); + breakpoints_show(); } ; -dump_ext_mem: +dump_mem: TOK_DE NUMBER NUMBER TOK_ENTER { log_debug(" Dump External Data Memory at $%04X, len %d", $2, $3); - DumpMem($2, $3, EXT_MEM_ID); + mem_dump($2, $3, EXT_MEM_ID); } - ; - -dump_int_mem: + | TOK_DI NUMBER NUMBER TOK_ENTER { log_debug(" Dump Internal Data Memory at $%04X, len %d", $2, $3); - DumpMem($2, $3, INT_MEM_ID); + mem_dump($2, $3, INT_MEM_ID); } - ; - -dump_prog_mem: + | TOK_DP NUMBER NUMBER TOK_ENTER { log_debug(" Dump Program Memory at $%04X, len %d", $2, $3); - DumpMem($2, $3, PGM_MEM_ID); + mem_dump($2, $3, PGM_MEM_ID); } ; @@ -159,25 +157,24 @@ modify: TOK_MOD_EXT NUMBER NUMBER TOK_ENTER { log_debug(" Modify external memory"); - memory_write8(EXT_MEM_ID, $2, $3); + mem_write8(EXT_MEM_ID, $2, $3); } | TOK_MOD_INT NUMBER NUMBER TOK_ENTER { log_debug(" Modify internal memory"); - memory_write8(INT_MEM_ID, $2, $3); + mem_write8(INT_MEM_ID, $2, $3); } | TOK_MOD_PROG NUMBER NUMBER TOK_ENTER { log_debug(" Modify program memory"); - memory_write8(PGM_MEM_ID, $2, $3); + mem_write8(PGM_MEM_ID, $2, $3); } | - TOK_MOD_REG "pc" NUMBER TOK_ENTER + TOK_MOD_REG WORD NUMBER TOK_ENTER { - log_debug(" Modify register"); - SetRegister("PC", $2); + register_set($2, $3); } ; @@ -203,13 +200,6 @@ run: } ; -pc_set: - TOK_PC NUMBER TOK_ENTER - { - cpu8051.pc = $2; - } - ; - help: TOK_HELP TOK_ENTER { @@ -220,12 +210,27 @@ help: reset: TOK_RST TOK_ENTER { - cpu8051_Reset(); + cpu8051_reset(); + } + | + TOK_RST_TIMER TOK_A TOK_ENTER + { + gp_timer_reset(0); + } + | + TOK_RST_TIMER TOK_B TOK_ENTER + { + gp_timer_reset(1); + } + | + TOK_RST_TIMER TOK_C TOK_ENTER + { + gp_timer_reset(2); } | - TOK_RST_TIMER TOK_ENTER + TOK_RST_TIMER TOK_D TOK_ENTER { - gp_timer_reset(); + gp_timer_reset(3); } ; @@ -239,18 +244,18 @@ step: unasm: TOK_UNASM NUMBER NUMBER TOK_ENTER { - DisasmN($2, $3); + disassemble_num($2, $3); } | TOK_UNASM NUMBER TOK_ENTER { - DisasmN(cpu8051.pc, $2); + disassemble_num(cpu8051.pc, $2); } ; | TOK_UNASM TOK_ENTER { - DisasmN(cpu8051.pc, 16); + disassemble_num(cpu8051.pc, 16); } ;