jim@randvax.ARPA (Jim Gillogly) (03/06/84)
------- After talking to IBM in Boca Raton, I've found a way around my problems using the PCjr extended video modes. The short answer is this: modes 9 and A use 32K memory instead of 16K, and the second 16K springs into being below the normal video buffer, which is in high memory. So stay away from all 32K when you go into these modes. That's fine in assembler, since you have full control over memory allocation. It's interesting to note that neither DOS nor DEBUG is aware of the mode, and both will get stepped on by the video memory. However, according to the guy in Boca, you can move the buffer around with the video interrupt (10H), function 5 and maybe keep out of the way if you're clever. I figured out an easy way to do it in Lattice C, where the video memory steps on the stack: allocate a stack that's greater than 16K (I'm using 20,000 bytes), then as your last act in main() allocate a dummy array that's 16K long that you never use; since that's ripped off the top of the stack (i.e. high memory), the video memory's attempt to trash your stack is thwarted. Then go into the new modes, do your work, and GET OUT AGAIN before you exit. Jim