DDT code for PC controlled robot

Hi everyone, I am trying to build a robot using the current vex microcontroller completely controlled through the serial port.
fxgovers over on the official Vex Forum helped me realize the vex default DDT code’s potential.
I need to control my robot through the serial port which will be connected to a PC running a Visual Basic program. I have the motors figured out… you just set the PWM values 0-7 to whatever you want the motors at using the command byte 021 in dec. (15 in hex.)
to modify PWM 0 : AA 55 00 00 7F 15
the first and second bytes are always AA and 55 and don’t really mean anything I guess… Is this right?
the third byte 00 in this case is the PWM you are writing to (command byte 15) or reading from (command byte 01)
the fourth byte means nothing as well and remains 00 right?
the fifth byte is the value that the PWM is set to
the sixth byte is the command byte
the command bytes I found in the DDT code in one of the header files:

#define READ_CMD 0 // Dynamic Debug commands
#define READ_PWMs 1 // Reads PWM data
#define READ_rxSPI 2 // Used for reading rxdata
#define READ_txSPI 3 // Used for reading txdata
#define UPDATE_PWM_MASK 7 // Used for updating the PWM Mask
#define READ_EE_DATA 8 // Used for reading EE data

#define WRITE_CMD 20
#define WRITE_PWMs 21 // Updates PWM data
#define WRITE_rxSPI 22 // Used for updating rxdata
#define WRITE_txSPI 23 // Used for updating txdata
#define WRITE_EE_DATA 25 // Used for writing EE data

However, now I need to be able to read ultrasonic sensor information. To do this I need to be able to set a digital out on the microcontroller to “on” and have the microcontroller send a packet over the serial port when the corresponding interrupt circuit is broken.
My plans for this were to send a packet from the computer that turns on a digital out and runs a loop statement like this:

while interrupt = 1:
request interrupt port status from microcontroller
timer = timer + 1

My first question is can a PWM value be used for digital I/O ports or is it restricted to analog?
If that is how the microcontroller sets the I/O 's and Interrupts then how are they ordered, are they listed in numerical order anywhere within the DDT code?
If that is not how to set and read data from digital I/O and interrupts then how can I?
Sorry, I am pretty sure I sound like an idiot but I am very new to this stuff.

I found this segment of code in the Serial Driver of the microcontroller code
void Handle_Debug_Input(unsigned char data)
{
switch (debugIntState)
{
case 0: // 1st 0xAA
if (data == 0xAA) debugIntState = 1;
break;
case 1 : // 2nd 0x55
debugIntState = 0;
if (data == 0x55) debugIntState = 2;
break;
case 2 : //get idx
dataIn.RX_INDEX = data;
debugIntState = 3;
break;
case 3 : //get dataH
dataIn.RX_DATAH = data;
debugIntState = 4;
break;
case 4 : //get dataL
dataIn.RX_DATAL = data;
debugIntState = 5;
break;
case 5 : //get cmd
dataIn.RX_CMD = data;
debugIntState = 6;
break;
case 6 : //get FSRH
dataIn.RX_FSRH = data;
debugIntState = 7;
break;
case 7 : //get FSRL
dataIn.RX_FSRL = data;
debugIntState = 8;
break;
case 8 : //still processing
break;
default:
debugIntState= 0;
break;
}
}
I guess my question really is:
what are each of these for:
idx
dataH
dataL
cmd
FSRH
FSRL