From: borutr Date: Thu, 12 Jun 2008 05:24:24 +0000 (+0000) Subject: * sim/ucsim/cmd.src/info.cc, sim/ucsim/cmd.src/bp.cc, X-Git-Url: https://git.gag.com/?p=fw%2Fsdcc;a=commitdiff_plain;h=fca88f56fdc29aeb56aa4b9ff7195c9a69adf034 * sim/ucsim/cmd.src/info.cc, sim/ucsim/cmd.src/bp.cc, sim/ucsim/xa.src/xa.cc, sim/ucsim/xa.src/xacl.h, sim/ucsim/z80.src/z80cl.h, sim/ucsim/z80.src/z80.cc, sim/ucsim/sim.src/uc.cc, sim/ucsim/sim.src/uccl.h, sim/ucsim/hc08.src/hc08.cc, sim/ucsim/hc08.src/hc08cl.h, sim/ucsim/s51.src/uc51cl.h, sim/ucsim/s51.src/uc390.cc, sim/ucsim/s51.src/uc51.cc, sim/ucsim/s51.src/uc390cl.h, sim/ucsim/avr.src/avrcl.h, sim/ucsim/avr.src/avr.cc: fixed bug 1990586: s51 simulator, uc::disass() unimplemented by applying the modified patch from Risto Huotari git-svn-id: https://sdcc.svn.sourceforge.net/svnroot/sdcc/trunk/sdcc@5194 4a8a32a2-be11-0410-ad9d-d568d2c75423 --- diff --git a/ChangeLog b/ChangeLog index 9755162b..28372e8f 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,16 @@ +2008-06-12 Borut Razem + + * sim/ucsim/cmd.src/info.cc, sim/ucsim/cmd.src/bp.cc, + sim/ucsim/xa.src/xa.cc, sim/ucsim/xa.src/xacl.h, + sim/ucsim/z80.src/z80cl.h, sim/ucsim/z80.src/z80.cc, + sim/ucsim/sim.src/uc.cc, sim/ucsim/sim.src/uccl.h, + sim/ucsim/hc08.src/hc08.cc, sim/ucsim/hc08.src/hc08cl.h, + sim/ucsim/s51.src/uc51cl.h, sim/ucsim/s51.src/uc390.cc, + sim/ucsim/s51.src/uc51.cc, sim/ucsim/s51.src/uc390cl.h, + sim/ucsim/avr.src/avrcl.h, sim/ucsim/avr.src/avr.cc: + fixed bug 1990586: s51 simulator, uc::disass() unimplemented + by applying the modified patch from Risto Huotari + 2008-06-04 Maarten Brock * .version, diff --git a/sim/ucsim/avr.src/avr.cc b/sim/ucsim/avr.src/avr.cc index dbf3b72e..3b021e5c 100644 --- a/sim/ucsim/avr.src/avr.cc +++ b/sim/ucsim/avr.src/avr.cc @@ -2,7 +2,7 @@ * Simulator of microcontrollers (avr.cc) * * Copyright (C) 1999,99 Drotos Daniel, Talker Bt. - * + * * To contact author send email to drdani@mazsola.iit.uni-miskolc.hu * */ @@ -168,8 +168,8 @@ cl_avr::bit_tbl(void) return(0); } -char * -cl_avr::disass(t_addr addr, char *sep) +const char * +cl_avr::disass(t_addr addr, const char *sep) { char work[256], temp[20]; const char *b; @@ -178,7 +178,7 @@ cl_avr::disass(t_addr addr, char *sep) int i; p= work; - + code= get_mem(MEM_ROM_ID, addr); i= 0; while ((code & dis_tbl()[i].mask) != dis_tbl()[i].code && @@ -646,7 +646,7 @@ cl_avr::push_data(t_mem data) { t_addr sp; t_mem spl, sph; - + spl= ram->read(SPL); sph= ram->read(SPH); sp= 0xffff & (256*sph + spl); @@ -664,7 +664,7 @@ cl_avr::push_addr(t_addr addr) { t_addr sp; t_mem spl, sph, al, ah; - + spl= ram->read(SPL); sph= ram->read(SPH); sp= 0xffff & (256*sph + spl); @@ -718,7 +718,7 @@ cl_avr::pop_addr(t_addr *addr) sph= (sp>>8) & 0xff; ram->write(SPL, spl); ram->write(SPH, sph); - + return(resGO); } diff --git a/sim/ucsim/avr.src/avrcl.h b/sim/ucsim/avr.src/avrcl.h index 0e82e492..e6926400 100644 --- a/sim/ucsim/avr.src/avrcl.h +++ b/sim/ucsim/avr.src/avrcl.h @@ -2,7 +2,7 @@ * Simulator of microcontrollers (avrcl.h) * * Copyright (C) 1999,99 Drotos Daniel, Talker Bt. - * + * * To contact author send email to drdani@mazsola.iit.uni-miskolc.hu * */ @@ -56,7 +56,7 @@ public: virtual struct dis_entry *dis_tbl(void); virtual struct name_entry *sfr_tbl(void); virtual struct name_entry *bit_tbl(void); - virtual char *disass(t_addr addr, char *sep); + virtual const char *disass(t_addr addr, const char *sep); virtual void print_regs(class cl_console_base *con); virtual int exec_inst(void); diff --git a/sim/ucsim/cmd.src/bp.cc b/sim/ucsim/cmd.src/bp.cc index bc31d24b..202eb17d 100644 --- a/sim/ucsim/cmd.src/bp.cc +++ b/sim/ucsim/cmd.src/bp.cc @@ -2,7 +2,7 @@ * Simulator of microcontrollers (cmd.src/bp.cc) * * Copyright (C) 1999,99 Drotos Daniel, Talker Bt. - * + * * To contact author send email to drdani@mazsola.iit.uni-miskolc.hu * */ @@ -107,9 +107,9 @@ cl_break_cmd::do_fetch(class cl_uc *uc, addr, perm, hit); b->init(); uc->fbrk->add_bp(b); - char *s= uc->disass(addr, NULL); + const char *s= uc->disass(addr, NULL); con->dd_printf("Breakpoint %d at 0x%06x: %s\n", b->nr, addr, s); - free(s); + free((char *)s); } } diff --git a/sim/ucsim/cmd.src/info.cc b/sim/ucsim/cmd.src/info.cc index 077c7327..fbdc1f95 100644 --- a/sim/ucsim/cmd.src/info.cc +++ b/sim/ucsim/cmd.src/info.cc @@ -2,7 +2,7 @@ * Simulator of microcontrollers (cmd.src/info.cc) * * Copyright (C) 1999,99 Drotos Daniel, Talker Bt. - * + * * To contact author send email to drdani@mazsola.iit.uni-miskolc.hu * */ @@ -30,7 +30,7 @@ Software Foundation, 59 Temple Place - Suite 330, Boston, MA // sim.src #include "simcl.h" - + // local #include "infocl.h" @@ -45,18 +45,17 @@ Software Foundation, 59 Temple Place - Suite 330, Boston, MA COMMAND_DO_WORK_UC(cl_info_bp_cmd) { int i; - char *s; con->dd_printf("Num Type Disp Hit Cnt Address What\n"); for (i= 0; i < uc->fbrk->count; i++) { class cl_brk *fb= (class cl_brk *)(uc->fbrk->at(i)); - s= uc->disass(fb->addr, NULL); + const char *s= uc->disass(fb->addr, NULL); con->dd_printf("%-3d %-10s %s %-5d %-5d 0x%06x %s\n", fb->nr, "fetch", (fb->perm==brkFIX)?"keep":"del ", fb->hit, fb->cnt, fb->addr, s); - free(s); + free((char *)s); } for (i= 0; i < uc->ebrk->count; i++) { diff --git a/sim/ucsim/hc08.src/hc08.cc b/sim/ucsim/hc08.src/hc08.cc index ed318ea1..2028ee13 100644 --- a/sim/ucsim/hc08.src/hc08.cc +++ b/sim/ucsim/hc08.src/hc08.cc @@ -2,9 +2,9 @@ * Simulator of microcontrollers (hc08.cc) * * some hc08 code base from Karl Bongers karl@turbobit.com - * + * * Copyright (C) 1999,99 Drotos Daniel, Talker Bt. - * + * * To contact author send email to drdani@mazsola.iit.uni-miskolc.hu * */ @@ -262,7 +262,7 @@ cl_hc08::get_disasm_info(t_addr addr, } const char * -cl_hc08::disass(t_addr addr, char *sep) +cl_hc08::disass(t_addr addr, const char *sep) { char work[256], temp[20]; const char *b; @@ -273,7 +273,7 @@ cl_hc08::disass(t_addr addr, char *sep) p= work; b = get_disasm_info(addr, &len, NULL, &immed_offset); - + if (b == NULL) { buf= (char*)malloc(30); strcpy(buf, "UNKNOWN/INVALID"); @@ -390,7 +390,7 @@ cl_hc08::print_regs(class cl_console_base *con) con->dd_printf("SP= 0x%04x [SP+1]= %02x %3d %c\n", regs.SP, ram->get(regs.SP+1), ram->get(regs.SP+1), isprint(ram->get(regs.SP+1))?ram->get(regs.SP+1):'.'); - + print_disass(PC, con); } @@ -539,7 +539,7 @@ cl_hc08::exec_inst(void) } default: return(resHALT); } - + } case 0xa: case 0xb: diff --git a/sim/ucsim/hc08.src/hc08cl.h b/sim/ucsim/hc08.src/hc08cl.h index 1cc69719..debabedd 100644 --- a/sim/ucsim/hc08.src/hc08cl.h +++ b/sim/ucsim/hc08.src/hc08cl.h @@ -2,7 +2,7 @@ * Simulator of microcontrollers (hc08cl.h) * * Copyright (C) 1999,99 Drotos Daniel, Talker Bt. - * + * * To contact author send email to drdani@mazsola.iit.uni-miskolc.hu * */ @@ -56,7 +56,7 @@ public: virtual int inst_length(t_addr addr); virtual int inst_branch(t_addr addr); virtual int longest_inst(void); - virtual const char *disass(t_addr addr, char *sep); + virtual const char *disass(t_addr addr, const char *sep); virtual void print_regs(class cl_console_base *con); virtual int exec_inst(void); diff --git a/sim/ucsim/s51.src/uc390.cc b/sim/ucsim/s51.src/uc390.cc index c2587874..a81420dd 100644 --- a/sim/ucsim/s51.src/uc390.cc +++ b/sim/ucsim/s51.src/uc390.cc @@ -1080,8 +1080,8 @@ cl_uc390::dis_tbl (void) } -char * -cl_uc390::disass (t_addr addr, char *sep) +const char * +cl_uc390::disass (t_addr addr, const char *sep) { char work[256], temp[20], c[2]; const char *b; diff --git a/sim/ucsim/s51.src/uc390cl.h b/sim/ucsim/s51.src/uc390cl.h index 009487f0..20b4736c 100644 --- a/sim/ucsim/s51.src/uc390cl.h +++ b/sim/ucsim/s51.src/uc390cl.h @@ -73,7 +73,7 @@ public: /* mods for disassembly of flat24 */ virtual struct dis_entry *dis_tbl(void); - virtual char * disass(t_addr addr, char *sep); + virtual const char * disass(t_addr addr, const char *sep); virtual void print_regs(class cl_console_base *con); protected: diff --git a/sim/ucsim/s51.src/uc51.cc b/sim/ucsim/s51.src/uc51.cc index 29012a27..1bb4eb67 100644 --- a/sim/ucsim/s51.src/uc51.cc +++ b/sim/ucsim/s51.src/uc51.cc @@ -2,7 +2,7 @@ * Simulator of microcontrollers (uc51.cc) * * Copyright (C) 1999,99 Drotos Daniel, Talker Bt. - * + * * To contact author send email to drdani@mazsola.iit.uni-miskolc.hu * */ @@ -314,8 +314,8 @@ cl_51core::bit_tbl(void) return(bit_tab51); } -char * -cl_51core::disass(t_addr addr, char *sep) +const char * +cl_51core::disass(t_addr addr, const char *sep) { char work[256], temp[20], c[2]; const char *b; @@ -440,7 +440,7 @@ cl_51core::print_regs(class cl_console_base *con) iram->get(start), data, isprint(data)?data:'.'); con->dd_printf(" ACC= 0x%02x %3d %c B= 0x%02x", sfr->get(ACC), sfr->get(ACC), - isprint(sfr->get(ACC))?(sfr->get(ACC)):'.', sfr->get(B)); + isprint(sfr->get(ACC))?(sfr->get(ACC)):'.', sfr->get(B)); //eram2xram(); data= xram->get(sfr->get(DPH)*256+sfr->get(DPL)); con->dd_printf(" DPTR= 0x%02x%02x @DPTR= 0x%02x %3d %c\n", sfr->get(DPH), @@ -544,7 +544,7 @@ void cl_51core::clear_sfr(void) { int i; - + for (i= 0x80; i <= 0xff; i++) sfr->set(i, 0); sfr->/*set*/write(P0, 0xff); @@ -938,7 +938,7 @@ cl_51core::do_inst(int step) { //fprintf(stderr,"uc: inp avail in PD mode, user stop\n"); result= resUSER; - sim->stop(result); + sim->stop(result); } } return(result); diff --git a/sim/ucsim/s51.src/uc51cl.h b/sim/ucsim/s51.src/uc51cl.h index e961385e..aeaa23e6 100644 --- a/sim/ucsim/s51.src/uc51cl.h +++ b/sim/ucsim/s51.src/uc51cl.h @@ -2,7 +2,7 @@ * Simulator of microcontrollers (uc51cl.h) * * Copyright (C) 1999,99 Drotos Daniel, Talker Bt. - * + * * To contact author send email to drdani@mazsola.iit.uni-miskolc.hu * */ @@ -14,12 +14,12 @@ it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. - + UCSIM is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. - + You should have received a copy of the GNU General Public License along with UCSIM; see the file COPYING. If not, write to the Free Software Foundation, 59 Temple Place - Suite 330, Boston, MA @@ -98,7 +98,7 @@ public: virtual struct dis_entry *dis_tbl(void); virtual struct name_entry *sfr_tbl(void); virtual struct name_entry *bit_tbl(void); - virtual char *disass(t_addr addr, char *sep); + virtual const char *disass(t_addr addr, const char *sep); virtual void print_regs(class cl_console_base *con); virtual class cl_address_space *bit2mem(t_addr bitaddr, t_addr *memaddr, t_mem *bitmask); diff --git a/sim/ucsim/sim.src/uc.cc b/sim/ucsim/sim.src/uc.cc index 4550bb09..2361bf44 100644 --- a/sim/ucsim/sim.src/uc.cc +++ b/sim/ucsim/sim.src/uc.cc @@ -2,7 +2,7 @@ * Simulator of microcontrollers (uc.cc) * * Copyright (C) 1999,99 Drotos Daniel, Talker Bt. - * + * * To contact author send email to drdani@mazsola.iit.uni-miskolc.hu * */ @@ -248,7 +248,7 @@ cl_uc::reset(void) } sp_max= 0; sp_avg= 0; - + stack_ops->free_all(); int i; @@ -460,22 +460,22 @@ cmd->init();*/ cset= new cl_cmdset(); cset->init(); } - cset->add(cmd= new cl_info_bp_cmd("breakpoints", 0, + cset->add(cmd= new cl_info_bp_cmd("breakpoints", 0, "info breakpoints Status of user-settable breakpoints", "long help of info breakpoints")); cmd->add_name("bp"); cmd->init(); - cset->add(cmd= new cl_info_reg_cmd("registers", 0, + cset->add(cmd= new cl_info_reg_cmd("registers", 0, "info registers List of integer registers and their contents", "long help of info registers")); cmd->init(); - cset->add(cmd= new cl_info_hw_cmd("hardware", 0, + cset->add(cmd= new cl_info_hw_cmd("hardware", 0, "info hardware cathegory\n" " Status of hardware elements of the CPU", "long help of info hardware")); cmd->add_name("hw"); cmd->init(); - cset->add(cmd= new cl_info_stack_cmd("stack", 0, + cset->add(cmd= new cl_info_stack_cmd("stack", 0, "info stack Status of stack of the CPU", "long help of info stack")); cmd->init(); @@ -632,7 +632,7 @@ class cl_memory * cl_uc::mem(enum mem_class type) { class cl_m *m; - + if (mems->count < type) m= (class cl_m *)(mems->at(MEM_DUMMY)); else @@ -711,7 +711,7 @@ ReadInt(FILE *f, bool *ok, int bytes) } -/* +/* * Reading intel hexa file into EROM *____________________________________________________________________________ * @@ -975,7 +975,7 @@ cl_uc::get_hw(enum hw_cath cath, int hwid, int *idx) i++; hw= get_hw(cath, &i); } - if (hw && + if (hw && idx) *idx= i; return(hw); @@ -996,7 +996,7 @@ cl_uc::get_hw(char *id_string, int hwid, int *idx) i++; hw= get_hw(id_string, &i); } - if (hw && + if (hw && idx) *idx= i; return(hw); @@ -1028,7 +1028,7 @@ cl_uc::bit_tbl(void) return(&empty); } -char * +const char * cl_uc::disass(t_addr addr, const char *sep) { char *buf; @@ -1041,7 +1041,7 @@ cl_uc::disass(t_addr addr, const char *sep) void cl_uc::print_disass(t_addr addr, class cl_console_base *con) { - char *dis; + const char *dis; class cl_brk *b; int i; @@ -1073,7 +1073,7 @@ cl_uc::print_disass(t_addr addr, class cl_console_base *con) i++; } con->dd_printf(" %s\n", dis); - free(dis); + free((char *)dis); } void @@ -1464,7 +1464,7 @@ void cl_uc::del_counter(char *nam) { int i; - + if (!nam) return; for (i= 0; i < counters->count; i++) @@ -1489,7 +1489,7 @@ t_mem cl_uc::fetch(void) { ulong code; - + if (!rom) return(0); @@ -1618,7 +1618,7 @@ void cl_uc::stack_read(class cl_stack_op *op) { class cl_stack_op *top= (class cl_stack_op *)(stack_ops->top()); - + if (op->get_op() & stack_write_operation) { class cl_error_stack_tracker_wrong_handle *e= new @@ -1677,7 +1677,7 @@ cl_uc::stack_read(class cl_stack_op *op) top?(top->get_pc()):0, top?(top->get_before()):0, op->get_after()); } - + if (top) { int ta= top->get_after(), oa= op->get_after(); @@ -1694,7 +1694,7 @@ cl_uc::stack_read(class cl_stack_op *op) error(e); } } - + delete op; } @@ -1707,7 +1707,7 @@ class cl_fetch_brk * cl_uc::fbrk_at(t_addr addr) { int idx; - + return((class cl_fetch_brk *)(fbrk->get_bp(addr, &idx))); } diff --git a/sim/ucsim/sim.src/uccl.h b/sim/ucsim/sim.src/uccl.h index 54f4f605..d39622b2 100644 --- a/sim/ucsim/sim.src/uccl.h +++ b/sim/ucsim/sim.src/uccl.h @@ -2,7 +2,7 @@ * Simulator of microcontrollers (sim.src/uccl.h) * * Copyright (C) 1999,99 Drotos Daniel, Talker Bt. - * + * * To contact author send email to drdani@mazsola.iit.uni-miskolc.hu * */ @@ -55,7 +55,7 @@ public: cl_ticker(int adir, int in_isr, const char *aname); virtual ~cl_ticker(void); - + virtual int tick(int nr); virtual double get_rtime(double xtal); virtual void dump(int nr, double xtal, class cl_console_base *con); @@ -98,7 +98,7 @@ public: class cl_sim *sim; //class cl_list *mems; class cl_hws *hws; - + class cl_list *memchips; // v3 class cl_address_space_list *address_spaces; class cl_address_space *rom; // Required for almost every uc @@ -197,7 +197,7 @@ public: virtual void check_events(void); // disassembling and symbol recognition - virtual char *disass(t_addr addr, const char *sep); + virtual const char *disass(t_addr addr, const char *sep); virtual struct dis_entry *dis_tbl(void); virtual struct name_entry *sfr_tbl(void); virtual struct name_entry *bit_tbl(void); @@ -221,7 +221,7 @@ public: virtual t_addr bit_address(class cl_memory *mem, t_addr mem_address, int bit_number) { return(-1); } - + // messages from app to handle and broadcast virtual bool handle_event(class cl_event &event); //virtual void mem_cell_changed(class cl_address_space *mem, t_addr addr); @@ -230,7 +230,7 @@ public: // Error handling virtual void error(class cl_error *error); virtual void check_errors(void); - + /* Following fields and virtual methods defined in uc51 I don't have energy to redesign them:-( */ public: diff --git a/sim/ucsim/xa.src/xa.cc b/sim/ucsim/xa.src/xa.cc index 4f20da91..23fa5ea2 100644 --- a/sim/ucsim/xa.src/xa.cc +++ b/sim/ucsim/xa.src/xa.cc @@ -335,8 +335,8 @@ disass - Disassemble an opcode. addr - address of opcode to disassemble/print. sep - optionally points to string(tab) to use as separator. |--------------------------------------------------------------------*/ -char * -cl_xa::disass(t_addr addr, char *sep) +const char * +cl_xa::disass(t_addr addr, const char *sep) { char work[256], parm_str[40]; char *buf, *p, *b; @@ -423,15 +423,15 @@ cl_xa::disass(t_addr addr, char *sep) break; case DIRECT_REG : sprintf(parm_str, "%s,%s", - get_dir_name(((code & 0x7) << 8) | + get_dir_name(((code & 0x7) << 8) | get_mem(MEM_ROM_ID, addr+immed_offset)), reg_strs[((code >> 4) & 0xf)] ); ++immed_offset; break; case REG_DIRECT : sprintf(parm_str, "%s,%s", - reg_strs[((code >> 4) & 0xf)], - get_dir_name(((code & 0x7) << 8) | + reg_strs[((code >> 4) & 0xf)], + get_dir_name(((code & 0x7) << 8) | get_mem(MEM_ROM_ID, addr+immed_offset))); ++immed_offset; break; @@ -511,14 +511,14 @@ cl_xa::disass(t_addr addr, char *sep) break; case DIRECT_DATA8 : sprintf(parm_str, "%s,#0x%02x", - get_dir_name(((code & 0x0070) << 4) | + get_dir_name(((code & 0x0070) << 4) | get_mem(MEM_ROM_ID, addr+immed_offset)), get_mem(MEM_ROM_ID, addr+immed_offset+1)); immed_offset += 3; break; case DIRECT_DATA16 : sprintf(parm_str, "%s,#0x%04x", - get_dir_name(((code & 0x0070) << 4) | + get_dir_name(((code & 0x0070) << 4) | get_mem(MEM_ROM_ID, addr+immed_offset)), get_mem(MEM_ROM_ID, addr+immed_offset+2) + (get_mem(MEM_ROM_ID, addr+immed_offset+1)<<8)); @@ -530,11 +530,11 @@ cl_xa::disass(t_addr addr, char *sep) strcpy(parm_str, ""); break; case CY_BIT : - sprintf(parm_str, "C,%s", + sprintf(parm_str, "C,%s", get_bit_name(((code&0x0003)<<8) + get_mem(MEM_ROM_ID, addr+2))); break; case BIT_CY : - sprintf(parm_str, "%s,C", + sprintf(parm_str, "%s,C", get_bit_name(((code&0x0003)<<8) + get_mem(MEM_ROM_ID, addr+2))); break; case REG_DATA4 : @@ -563,7 +563,7 @@ cl_xa::disass(t_addr addr, char *sep) break; case DIRECT : sprintf(parm_str, "%s", - get_dir_name(((code & 0x007) << 4) + + get_dir_name(((code & 0x007) << 4) + get_mem(MEM_ROM_ID, addr+2))); break; case REG : @@ -587,9 +587,9 @@ cl_xa::disass(t_addr addr, char *sep) sprintf(parm_str, "#0x%02x", code&0x0f); break; case ADDR24 : - sprintf(parm_str, "0x%06x", - (get_mem(MEM_ROM_ID, addr+3)<<16) + - (get_mem(MEM_ROM_ID, addr+1)<<8) + + sprintf(parm_str, "0x%06x", + (get_mem(MEM_ROM_ID, addr+3)<<16) + + (get_mem(MEM_ROM_ID, addr+1)<<8) + get_mem(MEM_ROM_ID, addr+2)); break; break; @@ -671,7 +671,7 @@ cl_xa::disass(t_addr addr, char *sep) case REG_DIRECT_REL8 : sprintf(parm_str, "%s,%s,0x%02x", reg_strs[((code >> 4) & 0xf)], - get_dir_name(((code & 0x7) << 8) + + get_dir_name(((code & 0x7) << 8) + get_mem(MEM_ROM_ID, addr+immed_offset)), ((signed char) get_mem(MEM_ROM_ID, addr+immed_offset+1) * 2) & 0xfffe ); break; @@ -711,14 +711,14 @@ cl_xa::disass(t_addr addr, char *sep) break; case REG_REGOFF8 : - sprintf(parm_str, "%s,%s+0x%02x", + sprintf(parm_str, "%s,%s+0x%02x", w_reg_strs[(code >> 4) & 0x7], w_reg_strs[code & 0x7], get_mem(MEM_ROM_ID, addr+immed_offset)); break; case REG_REGOFF16 : - sprintf(parm_str, "%s,%s+0x%02x", + sprintf(parm_str, "%s,%s+0x%02x", w_reg_strs[(code >> 4) & 0x7], w_reg_strs[code & 0x7], get_mem(MEM_ROM_ID, addr+immed_offset+1) + diff --git a/sim/ucsim/xa.src/xacl.h b/sim/ucsim/xa.src/xacl.h index 172f9235..cc872437 100644 --- a/sim/ucsim/xa.src/xacl.h +++ b/sim/ucsim/xa.src/xacl.h @@ -82,7 +82,7 @@ public: int *parms, int *mnemonic); - virtual char *disass(t_addr addr, char *sep); + virtual const char *disass(t_addr addr, const char *sep); virtual void print_regs(class cl_console_base *con); virtual int exec_inst(void); diff --git a/sim/ucsim/z80.src/z80.cc b/sim/ucsim/z80.src/z80.cc index 0c1af70c..a13a6bb8 100644 --- a/sim/ucsim/z80.src/z80.cc +++ b/sim/ucsim/z80.src/z80.cc @@ -2,9 +2,9 @@ * Simulator of microcontrollers (z80.cc) * * some z80 code base from Karl Bongers karl@turbobit.com - * + * * Copyright (C) 1999,99 Drotos Daniel, Talker Bt. - * + * * To contact author send email to drdani@mazsola.iit.uni-miskolc.hu * */ @@ -309,7 +309,7 @@ cl_z80::get_disasm_info(t_addr addr, } const char * -cl_z80::disass(t_addr addr, char *sep) +cl_z80::disass(t_addr addr, const char *sep) { char work[256], temp[20]; const char *b; @@ -320,7 +320,7 @@ cl_z80::disass(t_addr addr, char *sep) p= work; b = get_disasm_info(addr, &len, NULL, &immed_offset); - + if (b == NULL) { buf= (char*)malloc(30); strcpy(buf, "UNKNOWN/INVALID"); @@ -419,7 +419,7 @@ cl_z80::print_regs(class cl_console_base *con) con->dd_printf("SP= 0x%04x [SP]= %02x %3d %c\n", regs.SP, ram->get(regs.SP), ram->get(regs.SP), isprint(ram->get(regs.SP))?ram->get(regs.SP):'.'); - + print_disass(PC, con); } @@ -507,7 +507,7 @@ cl_z80::exec_inst(void) case 0x70: case 0x71: case 0x72: case 0x73: case 0x74: case 0x75: case 0x77: case 0x78: case 0x79: case 0x7a: case 0x7b: case 0x7c: case 0x7d: case 0x7e: case 0x7f: return(inst_ld(code)); - case 0x76: + case 0x76: return(inst_halt(code)); case 0x80: case 0x81: case 0x82: case 0x83: case 0x84: case 0x85: case 0x86: case 0x87: diff --git a/sim/ucsim/z80.src/z80cl.h b/sim/ucsim/z80.src/z80cl.h index 2010d48c..c8544ee4 100644 --- a/sim/ucsim/z80.src/z80cl.h +++ b/sim/ucsim/z80.src/z80cl.h @@ -2,7 +2,7 @@ * Simulator of microcontrollers (z80cl.h) * * Copyright (C) 1999,99 Drotos Daniel, Talker Bt. - * + * * To contact author send email to drdani@mazsola.iit.uni-miskolc.hu * */ @@ -56,7 +56,7 @@ public: virtual int inst_length(t_addr addr); virtual int inst_branch(t_addr addr); virtual int longest_inst(void); - virtual const char *disass(t_addr addr, char *sep); + virtual const char *disass(t_addr addr, const char *sep); virtual void print_regs(class cl_console_base *con); virtual int exec_inst(void);