People, I may reimplement the console.c because we need this for SPARC
anyway. The problem is that I work on Sun and I am very busy earning
some money for the family. Somebody from a university may hack it quicker.
If anybody wants to dig the same code please notify me.
I propose a little change in the overall structure. In present
it seems to be as follows:
scrup ----+--call----> scr_writew ----refers @video_mem_start --> VRAM.
On the switching whole screen is moved between VRAM and RAM buffers.
For SPARC with its pure graphical console we need something like this:
con_write---calls---> scr_writew --ref--> vc_scrbuff[currcons].
\calls before the return
\--calls-- scr_update ---ref--> VRAM
On the switching an old content of VRAM is not saved (this is impossible
on Sun SPARC). New content is rendered over the VRAM with the help of the
same scr_update(). OO lovers note how we separated "logical" images of
VCs and "physical" representations in VRAM. And logical screens have all
the same size which can allow some scrollback.
The proposal allows to have the same console.c for SPARC and i86 (I do not
know about MIPS DECstation). It seems that Alpha does not need this with
the help of #ifdef __alpha__ in selection.h. I do not like ifdefs where
we can avoid them for no additional cost. May be Linus will like to provide
his own scr_update for Alpha.