projects
/
emu8051.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Add external memory window vpaned_mem
[emu8051.git]
/
src
/
memory.c
diff --git
a/src/memory.c
b/src/memory.c
index
202d8d3
..
402e73c
100644
(file)
--- a/
src/memory.c
+++ b/
src/memory.c
@@
-27,46
+27,38
@@
#include "hexfile.h"
#include "memory.h"
#include "hexfile.h"
#include "memory.h"
-#define PGM_MEM_SIZE 65536
-#define INT_MEM_SIZE 256 /* IRAM = Direct addresses $00 to $7F
- * SFR = Direct addresses $80 to $FF */
-#define EXT_MEM_SIZE 65536
-
static u_int8_t pgm_mem[PGM_MEM_SIZE];
static u_int8_t int_mem[INT_MEM_SIZE];
static u_int8_t ext_mem[EXT_MEM_SIZE];
void
static u_int8_t pgm_mem[PGM_MEM_SIZE];
static u_int8_t int_mem[INT_MEM_SIZE];
static u_int8_t ext_mem[EXT_MEM_SIZE];
void
-memory_write8(
int memory_id, unsigned long address, u_int8_t value
)
+memory_write8(
int memory_id, unsigned long address, u_int8_t value
)
{
{
- switch
( memory_id
) {
+ switch
(memory_id
) {
case PGM_MEM_ID:
case PGM_MEM_ID:
- if( address >= PGM_MEM_SIZE ) {
- printf("Address is greater than PGM_MEM_SIZE\n");
+ if (address >= PGM_MEM_SIZE) {
+ printf("Address (%lu) is greater than PGM_MEM_SIZE\n",
+ address);
return;
return;
- }
- else {
+ } else
pgm_mem[address] = value;
pgm_mem[address] = value;
- }
break;
case INT_MEM_ID:
break;
case INT_MEM_ID:
- if( address >= INT_MEM_SIZE) {
- printf("Address is greater than INT_MEM_SIZE\n");
+ if (address >= INT_MEM_SIZE) {
+ printf("Address (%lu) is greater than INT_MEM_SIZE\n",
+ address);
return;
return;
- }
- else {
+ } else
int_mem[address] = value;
int_mem[address] = value;
- }
break;
case EXT_MEM_ID:
break;
case EXT_MEM_ID:
- if( address >= EXT_MEM_SIZE ) {
- printf("Address is greater than EXT_MEM_SIZE\n");
+ if (address >= EXT_MEM_SIZE) {
+ printf("Address (%lu) is greater than EXT_MEM_SIZE\n",
+ address);
return;
return;
- }
- else {
+ } else
ext_mem[address] = value;
ext_mem[address] = value;
- }
- break;
+ break;
default:
/* Error. */
break;
default:
/* Error. */
break;
@@
-74,36
+66,36
@@
memory_write8( int memory_id, unsigned long address, u_int8_t value )
}
u_int8_t
}
u_int8_t
-memory_read8(
int memory_id, unsigned long address
)
+memory_read8(
int memory_id, unsigned long address
)
{
{
- switch
( memory_id
) {
+ switch
(memory_id
) {
case PGM_MEM_ID:
case PGM_MEM_ID:
- if
( address < PGM_MEM_SIZE ) {
+ if
(address < PGM_MEM_SIZE)
return pgm_mem[address];
return pgm_mem[address];
- }
else {
else {
- printf("Address is greater than PGM_MEM_SIZE\n");
+ printf("Address (%lu) is greater than PGM_MEM_SIZE\n",
+ address);
return 0;
}
break;
case INT_MEM_ID:
return 0;
}
break;
case INT_MEM_ID:
- if
( address < INT_MEM_SIZE ) {
+ if
(address < INT_MEM_SIZE)
return int_mem[address];
return int_mem[address];
- }
else {
else {
- printf("Address is greater than INT_MEM_SIZE\n");
+ printf("Address (%lu) is greater than INT_MEM_SIZE\n",
+ address);
return 0;
}
break;
case EXT_MEM_ID:
return 0;
}
break;
case EXT_MEM_ID:
- if
( address < EXT_MEM_SIZE ) {
+ if
(address < EXT_MEM_SIZE)
return ext_mem[address];
return ext_mem[address];
- }
else {
else {
- printf("Address is greater than EXT_MEM_SIZE\n");
+ printf("Address (%lu) is greater than EXT_MEM_SIZE\n",
+ address);
return 0;
}
return 0;
}
- break;
+ break;
default:
/* Error. */
return 0;
default:
/* Error. */
return 0;
@@
-113,12
+105,11
@@
memory_read8( int memory_id, unsigned long address )
/* Dump memory */
void
/* Dump memory */
void
-DumpMem(char *
buf, char *Address
, int memory_id)
+DumpMem(char *
Address, char *Asize
, int memory_id)
{
unsigned int MemAddress;
{
unsigned int MemAddress;
+ int size;
int Offset, Column;
int Offset, Column;
- int size = 256;
- int k = 0;
if (strlen(Address) != 0) {
if (STREQ(Address, "PC"))
if (strlen(Address) != 0) {
if (STREQ(Address, "PC"))
@@
-129,33
+120,32
@@
DumpMem(char *buf, char *Address, int memory_id)
MemAddress = 0;
}
MemAddress = 0;
}
+ if (strlen(Asize) != 0) {
+ size = Ascii2Hex(Asize, strlen(Asize));
+ } else {
+ size = 256; /* Default size if not specified. */
+ }
+
for (Offset = 0; Offset < size; Offset += 16) {
unsigned char data[16];
for (Offset = 0; Offset < size; Offset += 16) {
unsigned char data[16];
- sprintf(&buf[k], "%.4X ", MemAddress + Offset);
- k = strlen(buf);
+ printf("%.4X ", MemAddress + Offset);
for (Column = 0; Column < 16; Column++) {
data[Column] = memory_read8(memory_id, MemAddress +
Offset + Column);
for (Column = 0; Column < 16; Column++) {
data[Column] = memory_read8(memory_id, MemAddress +
Offset + Column);
- sprintf(&buf[k], " %.2X", (int) data[Column]);
- k = strlen(buf);
+ printf(" %.2X", (int) data[Column]);
}
}
- sprintf(&buf[k], " ");
- k = strlen(buf);
+ printf(" ");
/* Display any ASCII characters */
for (Column = 0; Column < 16; Column++) {
if ((int) data[Column] >= 32 &&
(int) data[Column] <= 126) {
/* Display any ASCII characters */
for (Column = 0; Column < 16; Column++) {
if ((int) data[Column] >= 32 &&
(int) data[Column] <= 126) {
- sprintf(&buf[k], "%c", data[Column]);
- k = strlen(buf);
- } else {
- sprintf(&buf[k], ".");
- k = strlen(buf);
- }
+ printf("%c", data[Column]);
+ } else
+ printf(".");
}
}
- sprintf(&buf[k], "\n");
- k = strlen(buf);
+ printf("\n");
}
}
}
}