Perusing ISO/IEC 7816-3:2006, section 12.2.5 specifies what happens when the reader sends a command APDU with Lc>0, Le>0 for the T=0 transmission protocol (byte stream). The initial command TPDU has no Le field, and if the card responds successfully, the application should send 0xC0 GET RESPONSE commands until Le bytes are received.
Questions: If the smart card expects to return data, is it actually valid for the card to return 0x9000 in response to the initial T=0 command (before any GET RESPONSE commands), as 7816-3 specifies? Is it valid for an application to issue a GET RESPONSE command after a 0x9000 response? In contrast, from reading the usage of doTransmit in javax.smartcardio and sc_transmit in OpenSC, it appears that these applications only try to GET RESPONSE after a sw=0x61xx response, never after a sw=0x9000 response.
As I read 7816-3, Case 4S.2 a card could respond with 90 00, if exactly C(N) bytes are available. Since C(N) was cut off during transformation of APDU to TPDU for a case 4 command, however, and so is unknown to the card, the only sure choice for the card is to return 61xx.
For a case 2 command 9000 seems a plausible answer [to be followed by a GET REPONSE C(N)], even if this case is not listed separately in 7816-3.