- PDITarget_SendByte(PDI_CMD_LDS | (PDI_DATSIZE_4BYTES << 2));\r
- NVMTarget_SendAddress(ReadAddress++);\r
- *(ReadBuffer++) = PDITarget_ReceiveByte();\r
+ /* Decrement the ReadSize counter as we have already read once byte of memory */\r
+ ReadSize--;\r
+ \r
+ /* Send the REPEAT command with the specified number of bytes remaining to read */\r
+ PDITarget_SendByte(PDI_CMD_REPEAT | PDI_DATSIZE_2BYTES);\r
+ PDITarget_SendByte(ReadSize & 0xFF);\r
+ PDITarget_SendByte(ReadSize >> 8);\r
+ \r
+ /* Send a LD command with indirect access and postincrement to read out the remaining bytes */\r
+ PDITarget_SendByte(PDI_CMD_LD | (PDI_POINTER_INDIRECT_PI << 2) | PDI_DATSIZE_1BYTE);\r
+ for (uint16_t i = 1; i < ReadSize; i++)\r
+ *(ReadBuffer++) = PDITarget_ReceiveByte();\r