furiously clicking through the histories of various microprocessors on wikipedia so i can figure out who to blame for the fact that you can't push/pop a single byte to the stack on the gameboy in an atomic fashion (you can only push/pop register pairs). a fact that led to a stupid bug that took me two days to figure out
(as far as i can tell, the gameboy's SM83 has it because the Z80 has it, and the Z80 has it because the Intel 8080 has it, but I can't figure out what the Intel engineers were thinking when they decided this is how it would work on the 8080. Stanley Mazor wrote about the design process of the 8080 here https://ieeexplore.ieee.org/document/4287219 but on the topic of push and pop he only says "Push and Pop instructions were needed for each of the three register pairs.")

@aparrish

I think it was just a practical convention inherited from those who came before them at IBM and other places.

From the perspective of business machines, it would rarely make sense to push data that's not word-sized data.

Which is still the same rationale ARM, Intel, AMD follow to date.

@haitchfive yeah that makes sense, since the stack is mainly for 16-bit addresses on these machines. i also imagine it might have been easier to just reuse the mechanisms for loading the value of the (16-bit) stack pointer to the stack with 16-bit register pairs, rather than making specific circuitry for the individual 8-bit registers? (but of course i know nothing about microprocessor design)
@aparrish My hunch is that 16-bit addressing in the Z80 was a big bet, and there was plenty of engineering effort dedicated to making that consistent.

@aparrish @haitchfive
It seems to be a result of the hardware design; registers were layed out and controlled in pairs.

I found it here: https://www.righto.com/2013/03/register-file-8085.html and https://www.righto.com/2014/10/how-z80s-registers-are-implemented-down.html

The 8085's register file reverse engineered

On the surface, a microprocessor's registers seem like simple storage, but not in the 8085 microprocessor. Reverse-engineering the 8085 rev...