X-Git-Url: http://gitweb.hugovil.com/?a=blobdiff_plain;f=src%2Fmemory.c;h=bf3a822c5625134998dd67700828d08fd0960a01;hb=fd6fa7c56a209cb5d4fa15f59a837b88795529ee;hp=5e820abd9453a021da1c01ff86cdc39a29377de0;hpb=b23541495010180e3a69e3e1f64c934b28775878;p=emu8051.git diff --git a/src/memory.c b/src/memory.c index 5e820ab..bf3a822 100644 --- a/src/memory.c +++ b/src/memory.c @@ -42,21 +42,24 @@ memory_write8(int memory_id, unsigned long address, u_int8_t value) switch (memory_id) { case PGM_MEM_ID: if (address >= PGM_MEM_SIZE) { - printf("Address is greater than PGM_MEM_SIZE\n"); + printf("Address (%lu) is greater than PGM_MEM_SIZE\n", + address); return; } else pgm_mem[address] = value; break; case INT_MEM_ID: if (address >= INT_MEM_SIZE) { - printf("Address is greater than INT_MEM_SIZE\n"); + printf("Address (%lu) is greater than INT_MEM_SIZE\n", + address); return; } else int_mem[address] = value; break; case EXT_MEM_ID: if (address >= EXT_MEM_SIZE) { - printf("Address is greater than EXT_MEM_SIZE\n"); + printf("Address (%lu) is greater than EXT_MEM_SIZE\n", + address); return; } else ext_mem[address] = value; @@ -75,7 +78,8 @@ memory_read8(int memory_id, unsigned long address) if (address < PGM_MEM_SIZE) return pgm_mem[address]; else { - printf("Address is greater than PGM_MEM_SIZE\n"); + printf("Address (%lu) is greater than PGM_MEM_SIZE\n", + address); return 0; } break; @@ -83,7 +87,8 @@ memory_read8(int memory_id, unsigned long address) if (address < INT_MEM_SIZE) return int_mem[address]; else { - printf("Address is greater than INT_MEM_SIZE\n"); + printf("Address (%lu) is greater than INT_MEM_SIZE\n", + address); return 0; } break; @@ -91,7 +96,8 @@ memory_read8(int memory_id, unsigned long address) if (address < EXT_MEM_SIZE) return ext_mem[address]; else { - printf("Address is greater than EXT_MEM_SIZE\n"); + printf("Address (%lu) is greater than EXT_MEM_SIZE\n", + address); return 0; } break; @@ -104,12 +110,11 @@ memory_read8(int memory_id, unsigned long address) /* Dump memory */ void -DumpMem(char *buf, char *Address, int memory_id) +DumpMem(char *Address, char *Asize, int memory_id) { unsigned int MemAddress; + int size; int Offset, Column; - int size = 256; - int k = 0; if (strlen(Address) != 0) { if (STREQ(Address, "PC")) @@ -120,33 +125,32 @@ DumpMem(char *buf, char *Address, int memory_id) 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]; - 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); - 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) { - 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"); } }