HISTORY ======= Before I got hooked on 386bsd I used SCO(tm) (xenix/unix) for years at work. From the start of 386bsd I missed the multiscreens(tm) I was used to from the SCO(tm) environment. Many netters told me that I should use (i)screen to get the multiple logins I missed, and that multiple screens doesn't belong in the kernel. Using screen was (to me) kind of driving a VolksWagen, when I knew how it felt to be driving a Porsche. Syscons is the result of this addiction. There are arguments both for and against doing virtual consoles in the kernel opposed to in an userlevel program: + It has superior performance (less overhead) + It has instant reaction to keypresses + It takes less memory all in all + It allows using graphics modes on any of the consoles + Every virtual console is "as good" as the real thing + Doesn't use pseudo ttys - Works only on console, not on serial/net connections - It takes more kernel memory (~20K more than pccons, w/12 consoles) If one wants to have multiple screens via a serial or net connection, screen is a good candidate, but locally I prefer the kernel approach for the reasons given above. On top of the virtual consoles I wanted a SCO(tm) ANSI color console emulator, so that the terminal interface was well known too. This was only partly implemented in 0.1 but 0.2 has allmost all (documented) SCO(tm) Color Console features. These items are missing: loading function key strings, lock/unlock keyboard, send screen to host, background blink / highlight, alternate graphics char set. The support of "foreign" keyboards is a must when you live outside the states, so that got added via ioctl's compatible with SYSV386/SCO. While using a PC one quickly develop a need for a programming interface to the graphics card. The choice of emulating the SYSV386/SCO ioctls was mainly because I knew this interface, and secondly because I didn't want to port every piece of (graphics) software to a new way of doing things (lazyness has brought us many great things :-) A main concern through this venture was to be totally backwards compatible with the original (386bsd-0.1) console driver pccons, and this still holds. / sos