In the early days PUSH and POP for the small hardware stack was built around just storing addresses only. But it also saved and optionally restored the C and Z condition code flags.
About a year back, I think, that was changed to PUSHing an ordinary full 32 bits - no flag bits. And POP restores 32 bits, but with optionally the top two bits still replacing C and Z. It seems to be something of a leftover. I have my doubts as to whether anyone even wants that as a feature. Is condition flag setting via this method in use?
I'd like to have POP set the Z flag to indicate the popped value as being zero or not. EDIT: Looking at POPA/B instructions. Make it the same as those would be perfect.