I tracked down the issue and I am attaching a diskette image to you. I can reproduce the error within 6 lines of code, and fix it with another 3 lines of code. If I had my suspicion, it is a timing issue likely in the 9938 code.
Setting graphics mode 7 via the geneve XOP's and immediately setting to Text mode 2 (80 columns) with another XOP, I get a messed up screen. When I am dumped back to the CLI, I can do a MODE 80 and the screen is restored. I searched mode 80 code looking for hints, and saw nothing that should have been an issue.
I then did two back to back Text Mode 2 calls in code with the XOP's, and the problem disappeared. It looks like the 9938 has not completed processing everything in Graphics Mode 7 and then the call to Text Mode probably interrupts that call. That is my 2 cents since I am not that familiar with the 9938 code. However, a second call and everything is then setup properly in the registers.
The file TEST-S is my code, and I have a couple of other files from the Geneve VID XOP.
Hope this helps.