#include "menu.h"
#include "memory.h"
#include "timers.h"
+#include "memory.h"
#include "cpu8051.h"
/* int yydebug = 1; */
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> NUMBER
+%token <string> 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
%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
|
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);
}
;
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);
}
;
}
;
-pc_set:
- TOK_PC NUMBER TOK_ENTER
- {
- cpu8051.pc = $2;
- }
- ;
-
help:
TOK_HELP TOK_ENTER
{
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);
}
;
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);
}
;