X-Git-Url: http://gitweb.hugovil.com/?a=blobdiff_plain;f=src%2Fmemory.c;h=bf3a822c5625134998dd67700828d08fd0960a01;hb=47a60dcfbfdb7a29bd933a850292b752970f2af0;hp=202d8d334fe10d2519439d83a1acadfb33dac7a2;hpb=fb3b3529579773b8a14959cc6bc5bb2096fd0fe8;p=emu8051.git diff --git a/src/memory.c b/src/memory.c index 202d8d3..bf3a822 100644 --- a/src/memory.c +++ b/src/memory.c @@ -37,36 +37,33 @@ 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: - 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; - } - else { + } else pgm_mem[address] = value; - } 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; - } - else { + } else int_mem[address] = value; - } 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; - } - else { + } else ext_mem[address] = value; - } - break; + break; default: /* Error. */ break; @@ -74,36 +71,36 @@ memory_write8( int memory_id, unsigned long address, u_int8_t value ) } 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: - if( address < PGM_MEM_SIZE ) { + 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; case INT_MEM_ID: - if( address < INT_MEM_SIZE ) { + 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; case EXT_MEM_ID: - if( address < EXT_MEM_SIZE ) { + 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; + break; default: /* Error. */ return 0; @@ -113,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")) @@ -129,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"); } }