freebsd-dev/sys/conf
Ed Schouten b4b1c5169d Replace syscons terminal renderer by a new renderer that uses libteken.
Some time ago I started working on a library called libteken, which is
terminal emulator. It does not buffer any screen contents, but only
keeps terminal state, such as cursor position, attributes, etc. It
should implement all escape sequences that are implemented by the
cons25 terminal emulator, but also a fair amount of sequences that are
present in VT100 and xterm.

A lot of random notes, which could be of interest to users/developers:

- Even though I'm leaving the terminal type set to `cons25', users can
  do experiments with placing `xterm-color' in /etc/ttys. Because we
  only implement a subset of features of xterm, this may cause
  artifacts. We should consider extending libteken, because in my
  opinion xterm is the way to go. Some missing features:

  - Keypad application mode (DECKPAM)
  - Character sets (SCS)

- libteken is filled with a fair amount of assertions, but unfortunately
  we cannot go into the debugger anymore if we fail them. I've done
  development of this library almost entirely in userspace. In
  sys/dev/syscons/teken there are two applications that can be helpful
  when debugging the code:

  - teken_demo: a terminal emulator that can be started from a regular
    xterm that emulates a terminal using libteken. This application can
    be very useful to debug any rendering issues.

  - teken_stress: a stress testing application that emulates random
    terminal output. libteken has literally survived multiple terabytes
    of random input.

- libteken also includes support for UTF-8, but unfortunately our input
  layer and font renderer don't support this. If users want to
  experiment with UTF-8 support, they can enable `TEKEN_UTF8' in
  teken.h. If you recompile your kernel or the teken_demo application,
  you can hold some nice experiments.

- I've left PC98 the way it is right now. The PC98 platform has a custom
  syscons renderer, which supports some form of localised input. Maybe
  we should port PC98 to libteken by the time syscons supports UTF-8?

- I've removed the `dumb' terminal emulator. It has been broken for
  years. It hasn't survived the `struct proc' -> `struct thread'
  conversion.

- To prevent confusion among people that want to hack on libteken:
  unlike syscons, the state machines that parse the escape sequences are
  machine generated. This means that if you want to add new escape
  sequences, you have to add an entry to the `sequences' file. This will
  cause new entries to be added to `teken_state.h'.

- Any rendering artifacts that didn't occur prior to this commit are by
  accident. They should be reported to me, so I can fix them.

Discussed on:	current@, hackers@
Discussed with:	philip (at 25C3)
2009-01-01 13:26:53 +00:00
..
defines
files Replace syscons terminal renderer by a new renderer that uses libteken. 2009-01-01 13:26:53 +00:00
files.amd64 Replace syscons terminal renderer by a new renderer that uses libteken. 2009-01-01 13:26:53 +00:00
files.arm Switch to ath hal source code. Note this removes the ath_hal 2008-12-01 16:53:01 +00:00
files.i386 Replace syscons terminal renderer by a new renderer that uses libteken. 2009-01-01 13:26:53 +00:00
files.ia64 Replace syscons terminal renderer by a new renderer that uses libteken. 2009-01-01 13:26:53 +00:00
files.mips Switch to ath hal source code. Note this removes the ath_hal 2008-12-01 16:53:01 +00:00
files.pc98 Switch to ath hal source code. Note this removes the ath_hal 2008-12-01 16:53:01 +00:00
files.powerpc Replace syscons terminal renderer by a new renderer that uses libteken. 2009-01-01 13:26:53 +00:00
files.sparc64 Replace syscons terminal renderer by a new renderer that uses libteken. 2009-01-01 13:26:53 +00:00
files.sun4v Modularize the Open Firmware client interface to allow run-time switching 2008-12-20 00:33:10 +00:00
kern.mk Disable SSP for mips until support is added to the base architecture. 2008-07-23 06:16:34 +00:00
kern.post.mk Add CTF conversion to the objects compiled from generated code. 2008-07-05 06:12:14 +00:00
kern.pre.mk Switch to ath hal source code. Note this removes the ath_hal 2008-12-01 16:53:01 +00:00
kmod_syms.awk
kmod.mk add usb2_if.m to mfiles to unbreak build of modules. 2008-11-04 03:42:01 +00:00
ldscript.amd64
ldscript.arm Create a non-elf pure binary version of the kernel as well. 2005-11-24 02:25:49 +00:00
ldscript.i386
ldscript.ia64
ldscript.mips Merge from p4: add Juniper license statement. 2008-09-19 03:36:37 +00:00
ldscript.mips.cfe Fix the CFE ldscript after the cutover to tradmips. 2008-10-13 06:07:58 +00:00
ldscript.powerpc Avoid hardcoding the kernel link address in the linker script. 2008-02-27 00:03:23 +00:00
ldscript.sparc64
Makefile.amd64 Add a kernel option for amd64 to compile with the frame on the stack 2008-05-23 03:52:55 +00:00
Makefile.arm enable use of modules but disable them by adding MODULES_OVERRIDE="" 2008-11-30 17:53:19 +00:00
Makefile.i386 Revert config(8) version bump. It brings major pain for people working on 2007-05-16 17:23:54 +00:00
Makefile.ia64 Remove definition of the GCC3 variable. It was introduced in rev. 2007-06-02 21:30:39 +00:00
Makefile.mips Merge in the mips specific configuration files and such from the 2008-04-13 06:25:43 +00:00
Makefile.pc98 Revert config(8) version bump. It brings major pain for people working on 2007-05-16 17:23:54 +00:00
Makefile.powerpc Revert config(8) version bump. It brings major pain for people working on 2007-05-16 17:23:54 +00:00
Makefile.sparc64 Revert config(8) version bump. It brings major pain for people working on 2007-05-16 17:23:54 +00:00
Makefile.sun4v Revert config(8) version bump. It brings major pain for people working on 2007-05-16 17:23:54 +00:00
makeLINT.mk
makeLINT.sed
newvers.sh Backout svn r183528. 2008-10-03 10:08:36 +00:00
NOTES This main goals of this project are: 2008-12-15 06:10:57 +00:00
options Hook up the ether_echo node and fix the man page 2008-12-25 07:34:14 +00:00
options.amd64 Remove ISDN4BSD (I4B) from HEAD as it is not MPSAFE and 2008-05-26 10:40:09 +00:00
options.arm Merge WIP from p4: 2008-12-13 01:21:37 +00:00
options.i386 Integrate configuration bits for compling xen. 2008-08-15 20:58:57 +00:00
options.ia64 Add option EXCEPTION_TRACING, which enables KTR-like functionality 2007-07-30 22:42:33 +00:00
options.mips Merge from p4: add Juniper license statement. 2008-09-19 03:36:37 +00:00
options.pc98 Remove obselete PECOFF image activator support. 2008-06-14 12:51:44 +00:00
options.powerpc Initial support for Freescale PowerQUICC III MPC85xx system-on-chip family. 2008-03-03 17:17:00 +00:00
options.sparc64 Add a driver for Schizo' Fireplane/Safari to PCI 2.1 and Tomatillo' 2008-09-28 00:07:05 +00:00
options.sun4v Remove remnants from the sparc64 origin of this file and which are 2007-01-19 12:22:50 +00:00
systags.sh Use a simpler way to reach the <machine> include dir, which should 2005-12-03 21:37:54 +00:00