* sdcc/sim/ucsim/globals.cc: New: IXRAM.
authorbernhardheld <bernhardheld@4a8a32a2-be11-0410-ad9d-d568d2c75423>
Sun, 11 Nov 2001 21:52:47 +0000 (21:52 +0000)
committerbernhardheld <bernhardheld@4a8a32a2-be11-0410-ad9d-d568d2c75423>
Sun, 11 Nov 2001 21:52:47 +0000 (21:52 +0000)
* 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
sim/ucsim/globals.cc
sim/ucsim/s51.src/uc390.cc
sim/ucsim/stypes.h

index 11b1f65a93d72772392dabbaf5b6a52aecd8e49e..eec0ac551ef24667fcd21ec5821a02ab533388a2 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,11 @@
+2001-11-07  Bernhard Held  <bernhard@bernhardheld.de>
+
+       * 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  <michaelh@juju.net.nz>
 
        * src/z80/ralloc.c (packRegsForHLUse): Banned IFXs from being packed into HL.
index e37bfebd766a69fdaa7550040e44394a69358337..516d059f6d79e24c8501f984808d135965a3a8b8 100644 (file)
@@ -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
index 5fbfb8676dcb9c39b60853697f3c65d0ece4dc93..e8e029feb5e3a0f4e7b88f0bbfbf9eb3a1429d82 100644 (file)
@@ -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 <stdio.h>
@@ -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",
index ebf9b3fb3ff2dccec0cc2311f07f5c46bdfd6ca3..e39f76455ecd45e84d35ab9e963b4739b6feaae0 100644 (file)
@@ -96,6 +96,7 @@ enum mem_class
   MEM_XRAM,
   MEM_IRAM,
   MEM_SFR,
+  MEM_IXRAM,
   MEM_TYPES
 };