Subject: console problems Date: Wed, 15 Jan 1992 11:43:06 PST From: pmacdona@sanjuan.UVic.CA (Peter MacDonald)
There are a few small anoyances in the console patches for VC.
All in all, .12 is an amazing leap over .11.
First, to the termcap, you should add to your termcap entry,
:rs=\Ec:
This defines the reset string. Otherwise, window sizes etc hang around.
It seems some systems define \E> instead of \Ec, but this according
to DEC (who created vt100) is to reset to application keypad. So
console uses \Ec. Argg.
Second, autodectection correctly identifies my ATI card, but only supports
132 line mode, which my monitor (and preferences) don't. So, anyone know
the correc mode to use? The old code I have has to use int 10 twice, once
to set the mode and once to set the font. Also a termcap entry for 50 line mode
needs to be added.
Screen dumping isn't working cause the handler in tty_ioctl.c didn't make
make it through Linus's vicous editing. Screen blanking ditto.
I note that when at the bottom of the screen now, hitting enter causes
an unpleasant jitter on the screen, in VC. This is probably as
a result of using Video memory. I plan on posting a patch (as soon
as I get time) that will let you use ram buffers instead of video
ram, as a conditional compile. It turns out that when X shows up,
we will need buffers to store video contents in anyways, but ...
The problem is that the screen size can be determined dynamically
at boot time. This is nice, but I think a conditional compile
should be added to setup.S to allow the individual to select a
screen dimension as the default, either with a timeout upon
selection, or with just a hardcoded one videomode. ie
#define DEFAULT_VIDEO_MODE ati3
#ifdef DEFAULT_VIDEO_MODE ati3
use ati3 as default
#else
use detection, (maybe default to 80x25 if timeout)
#endif
The other problem with my old console.c was that the buffer size had
to be hard coded. This was tough to do when the screen dimensions
could vary dynamically. My new approach will be:
/*#define RAM_BUFFER_SIZE (MAX_CONSOLES*MAX_COLS*MAX_ROWS)*/
#ifdef RAM_BUFFER_SIZE
static short vc_video_buf[RAM_BUFFER_SIZE];
#endif
This will allow each individual to either specify exactly how much
precious kernel memory they want to give up or, how many consoles
they desire of whic maximum dimensions, all without modifying code.
This will also allow VC to work with non EGA/VGA, not a problem
for me, but no good reason to exclude them.
It will also allow screen blanking to work on all systems, again.
None of this should be too tough, since Linus has already done all the
knotty work of dividing up a single big buffer. And when
X (or MGR) comes, coexistance should be easy.
Finally, setterm.c will be changed to no longer consult your terminal
type. Else, you will note that con132x44 does not allow setterm to
do anything.
Sorry about all this mess, but due to my situation (sob, sob), I
don't have all that much time to devote to Linux. Most of the
stuff I submitted to Linus was, shall we say, half baked, but
well intentioned. But I am ecstatic to play any part in it.
In fact, it looks like Linus and I, between us, have managed
to pound out a design for shared libraries that is excruciatingly
simple to implement. That is what I will be working on next,
(unless Linus beets me to the punch).