At first I thought it strange that the buffer size was placed within the paragraph and not right before.

DoUSBIn:
USBBufferCount = USBBufferSizeRX <--- THIS STATEMENT
USBService
USBIn 1, USBBuffer, USBBufferCount, DoUSBIn

The initialization of USBBufferCount must be within the paragraph 'cause USB updates that field in the USBIN command. USB will keep plugging zero in there until a valid record is sent by the PC.

Robert