Finally I was able to look at the QI problem. The symptom is that the FINALGROM menu item is missing, although the menu is loaded from the SD card.
I used my logic analyzer to see what is going on. I could see right away that the signals seem alright, meaning the GROM emulation is working fine on the QI.
Next, I captured all data bytes on the bus whenever GR goes high, i.e., when the GROM data is valid. It would be even better if I could capture GROM addresses, but they generally don't appear on the bus.
To get meaning out of my capture, I disassembled the TI 99/QI GROM 0 from MESS, hoping that this would match the GROM 0 of my QI machine. After some searching, I could match the menu generation segment
1.9735,0x0031 MOVE >1E, G@>6000, V@>400
1.9772,0x00BE ST >04, @>83FB ; r13 lo byte
The latter bytes show that the cart is recognized by the system.
But when the loop terminates at G>1F0, we get this in the capture
2.0229,0x00F0 >1E2: BS >1F0
2.0229,0x0001 (target addr)
2.0230,0x0042 >1F0: BR >200
2.0231,0x0002 (target addr)
2.0231,0x00D6 >200?: ?????? expected: 94 72 87 90 ...
This byte sequence >d6 >8f >dd is nowhere to be found in the QI GROM.
So, how reasonable is it that my MAME QI GROM 0 matches the GROM 0 in my QI machine? Are there any other interpretations on what is happening?
Up to this point, the FinalGROM is running flawlessly, so I'm still in the dark why the menu is missing.