Relating to just Windows textmode:
[pascal] ScreenBuffer: HWND;
Console: HWND;
Src, Dimentions: COORD;
outrect: SMALL_RECT;
Output: array of CHAR_INFO;
//create
Src.X:= 0;
Src.Y:= 0;
Dimentions.X:= Width;
Dimentions.Y:= Height;
outrect.Left:= Src.X;
outrect.Top:= Src.Y;
outrect.Right:= Dimentions.X-1;
outrect.Bottom:= Dimentions.Y-1;
SetLength(Output, Height*Width);
AllocConsole;
ScreenBuffer:= CreateConsoleScreenBuffer(GENERIC_WRITE, 0, nil, CONSOLE_TEXTMODE_BUFFER, nil);
SetConsoleActiveScreenBuffer(ScreenBuffer);
SetConsoleScreenBufferSize(ScreenBuffer, Dimentions);
SetConsoleMode(ScreenBuffer, 0);
SetConsoleTitle(PChar(title));
Console:= GetConsoleWindow();
ShowWindow(Console, SW_MAXIMIZE);
//destroy
CloseHandle(ScreenBuffer);
//present
WriteConsoleOutput(ScreenBuffer, Output, Dimentions, src, outrect);[/pascal]
You?¢_Tre probably better off jumpstarting with something like Lifepowers textmode component.