There are some extremely fast ways to scroll the screen...but unfortunately if you are in console mode you probably will not be able to use any of them.
I'm not sure if XP will even let you get a pointer to 0xB800 which is where text memory resides and most, if not all, text modes use.
You will need to get a far pointer to this (far being it is our of your segment). But XP may not allow far pointers, but theoretically it should if it is running in virtual 8086 mode which it should be. But again there is no such thing as far in 32-bit code. Far used to denote, as I said, that the segment was outside of your segment. But since in protected mode there are no segments (well there are...but I don't want to get into that) the far pointer is pretty much a thing of the past. Memory is pretty much linear now and you can get a pointer to any chunk of it (within certain restrictions of the OS, of course).
The old code that you would use to do what you want is:
Code:
//This is only needed for MK_FP which you could just as easily
//create yourself if you don't have dos.h
#include <dos.h> //may not have this
typedef unsigned char BYTE;
BYTE far*Screen=(BYTE far *)MK_FP(0xB800,0);
Screen[location]=value;
In text modes all even numbered locations specify what character to put there and the odd ones denote which colors -> foreground and background are stored in one byte :
((foreground<<4)+background)
I believe that is the formula. Foreground is stored in the high byte and background in stored in the low byte.
But again your best bet is to dump the console and go with something like DirectX or OpenGL. DirectX is really easy to get up and running and for creating a DOS-like 32-bit environment in which to code in. You basically create one window...tell windows to leave you alone, start the message loop, and forget about 99% of the API from then on....which is nice.
There are many books on DirectX and OpenGL and you would do yourself a great service by purchasing one.