projects
/
fw
/
sdcc
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
*** empty log message ***
[fw/sdcc]
/
sim
/
ucsim
/
xa.src
/
xa.cc
diff --git
a/sim/ucsim/xa.src/xa.cc
b/sim/ucsim/xa.src/xa.cc
index e189643ff1e2dec16d1ab2de0ed876b599856542..cf2811b9ecce2a02c05c559e6bc508c2c6cad439 100644
(file)
--- a/
sim/ucsim/xa.src/xa.cc
+++ b/
sim/ucsim/xa.src/xa.cc
@@
-45,7
+45,6
@@
Software Foundation, 59 Temple Place - Suite 330, Boston, MA
#include "glob.h"
#include "regsxa.h"
#include "glob.h"
#include "regsxa.h"
-
/*
* Base type of xa controllers
*/
/*
* Base type of xa controllers
*/
@@
-63,8
+62,6
@@
cl_xa::init(void)
ram= mem(MEM_XRAM);
rom= mem(MEM_ROM);
ram= mem(MEM_XRAM);
rom= mem(MEM_ROM);
- wmem_direct = (TYPE_UWORD *) &mem_direct[0];
-
/* set SCR to osc/4, native XA mode, flat 24 */
set_scr(0);
/* initialize SP to 100H */
/* set SCR to osc/4, native XA mode, flat 24 */
set_scr(0);
/* initialize SP to 100H */
@@
-79,6
+76,17
@@
cl_xa::init(void)
return(0);
}
return(0);
}
+class cl_mem *
+cl_xa::mk_mem(enum mem_class type, char *class_name)
+{
+ class cl_mem *m= cl_uc::mk_mem(type, class_name);
+ if (type == MEM_SFR)
+ sfr= m;
+ if (type == MEM_IRAM)
+ iram= m;
+ return(m);
+}
+
char *
cl_xa::id_string(void)
{
char *
cl_xa::id_string(void)
{
@@
-95,6
+103,8
@@
cl_xa::get_mem_size(enum mem_class type)
{
switch(type)
{
{
switch(type)
{
+ case MEM_IRAM: return(0x2000);
+ case MEM_SFR: return(0x2000);
case MEM_ROM: return(0x10000);
case MEM_XRAM: return(0x10000);
default: return(0);
case MEM_ROM: return(0x10000);
case MEM_XRAM: return(0x10000);
default: return(0);
@@
-570,6
+580,14
@@
cl_xa::disass(t_addr addr, char *sep)
((signed char)get_mem(MEM_ROM, addr+immed_offset+2) * 2) & 0xfffe );
break;
((signed char)get_mem(MEM_ROM, addr+immed_offset+2) * 2) & 0xfffe );
break;
+ case A_APLUSDPTR :
+ strcpy(parm_str, "A, [A+DPTR]");
+ break;
+
+ case A_APLUSPC :
+ strcpy(parm_str, "A, [A+PC]");
+ break;
+
default:
strcpy(parm_str, "???");
break;
default:
strcpy(parm_str, "???");
break;
@@
-654,7
+672,7
@@
int cl_xa::exec_inst(void)
code = (code1 << 8);
i= 0;
while ( ((code & disass_xa[i].mask) != disass_xa[i].code ||
code = (code1 << 8);
i= 0;
while ( ((code & disass_xa[i].mask) != disass_xa[i].code ||
-
((disass_xa[i].mask & 0x00ff) != 0)) /*
one byte op code */
+
(!disass_xa[i].is1byte)) /* not a
one byte op code */
&&
disass_xa[i].mnemonic != BAD_OPCODE)
i++;
&&
disass_xa[i].mnemonic != BAD_OPCODE)
i++;