From WikiTI
Jump to: navigation, search
This port only exists on the the TI-84 Plus and the TI-84 Plus Silver Edition. On the standard TI-83 Plus, it acts as a shadow of port 02. On the TI-83 Plus Silver Edition, this port has no effect.


Port Number: 9Ah

Function: USB Read Endpoint Type/Address

This port determines the endpoint address and transaction type to use when reading from a USB pipe.

Read Values

  • Unknown

Write Values

  • Bits 0-3: Source endpoint number (bEndpointAddress.)
  • Bits 4-5: Endpoint type (bmAttributes.)
  • Bits 6-7: No effect.


Each of the USB controller's internal "pipes" (with the possible exception of pipe 0) can be used to send and receive bulk, interrupt, and/or isochronous data packets. This port determines which type of transaction, and which USB endpoint, should be used for data read from the current pipe. (The "current" pipe is determined by port 8E.)

The low 4 bits of this port are the USB endpoint address, corresponding to the low bits of the bEndpointAddress field in the endpoint descriptor. (Both the OS and USB8x will always use pipe n for reading from endpoint n; i.e., the low bits of this port will be set to the same value as port 8E. This is probably a good convention to stick to when possible; the effects of remapping endpoints haven't been fully explored.)

Bits 4-5 are the endpoint type, corresponding to bits 0-1 of the bmAttributes field in the endpoint descriptor:

  • 10h = isochronous
  • 20h = bulk
  • 30h = interrupt

(The transaction type will affect the wire protocol used, and may affect how the controller chooses to schedule parallel transactions in host mode.)

In addition to this port, you should also initialize port 93 (wMaxPacketSize), and possibly port 9B (bInterval), before requesting data from the pipe. Once the pipe is fully configured for reading, use port 94 to request data.