08-19-2009 06:38 AM
In our real time embedded LabWindows system we have a little monitor that can show strings printed with printf(), but we do not have control over where it appears on the screen; it just follows the last printed line.
The CPU load monitor (when enabled) constantly shows information at the top of the screen, just overwriting the top lines of our printed text that happened to scroll up to there.
It seems that something in LabWindows is able to at least start printing at the top of the screen and even with a bit of color.
Searching the Web and these forums I could not find any information on how to display text at an arbitrary screen position in an arbitrary color.
Poking into video memory at B800:0000 (standard CGA video memory) using WriteToPhysicalMemory is not simply possible on a RT Target (the functions provided by the Low-level driver are not available)
Assuming a single linear address space and poking memory using ((int *)0xb8000000L)[index]=value; // hi=chr, lo=attr did not seem to work either.
What do I need to do?
08-19-2009 08:24 AM
AHA!
Sorry about this, I didn't realize it in time, but obviously with intel memory addressing using 16 bytes pages (in real mode) it is actually better to assume the video memory address of B800:0000 to be at 0xB8000L. And of course, using ((int*)0xB8000L)[index]=value; actually DOES write in the video memory.
This solves half the problem of course, since I would still expect a little collection of library functions to be available from NI to display text all over the screen.