ISO 7816-3 (Cards with contacts — Electrical interface and transmission protocols) defines that response value of 90 00 as 'Process completed normally'.
It is unlike conventions in programming languages which return value 0 is considered as success and normal termination of applications.
Does anyone know what is the reason for this?
ISO 7816-4 (2013) specifies for status bytes:
Note, that 6X and 9X are on the other hand invalid for INS byte with the same reference given.
This issue derives from character-based T=0 protocol, see the section Procedure bytes in 7816-3:
Summary: The first smart card protocol T=0 had the need for characteristic byte values, probably to re-sync after communication problems. Zero is no good choice for that, since it is needed for other purposes as well (Even for an application this applies, e. g. if the card does not send an answer at all).