From 895133275cbe321634de7957397cda3403f22f54 Mon Sep 17 00:00:00 2001 From: bernhardheld Date: Sun, 11 Nov 2001 21:52:47 +0000 Subject: [PATCH] * sdcc/sim/ucsim/globals.cc: New: IXRAM. * sdcc/sim/ucsim/stypes.h: New: IXRAM. * sdcc/sim/ucsim/s51.src/uc390.cc: New: IXRAM. git-svn-id: https://sdcc.svn.sourceforge.net/svnroot/sdcc/trunk/sdcc@1570 4a8a32a2-be11-0410-ad9d-d568d2c75423 --- ChangeLog | 8 +++++++ sim/ucsim/globals.cc | 20 +++++++++-------- sim/ucsim/s51.src/uc390.cc | 46 +++++++++++++++++++++++++------------- sim/ucsim/stypes.h | 1 + 4 files changed, 51 insertions(+), 24 deletions(-) diff --git a/ChangeLog b/ChangeLog index 11b1f65a..eec0ac55 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,11 @@ +2001-11-07 Bernhard Held + + * sdcc/sim/ucsim/globals.cc: New: IXRAM. + + * sdcc/sim/ucsim/stypes.h: New: IXRAM. + + * sdcc/sim/ucsim/s51.src/uc390.cc: New: IXRAM. + 2001-11-07 Michael Hope * src/z80/ralloc.c (packRegsForHLUse): Banned IFXs from being packed into HL. diff --git a/sim/ucsim/globals.cc b/sim/ucsim/globals.cc index e37bfebd..516d059f 100644 --- a/sim/ucsim/globals.cc +++ b/sim/ucsim/globals.cc @@ -40,18 +40,20 @@ Software Foundation, 59 Temple Place - Suite 330, Boston, MA char delimiters[]= " ,;\t\r\n"; struct id_element mem_ids[]= { - { MEM_ROM , "ROM " }, - { MEM_XRAM, "XRAM" }, - { MEM_IRAM, "IRAM" }, - { MEM_SFR , "SFR " }, + { MEM_ROM , "ROM " }, + { MEM_XRAM , "XRAM " }, + { MEM_IRAM , "IRAM " }, + { MEM_SFR , "SFR " }, + { MEM_IXRAM, "IXRAM" }, { 0, 0 } }; struct id_element mem_classes[]= { - { MEM_ROM , "rom" }, - { MEM_XRAM, "xram" }, - { MEM_IRAM, "iram" }, - { MEM_SFR , "sfr" }, + { MEM_ROM , "rom" }, + { MEM_XRAM , "xram" }, + { MEM_IRAM , "iram" }, + { MEM_SFR , "sfr" }, + { MEM_IXRAM, "ixram" }, { 0, 0 } }; @@ -63,7 +65,7 @@ struct id_element cpu_states[]= { }; -char *warranty= +char *warranty= " NO WARRANTY 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY diff --git a/sim/ucsim/s51.src/uc390.cc b/sim/ucsim/s51.src/uc390.cc index 5fbfb867..e8e029fe 100644 --- a/sim/ucsim/s51.src/uc390.cc +++ b/sim/ucsim/s51.src/uc390.cc @@ -26,6 +26,15 @@ Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ /*@1@*/ + +// Bernhard's ToDo list: + +// - add sfr-descriptions to s51.src/glob.cc +// - implement math accelerator +// - consider ACON bits +// - proc_write_sp (*aof_SP); insert this at the appropriate places +// - buy some memory to run s51 with 2*4 Meg ROM/XRAM + #include "ddconfig.h" #include @@ -329,11 +338,13 @@ t_uc390::get_mem_size (enum mem_class type) case MEM_ROM: return 128*1024; // 4*1024*1024; 4 Meg possible case MEM_XRAM: - return 128*1024 + 1024; // 4*1024*1024 + 1024; 4 Meg + 1k possible + return 128*1024; // 4*1024*1024; 4 Meg possible case MEM_IRAM: return 256; case MEM_SFR: return 256; + case MEM_IXRAM: + return 4*1024; // internal XRAM case MEM_TYPES: default: return 0; @@ -349,12 +360,10 @@ t_uc390::read_mem(enum mem_class type, t_mem addr) if (type == MEM_XRAM && flat24_flag && addr >= 0x400000) - addr -= 0x400000 - get_mem_size (MEM_XRAM) + 1024; -/* - addr -= 0x400000; - addr += get_mem_size (MEM_XRAM); - addr -= 1024; -*/ + { + addr -= 0x400000; + type = MEM_IXRAM; + } return t_uc51::read_mem (type, addr); } @@ -364,7 +373,10 @@ t_uc390::get_mem (enum mem_class type, t_addr addr) if (type == MEM_XRAM && flat24_flag && addr >= 0x400000) - addr -= 0x400000 - get_mem_size (MEM_XRAM) + 1024; + { + addr -= 0x400000; + type = MEM_IXRAM; + } return t_uc51::get_mem (type, addr); } @@ -374,7 +386,10 @@ t_uc390::write_mem (enum mem_class type, t_addr addr, t_mem val) if (type == MEM_XRAM && flat24_flag && addr >= 0x400000) - addr -= 0x400000 - get_mem_size (MEM_XRAM) + 1024; + { + addr -= 0x400000; + type = MEM_IXRAM; + } t_uc51::write_mem (type, addr, val); } @@ -384,7 +399,10 @@ t_uc390::set_mem (enum mem_class type, t_addr addr, t_mem val) if (type == MEM_XRAM && flat24_flag && addr >= 0x400000) - addr -= 0x400000 - get_mem_size (MEM_XRAM) + 1024; + { + addr -= 0x400000; + type = MEM_IXRAM; + } t_uc51::set_mem (type, addr, val); } @@ -406,7 +424,7 @@ t_uc390::push_byte (uchar uc) sfr->add (ESP, 1); sp10 = (get_mem (MEM_SFR, ESP) & 0x3) * 256 + get_mem (MEM_SFR, SP); - write_mem (MEM_XRAM, sp10 + 0x400000, uc); + write_mem (MEM_IXRAM, sp10, uc); res = 0; } else @@ -421,8 +439,6 @@ t_uc390::push_byte (uchar uc) return res; } -// proc_write_sp (*aof_SP); TODO - uchar t_uc390::pop_byte (int *Pres) { @@ -437,7 +453,7 @@ t_uc390::pop_byte (int *Pres) sfr->add (SP, -1); if (get_mem (MEM_SFR, SP) == 0xff) /* underflow SP */ sfr->add (ESP, -1); - uc = get_mem (MEM_XRAM, sp10 + 0x400000); + uc = get_mem (MEM_IXRAM, sp10); *Pres = 0; } else @@ -1168,7 +1184,7 @@ t_uc390::print_regs(class cl_console *con) /* SA: 10 bit stack */ con->printf ("SP10 0x%03x %3d\n", (sfr->get (ESP) & 3) * 256 + sfr->get (SP), - get_mem (MEM_XRAM, (sfr->get (ESP) & 3) * 256 + sfr->get (SP) + 0x400000) + get_mem (MEM_IXRAM, (sfr->get (ESP) & 3) * 256 + sfr->get (SP)) ); else con->printf ("SP 0x%02x %3d\n", diff --git a/sim/ucsim/stypes.h b/sim/ucsim/stypes.h index ebf9b3fb..e39f7645 100644 --- a/sim/ucsim/stypes.h +++ b/sim/ucsim/stypes.h @@ -96,6 +96,7 @@ enum mem_class MEM_XRAM, MEM_IRAM, MEM_SFR, + MEM_IXRAM, MEM_TYPES }; -- 2.30.2