Большое спасибо Forth.
Я так и сделал, использовал /dev/mem
Приведу текст программульки.
Показывает скока время, для тех кто плохо видит.
#include <stdio.h>
#include <time.h>
#include <sys/mman.h>
#include <sys/types.h>
#include <fcntl.h>
int tik=0;
char pot[]={0xDB,0xDB,0,0}; //это точечки в середине мигать
char not[]=" "; //будут, как в настоящих эл.часах
char* dig[10][20]=
{
{
" ######## ", //1
" ### ### ", //2
" ### ### ", //3
" ### ### ", //4
" ### ### ", //5
" ### ### ", //6
" ### ### ", //7
" ### ### ", //8
" ### ### ", //9
" ### ### ", //10
" ######## " //11
}
,
{
" ### ",
" #### ",
" ##### ",
" ### ",
" ### ",
" ### ",
" ### ",
" ### ",
" ### ",
" ### ",
" ##### "
}
,
{
" ######## ",
" ### ### ",
" ### ### ",
" ### ",
" ### ",
" ### ",
" ### ",
" ### ",
" ### ",
" ### ### ",
" ############ "
}
,
{
" ######## ",
" ### ### ",
" ### ### ",
" ### ",
" ### ",
" ### ",
" ### ",
" ### ",
" ### ### ",
" ### ### ",
" ######## "
}
,
{
" ### ", //1
" ### ", //2
" ### ", //3
" ### ", //4
" ### ", //5
" ### ### ", //6
" ############ ", //7
" ### ", //8
" ### ", //9
" ### ",
" ### " //10
}
,
{
" ############ ", //1
" ### ### ", //2
" ### ", //3
" ### ",
" ######### ", //4
" ### ### ", //5
" ### ", //6
" ### ", //7
" ### ### ", //8
" ### ### ", //9
" ####### " //10
}
,
{
" ###### ", //1
" ### ### ", //2
" ### ### ", //3
" ### ", //4
" ### ",
" ######### ", //5
" ### ### ", //6
" ### ### ", //7
" ### ### ", //8
" ### ### ", //9
" ######## " //10
}
,
{
" ############ ", //1
" ### ### ", //2
" ### ", //3
" ### ", //4
" ### ", //5
" ### ", //6
" ### ", //7
" ### ", //8
" ### ", //9
" ### ",
" ### "
}
,
{
" ######## ", //1
" ### ### ", //2
" ### ### ", //3
" ### ### ", //4
" ### ### ",
" ######## ", //5
" ### ### ", //6
" ### ### ", //7
" ### ### ", //8
" ### ### ", //9
" ######## " //10
}
,
{
" ######## ", //1
" ### ### ", //2
" ### ### ", //3
" ### ### ",
" ### ### ", //4
" ########### ", //5
" ### ", //6
" ### ", //7
" ### ", //8
" ### ### ", //9
" ######## " //10
}
};
char* vim;
//------------------------------------------
main ()
{
void digout(int,int);
void points (); //мигающие в середине точки
void cls();
//----do open ekran--------------
unsigned char* ViMe;
int shm_fd=open("/dev/mem",O_RDWR);
if (shm_fd<0){ return;}
vim=(char*)mmap(0, 4000, PROT_READ|PROT_WRITE, MAP_SHARED|MAP_FIXED, shm_fd, 0xB8000);
if (vim<0){return;}
int hour, hour_b, hour_s;
int min, min_b, min_s;
time_t t;
struct tm *tm;
cls();
for (x=0; x<1000000; x++)//цикл бесконечный, практически
{ //я просто не вспомню while(true) сработает-ли?
t = time(NULL);
tm = localtime(&t);
hour=tm->tm_hour;
min=tm->tm_min;
hour_b=hour/10;
hour_s=hour%10;
min_b=min/10;
min_s=min%10;
digout(8,hour_b); //первое число - расположение цифры на экране
digout(23,hour_s);
digout(43,min_b);
digout(58,min_s);
points (10);
sleep(1);
}
}
//------------------------------------
void digout(int x, int chi)
{
int i; int t; char U;
for (i=0; i<11; i++) //for each str
{
for (t=0; t<14; t++)
{
U=dig[chi][i][t];
if (U=='#')U=0xDB;
vim[x*2+(i+5)*160+t*2]=U;
}
}
}
//---------------------------------
void points()
{
char* p1; char* p2;
tik++; if (tik>3)tik=0;
switch (tik)
{
case 0: p1=pot; p2=pot; break;
case 1: p1=not; p2=pot; break;
case 2: p1=pot; p2=pot; break;
case 3: p1=pot; p2=not; break;
default: p1=not; p2=not;
}
vim[39*2+9*160]=p1[0];
vim[39*2+9*160+2]=p1[0];
vim[39*2+12*160]=p2[0];
vim[39*2+12*160+2]=p2[0];
return;
}
//-----------------
void cls()
{
int i=0, lim=25*80;
for (i=0; i<lim; i++)
{
vim[i*2]=0x20;
vim[i*2+1]=2;
}
return;
}
/////////////////
В будущем хочу еще сделать, чтоб выводилась как-нить сетевая активность в офисе. У кого, например, широковещательных пакетов многовато. Или вообще кто чемпион по внешнему трафику. И народу не скучно, и польза от старого выцветшего монитора на шкафу.