Create two separate executables, emu8051-cli (default) and emu8051-gtk
[emu8051.git] / src / memory.c
index 202d8d3..bf3a822 100644 (file)
@@ -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");
        }
 }