83Plus:Ports:9A
Synopsis
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.
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 10. On the TI-83 Plus Silver Edition, this port has no effect. |
Read Values
- Unknown
Write Values
- Bits 0-3: Source endpoint number (bEndpointAddress.)
- Bits 4-5: Endpoint type (bmAttributes.)
- Bits 6-7: No effect.
Comments
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.