diff --git a/Firmware/Dcodes.cpp b/Firmware/Dcodes.cpp
index 9a353be8..5af12e2e 100644
--- a/Firmware/Dcodes.cpp
+++ b/Firmware/Dcodes.cpp
@@ -246,32 +246,31 @@ void dcode_1()
     ### D2 - Read/Write RAM <a href="https://reprap.org/wiki/G-code#D2:_Read.2FWrite_RAM">D3: Read/Write RAM</a>
     This command can be used without any additional parameters. It will read the entire RAM.
     #### Usage
-    
+
         D2 [ A | C | X ]
-    
+
     #### Parameters
-    - `A` - Address (x0000-x1fff)
-    - `C` - Count (1-8192)
+    - `A` - Address (x0000-x21ff)
+    - `C` - Count (1-8704)
     - `X` - Data
 
 	#### Notes
 	- The hex address needs to be lowercase without the 0 before the x
-	- Count is decimal 
+	- Count is decimal
 	- The hex data needs to be lowercase
-	
+
     */
 void dcode_2()
 {
-	LOG("D2 - Read/Write RAM\n");
-	uint16_t address = 0x0000; //default 0x0000
-	uint16_t count = 0x2000; //default 0x2000 (entire ram)
-	if (code_seen('A')) // Address (0x0000-0x1fff)
+	DBG(_N("D2 - Read/Write RAM\n"));
+	uint16_t address = 0x200; // default to start of sram
+	uint16_t count = 0x2200; // entire addressable space
+	if (code_seen('A')) // Address (0x0000-0x21ff)
 		address = (strchr_pointer[1] == 'x')?strtol(strchr_pointer + 2, 0, 16):(int)code_value();
-	if (code_seen('C')) // Count (0x0001-0x2000)
+	if (code_seen('C')) // Count (0x0000-0x2200)
 		count = (int)code_value();
-	address &= 0x1fff;
-	if (count > 0x2000) count = 0x2000;
-	if ((address + count) > 0x2000) count = 0x2000 - address;
+	if (address > 0x2200) address = 0x2200;
+	if ((address + count) > 0x2200) count = 0x2200 - address;
 	if (code_seen('X')) // Data
 	{
 		uint8_t data[16];
@@ -280,7 +279,7 @@ void dcode_2()
 		{
 			for (uint16_t i = 0; i < count; i++)
 				*((uint8_t*)(address + i)) =  data[i];
-			LOG("%d bytes written to RAM at address %04x", count, address);
+			DBG(_N("%d bytes written to RAM at address 0x%04x\n"), count, address);
 		}
 		else
 			count = 0;