Regarding the "OPT register" -- as far as I understand you set this register to control the way how SpringCard's Template System (optionally) encodes card family into its output. My bet is you do not want to use their Template System at all...
To get information about generic card technology/family use the following GET DATA command to get PIX.SS and PIX.NN (see chapter 2.2.1):
FF CA F1 00 00
First byte in response is PIX.SS (see chapter 5.1.4):
0x00 -> No information given
  0x01 -> ISO 14443 A, level 1
  0x02 -> ISO 14443 A, level 2
  0x03 -> ISO 14443 A, level 3 or 4 (and Mifare)
  0x05 -> ISO 14443 B, level 1
  0x06 -> ISO 14443 B, level 2
  0x07 -> ISO 14443 B, level 3 or 4
  0x09 -> ICODE 1
  0x0B -> ISO 15693  
The following two bytes contain PIX.NN (see chapter 5.1.5):
0x0001 -> NXP Mifare Standard 1k
  0x0002 -> NXP Mifare Standard 4k
  0x0003 -> NXP Mifare UltraLight + Other Type 2 NFC Tags with a capacity <= 64 bytes
  0x0006 -> ST MicroElectronics SR176
  0x0007 -> ST MicroElectronics SRI4K, SRIX4K, SRIX512, SRI512, SRT512
  0x000A -> Atmel AT88SC0808CRF
  0x000B -> Atmel AT88SC1616CRF
  0x000C -> Atmel AT88SC3216CRF
  0x000D -> Atmel AT88SC6416CRF
  0x0012 -> Texas Intruments TAG IT
  0x0013 -> ST MicroElectronics LRI512
  0x0014 -> NXP ICODE SLI
  0x0016 -> NXP ICODE1
  0x0021 -> ST MicroElectronics LRI64
  0x0024 -> ST MicroElectronics LR12
  0x0025 -> ST MicroElectronics LRI128
  0x0026 -> NXP Mifare Mini
  0x002F -> Innovision Jewel
  0x0030 -> Innovision Topaz (NFC Forum type 1 tag)
  0x0034 -> Atmel AT88RF04C
  0x0035 -> NXP ICODE SL2
  0x003A -> NXP Mifare UltraLight C + Other Type 2 NFC Tags with a capacity > 64 bytes
  0xFFA0 -> Generic/unknown 14443-A card
  0xFFA1 -> Kovio RF barcode
  0xFFB0 -> Generic/unknown 14443-B card
  0xFFB1 -> ASK CTS 256B
  0xFFB2 -> ASK CTS 512B
  0xFFB3 -> Pre-standard ST MicroElectronics SRI 4K
  0xFFB4 -> Pre-standard ST MicroElectronics SRI X512
  0xFFB5 -> Pre-standard ST MicroElectronics SRI 512
  0xFFB6 -> Pre-standard ST MicroElectronics SRT 512
  0xFFB7 -> Inside Contactless PICOTAG/PICOPASS
  0xFFB8 -> Generic Atmel AT88SC / AT88RF card
  0xFFC0 -> Calypso card using the Innovatron protocol
  0xFFD0 -> Generic ISO 15693 from unknown manufacturer
  0xFFD1 -> Generic ISO 15693 from EMMarin (or Legic)
  0xFFD2 -> Generic ISO 15693 from ST MicroElectronics, block number on 8 bits
  0xFFD3 -> Generic ISO 15693 from ST MicroElectronics, block number on 16 bits
  0xFFFF -> Virtual card (test only)  
Please pay attention to the following note regarding PIX.NN values starting with 0xFF (SpringCard proprietary codes):
The cards in this list are not referenced by PC/SC specification at the date of writing. In case they are added to the specification,
  the future firmware versions will have to use the new value. It is therefore advised not to check those values in the applications, as
  they are likely to be removed in the future.
And a note about PIX.NN availability:
Note: PIX.NN is specified for memory cards only. Even if the GET DATA instruction allows to
  retrieve PIX.NN even for micro-processor based cards (smartcards), the returned value is
  unspecified and shall not be used to identify the card.
Disclaimer: I no longer have access to SpringCard reader so I can't test it with my cards, but given the documentation it should work this way.
I was dealing with a very similar problem (processing different cards, somewhat mentioned here) in the past and the most effective approach was (given my "mix" of cards):
This approach assumes that you know all possible ATR values for used cards -- if not you would have to replace/combine it with card technology/family detection described above.
Note: pcsc-tools ATR list mentioned in comments is available here and here (I am not sure which one is canonical)
Good luck!