Dropped ugly 'blocks' kludge for a 16-bit length field.
[goodfet] / firmware / apps / chipcon / chipcon.c
index 45a27e7..05349ea 100644 (file)
@@ -1,17 +1,16 @@
-//GoodFET ChipCon Debugging Application
-//Handles basic I/O for the Chipcon 8051 debugging protocol.
+/*! \file chipcon.c
+  \author Travis Goodspeed
+  \brief Chipcon 8051 debugging.
+*/
 
 
-//Higher level left to client application.
 
 //This is like SPI, except that you read or write, not both.
 
 
 //This is like SPI, except that you read or write, not both.
 
-/** N.B. The READ verb performs a write of all (any) supplied data,
+/* N.B. The READ verb performs a write of all (any) supplied data,
     then reads a single byte reply from the target.  The WRITE verb
     only writes.
 */
 
     then reads a single byte reply from the target.  The WRITE verb
     only writes.
 */
 
-//This is REALLY untested.
-
 #include "platform.h"
 #include "command.h"
 #include "chipcon.h"
 #include "platform.h"
 #include "command.h"
 #include "chipcon.h"
@@ -21,7 +20,7 @@
 #include <iomacros.h>
 
 
 #include <iomacros.h>
 
 
-/** Concerning clock rates,
+/* Concerning clock rates,
     the maximimum clock rates are defined on page 4 of the spec.
     They vary, but are roughly 30MHz.  Raising this clock rate might
     allow for clock glitching, but the GoodFET isn't sufficient fast for that.
     the maximimum clock rates are defined on page 4 of the spec.
     They vary, but are roughly 30MHz.  Raising this clock rate might
     allow for clock glitching, but the GoodFET isn't sufficient fast for that.
@@ -125,9 +124,9 @@ void ccread(unsigned char len){
 //! Handles a monitor command.
 void cchandle(unsigned char app,
               unsigned char verb,
 //! Handles a monitor command.
 void cchandle(unsigned char app,
               unsigned char verb,
-              unsigned char len){
+              unsigned long len){
   switch(verb){
   switch(verb){
-    //PEEK and POKE will come later.
+    //CC_PEEK and CC_POKE will come later.
   case READ:  //Write a command and return 1-byte reply.
     cccmd(len);
     ccread(1);
   case READ:  //Write a command and return 1-byte reply.
     cccmd(len);
     ccread(1);
@@ -205,15 +204,15 @@ void cchandle(unsigned char app,
 
   //Macro commands
   case CC_READ_CODE_MEMORY:
 
   //Macro commands
   case CC_READ_CODE_MEMORY:
-    cmddata[0]=peekcodebyte(cmddataword[0]);
+    cmddata[0]=cc_peekcodebyte(cmddataword[0]);
     txdata(app,verb,1);
     break;
   case CC_READ_XDATA_MEMORY:
     txdata(app,verb,1);
     break;
   case CC_READ_XDATA_MEMORY:
-    cmddata[0]=peekdatabyte(cmddataword[0]);
+    cmddata[0]=cc_peekdatabyte(cmddataword[0]);
     txdata(app,verb,1);
     break;
   case CC_WRITE_XDATA_MEMORY:
     txdata(app,verb,1);
     break;
   case CC_WRITE_XDATA_MEMORY:
-    cmddata[0]=pokedatabyte(cmddataword[0], cmddata[2]);
+    cmddata[0]=cc_pokedatabyte(cmddataword[0], cmddata[2]);
     txdata(app,verb,1);
     break;
   case CC_SET_PC:
     txdata(app,verb,1);
     break;
   case CC_SET_PC:
@@ -281,7 +280,6 @@ unsigned short cc_get_pc(){
   return cmddataword[0];
 }
 
   return cmddataword[0];
 }
 
-
 //! Set a hardware breakpoint.
 void cc_set_hw_brkpnt(unsigned short adr){
   cmddataword[0]=adr;
 //! Set a hardware breakpoint.
 void cc_set_hw_brkpnt(unsigned short adr){
   cmddataword[0]=adr;
@@ -345,7 +343,7 @@ unsigned char cc_debug(unsigned char len,
 }
 
 //! Fetch a byte of code memory.
 }
 
 //! Fetch a byte of code memory.
-unsigned char peekcodebyte(unsigned long adr){
+unsigned char cc_peekcodebyte(unsigned long adr){
   /** See page 9 of SWRA124 */
   unsigned char bank=adr>>15,
     lb=adr&0xFF,
   /** See page 9 of SWRA124 */
   unsigned char bank=adr>>15,
     lb=adr&0xFF,
@@ -362,7 +360,7 @@ unsigned char peekcodebyte(unsigned long adr){
   //CLR A
   cc_debug(2, 0xE4, 0, 0);
   //MOVC A, @A+DPTR;
   //CLR A
   cc_debug(2, 0xE4, 0, 0);
   //MOVC A, @A+DPTR;
-  toret=cc_debug(1, 0x93, 0, 0);
+  toret=cc_debug(3, 0x93, 0, 0);
   //INC DPTR
   //cc_debug(1, 0xA3, 0, 0);
   
   //INC DPTR
   //cc_debug(1, 0xA3, 0, 0);
   
@@ -371,7 +369,7 @@ unsigned char peekcodebyte(unsigned long adr){
 
 
 //! Set a byte of data memory.
 
 
 //! Set a byte of data memory.
-unsigned char pokedatabyte(unsigned int adr,
+unsigned char cc_pokedatabyte(unsigned int adr,
                           unsigned char val){
   unsigned char
     hb=(adr&0xFF00)>>8,
                           unsigned char val){
   unsigned char
     hb=(adr&0xFF00)>>8,
@@ -396,7 +394,7 @@ for (n = 0; n < count; n++) {
 }
 
 //! Fetch a byte of data memory.
 }
 
 //! Fetch a byte of data memory.
-unsigned char peekdatabyte(unsigned int adr){
+unsigned char cc_peekdatabyte(unsigned int adr){
   unsigned char
     hb=(adr&0xFF00)>>8,
     lb=adr&0xFF,
   unsigned char
     hb=(adr&0xFF00)>>8,
     lb=adr&0xFF,