The main difference between the v0 and v1 ROMs is that v0 does a significant amount of work in its NMI handler. v1 simply uses it to set a flag and, if the flag is set, does the work in the IRQ handler.

The code seems to have been moved from the NMI handler to the IRQ handler in order to introduce a delay of approximately a quarter of a second between the pause button being pressed and the pause/unpause actually occurring. Also, one part of the code was simplified when moved:

CB 7F        BIT 7,A
CB FF        SET 7,A
28 02        JR Z,+02h
CB BF        RES 7,A

was replaced by the single instruction:

EE 80        XOR 80h

Return to top