Indeed, I don't think there's anything special there to save power. The general story in NMOS logic is that the depletion-mode pullups are always conducting, so every logic zero is causing current to flow between the rails - on average, that's half the logic gates on the chip. (Hence the great improvement when we moved to CMOS.)
It's even worse with the Special Bus, which is
precharged in phi2 but may also be driven during phi2: probably no useful logic level will result, but probably the value on the bus is not used in phi2 so no logical misbehaviour. See for example
this sim.
There's some info in the thread
circuit netlist for 6502 in spice format which relates to this.
There are several ways a node can be high:
- charge storage, from something which happened recently.
- through one or more pass transistors, in which case high is about 4V or a little less, because of the threshold drop.
- from a logic gate with a depletion mode pullup, in which case high is 5V.
- by a precharge transistor, which is again only pulling up to 4V.
In the 6502, to perform a LDX immediate, such as in cycle6 of the sim above, the value which has been loaded into the data latches (idl) passes over the internal databus (idb) to the special bus. That's a long way, and through several weak pass transistors, so would be somewhat slow to transmit a zero and even slower to transmit a 1. By precharging the bus, it only needs to transmit a zero, and so avoids being too slow. That is, in this case, precharging is a timing fix.
But as we noted before, precharging is also used to create useful constants, so if it's not modelled correctly, the simulation won't entirely work.