aboutsummaryrefslogtreecommitdiffstats
path: root/share
diff options
context:
space:
mode:
authorsvn2git <svn2git@FreeBSD.org>1994-07-01 00:00:00 -0800
committersvn2git <svn2git@FreeBSD.org>1994-07-01 00:00:00 -0800
commit5e0e9b99dc3fc0ecd49d929db0d57c784b66f481 (patch)
treee779b5a6edddbb949b7990751b12d6f25304ba86 /share
parenta16f65c7d117419bd266c28a1901ef129a337569 (diff)
downloadsrc-5e0e9b99dc3fc0ecd49d929db0d57c784b66f481.tar.gz
src-5e0e9b99dc3fc0ecd49d929db0d57c784b66f481.zip
Release FreeBSD 1.1.5.1release/1.1.5.1_cvsreleng/1
This commit was manufactured to restore the state of the 1.1.5.1-RELEASE image. Releases prior to 5.3-RELEASE are omitting the secure/ and crypto/ subdirs.
Diffstat (limited to 'share')
-rw-r--r--share/Makefile4
-rw-r--r--share/doc/ps1/06.sysman/a.t4
-rw-r--r--share/doc/smm/05.fsck/3.t2
-rw-r--r--share/doc/smm/05.fsck/Makefile2
-rw-r--r--share/doc/usd/04.csh/Makefile1
-rw-r--r--share/doc/usd/04.csh/csh.a2
-rw-r--r--share/doc/usd/34.trek/trek.me17
-rw-r--r--share/locale/Ja_JP.EUC158
-rw-r--r--share/locale/Makefile23
-rw-r--r--share/locale/POSIX33
-rw-r--r--share/locale/Russian.koi8-r39
-rw-r--r--share/locale/ldef.h53
-rw-r--r--share/locale/lex.l152
-rw-r--r--share/locale/mklocale.1257
-rw-r--r--share/locale/yacc.y821
-rw-r--r--share/man/man4/ddb.43
-rw-r--r--share/man/man4/man4.i386/Makefile4
-rw-r--r--share/man/man4/man4.i386/lpa.462
-rw-r--r--share/man/man4/man4.i386/lpt.46
-rw-r--r--share/man/man4/man4.i386/sio.4291
-rw-r--r--share/man/man4/man4.i386/tw.4111
-rw-r--r--share/man/man5/Makefile6
-rw-r--r--share/man/man5/pcfs.5294
-rw-r--r--share/man/man5/skey.access.534
-rw-r--r--share/man/man7/mdoc.7409
-rw-r--r--share/man/man8/adduser.816
-rw-r--r--share/me/footnote.me2
-rw-r--r--share/me/me.790
-rw-r--r--share/me/tmac.e4
-rw-r--r--share/mk/bsd.dep.mk2
-rw-r--r--share/mk/bsd.doc.mk5
-rw-r--r--share/mk/bsd.lib.mk26
-rw-r--r--share/mk/bsd.man.mk53
-rw-r--r--share/mk/bsd.own.mk2
-rw-r--r--share/mk/bsd.prog.mk52
-rw-r--r--share/mk/sys.mk8
-rwxr-xr-xshare/syscons/examples/setrus18
-rw-r--r--share/syscons/fonts/Makefile15
-rw-r--r--share/syscons/fonts/alt-8x14.fnt83
-rw-r--r--share/syscons/fonts/alt-8x16.fnt95
-rw-r--r--share/syscons/fonts/alt-8x8.fnt49
-rw-r--r--share/syscons/fonts/altb-8x16 (renamed from share/syscons/fonts/alt8x16.fnt)bin4096 -> 4096 bytes
-rw-r--r--share/syscons/fonts/altb-8x16.fnt95
-rw-r--r--share/syscons/fonts/altc-8x16.fnt95
-rw-r--r--share/syscons/fonts/cp850-8x14.fnt83
-rw-r--r--share/syscons/fonts/cp850-8x16.fnt95
-rw-r--r--share/syscons/fonts/cp850-8x8.fnt49
-rw-r--r--share/syscons/fonts/cp865-8x14.fnt83
-rw-r--r--share/syscons/fonts/cp865-8x16.fnt95
-rw-r--r--share/syscons/fonts/cp865-8x8.fnt49
-rw-r--r--share/syscons/fonts/iso-8x14.fnt83
-rw-r--r--share/syscons/fonts/iso-8x16.fnt95
-rw-r--r--share/syscons/fonts/iso-8x8.fnt49
-rw-r--r--share/syscons/fonts/koi8-8x14.fnt83
-rw-r--r--share/syscons/fonts/koi8-8x16.fnt95
-rw-r--r--share/syscons/fonts/koi8-8x8.fnt49
-rw-r--r--share/syscons/fonts/koi8b-8x16bin0 -> 4096 bytes
-rw-r--r--share/syscons/fonts/koi8b-8x16.fnt95
-rw-r--r--share/syscons/fonts/koi8c-8x16.fnt95
-rw-r--r--share/syscons/keymaps/Makefile24
-rw-r--r--share/syscons/keymaps/danish.cp865.kbd109
-rw-r--r--share/syscons/keymaps/danish.iso.kbd109
-rw-r--r--share/syscons/keymaps/german.cp850.kbd109
-rw-r--r--share/syscons/keymaps/german.iso.kbd109
-rw-r--r--share/syscons/keymaps/ru.koi8-r4
-rw-r--r--share/syscons/keymaps/ru.koi8-r.kbd237
-rw-r--r--share/syscons/keymaps/swedish.cp850.kbd109
-rw-r--r--share/syscons/keymaps/swedish.iso64
-rw-r--r--share/syscons/keymaps/swedish.iso.kbd109
-rw-r--r--share/syscons/keymaps/uk.cp850.kbd109
-rw-r--r--share/syscons/keymaps/uk.iso.kbd109
-rw-r--r--share/syscons/keymaps/us.iso.kbd109
-rw-r--r--share/syscons/scrnmaps/Makefile16
-rw-r--r--share/syscons/scrnmaps/koi8-r2alt.scm9
-rw-r--r--share/tmac/Makefile7
-rw-r--r--share/tmac/doc-syms14
-rw-r--r--share/zoneinfo/Makefile2
77 files changed, 5565 insertions, 389 deletions
diff --git a/share/Makefile b/share/Makefile
index 63922a09cbb2..847d13babe94 100644
--- a/share/Makefile
+++ b/share/Makefile
@@ -1,10 +1,10 @@
# From: @(#)Makefile 5.8.1.1 (Berkeley) 5/7/91
-# $Id: Makefile,v 1.3 1993/09/29 02:15:37 rgrimes Exp $
+# $Id: Makefile,v 1.4 1994/04/08 07:03:04 csgr Exp $
# Missing: ms
# Broken: doc
-SUBDIR= dict man me misc mk skel syscons tabset \
+SUBDIR= dict locale man me misc mk skel syscons tabset \
termcap tmac zoneinfo
.include <bsd.subdir.mk>
diff --git a/share/doc/ps1/06.sysman/a.t b/share/doc/ps1/06.sysman/a.t
index 5529d08fd0f3..71bd67cbe7db 100644
--- a/share/doc/ps1/06.sysman/a.t
+++ b/share/doc/ps1/06.sysman/a.t
@@ -86,10 +86,10 @@ madvise\(dg give memory management advice
mincore\(dg determine core residency of pages
msleep\(dg sleep on a lock
mwakeup\(dg wakeup process sleeping on a lock
+.TE
.FS
\(dg Not supported in 4.3BSD.
.FE
-.TE
.in -5
.h 1.3 "Signals
.in +5
@@ -128,10 +128,10 @@ close close descriptor
select multiplex input/output
fcntl control descriptor options
wrap\(dg wrap descriptor with protocol
+.TE
.FS
\(dg Not supported in 4.3BSD.
.FE
-.TE
.in -5
.h 1.6 "Resource controls
.in +5
diff --git a/share/doc/smm/05.fsck/3.t b/share/doc/smm/05.fsck/3.t
index fb4d3a40792f..28fc28a9a1a1 100644
--- a/share/doc/smm/05.fsck/3.t
+++ b/share/doc/smm/05.fsck/3.t
@@ -371,7 +371,7 @@ will replace them with the correct values.
If there are multiple hard links to a directory,
the first one encountered is considered the real parent
to which ``\fB..\fP'' should point;
-\fIfsck\P recommends deletion for the subsequently discovered names.
+\fIfsck\fP recommends deletion for the subsequently discovered names.
.NH 2
File system connectivity
.PP
diff --git a/share/doc/smm/05.fsck/Makefile b/share/doc/smm/05.fsck/Makefile
index 6356d4fcc348..a0ad254a13d5 100644
--- a/share/doc/smm/05.fsck/Makefile
+++ b/share/doc/smm/05.fsck/Makefile
@@ -5,7 +5,7 @@ VOLUME= smm
DOC= 05.fsck
SRCS= 0.t 1.t 2.t 3.t 4.t
-TROFF= ditroff
+MACROS = -ms
.include <bsd.doc.mk>
diff --git a/share/doc/usd/04.csh/Makefile b/share/doc/usd/04.csh/Makefile
index b0b8ee3a2eb3..cbbac8aeacc9 100644
--- a/share/doc/usd/04.csh/Makefile
+++ b/share/doc/usd/04.csh/Makefile
@@ -3,6 +3,7 @@
VOLUME= usd
DOC= 04.csh
+MACROS = -ms
SRCS= tabs csh.1 csh.2 csh.3 csh.4 csh.a csh.g
diff --git a/share/doc/usd/04.csh/csh.a b/share/doc/usd/04.csh/csh.a
index 8482b6d074a1..6766b0851cd7 100644
--- a/share/doc/usd/04.csh/csh.a
+++ b/share/doc/usd/04.csh/csh.a
@@ -56,7 +56,7 @@ Syntactic metacharacters
Filename metacharacters
.DS
/ 1.6 separates components of a file's pathname
-\. 1.6 separates root parts of a file name from extensions
+\&. 1.6 separates root parts of a file name from extensions
? 1.6 expansion character matching any single character
* 1.6 expansion character matching any sequence of characters
[ ] 1.6 expansion sequence matching any single character from a set
diff --git a/share/doc/usd/34.trek/trek.me b/share/doc/usd/34.trek/trek.me
index 13bbd1e0ce16..64dd26d8b19d 100644
--- a/share/doc/usd/34.trek/trek.me
+++ b/share/doc/usd/34.trek/trek.me
@@ -311,7 +311,6 @@ K the villain
a black hole
.in -12
.fi
-.ev
.pp
The name of the starsystem is listed underneath
the short range scan.
@@ -429,19 +428,19 @@ Long range scan for quadrant 0,3
.sp
.ie t \{\
.TS
-l1 c1 ce1 c1 ce1 c1 ce1 c0
-l1 l s s s s s s s0
-l1 c1 ce1 c1 ce1 c1 ce1 c0
-l1 l s s s s s s s0.
+l1 c1 ce1 c1 ce1 c1 ce1 c
+l1 l s s s s s s s
+l1 c1 ce1 c1 ce1 c1 ce1 c
+l1 l s s s s s s s.
2 3 4
_
! * ! * ! * !
_
.T&
-l1 c1 re1 c1 re1 c1 re1 c0
-l1 l s s s s s s s0
-l1 c1 re1 c1 re1 c1 re1 c0
-l1 l s s s s s s s0.
+l1 c1 re1 c1 re1 c1 re1 c
+l1 l s s s s s s s
+l1 c1 re1 c1 re1 c1 re1 c
+l1 l s s s s s s s.
0 ! 108 ! 6 ! 19 !
_
1 ! 9 ! /// ! 8 !
diff --git a/share/locale/Ja_JP.EUC b/share/locale/Ja_JP.EUC
new file mode 100644
index 000000000000..55eb1559660f
--- /dev/null
+++ b/share/locale/Ja_JP.EUC
@@ -0,0 +1,158 @@
+# @(#)Japanese 8.1 (Berkeley) 6/6/93
+
+/*
+ * Japanese LOCALE_CTYPE definitions using EUC of JIS character sets
+ */
+
+ENCODING "EUC"
+
+/* JIS JIS JIS */
+/* X201 X208 X201 */
+/* 00-7f 84-fe */
+
+VARIABLE 1 0x0000 2 0x8080 2 0x0080 3 0x8000 0x8080
+
+/*
+ * Code Set 1
+ */
+ALPHA 'A' - 'Z' 'a' - 'z'
+CONTROL 0x00 - 0x1f 0x7f
+DIGIT '0' - '9'
+GRAPH 0x21 - 0x7e
+LOWER 'a' - 'z'
+PUNCT 0x21 - 0x2f 0x3a - 0x40 0x5b - 0x60 0x7b - 0x7e
+SPACE 0x09 - 0x0d 0x20
+UPPER 'A' - 'Z'
+XDIGIT 'a' - 'f' 'A' - 'F'
+BLANK ' ' '\t'
+PRINT 0x20 - 0x7e
+
+MAPLOWER < 'A' - 'Z' : 'a' >
+MAPLOWER < 'a' - 'z' : 'a' >
+MAPUPPER < 'A' - 'Z' : 'A' >
+MAPUPPER < 'a' - 'z' : 'A' >
+TODIGIT < '0' - '9' : 0 >
+TODIGIT < 'A' - 'F' : 10 >
+TODIGIT < 'a' - 'f' : 10 >
+
+/*
+ * Code Set 2
+ */
+
+SPACE 0xa1a1
+PHONOGRAM 0xa1bc
+SPECIAL 0xa1a2 - 0xa1fe
+PUNCT 0xa1a2 - 0xa1f8 /* A few too many in here... */
+
+SPECIAL 0xa2a1 - 0xa2ae 0xa2ba - 0xa2c1 0xa2ca - 0xa2d0 0xa2dc - 0xa2ea
+SPECIAL 0xa2f2 - 0xa2f9 0xa2fe
+
+DIGIT 0xa3b0 - 0xa3b9
+UPPER 0xa3c1 - 0xa3da /* Romaji */
+LOWER 0xa3e1 - 0xa3fa /* Romaji */
+MAPLOWER < 0xa3c1 - 0xa3da : 0xa3e1 > /* English */
+MAPLOWER < 0xa3e1 - 0xa3fa : 0xa3e1 > /* English */
+MAPUPPER < 0xa3c1 - 0xa3da : 0xa3c1 >
+MAPUPPER < 0xa3e1 - 0xa3fa : 0xa3c1 >
+
+XDIGIT 0xa3c1 - 0xa3c6 0xa3e1 - 0xa3e6
+
+TODIGIT < 0xa3b0 - 0xa3b9 : 0 >
+TODIGIT < 0xa3c1 - 0xa3c6 : 10 >
+TODIGIT < 0xa3e1 - 0xa3e6 : 10 >
+
+PHONOGRAM 0xa4a1 - 0xa4f3
+PHONOGRAM 0xa5a1 - 0xa5f6
+
+UPPER 0xa6a1 - 0xa6b8 /* Greek */
+LOWER 0xa6c1 - 0xa6d8 /* Greek */
+MAPLOWER < 0xa6a1 - 0xa6b8 : 0xa6c1 >
+MAPLOWER < 0xa6c1 - 0xa6d8 : 0xa6c1 >
+MAPUPPER < 0xa6a1 - 0xa6b8 : 0xa6a1 >
+MAPUPPER < 0xa6c1 - 0xa6d8 : 0xa6a1 >
+
+UPPER 0xa7a1 - 0xa7c1 /* Cyrillic */
+LOWER 0xa7d1 - 0xa7f1 /* Cyrillic */
+MAPLOWER < 0xa7a1 - 0xa7c1 : 0xa7d1 >
+MAPLOWER < 0xa7d1 - 0xa7f1 : 0xa7d1 >
+MAPUPPER < 0xa7a1 - 0xa7c1 : 0xa7a1 >
+MAPUPPER < 0xa7d1 - 0xa7f1 : 0xa7a1 >
+
+SPECIAL 0xa8a1 - 0xa8c0
+
+IDEOGRAM 0xb0a1 - 0xb0fe
+IDEOGRAM 0xb1a1 - 0xb1fe
+IDEOGRAM 0xb2a1 - 0xb2fe
+IDEOGRAM 0xb3a1 - 0xb3fe
+IDEOGRAM 0xb4a1 - 0xb4fe
+IDEOGRAM 0xb5a1 - 0xb5fe
+IDEOGRAM 0xb6a1 - 0xb6fe
+IDEOGRAM 0xb7a1 - 0xb7fe
+IDEOGRAM 0xb8a1 - 0xb8fe
+IDEOGRAM 0xb9a1 - 0xb9fe
+IDEOGRAM 0xbaa1 - 0xbafe
+IDEOGRAM 0xbba1 - 0xbbfe
+IDEOGRAM 0xbca1 - 0xbcfe
+IDEOGRAM 0xbda1 - 0xbdfe
+IDEOGRAM 0xbea1 - 0xbefe
+IDEOGRAM 0xbfa1 - 0xbffe
+IDEOGRAM 0xc0a1 - 0xc0fe
+IDEOGRAM 0xc1a1 - 0xc1fe
+IDEOGRAM 0xc2a1 - 0xc2fe
+IDEOGRAM 0xc3a1 - 0xc3fe
+IDEOGRAM 0xc4a1 - 0xc4fe
+IDEOGRAM 0xc5a1 - 0xc5fe
+IDEOGRAM 0xc6a1 - 0xc6fe
+IDEOGRAM 0xc7a1 - 0xc7fe
+IDEOGRAM 0xc8a1 - 0xc8fe
+IDEOGRAM 0xc9a1 - 0xc9fe
+IDEOGRAM 0xcaa1 - 0xcafe
+IDEOGRAM 0xcba1 - 0xcbfe
+IDEOGRAM 0xcca1 - 0xccfe
+IDEOGRAM 0xcda1 - 0xcdfe
+IDEOGRAM 0xcea1 - 0xcefe
+IDEOGRAM 0xcfa1 - 0xcfd3
+IDEOGRAM 0xd0a1 - 0xd0fe
+IDEOGRAM 0xd1a1 - 0xd1fe
+IDEOGRAM 0xd2a1 - 0xd2fe
+IDEOGRAM 0xd3a1 - 0xd3fe
+IDEOGRAM 0xd4a1 - 0xd4fe
+IDEOGRAM 0xd5a1 - 0xd5fe
+IDEOGRAM 0xd6a1 - 0xd6fe
+IDEOGRAM 0xd7a1 - 0xd7fe
+IDEOGRAM 0xd8a1 - 0xd8fe
+IDEOGRAM 0xd9a1 - 0xd9fe
+IDEOGRAM 0xdaa1 - 0xdafe
+IDEOGRAM 0xdba1 - 0xdbfe
+IDEOGRAM 0xdca1 - 0xdcfe
+IDEOGRAM 0xdda1 - 0xddfe
+IDEOGRAM 0xdea1 - 0xdefe
+IDEOGRAM 0xdfa1 - 0xdffe
+IDEOGRAM 0xe0a1 - 0xe0fe
+IDEOGRAM 0xe1a1 - 0xe1fe
+IDEOGRAM 0xe2a1 - 0xe2fe
+IDEOGRAM 0xe3a1 - 0xe3fe
+IDEOGRAM 0xe4a1 - 0xe4fe
+IDEOGRAM 0xe5a1 - 0xe5fe
+IDEOGRAM 0xe6a1 - 0xe6fe
+IDEOGRAM 0xe7a1 - 0xe7fe
+IDEOGRAM 0xe8a1 - 0xe8fe
+IDEOGRAM 0xe9a1 - 0xe9fe
+IDEOGRAM 0xeaa1 - 0xeafe
+IDEOGRAM 0xeba1 - 0xebfe
+IDEOGRAM 0xeca1 - 0xecfe
+IDEOGRAM 0xeda1 - 0xedfe
+IDEOGRAM 0xeea1 - 0xeefe
+IDEOGRAM 0xefa1 - 0xeffe
+IDEOGRAM 0xf0a1 - 0xf0fe
+IDEOGRAM 0xf1a1 - 0xf1fe
+IDEOGRAM 0xf2a1 - 0xf2fe
+IDEOGRAM 0xf3a1 - 0xf3fe
+IDEOGRAM 0xf4a1 - 0xf4a4
+
+/*
+ * This is for Code Set 3, half-width kana
+ */
+SPECIAL 0xa1 - 0xdf
+PHONOGRAM 0xa1 - 0xdf
+CONTROL 0x84 - 0x97 0x9b - 0x9f 0xe0 - 0xfe
diff --git a/share/locale/Makefile b/share/locale/Makefile
new file mode 100644
index 000000000000..76b34640c45e
--- /dev/null
+++ b/share/locale/Makefile
@@ -0,0 +1,23 @@
+# From: @(#)Makefile 8.1 (Berkeley) 6/7/93
+# $Id: Makefile,v 1.4 1994/04/07 14:09:53 ats Exp $
+
+PROG= mklocale
+SRCS= yacc.c lex.c
+CFLAGS+=-I.
+CLEANFILES+=y.tab.h yacc.c lex.c
+BINDIR= /usr/bin
+MAN1= mklocale.1
+
+LOCALES= Ja_JP.EUC POSIX Russian.koi8-r
+LOCALEDIR= ${DESTDIR}/usr/share/locale
+
+afterinstall:
+ -if [ -d ${LOCALEDIR} ]; then true; else mkdir -p ${LOCALEDIR}; fi
+ for locale in ${LOCALES}; do \
+ mkdir -p ${LOCALEDIR}/$$locale || true; \
+ mklocale -o ${LOCALEDIR}/$$locale/LC_CTYPE ${.CURDIR}/$$locale; \
+ chmod ${BINMODE} ${LOCALEDIR}/$$locale; \
+ done
+ chown -R ${BINOWN}.${BINGRP} ${LOCALEDIR}
+
+.include <bsd.prog.mk>
diff --git a/share/locale/POSIX b/share/locale/POSIX
new file mode 100644
index 000000000000..ead0bc8c18ce
--- /dev/null
+++ b/share/locale/POSIX
@@ -0,0 +1,33 @@
+# @(#)POSIX 8.1 (Berkeley) 6/6/93
+
+/*
+ * Standard LOCALE_CTYPE for the C Locale
+ */
+ENCODING "UTF2"
+VARIABLE A comment line or data line. Only 1 allowed. Copied verbatim.
+
+#
+# This is a comment
+#
+ALPHA 'A' - 'Z' 'a' - 'z'
+CONTROL 0x00 - 0x1f 0x7f
+DIGIT '0' - '9'
+GRAPH 0x21 - 0x7e
+LOWER 'a' - 'z'
+PUNCT 0x21 - 0x2f 0x3a - 0x40 0x5b - 0x60 0x7b - 0x7e
+SPACE 0x09 - 0x0d 0x20
+UPPER 'A' - 'Z'
+XDIGIT 'a' - 'f' 'A' - 'F'
+BLANK ' ' '\t'
+PRINT 0x20 - 0x7e
+# IDEOGRAM
+# SPECIAL
+# PHONEGRAM
+
+MAPLOWER <'A' - 'Z' : 'a'>
+MAPLOWER <'a' - 'z' : 'a'>
+MAPUPPER <'A' - 'Z' : 'A'>
+MAPUPPER <'a' - 'z' : 'A'>
+TODIGIT <'0' - '9' : 0>
+TODIGIT <'A' - 'F' : 10>
+TODIGIT <'a' - 'f' : 10>
diff --git a/share/locale/Russian.koi8-r b/share/locale/Russian.koi8-r
new file mode 100644
index 000000000000..d2164c45a997
--- /dev/null
+++ b/share/locale/Russian.koi8-r
@@ -0,0 +1,39 @@
+/*
+ * LOCALE_CTYPE for Russian koi8-r character set (RFC1489)
+ */
+ENCODING "NONE"
+VARIABLE Russian koi8-r character set by ache@astral.msk.su
+
+#
+# This is a comment
+#
+ALPHA 'A' - 'Z' 'a' - 'z' 0xa3 0xb3 0xc0 - 0xff
+CONTROL 0x00 - 0x1f 0x7f
+DIGIT '0' - '9'
+GRAPH 0x21 - 0x7e 0x80 - 0xff
+LOWER 'a' - 'z' 0xa3 0xc0 - 0xdf
+PUNCT 0x21 - 0x2f 0x3a - 0x40 0x5b - 0x60 0x7b - 0x7e
+SPACE 0x09 - 0x0d 0x20
+UPPER 'A' - 'Z' 0xb3 0xe0 - 0xff
+XDIGIT 'a' - 'f' 'A' - 'F'
+BLANK ' ' '\t'
+PRINT 0x20 - 0x7e 0x80 - 0xff
+# IDEOGRAM
+# SPECIAL
+# PHONEGRAM
+
+MAPLOWER <'A' - 'Z' : 'a'>
+MAPLOWER <'a' - 'z' : 'a'>
+MAPLOWER <0xb3 0xa3>
+MAPLOWER <0xa3 0xa3>
+MAPLOWER <0xe0 - 0xff : 0xc0>
+MAPLOWER <0xc0 - 0xdf : 0xc0>
+MAPUPPER <'A' - 'Z' : 'A'>
+MAPUPPER <'a' - 'z' : 'A'>
+MAPUPPER <0xb3 0xb3>
+MAPUPPER <0xa3 0xb3>
+MAPUPPER <0xe0 - 0xff : 0xe0>
+MAPUPPER <0xc0 - 0xdf : 0xe0>
+TODIGIT <'0' - '9' : 0>
+TODIGIT <'A' - 'F' : 10>
+TODIGIT <'a' - 'f' : 10>
diff --git a/share/locale/ldef.h b/share/locale/ldef.h
new file mode 100644
index 000000000000..95b51dac478f
--- /dev/null
+++ b/share/locale/ldef.h
@@ -0,0 +1,53 @@
+/*-
+ * Copyright (c) 1993
+ * The Regents of the University of California. All rights reserved.
+ *
+ * This code is derived from software contributed to Berkeley by
+ * Paul Borman at Krystal Technologies.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * 3. All advertising materials mentioning features or use of this software
+ * must display the following acknowledgement:
+ * This product includes software developed by the University of
+ * California, Berkeley and its contributors.
+ * 4. Neither the name of the University nor the names of its contributors
+ * may be used to endorse or promote products derived from this software
+ * without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ *
+ * @(#)ldef.h 8.1 (Berkeley) 6/6/93
+ */
+
+/*
+ * This should look a LOT like a _RuneEntry
+ */
+typedef struct rune_list {
+ rune_t min;
+ rune_t max;
+ rune_t map;
+ u_long *types;
+ struct rune_list *next;
+} rune_list;
+
+typedef struct rune_map {
+ u_long map[_CACHED_RUNES];
+ rune_list *root;
+} rune_map;
diff --git a/share/locale/lex.l b/share/locale/lex.l
new file mode 100644
index 000000000000..0e2f1a9833b3
--- /dev/null
+++ b/share/locale/lex.l
@@ -0,0 +1,152 @@
+%{
+/*-
+ * Copyright (c) 1993
+ * The Regents of the University of California. All rights reserved.
+ *
+ * This code is derived from software contributed to Berkeley by
+ * Paul Borman at Krystal Technologies.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * 3. All advertising materials mentioning features or use of this software
+ * must display the following acknowledgement:
+ * This product includes software developed by the University of
+ * California, Berkeley and its contributors.
+ * 4. Neither the name of the University nor the names of its contributors
+ * may be used to endorse or promote products derived from this software
+ * without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ */
+
+#ifndef lint
+static char sccsid[] = "@(#)lex.l 8.1 (Berkeley) 6/6/93";
+#endif /* not lint */
+
+#include <ctype.h>
+#include <stdio.h>
+#include <stdlib.h>
+
+#include "ldef.h"
+#include "y.tab.h"
+%}
+
+ODIGIT [0-7]
+DIGIT [0-9]
+XDIGIT [0-9a-fA-F]
+W [\t\n\r ]
+
+%%
+\'.\' { yylval.rune = yytext[1];
+ return(RUNE); }
+
+'\\a' { yylval.rune = '\a';
+ return(RUNE); }
+'\\b' { yylval.rune = '\b';
+ return(RUNE); }
+'\\f' { yylval.rune = '\f';
+ return(RUNE); }
+'\\n' { yylval.rune = '\n';
+ return(RUNE); }
+'\\r' { yylval.rune = '\r';
+ return(RUNE); }
+'\\t' { yylval.rune = '\t';
+ return(RUNE); }
+'\\v' { yylval.rune = '\v';
+ return(RUNE); }
+
+0x{XDIGIT}+ { yylval.rune = strtol(yytext, 0, 16);
+ return(RUNE); }
+0{ODIGIT}+ { yylval.rune = strtol(yytext, 0, 8);
+ return(RUNE); }
+{DIGIT}+ { yylval.rune = strtol(yytext, 0, 10);
+ return(RUNE); }
+
+
+MAPLOWER { return(MAPLOWER); }
+MAPUPPER { return(MAPUPPER); }
+TODIGIT { return(DIGITMAP); }
+INVALID { return(INVALID); }
+
+ALPHA { yylval.i = _A|_R|_G; return(LIST); }
+CONTROL { yylval.i = _C; return(LIST); }
+DIGIT { yylval.i = _D|_R|_G; return(LIST); }
+GRAPH { yylval.i = _G|_R; return(LIST); }
+LOWER { yylval.i = _L|_R|_G; return(LIST); }
+PUNCT { yylval.i = _P|_R|_G; return(LIST); }
+SPACE { yylval.i = _S; return(LIST); }
+UPPER { yylval.i = _U|_R|_G; return(LIST); }
+XDIGIT { yylval.i = _X|_R|_G; return(LIST); }
+BLANK { yylval.i = _B; return(LIST); }
+PRINT { yylval.i = _R; return(LIST); }
+IDEOGRAM { yylval.i = _I|_R|_G; return(LIST); }
+SPECIAL { yylval.i = _T|_R|_G; return(LIST); }
+PHONOGRAM { yylval.i = _Q|_R|_G; return(LIST); }
+
+VARIABLE[\t ] { static char vbuf[1024];
+ char *v = vbuf;
+ while ((*v = input()) && *v != '\n')
+ ++v;
+ if (*v) {
+ unput(*v);
+ *v = 0;
+ }
+ yylval.str = vbuf;
+ return(VARIABLE);
+ }
+
+ENCODING { return(ENCODING); }
+
+\".*\" { char *e = yytext + 1;
+ yylval.str = e;
+ while (*e && *e != '"')
+ ++e;
+ *e = 0;
+ return(STRING); }
+
+\<|\(|\[ { return(LBRK); }
+
+\>|\)|\] { return(RBRK); }
+
+\- { return(THRU); }
+\.\.\. { return(THRU); }
+
+\: { return(':'); }
+
+{W}+ ;
+
+^\#.*\n ;
+\/\* { char lc = 0;
+ do {
+ while ((lc) != '*')
+ if ((lc = input()) == 0)
+ break;
+ } while((lc = input()) != '/');
+ }
+
+\\$ ;
+. { printf("Lex is skipping '%s'\n", yytext); }
+%%
+
+#if !defined(yywrap)
+yywrap()
+{
+ return(1);
+}
+#endif
diff --git a/share/locale/mklocale.1 b/share/locale/mklocale.1
new file mode 100644
index 000000000000..bf39466fb559
--- /dev/null
+++ b/share/locale/mklocale.1
@@ -0,0 +1,257 @@
+.\" Copyright (c) 1993
+.\" The Regents of the University of California. All rights reserved.
+.\"
+.\" This code is derived from software contributed to Berkeley by
+.\" Paul Borman at Krystal Technologies.
+.\"
+.\" Redistribution and use in source and binary forms, with or without
+.\" modification, are permitted provided that the following conditions
+.\" are met:
+.\" 1. Redistributions of source code must retain the above copyright
+.\" notice, this list of conditions and the following disclaimer.
+.\" 2. Redistributions in binary form must reproduce the above copyright
+.\" notice, this list of conditions and the following disclaimer in the
+.\" documentation and/or other materials provided with the distribution.
+.\" 3. All advertising materials mentioning features or use of this software
+.\" must display the following acknowledgement:
+.\" This product includes software developed by the University of
+.\" California, Berkeley and its contributors.
+.\" 4. Neither the name of the University nor the names of its contributors
+.\" may be used to endorse or promote products derived from this software
+.\" without specific prior written permission.
+.\"
+.\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
+.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+.\" ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
+.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+.\" SUCH DAMAGE.
+.\"
+.\" @(#)mklocale.1 8.1 (Berkeley) 6/6/93
+.\"
+.Dd "June 6, 1993"
+.Dt MKLOCALE 1
+.Os
+.Sh NAME
+.Nm mklocale
+.Nd make LC_CTYPE locale files
+.Sh SYNOPSIS
+.Nm mklocale
+.Ar "< src-file"
+.Ar "> language/LC_CTYPE"
+.Sh DESCRIPTION
+The
+.Nm mklocale
+utility reads a
+.Dv LC_CTYPE
+source file from standard input and produces a
+.Dv LC_CTYPE
+binary file on standard output suitable for placement in
+.Dv /usr/share/locale/\fIlanguage\fP/LC_CTYPE.
+.Pp
+The format of
+.Ar src-file
+is quite simple.
+It consists of a series of lines which start with a keyword and have
+associated data following. C style comments are used
+to place comments in the file.
+.Pp
+Besides the keywords which will be listed below,
+the following are valid tokens in
+.Ar src-file :
+.Bl -tag -width literal
+.It Dv RUNE
+A
+.Dv RUNE
+may be any of the following:
+.Bl -tag -width 0x[0-9a-z]*
+.It Ar 'x'
+The ascii character
+.Ar x .
+.It Ar '\ex'
+The ANSI C character
+.Ar \ex
+where
+.Ar \ex
+is one of
+.Dv \ea ,
+.Dv \eb ,
+.Dv \ef ,
+.Dv \en ,
+.Dv \er ,
+.Dv \et ,
+or
+.Dv \ev .
+.It Ar 0x[0-9a-z]*
+A hexadecimal number representing a rune code.
+.It Ar 0[0-7]*
+An octal number representing a rune code.
+.It Ar [1-9][0-9]*
+A decimal number representing a rune code.
+.El
+.It Dv STRING
+A string enclosed in double quotes (").
+.It Dv THRU
+Either
+.Dv ...
+or
+.Dv - .
+Used to indicate ranges.
+.It Ar literal
+The follow characters are taken literally:
+.Bl -tag -width "<\|\|(\|\|["
+.It Dv "<\|(\|["
+Used to start a mapping. All are equivalent.
+.It Dv ">\|\^)\|]"
+Used to end a mapping. All are equivalent.
+.It Dv :
+Used as a delimiter in mappings.
+.El
+.El
+.sp
+Key words which should only appear once are:
+.Bl -tag -width PHONOGRAM
+.It Dv ENCODING
+Followed by a
+.Dv STRING
+which indicates the encoding mechanism to be used for this locale.
+The current encodings are:
+.Bl -tag -width NONE
+.It Dv NONE
+No translation and the default.
+.It Dv UTF2
+.Dv "Universal character set Transformation Format"
+adopted from
+.Nm "Plan 9 from Bell Labs" .
+This is the preferred encoding.
+.It Dv EUC
+.Dv EUC
+encoding as used by several
+vendors of
+.Ux
+systems.
+.El
+.It Dv VARIABLE
+This keyword must be followed by a single tab or space character,
+after which encoding specific data is placed.
+Currently only the
+.Dv "EUC"
+encoding requires variable data.
+See
+.Xr euc 4
+for further details.
+.It Dv INVALID
+A single
+.Dv RUNE
+follows and is used as the invalid rune for this locale.
+.El
+.sp
+The following keywords may appear multiple times and have the following
+format for data:
+.in +.5i
+.Bl -tag -width "<RUNE1 THRU RUNEn : RUNE2>"
+.It Dv <RUNE1 RUNE2>
+.Dv RUNE1
+is mapped to
+.Dv RUNE2 .
+.It Dv <RUNE1 THRU RUNEn : RUNE2>
+Runes
+.Dv RUNE1
+through
+.Dv RUNEn
+are mapped to
+.Dv RUNE2
+through
+.Dv RUNE2
++ n-1.
+.El
+.in -.5i
+.Bl -tag -width PHONOGRAM
+.It Dv MAPLOWER
+Defines the tolower mappings.
+.Dv RUNE2
+is the lower case representatin of
+.Dv RUNE1.
+.It Dv MAPUPPER
+Defines the toupper mappings.
+.Dv RUNE2
+is the upper case representatin of
+.Dv RUNE1.
+.It Dv TODIGIT
+Defines a map from runes to their digit value.
+.Dv RUNE2
+is the integer value represented by
+.Dv RUNE1 .
+For example, the ascii character
+.Nm '0'
+would map to the decimal value
+.Nm 0 .
+Only values up to
+.Nm 255
+are allowed.
+.El
+.sp
+The following keywords may appear multiple times and have the following
+format for data:
+.in +.5i
+.Bl -tag -width "RUNE1 THRU RUNEn"
+.It Dv RUNE
+This rune has the property defined by the keyword.
+.It Dv "RUNE1 THRU RUNEn"
+All the runes between and including
+.Dv RUNE1
+and
+.Dv RUNEn
+have the property defined by the keyword.
+.El
+.in -.5i
+.Bl -tag -width PHONOGRAM
+.It Dv ALPHA
+Defines runes which are alphabetic, printable and graphic.
+.It Dv CONTROL
+Defines runes which are control characters.
+.It Dv DIGIT
+Defines runes which are decimal digits, printable and graphic.
+.It Dv GRAPH
+Defines runes which are graphic and printable.
+.It Dv LOWER
+Defines runes which are lower case, printable and graphic.
+.It Dv PUNCT
+Defines runes which are punctuation, printable and graphic.
+.It Dv SPACE
+Defines runes which are spaces.
+.It Dv UPPER
+Defines runes which are upper case, printable and graphic.
+.It Dv XDIGIT
+Defines runes which are hexadecimal digits, printable and graphic.
+.It Dv BLANK
+Defines runes which are blank.
+.It Dv PRINT
+Defines runes which are printable.
+.It Dv IDEOGRAM
+Defines runes which are ideograms, printable and graphic.
+.It Dv SPECIAL
+Defines runes which are special characters, printable and graphic.
+.It Dv PHONOGRAM
+Defines runes which are phonograms, printable and graphic.
+.El
+.Sh SEE ALSO
+.Xr mbrune 3 ,
+.Xr rune 3 ,
+.Xr setlocale 3 ,
+.Xr euc 4 ,
+.Xr utf2 4
+.Sh BUGS
+The
+.Nm mklocale
+utility is overly simplistic.
+.Sh HISTORY
+The
+.Nm mklocale
+utility first appeared in
+.Bx 4.4 .
diff --git a/share/locale/yacc.y b/share/locale/yacc.y
new file mode 100644
index 000000000000..193b7b1af63d
--- /dev/null
+++ b/share/locale/yacc.y
@@ -0,0 +1,821 @@
+%{
+/*-
+ * Copyright (c) 1993
+ * The Regents of the University of California. All rights reserved.
+ *
+ * This code is derived from software contributed to Berkeley by
+ * Paul Borman at Krystal Technologies.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * 3. All advertising materials mentioning features or use of this software
+ * must display the following acknowledgement:
+ * This product includes software developed by the University of
+ * California, Berkeley and its contributors.
+ * 4. Neither the name of the University nor the names of its contributors
+ * may be used to endorse or promote products derived from this software
+ * without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ */
+
+#ifndef lint
+static char sccsid[] = "@(#)yacc.y 8.1 (Berkeley) 6/6/93";
+#endif /* not lint */
+
+#include <ctype.h>
+#include <rune.h>
+#include <stddef.h>
+#include <stdio.h>
+#include <stdlib.h>
+
+#include "ldef.h"
+
+char *locale_file = "<stdout>";
+
+rune_map maplower = { 0, };
+rune_map mapupper = { 0, };
+rune_map types = { 0, };
+
+_RuneLocale new_locale = { 0, };
+
+void set_map __P((rune_map *, rune_list *, u_long));
+void set_digitmap __P((rune_map *, rune_list *));
+void add_map __P((rune_map *, rune_list *, u_long));
+%}
+
+%union {
+ rune_t rune;
+ int i;
+ char *str;
+
+ rune_list *list;
+}
+
+%token <rune> RUNE
+%token LBRK
+%token RBRK
+%token THRU
+%token MAPLOWER
+%token MAPUPPER
+%token DIGITMAP
+%token <i> LIST
+%token <str> VARIABLE
+%token ENCODING
+%token INVALID
+%token <str> STRING
+
+%type <list> list
+%type <list> map
+
+
+%%
+
+locale : /* empty */
+ | table
+ { dump_tables(); }
+ ;
+
+table : entry
+ | table entry
+ ;
+
+entry : ENCODING STRING
+ { strncpy(new_locale.encoding, $2, sizeof(new_locale.encoding)); }
+ | VARIABLE
+ { new_locale.variable_len = strlen($1) + 1;
+ new_locale.variable = malloc(new_locale.variable_len);
+ strcpy((char *)new_locale.variable, $1);
+ }
+ | INVALID RUNE
+ { new_locale.invalid_rune = $2; }
+ | LIST list
+ { set_map(&types, $2, $1); }
+ | MAPLOWER map
+ { set_map(&maplower, $2, 0); }
+ | MAPUPPER map
+ { set_map(&mapupper, $2, 0); }
+ | DIGITMAP map
+ { set_digitmap(&types, $2); }
+ ;
+
+list : RUNE
+ {
+ $$ = (rune_list *)malloc(sizeof(rune_list));
+ $$->min = $1;
+ $$->max = $1;
+ $$->next = 0;
+ }
+ | RUNE THRU RUNE
+ {
+ $$ = (rune_list *)malloc(sizeof(rune_list));
+ $$->min = $1;
+ $$->max = $3;
+ $$->next = 0;
+ }
+ | list RUNE
+ {
+ $$ = (rune_list *)malloc(sizeof(rune_list));
+ $$->min = $2;
+ $$->max = $2;
+ $$->next = $1;
+ }
+ | list RUNE THRU RUNE
+ {
+ $$ = (rune_list *)malloc(sizeof(rune_list));
+ $$->min = $2;
+ $$->max = $4;
+ $$->next = $1;
+ }
+ ;
+
+map : LBRK RUNE RUNE RBRK
+ {
+ $$ = (rune_list *)malloc(sizeof(rune_list));
+ $$->min = $2;
+ $$->max = $2;
+ $$->map = $3;
+ $$->next = 0;
+ }
+ | map LBRK RUNE RUNE RBRK
+ {
+ $$ = (rune_list *)malloc(sizeof(rune_list));
+ $$->min = $3;
+ $$->max = $3;
+ $$->map = $4;
+ $$->next = $1;
+ }
+ | LBRK RUNE THRU RUNE ':' RUNE RBRK
+ {
+ $$ = (rune_list *)malloc(sizeof(rune_list));
+ $$->min = $2;
+ $$->max = $4;
+ $$->map = $6;
+ $$->next = 0;
+ }
+ | map LBRK RUNE THRU RUNE ':' RUNE RBRK
+ {
+ $$ = (rune_list *)malloc(sizeof(rune_list));
+ $$->min = $3;
+ $$->max = $5;
+ $$->map = $7;
+ $$->next = $1;
+ }
+ ;
+%%
+
+int debug = 0;
+FILE *fp = stdout;
+
+main(ac, av)
+ int ac;
+ char *av[];
+{
+ int x;
+
+ extern char *optarg;
+ extern int optind;
+
+ while ((x = getopt(ac, av, "do:")) != EOF) {
+ switch(x) {
+ case 'd':
+ debug = 1;
+ break;
+ case 'o':
+ locale_file = optarg;
+ if ((fp = fopen(locale_file, "w")) == 0) {
+ perror(locale_file);
+ exit(1);
+ }
+ break;
+ default:
+ usage:
+ fprintf(stderr, "Usage: mklocale [-d] [-o output] [source]\n");
+ exit(1);
+ }
+ }
+
+ switch (ac - optind) {
+ case 0:
+ break;
+ case 1:
+ if (freopen(av[optind], "r", stdin) == 0) {
+ perror(av[optind]);
+ exit(1);
+ }
+ break;
+ default:
+ goto usage;
+ }
+ for (x = 0; x < _CACHED_RUNES; ++x) {
+ mapupper.map[x] = x;
+ maplower.map[x] = x;
+ }
+ new_locale.invalid_rune = _INVALID_RUNE;
+ memcpy(new_locale.magic, _RUNE_MAGIC_1, sizeof(new_locale.magic));
+
+ yyparse();
+}
+
+yyerror(s)
+ char *s;
+{
+ fprintf(stderr, "%s\n", s);
+}
+
+void *
+xmalloc(sz)
+ unsigned int sz;
+{
+ void *r = malloc(sz);
+ if (!r) {
+ perror("xmalloc");
+ abort();
+ }
+ return(r);
+}
+
+u_long *
+xlalloc(sz)
+ unsigned int sz;
+{
+ u_long *r = (u_long *)malloc(sz * sizeof(u_long));
+ if (!r) {
+ perror("xlalloc");
+ abort();
+ }
+ return(r);
+}
+
+u_long *
+xrelalloc(old, sz)
+ u_long *old;
+ unsigned int sz;
+{
+ u_long *r = (u_long *)realloc((char *)old, sz * sizeof(u_long));
+ if (!r) {
+ perror("xrelalloc");
+ abort();
+ }
+ return(r);
+}
+
+void
+set_map(map, list, flag)
+ rune_map *map;
+ rune_list *list;
+ u_long flag;
+{
+ while (list) {
+ rune_list *nlist = list->next;
+ add_map(map, list, flag);
+ list = nlist;
+ }
+}
+
+void
+set_digitmap(map, list)
+ rune_map *map;
+ rune_list *list;
+{
+ rune_t i;
+
+ while (list) {
+ rune_list *nlist = list->next;
+ for (i = list->min; i <= list->max; ++i) {
+ if (list->map + (i - list->min)) {
+ rune_list *tmp = (rune_list *)xmalloc(sizeof(rune_list));
+ tmp->min = i;
+ tmp->max = i;
+ add_map(map, tmp, list->map + (i - list->min));
+ }
+ }
+ free(list);
+ list = nlist;
+ }
+}
+
+void
+add_map(map, list, flag)
+ rune_map *map;
+ rune_list *list;
+ u_long flag;
+{
+ rune_t i;
+ rune_list *lr = 0;
+ rune_list *r;
+ rune_t run;
+
+ while (list->min < _CACHED_RUNES && list->min <= list->max) {
+ if (flag)
+ map->map[list->min++] |= flag;
+ else
+ map->map[list->min++] = list->map++;
+ }
+
+ if (list->min > list->max) {
+ free(list);
+ return;
+ }
+
+ run = list->max - list->min + 1;
+
+ if (!(r = map->root) || (list->max < r->min - 1)
+ || (!flag && list->max == r->min - 1)) {
+ if (flag) {
+ list->types = xlalloc(run);
+ for (i = 0; i < run; ++i)
+ list->types[i] = flag;
+ }
+ list->next = map->root;
+ map->root = list;
+ return;
+ }
+
+ for (r = map->root; r && r->max + 1 < list->min; r = r->next)
+ lr = r;
+
+ if (!r) {
+ /*
+ * We are off the end.
+ */
+ if (flag) {
+ list->types = xlalloc(run);
+ for (i = 0; i < run; ++i)
+ list->types[i] = flag;
+ }
+ list->next = 0;
+ lr->next = list;
+ return;
+ }
+
+ if (list->max < r->min - 1) {
+ /*
+ * We come before this range and we do not intersect it.
+ * We are not before the root node, it was checked before the loop
+ */
+ if (flag) {
+ list->types = xlalloc(run);
+ for (i = 0; i < run; ++i)
+ list->types[i] = flag;
+ }
+ list->next = lr->next;
+ lr->next = list;
+ return;
+ }
+
+ /*
+ * At this point we have found that we at least intersect with
+ * the range pointed to by `r', we might intersect with one or
+ * more ranges beyond `r' as well.
+ */
+
+ if (!flag && list->map - list->min != r->map - r->min) {
+ /*
+ * There are only two cases when we are doing case maps and
+ * our maps needn't have the same offset. When we are adjoining
+ * but not intersecting.
+ */
+ if (list->max + 1 == r->min) {
+ lr->next = list;
+ list->next = r;
+ return;
+ }
+ if (list->min - 1 == r->max) {
+ list->next = r->next;
+ r->next = list;
+ return;
+ }
+ fprintf(stderr, "Error: conflicting map entries\n");
+ exit(1);
+ }
+
+ if (list->min >= r->min && list->max <= r->max) {
+ /*
+ * Subset case.
+ */
+
+ if (flag) {
+ for (i = list->min; i <= list->max; ++i)
+ r->types[i - r->min] |= flag;
+ }
+ free(list);
+ return;
+ }
+ if (list->min <= r->min && list->max >= r->max) {
+ /*
+ * Superset case. Make him big enough to hold us.
+ * We might need to merge with the guy after him.
+ */
+ if (flag) {
+ list->types = xlalloc(list->max - list->min + 1);
+
+ for (i = list->min; i <= list->max; ++i)
+ list->types[i - list->min] = flag;
+
+ for (i = r->min; i <= r->max; ++i)
+ list->types[i - list->min] |= r->types[i - r->min];
+
+ free(r->types);
+ r->types = list->types;
+ } else {
+ r->map = list->map;
+ }
+ r->min = list->min;
+ r->max = list->max;
+ free(list);
+ } else if (list->min < r->min) {
+ /*
+ * Our tail intersects his head.
+ */
+ if (flag) {
+ list->types = xlalloc(r->max - list->min + 1);
+
+ for (i = r->min; i <= r->max; ++i)
+ list->types[i - list->min] = r->types[i - r->min];
+
+ for (i = list->min; i < r->min; ++i)
+ list->types[i - list->min] = flag;
+
+ for (i = r->min; i <= list->max; ++i)
+ list->types[i - list->min] |= flag;
+
+ free(r->types);
+ r->types = list->types;
+ } else {
+ r->map = list->map;
+ }
+ r->min = list->min;
+ free(list);
+ return;
+ } else {
+ /*
+ * Our head intersects his tail.
+ * We might need to merge with the guy after him.
+ */
+ if (flag) {
+ r->types = xrelalloc(r->types, list->max - r->min + 1);
+
+ for (i = list->min; i <= r->max; ++i)
+ r->types[i - r->min] |= flag;
+
+ for (i = r->max+1; i <= list->max; ++i)
+ r->types[i - r->min] = flag;
+ }
+ r->max = r->max;
+ free(list);
+ }
+
+ /*
+ * Okay, check to see if we grew into the next guy(s)
+ */
+ while ((lr = r->next) && r->max >= lr->min) {
+ if (flag) {
+ if (r->max >= lr->max) {
+ /*
+ * Good, we consumed all of him.
+ */
+ for (i = lr->min; i <= lr->max; ++i)
+ r->types[i - r->min] |= lr->types[i - lr->min];
+ } else {
+ /*
+ * "append" him on to the end of us.
+ */
+ r->types = xrelalloc(r->types, lr->max - r->min + 1);
+
+ for (i = lr->min; i <= r->max; ++i)
+ r->types[i - r->min] |= lr->types[i - lr->min];
+
+ for (i = r->max+1; i <= lr->max; ++i)
+ r->types[i - r->min] = lr->types[i - lr->min];
+
+ r->max = lr->max;
+ }
+ } else {
+ if (lr->max > r->max)
+ r->max = lr->max;
+ }
+
+ r->next = lr->next;
+
+ if (flag)
+ free(lr->types);
+ free(lr);
+ }
+}
+
+void
+dump_tables()
+{
+ int x;
+ rune_list *list;
+
+ /*
+ * See if we can compress some of the istype arrays
+ */
+ for(list = types.root; list; list = list->next) {
+ list->map = list->types[0];
+ for (x = 1; x < list->max - list->min + 1; ++x) {
+ if (list->types[x] != list->map) {
+ list->map = 0;
+ break;
+ }
+ }
+ }
+
+ new_locale.invalid_rune = htonl(new_locale.invalid_rune);
+
+ /*
+ * Fill in our tables. Do this in network order so that
+ * diverse machines have a chance of sharing data.
+ * (Machines like Crays cannot share with little machines due to
+ * word size. Sigh. We tried.)
+ */
+ for (x = 0; x < _CACHED_RUNES; ++x) {
+ new_locale.runetype[x] = htonl(types.map[x]);
+ new_locale.maplower[x] = htonl(maplower.map[x]);
+ new_locale.mapupper[x] = htonl(mapupper.map[x]);
+ }
+
+ /*
+ * Count up how many ranges we will need for each of the extents.
+ */
+ list = types.root;
+
+ while (list) {
+ new_locale.runetype_ext.nranges++;
+ list = list->next;
+ }
+ new_locale.runetype_ext.nranges = htonl(new_locale.runetype_ext.nranges);
+
+ list = maplower.root;
+
+ while (list) {
+ new_locale.maplower_ext.nranges++;
+ list = list->next;
+ }
+ new_locale.maplower_ext.nranges = htonl(new_locale.maplower_ext.nranges);
+
+ list = mapupper.root;
+
+ while (list) {
+ new_locale.mapupper_ext.nranges++;
+ list = list->next;
+ }
+ new_locale.mapupper_ext.nranges = htonl(new_locale.mapupper_ext.nranges);
+
+ new_locale.variable_len = htonl(new_locale.variable_len);
+
+ /*
+ * Okay, we are now ready to write the new locale file.
+ */
+
+ /*
+ * PART 1: The _RuneLocale structure
+ */
+ if (fwrite((char *)&new_locale, sizeof(new_locale), 1, fp) != 1) {
+ perror(locale_file);
+ exit(1);
+ }
+ /*
+ * PART 2: The runetype_ext structures (not the actual tables)
+ */
+ list = types.root;
+
+ while (list) {
+ _RuneEntry re;
+
+ re.min = htonl(list->min);
+ re.max = htonl(list->max);
+ re.map = htonl(list->map);
+
+ if (fwrite((char *)&re, sizeof(re), 1, fp) != 1) {
+ perror(locale_file);
+ exit(1);
+ }
+
+ list = list->next;
+ }
+ /*
+ * PART 3: The maplower_ext structures
+ */
+ list = maplower.root;
+
+ while (list) {
+ _RuneEntry re;
+
+ re.min = htonl(list->min);
+ re.max = htonl(list->max);
+ re.map = htonl(list->map);
+
+ if (fwrite((char *)&re, sizeof(re), 1, fp) != 1) {
+ perror(locale_file);
+ exit(1);
+ }
+
+ list = list->next;
+ }
+ /*
+ * PART 4: The mapupper_ext structures
+ */
+ list = mapupper.root;
+
+ while (list) {
+ _RuneEntry re;
+
+ re.min = htonl(list->min);
+ re.max = htonl(list->max);
+ re.map = htonl(list->map);
+
+ if (fwrite((char *)&re, sizeof(re), 1, fp) != 1) {
+ perror(locale_file);
+ exit(1);
+ }
+
+ list = list->next;
+ }
+ /*
+ * PART 5: The runetype_ext tables
+ */
+ list = types.root;
+
+ while (list) {
+ for (x = 0; x < list->max - list->min + 1; ++x)
+ list->types[x] = htonl(list->types[x]);
+
+ if (!list->map) {
+ if (fwrite((char *)&list->types,
+ (list->max - list->min + 1)*sizeof(u_long), 1, fp) != 1) {
+ perror(locale_file);
+ exit(1);
+ }
+ }
+ list = list->next;
+ }
+ /*
+ * PART 5: And finally the variable data
+ */
+ if (fwrite((char *)new_locale.variable,
+ ntohl(new_locale.variable_len), 1, fp) != 1) {
+ perror(locale_file);
+ exit(1);
+ }
+ fclose(fp);
+
+ if (!debug)
+ return;
+
+ if (new_locale.encoding[0])
+ fprintf(stderr, "ENCODING %s\n", new_locale.encoding);
+ if (new_locale.variable)
+ fprintf(stderr, "VARIABLE %s\n", new_locale.variable);
+
+ fprintf(stderr, "\nMAPLOWER:\n\n");
+
+ for (x = 0; x < _CACHED_RUNES; ++x) {
+ if (isprint(maplower.map[x]))
+ fprintf(stderr, " '%c'", maplower.map[x]);
+ else if (maplower.map[x])
+ fprintf(stderr, "%04x", maplower.map[x]);
+ else
+ fprintf(stderr, "%4x", 0);
+ if ((x & 0xf) == 0xf)
+ fprintf(stderr, "\n");
+ else
+ fprintf(stderr, " ");
+ }
+ fprintf(stderr, "\n");
+
+ for (list = maplower.root; list; list = list->next)
+ fprintf(stderr, "\t%04x - %04x : %04x\n", list->min, list->max, list->map);
+
+ fprintf(stderr, "\nMAPUPPER:\n\n");
+
+ for (x = 0; x < _CACHED_RUNES; ++x) {
+ if (isprint(mapupper.map[x]))
+ fprintf(stderr, " '%c'", mapupper.map[x]);
+ else if (mapupper.map[x])
+ fprintf(stderr, "%04x", mapupper.map[x]);
+ else
+ fprintf(stderr, "%4x", 0);
+ if ((x & 0xf) == 0xf)
+ fprintf(stderr, "\n");
+ else
+ fprintf(stderr, " ");
+ }
+ fprintf(stderr, "\n");
+
+ for (list = mapupper.root; list; list = list->next)
+ fprintf(stderr, "\t%04x - %04x : %04x\n", list->min, list->max, list->map);
+
+
+ fprintf(stderr, "\nTYPES:\n\n");
+
+ for (x = 0; x < _CACHED_RUNES; ++x) {
+ u_long r = types.map[x];
+
+ if (r) {
+ if (isprint(x))
+ fprintf(stderr, " '%c': %2d", x, r & 0xff);
+ else
+ fprintf(stderr, "%04x: %2d", x, r & 0xff);
+
+ fprintf(stderr, " %4s", (r & _A) ? "alph" : "");
+ fprintf(stderr, " %4s", (r & _C) ? "ctrl" : "");
+ fprintf(stderr, " %4s", (r & _D) ? "dig" : "");
+ fprintf(stderr, " %4s", (r & _G) ? "graf" : "");
+ fprintf(stderr, " %4s", (r & _L) ? "low" : "");
+ fprintf(stderr, " %4s", (r & _P) ? "punc" : "");
+ fprintf(stderr, " %4s", (r & _S) ? "spac" : "");
+ fprintf(stderr, " %4s", (r & _U) ? "upp" : "");
+ fprintf(stderr, " %4s", (r & _X) ? "xdig" : "");
+ fprintf(stderr, " %4s", (r & _B) ? "blnk" : "");
+ fprintf(stderr, " %4s", (r & _R) ? "prnt" : "");
+ fprintf(stderr, " %4s", (r & _I) ? "ideo" : "");
+ fprintf(stderr, " %4s", (r & _T) ? "spec" : "");
+ fprintf(stderr, " %4s", (r & _Q) ? "phon" : "");
+ fprintf(stderr, "\n");
+ }
+ }
+
+ for (list = types.root; list; list = list->next) {
+ if (list->map && list->min + 3 < list->max) {
+ u_long r = list->map;
+
+ fprintf(stderr, "%04x: %2d", list->min, r & 0xff);
+
+ fprintf(stderr, " %4s", (r & _A) ? "alph" : "");
+ fprintf(stderr, " %4s", (r & _C) ? "ctrl" : "");
+ fprintf(stderr, " %4s", (r & _D) ? "dig" : "");
+ fprintf(stderr, " %4s", (r & _G) ? "graf" : "");
+ fprintf(stderr, " %4s", (r & _L) ? "low" : "");
+ fprintf(stderr, " %4s", (r & _P) ? "punc" : "");
+ fprintf(stderr, " %4s", (r & _S) ? "spac" : "");
+ fprintf(stderr, " %4s", (r & _U) ? "upp" : "");
+ fprintf(stderr, " %4s", (r & _X) ? "xdig" : "");
+ fprintf(stderr, " %4s", (r & _B) ? "blnk" : "");
+ fprintf(stderr, " %4s", (r & _R) ? "prnt" : "");
+ fprintf(stderr, " %4s", (r & _I) ? "ideo" : "");
+ fprintf(stderr, " %4s", (r & _T) ? "spec" : "");
+ fprintf(stderr, " %4s", (r & _Q) ? "phon" : "");
+ fprintf(stderr, "\n...\n");
+
+ fprintf(stderr, "%04x: %2d", list->max, r & 0xff);
+
+ fprintf(stderr, " %4s", (r & _A) ? "alph" : "");
+ fprintf(stderr, " %4s", (r & _C) ? "ctrl" : "");
+ fprintf(stderr, " %4s", (r & _D) ? "dig" : "");
+ fprintf(stderr, " %4s", (r & _G) ? "graf" : "");
+ fprintf(stderr, " %4s", (r & _L) ? "low" : "");
+ fprintf(stderr, " %4s", (r & _P) ? "punc" : "");
+ fprintf(stderr, " %4s", (r & _S) ? "spac" : "");
+ fprintf(stderr, " %4s", (r & _U) ? "upp" : "");
+ fprintf(stderr, " %4s", (r & _X) ? "xdig" : "");
+ fprintf(stderr, " %4s", (r & _B) ? "blnk" : "");
+ fprintf(stderr, " %4s", (r & _R) ? "prnt" : "");
+ fprintf(stderr, " %4s", (r & _I) ? "ideo" : "");
+ fprintf(stderr, " %4s", (r & _T) ? "spec" : "");
+ fprintf(stderr, " %4s", (r & _Q) ? "phon" : "");
+ fprintf(stderr, "\n");
+ } else
+ for (x = list->min; x <= list->max; ++x) {
+ u_long r = ntohl(list->types[x - list->min]);
+
+ if (r) {
+ fprintf(stderr, "%04x: %2d", x, r & 0xff);
+
+ fprintf(stderr, " %4s", (r & _A) ? "alph" : "");
+ fprintf(stderr, " %4s", (r & _C) ? "ctrl" : "");
+ fprintf(stderr, " %4s", (r & _D) ? "dig" : "");
+ fprintf(stderr, " %4s", (r & _G) ? "graf" : "");
+ fprintf(stderr, " %4s", (r & _L) ? "low" : "");
+ fprintf(stderr, " %4s", (r & _P) ? "punc" : "");
+ fprintf(stderr, " %4s", (r & _S) ? "spac" : "");
+ fprintf(stderr, " %4s", (r & _U) ? "upp" : "");
+ fprintf(stderr, " %4s", (r & _X) ? "xdig" : "");
+ fprintf(stderr, " %4s", (r & _B) ? "blnk" : "");
+ fprintf(stderr, " %4s", (r & _R) ? "prnt" : "");
+ fprintf(stderr, " %4s", (r & _I) ? "ideo" : "");
+ fprintf(stderr, " %4s", (r & _T) ? "spec" : "");
+ fprintf(stderr, " %4s", (r & _Q) ? "phon" : "");
+ fprintf(stderr, "\n");
+ }
+ }
+ }
+}
diff --git a/share/man/man4/ddb.4 b/share/man/man4/ddb.4
index 62bebbf6f43f..9255c0d70ef5 100644
--- a/share/man/man4/ddb.4
+++ b/share/man/man4/ddb.4
@@ -23,6 +23,7 @@
.\" any improvements or extensions that they make and grant Carnegie Mellon
.\" the rights to redistribute these changes.
.\"
+.\" changed a \# to #, since groff choked on it.
.\"
.\" HISTORY
.\" ddb.4,v
@@ -394,7 +395,7 @@ last address explicitly specified.
.IP "$<variable>" 15n
register name or variable. It is translated to the value of it.
It may be followed by a ':' and modifiers as described above.
-.IP \# 15n
+.IP # 15n
a binary operator which rounds up the left hand side to the next
multiple of right hand side.
.IP "*<expr>" 15n
diff --git a/share/man/man4/man4.i386/Makefile b/share/man/man4/man4.i386/Makefile
index 17702805c040..979c5c77756c 100644
--- a/share/man/man4/man4.i386/Makefile
+++ b/share/man/man4/man4.i386/Makefile
@@ -1,10 +1,9 @@
# @(#)Makefile 0.1 (RWGrimes) 3/25/93
-MAN4= com.4 keyboard.4 lpa.4 lpt.4 mem.4 mse.4 npx.4 screen.4 sio.4 spkr.4
+MAN4= com.4 keyboard.4 lpt.4 mem.4 mse.4 npx.4 screen.4 sio.4 spkr.4 tw.4
MLINKS= com.4 ../com.4
MLINKS+= keyboard.4 ../keyboard.4
-MLINKS+= lpa.4 ../lpa.4
MLINKS+= lpt.4 ../lpt.4
MLINKS+= mem.4 ../mem.4
MLINKS+= mem.4 ../kmem.4
@@ -13,6 +12,7 @@ MLINKS+= npx.4 ../npx.4
MLINKS+= screen.4 ../screen.4
MLINKS+= sio.4 ../sio.4
MLINKS+= spkr.4 ../spkr.4
+MLINKS+= tw.4 ../tw.4
MANSUBDIR=/i386
diff --git a/share/man/man4/man4.i386/lpa.4 b/share/man/man4/man4.i386/lpa.4
deleted file mode 100644
index ef5f422f6490..000000000000
--- a/share/man/man4/man4.i386/lpa.4
+++ /dev/null
@@ -1,62 +0,0 @@
-.\"
-.\" Copyright (c) 1993 Christopher G. Demetriou
-.\" All rights reserved.
-.\"
-.\" Redistribution and use in source and binary forms, with or without
-.\" modification, are permitted provided that the following conditions
-.\" are met:
-.\" 1. Redistributions of source code must retain the above copyright
-.\" notice, this list of conditions and the following disclaimer.
-.\" 2. Redistributions in binary form must reproduce the above copyright
-.\" notice, this list of conditions and the following disclaimer in the
-.\" documentation and/or other materials provided with the distribution.
-.\" 3. All advertising materials mentioning features or use of this software
-.\" must display the following acknowledgement:
-.\" This product includes software developed by Christopher G. Demetriou.
-.\" 3. The name of the author may not be used to endorse or promote products
-.\" derived from this software withough specific prior written permission
-.\"
-.\" THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
-.\" IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
-.\" OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
-.\" IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
-.\" INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
-.\" NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-.\" DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-.\" THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-.\" (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
-.\" THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-.\"
-.\" from: lpa.4,v 1.1 1993/08/06 10:34:11 cgd Exp
-.\" $Id: lpa.4,v 1.1 1993/08/28 12:41:20 rgrimes Exp $
-.\"
-.Dd August 28, 1993
-.Dt LPA 4 i386
-.Os FreeBSD
-.Sh NAME
-.Nm lpa
-.Nd
-Interruptless parallel port driver
-.Sh SYNOPSIS
-.\" XXX this is awful hackery to get it to work right... -- cgd
-.Cd "device lpa0 at isa? port" \&"IO_LPT1\&" tty
-.Cd "device lpa1 at isa? port" \&"IO_LPT2\&" tty
-.Cd "device lpa2 at isa? port" \&"IO_LPT3\&" tty
-.Sh DESCRIPTION
-This driver provides access to parallel ports. It assumes that
-the parallel port controller will not cause an interrupt, and
-therefore must poll the controller.
-.Sh FILES
-.Bl -tag -width Pa -compact
-.It Pa /dev/lpa0
-first interruptless parallel port driver
-.El
-.Sh SEE ALSO
-.Xr lpt 4
-.Sh BUGS
-This driver only exists to support broken parallel port implementations.
-Systems with properly working parallel ports should use the
-.Nm lpt
-driver instead, as it is less resource-hungry.
-.Pp
-This driver could stand a rewrite.
diff --git a/share/man/man4/man4.i386/lpt.4 b/share/man/man4/man4.i386/lpt.4
index 0fb89387bab9..ad20a65b7a04 100644
--- a/share/man/man4/man4.i386/lpt.4
+++ b/share/man/man4/man4.i386/lpt.4
@@ -1,5 +1,6 @@
.\"
.\" Copyright (c) 1993 Christopher G. Demetriou
+.\" Copyright (c) 1994 Geoffrey M. Rehmet
.\" All rights reserved.
.\"
.\" Redistribution and use in source and binary forms, with or without
@@ -69,5 +70,10 @@ first parallel port driver
.Xr lptcontrol 1
.Sh BUGS
There are lots of them, especially in cheap parallel port implementations.
+.sp
+It is only possible to open a lpt port when a printer is connected and
+on-line, making it impossible to run
+.Xr lptcontrol 1
+when there is no printer connected.
.Pp
This driver could still stand a rewrite.
diff --git a/share/man/man4/man4.i386/sio.4 b/share/man/man4/man4.i386/sio.4
index 8fcd2c17cfd1..e79d3864880b 100644
--- a/share/man/man4/man4.i386/sio.4
+++ b/share/man/man4/man4.i386/sio.4
@@ -34,9 +34,9 @@
.\"
.\" from: @(#)dca.4 5.2 (Berkeley) 3/27/91
.\" from: com.4,v 1.1 1993/08/06 11:19:07 cgd Exp
-.\" $Id: sio.4,v 1.8.2.1 1994/05/01 16:07:37 jkh Exp $
+.\" $Id: sio.4,v 1.13 1994/06/15 23:28:07 jkh Exp $
.\"
-.Dd February 9, 1994
+.Dd June 3, 1994
.Dt SIO 4 i386
.Os FreeBSD
.Sh NAME
@@ -50,20 +50,42 @@ For standard ports:
.Cd "device sio2 at isa? port" \&"IO_COM3\&" tty irq 5 vector siointr
.Cd "device sio3 at isa? port" \&"IO_COM4\&" tty irq 9 vector siointr
.sp
-For multiport cards:
+For AST compatible multiport cards with 4 ports:
.Cd "options" \&"COM_MULTIPORT\&"
-.Cd "device sio4 at isa? port 0x2a0 tty irq 12 flags 0x401 vector siointr"
-.Cd "device sio5 at isa? port 0x2a8 tty flags 0x401 vector siointr"
-.Cd "device sio6 at isa? port 0x2b0 tty flags 0x401 vector siointr"
-.Cd "device sio7 at isa? port 0x2b8 tty flags 0x401 vector siointr"
+.Cd "device sio4 at isa? port 0x2a0 tty flags 0x701"
+.Cd "device sio5 at isa? port 0x2a8 tty flags 0x701"
+.Cd "device sio6 at isa? port 0x2b0 tty flags 0x701"
+.Cd "device sio7 at isa? port 0x2b8 tty flags 0x701 irq 12 vector siointr"
.sp
-For bidirectional use of ports:
-.Cd "options" \&"COM_BIDIR\&"
+For Boca Board compatible multiport cards with 8 ports:
+.Cd "options" \&"COM_MULTIPORT\&"
+.Cd "device sio4 at isa? port 0x100 tty flags 0xb05"
+.Cd "..."
+.Cd "device sio11 at isa? port 0x138 tty flags 0xb05 irq 12 vector siointr"
.sp
-For control FIFO trigger:
-.Cd "options" \&"FIFO_TRIGGER=FIFO_TRIGGER_14\&"
+Meaning of \fBflags\fR:
+.br
+\fB0x0001\fR shared IRQs
+.br
+\fB0x0002\fR disable FIFO
+.br
+\fB0x0004\fR no AST/4 compatible IRQ control register
+.br
+\fB0x0080\fR enable diagnostics in probe
+.br
+\fB0x\fI??\fB00\fR minor number of master port
.sp
-Use 0x02 bit in flags field to disable FIFO on specified port.
+Minor numbering:
+.br
+0b\fIOLIMMMMM\fR
+.br
+ call\fBO\fRut
+.br
+ \fBL\fRock
+.br
+ \fBI\fRnitial
+.br
+ \fBMMMMMM\fRinor
.Sh DESCRIPTION
The
.Nm sio
@@ -73,117 +95,199 @@ driver provides support for NS8250-, NS16450-, NS16550 and NS16550A-based
.Pf ( Tn CCITT
.Tn V.24 )
communications interfaces. The NS8250 and NS16450 have single character
-buffers, the NS16550A has a 16 character FIFO buffer.
+buffers, the NS16550A has 16 character FIFO input and output buffers.
.Pp
Input and output for each line may set to one of following baud rates;
50, 75, 110, 134.5, 150, 300, 600, 1200, 1800, 2400, 4800, 9600,
19200, 38400, 57600, or 115200. Your hardware may limit your baud
rate choices.
.Pp
-The driver supports `multiport' cards.
+The driver supports `multiport' cards.
Multiport cards are those that have one or more groups of ports
-that share a common IRQ and Interrupt Request register set per group.
-Frequently 4 ports share 1 IRQ, some 8 port cards have 2 groups of 4 ports,
+that share an Interrupt Request (IRQ) line per group.
+Shared IRQs on different cards are not supported.
+Frequently 4 ports share 1 IRQ; some 8 port cards have 2 groups of 4 ports,
thus using 2 IRQs.
Some cards allow the first 2 serial ports to have seperate IRQs per port
(as per DOS PC standard).
.sp
+Some cards have an IRQ control register for each group.
+Some cards require special initialization related to such registers.
+Only AST/4 compatible IRQ control registers are supported.
+Some cards have an IRQ status register for each group.
+The driver does not require or use such registers yet.
+To work, the control and status registers for a group, if any,
+must be mapped to the scratch register (register 7)
+of a port in the group.
+Such a port is called a
+.Nm master
+port.
+.sp
The
.Nm flags
-keyword specifies for each
+keyword may be used on each
.Nm device sio
-line in the kernel configuration file,
-whether the port is part of an IRQ sharing group, & if so,
-which port is the master device for
-the group (ie which port has the IRQ control registers).
-The master device is the port which
-has registers through which all interrupts of the port group are funneled.
-All ports of a port group report pending interrupts using this
-single register.
-.sp
-The master device is an integer embedded in the high byte of the
-.Nm flags
-bitfield, so all sio entries in the kernel config file that are part of a
-multiport card must include the correct
+line in the kernel configuration file
+to silence the probe
+or to disable the FIFO on 16550A UARTs
+(see the synopsis).
+Disabling the FIFO should rarely be necessary
+since the driver automatically adjusts the receiver
+FIFO trigger level for low latency and high efficiency.
+.sp
+The
.Nm flags
-specification.
-The bitwise assignment allows multiple port groups to
-be configured in one system. It does
+keyword
+.Nm must
+be used for all ports that are part of an IRQ sharing group.
+One bit specifies IRQ sharing; another bit specifies whether the port does
.Nm not
-imply that more than one port group (or card) can share
-the same physical interrupt line!
+require AST/4 compatible initialization.
+The minor number of the device corresponding a master port
+for the group is encoded as a bitfield in the high byte.
+The same master port must be specified for all ports in a group.
+.sp
+The
+.Nm irq
+and
+.Nm vector
+specifications must be given for master ports
+and for ports that are not part of an IRQ sharing group,
+and not for other ports.
.Pp
-In the synopsis the
-.Nm flags 0x401
-means that the 5th port (sio4) is the master
-device (so the MSB of the flags), and that the ports are part of a
-multiport card (the LSB of the flags, actually only the LS
-.Nm bit
-).
-F.e. if you have only two standard ports in addition to multiport
-card, this
-.Nm flags
-will be
-.Nm 0x201
-(assuming the control port is
-.Nm sio2
-).
+In the synopsis,
+.Nm flags 0x701
+means that the 8th port (sio7) is the master
+port, and that the port is on a multiport card with shared IRQs
+and an AST/4 compatible IRQ control register.
+.sp
+.Nm flags 0xb05
+means that the 12th port (sio11) is the master
+port, and that the port is on a multiport card with shared IRQs
+and no special IRQ control register.
.Pp
-Which port is the master device depends on the card type. Consult
-the hardware documentation of your card.
+Which port is the master port depends on the card type.
+Consult the hardware documentation of your card.
+Since IRQ status registers are never used,
+and IRQ control registers are only used for AST/4 compatible cards,
+and some cards map the control/status registers to all ports in a group,
+any port in a group will sometimes do for the master port.
+Choose a port containing an IRQ status register for forwards compatibility,
+and the highest possible port for consistency.
.Pp
-Serial ports controlled by the
+Serial ports controlled by the
.Nm sio
-driver can be used for both dialin and dialout. Use
-.Xr comcontrol 8
-to enable/disable bidirectional use of the
+driver can be used for both `callin' and `callout'.
+For each port there is a callin device and a callout device.
+The minor number of the callout device is 128 higher
+than that of the corresponding callin port.
+The callin device is general purpose.
+Processes opening it normally wait for carrier
+and for the callout device to become inactive.
+The callout device is used to steal the port from
+processes waiting for carrier on the callin device.
+Processes opening it do not wait for carrier
+and put any processes waiting for carrier on the callin device into
+a deeper sleep so that they do not conflict with the callout session.
+The callout device is abused for handling programs that are supposed
+to work on general ports and need to open the port without waiting
+but are too stupid to do so.
+.Pp
+The
.Nm sio
-ports. The minor number of the dialout
-port is 128 higher than that of the corresponding dialin port. Use
+driver also supports an initial-state and a lock-state control
+device for each of the callin and the callout "data" devices.
+The minor number of the initial-state device is 32 higher
+than that of the corresponding data device.
+The minor number of the lock-state device is 64 higher
+than that of the corresponding data device.
+The termios settings of a data device are copied
+from those of the corresponding initial-state device
+on first opens and are not inherited from previous opens.
+Use
.Xr stty 1
-to enable or disable modem control as required by your setup.
-.Pp
-While testing new cards & resolving card config DIP header &
-.Nm sio flags
-settings, to avoid coms. failure from lack of full modem DC level
-settings on ports,
-you are recommended to temporarily use syntax such as:
-.Nm stty -f /dev/tty03 clocal
-or open
-.Nm /dev/cua03
-if you have bidirectional mode active
-to force serial port to open without
-.Nm O_NONBLOCK
-flag.
+in the normal way on the initial-state devices to program
+initial termios states suitable for your setup.
+.sp
+The lock termios state acts as flags to disable changing
+the termios state. E.g., to lock a flag variable such as
+CRTSCTS, use
+.Nm stty crtscts
+on the lock-state device. Speeds and special characters
+may be locked by setting the corresponding value in the lock-state
+device to any nonzero value.
+.sp
+Correct programs talking to correctly wired external devices
+work with arbitrary initial states and almost no locking,
+but other setups may benefit from changing some of the default
+initial state and locking the state.
+E.g., CRTSCTS should be locked on for devices that support
+RTS/CTS handshaking at all times and off for devices that don't
+support it at all. CLOCAL should be locked on for devices
+that don't support carrier. HUPCL may be locked off if you don't
+want to hang up for reason. In general, very bad things happen
+if something is locked to the wrong state, and things should not
+be locked for devices that support more than one setting. The
+CLOCAL flag on callin ports should be locked off for logins
+to avoid certain security holes, but this needs to be done by
+getty if the callin port is used for anything else.
.Sh FILES
-.Bl -tag -width /dev/tty0? -compact
+.Bl -tag -width /dev/ttyi0? -compact
.It Pa /dev/tty0?
for hardwired terminals
+.It Pa /dev/ttyi0?
+.It Pa /dev/ttyl0?
+corresponding initial-state and lock-state devices
.El
+.sp
or
-.Bl -tag -width /dev/tty0? -compact
+.sp
+.Bl -tag -width /dev/ttyi0? -compact
.It Pa /dev/ttyd?
-for dialin ports (and dialout when bidirectional usage disabled)
+for callin ports
+.It Pa /dev/ttyid?
+.It Pa /dev/ttyld?
+corresponding callin initial-state and lock-state devices
+.sp
.It Pa /dev/cua0?
-for dialout ports when bidirectional usage enabled
+for callout ports
+.It Pa /dev/cuai0?
+.It Pa /dev/cual0?
+corresponding callout initial-state and lock-state devices
+.El
+.sp
+.Bl -tag -width /etc/rc.serial -compact
+.It Pa /etc/rc.serial
+examples of setting the initial-state and lock-state devices
.El
.Pp
-The devices numbers are made from the set [0-9a-z] so that more than
+The devices numbers are made from the set [0-9a-v] so that more than
10 ports can be supported.
/dev/tty0? and /dev/ttyd? are mutually exclusive, if you have
/dev/tty0? corresponding /dev/ttyd? must be removed and vice versa.
.Sh DIAGNOSTICS
.Bl -diag
.It sio%d: silo overflow.
-The single-character input
-.Dq silo
-has overflowed and incoming data has been lost.
-.\".It com%d: weird interrupt: %x.
-.\"The device has generated an unexpected interrupt
-.\"with the code listed.
+Problem in the interrupt handler.
+.El
+.Bl -diag
+.It sio%d: interrupt-level buffer overflow.
+Problem in the bottom half of the driver.
+.El
+.Bl -diag
+.It sio%d: tty-level buffer overflow.
+Problem in the application.
+.sp
+Input has arrived faster than the given module could process it
+and some has been lost.
+.sp
.El
+.Bl -diag
+.It sio%d: reduced fifo trigger level to %d.
+Attempting to avoid further silo overflows.
.Sh SEE ALSO
.Xr tty 4 ,
+.Xr termios 4 ,
.Xr comcontrol 8 ,
.Xr stty 1 .
.Sh HISTORY
@@ -195,12 +299,12 @@ driver is derived from the
driver and is
.Ud
.Sh BUGS
-Data loss is not near as likely on busy systems as they are with the
+Data loss is not nearly as likely on busy systems as it is with the
.Xr com 4
-driver but they still can occur at very high baud rates on slow systems. The
-use of NS16550A's helps lot to handle high baud rates.
+driver but it can still occur at very high baud rates on slow systems.
+The use of NS16550A's reduces system load and helps to avoid data loss.
.Pp
-Stay away from NS16550 (so without the trailing A). These are early
+Stay away from plain NS16550's. These are early
implementations of the chip with non-functional FIFO hardware.
.Pp
The constants which define the locations
@@ -208,12 +312,13 @@ of the various serial ports are holdovers from
.Nm DOS .
As shown, hex addresses can be and for clarity probably should be used instead.
.Pp
-As usual, you get what you pay for; cheap NS16550 clones generally don't work.
-.Pp
-The multiport example is based on an AST/4 card, your
-mileage may vary however. Note that on the AST/4 the card's dipswitches should
+Note that on the AST/4 the card's dipswitches should
.Nm not
-be set to use interrupt sharing. AST/4-like interrupt sharing is only used when
+be set to use interrupt sharing. AST/4-like interrupt sharing is only used when
.Nm multiple
-AST/4 cards are installed in the same system. The sio driver does not
+AST/4 cards are installed in the same system. The sio driver does not
support more than 1 AST/4 on one IRQ.
+.Pp
+Hardwired terminals should not have different device names.
+.Pp
+The examples in the synopsis are too vendor-specific.
diff --git a/share/man/man4/man4.i386/tw.4 b/share/man/man4/man4.i386/tw.4
new file mode 100644
index 000000000000..8c093e58ae53
--- /dev/null
+++ b/share/man/man4/man4.i386/tw.4
@@ -0,0 +1,111 @@
+.\" Copyright (c) 1992, 1993 Eugene W. Stark
+.\" All rights reserved.
+.\"
+.\" Redistribution and use in source and binary forms, with or without
+.\" modification, are permitted provided that the following conditions
+.\" are met:
+.\" 1. Redistributions of source code must retain the above copyright
+.\" notice, this list of conditions and the following disclaimer.
+.\" 2. Redistributions in binary form must reproduce the above copyright
+.\" notice, this list of conditions and the following disclaimer in the
+.\" documentation and/or other materials provided with the distribution.
+.\" 3. All advertising materials mentioning features or use of this software
+.\" must display the following acknowledgement:
+.\" This product includes software developed by Eugene W. Stark.
+.\" 4. The name of the author may not be used to endorse or promote products
+.\" derived from this software without specific prior written permission.
+.\"
+.\" THIS SOFTWARE IS PROVIDED BY EUGENE W. STARK (THE AUTHOR) ``AS IS'' AND
+.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+.\" ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT,
+.\" INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+.\" (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+.\" SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+.\" SUCH DAMAGE.
+.\"
+.Th XTEN 8 "30 Oct 1993"
+.Dd Oct 30, 1993
+.Dt TW 4
+.Os BSD FreeBSD
+.Sh NAME
+tw \- TW-523 X-10 device driver
+.Sh DESCRIPTION
+.Nm Tw
+is the driver for the TW-523 power line interface, for use with X-10 home
+control products. The X-10 protocol is compatible with a number of home
+control systems, including Radio Shack ``Plug 'n Power(tm)'' and
+Stanley ``Lightmaker(tm).''
+.Pp
+The driver supports
+.Fn read
+.Fn write
+and
+.Fn select
+system calls.
+The driver allows multiple processes to read and write simultaneously,
+but there is probably not much sense in having more than one reader or more
+than one writer at a time, and in fact there may currently be a race
+condition in the driver if two processes try to transmit simultaneously
+(due to unsynchronized access to the sc_pkt structure in tw_sc).
+.Pp
+Transmission is done by calling
+.Fn write
+to send three byte packets of data.
+The first byte contains a four bit house code (0=A to 15=P). The second byte
+contains a five bit unit/key code (0=unit 1 to 15=unit 16, 16=All Units Off
+to 31 = Status Request). The third byte specifies the number of times the
+packet is to be transmitted without any gaps between successive transmissions.
+Normally this is 2, as per the X-10 documentation, but sometimes (e.g. for
+bright and dim codes) it can be another value. Each call to
+.Fn write
+can specify
+an arbitrary number of data bytes, but at most one packet will actually be
+processed in any call. Any incomplete packet is buffered until a subsequent
+call to
+.Fn write
+provides data to complete it. Successive calls to
+.Fn write
+leave a three-cycle gap between transmissions, per the X-10 documentation.
+The driver transmits each bit only once per half cycle, not three times as
+the X-10 documentation states, because the TW523 only provides sync on
+each power line zero crossing. So, the driver will probably not work
+properly if you have three-phase service. Most residences use a two-wire
+system, for which the driver does work.
+.Pp
+Reception is done using
+.Fn read
+The driver produces a series of three
+character packets. In each packet, the first character consists of flags,
+the second character is a four bit house code (0-15), and the third character
+is a five bit key/function code (0-31). The flags are the following:
+.Bl -diag
+.It
+#define TW_RCV_LOCAL 1 /* The packet arrived during a local transmission */
+.It
+#define TW_RCV_ERROR 2 /* An invalid/corrupted packet was received */
+.El
+.Pp
+The
+.Fn select
+system call can be used in the usual way to determine if there
+is data ready for reading.
+.Sh SEE ALSO
+.Bl -diag
+.It
+.Xr xten 1
+.It
+.Xr xtend 8
+.It
+TW-523 documentation from X-10 Inc.
+.El
+.Sh FILES
+.Bl -tag -width /dev/tw
+.It Pa /dev/tw?
+the TW523 special file
+.El
+.Sh AUTHOR
+Eugene W. Stark (stark@cs.sunysb.edu)
diff --git a/share/man/man5/Makefile b/share/man/man5/Makefile
index 4fe2321078c6..7fa200021ba6 100644
--- a/share/man/man5/Makefile
+++ b/share/man/man5/Makefile
@@ -2,10 +2,10 @@
# Clean up and added pcfs, humm should pcfs be a subdir i386?
MAN5= a.out.5 acct.5 core.5 dir.5 disktab.5 \
- fs.5 fstab.5 group.5 hosts.5 networks.5 \
- passwd.5 pcfs.5 phones.5 printcap.5 \
+ fs.5 fstab.5 group.5 hosts.5 \
+ networks.5 passwd.5 pcfs.5 phones.5 printcap.5 \
protocols.5 remote.5 resolver.5 services.5 \
- shells.5 stab.5 types.5 utmp.5
+ shells.5 skey.access.5 stab.5 types.5 utmp.5
MLINKS= fs.5 inode.5 utmp.5 wtmp.5 utmp.5 lastlog.5
diff --git a/share/man/man5/pcfs.5 b/share/man/man5/pcfs.5
index 4fe6b861a08d..bf57205a1f0a 100644
--- a/share/man/man5/pcfs.5
+++ b/share/man/man5/pcfs.5
@@ -1,114 +1,268 @@
-PCFS quirks file
-
-PCFS filesystems on floppy disks only are supported in this release.
-And, only high density floppy disks are supported. This is because
-the floppy disk driver only supports high density disks.
-
+.\" Copyright 1994 Ollivier Robert (roberto@keltia.frmug.fr.net)
+.\" All rights reserved.
+.\"
+.\" Based on previous pcfs.5 found in FreeBSD.
+.\"
+.\" Redistribution and use in source and binary forms, with or without
+.\" modification, are permitted provided that the following conditions
+.\" are met:
+.\" 1. Redistributions of source code must retain the above copyright
+.\" notice, this list of conditions and the following disclaimer.
+.\" 2. Redistributions in binary form must reproduce the above copyright
+.\" notice, this list of conditions and the following disclaimer in the
+.\" documentation and/or other materials provided with the distribution.
+.\"
+.\" THIS SOFTWARE IS PROVIDED BY ME ``AS IS'' AND
+.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+.\" ARE DISCLAIMED. IN NO EVENT SHALL I BE LIABLE
+.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+.\" SUCH DAMAGE.
+.\"
+.\" $Id: pcfs.5,v 1.2 1994/06/22 08:55:58 jkh Exp $
+.\""
+.Dd June 21, 1994
+.Dt PCFS 5
+.Os FreeBSD
+.Sh NAME
+.Nm pcfs
+.Nd MS-DOS[TM] compatible filesystem
+.Sh SYNOPSYS
+Add the following statements to your configuration file in /sys/i386/conf/BLOT.
+Or whatever you call your config file.
+.Bd -literal
+.Cd options PCFS
+.Ed
+.Pp
+PCFS consumes approximately 24000 bytes of kernel code space and
+approximately 4000 bytes of bss.
+.Pp
+.Sh DESCRIPTION
+.Pp
+The
+.Nm
+filesystem enables you to access of DOS floppy and hard
+disks with UN*X compatible semantics without having to resort to special
+utilities such as
+.Xr mdir 1
+and
+.Xr mcopy 1 .
+.Pp
+The
+.Nm
+filesystem should be considered as
+.Em experimental
+but it seems stable enough. We hope to integrate a better version in latter
+versions of FreeBSD.
+.Pp
+.Sh OPERATIONAL DETAILS
+.Em Floppy disks
+.Pp
+To mount a pcfs filesystem:
+.Bd -literal
+ mount -t pcfs /dev/fd0a /mnt
+.Ed
+.Pp
+To unmount a pcfs filesystem:
+.Bd -literal
+ umount /mnt
+.Ed
+.Pp
+If you want to be sure the fat is
+.Nm ALWAYS
+up to date, mount the filesystem with the synchronous option:
+.Bd -literal
+ mount -t pcfs -o synchronous /dev/fd0a /mnt
+.Ed
+.Pp
+This results in
+.Nm very slow
+file write performance because it turns off write behind of fst disk blocks.
+.Pp
+.Em Hard disks
+.Pp
+You must modify your current disk label (see
+.Xr disklabel 5 )
+to include a reference to your DOS partition.
+.Pp
+Assuming you'll use partition
+.Dq Pa h ,
+the last one, as your MS-DOS partition and that it is at the beginning of
+the disk, you'll end with an entry like that in
+.Em /etc/disktab
+:
+.Bd -literal
+#
+# Seagate ST-31200N
+#
+# a = / 12
+# b = swap 32
+# e = /usr/local 160
+# f = /usr 55
+# g = /spare 597
+# h = /root/dos 150
+#
+st31200n|Seagate ST31200N 1 GB SCSI-2F:\\
+ :dt=SCSI:ty=winchester:\\
+ :nc#1006:ns#32:nt#64:se#512:rm#6300:\\
+ :oa#307200:pa#24576:ta=4.2BSD:ba#8192:fa#1024:\\
+ :ob#331776:pb#65536:tb=swap:\\
+ :oe#397312:pe#327680:te=4.2BSD:be#8192:fe#1024:\\
+ :of#724992:pf#112640:tf=4.2BSD:bf#8192:ff#1024:\\
+ :og#837632:pg#1222656:tg=4.2BSD:bg#8192:fg#1024:\\
+ :oh#32:ph#307168:th=MSDOS:
+.Ed
+.Pp
+The DOS partition begins
+.Em 32
+sectors from the beginning of the disk (the first track of the first
+cylinder is reserved for the partition table and other data). The type of
+the partition (keyword
+.Em th
+) on the last line is set to MS-DOS.
+.Pp
+Run
+.Xr disklabel 8
+to install the new label.
+.Pp
+You must now decide whether you want to mount the partition at boot
+time. If not, you
+.Nm must
+run the following command as
+.Nm root
+when you want to access the partition:
+.Bd -literal
+ mount -t pcfs /dev/sd0h /dos
+.Ed
+.Pp
+(replace /dos by your favorite mount point).
+.Pp
+If you want to mount it at boot time, you must include a statement into
+your
+.Dq Pa /etc/fstab
+file (see
+.Xr fstab 5 )
+like that:
+.Bd -literal
+ /dev/sd0h /root/dos pcfs rw 0 0
+.Ed
+.Pp
+.Sh BUGS
+This is the first release and as such has performance problems.
+Reading large files is very slow because the read ahead code in pcfs_read()
+doesn't read far enough ahead for filesystems with small blocksizes.
+Performance and dos hard disk paritions are the next areas to be
+worked on. Unless someone else does it.
+.Pp
+.Em PCFS quirks
+.Pp
+PCFS filesystems on floppy and hard disks are supported in this
+release. You must add an entry in your disklabel for the DOS partition.
+.Pp
Created files use only the user permissions bits. And of these
only the write bit is meaningful. DOS files always have the
execute and read bits on.
-
+.Pp
PCFS does not turn on or off the DOS archive attribute bit.
-
+.Pp
The timestamp on dos files is updated when ever the file is modified.
There is no inode time or create time stamp.
-
+.Pp
The timestamp placed on a dos file does not have corrections for
daylight savings time included. It does have the correction for
timezone though.
-
+.Pp
Unix times before 1980 will have their year set to 1980 in dos file
-timestamps. This is because dos's idea of time starts in 1980.
-
+timestamps. This is because DOS's idea of time starts in 1980.
+.Pp
PCFS filesystems do not support sparse files. Any attempt to seek
past the end of a file results in the blocks being allocated and
cleared.
-
-When read() is used to examine pcfs directories you will get dos
+.Pp
+When
+.Xr read 2
+is used to examine pcfs directories you will get dos
directory contents. Note that the root directory does not contain
-a "." or ".." entry. Only the readdir() system call simulates these
-entries in the root directory of a dos filesystem. readdir() returns
-directory entries as described in getdirentries(2).
-
-Using read() and write() to manipulate the contents of dos directories
-is unwise on an active dos filesystem since a more up to date copy of
+a "." or ".." entry. Only the
+.Xr readdir 2
+system call simulates these entries in the root directory of a dos
+filesystem.
+.Xr readdir 2
+returns directory entries as described in
+.Xr getdirentries 2 .
+.Pp
+Using
+.Xr read 2
+and
+.Xr write 2
+to manipulate the contents of dos directories
+is unwise on an active DOS filesystem since a more up to date copy of
their contents may reside in data structures in the kernel. It is
probably safe to examine the filename field of dos directory entries.
The filesystem code keeps this up to date at all times.
-
+.Pp
The cluster allocation algorithm is very simplistic. It starts at
cluster 2 and searchs until the last cluster of the filesystem and
takes the first available cluster.
-
-The fsync() system call does not work on file descriptors open on
+.Pp
+The
+.Xr fsync 2
+system call does not work on file descriptors open on
directories. This isn't a terrible thing since very few programs
open directories for writing.
-
-The pcfs filesystem truncates filenames quietly. If a filename has
+.Pp
+The PCFS filesystem truncates filenames quietly. If a filename has
more than 8 characters before the 1st period only the 1st eigth are
used. It only uses the 1st three characters after the period if
-they exist. The filenames "abc" and "abc." are the same to pcfs.
-Filenames that begin with a "." are considered to be dos filenames
-with an extension only and so are limited to 3 characters after the
-leading ".". For example ".imlost" would be seen as ".iml" by pcfs.
-PCFS folds filenames to upper case before writing them to disk or
+they exist. The filenames
+.Dq Pa abc
+and
+.Dq Pa abc.
+are the same to PCFS. Filenames that begin with a "." are considered to be
+dos filenames with an extension only and so are limited to 3 characters
+after the leading ".". For example
+.Dq Pa .imlost
+would be seen as
+.Dq Pa .iml
+by PCFS. PCFS folds filenames to upper case before writing them to disk or
looking up filenames, and folds them to lower case when reading them
-from disk for presentation to the user (for example by readdir()).
-
+from disk for presentation to the user (for example by
+.Xr readdir 2 ).
+.Pp
Directory entries for the DOS filesystem label are quietly ignored.
-
+.Pp
This is probably going to be a problem. This implementation expects
the length of the root directory to be a multiple of the size of
a cluster. If this is not true a warning message is printed when
the filesystem is mounted.
-
+.Pp
PCFS supports DOS filesystems with 12 bit or 16 bit FATs. It supports
both regular and huge filesystems ( > 32 megabytes). It supports
both version 3.3 and 5.0 BPB's. Don't know about version 4.x and
less than 3.3. It has not been tested with 16 bit fats or huge
filesystems. This is because the hard disk drivers need to support
dos partitions to do these things.
-
+.Pp
PCFS does not support symbolic links or hard links. It does not
support quotas. How could it, pcfs files have no owners. PCFS
files have a simulated owner and group of 0. PCFS does not support
file locking. Though it may in the future. PCFS filesystems are
not remote mountable, but they will be in the future.
-
-This is the first release and as such has performance problems.
-Reading large files is very slow because the read ahead code in pcfs_read()
-doesn't read far enough ahead for filesystems with small blocksizes.
-Performance and dos hard disk paritions are the next areas to be
-worked on. Unless someone else does it.
-
-
-Operational Details
--------------------
-
-To mount a pcfs filesystem:
- mount -t pcfs /dev/fd0a /mnt
-
-To unmount a pcfs filesystem:
- umount /mnt
-
-If you want to be sure the fat is ALWAYS up to date, mount the
-filesystem with the synchronous option:
- mount -t pcfs -o synchronous /dev/fd0a /mnt
-This reasults in very slow file write performance because it turns
-off write behind of fst disk blocks.
-
-
-Configuring PCFS into your kernel
----------------------------------
-
-Add the following statements to your configuration file in /sys/i386/conf/BLOT.
-Or whatever you call your config file.
-
- options PCFS
-
-PCFS consumes approximately 24000 bytes of kernel code space and
-approximately 4000 bytes of bss.
-
+.Pp
PCFS has some debug printf's that can be turned on by defining PCFSDEBUG.
It produces lots of output. If you use it be sure to kill syslogd before
using a PCFS filesystem with debug.
+.Sh SEE ALSO
+.Xr disklabel 5 ,
+.Xr disklabel 8 ,
+.Xr fstab 5 ,
+.Xr mount 8 .
+.Sh HISTORY
+A
+.Nm
+filesystem first appeared in 386BSD 0.1, patchkit 0.2.3.
diff --git a/share/man/man5/skey.access.5 b/share/man/man5/skey.access.5
new file mode 100644
index 000000000000..08924376da12
--- /dev/null
+++ b/share/man/man5/skey.access.5
@@ -0,0 +1,34 @@
+.\" this is comment
+.Dd April 30, 1994
+.Dt SKEY.ACCESS 5
+.Os FreeBSD 1.2
+.Sh NAME
+.Nm skey.access
+.Nd List of S/Key obligated host adresses
+.Sh DESCRIPTION
+The
+.Nm skey.access
+file contains a number of lines specifying host IP adresses
+for which the use of S/Key passwords is obligated.
+.Pp
+The first word of each line says if UNIX passwords are
+to be permitted or denied. When denied, only S/Key passwords
+are allowed.
+The remainder of the rule is a networknumber and mask. A rule matches a
+host if any of its addresses satisfies:
+ network = (address & mask)
+.Sh FILES
+.Bl -tag -width /etc/skey.access -compact
+.It Pa /etc/skey.access
+The
+.Nm skey.access
+file resides in
+.Pa /etc .
+.El
+.Sh SEE ALSO
+.Xr skey 1 ,
+.Xr keyinit 1 ,
+.Xr key 1 ,
+.Xr keyinfo 1
+.Sh AUTHOR
+Guido van Rooij
diff --git a/share/man/man7/mdoc.7 b/share/man/man7/mdoc.7
new file mode 100644
index 000000000000..44028651237e
--- /dev/null
+++ b/share/man/man7/mdoc.7
@@ -0,0 +1,409 @@
+.\" Copyright (c) 1991 The Regents of the University of California.
+.\" All rights reserved.
+.\"
+.\" Redistribution and use in source and binary forms, with or without
+.\" modification, are permitted provided that the following conditions
+.\" are met:
+.\" 1. Redistributions of source code must retain the above copyright
+.\" notice, this list of conditions and the following disclaimer.
+.\" 2. Redistributions in binary form must reproduce the above copyright
+.\" notice, this list of conditions and the following disclaimer in the
+.\" documentation and/or other materials provided with the distribution.
+.\" 3. All advertising materials mentioning features or use of this software
+.\" must display the following acknowledgement:
+.\" This product includes software developed by the University of
+.\" California, Berkeley and its contributors.
+.\" 4. Neither the name of the University nor the names of its contributors
+.\" may be used to endorse or promote products derived from this software
+.\" without specific prior written permission.
+.\"
+.\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
+.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+.\" ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
+.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+.\" SUCH DAMAGE.
+.\"
+.\" @(#)mdoc.7 5.1 (Berkeley) 2/19/92
+.\"
+.Dd February 19, 1992
+.Os
+.Dt MDOC 7
+.Sh NAME
+.Nm mdoc
+.Nd quick reference guide for the
+.Nm \-mdoc
+macro package
+.Sh SYNOPSIS
+.Nm groff
+.Fl m Ns Ar doc
+.Ar files ...
+.Sh DESCRIPTION
+The
+.Nm \-mdoc
+package is a set of content-based and domain-based macros
+used to format the
+.Bx
+man pages.
+The macro names and their meanings are
+listed below for quick reference; for
+a detailed explanation on using the package,
+see the tutorial sampler
+.Xr mdoc.samples 7 .
+.Pp
+The macros are described in two groups, the first
+includes the structural and physical page layout macros.
+The second contains the manual and general text domain
+macros which differentiate the
+.Nm -\mdoc
+package from other
+.Xr troff
+formatting packages.
+.Sh PAGE STRUCTURE DOMAIN
+.Ss Title Macros
+To create a valid manual page, these three macros, in this order,
+are required:
+.Bl -tag -width "xxxx.Os OPERATINGxSYSTEM [version/release]" -compact
+.It Li "\&.Dd " Ar "Month day, year"
+Document date.
+.It Li "\&.Dt " Ar "DOCUMENT_TITLE [section] [volume]"
+Title, in upper case.
+.It Li "\&.Os " Ar "OPERATING_SYSTEM [version/release]"
+Operating system
+.Pq Tn BSD .
+.El
+.Ss Page Layout Macros
+Section headers, paragraph breaks, lists and displays.
+.Bl -tag -width flag -compact
+.It Li \&.Sh
+Section Headers.
+Valid headers, in the order of presentation:
+.Bl -tag -width "RETURN VALUES" -compact
+.It Ar NAME
+Name section, should include the
+.Ql \&.Nm
+or
+.Ql \&.Fn
+and the
+.Ql \&.Nd
+macros.
+.It Ar SYNOPSIS
+Usage.
+.It Ar DESCRIPTION
+General description, should include
+options and parameters.
+.It Ar RETURN VALUES
+Sections two and three function calls.
+.It Ar ENVIRONMENT
+Describe environment variables.
+.It Ar FILES
+Files associated with the subject.
+.It Ar EXAMPLES
+Examples and suggestions.
+.It Ar DIAGNOSTICS
+Normally used for section four device interface diagnostics.
+.It Ar ERRORS
+Sections two and three error and signal
+handling.
+.It Ar SEE ALSO
+Cross references and citations.
+.It Ar STANDARDS
+Conformance to standards if applicable.
+.It Ar HISTORY
+If a standard is not applicable, the history
+of the subject should be given.
+.It Ar BUGS
+Gotchas and caveats.
+.It Ar other
+Customized headers may be added at
+the authors discretion.
+.El
+.It Li \&.Ss
+Subsection Headers.
+.It Li \&.Pp
+Paragraph Break.
+Vertical space (one line).
+.It Li \&.D1
+(D-one) Display-one
+Indent and display one text line.
+.It Li \&.Dl
+(D-ell) Display-one literal.
+Indent and display one line of literal text.
+.It Li \&.Bd
+Begin-display block.
+Display options:
+.Bl -tag -width "xoffset string " -compact
+.It Fl ragged
+Unjustified (ragged edges).
+.It Fl filled
+Justified.
+.It Fl literal
+Literal text or code.
+.It Fl file Ar name
+Read in named
+.Ar file
+and display.
+.It Fl offset Ar string
+Offset display.
+Acceptable
+.Ar string
+values:
+.Bl -tag -width indent-two -compact
+.It Ar left
+Align block on left (default).
+.It Ar center
+Approximate center margin.
+.It Ar indent
+Six constant width spaces (a tab).
+.It Ar indent-two
+Two tabs.
+.It Ar right
+Left aligns block 2 inches from
+right.
+.It Ar xx Ns Cm n
+Where
+.Ar xx
+is a number from
+.No \&4 Ns Cm n
+to
+.No \&9\&9 Ns Cm n .
+.It Ar Aa
+Where
+.Ar Aa
+is a callable macro name.
+.It Ar string
+The width of
+.Ar string
+is used.
+.El
+.El
+.It Li \&.Ed
+End-display (matches \&.Bd).
+.It Li \&.Bl
+Begin-list.
+Create lists or columns. Options:
+.Bl -tag -width flag -compact
+.It Ar List-types
+.Bl -column xbullet -compact
+.It Fl bullet Ta "Bullet Item List"
+.It Fl item Ta "Unlabeled List"
+.It Fl enum Ta "Enumerated List"
+.It Fl tag Ta "Tag Labeled List"
+.It Fl diag Ta "Diagnostic List"
+.It Fl hang Ta "Hanging Labeled List"
+.It Fl ohang Ta "Overhanging Labeled List"
+.It Fl inset Ta "Inset or Run-on Labeled List"
+.El
+.It List-parameters
+.Bl -tag -width "xcompact " -compact
+.It Fl offset
+(All lists.) See
+.Ql \&.Bd
+begin-display above.
+.It Fl width
+.Pf ( Fl tag
+and
+.Fl hang
+lists only.)
+See
+.Ql \&.Bd .
+.It Fl compact
+(All lists.)
+Suppresses blank lines.
+.El
+.El
+.It Li \&.El
+End-list.
+.It Li \&.It
+List item.
+.El
+.Sh MANUAL AND GENERAL TEXT DOMAIN MACROS
+The manual and general text domain macros are special in that
+most of them are parsed for callable macros
+for example:
+.Bl -tag -width ".Op Fl s Ar filex" -offset indent
+.It Li "\&.Op Fl s Ar file"
+Produces
+.Op Fl s Ar file
+.El
+.Pp
+In this example, the option enclosure macro
+.Ql \&.Op
+is parsed, and calls the callable content macro
+.Ql \&Fl
+which operates on the argument
+.Ql s
+and then calls the callable content macro
+.Ql \&Ar
+which operates on the argument
+.Ql file .
+Some macros may be callable, but are not parsed and vice versa.
+These macros are indicated in the
+.Em parsed
+and
+.Em callable
+columns below.
+.Pp
+Unless stated, manual domain macros share a common syntax:
+.Pp
+.Dl \&.Va argument [\ .\ ,\ ;\ :\ (\ )\ [\ ]\ argument \...\ ]
+.Pp
+.Sy Note :
+Opening and closing
+punctuation characters are only recognized as such if they are presented
+one at a time.
+The string
+.Ql "),"
+is not recognized as punctuation and will be output with a leading white
+space and in what ever font the calling macro uses.
+The
+the argument list
+.Ql "] ) ,"
+is recognized as three sequential closing punctuation characters
+and a leading white space is not output between the characters
+and the previous argument (if any).
+The special meaning of a punctuation character may be escaped
+with the string
+.Ql \e& .
+For example the following string,
+.Bl -tag -width "&.Ar file1\ , file2\ , file3\ )\ ." -offset indent
+.It Li "\&.Ar file1\ , file2\ , file3\ )\ ."
+Produces
+.Ar file1 , file2 , file3 ) .
+.El
+.ne 5
+.Ss Manual Domain Macros
+.Bl -column "Name" "Parsed" Callable" -compact
+.It Em Name Parsed Callable Description
+.It Li \&Ad Ta Yes Ta Yes Ta Address. "(This macro may be deprecated.)"
+.It Li \&Ar Ta Yes Ta Yes Ta "Command line argument."
+.It Li \&Cd Ta \&No Ta \&No Ta "Configuration declaration (section four only)."
+.It Li \&Cm Ta Yes Ta Yes Ta "Command line argument modifier."
+.It Li \&Dv Ta Yes Ta Yes Ta "Defined variable (source code)."
+.It Li \&Er Ta Yes Ta Yes Ta "Error number (source code)."
+.It Li \&Ev Ta Yes Ta Yes Ta "Environment variable."
+.It Li \&Fa Ta Yes Ta Yes Ta "Function argument."
+.It Li \&Fd Ta Yes Ta Yes Ta "Function declaration."
+.It Li \&Fn Ta Yes Ta Yes Ta "Function call (also .Fo and .Fc)."
+.It Li \&Ic Ta Yes Ta Yes Ta "Interactive command."
+.It Li \&Li Ta Yes Ta Yes Ta "Literal text."
+.It Li \&Nm Ta Yes Ta Yes Ta "Command name."
+.It Li \&Op Ta Yes Ta Yes Ta "Option (also .Oo and .Oc)."
+.It Li \&Ot Ta Yes Ta Yes Ta "Old style function type (Fortran only)."
+.It Li \&Pa Ta Yes Ta Yes Ta "Pathname or file name."
+.It Li \&St Ta Yes Ta Yes Ta "Standards (-p1003.2, -p1003.1 or -ansiC)"
+.It Li \&Va Ta Yes Ta Yes Ta "Variable name."
+.It Li \&Vt Ta Yes Ta Yes Ta "Variable type (Fortran only)."
+.It Li \&Xr Ta Yes Ta Yes Ta "Manual Page Cross Reference."
+.El
+.Ss General Text Domain Macros
+.Bl -column "Name" "Parsed" Callable" -compact
+.It Em "Name Parsed Callable Description"
+.It Li \&%A Ta Yes Ta \&No Ta "Reference author."
+.It Li \&%B Ta Yes Ta Yes Ta "Reference book title."
+.It Li \&%\&C Ta \&No Ta \&No Ta "Reference place of publishing (city)."
+.It Li \&%\&D Ta \&No Ta \&No Ta "Reference date."
+.It Li \&%J Ta Yes Ta Yes Ta "Reference journal title."
+.It Li \&%N Ta \&No Ta \&No Ta "Reference issue number."
+.It Li \&%\&O Ta \&No Ta \&No Ta "Reference optional information."
+.It Li \&%P Ta \&No Ta \&No Ta "Reference page number(s)."
+.It Li \&%R Ta \&No Ta \&No Ta "Reference report Name."
+.It Li \&%T Ta Yes Ta Yes Ta "Reference article title."
+.It Li \&%V Ta \&No Ta \&No Ta "Reference volume."
+.It Li \&Ac Ta Yes Ta Yes Ta "Angle close quote."
+.It Li \&Ao Ta Yes Ta Yes Ta "Angle open quote."
+.It Li \&Aq Ta Yes Ta Yes Ta "Angle quote."
+.It Li \&At Ta \&No Ta \&No Ta Tn "AT&T UNIX"
+.It Li \&Bc Ta Yes Ta Yes Ta "Bracket close quote."
+.It Li \&Bf Ta \&No Ta \&No Ta "Begin font mode."
+.It Li \&Bo Ta Yes Ta Yes Ta "Bracket open quote."
+.It Li \&Bq Ta Yes Ta Yes Ta "Bracket quote."
+.It Li \&Bx Ta Yes Ta Yes Ta Bx .
+.It Li \&Db Ta \&No Ta \&No Ta "Debug (default is \\*qoff\\*q)"
+.It Li \&Dc Ta Yes Ta Yes Ta "Double close quote."
+.It Li \&Do Ta Yes Ta Yes Ta "Double open quote."
+.It Li \&Dq Ta Yes Ta Yes Ta "Double quote."
+.It Li \&Ec Ta Yes Ta Yes Ta "Enclose string close quote."
+.It Li \&Ef Ta \&No Ta \&No Ta "End font mode."
+.It Li \&Em Ta Yes Ta Yes Ta "Emphasis (traditional English)."
+.It Li \&Eo Ta Yes Ta Yes Ta "Enclose string open quote."
+.It Li \&No Ta Yes Ta Yes Ta "Normal text (no-op)."
+.It Li \&Ns Ta Yes Ta Yes Ta "No space."
+.It Li \&Pc Ta Yes Ta Yes Ta "Parenthesis close quote."
+.It Li \&Pf Ta Yes Ta \&No Ta "Prefix string."
+.It Li \&Po Ta Yes Ta Yes Ta "Parenthesis open quote."
+.It Li \&Pq Ta Yes Ta Yes Ta "Parentheses quote."
+.It Li \&Qc Ta Yes Ta Yes Ta "Strait Double close quote."
+.It Li \&Ql Ta Yes Ta Yes Ta "Quoted literal."
+.It Li \&Qo Ta Yes Ta Yes Ta "Strait Double open quote."
+.It Li \&Qq Ta Yes Ta Yes Ta "Strait Double quote."
+.It Li \&Re Ta \&No Ta \&No Ta "Reference start."
+.It Li \&Rs Ta \&No Ta \&No Ta "Reference start."
+.It Li \&Sc Ta Yes Ta Yes Ta "Single close quote."
+.It Li \&So Ta Yes Ta Yes Ta "Single open quote."
+.It Li \&Sq Ta Yes Ta Yes Ta "Single quote."
+.It Li \&Sm Ta \&No Ta \&No Ta "Space mode (default is \\*qon\\*q)"
+.It Li \&Sx Ta Yes Ta Yes Ta "Section Cross Reference."
+.It Li \&Sy Ta Yes Ta Yes Ta "Symbolic (traditional English)."
+.It Li \&Tn Ta Yes Ta Yes Ta "Trade or type name (small Caps)."
+.It Li \&Ux Ta Yes Ta Yes Ta Ux
+.It Li \&Xc Ta Yes Ta Yes Ta "Extend argument list close."
+.It Li \&Xo Ta Yes Ta Yes Ta "Extend argument list close."
+.El
+.\" .It Sy \&Hf Ta \&No Ta \&No Ta "Include file with header"
+.Pp
+Macro names ending in
+.Ql q
+quote remaining items on the argument list.
+Macro names ending in
+.Ql o
+begin a quote which may span more than one line of input and
+are close quoted with the matching macro name ending in
+.Ql c .
+Enclosure macros may be nested and are limited to
+eight arguments.
+.Pp
+Note: the extended argument list macros
+.Pf ( Ql \&.Xo ,
+.Ql \&.Xc )
+and the function enclosure macros
+.Pf ( Ql \&.Fo ,
+.Ql \&.Fc )
+are irregular.
+The extended list macros are used when the number of macro arguments
+would exceed the
+.Xr troff
+limitation of nine arguments.
+.Sh CONFIGURATION
+For site specific configuration of the macro package,
+see the file
+.Pa /usr/src/share/tmac/README .
+.Sh FILES
+.Bl -tag -width "tmac.doc-ditroff" -compact
+.It Pa tmac.doc
+Manual and general text domain macros.
+.It Pa tmac.doc-common
+Common structural macros and definitions.
+.It Pa tmac.doc-nroff
+Site dependent
+.Xr nroff
+style file.
+.It Pa tmac.doc-ditroff
+Site dependent
+.Xr troff
+style file.
+.It Pa tmac.doc-syms
+Special defines (such as the standards macro).
+.El
+.Sh SEE ALSO
+.Xr mdoc.samples 7
+.Sh HISTORY
+The
+.Nm \-mdoc
+macro package is
+.Ud .
diff --git a/share/man/man8/adduser.8 b/share/man/man8/adduser.8
index f6dde2d200b4..519c65df3e6d 100644
--- a/share/man/man8/adduser.8
+++ b/share/man/man8/adduser.8
@@ -38,6 +38,9 @@
.Nm adduser
.Nd procedure for adding new users
.Sh DESCRIPTION
+This is a proceduce for adding now users, not a command. Read the
+descriptions below and follow the steps.
+.Pp
A new user must choose a login name, which must not already appear in
.Pa /etc/passwd
or
@@ -66,13 +69,24 @@ A skeletal account for a new user
\*(lqernie\*(rq
might look like:
.Bd -literal
-ernie::25:30::0:0:Ernie Kovacs,508 Evans Hall,x7925,
+ernie:*:25:30::0:0:Ernie Kovacs,508 Evans Hall,x7925,
642-8202:/a/users/ernie:/bin/csh
.Ed
.Pp
For a description of each of these fields, see
.Xr passwd 5 .
.Pp
+Use the
+.Xr passwd 1
+command to give the user an initial password. You can type
+.Bd -literal
+passwd ernie
+.Ed
+.Pp
+as root to give ernie a password. Remember, the password field (the *
+in the above example) holds the encrypted password, so
+writing the password there in plain text will not work.
+.Pp
It is useful to give new users some help in getting started, supplying
them with a few skeletal files such as
.Pa \&.profile
diff --git a/share/me/footnote.me b/share/me/footnote.me
index 02c0b2dc3ece..b1b6f25a42d8 100644
--- a/share/me/footnote.me
+++ b/share/me/footnote.me
@@ -90,7 +90,7 @@
\{\
. if \\n* \
. nr $f +1
-. ds * \\*[\\n($f\\*]\k*
+. ds * \\*\[\\n($f\\*\]\k*
. rr *
. in 0
. da
diff --git a/share/me/me.7 b/share/me/me.7
index a9ec5bc9a39e..6ad45fb26fab 100644
--- a/share/me/me.7
+++ b/share/me/me.7
@@ -111,40 +111,40 @@ for interesting details.
.br
.di
.in \nau
-.ti0
+.ti 0
Request Initial Cause Explanation
-.ti0
+.ti 0
Value Break
.br
.in \nau
-.ti0
+.ti 0
\&.(c - yes Begin centered block
-.ti0
+.ti 0
\&.(d - no Begin delayed text
-.ti0
+.ti 0
\&.(f - no Begin footnote
-.ti0
+.ti 0
\&.(l - yes Begin list
-.ti0
+.ti 0
\&.(q - yes Begin major quote
-.ti0
+.ti 0
\&.(x \fIx\fR - no Begin indexed item in index
.I x
-.ti0
+.ti 0
\&.(z - no Begin floating keep
-.ti0
+.ti 0
\&.)c - yes End centered block
-.ti0
+.ti 0
\&.)d - yes End delayed text
-.ti0
+.ti 0
\&.)f - yes End footnote
-.ti0
+.ti 0
\&.)l - yes End list
-.ti0
+.ti 0
\&.)q - yes End major quote
-.ti0
+.ti 0
\&.)x - yes End index item
-.ti0
+.ti 0
\&.)z - yes End floating keep
.ti 0
\&.++ \fIm H\fR - no Define paper section.
@@ -168,17 +168,17 @@ or
set by .++).
.I T
is the chapter title.
-.ti0
+.ti 0
\&.1c 1 yes One column format on a new page.
-.ti0
+.ti 0
\&.2c 1 yes Two column format.
-.ti0
+.ti 0
\&.EN - yes Space after equation
produced by
.I eqn
or
.IR neqn .
-.ti0
+.ti 0
\&.EQ \fIx y\fR - yes Precede equation; break out and
add space.
Equation number is
@@ -191,19 +191,19 @@ to indent equation (default),
to left-adjust the equation, or
.I C
to center the equation.
-.ti0
+.ti 0
\&.GE - yes End \fIgremlin\fP picture.
-.ti0
+.ti 0
\&.GS - yes Begin \fIgremlin\fP picture.
-.ti0
+.ti 0
\&.PE - yes End \fIpic\fP picture.
-.ti0
+.ti 0
\&.PS - yes Begin \fIpic\fP picture.
-.ti0
+.ti 0
\&.TE - yes End table.
-.ti0
+.ti 0
\&.TH - yes End heading section of table.
-.ti0
+.ti 0
\&.TS \fIx\fR - yes Begin table; if \fIx\fR is
.I H
table has repeated heading.
@@ -214,7 +214,7 @@ is the Author's name(s),
.I N
is the total number of pages.
Must be given before the first initialization.
-.ti0
+.ti 0
\&.b \fIx\fR no no Print
.I x
in boldface; if no argument switch to boldface.
@@ -223,15 +223,15 @@ in boldface; if no argument switch to boldface.
.I n.
This indent is used to set the indent on regular text
(like paragraphs).
-.ti0
+.ti 0
\&.bc no yes Begin new column
-.ti0
+.ti 0
\&.bi \fIx\fR no no Print
.I x
in bold italics (nofill only)
-.ti0
+.ti 0
\&.bu - yes Begin bulleted paragraph
-.ti0
+.ti 0
\&.bx \fIx\fR no no Print \fIx\fR in a box (nofill only).
.ti 0
\&.ef \fI\'x\'y\'z\'\fR \'\'\'\' no Set even footer to x y z
@@ -241,31 +241,31 @@ in bold italics (nofill only)
\&.fo \fI\'x\'y\'z\'\fR \'\'\'\' no Set footer to x y z
.ti 0
\&.hx - no Suppress headers and footers on next page.
-.ti0
+.ti 0
\&.he \fI\'x\'y\'z\'\fR \'\'\'\' no Set header to x y z
-.ti0
+.ti 0
\&.hl - yes Draw a horizontal line
-.ti0
+.ti 0
\&.i \fIx\fR no no Italicize
.I x;
if
.I x
missing, italic text follows.
-.ti0
+.ti 0
\&.ip \fIx y\fR no yes Start indented paragraph,
with hanging tag
.IR x .
Indentation is
.I y
ens (default 5).
-.ti0
+.ti 0
\&.lp yes yes Start left-blocked paragraph.
.ti 0
\&.lo - no Read in a file of local macros of the
form
.BI \&.* x.
Must be given before initialization.
-.ti0
+.ti 0
\&.np 1 yes Start numbered paragraph.
.ti 0
\&.of \fI\'x\'y\'z\'\fR \'\'\'\' no Set odd footer to x y z
@@ -273,10 +273,10 @@ Must be given before initialization.
\&.oh \fI\'x\'y\'z\'\fR \'\'\'\' no Set odd header to x y z
.ti 0
\&.pd - yes Print delayed text.
-.ti0
+.ti 0
\&.pp no yes Begin paragraph.
First line indented.
-.ti0
+.ti 0
\&.r yes no Roman text follows.
.ti 0
\&.re - no Reset tabs to default values.
@@ -284,7 +284,7 @@ First line indented.
\&.sc no no Read in a file of special characters
and diacritical marks.
Must be given before initialization.
-.ti0
+.ti 0
\&.sh \fIn x\fR - yes Section head follows,
font automatically bold.
.I n
@@ -294,7 +294,7 @@ is title of section.
.ti 0
\&.sk no no Leave the next page blank.
Only one page is remembered ahead.
-.ti0
+.ti 0
\&.sm \fIx\fR - no Set
.I x
in a smaller pointsize.
@@ -307,11 +307,11 @@ points.
Must be given before initialization.
.ti 0
\&.tp no yes Begin title page.
-.ti0
+.ti 0
\&.u \fIx\fR - no Underline argument (even in \fItroff\fR).
(Nofill only).
-.ti0
+.ti 0
\&.uh - yes Like .sh but unnumbered.
-.ti0
+.ti 0
\&.xp \fIx\fR - no Print index
.I x.
diff --git a/share/me/tmac.e b/share/me/tmac.e
index f703c0ae0f2f..dd5f5f6d8e5e 100644
--- a/share/me/tmac.e
+++ b/share/me/tmac.e
@@ -959,7 +959,7 @@
.\}
.nr ?C 1
.nr $f 1 1
-.ds * \\*[1\\*]\k*
+.ds * \\*\[1\\*\]\k*
.if \\n(?R \
. pn 1
.bp
@@ -1170,7 +1170,7 @@
.nr _L \n(.lu \" line length of page
.nr $c 1 \" current column number
.nr $f 1 1 \" footnote number
-.ds * \*[1\*]\k*\" \" footnote "name"
+.ds * \*\[1\*\]\k*\" \" footnote "name"
.nr $d 1 1 \" delayed text number
.ds # [1]\k#\" \" delayed text "name"
.nr _M 1 \" chapter mode is chapter
diff --git a/share/mk/bsd.dep.mk b/share/mk/bsd.dep.mk
index 3663abd22361..b75b9466cabd 100644
--- a/share/mk/bsd.dep.mk
+++ b/share/mk/bsd.dep.mk
@@ -1,4 +1,4 @@
-# $Id: bsd.dep.mk,v 1.3.2.1 1994/03/07 01:53:47 rgrimes Exp $
+# $Id: bsd.dep.mk,v 1.4 1994/02/27 19:28:44 nate Exp $
# some of the rules involve .h sources, so remove them from mkdep line
.if !target(depend)
diff --git a/share/mk/bsd.doc.mk b/share/mk/bsd.doc.mk
index 8d64918ddc74..7df1d71882ca 100644
--- a/share/mk/bsd.doc.mk
+++ b/share/mk/bsd.doc.mk
@@ -1,5 +1,5 @@
# from: @(#)bsd.doc.mk 5.3 (Berkeley) 1/2/91
-# $Id: bsd.doc.mk,v 1.6 1994/02/03 19:58:23 jkh Exp $
+# $Id: bsd.doc.mk,v 1.7 1994/04/19 17:15:55 jkh Exp $
PRINTER?= ps
@@ -8,6 +8,7 @@ EQN?= eqn -T${PRINTER}
GREMLIN?= grn
GRIND?= vgrind -f
INDXBIB?= indxbib
+INSTALL?= install
PIC?= pic
REFER?= refer
ROFF?= groff -T${PRINTER} ${MACROS} -o${PAGES}
@@ -72,7 +73,7 @@ install:
else \
true ; \
fi
- install ${COPY} -o ${BINOWN} -g ${BINGRP} -m 444 ${DOC}.* \
+ ${INSTALL} ${COPY} -o ${BINOWN} -g ${BINGRP} -m 444 ${DOC}.* \
${DESTDIR}${BINDIR}/${VOLUME}
spell: ${SRCS}
diff --git a/share/mk/bsd.lib.mk b/share/mk/bsd.lib.mk
index 313b52e72d9a..3667b73d0495 100644
--- a/share/mk/bsd.lib.mk
+++ b/share/mk/bsd.lib.mk
@@ -1,5 +1,5 @@
# from: @(#)bsd.lib.mk 5.26 (Berkeley) 5/2/91
-# $Id: bsd.lib.mk,v 1.30 1994/02/09 16:23:21 ache Exp $
+# $Id: bsd.lib.mk,v 1.39 1994/06/15 10:14:40 ache Exp $
#
.if exists(${.CURDIR}/../Makefile.inc)
@@ -11,7 +11,11 @@ SHLIB_MAJOR != . ${.CURDIR}/shlib_version ; echo $$major
SHLIB_MINOR != . ${.CURDIR}/shlib_version ; echo $$minor
.endif
-
+.if defined(DESTDIR)
+CFLAGS+= -I${DESTDIR}/usr/include
+CXXINCLUDES+= -I${DESTDIR}/usr/include/${CXX}
+.endif
+INSTALL?= install
LIBDIR?= /usr/lib
LINTLIBDIR?= /usr/libdata/lint
LIBGRP?= bin
@@ -144,13 +148,21 @@ lib${LIB}_p.a:: ${POBJS}
@${AR} cTq lib${LIB}_p.a `lorder ${POBJS} | tsort` ${LDADD}
${RANLIB} lib${LIB}_p.a
+.if defined(DESTDIR)
+LDDESTDIR?= -L${DESTDIR}/usr/lib
+.endif
+
+.if defined(CPLUSPLUSLIB) && !make(clean) && !make(cleandir)
+SOBJS+= ${DESTDIR}/usr/lib/c++rt0.o
+.endif
+
SOBJS+= ${OBJS:.o=.so}
lib${LIB}.so.${SHLIB_MAJOR}.${SHLIB_MINOR}: ${SOBJS}
@echo building shared ${LIB} library \(version ${SHLIB_MAJOR}.${SHLIB_MINOR}\)
@rm -f lib${LIB}.so.${SHLIB_MAJOR}.${SHLIB_MINOR}
@$(LD) -Bshareable \
-o lib${LIB}.so.${SHLIB_MAJOR}.${SHLIB_MINOR} \
- ${SOBJS} ${LDADD}
+ ${SOBJS} ${LDDESTDIR} ${LDADD} ${SHARED_LDADD}
lib${LIB}_pic.a:: ${SOBJS}
@echo building special pic ${LIB} library
@@ -194,21 +206,21 @@ beforeinstall:
.endif
realinstall: beforeinstall
- install ${COPY} -o ${LIBOWN} -g ${LIBGRP} -m ${LIBMODE} lib${LIB}.a \
+ ${INSTALL} ${COPY} -o ${LIBOWN} -g ${LIBGRP} -m ${LIBMODE} lib${LIB}.a \
${DESTDIR}${LIBDIR}
${RANLIB} -t ${DESTDIR}${LIBDIR}/lib${LIB}.a
.if !defined(NOPROFILE)
- install ${COPY} -o ${LIBOWN} -g ${LIBGRP} -m ${LIBMODE} \
+ ${INSTALL} ${COPY} -o ${LIBOWN} -g ${LIBGRP} -m ${LIBMODE} \
lib${LIB}_p.a ${DESTDIR}${LIBDIR}
${RANLIB} -t ${DESTDIR}${LIBDIR}/lib${LIB}_p.a
.endif
.if !defined(NOPIC)
.if defined(SHLIB_MAJOR) && defined(SHLIB_MINOR)
- install ${COPY} -o ${LIBOWN} -g ${LIBGRP} -m ${LIBMODE} \
+ ${INSTALL} ${COPY} -o ${LIBOWN} -g ${LIBGRP} -m ${LIBMODE} \
lib${LIB}.so.${SHLIB_MAJOR}.${SHLIB_MINOR} ${DESTDIR}${LIBDIR}
.endif
.if defined(INSTALL_PIC_ARCHIVE)
- install ${COPY} -o ${LIBOWN} -g ${LIBGRP} -m ${LIBMODE} \
+ ${INSTALL} ${COPY} -o ${LIBOWN} -g ${LIBGRP} -m ${LIBMODE} \
lib${LIB}_pic.a ${DESTDIR}${LIBDIR}
${RANLIB} -t ${DESTDIR}${LIBDIR}/lib${LIB}_pic.a
.endif
diff --git a/share/mk/bsd.man.mk b/share/mk/bsd.man.mk
index dd5aee25e345..7836d0399948 100644
--- a/share/mk/bsd.man.mk
+++ b/share/mk/bsd.man.mk
@@ -1,19 +1,32 @@
# from: @(#)bsd.man.mk 5.2 (Berkeley) 5/11/90
-# $Id: bsd.man.mk,v 1.4 1994/01/31 06:10:33 rgrimes Exp $
+# $Id: bsd.man.mk,v 1.6 1994/06/05 20:42:39 csgr Exp $
.if exists(${.CURDIR}/../Makefile.inc)
.include "${.CURDIR}/../Makefile.inc"
.endif
+INSTALL?= install
MANGRP?= bin
MANOWN?= bin
MANMODE?= 444
MANDIR?= /usr/share/man/man
MANSRC?= ${.CURDIR}
-MINSTALL= install ${COPY} -o ${MANOWN} -g ${MANGRP} -m ${MANMODE}
+MINSTALL= ${INSTALL} ${COPY} -o ${MANOWN} -g ${MANGRP} -m ${MANMODE}
-maninstall:
+MCOMPRESS= gzip -f
+BASENAME= basename
+ZEXTENSION= .gz
+.if !defined(NOMANCOMPRESS)
+ZEXT= ${ZEXTENSION}
+.else
+ZEXT=
+.endif
+
+MANALL= ${MAN1} ${MAN2} ${MAN3} ${MAN3F} ${MAN4} ${MAN5} \
+ ${MAN6} ${MAN7} ${MAN8}
+
+maninstall: ${MANDEPEND}
.if defined(MAN1) && !empty(MAN1)
(cd ${MANSRC}; ${MINSTALL} ${MAN1} ${DESTDIR}${MANDIR}1${MANSUBDIR})
.endif
@@ -41,6 +54,33 @@ maninstall:
.if defined(MAN8) && !empty(MAN8)
(cd ${MANSRC}; ${MINSTALL} ${MAN8} ${DESTDIR}${MANDIR}8${MANSUBDIR})
.endif
+
+# by default all pages are compressed
+# we don't handle .so's yet
+.if !empty(MANALL:S/ //g)
+.if !defined(NOMANCOMPRESS)
+ @set ${MANALL} ; \
+ while test $$# -ge 1; do \
+ name=`${BASENAME} $$1`; \
+ sect=`expr $$name : '.*\.\([^.]*\)'`; \
+ echo "compressing in" \
+ "${DESTDIR}${MANDIR}$${sect}${MANSUBDIR}:" \
+ "$$name -> $${name}${ZEXT}"; \
+ ${MCOMPRESS} ${DESTDIR}${MANDIR}$${sect}${MANSUBDIR}/$$name ; \
+ shift ; \
+ done ; true
+.else
+# we are installing uncompressed pages, so nuke any compressed pages
+ @set ${MANALL} ; \
+ while test $$# -ge 1; do \
+ name=`${BASENAME} $$1`; \
+ sect=`expr $$name : '.*\.\([^.]*\)'`; \
+ rm -f ${DESTDIR}${MANDIR}$${sect}${MANSUBDIR}/$$name${ZEXTENSION};\
+ shift ; \
+ done ; true
+.endif
+.endif
+
.if defined(MLINKS) && !empty(MLINKS)
@set ${MLINKS}; \
while test $$# -ge 2; do \
@@ -54,8 +94,9 @@ maninstall:
sect=`expr $$name : '.*\.\([^.]*\)'`; \
dir=${DESTDIR}${MANDIR}$$sect; \
t=$${dir}${MANSUBDIR}/$$name; \
- echo $$t -\> $$l; \
- rm -f $$t; \
- ln $$l $$t; \
+ echo $${t}${ZEXT} -\> $${l}${ZEXT}; \
+ rm -f $${t}${ZEXTENSION}; \
+ rm -f $${t}; \
+ ln $${l}${ZEXT} $${t}${ZEXT}; \
done; true
.endif
diff --git a/share/mk/bsd.own.mk b/share/mk/bsd.own.mk
index fb7a348c4633..dc17f18f6785 100644
--- a/share/mk/bsd.own.mk
+++ b/share/mk/bsd.own.mk
@@ -1,4 +1,4 @@
-# $Id: bsd.own.mk,v 1.3 1994/01/31 06:10:35 rgrimes Exp $
+# $Id: bsd.own.mk,v 1.5 1994/03/19 22:02:35 jkh Exp $
BINGRP?= bin
BINOWN?= bin
diff --git a/share/mk/bsd.prog.mk b/share/mk/bsd.prog.mk
index 80ab11fcf589..8a24d4d52ec8 100644
--- a/share/mk/bsd.prog.mk
+++ b/share/mk/bsd.prog.mk
@@ -1,5 +1,5 @@
# from: @(#)bsd.prog.mk 5.26 (Berkeley) 6/25/91
-# $Id: bsd.prog.mk,v 1.18 1994/01/31 06:10:37 rgrimes Exp $
+# $Id: bsd.prog.mk,v 1.28 1994/06/15 10:14:41 ache Exp $
.if exists(${.CURDIR}/../Makefile.inc)
.include "${.CURDIR}/../Makefile.inc"
@@ -8,6 +8,10 @@
.SUFFIXES: .out .o .c .cc .cxx .C .y .l .s .S
CFLAGS+=${COPTS}
+.if defined(DESTDIR)
+CFLAGS+= -I${DESTDIR}/usr/include
+CXXINCLUDES+= -I${DESTDIR}/usr/include/${CXX}
+.endif
STRIP?= -s
@@ -15,6 +19,8 @@ BINGRP?= bin
BINOWN?= bin
BINMODE?= 555
+INSTALL?= install
+.if !defined(DESTDIR)
LIBCRT0?= /usr/lib/crt0.o
LIBC?= /usr/lib/libc.a
LIBCOMPAT?= /usr/lib/libcompat.a
@@ -31,12 +37,38 @@ LIBM?= /usr/lib/libm.a
LIBMP?= /usr/lib/libmp.a
LIBPC?= /usr/lib/libpc.a
LIBPLOT?= /usr/lib/libplot.a
+LIBREADLINE?= /usr/lib/libreadline.a
LIBRESOLV?= /usr/lib/libresolv.a
LIBRPCSVC?= /usr/lib/librpcsvc.a
+LIBSKEY?= /usr/lib/libskey.a
LIBTELNET?= /usr/lib/libtelnet.a
-LIBTERM?= /usr/lib/libterm.a
+LIBTERM?= /usr/lib/libtermcap.a
LIBUTIL?= /usr/lib/libutil.a
-
+.else
+LIBCRT0?= ${DESTDIR}/usr/lib/crt0.o
+LIBC?= ${DESTDIR}/usr/lib/libc.a
+LIBCOMPAT?= ${DESTDIR}/usr/lib/libcompat.a
+LIBCRYPT?= ${DESTDIR}/usr/lib/libcrypt.a
+LIBCURSES?= ${DESTDIR}/usr/lib/libcurses.a
+LIBDBM?= ${DESTDIR}/usr/lib/libdbm.a
+LIBDES?= ${DESTDIR}/usr/lib/libdes.a
+LIBGNUMALLOC?= ${DESTDIR}/usr/lib/libgnumalloc.a
+LIBGNUREGEX?= ${DESTDIR}/usr/lib/libgnuregex.a
+LIBL?= ${DESTDIR}/usr/lib/libl.a
+LIBKDB?= ${DESTDIR}/usr/lib/libkdb.a
+LIBKRB?= ${DESTDIR}/usr/lib/libkrb.a
+LIBM?= ${DESTDIR}/usr/lib/libm.a
+LIBMP?= ${DESTDIR}/usr/lib/libmp.a
+LIBPC?= ${DESTDIR}/usr/lib/libpc.a
+LIBPLOT?= ${DESTDIR}/usr/lib/libplot.a
+LIBREADLINE?= ${DESTDIR}/usr/lib/libreadline.a
+LIBRESOLV?= ${DESTDIR}/usr/lib/libresolv.a
+LIBRPCSVC?= ${DESTDIR}/usr/lib/librpcsvc.a
+LIBSKEY?= ${DESTDIR}/usr/lib/libskey.a
+LIBTELNET?= ${DESTDIR}/usr/lib/libtelnet.a
+LIBTERM?= ${DESTDIR}/usr/lib/libtermcap.a
+LIBUTIL?= ${DESTDIR}/usr/lib/libutil.a
+.endif
.if defined(NOSHARED)
LDFLAGS+= -static
.endif
@@ -55,6 +87,10 @@ CLEANFILES+=strings
.endif
+.if defined(DESTDIR)
+LDDESTDIR?= -L${DESTDIR}/usr/lib
+.endif
+
.if defined(PROG)
.if defined(SRCS)
@@ -64,12 +100,13 @@ OBJS+= ${SRCS:N*.h:R:S/$/.o/g}
.if defined(LDONLY)
${PROG}: ${LIBCRT0} ${LIBC} ${DPSRCS} ${OBJS} ${DPADD}
- ${LD} ${LDFLAGS} -o ${.TARGET} ${LIBCRT0} ${OBJS} ${LIBC} ${LDADD}
+ ${LD} ${LDFLAGS} -o ${.TARGET} ${LIBCRT0} ${OBJS} ${LIBC} ${LDDESTDR} \
+ ${LDADD}
.else defined(LDONLY)
${PROG}: ${DPSRCS} ${OBJS} ${LIBC} ${DPADD}
- ${CC} ${LDFLAGS} -o ${.TARGET} ${OBJS} ${LDADD}
+ ${CC} ${CFLAGS} ${LDFLAGS} -o ${.TARGET} ${OBJS} ${LDDESTDIR} ${LDADD}
.endif
@@ -78,7 +115,8 @@ ${PROG}: ${DPSRCS} ${OBJS} ${LIBC} ${DPADD}
SRCS= ${PROG}.c
${PROG}: ${DPSRCS} ${SRCS} ${LIBC} ${DPADD}
- ${CC} ${LDFLAGS} ${CFLAGS} -o ${.TARGET} ${.CURDIR}/${SRCS} ${LDADD}
+ ${CC} ${LDFLAGS} ${CFLAGS} -o ${.TARGET} ${.CURDIR}/${SRCS} \
+ ${LDDESTDIR} ${LDADD}
MKDEP= -p
@@ -129,7 +167,7 @@ afterinstall:
realinstall: _PROGSUBDIR
.if defined(PROG)
- install ${COPY} ${STRIP} -o ${BINOWN} -g ${BINGRP} -m ${BINMODE} \
+ ${INSTALL} ${COPY} ${STRIP} -o ${BINOWN} -g ${BINGRP} -m ${BINMODE} \
${PROG} ${DESTDIR}${BINDIR}
.endif
.if defined(HIDEGAME)
diff --git a/share/mk/sys.mk b/share/mk/sys.mk
index 71d12562ed44..154bd5183896 100644
--- a/share/mk/sys.mk
+++ b/share/mk/sys.mk
@@ -1,5 +1,5 @@
# from: @(#)sys.mk 5.11 (Berkeley) 3/13/91
-# $Id: sys.mk,v 1.5 1994/02/04 03:19:16 wollman Exp $
+# $Id: sys.mk,v 1.7 1994/06/13 21:02:48 csgr Exp $
unix= We run FreeBSD, not UNIX.
@@ -18,7 +18,7 @@ CC= cc
CFLAGS= -O
CXX= g++
-CXXFLAGS= ${CFLAGS}
+CXXFLAGS= ${CXXINCLUDES} ${CFLAGS}
CPP= cpp
@@ -100,3 +100,7 @@ YFLAGS=-d
rm -f lex.yy.c
.include <bsd.own.mk>
+
+.if exists(/etc/make.conf)
+.include </etc/make.conf>
+.endif
diff --git a/share/syscons/examples/setrus b/share/syscons/examples/setrus
index d88f4ac273a5..91f31e21f9af 100755
--- a/share/syscons/examples/setrus
+++ b/share/syscons/examples/setrus
@@ -1,17 +1,17 @@
#!/bin/sh
# Load KOI8-R screen mapping.
-syscons -S koi8-r2alt
+vidcontrol -l koi8-r2alt
# Load Alternate Codes screen font.
-syscons -f 16 alt8x16
-syscons -f 14 alt-8x14
-syscons -f 8 alt-8x8
+vidcontrol -f 8x16 altb-8x16
+vidcontrol -f 8x14 alt-8x14
+vidcontrol -f 8x8 alt-8x8
# Install JCUKEN keyboard mapping.
-# syscons -k ru.koi8-r # Not needed for kernel compiled with RUKEYMAP option
+# kbdcontrol -l ru.koi8-r # Not needed for kernel compiled with RUKEYMAP option
# Remap Del to Esc[K.
-syscons -F 54 ""
+kbdcontrol -f 54 ""
# Remap -5- to Esc[E.
-syscons -F 48 ""
+kbdcontrol -f 48 ""
# Maximum key rate
-syscons -r fast
+kbdcontrol -r fast
# Blank after 5 min
-syscons -s 300
+vidcontrol -t 300
diff --git a/share/syscons/fonts/Makefile b/share/syscons/fonts/Makefile
index 73b8698c6a79..289f3b9a6e66 100644
--- a/share/syscons/fonts/Makefile
+++ b/share/syscons/fonts/Makefile
@@ -1,9 +1,20 @@
-FONTS = cp850-8x14 cp850-8x16 cp850-8x8 cp865-8x14 cp865-8x16 \
- cp865-8x8 iso-8x14 iso-8x16 iso-8x8
+UUFONTS=altc-8x16.fnt cp865-8x14.fnt iso-8x16.fnt koi8-8x8.fnt alt-8x14.fnt \
+ cp850-8x14.fnt cp865-8x16.fnt iso-8x8.fnt koi8c-8x16.fnt alt-8x16.fnt \
+ cp850-8x16.fnt cp865-8x8.fnt koi8-8x14.fnt alt-8x8.fnt cp850-8x8.fnt \
+ iso-8x14.fnt koi8-8x16.fnt altb-8x16.fnt koi8b-8x16.fnt
+
+FONTS=altc-8x16 cp865-8x14 iso-8x16 koi8-8x8 alt-8x14 \
+ cp850-8x14 cp865-8x16 iso-8x8 koi8c-8x16 alt-8x16 \
+ cp850-8x16 cp865-8x8 koi8-8x14 alt-8x8 cp850-8x8 \
+ iso-8x14 koi8-8x16 koi8b-8x16 altb-8x16
+
FONTDIR = /usr/share/syscons/fonts
+NOMAN = noman
install:
cd ${.CURDIR}; \
+ install -c -o ${BINOWN} -g ${BINGRP} -m 444 ${UUFONTS} \
+ ${DESTDIR}${FONTDIR}; \
install -c -o ${BINOWN} -g ${BINGRP} -m 444 ${FONTS} \
${DESTDIR}${FONTDIR}
diff --git a/share/syscons/fonts/alt-8x14.fnt b/share/syscons/fonts/alt-8x14.fnt
new file mode 100644
index 000000000000..9dacecb94ce5
--- /dev/null
+++ b/share/syscons/fonts/alt-8x14.fnt
@@ -0,0 +1,83 @@
+begin 644 alt-8x14
+M`````````````````````'Z!I8&!I9F!?@``````?O_;___#Y_]^````````
+M;/[^_OY\.!`````````0.'S^?#@0````````&#P\Y^?G&!@\```````8/'[_
+M_WX8&#P``````````!@\/!@``````/______Y\/#Y_______`````#QF0D)F
+M/`````#_____PYF]O9G#_____P``'@X:,GC,S,QX```````\9F9F/!A^&!@`
+M`````#\S/S`P,'#PX```````?V-_8V-C9^?FP``````8&-L\YSS;&!@`````
+M`(#`X/C^^.#`@````````@8./OX^#@8"```````8/'X8&!A^/!@``````&9F
+M9F9F9@!F9@``````?]O;VWL;&QL;`````'S&8#ALQL9L.`S&?```````````
+M`/[^_@``````&#Q^&!@8?CP8?@`````8/'X8&!@8&!@``````!@8&!@8&'X\
+M&``````````8#/X,&````````````#!@_F`P`````````````,#`P/X`````
+M```````H;/YL*```````````$#@X?'S^_@````````#^_GQ\.#@0````````
+M```````````````````8/#P\&!@`&!@`````9F9F)```````````````;&S^
+M;&QL_FQL````&!A\QL+`?`:&QGP8&```````PL8,&#!FQ@``````.&QL.';<
+MS,QV`````#`P,&````````````````P8,#`P,#`8#```````,!@,#`P,#!@P
+M`````````&8\_SQF````````````&!A^&!@`````````````````&!@8,```
+M````````_@`````````````````````8&````````@8,&#!@P(````````!\
+MQL[>]N;&QGP``````!@X>!@8&!@8?@``````?,8&#!@P8,;^``````!\Q@8&
+M/`8&QGP```````P</&S,_@P,'@``````_L#`P/P&!L9\```````X8,#`_,;&
+MQGP``````/[&!@P8,#`P,```````?,;&QGS&QL9\``````!\QL;&?@8&#'@`
+M```````8&````!@8`````````!@8````&!@P```````&#!@P8#`8#`8`````
+M`````'X``'X`````````8#`8#`8,&#!@``````!\QL8,&!@`&!@``````'S&
+MQM[>WMS`?```````$#ALQL;^QL;&``````#\9F9F?&9F9OP``````#QFPL#`
+MP,)F/```````^&QF9F9F9FSX``````#^9F)H>&AB9OX``````/YF8FAX:&!@
+M\```````/&;"P,#>QF8Z``````#&QL;&_L;&QL8``````#P8&!@8&!@8/```
+M````'@P,#`P,S,QX``````#F9FQL>&QL9N8``````/!@8&!@8&)F_@``````
+MQN[^_M;&QL;&``````#&YO;^WL[&QL8``````#ALQL;&QL9L.```````_&9F
+M9GQ@8&#P``````!\QL;&QM;>?`P.`````/QF9F9\;&9FY@``````?,;&8#@,
+MQL9\``````!^?EH8&!@8&#P``````,;&QL;&QL;&?```````QL;&QL;&;#@0
+M``````#&QL;&UM;^?&P``````,;&;#@X.&S&Q@``````9F9F9CP8&!@\````
+M``#^QHP8,&#"QOX``````#PP,#`P,#`P/```````@,#@<#@<#@8"```````\
+M#`P,#`P,##P````0.&S&`````````````````````````````/\`,#`8````
+M`````````````````'@,?,S,=@``````X&!@>&QF9F9\``````````!\QL#`
+MQGP``````!P,##QLS,S,=@``````````?,;^P,9\```````X;&1@\&!@8/``
+M`````````';,S,Q\#,QX````X&!@;'9F9F;F```````8&``X&!@8&#P`````
+M``8&``X&!@8&9F8\````X&!@9FQX;&;F```````X&!@8&!@8&#P`````````
+M`.S^UM;6Q@``````````W&9F9F9F``````````!\QL;&QGP``````````-QF
+M9F9\8&#P````````=LS,S'P,#!X```````#<=F9@8/```````````'S&<!S&
+M?```````$#`P_#`P,#8<``````````#,S,S,S'8``````````&9F9F8\&```
+M````````QL;6UOYL``````````#&;#@X;,8``````````,;&QL9^!@SX````
+M````_LP8,&;^```````.&!@8<!@8&`X``````!@8&!@`&!@8&```````<!@8
+M&`X8&!AP``````!VW```````````````````$#ALQL;^````````/F;&QL;^
+MQL;&``````#^P,#\QL;&QOP``````/S&QL;\QL;&_```````_L;`P,#`P,#`
+M```````\;&QL;&QL;/[&@@```/[&P,#PP,#&_@``````UM;65'S6UM;6````
+M``!\Q@8<!@;&QGP``````,;&QL[>]N;&Q@`````,VL;&SM[VYL;&``````#&
+MS-CP\-C,QL8``````!XV9L;&QL;&Q@``````@L;&[N[^UL;&``````#&QL;&
+M_L;&QL8``````'[&QL;&QL;&_```````_L;&QL;&QL;&``````#\QL;&QOS`
+MP,```````'S&QL#`P,;&?```````?GY:&!@8&!@8``````#&QL;&QGX&QGP`
+M`````'S6UM;6UGP0.```````QL9L.#ALQL;&``````#,S,S,S,S,S/X"!@``
+M`,;&QL;&?@8&!@````#6UM;6UM;6UM;^`````-;6UM;6UM;6UOX"!@```.#@
+M8'QF9F9F?```````QL;&YK:VMK;F``````#`P,#\QL;&QOP``````'S&!AX&
+M!L;&?```````G+:VMO:VMK:<``````!^QL;&QGXV9L8``````````'S&QO[&
+MQ@``````````_L#\QL;\``````````#\QOS&QOP``````````/["P,#`P```
+M````````/&QL;&S^QH(```````!\QOS`QGP``````````-;6?-;6U@``````
+M````?,8<!L9\``````````#&SM[VYL8````````,&,;.WO;FQ@``````````
+MQLSXV,S&```````````^9F9F9L8``````````,;N_M;&Q@``````````QL;&
+M_L;&``````````!^QL;&QOP``````````/[&QL;&Q@```!%$$4011!%$$401
+M1!%$5:I5JE6J5:I5JE6J5:K==]UWW7?==]UWW7?==Q@8&!@8&!@8&!@8&!@8
+M&!@8&!@8&/@8&!@8&!@8&!@8&/@8^!@8&!@8&#8V-C8V-C;V-C8V-C8V````
+M`````/XV-C8V-C8``````/@8^!@8&!@8&#8V-C8V]@;V-C8V-C8V-C8V-C8V
+M-C8V-C8V-C8``````/X&]C8V-C8V-C8V-C8V]@;^````````-C8V-C8V-OX`
+M```````8&!@8&/@8^`````````````````#X&!@8&!@8&!@8&!@8&!\`````
+M```8&!@8&!@8_P````````````````#_&!@8&!@8&!@8&!@8&!\8&!@8&!@`
+M````````_P```````!@8&!@8&!C_&!@8&!@8&!@8&!@?&!\8&!@8&!@V-C8V
+M-C8V-S8V-C8V-C8V-C8V-S`_```````````````_,#<V-C8V-C8V-C8V-O<`
+M_P``````````````_P#W-C8V-C8V-C8V-C8W,#<V-C8V-C8``````/\`_P``
+M`````#8V-C8V]P#W-C8V-C8V&!@8&!C_`/\````````V-C8V-C8V_P``````
+M````````_P#_&!@8&!@8`````````/\V-C8V-C8V-C8V-C8V/P```````!@8
+M&!@8'Q@?```````````````?&!\8&!@8&!@`````````/S8V-C8V-C8V-C8V
+M-C;_-C8V-C8V&!@8&!C_&/\8&!@8&!@8&!@8&!@8^``````````````````?
+M&!@8&!@8__________________\`````````__________#P\/#P\/#P\/#P
+M\/#P#P\/#P\/#P\/#P\/#P__________````````````````_,;&QL;\P,``
+M``````!\QL#`QGP``````````'Y:&!@8&```````````QL;&QL9^!GP`````
+M`!!\UM;6UGP0.````````,9L.#ALQ@``````````S,S,S,S^!@P```````#&
+MQL9^!@8``````````-;6UM;6_@``````````UM;6UM;^`@8```````#@8'QF
+M9GP``````````,;&YK:VY@``````````P,#\QL;\``````````!\QAX&QGP`
+M`````````)RVMO:VG```````````?L9^-F;&````;&P`_L;`\,#`QOX`````
+M`&QL`'S&_,#&?```````,!@,!@P8,`!^```````,&#!@,!@,`'X```````X;
+M&Q@8&!@8&!@8&!@8&!@8&!@8V-AP````````&!@`?@`8&```````````=MP`
+M=MP````````X;&PX````````````````````&!@`````````````````&```
+M```````/#`P,#`SL;#P<``````!\@KJJHJ*JNH)\````<-@P8,CX````````
+=``````!\?'Q\?'P```````````````````````!\
+`
+end
diff --git a/share/syscons/fonts/alt-8x16.fnt b/share/syscons/fonts/alt-8x16.fnt
new file mode 100644
index 000000000000..117db34fa9ec
--- /dev/null
+++ b/share/syscons/fonts/alt-8x16.fnt
@@ -0,0 +1,95 @@
+begin 644 alt-8x16
+M````````````````````````?H&E@8&EF8&!?@```````'[_V___V^?__WX`
+M`````````&S^_O[^?#@0```````````0.'S^?#@0```````````8/#SGY^<8
+M&#P`````````&#Q^__]^&!@\`````````````!@\/!@```````#________G
+MP\/G________```````\9D)"9CP``````/______PYF]O9G#______\``!X&
+M#AIXS,S,S'@````````\9F9F9CP8?A@8````````/S,_,#`P,'#PX```````
+M`']C?V-C8V-GY^;`````````&!C;/.<\VQ@8``````"`P.#P^/[X\.#`@```
+M`````@8.'C[^/AX.!@(````````8/'X8&!A^/!@`````````9F9F9F9F9@!F
+M9@```````'_;V]M[&QL;&QL``````'S&8#ALQL9L.`S&?```````````````
+M_O[^_@```````!@\?A@8&'X\&'X````````8/'X8&!@8&!@8````````&!@8
+M&!@8&'X\&````````````!@,_@P8```````````````P8/Y@,```````````
+M`````,#`P/X``````````````"AL_FPH`````````````!`X.'Q\_OX`````
+M``````#^_GQ\.#@0```````````````````````````````8/#P\&!@8`!@8
+M``````!F9F8D``````````````````!L;/YL;&S^;&P`````&!A\QL+`?`8&
+MAL9\&!@```````#"Q@P8,&#&A@```````#AL;#AVW,S,S'8``````#`P,&``
+M````````````````#!@P,#`P,#`8#````````#`8#`P,#`P,&#``````````
+M``!F//\\9@``````````````&!A^&!@````````````````````8&!@P````
+M`````````/X````````````````````````8&````````````@8,&#!@P(``
+M```````X;,;&UM;&QFPX````````&#AX&!@8&!@8?@```````'S&!@P8,&#`
+MQOX```````!\Q@8&/`8&!L9\````````#!P\;,S^#`P,'@```````/[`P,#\
+M!@8&QGP````````X8,#`_,;&QL9\````````_L8&!@P8,#`P,````````'S&
+MQL9\QL;&QGP```````!\QL;&?@8&!@QX```````````8&````!@8````````
+M````&!@````8&#``````````!@P8,&`P&`P&````````````?@``?@``````
+M``````!@,!@,!@P8,&````````!\QL8,&!@8`!@8`````````'S&QM[>WMS`
+M?````````!`X;,;&_L;&QL8```````#\9F9F?&9F9F;\````````/&;"P,#`
+MP,)F/````````/AL9F9F9F9F;/@```````#^9F)H>&A@8F;^````````_F9B
+M:'AH8&!@\````````#QFPL#`WL;&9CH```````#&QL;&_L;&QL;&````````
+M/!@8&!@8&!@8/````````!X,#`P,#,S,S'@```````#F9F9L>'AL9F;F````
+M````\&!@8&!@8&)F_@```````,;N_O[6QL;&QL8```````#&YO;^WL[&QL;&
+M````````?,;&QL;&QL;&?````````/QF9F9\8&!@8/````````!\QL;&QL;&
+MUMY\#`X`````_&9F9GQL9F9FY@```````'S&QF`X#`;&QGP```````!^?EH8
+M&!@8&!@\````````QL;&QL;&QL;&?````````,;&QL;&QL9L.!````````#&
+MQL;&UM;6_NYL````````QL9L?#@X?&S&Q@```````&9F9F8\&!@8&#P`````
+M``#^QH8,&#!@PL;^````````/#`P,#`P,#`P/`````````"`P.!P.!P.!@(`
+M```````\#`P,#`P,#`P\`````!`X;,8`````````````````````````````
+M````_P``,#`8````````````````````````>`Q\S,S,=@```````.!@8'AL
+M9F9F9GP```````````!\QL#`P,9\````````'`P,/&S,S,S,=@``````````
+M`'S&_L#`QGP````````X;&1@\&!@8&#P````````````=LS,S,S,?`S,>```
+M`.!@8&QV9F9F9N8````````8&``X&!@8&!@\````````!@8`#@8&!@8&!F9F
+M/````.!@8&9L>'AL9N8````````X&!@8&!@8&!@\````````````[/[6UM;6
+MQ@```````````-QF9F9F9F8```````````!\QL;&QL9\````````````W&9F
+M9F9F?&!@\````````';,S,S,S'P,#!X```````#<=F9@8&#P````````````
+M?,9@.`S&?````````!`P,/PP,#`P-AP```````````#,S,S,S,QV````````
+M````9F9F9F8\&````````````,;&UM;6_FP```````````#&;#@X.&S&````
+M````````QL;&QL;&?@8,^````````/[,&#!@QOX````````.&!@8<!@8&!@.
+M````````&!@8&``8&!@8&````````'`8&!@.&!@8&'````````!VW```````
+M```````````````0.&S&QL;^`````````#YFQL;&_L;&QL8```````#^P,#`
+M_,;&QL;\````````_,;&QOS&QL;&_````````/[&P,#`P,#`P,`````````\
+M;&QL;&QL;&S^QH(`````_L;`P/#`P,#&_@```````-;6UE1\UM;6UM8`````
+M``!\Q@8&'`8&QL9\````````QL;&QL[>]N;&Q@``````#-K&QL;.WO;FQL8`
+M``````#&S-CP\-C,QL;&````````'C9FQL;&QL;&Q@```````,;&[N[^_M;6
+MQL8```````#&QL;&_L;&QL;&````````?L;&QL;&QL;&_````````/[&QL;&
+MQL;&QL8```````#\QL;&QL;\P,#`````````?,;&P,#`P,;&?````````'Y^
+M6A@8&!@8&!@```````#&QL;&QL9^!L9\````````?-;6UM;6UGP0.```````
+M`,;&;#@X;,;&QL8```````#,S,S,S,S,S,S^`@8$````QL;&QL9^!@8&!@``
+M`````-;6UM;6UM;6UOX```````#6UM;6UM;6UM;^`@8$````X.!@8'QF9F9F
+M?````````,;&QL;FMK:VMN8```````#`P,#`_,;&QL;\````````>,P&!AX>
+M!@;,>````````)RVMK;VMK:VMIP```````!^QL;&QGXV9L;&````````````
+M?,;&QO[&Q@```````````/[`_,;&QOP```````````#\QL;\QL;\````````
+M````_L;"P,#`P````````````#QL;&QL;/[&@@````````!\QL;\P,9\````
+M````````UM;6?-;6U@```````````'S&!AP&QGP```````````#&QL[>]N;&
+M``````````P8QL;.WO;FQ@```````````,;,V/C8S,8````````````^9F9F
+M9F;&````````````QN[^UL;&Q@```````````,;&QO[&QL8```````````!^
+MQL;&QL;\````````````_L;&QL;&Q@`````11!%$$4011!%$$4011!%$5:I5
+MJE6J5:I5JE6J5:I5JMUWW7?==]UWW7?==]UWW7<8&!@8&!@8&!@8&!@8&!@8
+M&!@8&!@8&/@8&!@8&!@8&!@8&!@8^!CX&!@8&!@8&!@V-C8V-C8V]C8V-C8V
+M-C8V`````````/XV-C8V-C8V-@``````^!CX&!@8&!@8&!@V-C8V-O8&]C8V
+M-C8V-C8V-C8V-C8V-C8V-C8V-C8V-@``````_@;V-C8V-C8V-C8V-C8V-O8&
+M_@``````````-C8V-C8V-OX``````````!@8&!@8^!CX````````````````
+M````^!@8&!@8&!@8&!@8&!@8&!\``````````!@8&!@8&!C_````````````
+M````````_Q@8&!@8&!@8&!@8&!@8&!\8&!@8&!@8&`````````#_````````
+M```8&!@8&!@8_Q@8&!@8&!@8&!@8&!@?&!\8&!@8&!@8&#8V-C8V-C8W-C8V
+M-C8V-C8V-C8V-C<P/P`````````````````_,#<V-C8V-C8V-C8V-C8V]P#_
+M`````````````````/\`]S8V-C8V-C8V-C8V-C8W,#<V-C8V-C8V-@``````
+M_P#_```````````V-C8V-O<`]S8V-C8V-C8V&!@8&!C_`/\``````````#8V
+M-C8V-C;_`````````````````/\`_Q@8&!@8&!@8`````````/\V-C8V-C8V
+M-C8V-C8V-C8_```````````8&!@8&!\8'P`````````````````?&!\8&!@8
+M&!@8&``````````_-C8V-C8V-C8V-C8V-C8V_S8V-C8V-C8V&!@8&!C_&/\8
+M&!@8&!@8&!@8&!@8&!CX````````````````````'Q@8&!@8&!@8________
+M_____________P````````#____________P\/#P\/#P\/#P\/#P\/#P#P\/
+M#P\/#P\/#P\/#P\/#_________\``````````````````/S&QL;&QOS`P,``
+M``````!\QL#`PL9\````````````?EH8&!@8&````````````,;&QL;&QGX&
+MQGP``````!!\UM;6UM9\$#@`````````QFPX.&S&Q@```````````,S,S,S,
+MS/X&#`````````#&QL;&?@8&````````````UM;6UM;6_@```````````-;6
+MUM;6UOX"!@0```````#@8'QF9F9\````````````QL;FMK:VY@``````````
+M`,#`_,;&QOP```````````!\Q@8>!L9\````````````G+:V]K:VG```````
+M`````'[&QGXV9L8`````9F8`_L;`P/#`P,;^````````;&P`?,;&_,#&?```
+M```````P&`P&#!@P`'X`````````#!@P8#`8#`!^````````#AL;&!@8&!@8
+M&!@8&!@8&!@8&!@8&-C8V'```````````!@8`'X`&!@`````````````=MP`
+M=MP`````````.&QL.````````````````````````!@8````````````````
+M````&```````````#PP,#`P,[&QL/!P```````!\@KJJHJ*BJKJ"?`````!P
+MV#!@R/@`````````````````?'Q\?'Q\?```````````````````````````
+!`#!@
+`
+end
diff --git a/share/syscons/fonts/alt-8x8.fnt b/share/syscons/fonts/alt-8x8.fnt
new file mode 100644
index 000000000000..8db1c42fb9eb
--- /dev/null
+++ b/share/syscons/fonts/alt-8x8.fnt
@@ -0,0 +1,49 @@
+begin 644 alt-8x8
+M``````````!^@:6!O9F!?G[_V__#Y_]^;/[^_GPX$``0.'S^?#@0`#A\./[^
+M?#A\$!`X?/Y\.'P``!@\/!@``/__Y\/#Y___`#QF0D)F/`#_PYF]O9G#_P\'
+M#WW,S,QX/&9F9CP8?A@_,S\P,'#PX']C?V-C9^;`F5H\Y^<\6IF`X/C^^."`
+M``(./OX^#@(`&#Q^&!A^/!AF9F9F9@!F`'_;VWL;&QL`/F,X;&PXS'@`````
+M?GY^`!@\?AA^/!C_&#Q^&!@8&``8&!@8?CP8```8#/X,&````#!@_F`P````
+M`,#`P/X````D9O]F)````!@\?O__````__]^/!@`````````````,'AX,#``
+M,`!L;&P``````&QL_FS^;&P`,'S`>`SX,```QLP8,&;&`#AL.';<S'8`8&#`
+M```````8,&!@8#`8`&`P&!@8,&```&8\_SQF````,##\,#``````````,#!@
+M````_````````````#`P``8,&#!@P(``?,;.WO;F?``P<#`P,##\`'C,##A@
+MS/P`>,P,.`S,>``</&S,_@P>`/S`^`P,S'@`.&#`^,S,>`#\S`P8,#`P`'C,
+MS'C,S'@`>,S,?`P8<```,#```#`P```P,```,#!@&#!@P&`P&````/P``/P`
+M`&`P&`P8,&``>,P,&#``,`!\QM[>WL!X`#!XS,S\S,P`_&9F?&9F_``\9L#`
+MP&8\`/AL9F9F;/@`_F)H>&AB_@#^8FAX:&#P`#QFP,#.9CX`S,S,_,S,S`!X
+M,#`P,#!X`!X,#`S,S'@`YF9L>&QFY@#P8&!@8F;^`,;N_O[6QL8`QN;VWL[&
+MQ@`X;,;&QFPX`/QF9GQ@8/``>,S,S-QX'`#\9F9\;&;F`'C,X'`<S'@`_+0P
+M,#`P>`#,S,S,S,S\`,S,S,S,>#``QL;&UO[NQ@#&1&PX.&S&`,S,S'@P,'@`
+M_L:,&#)F_@!X8&!@8&!X`,!@,!@,!@(`>!@8&!@8>``0.&S&````````````
+M``#_,#`8`````````'@,?,Q\`&!@8'QF9GP```!XS,#,>``,#`Q\S,Q\````
+M>,S\P'@`.&Q@\&!@\````'S,S'P,^&!@?&9F9F8`,`!P,#`P>``,``P,#`QL
+M.&!@9FQX;&8`<#`P,#`P>````,S^_M;&````^,S,S,P```!XS,S,>````'QF
+M9GQ@8```?,S,?`P,``#<=F9@\````'S`>`SX`!`P?#`P-!@```#,S,S,?```
+M`,S,S'@P````QM;^_FP```#&;#ALQ@```,S,S'P,^```_)@P9/P`'#`PX#`P
+M'``8&!@`&!@8`.`P,!PP,.``=MP`````````$#ALQL;^`!XV9F9^9F8`?&!@
+M?&9F?`!\9F9\9F9\`'Y@8&!@8&``.&QL;&QL_L9^8&!\8&!^`-O;?CQ^V]L`
+M/&8&'`9F/`!F9FY^=F9F`#QF;GYV9F8`9FQX<'AL9@`>-F9F9F9F`,;N_O[6
+MQL8`9F9F?F9F9@`\9F9F9F8\`'YF9F9F9F8`?&9F9GQ@8``\9F!@8&8\`'X8
+M&!@8&!@`9F9F/@9F/`!^V]O;?A@8`&9F/!@\9F8`9F9F9F9F?P-F9F8^!@8&
+M`-O;V]O;V_\`V]O;V]O;_P/@8&!\9F9\`,;&QO;>WO8`8&!@?&9F?`!XC`8^
+M!HQX`,[;V_O;V\X`/F9F9CXV9@```'@,?,QV```\8#QF9CP```!\9GQF?```
+M`'Y@8&!@````/&QL;/[&```\9GY@/````-M^/'[;````/&8,9CP```!F;GYV
+M9@``&&9N?G9F````9FQX;&8````>-F9F9@```,;^_M;&````9F9^9F8````\
+M9F9F/````'YF9F9F`!%$$4011!%$5:I5JE6J5:K==]UWW7?==Q@8&!@8&!@8
+M&!@8^!@8&!@8^!CX&!@8&#8V-O8V-C8V````_C8V-C8`^!CX&!@8&#;V!O8V
+M-C8V-C8V-C8V-C8`_@;V-C8V-C;V!OX`````-C8V_@`````8^!CX````````
+M`/@8&!@8&!@8'P`````8&!C_`````````/\8&!@8&!@8'Q@8&!@```#_````
+M`!@8&/\8&!@8&!\8'Q@8&!@V-C8W-C8V-C8W,#\``````#\P-S8V-C8V]P#_
+M``````#_`/<V-C8V-C<P-S8V-C8`_P#_`````#;W`/<V-C8V&/\`_P`````V
+M-C;_``````#_`/\8&!@8````_S8V-C8V-C8_`````!@?&!\``````!\8'Q@8
+M&!@````_-C8V-C8V-O\V-C8V&/\8_Q@8&!@8&!CX`````````!\8&!@8____
+M______\```#_______#P\/#P\/#P#P\/#P\/#P____\`````````?&9F?&``
+M```\9F!F/````'X8&!@8````9F8^!CP```!^V]M^&````&8\&#QF````9F9F
+M9G\#``!F9CX&!@```-O;V]O_````V]O;V_\#``#@8'QF?````,;&]M[V````
+M8&!\9GP```!\!CX&?````,[;^]O.````/F8^-F8`9@!^8'Q@?@`D`#QF?F`\
+M```P&`P&#!@P``P8,&`P&`P.&QL8&!@8&!@8&!@8V-AP`!@8`'X`&!@`=MP`
+M=MP````X;&PX`````````!@````````X.`````,"!@3,:#@0/$*9H:&90CPP
+72!`@>```````?'Q\?`````````!"?@`X
+`
+end
diff --git a/share/syscons/fonts/alt8x16.fnt b/share/syscons/fonts/altb-8x16
index 2e8400196a29..2e8400196a29 100644
--- a/share/syscons/fonts/alt8x16.fnt
+++ b/share/syscons/fonts/altb-8x16
Binary files differ
diff --git a/share/syscons/fonts/altb-8x16.fnt b/share/syscons/fonts/altb-8x16.fnt
new file mode 100644
index 000000000000..e072d63716a7
--- /dev/null
+++ b/share/syscons/fonts/altb-8x16.fnt
@@ -0,0 +1,95 @@
+begin 664 altb-8x16
+M``````````````!$`````````'Z!I8&!O9F!@7X```````!^_]O__\/G__]^
+M````````9O____]^?CP\&!@`````&!@\/'Y^_WY^/#P8&``````8/#P89O__
+M9A@\?@`````8&#P\?O___WX8/'X`````````&#P\/!@```````#______^?#
+MP\/G________`````#QF0D)"9CP``````/_____#F;V]O9G#______\````>
+M#AHR>,S,S,QX````````/&9F9F8\&'X8&````````#\S,S\P,#!P\.``````
+M``!_8V-_8V-C9^?FP```````&!C;/.?G/-L8&````````(#`X/C^_OC@P(``
+M```````"!@X^_OX^#@8"`````!@\?A@8&!@8&!@8&'X\&```9F9F9F9F9F9F
+M`&9F`````'_;V]O;VWL;&QL;&P````!\QF`X;,;&;#@,QGP`````````````
+M`/[^_O[^`````!@\?A@8&!@8?CP8?@```!@\?O\8&!@8&!@8&!@8&!@8&!@8
+M&!@8&!@8_WX\&`````````@,#O\.#`@````````````0,'#_<#`0````````
+M`````,#`P,#^_@`````````````D9O]F)````````````!`0.#A\?/[^````
+M``````#^_GQ\.#@0$````````````````````````````!@\/#P\&!@8&``8
+M&`````!C8\8`````````````````;&QL_OYL;&S^_FQL;````!A^V]OH>#P>
+M%]O;?A@8``#FINP,&!@P,&!NRLX`````.&QL;#@X;<W&QLMS`````!@8,```
+M```````````````,&!@P,#`P,#`P&!@,````,!@8#`P,#`P,#!@8,```````
+M`&9F//__/&9F````````````&!A^?A@8`````````````````````!@8,```
+M`````````'Y^````````````````````````&!@`````!@8,#!@8,#!@8,#`
+M`````'S&QL;.WO;FQL;&?``````8.'@8&!@8&!@8&'X`````/&;#PP,&#!@P
+M8,/_`````/[&#!@\!@,#`\-F/``````<'#P\;&S,S?\-#!X`````_L#`P/SF
+MPP,#PV8\`````#QFQL#\YL/#P\-F/`````#^Q@8,#!@8,#`P,#``````/&;#
+MPV8\9L/#PV8\`````#QFP\/#PV<_`V-F/```````````&!@`````&!@`````
+M`````!@8`````!@8,``````#!@P8,'`P&`P&`P``````````?GX`?GX`````
+M`````,!@,!@,!@P8,&#``````#QFP\,#!@P8&``8&````````'[#P]_;V][`
+MP'P`````$#A\[L;&QL;^QL;&`````/YC8V-C?F-C8V-C_@`````\9L/#P,#`
+MP,/#9CP`````_&9C8V-C8V-C8V;\`````/]C86!D?&1@8&%C_P````#_8V%@
+M9'QD8&!@8/@`````/&;#P\#`S\/#PV<]`````,;&QL;&_L;&QL;&Q@`````\
+M&!@8&!@8&!@8&#P`````#P8&!@8&!@;&QL9\`````.-C9F9L?&QF9F-CXP``
+M``#P8&!@8&!@8&!A8_\`````P^?__]O;V\/#P\/#`````,;&YN;V]M[>SL[&
+MQ@`````\9L/#P\/#P\/#9CP`````_F-C8V-C?F!@8&#P`````#QFP\/#P\/#
+MR\]^/`8'``#^8V-C8V-^;&9F9O<`````?L/#P,!^`P,#P\-^`````/_;F1@8
+M&!@8&!@8/`````#&QL;&QL;&QL;&QGP`````QL;&QL;&QL;&?#@0`````,/#
+MP\/;V]O;V_]F9@````#&QFQL.#@X.&QLQL8`````P\/#P^=^/!@8&!@\````
+M`/[&C`P8&#`P8&+&_@`````\,#`P,#`P,#`P,#P`````P,!@8#`P&!@,#`8&
+M`````#P,#`P,#`P,#`P,/``````8/&;#````````````````````````````
+M````_P```#`P&```````````````````````/`8^9F9F9CL`````X&!@8'YC
+M8V-C8V/>``````````!\QL#`P,#&?``````.!@8&?L;&QL;&QGL`````````
+M`'S&QO[`P,9\`````#QF9F#P8&!@8&!@\```````````>\;&QL;&QGX&QGP`
+MX&!@8'QF9F9F9F;F```````8&``X&!@8&!@8/```````!@8`#@8&!@8&!@9F
+M9CP`X&!@8&9F;'AL9F;F`````#@8&!@8&!@8&!@8/```````````YO_;V]O#
+MP\,``````````-QF9F9F9F9F``````````!\QL;&QL;&?```````````WF-C
+M8V-C8WY@8/```````'O&QL;&QL9^!@8/``````#><V-@8&!@\```````````
+M?,;`<!P&QGP``````!`P,/PP,#`P,#8<``````````#&QL;&QL;&>P``````
+M````QL;&QNY\.!```````````,/#V]O;V_]F``````````#&[GPX.'SNQ@``
+M````````QL;&QL;&QGX,&'```````/[&#!@P8,;^``````X8&!@8<'`8&!@8
+M#@`````8&!@8&```&!@8&!@`````<!@8&!@>'A@8&!AP``````!VW```````
+M````````````````$#ALQL;&_@`````````0.&S&QO[&QL;&````````_F)B
+M8'QF9F9F_````````/QF9F9\9F9F9OP```````#^8F)@8&!@8&#P````````
+M'C9F9F9F9F9F_\.!`````/YF8FAX:&!B9OX```````#6UE14?'Q4UM;6````
+M````?,8&!CP&!@;&?````````,;&SL[6YN;&QL8`````.#C&QL[.UN;FQL;&
+M````````YF9L;'AX;&QFY@```````!XV9L;&QL;&QL8```````#&[O[^UL;&
+MQL;&````````QL;&QO[&QL;&Q@```````'S&QL;&QL;&QGP```````#^QL;&
+MQL;&QL;&````````_&9F9GQ@8&!@\````````#QFPL#`P,#"9CP```````!^
+M6A@8&!@8&!@\````````QL;&QL9^!@;&?```````/!A^V]O;V]M^&#P`````
+M``#&QFQ\.#A\;,;&````````S,S,S,S,S,S,_@8&`````,;&QL;&?@8&!@8`
+M``````#;V]O;V]O;V]O_````````V]O;V]O;V]O;_P,#`````/BP,#`\-C8V
+M-GP```````##P\/#\]O;V]OS````````\&!@8'QF9F9F_````````'C,!B8^
+M)@8&S'@```````#.V]O;^]O;V]O.````````/V9F9CX^9F9FYP``````````
+M`'@,?,S,S'8```````(&/&!@?&9F9F8\````````````_&9F?&9F_```````
+M`````'XR,C`P,'@````````````>-C9F9F;_P\,`````````?,;^P,#&?```
+M`````````-;65'Q4UM8````````````\9@8,!F8\````````````QL;.UN;&
+MQ@`````````X.,;&SM;FQL8```````````#F;'AX;&;F````````````'C9F
+M9F9F9@```````````,;N_O[6UL8```````````#&QL;^QL;&````````````
+M?,;&QL;&?````````````/[&QL;&QL8```""$((0@A""$((0@A""$((0PQC#
+M&,,8PQC#&,,8PQC#&-B#VA/8@]H3V(/:$]B#VA,8&!@8&!@8&!@8&!@8&!@8
+M&!@8&!@8&!CX&!@8&!@8&!@8&!@8&/@8^!@8&!@8&!@V-C8V-C8V-O8V-C8V
+M-C8V``````````#^-C8V-C8V-@```````/@8^!@8&!@8&!@V-C8V-C;V!O8V
+M-C8V-C8V-C8V-C8V-C8V-C8V-C8V-@```````/X&]C8V-C8V-C8V-C8V-C;V
+M!OX`````````-C8V-C8V-C;^`````````!@8&!@8&/@8^```````````````
+M`````/@8&!@8&!@8&!@8&!@8&!@?`````````!@8&!@8&!@8_P``````````
+M`````````/\8&!@8&!@8&!@8&!@8&!@?&!@8&!@8&```````````_P``````
+M```8&!@8&!@8&/\8&!@8&!@8&!@8&!@8'Q@?&!@8&!@8&#8V-C8V-C8V-S8V
+M-C8V-C8V-C8V-C8W,#\`````````````````/S`W-C8V-C8V-C8V-C8V-O<`
+M_P````````````````#_`/<V-C8V-C8V-C8V-C8V-S`W-C8V-C8V-@``````
+M`/\`_P`````````V-C8V-C;W`/<V-C8V-C8V&!@8&!@8_P#_`````````#8V
+M-C8V-C8V_P````````````````#_`/\8&!@8&!@8``````````#_-C8V-C8V
+M-C8V-C8V-C8V/P`````````8&!@8&!@?&!\`````````````````'Q@?&!@8
+M&!@8&```````````/S8V-C8V-C8V-C8V-C8V-O\V-C8V-C8V&!@8&!@8_QC_
+M&!@8&!@8&!@8&!@8&!@8^````````````````````!\8&!@8&!@8________
+M_____________P``````````___________P\/#P\/#P\/#P\/#P\/#P#P\/
+M#P\/#P\/#P\/#P\/#___________``````````````````#<9F9F9F9\8&#P
+M````````?,;`P,#&?````````````'Y:&!@8&#P```````````#&QL;&QGX&
+M!L9\```````\&'[;V]O;?A@8/````````,9L.#@X;,8```````````#,S,S,
+MS,S^!@8`````````QL;&QGX&!@```````````-;6UM;6UOX```````````#6
+MUM;6UM;^`P,`````````^+`P/C,S?@```````````,;&QO;>WO8`````````
+M``#P8&!\9F;\````````````/F<#'P-G/@```````````,[;V_O;V\X`````
+M``````!^S,S\;,S.``````!L;`#^9F!\8&!F_@```````,8``'S&_L#`QGP`
+M`````&`P&`P&#!@P8`!^```````,&#!@P&`P&`P`?```````#AL;&!@8&!@8
+M&!@8&!@8&!@8&!@8&!@8V/AP`````````!@8`'Y^`!@8````````````=MP`
+M=MP``````````#AL;&PX`````````````````````!@8````````````````
+M````&```````````#PP,#`P,#`SL;#P<````````/$*9H:&90CP```````!P
+MB!!@B/@`````````````````?'Q\?'Q\?````````````````````$)"?@``
+!`!!@
+`
+end
diff --git a/share/syscons/fonts/altc-8x16.fnt b/share/syscons/fonts/altc-8x16.fnt
new file mode 100644
index 000000000000..bb36c7ef3170
--- /dev/null
+++ b/share/syscons/fonts/altc-8x16.fnt
@@ -0,0 +1,95 @@
+begin 644 altc-8x16
+M````````````````````````?H&E@8&EF8&!?@```````'[_V___V^?__WX`
+M`````````&S^_O[^?#@0```````````0.'S^?#@0```````````8/#SGY^<8
+M&#P`````````&#Q^__]^&!@\`````````````!@\/!@```````#________G
+MP\/G________```````\9D)"9CP``````/______PYF]O9G#______\``!X&
+M#AIXS,S,S'@````````\9F9F9CP8?A@8````````/S,_,#`P,'#PX```````
+M`']C?V-C8V-GY^;`````````&!C;/.<\VQ@8``````"`P.#P^/[X\.#`@```
+M`````@8.'C[^/AX.!@(````````8/'X8&!A^/!@`````````9F9F9F9F9@!F
+M9@```````'_;V]M[&QL;&QL``````'S&8#ALQL9L.`S&?```````````````
+M_O[^_@```````!@\?A@8&'X\&'X````````8/'X8&!@8&!@8````````&!@8
+M&!@8&'X\&````````````!@,_@P8```````````````P8/Y@,```````````
+M`````,#`P/X``````````````"AL_FPH`````````````!`X.'Q\_OX`````
+M``````#^_GQ\.#@0```````````````````````````````8/#P\&!@8`!@8
+M``````!F9F8D``````````````````!L;/YL;&S^;&P`````&!A\QL+`?`8&
+MAL9\&!@```````#"Q@P8,&#&A@```````#AL;#AVW,S,S'8``````#`P,&``
+M````````````````#!@P,#`P,#`8#````````#`8#`P,#`P,&#``````````
+M``!F//\\9@``````````````&!A^&!@````````````````````8&!@P````
+M`````````/X````````````````````````8&````````````@8,&#!@P(``
+M```````X;,;&UM;&QFPX````````&#AX&!@8&!@8?@```````'S&!@P8,&#`
+MQOX```````!\Q@8&/`8&!L9\````````#!P\;,S^#`P,'@```````/[`P,#\
+M!@8&QGP````````X8,#`_,;&QL9\````````_L8&!@P8,#`P,````````'S&
+MQL9\QL;&QGP```````!\QL;&?@8&!@QX```````````8&````!@8````````
+M````&!@````8&#``````````!@P8,&`P&`P&````````````?@``?@``````
+M``````!@,!@,!@P8,&````````!\QL8,&!@8`!@8`````````'S&QM[>WMS`
+M?````````!`X;,;&_L;&QL8```````#\9F9F?&9F9F;\````````/&;"P,#`
+MP,)F/````````/AL9F9F9F9F;/@```````#^9F)H>&A@8F;^````````_F9B
+M:'AH8&!@\````````#QFPL#`WL;&9CH```````#&QL;&_L;&QL;&````````
+M/!@8&!@8&!@8/````````!X,#`P,#,S,S'@```````#F9F9L>'AL9F;F````
+M````\&!@8&!@8&)F_@```````,;N_O[6QL;&QL8```````#&YO;^WL[&QL;&
+M````````?,;&QL;&QL;&?````````/QF9F9\8&!@8/````````!\QL;&QL;&
+MUMY\#`X`````_&9F9GQL9F9FY@```````'S&QF`X#`;&QGP```````!^?EH8
+M&!@8&!@\````````QL;&QL;&QL;&?````````,;&QL;&QL9L.!````````#&
+MQL;&UM;6_NYL````````QL9L?#@X?&S&Q@```````&9F9F8\&!@8&#P`````
+M``#^QH8,&#!@PL;^````````/#`P,#`P,#`P/`````````"`P.!P.!P.!@(`
+M```````\#`P,#`P,#`P\`````!`X;,8`````````````````````````````
+M````_P``,#`8````````````````````````>`Q\S,S,=@```````.!@8'AL
+M9F9F9GP```````````!\QL#`P,9\````````'`P,/&S,S,S,=@``````````
+M`'S&_L#`QGP````````X;&1@\&!@8&#P````````````=LS,S,S,?`S,>```
+M`.!@8&QV9F9F9N8````````8&``X&!@8&!@\````````!@8`#@8&!@8&!F9F
+M/````.!@8&9L>'AL9N8````````X&!@8&!@8&!@\````````````[/[6UM;6
+MQ@```````````-QF9F9F9F8```````````!\QL;&QL9\````````````W&9F
+M9F9F?&!@\````````';,S,S,S'P,#!X```````#<=F9@8&#P````````````
+M?,9@.`S&?````````!`P,/PP,#`P-AP```````````#,S,S,S,QV````````
+M````9F9F9F8\&````````````,;&UM;6_FP```````````#&;#@X.&S&````
+M````````QL;&QL;&?@8,^````````/[,&#!@QOX````````.&!@8<!@8&!@.
+M````````&!@8&``8&!@8&````````'`8&!@.&!@8&'````````!VW```````
+M```````````````0.&S&QL;^`````````#YFQL;&_L;&QL8```````#^P,#`
+M_,;&QL;\````````_,;&QOS&QL;&_````````/[&P,#`P,#`P,`````````\
+M;&QL;&QL;&S^QH(`````_L;`P/#`P,#&_@```````-;6UE1\UM;6UM8`````
+M``!\Q@8&'`8&QL9\````````QL;&QL[>]N;&Q@``````#-K&QL;.WO;FQL8`
+M``````#&S-CP\-C,QL;&````````'C9FQL;&QL;&Q@```````,;&[N[^_M;6
+MQL8```````#&QL;&_L;&QL;&````````?L;&QL;&QL;&_````````/[&QL;&
+MQL;&QL8```````#\QL;&QL;\P,#`````````?,;&P,#`P,;&?````````'Y^
+M6A@8&!@8&!@```````#&QL;&QL9^!L9\````````?-;6UM;6UGP0.```````
+M`,;&;#@X;,;&QL8```````#,S,S,S,S,S,S^`@8$````QL;&QL9^!@8&!@``
+M`````-;6UM;6UM;6UOX```````#6UM;6UM;6UM;^`@8$````X.!@8'QF9F9F
+M?````````,;&QL;FMK:VMN8```````#`P,#`_,;&QL;\````````>,P&!AX>
+M!@;,>````````)RVMK;VMK:VMIP```````!^QL;&QGXV9L;&````````````
+M?,;&QO[&Q@```````````/[`_,;&QOP```````````#\QL;\QL;\````````
+M````_L;"P,#`P````````````#QL;&QL;/[&@@````````!\QL;\P,9\````
+M````````UM;6?-;6U@```````````'S&!AP&QGP```````````#&QL[>]N;&
+M``````````P8QL;.WO;FQ@```````````,;,V/C8S,8````````````^9F9F
+M9F;&````````````QN[^UL;&Q@```````````,;&QO[&QL8```````````!^
+MQL;&QL;\````````````_L;&QL;&Q@`````11!%$$4011!%$$4011!%$5:I5
+MJE6J5:I5JE6J5:I5JMUWW7?==]UWW7?==]UWW7<8&!@8&!@8&!@8&!@8&!@8
+M&!@8&!@8&/@8&!@8&!@8&!@0_F9B8&!@8&!@\````````#QFP,#HT,#`9CP`
+M```````V)`!X,#`P,#!X````````&!``>#`P,#`P>````````'S&QF`X#`;&
+MQGP```````!@\&!L=F9F9F;F!@PP````#`@`/!@8&!@8&!BP8````"08`,;&
+MQL;&QGX&QGP```````+^P,#`P,#`````````&!``QLS8^-C,Q@``````````
+M````^!@8&!@8&!@8&!@8&!@8&!\``````````!@8&!@8&!C_````````````
+M````````_Q@8&!@8&!@8&!@8&!@8&!\8&!@8&!@8&`````````#_````````
+M```8&!@8&!@8_Q@8&!@8&!@8``````#&QL;&QL;^$!`X```````'B,NKJ*N;
+MB````````&#P8&!\9F9F9N8```````````!\QL!\!L9\``````#P8&!@?&9F
+M9F9FYP`````,&``\&!@8&!@8&!BP8````&#X8&!\=F9F9F;G````````_L;&
+MQL;&QL;&QOX```!L.,;&QL;&QGX&QGP```````!\;&QL;FEI:6G.````````
+MS,S,S/[)R<G)S@`````,&``\&!@8&!@8&#P`````-B0`/!@8&!@8&!@\````
+M````````S,S,_LG)S@```````````#Q,3$Y)2<X````````8$`#^PL#`P,#`
+M````````````/&+`^,!B/``````"!O[`P,#`P,#`P,``````&!#&QLS8\/#8
+MS,;&`````!@8&!@8&!CX````````````````````'Q@8&!@8&!@8________
+M_____________P````````#____________P\/#P\/#P\/#P\/#P\/#P#P\/
+M#P\/#P\/#P\/#P\/#_________\``````````````````/S&QL;&QOS`P,``
+M``````!\QL#`PL9\````````````?EH8&!@8&````````````,;&QL;&QGX&
+MQGP``````!!\UM;6UM9\$#@`````````QFPX.&S&Q@```````````,S,S,S,
+MS/X&#`````````#&QL;&?@8&````````````UM;6UM;6_@```````````-;6
+MUM;6UOX"!@0```````#@8'QF9F9\````````````QL;FMK:VY@``````````
+M`,#`_,;&QOP```````````!\Q@8>!L9\````````````G+:V]K:VG```````
+M`````'[&QGXV9L8`````9F8`_L;`P/#`P,;^````````;&P`?,;&_,#&?```
+M```````P&`P&#!@P`'X`````````#!@P8#`8#`!^````````#AL;&!@8&!@8
+M&!@8&!@8&!@8&!@8&-C8V'```````````!@8`'X`&!@`````````````=MP`
+M=MP`````````.&QL.````````````````````````!@8````````````````
+M````&```````````#PP,#`P,[&QL/!P```````#&QL;&QL;&QL;^$!`X``!P
+MV#!@R/@`````````````````?'Q\?'Q\?```````````````````````````
+!`#!@
+`
+end
diff --git a/share/syscons/fonts/cp850-8x14.fnt b/share/syscons/fonts/cp850-8x14.fnt
new file mode 100644
index 000000000000..803f95df6585
--- /dev/null
+++ b/share/syscons/fonts/cp850-8x14.fnt
@@ -0,0 +1,83 @@
+begin 644 cp850-8x14
+M``````````````````````!^@:6!@;V9@7X``````'[_V___P^?_?@``````
+M`&S^_O[^?#@0````````$#A\_GPX$````````!@\/.?GYQ@8/```````&#Q^
+M__]^&!@\```````````8/#P8`````/_______^?#P^?_____```````\9D)"
+M9CP```#______\.9O;V9P____P```!X.&C)XS,S,>```````/&9F9CP8?A@8
+M```````_,S\P,#!P\.```````']C?V-C8V?GYL``````&!C;/.<\VQ@8````
+M``"`P.#X_OC@P(````````(&#C[^/@X&`@``````&#Q^&!@8?CP8``````!F
+M9F9F9F8`9F8``````'_;V]M[&QL;&P````!\QF`X;,;&;#@,QGP`````````
+M``#^_OX``````!@\?A@8&'X\&'X`````&#Q^&!@8&!@8```````8&!@8&!A^
+M/!@`````````&`S^#!@````````````P8/Y@,`````````````#`P,#^````
+M````````*&S^;"@``````````!`X.'Q\_OX`````````_OY\?#@X$```````
+M````````````````````&#P\/!@8`!@8````9F9F)````````````````&QL
+M_FQL;/YL;````!@8?,;"P'P&AL9\&!@``````,+&#!@P9L8``````#AL;#AV
+MW,S,=@```!@8&#`````````````````,&#`P,#`P&`P``````#`8#`P,#`P8
+M,`````````!F//\\9@```````````!@8?A@8`````````````````!@8&#``
+M`````````/X`````````````````````&!@```````(&#!@P8,"`````````
+M.&S&QM;&QFPX```````8.'@8&!@8&'X``````'S&!@P8,&#&_@``````?,8&
+M!CP&!L9\```````,'#QLS/X,#!X``````/[`P,#\!@;&?```````.&#`P/S&
+MQL9\``````#^Q@8,&#`P,#```````'S&QL9\QL;&?```````?,;&QGX&!@QX
+M````````&!@````8&``````````8&````!@8,```````#!@P8,!@,!@,````
+M``````!^``!^`````````&`P&`P&#!@P8```````?,;&#!@8`!@8``````!\
+MQL;>WM[<P'P``````!`X;,;&_L;&Q@``````_&9F9GQF9F;\```````\9L+`
+MP,#"9CP``````/AL9F9F9F9L^```````_F9B:'AH8F;^``````#^9F)H>&A@
+M8/```````#QFPL#`WL9F.@``````QL;&QO[&QL;&```````\&!@8&!@8&#P`
+M`````!X,#`P,#,S,>```````YF9L;'AL;&;F``````#P8&!@8&!B9OX`````
+M`,;N_M;&QL;&Q@``````QN;V_M[.QL;&``````!\QL;&QL;&QGP``````/QF
+M9F9\8&!@\```````?,;&QL;&UMY\#@````#\9F9F?&QF9N8``````'S&QF`X
+M#,;&?```````?GY:&!@8&!@\``````#&QL;&QL;&QGP``````,;&QL;&QFPX
+M$```````QL;&QM;6_FQL``````#&QL9\.'S&QL8``````&9F9F8\&!@8/```
+M````_L:,&#!@PL;^```````\,#`P,#`P,#P``````(#`X'`X'`X&`@``````
+M/`P,#`P,#`P\```0.&S&``````````````````````````````#_`#`8#```
+M``````````````````!X#'S,S'8``````.!@8'AL9F9F?```````````?,;`
+MP,9\```````<#`P\;,S,S'8``````````'S&_L#&?```````'#8R,'PP,#!X
+M``````````!VS,S,?`S,>````.!@8&QV9F9FY@``````&!@`.!@8&!@\````
+M```&!@`.!@8&!F9F/````.!@8&9L>&QFY@``````.!@8&!@8&!@\````````
+M``#L_M;6UM8``````````-QF9F9F9@``````````?,;&QL9\``````````#<
+M9F9F?&!@\````````';,S,Q\#`P>````````W'9F8&#P``````````!\QG`<
+MQGP``````!`P,/PP,#`V'```````````S,S,S,QV``````````#&QL9L.!``
+M`````````,;&UM;^;```````````QFPX.&S&``````````#&QL;&?@8,>```
+M`````/[,&#!F_@``````#A@8&'`8&!@.```````8&!@8&!@8&!@``````'`8
+M&!@.&!@8<````';<`````````````````````!`X;,;&_@```````#QFPL#`
+MP,)F/`QX````S```S,S,S,QV``````P8,`!\QO[`QGP`````$#AL`'@,?,S,
+M=@``````Q@``>`Q\S,QV`````&`P&`!X#'S,S'8`````.&PX`'@,?,S,=@``
+M````````?,;`P,9\#'@``!`X;`!\QO[`QGP``````,8``'S&_L#&?`````!@
+M,!@`?,;^P,9\``````!F```X&!@8&#P`````&#QF`#@8&!@8/`````!@,!@`
+M.!@8&!@\````Q@`0.&S&QO[&QL8``#AL.!`X;,;&_L;&Q@``#!@`_F9B:'AH
+M8F;^``````````#L-G;<V&X``````#YLS,S^S,S,S@`````0.&P`?,;&QL9\
+M``````#&``!\QL;&QGP`````8#`8`'S&QL;&?``````P>,P`S,S,S,QV````
+M`&`P&`#,S,S,S'8``````,8``,;&QL9^!@QX`,8`?,;&QL;&QL9\````Q@#&
+MQL;&QL;&QGP``````````'S.WO;F?``````X;&1@\&!@8.;\``````1\SL[6
+MUM;FYGQ`````````QFPX.&S&```````.&Q@8&'X8&!C8<`````P8,`!X#'S,
+MS'8`````#!@P`#@8&!@8/``````,&#``?,;&QL9\``````P8,`#,S,S,S'8`
+M`````';<`-QF9F9F9@``=MP`QN;V_M[.QL;&`````#QL;#X`?@``````````
+M.&QL.`!\````````````,#``,#!@QL9\```````X1+JJLJJJ1#@`````````
+M``#^!@8&``````!@X&-F;!@P;L,&#!\``&#@8V9L&C9NVC\&!@```!@8`!@8
+M/#P\&``````````V;-AL-@```````````-AL-FS8`````!%$$4011!%$$401
+M1!%$5:I5JE6J5:I5JE6J5:K==]UWW7?==]UWW7?==Q@8&!@8&!@8&!@8&!@8
+M&!@8&!@8&/@8&!@8&!@P8,`0.&S&QO[&QL8``#ALQA`X;,;&_L;&Q@``&`P&
+M$#ALQL;^QL;&```````X1)JBHJ*:1#@``#8V-C8V]@;V-C8V-C8V-C8V-C8V
+M-C8V-C8V-C8``````/X&]C8V-C8V-C8V-C8V]@;^```````````8&'S&P,#&
+M?!@8``````!F9CP8?AA^&!@```````````#X&!@8&!@8&!@8&!@8&!\`````
+M```8&!@8&!@8_P````````````````#_&!@8&!@8&!@8&!@8&!\8&!@8&!@`
+M````````_P```````!@8&!@8&!C_&!@8&!@8````=MP`>`Q\S,QV``!VW``0
+M.&S&QO[&QL8``#8V-C8V-S`_```````````````_,#<V-C8V-C8V-C8V-O<`
+M_P``````````````_P#W-C8V-C8V-C8V-C8W,#<V-C8V-C8``````/\`_P``
+M`````#8V-C8V]P#W-C8V-C8V``````#&?,;&QGS&```````T&"P&/F9F9CP`
+M`````/AL9F;V9F9L^```.&P`_F9B:'AH8F;^````Q@#^9F)H>&AB9OX``#`8
+M`/YF8FAX:&)F_@``````````.!@8&!@\```,&``\&!@8&!@8&#P``#QF`#P8
+M&!@8&!@8/````&8`/!@8&!@8&!@\```8&!@8&!@8^``````````````````?
+M&!@8&!@8__________________\`````````_________P``&!@8&````!@8
+M&!@`,!@`/!@8&!@8&!@\``#_________`````````!@P`'S&QL;&QL;&?```
+M````>,S,S-C,QL;,```X;`!\QL;&QL;&QGP``#`8`'S&QL;&QL;&?```````
+M=MP`?,;&QL9\``!VW`!\QL;&QL;&QGP``````````&9F9F9F?&#`````X&!@
+M?&9F9F9\8/````#P8'QF9F9\8/```!@P`,;&QL;&QL;&?```.&P`QL;&QL;&
+MQL9\```P&`#&QL;&QL;&QGP`````#!@P`,;&QL9^!@SX#!@`9F9F9CP8&!@\
+M````_P`````````````````,&#```````````````````````/X`````````
+M````&!A^&!@``'X`````````````````_P#_`.`P8S;L&#9NVC\&!@````!_
+MV]O;>QL;&QL`````?,9@.&S&QFPX#,9\```````8`'X`&```````````````
+M`````!@,>``X;&PX`````````````,8`````````````````````````&```
+M```````8.!@8&#P``````````'@,.`P,>```````````/&8,&#)^````````
+=````````?GY^?GY^````````````````````````
+`
+end
diff --git a/share/syscons/fonts/cp850-8x16.fnt b/share/syscons/fonts/cp850-8x16.fnt
new file mode 100644
index 000000000000..10f7bb2f9fe9
--- /dev/null
+++ b/share/syscons/fonts/cp850-8x16.fnt
@@ -0,0 +1,95 @@
+begin 644 cp850-8x16
+M````````````````````````?H&E@8&]F8&!?@```````'[_V___P^?__WX`
+M`````````&S^_O[^?#@0```````````0.'S^?#@0```````````8/#SGY^<8
+M&#P`````````&#Q^__]^&!@\`````````````!@\/!@```````#________G
+MP\/G________```````\9D)"9CP``````/______PYF]O9G#______\``!X.
+M&C)XS,S,S'@````````\9F9F9CP8?A@8````````/S,_,#`P,'#PX```````
+M`']C?V-C8V-GY^;`````````&!C;/.<\VQ@8``````"`P.#P^/[X\.#`@```
+M`````@8.'C[^/AX.!@(````````8/'X8&!A^/!@`````````9F9F9F9F9@!F
+M9@```````'_;V]M[&QL;&QL``````'S&8#ALQL9L.`S&?```````````````
+M_O[^_@```````!@\?A@8&'X\&'X````````8/'X8&!@8&!@8````````&!@8
+M&!@8&'X\&````````````!@,_@P8```````````````P8/Y@,```````````
+M`````,#`P/X``````````````"AL_FPH`````````````!`X.'Q\_OX`````
+M``````#^_GQ\.#@0```````````````````````````````8/#P\&!@8`!@8
+M``````!F9F8D``````````````````!L;/YL;&S^;&P`````&!A\QL+`?`8&
+MAL9\&!@```````#"Q@P8,&#&A@```````#AL;#AVW,S,S'8``````#`P,&``
+M````````````````#!@P,#`P,#`8#````````#`8#`P,#`P,&#``````````
+M``!F//\\9@``````````````&!A^&!@````````````````````8&!@P````
+M`````````/X````````````````````````8&````````````@8,&#!@P(``
+M```````X;,;&UM;&QFPX````````&#AX&!@8&!@8?@```````'S&!@P8,&#`
+MQOX```````!\Q@8&/`8&!L9\````````#!P\;,S^#`P,'@```````/[`P,#\
+M!@8&QGP````````X8,#`_,;&QL9\````````_L8&!@P8,#`P,````````'S&
+MQL9\QL;&QGP```````!\QL;&?@8&!@QX```````````8&````!@8````````
+M````&!@````8&#``````````!@P8,&`P&`P&````````````?@``?@``````
+M``````!@,!@,!@P8,&````````!\QL8,&!@8`!@8`````````'S&QM[>WMS`
+M?````````!`X;,;&_L;&QL8```````#\9F9F?&9F9F;\````````/&;"P,#`
+MP,)F/````````/AL9F9F9F9F;/@```````#^9F)H>&A@8F;^````````_F9B
+M:'AH8&!@\````````#QFPL#`WL;&9CH```````#&QL;&_L;&QL;&````````
+M/!@8&!@8&!@8/````````!X,#`P,#,S,S'@```````#F9F9L>'AL9F;F````
+M````\&!@8&!@8&)F_@```````,;N_O[6QL;&QL8```````#&YO;^WL[&QL;&
+M````````?,;&QL;&QL;&?````````/QF9F9\8&!@8/````````!\QL;&QL;&
+MUMY\#`X`````_&9F9GQL9F9FY@```````'S&QF`X#`;&QGP```````!^?EH8
+M&!@8&!@\````````QL;&QL;&QL;&?````````,;&QL;&QL9L.!````````#&
+MQL;&UM;6_NYL````````QL9L?#@X?&S&Q@```````&9F9F8\&!@8&#P`````
+M``#^QH8,&#!@PL;^````````/#`P,#`P,#`P/`````````"`P.!P.!P.!@(`
+M```````\#`P,#`P,#`P\`````!`X;,8`````````````````````````````
+M````_P```#`8#```````````````````````>`Q\S,S,=@```````.!@8'AL
+M9F9F9GP```````````!\QL#`P,9\````````'`P,/&S,S,S,=@``````````
+M`'S&_L#`QGP````````<-C(P>#`P,#!X````````````=LS,S,S,?`S,>```
+M`.!@8&QV9F9F9N8````````8&``X&!@8&!@\````````!@8`#@8&!@8&!F9F
+M/````.!@8&9L>'AL9N8````````X&!@8&!@8&!@\````````````[/[6UM;6
+MQ@```````````-QF9F9F9F8```````````!\QL;&QL9\````````````W&9F
+M9F9F?&!@\````````';,S,S,S'P,#!X```````#<=F9@8&#P````````````
+M?,9@.`S&?````````!`P,/PP,#`P-AP```````````#,S,S,S,QV````````
+M````QL;&QL9L.````````````,;&UM;6_FP```````````#&;#@X.&S&````
+M````````QL;&QL;&?@8,^````````/[,&#!@QOX````````.&!@8<!@8&!@.
+M````````&!@8&!@8&!@8&````````'`8&!@.&!@8&'```````';<````````
+M```````````````0.&S&QL;^`````````#QFPL#`P,#"9CP8<`````#,``#,
+MS,S,S,QV```````,&#``?,;^P,#&?```````$#AL`'@,?,S,S'8```````#,
+M``!X#'S,S,QV``````!@,!@`>`Q\S,S,=@``````.&PX`'@,?,S,S'8`````
+M``````!\QL#`P,9\&'`````0.&P`?,;^P,#&?````````,8``'S&_L#`QGP`
+M`````&`P&`!\QO[`P,9\````````9@``.!@8&!@8/```````&#QF`#@8&!@8
+M&#P``````&`P&``X&!@8&!@\``````#&`!`X;,;&_L;&Q@`````X;#@0.&S&
+MQO[&QL8`````#!@`_F9B:'AH8F;^````````````[#8V?MC8;@```````#YL
+MS,S^S,S,S,X``````!`X;`!\QL;&QL9\````````Q@``?,;&QL;&?```````
+M8#`8`'S&QL;&QGP``````#!XS`#,S,S,S,QV``````!@,!@`S,S,S,S,=@``
+M`````,8``,;&QL;&QGX&#'@``,8`?,;&QL;&QL9\``````#&`,;&QL;&QL;&
+M?````````````'S.WO;FQGP``````#AL9&#P8&!@8.;\```````$?,[.UM;6
+MUN;F?$```````````,9L.#ALQ@````````X;&!@8?A@8&-AP```````8,&``
+M>`Q\S,S,=@``````#!@P`#@8&!@8&#P``````!@P8`!\QL;&QL9\```````8
+M,&``S,S,S,S,=@```````';<`-QF9F9F9F8`````=MP`QN;V_M[.QL;&````
+M````/&QL/@!^`````````````#AL;#@`?``````````````P,``P,&#`QL9\
+M````````?(*RJK*JJH)\``````````````#^!@8&!@```````&#@8F9L&#!@
+MW(8,&#X```!@X&)F;!@P9LZ:/P8&`````!@8`!@8&#P\/!@````````````V
+M;-AL-@``````````````V&PV;-@````````11!%$$4011!%$$4011!%$5:I5
+MJE6J5:I5JE6J5:I5JMUWW7?==]UWW7?==]UWW7<8&!@8&!@8&!@8&!@8&!@8
+M&!@8&!@8&/@8&!@8&!@8&&#`$#ALQL;^QL;&Q@````!\QA`X;,;&_L;&QL8`
+M````#`80.&S&QO[&QL;&````````?(*:HJ*BFH)\```````V-C8V-O8&]C8V
+M-C8V-C8V-C8V-C8V-C8V-C8V-C8V-@``````_@;V-C8V-C8V-C8V-C8V-O8&
+M_@`````````````8&'S&P,#&?!@8`````````&9F/!A^&'X8&```````````
+M````^!@8&!@8&!@8&!@8&!@8&!\``````````!@8&!@8&!C_````````````
+M````````_Q@8&!@8&!@8&!@8&!@8&!\8&!@8&!@8&`````````#_````````
+M```8&!@8&!@8_Q@8&!@8&!@8``!VW`!X#'S,S,QV`````';<`#ALQL;^QL;&
+MQ@`````V-C8V-C<P/P`````````````````_,#<V-C8V-C8V-C8V-C8V]P#_
+M`````````````````/\`]S8V-C8V-C8V-C8V-C8W,#<V-C8V-C8V-@``````
+M_P#_```````````V-C8V-O<`]S8V-C8V-C8V`````,9\QL;&QGS&````````
+M-!@L!CYF9F9F/````````/AL9F;V9F9F;/@`````.&P`_F9B:'AH8F;^````
+M``#&`/YF8FAX:&)F_@`````P&`#^9F)H>&AB9OX````````````X&!@8&!@\
+M``````P8`#P8&!@8&!@8/``````\9@`\&!@8&!@8&#P``````&8`/!@8&!@8
+M&!@\`````!@8&!@8&!CX````````````````````'Q@8&!@8&!@8________
+M_____________P````````#___________\`&!@8&!@``!@8&!@8````,!@`
+M/!@8&!@8&!@\`````/________\````````````8,`!\QL;&QL;&QGP`````
+M``!XS,S,V,S&QL;,`````#AL`'S&QL;&QL;&?``````P&`!\QL;&QL;&QGP`
+M``````!VW`!\QL;&QL9\`````';<`'S&QL;&QL;&?````````````&9F9F9F
+M9GQ@8,````#@8&!\9F9F9F9\8&#P````\&!\9F9F9GQ@\``````8,`#&QL;&
+MQL;&QGP`````.&P`QL;&QL;&QL9\`````#`8`,;&QL;&QL;&?```````#!@P
+M`,;&QL;&QGX&#/@`#!@`9F9F9CP8&!@\``````#_````````````````````
+M#!@P`````````````````````````/X````````````````8&'X8&```?@``
+M``````````````````#_`/\``.`P8C;L&#!FSIH_!@8`````?]O;VWL;&QL;
+M&P``````?,9@.&S&QFPX#,9\```````````8`'X`&```````````````````
+M````&`QX````.&QL.````````````````,8`````````````````````````
+M```8````````````&#@8&!@\`````````````'P&/`8&?``````````````\
+M9@P8,GX`````````````````?GY^?GY^?@``````````````````````````
+!``P8
+`
+end
diff --git a/share/syscons/fonts/cp850-8x8.fnt b/share/syscons/fonts/cp850-8x8.fnt
new file mode 100644
index 000000000000..21a4aa4d3ba3
--- /dev/null
+++ b/share/syscons/fonts/cp850-8x8.fnt
@@ -0,0 +1,49 @@
+begin 644 cp850-8x8
+M``````````!^@:6!O9F!?G[_V__#Y_]^;/[^_GPX$``0.'S^?#@0`#A\./[^
+MUA`X$#A\_OY\$#@``!@\/!@``/__Y\/#Y___`#QF0D)F/`#_PYF]O9G#_P\'
+M#WW,S,QX/&9F9CP8?A@_,S\P,'#PX']C?V-C9^;`&-L\Y^<\VQB`X/C^^."`
+M``(./OX^#@(`&#Q^&!A^/!AF9F9F9@!F`'_;VWL;&QL`/F$\9F8\AGP`````
+M?GY^`!@\?AA^/!C_&#Q^&!@8&``8&!@8?CP8```8#/X,&````#!@_F`P````
+M`,#`P/X````D9O]F)````!@\?O__````__]^/!@`````````````&#P\&!@`
+M&`!F9B0``````&QL_FS^;&P`&#Y@/`9\&```QLP8,&;&`#AL.';<S'8`&!@P
+M```````,&#`P,!@,`#`8#`P,&#```&8\_SQF````&!A^&!@`````````&!@P
+M````?@```````````!@8``8,&#!@P(``.&S&UL9L.``8.!@8&!A^`'S&!APP
+M9OX`?,8&/`;&?``</&S,_@P>`/[`P/P&QGP`.&#`_,;&?`#^Q@P8,#`P`'S&
+MQGS&QGP`?,;&?@8,>```&!@``!@8```8&```&!@P!@P8,!@,!@```'X``'X`
+M`&`P&`P8,&``?,8,&!@`&`!\QM[>WL!X`#ALQO[&QL8`_&9F?&9F_``\9L#`
+MP&8\`/AL9F9F;/@`_F)H>&AB_@#^8FAX:&#P`#QFP,#.9CH`QL;&_L;&Q@`\
+M&!@8&!@\`!X,#`S,S'@`YF9L>&QFY@#P8&!@8F;^`,;N_O[6QL8`QN;VWL[&
+MQ@!\QL;&QL9\`/QF9GQ@8/``?,;&QL;.?`[\9F9\;&;F`#QF,!@,9CP`?GY:
+M&!@8/`#&QL;&QL9\`,;&QL;&;#@`QL;&UM;^;`#&QFPX;,;&`&9F9CP8&#P`
+M_L:,&#)F_@`\,#`P,#`\`,!@,!@,!@(`/`P,#`P,/``0.&S&````````````
+M``#_,!@,`````````'@,?,QV`.!@?&9F9MP```!\QL#&?``<#'S,S,QV````
+M?,;^P'P`/&9@^&!@\````';,S'P,^.!@;'9F9N8`&``X&!@8/``&``8&!F9F
+M/.!@9FQX;.8`.!@8&!@8/````.S^UM;6````W&9F9F8```!\QL;&?````-QF
+M9GQ@\```=LS,?`P>``#<=F!@\````'[`?`;\`#`P_#`P-AP```#,S,S,=@``
+M`,;&QFPX````QM;6_FP```#&;#ALQ@```,;&QGX&_```?DP8,GX`#A@8<!@8
+M#@`8&!@8&!@8`'`8&`X8&'``=MP`````````$#ALQL;^`'S&P,#&?`QXS`#,
+MS,S,=@`,&'S&_L!\`'R">`Q\S'8`Q@!X#'S,=@`P&'@,?,QV`#`P>`Q\S'8`
+M``!^P,!^##A\@GS&_L!\`,8`?,;^P'P`,!A\QO[`?`!F`#@8&!@\`'R".!@8
+M&#P`,!@`.!@8/`#&.&S&_L;&`#AL?,;^QL8`&##^P/C`_@```'X2_I#^`#YL
+MS/[,S,X`?()\QL;&?`#&`'S&QL9\`#`8?,;&QGP`>(0`S,S,=@!@,,S,S,QV
+M`,8`QL;&?@;\QCALQL9L.`#&`,;&QL9\```"?,[6YGR`.&QD\&!F_``Z;,[6
+MYFRX``#&;#ALQ@``#AL8/!C8<``8,'@,?,QV``P8`#@8&#P`#!A\QL;&?``8
+M,,S,S,QV`';<`-QF9F8`=MP`YO;>S@`\;&P^`'X``#AL;#@`?```&``8&#!C
+M/@!^@;FEN:6!?@```/X&!@``8^9L?C-FS`]CYFQZ-FK?!A@`&!@\/!@``#-F
+MS&8S````S&8S9LP``"*((H@BB"*(5:I5JE6J5:IWW7?==]UWW1@8&!@8&!@8
+M&!@8&/@8&!@P8#ALQO[&`'R".&S&_L8`&`PX;,;^Q@!^@9VAH9V!?C8V]@;V
+M-C8V-C8V-C8V-C8``/X&]C8V-C8V]@;^````&!A^P,!^&!AF9CQ^&'X8&```
+M``#X&!@8&!@8&!\````8&!@8_P````````#_&!@8&!@8&!\8&!@`````_P``
+M`!@8&!C_&!@8=MQ\!G[&?@!VW#ALQO[&`#8V-S`_```````_,#<V-C8V-O<`
+M_P``````_P#W-C8V-C8W,#<V-C8``/\`_P```#8V]P#W-C8V`,9\QL9\Q@`P
+M?@Q\S,QX`/AL9O9F;/@`?(+^P/S`_@#&`/[`_,#^`#`8_L#\P/X````X&!@8
+M/``,&#P8&!@\`#Q"/!@8&#P`9@`\&!@8/``8&!@8^``````````?&!@8____
+M______\`````_____Q@8&```&!@8,!@\&!@8/`#_____`````#!@.&S&;#@`
+M>,S,V,S&S`!\@CALQFPX``P&.&S&;#@`=MQ\QL;&?`!VW#ALQFPX````9F9F
+M9GS`X&!\9F9\8/#P8'QF?&#P`!@PQL;&QGP`?((`QL;&?`!@,,;&QL9\`!@P
+MQL;&?@;\#!AF9CP8/`#_``````````P8,```````````?@`````8&'X8&`!^
+M````````_P#_X3+D.O8J7X9_V]M[&QL;`#YA/&9F/(9\`!@`?@`8````````
+M`!@,.#AL;#@``````,8````````````8`````!@X&!@\````>`PX#'@```!X
+7#!@P?```````/#P\/``````````````8
+`
+end
diff --git a/share/syscons/fonts/cp865-8x14.fnt b/share/syscons/fonts/cp865-8x14.fnt
new file mode 100644
index 000000000000..a5a2dd7e2742
--- /dev/null
+++ b/share/syscons/fonts/cp865-8x14.fnt
@@ -0,0 +1,83 @@
+begin 644 cp865-8x14
+M``````````````````````!^@:6!@;V9@7X``````'[_V___P^?_?@``````
+M`&S^_O[^?#@0````````$#A\_GPX$````````!@\/.?GYQ@8/```````&#Q^
+M__]^&!@\```````````8/#P8`````/_______^?#P^?_____```````\9D)"
+M9CP```#______\.9O;V9P____P```!X.&C)XS,S,>```````/&9F9CP8?A@8
+M```````_,S\P,#!P\.```````']C?V-C8V?GYL``````&!C;/.<\VQ@8````
+M``"`P.#X_OC@P(````````(&#C[^/@X&`@``````&#Q^&!@8?CP8``````!F
+M9F9F9F8`9F8``````'_;V]M[&QL;&P````!\QF`X;,;&;#@,QGP`````````
+M``#^_OX``````!@\?A@8&'X\&'X`````&#Q^&!@8&!@8```````8&!@8&!A^
+M/!@`````````&`S^#!@````````````P8/Y@,`````````````#`P,#^````
+M````````*&S^;"@``````````!`X.'Q\_OX`````````_OY\?#@X$```````
+M````````````````````&#P\/!@8`!@8````9F9F)````````````````&QL
+M_FQL;/YL;````!@8?,;"P'P&AL9\&!@``````,+&#!@P9L8``````#AL;#AV
+MW,S,=@```!@8&#`````````````````,&#`P,#`P&`P``````#`8#`P,#`P8
+M,`````````!F//\\9@```````````!@8?A@8`````````````````!@8&#``
+M`````````/X`````````````````````&!@```````(&#!@P8,"`````````
+M.&S&QM;&QFPX```````8.'@8&!@8&'X``````'S&!@P8,&#&_@``````?,8&
+M!CP&!L9\```````,'#QLS/X,#!X``````/[`P,#\!@;&?```````.&#`P/S&
+MQL9\``````#^Q@8,&#`P,#```````'S&QL9\QL;&?```````?,;&QGX&!@QX
+M````````&!@````8&``````````8&````!@8,```````#!@P8,!@,!@,````
+M``````!^``!^`````````&`P&`P&#!@P8```````?,;&#!@8`!@8``````!\
+MQL;>WM[<P'P``````!`X;,;&_L;&Q@``````_&9F9GQF9F;\```````\9L+`
+MP,#"9CP``````/AL9F9F9F9L^```````_F9B:'AH8F;^``````#^9F)H>&A@
+M8/```````#QFPL#`WL9F.@``````QL;&QO[&QL;&```````\&!@8&!@8&#P`
+M`````!X,#`P,#,S,>```````YF9L;'AL;&;F``````#P8&!@8&!B9OX`````
+M`,;N_M;&QL;&Q@``````QN;V_M[.QL;&``````!\QL;&QL;&QGP``````/QF
+M9F9\8&!@\```````?,;&QL;&UMY\#@````#\9F9F?&QF9N8``````'S&QF`X
+M#,;&?```````?GY:&!@8&!@\``````#&QL;&QL;&QGP``````,;&QL;&QFPX
+M$```````QL;&QM;6_FQL``````#&QL9\.'S&QL8``````&9F9F8\&!@8/```
+M````_L:,&#!@PL;^```````\,#`P,#`P,#P``````(#`X'`X'`X&`@``````
+M/`P,#`P,#`P\```0.&S&``````````````````````````````#_`#`8#```
+M``````````````````!X#'S,S'8``````.!@8'AL9F9F?```````````?,;`
+MP,9\```````<#`P\;,S,S'8``````````'S&_L#&?```````'#8R,'PP,#!X
+M``````````!VS,S,?`S,>````.!@8&QV9F9FY@``````&!@`.!@8&!@\````
+M```&!@`.!@8&!F9F/````.!@8&9L>&QFY@``````.!@8&!@8&!@\````````
+M``#L_M;6UM8``````````-QF9F9F9@``````````?,;&QL9\``````````#<
+M9F9F?&!@\````````';,S,Q\#`P>````````W'9F8&#P``````````!\QG`<
+MQGP``````!`P,/PP,#`V'```````````S,S,S,QV``````````#&QL9L.!``
+M`````````,;&UM;^;```````````QFPX.&S&``````````#&QL;&?@8,>```
+M`````/[,&#!F_@``````#A@8&'`8&!@.```````8&!@8&!@8&!@``````'`8
+M&!@.&!@8<````';<`````````````````````!`X;,;&_@```````#QFPL#`
+MP,)F/`QX````S```S,S,S,QV``````P8,`!\QO[`QGP`````$#AL`'@,?,S,
+M=@``````Q@``>`Q\S,QV`````&`P&`!X#'S,S'8`````.&PX`'@,?,S,=@``
+M````````?,;`P,9\#'@``!`X;`!\QO[`QGP``````,8``'S&_L#&?`````!@
+M,!@`?,;^P,9\``````!F```X&!@8&#P`````&#QF`#@8&!@8/`````!@,!@`
+M.!@8&!@\````Q@`0.&S&QO[&QL8``#AL.!`X;,;&_L;&Q@``#!@`_F9B:'AH
+M8F;^``````````#L-G;<V&X``````#YLS,S^S,S,S@`````0.&P`?,;&QL9\
+M``````#&``!\QL;&QGP`````8#`8`'S&QL;&?``````P>,P`S,S,S,QV````
+M`&`P&`#,S,S,S'8``````,8``,;&QL9^!@QX`,8`?,;&QL;&QL9\````Q@#&
+MQL;&QL;&QGP``````````'S.WO;F?``````X;&1@\&!@8.;\``````1\SL[6
+MUM;FYGQ`````_&9F?&)F;V9F\P`````.&Q@8&'X8&!C8<`````P8,`!X#'S,
+MS'8`````#!@P`#@8&!@8/``````,&#``?,;&QL9\``````P8,`#,S,S,S'8`
+M`````';<`-QF9F9F9@``=MP`QN;V_M[.QL;&`````#QL;#X`?@``````````
+M.&QL.`!\````````````,#``,#!@QL9\````````````_L#`P```````````
+M``#^!@8&``````!@X&-F;!@P;L,&#!\``&#@8V9L&C9NVC\&!@```!@8`!@8
+M/#P\&``````````V;-AL-@```````````,9\QL;&?,8``!%$$4011!%$$401
+M1!%$5:I5JE6J5:I5JE6J5:K==]UWW7?==]UWW7?==Q@8&!@8&!@8&!@8&!@8
+M&!@8&!@8&/@8&!@8&!@8&!@8&/@8^!@8&!@8&#8V-C8V-C;V-C8V-C8V````
+M`````/XV-C8V-C8``````/@8^!@8&!@8&#8V-C8V]@;V-C8V-C8V-C8V-C8V
+M-C8V-C8V-C8``````/X&]C8V-C8V-C8V-C8V]@;^````````-C8V-C8V-OX`
+M```````8&!@8&/@8^`````````````````#X&!@8&!@8&!@8&!@8&!\`````
+M```8&!@8&!@8_P````````````````#_&!@8&!@8&!@8&!@8&!\8&!@8&!@`
+M````````_P```````!@8&!@8&!C_&!@8&!@8&!@8&!@?&!\8&!@8&!@V-C8V
+M-C8V-S8V-C8V-C8V-C8V-S`_```````````````_,#<V-C8V-C8V-C8V-O<`
+M_P``````````````_P#W-C8V-C8V-C8V-C8W,#<V-C8V-C8``````/\`_P``
+M`````#8V-C8V]P#W-C8V-C8V&!@8&!C_`/\````````V-C8V-C8V_P``````
+M````````_P#_&!@8&!@8`````````/\V-C8V-C8V-C8V-C8V/P```````!@8
+M&!@8'Q@?```````````````?&!\8&!@8&!@`````````/S8V-C8V-C8V-C8V
+M-C;_-C8V-C8V&!@8&!C_&/\8&!@8&!@8&!@8&!@8^``````````````````?
+M&!@8&!@8__________________\`````````__________#P\/#P\/#P\/#P
+M\/#P#P\/#P\/#P\/#P\/#P__________`````````````````';<V-C<=@``
+M````>,S,S-C,QL;,``````#^QL;`P,#`P,```````````/YL;&QL;```````
+M_L9@,!@P8,;^``````````!^V-C8V'```````````&9F9F9F?&#```````!V
+MW!@8&!@8``````!^&#QF9F8\&'X``````#ALQL;^QL9L.```````.&S&QL9L
+M;&SN```````>,!@,/F9F9CP``````````'[;VWX``````````P9^V]OS?F#`
+M```````>,&!@?F!@,!X```````!\QL;&QL;&Q@```````/X``/X``/X`````
+M````&!A^&!@``'X``````#`8#`8,&#``?@``````#!@P8#`8#`!^``````X;
+M&Q@8&!@8&!@8&!@8&!@8&!@8V-AP```````````8`'X`&````````````';<
+M`';<```````X;&PX`````````````````````!@8````````````````&```
+M```````/#`P,#`P,[&P\'````&PV-C8V-@``````````/&8,&#)^````````
+=````````?GY^?GY^````````````````````````
+`
+end
diff --git a/share/syscons/fonts/cp865-8x16.fnt b/share/syscons/fonts/cp865-8x16.fnt
new file mode 100644
index 000000000000..e23b5b811dd6
--- /dev/null
+++ b/share/syscons/fonts/cp865-8x16.fnt
@@ -0,0 +1,95 @@
+begin 644 cp865-8x16
+M````````````````````````?H&E@8&]F8&!?@```````'[_V___P^?__WX`
+M`````````&S^_O[^?#@0```````````0.'S^?#@0```````````8/#SGY^<8
+M&#P`````````&#Q^__]^&!@\`````````````!@\/!@```````#________G
+MP\/G________```````\9D)"9CP``````/______PYF]O9G#______\``!X.
+M&C)XS,S,S'@````````\9F9F9CP8?A@8````````/S,_,#`P,'#PX```````
+M`']C?V-C8V-GY^;`````````&!C;/.<\VQ@8``````"`P.#P^/[X\.#`@```
+M`````@8.'C[^/AX.!@(````````8/'X8&!A^/!@`````````9F9F9F9F9@!F
+M9@```````'_;V]M[&QL;&QL``````'S&8#ALQL9L.`S&?```````````````
+M_O[^_@```````!@\?A@8&'X\&'X````````8/'X8&!@8&!@8````````&!@8
+M&!@8&'X\&````````````!@,_@P8```````````````P8/Y@,```````````
+M`````,#`P/X``````````````"AL_FPH`````````````!`X.'Q\_OX`````
+M``````#^_GQ\.#@0```````````````````````````````8/#P\&!@8`!@8
+M``````!F9F8D``````````````````!L;/YL;&S^;&P`````&!A\QL+`?`8&
+MAL9\&!@```````#"Q@P8,&#&A@```````#AL;#AVW,S,S'8``````#`P,&``
+M````````````````#!@P,#`P,#`8#````````#`8#`P,#`P,&#``````````
+M``!F//\\9@``````````````&!A^&!@````````````````````8&!@P````
+M`````````/X````````````````````````8&````````````@8,&#!@P(``
+M```````X;,;&UM;&QFPX````````&#AX&!@8&!@8?@```````'S&!@P8,&#`
+MQOX```````!\Q@8&/`8&!L9\````````#!P\;,S^#`P,'@```````/[`P,#\
+M!@8&QGP````````X8,#`_,;&QL9\````````_L8&!@P8,#`P,````````'S&
+MQL9\QL;&QGP```````!\QL;&?@8&!@QX```````````8&````!@8````````
+M````&!@````8&#``````````!@P8,&`P&`P&````````````?@``?@``````
+M``````!@,!@,!@P8,&````````!\QL8,&!@8`!@8`````````'S&QM[>WMS`
+M?````````!`X;,;&_L;&QL8```````#\9F9F?&9F9F;\````````/&;"P,#`
+MP,)F/````````/AL9F9F9F9F;/@```````#^9F)H>&A@8F;^````````_F9B
+M:'AH8&!@\````````#QFPL#`WL;&9CH```````#&QL;&_L;&QL;&````````
+M/!@8&!@8&!@8/````````!X,#`P,#,S,S'@```````#F9F9L>'AL9F;F````
+M````\&!@8&!@8&)F_@```````,;N_O[6QL;&QL8```````#&YO;^WL[&QL;&
+M````````?,;&QL;&QL;&?````````/QF9F9\8&!@8/````````!\QL;&QL;&
+MUMY\#`X`````_&9F9GQL9F9FY@```````'S&QF`X#`;&QGP```````!^?EH8
+M&!@8&!@\````````QL;&QL;&QL;&?````````,;&QL;&QL9L.!````````#&
+MQL;&UM;6_NYL````````QL9L?#@X?&S&Q@```````&9F9F8\&!@8&#P`````
+M``#^QH8,&#!@PL;^````````/#`P,#`P,#`P/`````````"`P.!P.!P.!@(`
+M```````\#`P,#`P,#`P\`````!`X;,8`````````````````````````````
+M````_P```#`8#```````````````````````>`Q\S,S,=@```````.!@8'AL
+M9F9F9GP```````````!\QL#`P,9\````````'`P,/&S,S,S,=@``````````
+M`'S&_L#`QGP````````<-C(P>#`P,#!X````````````=LS,S,S,?`S,>```
+M`.!@8&QV9F9F9N8````````8&``X&!@8&!@\````````!@8`#@8&!@8&!F9F
+M/````.!@8&9L>'AL9N8````````X&!@8&!@8&!@\````````````[/[6UM;6
+MQ@```````````-QF9F9F9F8```````````!\QL;&QL9\````````````W&9F
+M9F9F?&!@\````````';,S,S,S'P,#!X```````#<=F9@8&#P````````````
+M?,9@.`S&?````````!`P,/PP,#`P-AP```````````#,S,S,S,QV````````
+M````QL;&QL9L.````````````,;&UM;6_FP```````````#&;#@X.&S&````
+M````````QL;&QL;&?@8,^````````/[,&#!@QOX````````.&!@8<!@8&!@.
+M````````&!@8&!@8&!@8&````````'`8&!@.&!@8&'```````';<````````
+M```````````````0.&S&QL;^`````````#QFPL#`P,#"9CP8<`````#,``#,
+MS,S,S,QV```````,&#``?,;^P,#&?```````$#AL`'@,?,S,S'8```````#,
+M``!X#'S,S,QV``````!@,!@`>`Q\S,S,=@``````.&PX`'@,?,S,S'8`````
+M``````!\QL#`P,9\&'`````0.&P`?,;^P,#&?````````,8``'S&_L#`QGP`
+M`````&`P&`!\QO[`P,9\````````9@``.!@8&!@8/```````&#QF`#@8&!@8
+M&#P``````&`P&``X&!@8&!@\``````#&`!`X;,;&_L;&Q@`````X;#@0.&S&
+MQO[&QL8`````#!@`_F9B:'AH8F;^````````````[#8V?MC8;@```````#YL
+MS,S^S,S,S,X``````!`X;`!\QL;&QL9\````````Q@``?,;&QL;&?```````
+M8#`8`'S&QL;&QGP``````#!XS`#,S,S,S,QV``````!@,!@`S,S,S,S,=@``
+M`````,8``,;&QL;&QGX&#'@``,8`?,;&QL;&QL9\``````#&`,;&QL;&QL;&
+M?````````````'S&SM;FQGP``````#AL9&#P8&!@8.;\```````$?,[.UM;6
+MUN;F?$``````^,S,^,3,WLS,S,8```````X;&!@8?A@8&-AP```````8,&``
+M>`Q\S,S,=@``````#!@P`#@8&!@8&#P``````!@P8`!\QL;&QL9\```````8
+M,&``S,S,S,S,=@```````';<`-QF9F9F9F8`````=MP`QN;V_M[.QL;&````
+M````/&QL/@!^`````````````#AL;#@`?``````````````P,``P,&#`QL9\
+M`````````````/[`P,#```````````````#^!@8&!@```````&#@8F9L&#!@
+MW(8,&#X```!@X&)F;!@P9LZ:/P8&`````!@8`!@8&#P\/!@````````````V
+M;-AL-@````````````#&?,;&QL9\Q@`````11!%$$4011!%$$4011!%$5:I5
+MJE6J5:I5JE6J5:I5JMUWW7?==]UWW7?==]UWW7<8&!@8&!@8&!@8&!@8&!@8
+M&!@8&!@8&/@8&!@8&!@8&!@8&!@8^!CX&!@8&!@8&!@V-C8V-C8V]C8V-C8V
+M-C8V`````````/XV-C8V-C8V-@``````^!CX&!@8&!@8&!@V-C8V-O8&]C8V
+M-C8V-C8V-C8V-C8V-C8V-C8V-C8V-@``````_@;V-C8V-C8V-C8V-C8V-O8&
+M_@``````````-C8V-C8V-OX``````````!@8&!@8^!CX````````````````
+M````^!@8&!@8&!@8&!@8&!@8&!\``````````!@8&!@8&!C_````````````
+M````````_Q@8&!@8&!@8&!@8&!@8&!\8&!@8&!@8&`````````#_````````
+M```8&!@8&!@8_Q@8&!@8&!@8&!@8&!@?&!\8&!@8&!@8&#8V-C8V-C8W-C8V
+M-C8V-C8V-C8V-C<P/P`````````````````_,#<V-C8V-C8V-C8V-C8V]P#_
+M`````````````````/\`]S8V-C8V-C8V-C8V-C8W,#<V-C8V-C8V-@``````
+M_P#_```````````V-C8V-O<`]S8V-C8V-C8V&!@8&!C_`/\``````````#8V
+M-C8V-C;_`````````````````/\`_Q@8&!@8&!@8`````````/\V-C8V-C8V
+M-C8V-C8V-C8_```````````8&!@8&!\8'P`````````````````?&!\8&!@8
+M&!@8&``````````_-C8V-C8V-C8V-C8V-C8V_S8V-C8V-C8V&!@8&!C_&/\8
+M&!@8&!@8&!@8&!@8&!CX````````````````````'Q@8&!@8&!@8________
+M_____________P````````#____________P\/#P\/#P\/#P\/#P\/#P#P\/
+M#P\/#P\/#P\/#P\/#_________\``````````````````';<V-C8W'8`````
+M``!XS,S,V,S&QL;,````````_L;&P,#`P,#`P````````````/YL;&QL;&P`
+M``````#^QF`P&!@P8,;^````````````?MC8V-C8<````````````&9F9F9F
+M9GQ@8,```````';<&!@8&!@8````````?A@\9F9F9CP8?@```````#ALQL;^
+MQL;&;#@````````X;,;&QFQL;&SN````````'C`8##YF9F9F/```````````
+M`'[;V]M^`````````````P9^V]OS?F#`````````'#!@8'Q@8&`P'```````
+M``!\QL;&QL;&QL8``````````/X``/X``/X````````````8&'X8&```?@``
+M```````P&`P&#!@P`'X`````````#!@P8#`8#`!^````````#AL;&!@8&!@8
+M&!@8&!@8&!@8&!@8&!C8V-AP```````````8`'X`&```````````````=MP`
+M=MP`````````.&QL.````````````````````````!@8````````````````
+M```8````````````#PP,#`P,[&QL/!P``````&PV-C8V-@`````````````\
+M9@P8,GX`````````````````?GY^?GY^?@``````````````````````````
+!``P8
+`
+end
diff --git a/share/syscons/fonts/cp865-8x8.fnt b/share/syscons/fonts/cp865-8x8.fnt
new file mode 100644
index 000000000000..de8b0b365dad
--- /dev/null
+++ b/share/syscons/fonts/cp865-8x8.fnt
@@ -0,0 +1,49 @@
+begin 644 cp865-8x8
+M``````````!^@:6!O9F!?G[_V__#Y_]^;/[^_GPX$``0.'S^?#@0`#A\./[^
+MUA`X$#A\_OY\$#@``!@\/!@``/__Y\/#Y___`#QF0D)F/`#_PYF]O9G#_P\'
+M#WW,S,QX/&9F9CP8?A@_,S\P,'#PX']C?V-C9^;`&-L\Y^<\VQB`X/C^^."`
+M``(./OX^#@(`&#Q^&!A^/!AF9F9F9@!F`'_;VWL;&QL`/F$\9F8\AGP`````
+M?GY^`!@\?AA^/!C_&#Q^&!@8&``8&!@8?CP8```8#/X,&````#!@_F`P````
+M`,#`P/X````D9O]F)````!@\?O__````__]^/!@`````````````&#P\&!@`
+M&`!F9B0``````&QL_FS^;&P`&#Y@/`9\&```QLP8,&;&`#AL.';<S'8`&!@P
+M```````,&#`P,!@,`#`8#`P,&#```&8\_SQF````&!A^&!@`````````&!@P
+M````?@```````````!@8``8,&#!@P(``.&S&UL9L.``8.!@8&!A^`'S&!APP
+M9OX`?,8&/`;&?``</&S,_@P>`/[`P/P&QGP`.&#`_,;&?`#^Q@P8,#`P`'S&
+MQGS&QGP`?,;&?@8,>```&!@``!@8```8&```&!@P!@P8,!@,!@```'X``'X`
+M`&`P&`P8,&``?,8,&!@`&`!\QM[>WL!X`#ALQO[&QL8`_&9F?&9F_``\9L#`
+MP&8\`/AL9F9F;/@`_F)H>&AB_@#^8FAX:&#P`#QFP,#.9CH`QL;&_L;&Q@`\
+M&!@8&!@\`!X,#`S,S'@`YF9L>&QFY@#P8&!@8F;^`,;N_O[6QL8`QN;VWL[&
+MQ@!\QL;&QL9\`/QF9GQ@8/``?,;&QL;.?`[\9F9\;&;F`#QF,!@,9CP`?GY:
+M&!@8/`#&QL;&QL9\`,;&QL;&;#@`QL;&UM;^;`#&QFPX;,;&`&9F9CP8&#P`
+M_L:,&#)F_@`\,#`P,#`\`,!@,!@,!@(`/`P,#`P,/``0.&S&````````````
+M``#_,!@,`````````'@,?,QV`.!@?&9F9MP```!\QL#&?``<#'S,S,QV````
+M?,;^P'P`/&9@^&!@\````';,S'P,^.!@;'9F9N8`&``X&!@8/``&``8&!F9F
+M/.!@9FQX;.8`.!@8&!@8/````.S^UM;6````W&9F9F8```!\QL;&?````-QF
+M9GQ@\```=LS,?`P>``#<=F!@\````'[`?`;\`#`P_#`P-AP```#,S,S,=@``
+M`,;&QFPX````QM;6_FP```#&;#ALQ@```,;&QGX&_```?DP8,GX`#A@8<!@8
+M#@`8&!@8&!@8`'`8&`X8&'``=MP`````````$#ALQL;^`'S&P,#&?`QXS`#,
+MS,S,=@`,&'S&_L!\`'R">`Q\S'8`Q@!X#'S,=@`P&'@,?,QV`#`P>`Q\S'8`
+M``!^P,!^##A\@GS&_L!\`,8`?,;^P'P`,!A\QO[`?`!F`#@8&!@\`'R".!@8
+M&#P`,!@`.!@8/`#&.&S&_L;&`#AL?,;^QL8`&##^P/C`_@```'X2_I#^`#YL
+MS/[,S,X`?()\QL;&?`#&`'S&QL9\`#`8?,;&QGP`>(0`S,S,=@!@,,S,S,QV
+M`,8`QL;&?@;\QCALQL9L.`#&`,;&QL9\```"?,[6YGR`.&QD\&!F_``Z;,[6
+MYFRX`/C,S/K&S\;'#AL8/!C8<``8,'@,?,QV``P8`#@8&#P`#!A\QL;&?``8
+M,,S,S,QV`';<`-QF9F8`=MP`YO;>S@`\;&P^`'X``#AL;#@`?```&``8&#!C
+M/@````#^P,```````/X&!@``8^9L?C-FS`]CYFQZ-FK?!A@`&!@\/!@``#-F
+MS&8S````QGS&QGS&`"*((H@BB"*(5:I5JE6J5:IWW7?==]UWW1@8&!@8&!@8
+M&!@8&/@8&!@8&/@8^!@8&#8V-C;V-C8V`````/XV-C8``/@8^!@8&#8V]@;V
+M-C8V-C8V-C8V-C8``/X&]C8V-C8V]@;^````-C8V-OX````8&/@8^```````
+M``#X&!@8&!@8&!\````8&!@8_P````````#_&!@8&!@8&!\8&!@`````_P``
+M`!@8&!C_&!@8&!@?&!\8&!@V-C8V-S8V-C8V-S`_```````_,#<V-C8V-O<`
+M_P``````_P#W-C8V-C8W,#<V-C8``/\`_P```#8V]P#W-C8V&!C_`/\````V
+M-C8V_P``````_P#_&!@8`````/\V-C8V-C8V/P```!@8'Q@?```````?&!\8
+M&!@`````/S8V-C8V-C;_-C8V&!C_&/\8&!@8&!@8^``````````?&!@8____
+M______\`````______#P\/#P\/#P#P\/#P\/#P______````````=MS(W'8`
+M>,S,V,S&S`#^QL#`P,#`````_FQL;&P`_L9@,&#&_@```'[8V-AP````9F9F
+M9GS``';<&!@8&`!^&#QF9CP8?CALQO[&;#@`.&S&QFQL[@`.&`P^9F8\````
+M?MO;?@``!@Q^V]M^8,`>,&!^8#`>``!\QL;&QL8``/X`_@#^```8&'X8&`!^
+M`#`8#!@P`'X`#!@P&`P`?@`.&QL8&!@8&!@8&!@8V-AP`!@`?@`8````=MP`
+M=MP``#AL;#@`````````&!@````````8``````\,#`SL;#P<;#8V-C8```!X
+7#!@P?```````/#P\/``````````````8
+`
+end
diff --git a/share/syscons/fonts/iso-8x14.fnt b/share/syscons/fonts/iso-8x14.fnt
new file mode 100644
index 000000000000..0c0e4d87194f
--- /dev/null
+++ b/share/syscons/fonts/iso-8x14.fnt
@@ -0,0 +1,83 @@
+begin 644 iso-8x14
+M`````````````````````'Z!I8&!O9F!?@``````?O_;___#Y_]^````````
+M-G]_?W\^'`@````````('#Y_/AP(````````&#P\Y^?G&!@\```````8/'[_
+M_WX8&#P``````````!@\/!@``````/______Y\/#Y_______`````#PD0D(D
+M/`````#_____P]N]O=O#_____P``'P<-&7C,S,QX```````\9F9F/!A^&!@`
+M``````P*"0D)"@@X>'@P````'Q$?$1$1$S=W<B`````8&-L\YSS;&!@`````
+M`$!@<'Q_?'!@0````````0,''W\?!P,!```````8/'X8&!A^/!@``````#,S
+M,S,S,P`S,P``````?]O;VWL;&QL;`````#YC,!PV8V,V'`9C/@``````````
+M`']_?P``````&#Q^&!@8?CP8?@`````8/'X8&!@8&!@``````!@8&!@8&'X\
+M&``````````,!G\&#````````````!@P?S`8````````````8&!@8']_````
+M```````D0O]")````````````````!@\?O\``````````/]^/!@`````````
+M```````````````````8/#P\&!@`&!@`````9F9F)```````````````-C9_
+M-C8V?S8V````"`@^8V!@/@,#8SX("`````!A8P8,&#!C0P``````'#8V'#MN
+M9F8[`````#`P,&````````````````P8,#`P,#`8#```````,!@,#`P,#!@P
+M`````````&8\?CQF````````````&!A^&!@`````````````````&!@8,```
+M````````?@`````````````````````8&````````0,&#!@P8$`````````^
+M8V=O>W-C8SX```````P</`P,#`P,/P``````/F,#!@P8,&-_```````^8P,#
+M'@,#8SX```````8.'C9F?P8&#P``````?F!@8'X#`V,^```````<,&!@?F-C
+M8SX``````']C`P8,&!@8&```````/F-C8SYC8V,^```````^8V-C/P,#!AP`
+M````````&!@````8&``````````8&````!@8,``````&#!@P8#`8#`8`````
+M````?@```'X`````````8#`8#`8,&#!@```````^8V,&#`P`#`P``````#YC
+M8V]O;VY@/@``````"!PV8V-_8V-C``````!^,S,S/C,S,WX``````!XS8&!@
+M8&`S'@``````?#8S,S,S,S9\``````!_,S`T/#0P,W\``````'\S,#0\-#`P
+M>```````'C-@8&!O8S,=``````!C8V-C?V-C8V,``````#P8&!@8&!@8/```
+M````#P8&!@8&9F8\``````!S,S8V/#8V,W,``````'@P,#`P,#`S?P``````
+M8W=_:V-C8V-C``````!C<WM_;V=C8V,``````!PV8V-C8V,V'```````?C,S
+M,SXP,#!X```````<-F-C8V-K/AP&`P```'XS,S,^-C,S<P``````/F-C,!P&
+M8V,^``````!^6A@8&!@8&#P``````&-C8V-C8V-C/@``````8V-C8V-C-AP(
+M``````!C8V-C8VMK?S8``````&-C8S8<-F-C8P``````9F9F9F8\&!@\````
+M``!_8P8,&#!@8W\``````#PP,#`P,#`P/```````0&`P&`P&`P$````````\
+M#`P,#`P,##P````('#9C``````````````````````````````#_&!@,````
+M`````````````````#P&/F9F.P``````<#`P/C,S,S-N```````````^8V!@
+M8SX```````X&!CYF9F9F.P``````````/F-_8&,^```````>,S!\,#`P,'@`
+M`````````#MF9F8^!F8\````<#`P-CLS,S-S```````,#``<#`P,#!X`````
+M``P,`!P,#`P,#,QX````<#`P,S8\-C-S```````<#`P,#`P,#!X`````````
+M`&9_:VMK:P``````````;C,S,S,S```````````^8V-C8SX``````````&XS
+M,S,^,#!X````````.V9F9CX&!@\```````!N,S`P,'@``````````#YC.`YC
+M/@````````@8?A@8&!L.``````````!F9F9F9CL``````````&-C8S8<"```
+M````````8V-K:W\V``````````!C-AP<-F,``````````&-F9F8^!F8\````
+M````?V8,&#-_```````.&!@8<!@8&`X``````!@8&!@8&!@8&```````<!@8
+M&`X8&!AP```````[;@``````````````````"!PV8V-_````````````````
+M````````````&#Q^__]^/!@```!5JE6J5:I5JE6J5:I5J@!$1'Q$1``?!`0$
+M!````'Q`>$!``!\0'A`0````.$1`1#@`'A$>%!,```!`0$!`?``?$!X0$```
+M`#AL;#@`````````````````&!A^&!@`?@````!$9%1,1``0$!`0'P```$1$
+M1"@0`!\$!`0$```8&!@8&!@8^`````````````````#X&!@8&!@8````````
+M`!\8&!@8&!@8&!@8&!@8'P```````!@8&!@8&!C_&!@8&!@8_P``````````
+M``````````#_``````````````````````#_`````````````````````/\`
+M````````````````````_Q@8&!@8&!@?&!@8&!@8&!@8&!@8&/@8&!@8&!@8
+M&!@8&!@8_P````````````````#_&!@8&!@8&!@8&!@8&!@8&!@8&!@```P8
+M,&`P&`P`?@``````,!@,!@P8,`!^``````````,^=C8V-FP````````"!'X(
+M$'X@0```````'#8P,'PP,'-^```````````8&```````````````````````
+M````````&!@`&!@\/#P8````````"`@^8V!@8SX("````!PV,#!\,#!S?@``
+M`````$(\9F9F/$(```````!F9F8\&'X8?A@``````!@8&!@`&!@8&``````^
+M8S`<-F-C-AP&8SX``&-C```````````````````^05U145U!/@`````X!#Q$
+M/`!\`````````````!LV;#8;``````````````!_`P,``````````````'\`
+M````````````/D%=55E503X`````?@`````````````````X;&PX````````
+M`````````!@8?A@8`'X`````.&P8,&1\``````````!\##@,;#@`````````
+M``8,&````````````````````&9F9F9F.V#`````?]O;VWL;&QL;````````
+M```8&```````````````````````#`P&'``P<#`P,'@``````````#A$1$0X
+M`'P`````````````;#8;-FP```````!@X&-F;!@S9\\?`P,``&#@8V9L&#!N
+MPP8,'P``\#!C]FP8,V?/'P,#````&!@`&!@P8V,^````8#`8`!PV8V-_8V,`
+M```#!@P`'#9C8W]C8P````@<-@`<-F-C?V-C````.VX`"!PV8V-_8V,`````
+M8V,('#9C8W]C8P```!PV'``<-F-C?V-C```````?-F9F9WYF9F<``````!XS
+M8&!@8&`S'@P&'&`P&`!_,S`^,#-_````!@P8`'\S,#XP,W\````('#8`?S,P
+M/C`S?P````!C8P!_,S`^,#-_````8#`8`#P8&!@8&#P````&#!@`/!@8&!@8
+M/````!@\9@`\&!@8&!@\`````&9F`#P8&!@8&#P``````#PV,S-[,S,V/```
+M`#MN`&-S>W]O9V-C````8#`8`!PV8V-C-AP````#!@P`'#9C8V,V'`````@<
+M-@`<-F-C8S8<`````#MN`!PV8V-C-AP`````8V,`'#9C8V,V'````````&,V
+M'`@<-F,```````,>-F=O:WMS-CQ@``!@,!@`8V-C8V-C/@````,&#`!C8V-C
+M8V,^````"!PV`&-C8V-C8SX`````8V,`8V-C8V-C/@````8,&`!F9F8\&!@\
+M`````'@P/C,S/C`P,'@``````!PV8V9L9V-K;F!@``!@,!@`/`8^9F8[````
+M``8,&``\!CYF9CL`````"!PV`#P&/F9F.P``````.VX`/`8^9F8[``````!F
+M9@`\!CYF9CL`````'#8<`#P&/F9F.P``````````=@L[;F@W```````````^
+M8V!@8SX,!AP`,!@,`#YC?V!C/@`````#!@P`/F-_8&,^``````@<-@`^8W]@
+M8SX``````&-C`#YC?V!C/@````!@,!@`.!@8&!@\``````8,&``X&!@8&#P`
+M````&#QF`#@8&!@8/```````9F8`.!@8&!@\```````V'#8&/F9F9CP`````
+M`#MN`&XS,S,S,P````!@,!@`/F-C8V,^``````8,&``^8V-C8SX`````"!PV
+M`#YC8V-C/@``````.VX`/F-C8V,^``````!C8P`^8V-C8SX``````!@8``!^
+M```8&``````````#/F=O>W,^8````&`P&`!F9F9F9CL`````!@P8`&9F9F9F
+M.P`````8/&8`9F9F9F8[``````!F9@!F9F9F9CL`````!@P8`&-F9F8^!F8\
+=`````'@P/C,S,S,^,'@```!F9@!F9F9F/@9F/```
+`
+end
diff --git a/share/syscons/fonts/iso-8x16.fnt b/share/syscons/fonts/iso-8x16.fnt
new file mode 100644
index 000000000000..d08791bbbb7b
--- /dev/null
+++ b/share/syscons/fonts/iso-8x16.fnt
@@ -0,0 +1,95 @@
+begin 644 iso-8x16
+M````````````````````````?H&E@8&]F8&!?@```````'[_V___P^?__WX`
+M`````````&S^_O[^?#@0```````````0.'S^?#@0```````````8/#SGY^<8
+M&#P`````````&#Q^__]^&!@\`````````````!@\/!@```````#________G
+MP\/G________```````\9D)"9CP``````/______PYF]O9G#______\``!X.
+M&C)XS,S,S'@````````\9F9F9CP8?A@8````````/S,_,#`P,'#PX```````
+M`']C?V-C8V-GY^;`````````&!C;/.<\VQ@8``````"`P.#P^/[X\.#`@```
+M`````@8.'C[^/AX.!@(````````8/'X8&!A^/!@`````````9F9F9F9F9@!F
+M9@```````'_;V]M[&QL;&QL``````'S&8#ALQL9L.`S&?```````````````
+M_O[^_@```````!@\?A@8&'X\&'X````````8/'X8&!@8&!@8````````&!@8
+M&!@8&'X\&````````````!@,_@P8```````````````P8/Y@,```````````
+M`````,#`P/X``````````````"1F_V8D`````````````!`X.'Q\_OX`````
+M``````#^_GQ\.#@0```````````````````````````````8/#P\&!@8`!@8
+M``````!F9F8D``````````````````!L;/YL;&S^;&P`````&!A\QL+`?`8&
+MAL9\&!@```````#"Q@P8,&#&A@```````#AL;#AVW,S,S'8``````#`P,&``
+M````````````````#!@P,#`P,#`8#````````#`8#`P,#`P,&#``````````
+M``!F//\\9@``````````````&!A^&!@````````````````````8&!@P````
+M`````````/X````````````````````````8&````````````@8,&#!@P(``
+M```````\9L/#V]O#PV8\````````&#AX&!@8&!@8?@```````'S&!@P8,&#`
+MQOX```````!\Q@8&/`8&!L9\````````#!P\;,S^#`P,'@```````/[`P,#\
+M!@8&QGP````````X8,#`_,;&QL9\````````_L8&!@P8,#`P,````````'S&
+MQL9\QL;&QGP```````!\QL;&?@8&!@QX```````````8&````!@8````````
+M````&!@````8&#``````````!@P8,&`P&`P&````````````?@``?@``````
+M``````!@,!@,!@P8,&````````!\QL8,&!@8`!@8`````````'S&QM[>WMS`
+M?````````!`X;,;&_L;&QL8```````#\9F9F?&9F9F;\````````/&;"P,#`
+MP,)F/````````/AL9F9F9F9F;/@```````#^9F)H>&A@8F;^````````_F9B
+M:'AH8&!@\````````#QFPL#`WL;&9CH```````#&QL;&_L;&QL;&````````
+M/!@8&!@8&!@8/````````!X,#`P,#,S,S'@```````#F9F9L>'AL9F;F````
+M````\&!@8&!@8&)F_@```````,/G___;P\/#P\,```````#&YO;^WL[&QL;&
+M````````?,;&QL;&QL;&?````````/QF9F9\8&!@8/````````!\QL;&QL;&
+MUMY\#`X`````_&9F9GQL9F9FY@```````'S&QF`X#`;&QGP```````#_VYD8
+M&!@8&!@\````````QL;&QL;&QL;&?````````,/#P\/#P\-F/!@```````##
+MP\/#P]O;_V9F````````P\-F/!@8/&;#PP```````,/#PV8\&!@8&#P`````
+M``#_PX8,&#!@P</_````````/#`P,#`P,#`P/`````````"`P.!P.!P.!@(`
+M```````\#`P,#`P,#`P\`````!`X;,8`````````````````````````````
+M````_P``,#`8````````````````````````>`Q\S,S,=@```````.!@8'AL
+M9F9F9GP```````````!\QL#`P,9\````````'`P,/&S,S,S,=@``````````
+M`'S&_L#`QGP````````X;&1@\&!@8&#P````````````=LS,S,S,?`S,>```
+M`.!@8&QV9F9F9N8````````8&``X&!@8&!@\````````!@8`#@8&!@8&!F9F
+M/````.!@8&9L>'AL9N8````````X&!@8&!@8&!@\````````````YO_;V]O;
+MVP```````````-QF9F9F9F8```````````!\QL;&QL9\````````````W&9F
+M9F9F?&!@\````````';,S,S,S'P,#!X```````#<=F9@8&#P````````````
+M?,9@.`S&?````````!`P,/PP,#`P-AP```````````#,S,S,S,QV````````
+M````P\/#PV8\&````````````,/#P]O;_V8```````````##9CP8/&;#````
+M````````QL;&QL;&?@8,^````````/[,&#!@QOX````````.&!@8<!@8&!@.
+M````````&!@8&!@8&!@8&````````'`8&!@.&!@8&'````````!VW```````
+M```````````````0.&S&QL;^`````````````````````````````````!@\
+M?O__?CP8`````%6J5:I5JE6J5:I5JE6J5:H`B(CXB(B(`#X("`@("````/B`
+M\("`@``^(#P@("````!PB("`B'``/"(\*"0B````@("`@(#X`#X@/"`@(```
+M`#AL;#@````````````````````8&'X8&```_P``````B,BHJ)B(`"`@("`@
+M/@```(B(B(A0(``^"`@("`@``!@8&!@8&!CX````````````````````^!@8
+M&!@8&!@8`````````!\8&!@8&!@8&!@8&!@8&!@?```````````8&!@8&!@8
+M_Q@8&!@8&!@8_P````````````````````````#_````````````````````
+M````_P````````````````````````#_`````````````````````````/\8
+M&!@8&!@8'Q@8&!@8&!@8&!@8&!@8&/@8&!@8&!@8&!@8&!@8&!C_````````
+M````````````_Q@8&!@8&!@8&!@8&!@8&!@8&!@8&!@8&`````P8,&`P&`P`
+M?@`````````P&`P&#!@P`'X``````````G[L;&QL;&S,``````````8,?A@8
+M?C!@````````.&QD8/!@8&!@YOP``````````````!@8````````````````
+M`````````````````!@8`!@8&#P\/!@``````!@8?L/`P,##?A@8```````X
+M;&1@\&!@8&#F_`````````""QGS&QL;&?,:"``````##9CP8_QC_&!@8````
+M````&!@8&``8&!@8&```````?,9@.&S&QFPX#,9\`````,8`````````````
+M````````?,:"NJ*BNH+&?```````<!AXR'@`^``````````````````V;-AL
+M-@```````````````/X&!@8&````````````````?`````````````!\QH*Z
+MJK*J@L9\``````#^````````````````````.&QL.```````````````````
+M`!@8?A@8``!^``````!PV#!@R/@`````````````^!@P&-AP````````````
+M&#!@``````````````````````!F9F9F9GYC8,```````'_;V]M[&QL;&QL`
+M`````````````!@8```````````````````````8#`8\````8.!@8&#P````
+M`````````'#8B-AP`/@`````````````````V&PV;-@`````````P,#"QLP8
+M,&;.ECX&!@```,#`PL;,&#!@SIL&#!\```#P,'(V[!@P9LZ6/@8&`````#`P
+M`#`P8,#&QGP`````8#`8`#ALQL;^QL;&``````P8,``X;,;&_L;&Q@`````0
+M.&P`.&S&QO[&QL8``````';<`#ALQL;^QL;&``````#&`!`X;,;&_L;&Q@``
+M```X;#@`.&S&QO[&QL8````````^;,S,_LS,S,S.````````/&;"P,#`PF8\
+M#`9\```P&`P`_F9@?&!@9OX`````&#!@`/YF8'Q@8&;^`````!`X;`#^9F!\
+M8&!F_@``````Q@#^9F!@?&!@9OX`````,!@,`#P8&!@8&!@\``````P8,``\
+M&!@8&!@8/``````8/&8`/!@8&!@8&#P``````&8`/!@8&!@8&!@\````````
+M>&QF9F;V9F9L>`````!VW`#&YO;^WL[&QL8`````8#`8`'S&QL;&QL9\````
+M``P8,`!\QL;&QL;&?``````0.&P`?,;&QL;&QGP`````=MP`?,;&QL;&QL9\
+M``````#&`'S&QL;&QL;&?```````````QFPX$#ALQ@```````@9\SL[>UM;V
+MYN9\P(```&`P&`#&QL;&QL;&?``````,&#``QL;&QL;&QGP`````$#AL`,;&
+MQL;&QL9\``````#&`,;&QL;&QL;&?``````,&#``P\-F/!@8&#P`````\&!\
+M9F9F?&!@8&#P````````.&S&SMS8S,;6W,"`````8#`8`'@,?,S,S'8`````
+M`!@P8`!X#'S,S,QV```````0.&P`>`Q\S,S,=@```````';<`'@,?,S,S'8`
+M``````#,``!X#'S,S,QV```````X;#@`>`Q\S,S,=@```````````&X[&W[8
+MW'<``````````#QF8&!F/`P&/`````!@,!@`?,;^P,#&?```````#!@P`'S&
+M_L#`QGP``````!`X;`!\QO[`P,9\````````Q@``?,;^P,#&?```````8#`8
+M`#@8&!@8&#P```````8,&``X&!@8&!@\```````8/&8`.!@8&!@8/```````
+M`&8``#@8&!@8&#P``````&PX.&P,/&S,S,QX````````=MP`W&9F9F9F9@``
+M````8#`8`'S&QL;&QGP``````!@P8`!\QL;&QL9\```````0.&P`?,;&QL;&
+M?````````';<`'S&QL;&QGP```````#&``!\QL;&QL9\```````````8&`!^
+M`!@8```````````"!GS.WM;VYGS`@````&`P&`#,S,S,S,QV```````8,&``
+MS,S,S,S,=@``````,'C,`,S,S,S,S'8```````#,``#,S,S,S,QV```````8
+M,&``QL;&QL;&?@8,^`````#P8'QF9F9F9GQ@8/````!F9@#N9F9F9F8^!@PX
+!`&``
+`
+end
diff --git a/share/syscons/fonts/iso-8x8.fnt b/share/syscons/fonts/iso-8x8.fnt
new file mode 100644
index 000000000000..5e787e26798b
--- /dev/null
+++ b/share/syscons/fonts/iso-8x8.fnt
@@ -0,0 +1,49 @@
+begin 644 iso-8x8
+M``````````!^@:6!O9F!?G[_V__#Y_]^;/[^_GPX$``0.'S^?#@0`#A\./[^
+M?#A\$!`X?/Y\.'P``!@\/!@``/__Y\/#Y___`#QF0D)F/`#_PYF]O9G#_P\'
+M#WW,S,QX/&9F9CP8?A@_,S\P,'#PX']C?V-C9^;`F5H\Y^<\6IF`X/C^^."`
+M``(./OX^#@(`&#Q^&!A^/!AF9F9F9@!F`'_;VWL;&QL`/F,X;&PXS'@`````
+M?GY^`!@\?AA^/!C_&#Q^&!@8&``8&!@8?CP8```8#/X,&````#!@_F`P````
+M`,#`P/X````D9O]F)````!@\?O__````__]^/!@`````````````,'AX,#``
+M,`!L;&P``````&QL_FS^;&P`,'S`>`SX,```QLP8,&;&`#AL.';<S'8`8&#`
+M```````8,&!@8#`8`&`P&!@8,&```&8\_SQF````,##\,#``````````,#!@
+M````_````````````#`P``8,&#!@P(``?,;.WO;F?``P<#`P,##\`'C,##A@
+MS/P`>,P,.`S,>``</&S,_@P>`/S`^`P,S'@`.&#`^,S,>`#\S`P8,#`P`'C,
+MS'C,S'@`>,S,?`P8<```,#```#`P```P,```,#!@&#!@P&`P&````/P``/P`
+M`&`P&`P8,&``>,P,&#``,`!\QM[>WL!X`#!XS,S\S,P`_&9F?&9F_``\9L#`
+MP&8\`/AL9F9F;/@`_F)H>&AB_@#^8FAX:&#P`#QFP,#.9CX`S,S,_,S,S`!X
+M,#`P,#!X`!X,#`S,S'@`YF9L>&QFY@#P8&!@8F;^`,;N_O[6QL8`QN;VWL[&
+MQ@`X;,;&QFPX`/QF9GQ@8/``>,S,S-QX'`#\9F9\;&;F`'C,X'`<S'@`_+0P
+M,#`P>`#,S,S,S,S\`,S,S,S,>#``QL;&UO[NQ@#&QFPX.&S&`,S,S'@P,'@`
+M_L:,&#)F_@!X8&!@8&!X`,!@,!@,!@(`>!@8&!@8>``0.&S&````````````
+M``#_,#`8`````````'@,?,QV`.!@8'QF9MP```!XS,#,>``<#`Q\S,QV````
+M>,S\P'@`.&Q@\&!@\````';,S'P,^.!@;'9F9N8`,`!P,#`P>``,``P,#,S,
+M>.!@9FQX;.8`<#`P,#`P>````,S^_M;&````^,S,S,P```!XS,S,>````-QF
+M9GQ@\```=LS,?`P>``#<=F9@\````'S`>`SX`!`P?#`P-!@```#,S,S,=@``
+M`,S,S'@P````QM;^_FP```#&;#ALQ@```,S,S'P,^```_)@P9/P`'#`PX#`P
+M'``8&!@`&!@8`.`P,!PP,.``=MP`````````$#ALQL;^```````````````\
+M?O]^&`"J556JJE55JD1$1$0?!`0$?$!`0!\0$!`X1$0X'A$4$T!`0'P?$!`0
+M.&PX`````````!@8&!A^`$1D3$00$!`?1$0H$!\$!`08&!@8^`````````#X
+M&!@8`````!\8&!@8&!@8'P```!@8&!C_&!@8````````````````````````
+M``#_````````````_P```````````!@8&!@?&!@8&!@8&/@8&!@8&!@8_P``
+M``````#_&!@8&!@8&!@8&!@`##!@&`Q^```P#`88,'X````#/C8V;`````1^
+M$'Y````<,#`P,'X`````&````````````````#``,#!X>#`````0?,#`?!``
+M.&!@\&#\``##/&9F/,,``,S,>##\,``8&!@`&!@8`'[`?,9\!OP`Q@``````
+M``!\@KJBNH)\`!P&'B(?/P```#-FS&8S````_@8`````````````````?(*Z
+MLJJ"?`#^`````````#AL.````````!!\$`!\```<-@88/@```!X"#@(>````
+M&#```````````,S,S,QVP'[*RGX*"@H`````&``````````````8,`8.!@8&
+M````#A$1$0X?````S&8S9LP``&#@9FPS9P\#8.!F;#9J!`[P()9L,V</`S``
+M,&#`S'@`&`PP>,S\S`!@P#!XS/S,`'B$,'C,_,P`9I@P>,S\S`#,`#!XS/S,
+M`#!(,'C,_,P`/GB8G/B8G@`\9L#`P&8<,#`8_F)X8OX`&##^8GAB_@`X1/YB
+M>&+^`&8`_F)X8OX`8#!X,#`P>``8,'@P,#!X`'B$>#`P,'@`S`!X,#`P>`!X
+M;&;V9FQX`&:8YO;>SL8`,!A\QL;&?``8,'S&QL9\`#A$?,;&QGP`9IA\QL;&
+M?`#&`'S&QL9\``#&;#@X;,8`!GS.FK+F>,!@,,S,S,S\`!@PS,S,S/P`>(3,
+MS,S,_`#,`,S,S,S\`!@PS,QX,'@`8'AL>&!@8`!XS,3<QL;<P#`8>`Q\S'8`
+M&#!X#'S,=@!XA'@,?,QV`&:8>`Q\S'8`S`!X#'S,=@`P2#@,?,QV````[#)^
+ML&X````\9L!F'#`P&'C,_,!X`!@P>,S\P'@`>(1XS/S`>`#,`'C,_,!X`&`P
+M`'`P,'@`&#``<#`P>`!PB`!P,#!X`,P``'`P,'@`;#AL#&S,>`!FF/C,S,S,
+M`&`P`'S&QGP`&#``?,;&?``X1`!\QL9\`&:8`'S&QGP`Q@``?,;&?````!@`
+M?@`8````!GS>]GS`8#``S,S,=@`8,`#,S,QV`#!(`,S,S'8`S```S,S,=@`8
+7,,S,S'P,^.!X;&9L>.``S`#,S,Q\#/C,
+`
+end
diff --git a/share/syscons/fonts/koi8-8x14.fnt b/share/syscons/fonts/koi8-8x14.fnt
new file mode 100644
index 000000000000..221c3fdfb0f3
--- /dev/null
+++ b/share/syscons/fonts/koi8-8x14.fnt
@@ -0,0 +1,83 @@
+begin 644 koi8-8x14
+M`````````````````````'Z!I8&!I9F!?@``````?O_;___#Y_]^````````
+M;/[^_OY\.!`````````0.'S^?#@0````````&#P\Y^?G&!@\```````8/'[_
+M_WX8&#P``````````!@\/!@``````/______Y\/#Y_______`````#QF0D)F
+M/`````#_____PYF]O9G#_____P``'@X:,GC,S,QX```````\9F9F/!A^&!@`
+M`````#\S/S`P,'#PX```````?V-_8V-C9^?FP``````8&-L\YSS;&!@`````
+M`(#`X/C^^.#`@````````@8./OX^#@8"```````8/'X8&!A^/!@``````&9F
+M9F9F9@!F9@``````?]O;VWL;&QL;`````'S&8#ALQL9L.`S&?```````````
+M`/[^_@``````&#Q^&!@8?CP8?@`````8/'X8&!@8&!@``````!@8&!@8&'X\
+M&``````````8#/X,&````````````#!@_F`P`````````````,#`P/X`````
+M```````H;/YL*```````````$#@X?'S^_@````````#^_GQ\.#@0````````
+M```````````````````8/#P\&!@`&!@`````9F9F)```````````````;&S^
+M;&QL_FQL````&!A\QL+`?`:&QGP8&```````PL8,&#!FQ@``````.&QL.';<
+MS,QV`````#`P,&````````````````P8,#`P,#`8#```````,!@,#`P,#!@P
+M`````````&8\_SQF````````````&!A^&!@`````````````````&!@8,```
+M````````_@`````````````````````8&````````@8,&#!@P(````````!\
+MQL[>]N;&QGP``````!@X>!@8&!@8?@``````?,8&#!@P8,;^``````!\Q@8&
+M/`8&QGP```````P</&S,_@P,'@``````_L#`P/P&!L9\```````X8,#`_,;&
+MQGP``````/[&!@P8,#`P,```````?,;&QGS&QL9\``````!\QL;&?@8&#'@`
+M```````8&````!@8`````````!@8````&!@P```````&#!@P8#`8#`8`````
+M`````'X``'X`````````8#`8#`8,&#!@``````!\QL8,&!@`&!@``````'S&
+MQM[>WMS`?```````$#ALQL;^QL;&``````#\9F9F?&9F9OP``````#QFPL#`
+MP,)F/```````^&QF9F9F9FSX``````#^9F)H>&AB9OX``````/YF8FAX:&!@
+M\```````/&;"P,#>QF8Z``````#&QL;&_L;&QL8``````#P8&!@8&!@8/```
+M````'@P,#`P,S,QX``````#F9FQL>&QL9N8``````/!@8&!@8&)F_@``````
+MQN[^_M;&QL;&``````#&YO;^WL[&QL8``````#ALQL;&QL9L.```````_&9F
+M9GQ@8&#P``````!\QL;&QM;>?`P.`````/QF9F9\;&9FY@``````?,;&8#@,
+MQL9\``````!^?EH8&!@8&#P``````,;&QL;&QL;&?```````QL;&QL;&;#@0
+M``````#&QL;&UM;^?&P``````,;&;#@X.&S&Q@``````9F9F9CP8&!@\````
+M``#^QHP8,&#"QOX``````#PP,#`P,#`P/```````@,#@<#@<#@8"```````\
+M#`P,#`P,##P````0.&S&`````````````````````````````/\`,#`8````
+M`````````````````'@,?,S,=@``````X&!@>&QF9F9\``````````!\QL#`
+MQGP``````!P,##QLS,S,=@``````````?,;^P,9\```````X;&1@\&!@8/``
+M`````````';,S,Q\#,QX````X&!@;'9F9F;F```````8&``X&!@8&#P`````
+M``8&``X&!@8&9F8\````X&!@9FQX;&;F```````X&!@8&!@8&#P`````````
+M`.S^UM;6Q@``````````W&9F9F9F``````````!\QL;&QGP``````````-QF
+M9F9\8&#P````````=LS,S'P,#!X```````#<=F9@8/```````````'S&<!S&
+M?```````$#`P_#`P,#8<``````````#,S,S,S'8``````````&9F9F8\&```
+M````````QL;6UOYL``````````#&;#@X;,8``````````,;&QL9^!@SX````
+M````_LP8,&;^```````.&!@8<!@8&`X``````!@8&!@`&!@8&```````<!@8
+M&`X8&!AP``````!VW```````````````````$#ALQL;^``````````````#_
+M````````&!@8&!@8&!@8&!@8&!@`````````'Q@8&!@8&`````````#X&!@8
+M&!@8&!@8&!@8&!\````````8&!@8&!@8^````````!@8&!@8&!@?&!@8&!@8
+M&!@8&!@8&/@8&!@8&!@`````````_Q@8&!@8&!@8&!@8&!C_````````&!@8
+M&!@8&/\8&!@8&!C_________``````````````````#_________________
+M___________P\/#P\/#P\/#P\/#P\`\/#P\/#P\/#P\/#P\/$4011!%$$401
+M1!%$$415JE6J5:I5JE6J5:I5JMUWW7?==]UWW7?==]UW```.&QL8&!@8&!@8
+M&!@`````?'Q\?'Q\`````````````!@8``````````\,#`P,#.QL/!P`````
+M````=MP`=MP`````````#!@P8#`8#`!^```````P&`P&#!@P`'X`````````
+M`````````````!@8&!@8&!@8V-AP`````#AL;#@`````````````<-@P8,CX
+M```````````````````8````````````&!@`?@`8&````````````/\`_P``
+M`````#8V-C8V-C8V-C8V-C8V```````?&!\8&!@8&!@``&QL`'S&_,#&?```
+M```````````_-C8V-C8V```````_,#<V-C8V-C8``````/@8^!@8&!@8&```
+M``````#^-C8V-C8V``````#^!O8V-C8V-C88&!@8&!\8'P```````#8V-C8V
+M-C8_````````-C8V-C8W,#\````````8&!@8&/@8^````````#8V-C8V-C;^
+M````````-C8V-C;V!OX````````8&!@8&!\8'Q@8&!@8&#8V-C8V-C8W-C8V
+M-C8V-C8V-C8W,#<V-C8V-C88&!@8&/@8^!@8&!@8&&QL`/[&P/#`P,;^````
+M-C8V-C8V-O8V-C8V-C8V-C8V-O8&]C8V-C8V-@``````_P#_&!@8&!@8````
+M`````/\V-C8V-C8``````/\`]S8V-C8V-A@8&!@8_P#_````````-C8V-C8V
+M-O\````````V-C8V-O<`_P```````!@8&!@8_QC_&!@8&!@8-C8V-C8V-O\V
+M-C8V-C8V-C8V-O<`]S8V-C8V-@``?(*ZJJ*BJKJ"?`````````"<MK;VMIP`
+M`````````'S&QO[&Q@``````````_L#\QL;\``````````#,S,S,S/X&#```
+M`````#QL;&QL_L:"````````?,;\P,9\`````````!!\UM;6UGP0.```````
+M`/["P,#`P```````````QFPX.&S&``````````#&SM[VYL8````````,&,;.
+MWO;FQ@``````````QLSXV,S&```````````^9F9F9L8``````````,;N_M;&
+MQ@``````````QL;&_L;&``````````!^QL;&QOP``````````/[&QL;&Q@``
+M````````?L9^-F;&``````````#\QL;&QOS`P````````'S&P,#&?```````
+M````?EH8&!@8``````````#&QL;&QGX&?````````-;6?-;6U@``````````
+M_,;\QL;\``````````#`P/S&QOP``````````,;&YK:VY@``````````?,8<
+M!L9\``````````#6UM;6UOX``````````'S&'@;&?```````````UM;6UM;^
+M`@8```````#&QL9^!@8``````````.!@?&9F?```````G+:VMO:VMK:<````
+M```^9L;&QO[&QL8``````/[`P/S&QL;&_```````S,S,S,S,S,S^`@8````\
+M;&QL;&QL;/[&@@```/[&P,#PP,#&_@``````?-;6UM;6?!`X``````#^QL#`
+MP,#`P,```````,;&;#@X;,;&Q@``````QL;&SM[VYL;&``````S:QL;.WO;F
+MQL8``````,;,V/#PV,S&Q@``````'C9FQL;&QL;&``````""QL;N[O[6QL8`
+M`````,;&QL;^QL;&Q@``````?L;&QL;&QL;\``````#^QL;&QL;&QL8`````
+M`'[&QL;&?C9FQ@``````_,;&QL;\P,#```````!\QL;`P,#&QGP``````'Y^
+M6A@8&!@8&```````QL;&QL9^!L9\``````#6UM94?-;6UM8``````/S&QL;\
+MQL;&_```````P,#`_,;&QL;\``````#&QL;FMK:VMN8``````'S&!AP&!L;&
+M?`````#6UM;6UM;6UM;^``````!\Q@8>!@;&QGP`````UM;6UM;6UM;6_@(&
+=````QL;&QL9^!@8&``````#@X&!\9F9F9GP`````
+`
+end
diff --git a/share/syscons/fonts/koi8-8x16.fnt b/share/syscons/fonts/koi8-8x16.fnt
new file mode 100644
index 000000000000..4648e8839be2
--- /dev/null
+++ b/share/syscons/fonts/koi8-8x16.fnt
@@ -0,0 +1,95 @@
+begin 644 koi8-8x16
+M````````````````````````?H&E@8&EF8&!?@```````'[_V___V^?__WX`
+M`````````&S^_O[^?#@0```````````0.'S^?#@0```````````8/#SGY^<8
+M&#P`````````&#Q^__]^&!@\`````````````!@\/!@```````#________G
+MP\/G________```````\9D)"9CP``````/______PYF]O9G#______\``!X&
+M#AIXS,S,S'@````````\9F9F9CP8?A@8````````/S,_,#`P,'#PX```````
+M`']C?V-C8V-GY^;`````````&!C;/.<\VQ@8``````"`P.#P^/[X\.#`@```
+M`````@8.'C[^/AX.!@(````````8/'X8&!A^/!@`````````9F9F9F9F9@!F
+M9@```````'_;V]M[&QL;&QL``````'S&8#ALQL9L.`S&?```````````````
+M_O[^_@```````!@\?A@8&'X\&'X````````8/'X8&!@8&!@8````````&!@8
+M&!@8&'X\&````````````!@,_@P8```````````````P8/Y@,```````````
+M`````,#`P/X``````````````"AL_FPH`````````````!`X.'Q\_OX`````
+M``````#^_GQ\.#@0```````````````````````````````8/#P\&!@8`!@8
+M``````!F9F8D``````````````````!L;/YL;&S^;&P`````&!A\QL+`?`8&
+MAL9\&!@```````#"Q@P8,&#&A@```````#AL;#AVW,S,S'8``````#`P,&``
+M````````````````#!@P,#`P,#`8#````````#`8#`P,#`P,&#``````````
+M``!F//\\9@``````````````&!A^&!@````````````````````8&!@P````
+M`````````/X````````````````````````8&````````````@8,&#!@P(``
+M```````X;,;&UM;&QFPX````````&#AX&!@8&!@8?@```````'S&!@P8,&#`
+MQOX```````!\Q@8&/`8&!L9\````````#!P\;,S^#`P,'@```````/[`P,#\
+M!@8&QGP````````X8,#`_,;&QL9\````````_L8&!@P8,#`P,````````'S&
+MQL9\QL;&QGP```````!\QL;&?@8&!@QX```````````8&````!@8````````
+M````&!@````8&#``````````!@P8,&`P&`P&````````````?@``?@``````
+M``````!@,!@,!@P8,&````````!\QL8,&!@8`!@8`````````'S&QM[>WMS`
+M?````````!`X;,;&_L;&QL8```````#\9F9F?&9F9F;\````````/&;"P,#`
+MP,)F/````````/AL9F9F9F9F;/@```````#^9F)H>&A@8F;^````````_F9B
+M:'AH8&!@\````````#QFPL#`WL;&9CH```````#&QL;&_L;&QL;&````````
+M/!@8&!@8&!@8/````````!X,#`P,#,S,S'@```````#F9F9L>'AL9F;F````
+M````\&!@8&!@8&)F_@```````,;N_O[6QL;&QL8```````#&YO;^WL[&QL;&
+M````````?,;&QL;&QL;&?````````/QF9F9\8&!@8/````````!\QL;&QL;&
+MUMY\#`X`````_&9F9GQL9F9FY@```````'S&QF`X#`;&QGP```````!^?EH8
+M&!@8&!@\````````QL;&QL;&QL;&?````````,;&QL;&QL9L.!````````#&
+MQL;&UM;6_NYL````````QL9L?#@X?&S&Q@```````&9F9F8\&!@8&#P`````
+M``#^QH8,&#!@PL;^````````/#`P,#`P,#`P/`````````"`P.!P.!P.!@(`
+M```````\#`P,#`P,#`P\`````!`X;,8`````````````````````````````
+M````_P``,#`8````````````````````````>`Q\S,S,=@```````.!@8'AL
+M9F9F9GP```````````!\QL#`P,9\````````'`P,/&S,S,S,=@``````````
+M`'S&_L#`QGP````````X;&1@\&!@8&#P````````````=LS,S,S,?`S,>```
+M`.!@8&QV9F9F9N8````````8&``X&!@8&!@\````````!@8`#@8&!@8&!F9F
+M/````.!@8&9L>'AL9N8````````X&!@8&!@8&!@\````````````[/[6UM;6
+MQ@```````````-QF9F9F9F8```````````!\QL;&QL9\````````````W&9F
+M9F9F?&!@\````````';,S,S,S'P,#!X```````#<=F9@8&#P````````````
+M?,9@.`S&?````````!`P,/PP,#`P-AP```````````#,S,S,S,QV````````
+M````9F9F9F8\&````````````,;&UM;6_FP```````````#&;#@X.&S&````
+M````````QL;&QL;&?@8,^````````/[,&#!@QOX````````.&!@8<!@8&!@.
+M````````&!@8&``8&!@8&````````'`8&!@.&!@8&'````````!VW```````
+M```````````````0.&S&QL;^````````````````_P``````````&!@8&!@8
+M&!@8&!@8&!@8&``````````?&!@8&!@8&!@`````````^!@8&!@8&!@8&!@8
+M&!@8&!\``````````!@8&!@8&!CX```````````8&!@8&!@8'Q@8&!@8&!@8
+M&!@8&!@8&/@8&!@8&!@8&`````````#_&!@8&!@8&!@8&!@8&!@8_P``````
+M````&!@8&!@8&/\8&!@8&!@8&/________\`````````````````````____
+M______________________________#P\/#P\/#P\/#P\/#P\/`/#P\/#P\/
+M#P\/#P\/#P\/$4011!%$$4011!%$$4011%6J5:I5JE6J5:I5JE6J5:K==]UW
+MW7?==]UWW7?==]UW```.&QL8&!@8&!@8&!@8&`````!\?'Q\?'Q\````````
+M````````&!@```````````\,#`P,#.QL;#P<````````````=MP`=MP`````
+M```````,&#!@,!@,`'X`````````,!@,!@P8,`!^````````````````````
+M```````8&!@8&!@8&-C8V'```````#AL;#@```````````````!PV#!@R/@`
+M`````````````````````!@``````````````!@8`'X`&!@`````````````
+M_P#_```````````V-C8V-C8V-C8V-C8V-C8V```````?&!\8&!@8&!@8&```
+M;&P`?,;&_,#&?```````````````/S8V-C8V-C8V```````_,#<V-C8V-C8V
+M-@``````^!CX&!@8&!@8&!@`````````_C8V-C8V-C8V``````#^!O8V-C8V
+M-C8V-A@8&!@8'Q@?```````````V-C8V-C8V/P``````````-C8V-C8W,#\`
+M`````````!@8&!@8^!CX```````````V-C8V-C8V_@``````````-C8V-C;V
+M!OX``````````!@8&!@8'Q@?&!@8&!@8&!@V-C8V-C8V-S8V-C8V-C8V-C8V
+M-C8W,#<V-C8V-C8V-A@8&!@8^!CX&!@8&!@8&!AF9@#^QL#`\,#`QOX`````
+M-C8V-C8V-O8V-C8V-C8V-C8V-C8V]@;V-C8V-C8V-C8``````/\`_Q@8&!@8
+M&!@8`````````/\V-C8V-C8V-@``````_P#W-C8V-C8V-C88&!@8&/\`_P``
+M````````-C8V-C8V-O\``````````#8V-C8V]P#_```````````8&!@8&/\8
+M_Q@8&!@8&!@8-C8V-C8V-O\V-C8V-C8V-C8V-C8V]P#W-C8V-C8V-C8``'R"
+MNJJBHJ*JNH)\``````````"<MK;VMK:<````````````?,;&QO[&Q@``````
+M`````/[`_,;&QOP```````````#,S,S,S,S^!@P`````````/&QL;&QL_L:"
+M`````````'S&QOS`QGP``````````!!\UM;6UM9\$#@`````````_L;"P,#`
+MP````````````,9L.#ALQL8```````````#&QL[>]N;&``````````P8QL;.
+MWO;FQ@```````````,;,V/C8S,8````````````^9F9F9F;&````````````
+MQN[^UL;&Q@```````````,;&QO[&QL8```````````!^QL;&QL;\````````
+M````_L;&QL;&Q@```````````'[&QGXV9L8```````````#\QL;&QL;\P,#`
+M````````?,;`P,+&?````````````'Y:&!@8&!@```````````#&QL;&QL9^
+M!L9\````````UM;6?-;6U@```````````/S&QOS&QOP```````````#`P/S&
+MQL;\````````````QL;FMK:VY@```````````'S&!AP&QGP```````````#6
+MUM;6UM;^````````````?,8&'@;&?````````````-;6UM;6UOX"!@0`````
+M``#&QL;&?@8&````````````X&!\9F9F?````````)RVMK;VMK:VMIP`````
+M```^9L;&QO[&QL;&````````_L#`P/S&QL;&_````````,S,S,S,S,S,S/X"
+M!@0````\;&QL;&QL;&S^QH(`````_L;`P/#`P,#&_@```````'S6UM;6UM9\
+M$#@```````#^QL#`P,#`P,#`````````QL9L.#ALQL;&Q@```````,;&QL;.
+MWO;FQL8```````S:QL;&SM[VYL;&````````QLS8\/#8S,;&Q@```````!XV
+M9L;&QL;&QL8```````#&QN[N_O[6UL;&````````QL;&QO[&QL;&Q@``````
+M`'[&QL;&QL;&QOP```````#^QL;&QL;&QL;&````````?L;&QL9^-F;&Q@``
+M`````/S&QL;&QOS`P,````````!\QL;`P,#`QL9\````````?GY:&!@8&!@8
+M&````````,;&QL;&QGX&QGP```````#6UM94?-;6UM;6````````_,;&QOS&
+MQL;&_````````,#`P,#\QL;&QOP```````#&QL;&YK:VMK;F````````?,8&
+M!AP&!L;&?````````-;6UM;6UM;6UOX```````!XS`8&'AX&!LQX````````
+MUM;6UM;6UM;6_@(&!````,;&QL;&?@8&!@8```````#@X&!@?&9F9F9\````
+!`-;6
+`
+end
diff --git a/share/syscons/fonts/koi8-8x8.fnt b/share/syscons/fonts/koi8-8x8.fnt
new file mode 100644
index 000000000000..ec262866bb89
--- /dev/null
+++ b/share/syscons/fonts/koi8-8x8.fnt
@@ -0,0 +1,49 @@
+begin 644 koi8-8x8
+M``````````!^@:6!O9F!?G[_V__#Y_]^;/[^_GPX$``0.'S^?#@0`#A\./[^
+M?#A\$!`X?/Y\.'P``!@\/!@``/__Y\/#Y___`#QF0D)F/`#_PYF]O9G#_P\'
+M#WW,S,QX/&9F9CP8?A@_,S\P,'#PX']C?V-C9^;`F5H\Y^<\6IF`X/C^^."`
+M``(./OX^#@(`&#Q^&!A^/!AF9F9F9@!F`'_;VWL;&QL`/F,X;&PXS'@`````
+M?GY^`!@\?AA^/!C_&#Q^&!@8&``8&!@8?CP8```8#/X,&````#!@_F`P````
+M`,#`P/X````D9O]F)````!@\?O__````__]^/!@`````````````,'AX,#``
+M,`!L;&P``````&QL_FS^;&P`,'S`>`SX,```QLP8,&;&`#AL.';<S'8`8&#`
+M```````8,&!@8#`8`&`P&!@8,&```&8\_SQF````,##\,#``````````,#!@
+M````_````````````#`P``8,&#!@P(``?,;.WO;F?``P<#`P,##\`'C,##A@
+MS/P`>,P,.`S,>``</&S,_@P>`/S`^`P,S'@`.&#`^,S,>`#\S`P8,#`P`'C,
+MS'C,S'@`>,S,?`P8<```,#```#`P```P,```,#!@&#!@P&`P&````/P``/P`
+M`&`P&`P8,&``>,P,&#``,`!\QM[>WL!X`#!XS,S\S,P`_&9F?&9F_``\9L#`
+MP&8\`/AL9F9F;/@`_F)H>&AB_@#^8FAX:&#P`#QFP,#.9CX`S,S,_,S,S`!X
+M,#`P,#!X`!X,#`S,S'@`YF9L>&QFY@#P8&!@8F;^`,;N_O[6QL8`QN;VWL[&
+MQ@`X;,;&QFPX`/QF9GQ@8/``>,S,S-QX'`#\9F9\;&;F`'C,X'`<S'@`_+0P
+M,#`P>`#,S,S,S,S\`,S,S,S,>#``QL;&UO[NQ@#&1&PX.&S&`,S,S'@P,'@`
+M_L:,&#)F_@!X8&!@8&!X`,!@,!@,!@(`>!@8&!@8>``0.&S&````````````
+M``#_,#`8`````````'@,?,Q\`&!@8'QF9GP```!XS,#,>``,#`Q\S,Q\````
+M>,S\P'@`.&Q@\&!@\````'S,S'P,^&!@?&9F9F8`,`!P,#`P>``,``P,#`QL
+M.&!@9FQX;&8`<#`P,#`P>````,S^_M;&````^,S,S,P```!XS,S,>````'QF
+M9GQ@8```?,S,?`P,``#<=F9@\````'S`>`SX`!`P?#`P-!@```#,S,S,?```
+M`,S,S'@P````QM;^_FP```#&;#ALQ@```,S,S'P,^```_)@P9/P`'#`PX#`P
+M'``8&!@`&!@8`.`P,!PP,.``=MP`````````$#ALQL;^`````/\`````&!@8
+M&!@8&!@````?&!@8&````/@8&!@8&!@8'P`````8&!CX`````!@8&!\8&!@8
+M&!@8^!@8&!@```#_&!@8&!@8&/\`````&!@8_Q@8&!C___\``````````/__
+M_______________P\/#P\/#P\`\/#P\/#P\/$4011!%$$415JE6J5:I5JMUW
+MW7?==]UW#AL;&!@8&!@``'Q\?'P````````8`````P(&!,QH.!``=MP`=MP`
+M```,&#!@,!@,`#`8#`8,&#```````$)^`!@8&!@8V-AP`#AL;#@````P2!`@
+M>````````#@X`````!@8`'X`&!@`_P#_`````#8V-C8V-C8V`!\8'Q@8&!@D
+M`#QF?F`\`````#\V-C8V`#\P-S8V-C8`^!CX&!@8&````/XV-C8V`/X&]C8V
+M-C88'Q@?`````#8V-C\`````-C<P/P`````8^!CX`````#8V-OX`````-O8&
+M_@`````8'Q@?&!@8&#8V-C<V-C8V-C<P-S8V-C88^!CX&!@8&&8`?F!\8'X`
+M-C8V]C8V-C8V]@;V-C8V-@#_`/\8&!@8````_S8V-C8`_P#W-C8V-AC_`/\`
+M````-C8V_P`````V]P#_`````!C_&/\8&!@8-C8V_S8V-C8V]P#W-C8V-CQ"
+MF:&AF4(\``#.V_O;S@```'@,?,QV```\8#QF9CP```!F9F9F?P,``#QL;&S^
+MQ@``/&9^8#P```!^V]M^&````'Y@8&!@````9CP8/&8```!F;GYV9@``&&9N
+M?G9F````9FQX;&8````>-F9F9@```,;^_M;&````9F9^9F8````\9F9F/```
+M`'YF9F9F````/F8^-F8```!\9F9\8````#QF8&8\````?A@8&!@```!F9CX&
+M/````-M^/'[;````?&9\9GP```!@8'QF?````,;&]M[V````/&8,9CP```#;
+MV]O;_P```'P&/@9\````V]O;V_\#``!F9CX&!@```.!@?&9\`,[;V_O;V\X`
+M'C9F9GYF9@!\8&!\9F9\`&9F9F9F9G\#.&QL;&QL_L9^8&!\8&!^`'[;V]M^
+M&!@`?F!@8&!@8`!F9CP8/&9F`&9F;GYV9F8`/&9N?G9F9@!F;'AP>&QF`!XV
+M9F9F9F8`QN[^_M;&Q@!F9F9^9F9F`#QF9F9F9CP`?F9F9F9F9@`^9F9F/C9F
+M`'QF9F9\8&``/&9@8&!F/`!^&!@8&!@8`&9F9CX&9CP`V]M^/'[;VP!\9F9\
+M9F9\`&!@8'QF9GP`QL;&]M[>]@`\9@8<!F8\`-O;V]O;V_\`>(P&/@:,>`#;
+7V]O;V]O_`V9F9CX&!@8`X&!@?&9F?``<
+`
+end
diff --git a/share/syscons/fonts/koi8b-8x16 b/share/syscons/fonts/koi8b-8x16
new file mode 100644
index 000000000000..1a34e5f090e3
--- /dev/null
+++ b/share/syscons/fonts/koi8b-8x16
Binary files differ
diff --git a/share/syscons/fonts/koi8b-8x16.fnt b/share/syscons/fonts/koi8b-8x16.fnt
new file mode 100644
index 000000000000..b64dc266e222
--- /dev/null
+++ b/share/syscons/fonts/koi8b-8x16.fnt
@@ -0,0 +1,95 @@
+begin 664 koi8b-8x16
+M``````````````!$`````````'Z!I8&!O9F!@7X```````!^_]O__\/G__]^
+M````````9O____]^?CP\&!@`````&!@\/'Y^_WY^/#P8&``````8/#P89O__
+M9A@\?@`````8&#P\?O___WX8/'X`````````&#P\/!@```````#______^?#
+MP\/G________`````#QF0D)"9CP``````/_____#F;V]O9G#______\````>
+M#AHR>,S,S,QX````````/&9F9F8\&'X8&````````#\S,S\P,#!P\.``````
+M``!_8V-_8V-C9^?FP```````&!C;/.?G/-L8&````````(#`X/C^_OC@P(``
+M```````"!@X^_OX^#@8"`````!@\?A@8&!@8&!@8&'X\&```9F9F9F9F9F9F
+M`&9F`````'_;V]O;VWL;&QL;&P````!\QF`X;,;&;#@,QGP`````````````
+M`/[^_O[^`````!@\?A@8&!@8?CP8?@```!@\?O\8&!@8&!@8&!@8&!@8&!@8
+M&!@8&!@8_WX\&`````````@,#O\.#`@````````````0,'#_<#`0````````
+M`````,#`P,#^_@`````````````D9O]F)````````````!`0.#A\?/[^````
+M``````#^_GQ\.#@0$````````````````````````````!@\/#P\&!@8&``8
+M&`````!C8\8`````````````````;&QL_OYL;&S^_FQL;````!A^V]OH>#P>
+M%]O;?A@8``#FINP,&!@P,&!NRLX`````.&QL;#@X;<W&QLMS`````!@8,```
+M```````````````,&!@P,#`P,#`P&!@,````,!@8#`P,#`P,#!@8,```````
+M`&9F//__/&9F````````````&!A^?A@8`````````````````````!@8,```
+M`````````'Y^````````````````````````&!@`````!@8,#!@8,#!@8,#`
+M`````'S&QL;.WO;FQL;&?``````8.'@8&!@8&!@8&'X`````/&;#PP,&#!@P
+M8,/_`````/[&#!@\!@,#`\-F/``````<'#P\;&S,S?\-#!X`````_L#`P/SF
+MPP,#PV8\`````#QFQL#\YL/#P\-F/`````#^Q@8,#!@8,#`P,#``````/&;#
+MPV8\9L/#PV8\`````#QFP\/#PV<_`V-F/```````````&!@`````&!@`````
+M`````!@8`````!@8,``````#!@P8,'`P&`P&`P``````````?GX`?GX`````
+M`````,!@,!@,!@P8,&#``````#QFP\,#!@P8&``8&````````'[#P]_;V][`
+MP'P`````$#A\[L;&QL;^QL;&`````/YC8V-C?F-C8V-C_@`````\9L/#P,#`
+MP,/#9CP`````_&9C8V-C8V-C8V;\`````/]C86!D?&1@8&%C_P````#_8V%@
+M9'QD8&!@8/@`````/&;#P\#`S\/#PV<]`````,;&QL;&_L;&QL;&Q@`````\
+M&!@8&!@8&!@8&#P`````#P8&!@8&!@;&QL9\`````.-C9F9L?&QF9F-CXP``
+M``#P8&!@8&!@8&!A8_\`````P^?__]O;V\/#P\/#`````,;&YN;V]M[>SL[&
+MQ@`````\9L/#P\/#P\/#9CP`````_F-C8V-C?F!@8&#P`````#QFP\/#P\/#
+MR\]^/`8'``#^8V-C8V-^;&9F9O<`````?L/#P,!^`P,#P\-^`````/_;F1@8
+M&!@8&!@8/`````#&QL;&QL;&QL;&QGP`````QL;&QL;&QL;&?#@0`````,/#
+MP\/;V]O;V_]F9@````#&QFQL.#@X.&QLQL8`````P\/#P^=^/!@8&!@\````
+M`/[&C`P8&#`P8&+&_@`````\,#`P,#`P,#`P,#P`````P,!@8#`P&!@,#`8&
+M`````#P,#`P,#`P,#`P,/``````8/&;#````````````````````````````
+M````_P```#`P&```````````````````````/`8^9F9F9CL`````X&!@8'YC
+M8V-C8V/>``````````!\QL#`P,#&?``````.!@8&?L;&QL;&QGL`````````
+M`'S&QO[`P,9\`````#QF9F#P8&!@8&!@\```````````>\;&QL;&QGX&QGP`
+MX&!@8'QF9F9F9F;F```````8&``X&!@8&!@8/```````!@8`#@8&!@8&!@9F
+M9CP`X&!@8&9F;'AL9F;F`````#@8&!@8&!@8&!@8/```````````YO_;V]O#
+MP\,``````````-QF9F9F9F9F``````````!\QL;&QL;&?```````````WF-C
+M8V-C8WY@8/```````'O&QL;&QL9^!@8/``````#><V-@8&!@\```````````
+M?,;`<!P&QGP``````!`P,/PP,#`P,#8<``````````#&QL;&QL;&>P``````
+M````QL;&QNY\.!```````````,/#V]O;V_]F``````````#&[GPX.'SNQ@``
+M````````QL;&QL;&QGX,&'```````/[&#!@P8,;^``````X8&!@8<'`8&!@8
+M#@`````8&!@8&```&!@8&!@`````<!@8&!@>'A@8&!AP``````!VW```````
+M````````````````$#ALQL;&_@```````````````/\`````````&!@8&!@8
+M&!@8&!@8&!@8&```````````'Q@8&!@8&!@``````````/@8&!@8&!@8&!@8
+M&!@8&!@?`````````!@8&!@8&!@8^``````````8&!@8&!@8&!\8&!@8&!@8
+M&!@8&!@8&!CX&!@8&!@8&```````````_Q@8&!@8&!@8&!@8&!@8&/\`````
+M````&!@8&!@8&!C_&!@8&!@8&/__________`````````````````````/__
+M______________________________#P\/#P\/#P\/#P\/#P\/`/#P\/#P\/
+M#P\/#P\/#P\/@A""$((0@A""$((0@A""$,,8PQC#&,,8PQC#&,,8PQC8@]H3
+MV(/:$]B#VA/8@]H3```.&QL8&!@8&!@8&!@8&`````!\?'Q\?'Q\````````
+M````````&!@```````````\,#`P,#`P,[&P\'```````````=MP`=MP`````
+M``````P8,&#`8#`8#`!\``````!@,!@,!@P8,&``?@````````````````!"
+M0GX````8&!@8&!@8&!@8V/AP```````X;&QL.`````````````!PB!!@B/@`
+M`````````````````````!@``````````````!@8`'Y^`!@8````````````
+M`/\`_P`````````V-C8V-C8V-C8V-C8V-C8V````````'Q@?&!@8&!@8&```
+M`,8``'S&_L#`QGP``````````````#\V-C8V-C8V````````/S`W-C8V-C8V
+M-@```````/@8^!@8&!@8&!@``````````/XV-C8V-C8V````````_@;V-C8V
+M-C8V-A@8&!@8&!\8'P`````````V-C8V-C8V-C\`````````-C8V-C8V-S`_
+M`````````!@8&!@8&/@8^``````````V-C8V-C8V-OX`````````-C8V-C8V
+M]@;^`````````!@8&!@8&!\8'Q@8&!@8&!@V-C8V-C8V-C<V-C8V-C8V-C8V
+M-C8V-S`W-C8V-C8V-A@8&!@8&/@8^!@8&!@8&!@``&QL`/YF8'Q@8&;^````
+M-C8V-C8V-C;V-C8V-C8V-C8V-C8V-O8&]C8V-C8V-C8```````#_`/\8&!@8
+M&!@8``````````#_-C8V-C8V-@```````/\`]S8V-C8V-C88&!@8&!C_`/\`
+M````````-C8V-C8V-C;_`````````#8V-C8V-O<`_P`````````8&!@8&!C_
+M&/\8&!@8&!@8-C8V-C8V-C;_-C8V-C8V-C8V-C8V-O<`]S8V-C8V-C8````\
+M0IFAH9E"/```````````````SMO;^]O;S@```````````'@,?,S,S'8`````
+M``(&/&!@?&9F9F8\````````````S,S,S,S,_@8&`````````!XV-F9F9O_#
+MPP````````!\QO[`P,9\```````````\&'[;V]O;?A@8/````````'XR,C`P
+M,'@```````````#&;#@X.&S&````````````QL;.UN;&Q@`````````X.,;&
+MSM;FQL8```````````#F;'AX;&;F````````````'C9F9F9F9@``````````
+M`,;N_O[6UL8```````````#&QL;^QL;&````````````?,;&QL;&?```````
+M`````/[&QL;&QL8```````````!^S,S\;,S.````````````W&9F9F9F?&!@
+M\````````'S&P,#`QGP```````````!^6A@8&!@\````````````QL;&QL9^
+M!@;&?````````-;65'Q4UM8```````````#\9F9\9F;\````````````\&!@
+M?&9F_````````````,;&QO;>WO8````````````\9@8,!F8\````````````
+MUM;6UM;6_@```````````#YG`Q\#9SX```````````#6UM;6UM;^`P,`````
+M````QL;&QGX&!@```````````/BP,#XS,WX```````#.V]O;^]O;V]O.````
+M````$#ALQL;^QL;&Q@```````/YB8F!\9F9F9OP```````#,S,S,S,S,S,S^
+M!@8`````'C9F9F9F9F9F_\.!`````/YF8FAX:&!B9OX``````#P8?MO;V]O;
+M?A@\````````_F)B8&!@8&!@\````````,;&;'PX.'QLQL8```````#&QL[.
+MUN;FQL;&`````#@XQL;.SM;FYL;&Q@```````.9F;&QX>&QL9N8````````>
+M-F;&QL;&QL;&````````QN[^_M;&QL;&Q@```````,;&QL;^QL;&QL8`````
+M``!\QL;&QL;&QL9\````````_L;&QL;&QL;&Q@```````#]F9F8^/F9F9N<`
+M``````#\9F9F?&!@8&#P````````/&;"P,#`P,)F/````````'Y:&!@8&!@8
+M&#P```````#&QL;&QGX&!L9\````````UM945'Q\5-;6U@```````/QF9F9\
+M9F9F9OP```````#P8&!@?&9F9F;\````````P\/#P_/;V]O;\P```````'S&
+M!@8\!@8&QGP```````#;V]O;V]O;V]O_````````>,P&)CXF!@;,>```````
+M`-O;V]O;V]O;V_\#`P````#&QL;&QGX&!@8&````````^+`P,#PV-C8V?```
+!`-O;
+`
+end
diff --git a/share/syscons/fonts/koi8c-8x16.fnt b/share/syscons/fonts/koi8c-8x16.fnt
new file mode 100644
index 000000000000..4159dec1b11a
--- /dev/null
+++ b/share/syscons/fonts/koi8c-8x16.fnt
@@ -0,0 +1,95 @@
+begin 644 koi8c-8x16
+M````````````````````````?H&E@8&EF8&!?@```````'[_V___V^?__WX`
+M`````````&S^_O[^?#@0```````````0.'S^?#@0```````````8/#SGY^<8
+M&#P`````````&#Q^__]^&!@\`````````````!@\/!@```````#________G
+MP\/G________```````\9D)"9CP``````/______PYF]O9G#______\``!X&
+M#AIXS,S,S'@````````\9F9F9CP8?A@8````````/S,_,#`P,'#PX```````
+M`']C?V-C8V-GY^;`````````&!C;/.<\VQ@8``````"`P.#P^/[X\.#`@```
+M`````@8.'C[^/AX.!@(````````8/'X8&!A^/!@`````````9F9F9F9F9@!F
+M9@```````'_;V]M[&QL;&QL``````'S&8#ALQL9L.`S&?```````````````
+M_O[^_@```````!@\?A@8&'X\&'X````````8/'X8&!@8&!@8````````&!@8
+M&!@8&'X\&````````````!@,_@P8```````````````P8/Y@,```````````
+M`````,#`P/X``````````````"AL_FPH`````````````!`X.'Q\_OX`````
+M``````#^_GQ\.#@0```````````````````````````````8/#P\&!@8`!@8
+M``````!F9F8D``````````````````!L;/YL;&S^;&P`````&!A\QL+`?`8&
+MAL9\&!@```````#"Q@P8,&#&A@```````#AL;#AVW,S,S'8``````#`P,&``
+M````````````````#!@P,#`P,#`8#````````#`8#`P,#`P,&#``````````
+M``!F//\\9@``````````````&!A^&!@````````````````````8&!@P````
+M`````````/X````````````````````````8&````````````@8,&#!@P(``
+M```````X;,;&UM;&QFPX````````&#AX&!@8&!@8?@```````'S&!@P8,&#`
+MQOX```````!\Q@8&/`8&!L9\````````#!P\;,S^#`P,'@```````/[`P,#\
+M!@8&QGP````````X8,#`_,;&QL9\````````_L8&!@P8,#`P,````````'S&
+MQL9\QL;&QGP```````!\QL;&?@8&!@QX```````````8&````!@8````````
+M````&!@````8&#``````````!@P8,&`P&`P&````````````?@``?@``````
+M``````!@,!@,!@P8,&````````!\QL8,&!@8`!@8`````````'S&QM[>WMS`
+M?````````!`X;,;&_L;&QL8```````#\9F9F?&9F9F;\````````/&;"P,#`
+MP,)F/````````/AL9F9F9F9F;/@```````#^9F)H>&A@8F;^````````_F9B
+M:'AH8&!@\````````#QFPL#`WL;&9CH```````#&QL;&_L;&QL;&````````
+M/!@8&!@8&!@8/````````!X,#`P,#,S,S'@```````#F9F9L>'AL9F;F````
+M````\&!@8&!@8&)F_@```````,;N_O[6QL;&QL8```````#&YO;^WL[&QL;&
+M````````?,;&QL;&QL;&?````````/QF9F9\8&!@8/````````!\QL;&QL;&
+MUMY\#`X`````_&9F9GQL9F9FY@```````'S&QF`X#`;&QGP```````!^?EH8
+M&!@8&!@\````````QL;&QL;&QL;&?````````,;&QL;&QL9L.!````````#&
+MQL;&UM;6_NYL````````QL9L?#@X?&S&Q@```````&9F9F8\&!@8&#P`````
+M``#^QH8,&#!@PL;^````````/#`P,#`P,#`P/`````````"`P.!P.!P.!@(`
+M```````\#`P,#`P,#`P\`````!`X;,8`````````````````````````````
+M````_P``,#`8````````````````````````>`Q\S,S,=@```````.!@8'AL
+M9F9F9GP```````````!\QL#`P,9\````````'`P,/&S,S,S,=@``````````
+M`'S&_L#`QGP````````X;&1@\&!@8&#P````````````=LS,S,S,?`S,>```
+M`.!@8&QV9F9F9N8````````8&``X&!@8&!@\````````!@8`#@8&!@8&!F9F
+M/````.!@8&9L>'AL9N8````````X&!@8&!@8&!@\````````````[/[6UM;6
+MQ@```````````-QF9F9F9F8```````````!\QL;&QL9\````````````W&9F
+M9F9F?&!@\````````';,S,S,S'P,#!X```````#<=F9@8&#P````````````
+M?,9@.`S&?````````!`P,/PP,#`P-AP```````````#,S,S,S,QV````````
+M````9F9F9F8\&````````````,;&UM;6_FP```````````#&;#@X.&S&````
+M````````QL;&QL;&?@8,^````````/[,&#!@QOX````````.&!@8<!@8&!@.
+M````````&!@8&``8&!@8&````````'`8&!@.&!@8&'````````!VW```````
+M```````````````0.&S&QL;^````````````````_P``````````&!@8&!@8
+M&!@8&!@8&!@8&``````````?&!@8&!@8&!@`````````^!@8&!@8&!@8&!@8
+M&!@8&!\``````````!@8&!@8&!CX```````````8&!@8&!@8'Q@8&!@8&!@8
+M&!@8&!@8&/@8&!@8&!@8&`````````#_&!@8&!@8&!@8&!@8&!@8_P``````
+M````&!@8&!@8&/\8&!@8&!@8&/________\`````````````````````____
+M______________________________#P\/#P\/#P\/#P\/#P\/`/#P\/#P\/
+M#P\/#P\/#P\/$4011!%$$4011!%$$4011%6J5:I5JE6J5:I5JE6J5:K==]UW
+MW7?==]UWW7?==]UW```.&QL8&!@8&!@8&!@8&`````!\?'Q\?'Q\````````
+M````````&!@```````````\,#`P,#.QL;#P<````````````=MP`=MP`````
+M```````,&#!@,!@,`'X`````````,!@,!@P8,`!^````````````````````
+M```````8&!@8&!@8&-C8V'```````#AL;#@```````````````!PV#!@R/@`
+M`````````````````````!@``````````````!@8`'X`&!@`````````_L;&
+MQL;&QL;&QOX``````&#P8&QV9F9F9N8&##`````8$`#^PL#`P,#`````````
+M;&P`?,;&_,#&?````````````#QBP/C`8CP```````````!\QL!\!L9\````
+M````&!``>#`P,#`P>````````#8D`'@P,#`P,'@````````,"``\&!@8&!@8
+M&+!@````````/$Q,3DE)S@```````````,S,S/[)R<X```````!@\&!@?&9F
+M9F;F````````&!``QLS8^-C,Q@```````````O[`P,#`P,`````````D&`#&
+MQL;&QL9^!L9\````````QL;&QL;&_A`0.```````!XC+JZBKFX@``````&#X
+M8&!\=F9F9F;G`````!@0_F9B8&!@8&!@\`````!F9@#^QL#`\,#`QOX`````
+M```\9L#`Z-#`P&8\````````?,;&8#@,!L;&?``````,&``\&!@8&!@8&#P`
+M````-B0`/!@8&!@8&!@\``````P8`#P8&!@8&!@8&+!@`````'QL;&QN:6EI
+M:<X```````#,S,S,_LG)R<G.``````#P8&!@?&9F9F9FYP`````8$,;&S-CP
+M\-C,QL8``````@;^P,#`P,#`P,#``````&PXQL;&QL;&?@;&?````````,;&
+MQL;&QL;&QOX0$#@```````"<MK;VMK:<````````````?,;&QO[&Q@``````
+M`````/[`_,;&QOP```````````#,S,S,S,S^!@P`````````/&QL;&QL_L:"
+M`````````'S&QOS`QGP``````````!!\UM;6UM9\$#@`````````_L;"P,#`
+MP````````````,9L.#ALQL8```````````#&QL[>]N;&``````````P8QL;.
+MWO;FQ@```````````,;,V/C8S,8````````````^9F9F9F;&````````````
+MQN[^UL;&Q@```````````,;&QO[&QL8```````````!^QL;&QL;\````````
+M````_L;&QL;&Q@```````````'[&QGXV9L8```````````#\QL;&QL;\P,#`
+M````````?,;`P,+&?````````````'Y:&!@8&!@```````````#&QL;&QL9^
+M!L9\````````UM;6?-;6U@```````````/S&QOS&QOP```````````#`P/S&
+MQL;\````````````QL;FMK:VY@```````````'S&!AP&QGP```````````#6
+MUM;6UM;^````````````?,8&'@;&?````````````-;6UM;6UOX"!@0`````
+M``#&QL;&?@8&````````````X&!\9F9F?````````)RVMK;VMK:VMIP`````
+M```^9L;&QO[&QL;&````````_L#`P/S&QL;&_````````,S,S,S,S,S,S/X"
+M!@0````\;&QL;&QL;&S^QH(`````_L;`P/#`P,#&_@```````'S6UM;6UM9\
+M$#@```````#^QL#`P,#`P,#`````````QL9L.#ALQL;&Q@```````,;&QL;.
+MWO;FQL8```````S:QL;&SM[VYL;&````````QLS8\/#8S,;&Q@```````!XV
+M9L;&QL;&QL8```````#&QN[N_O[6UL;&````````QL;&QO[&QL;&Q@``````
+M`'[&QL;&QL;&QOP```````#^QL;&QL;&QL;&````````?L;&QL9^-F;&Q@``
+M`````/S&QL;&QOS`P,````````!\QL;`P,#`QL9\````````?GY:&!@8&!@8
+M&````````,;&QL;&QGX&QGP```````#6UM94?-;6UM;6````````_,;&QOS&
+MQL;&_````````,#`P,#\QL;&QOP```````#&QL;&YK:VMK;F````````?,8&
+M!AP&!L;&?````````-;6UM;6UM;6UOX```````!XS`8&'AX&!LQX````````
+MUM;6UM;6UM;6_@(&!````,;&QL;&?@8&!@8```````#@X&!@?&9F9F9\````
+!`-;6
+`
+end
diff --git a/share/syscons/keymaps/Makefile b/share/syscons/keymaps/Makefile
index 9ee24f47c9fa..2f9a66c65c8f 100644
--- a/share/syscons/keymaps/Makefile
+++ b/share/syscons/keymaps/Makefile
@@ -1,22 +1,30 @@
-KEYMAPS=danish.cp865.map danish.iso.map german.cp850.map german.iso.map \
- ru.koi8-r.map swedish.cp850.map swedish.iso.map uk.cp850.map uk.iso.map \
- us.iso.map
-KEYMAPS_MK = ${KEYMAPS:R:S/$/.mk/g}
+OLDKEYMAPS=danish.cp865.map danish.iso.map german.cp850.map german.iso.map \
+ ru.koi8-r.map swedish.cp850.map swedish.iso.map uk.cp850.map \
+ uk.iso.map us.iso.map
+
+KEYMAPS=danish.cp865.kbd danish.iso.kbd german.cp850.kbd german.iso.kbd \
+ swedish.cp850.kbd swedish.iso.kbd uk.cp850.kbd uk.iso.kbd \
+ us.iso.kbd ru.koi8-r.kbd
+
+KEYMAPS_MK = ${OLDKEYMAPS:R:S/$/.mk/g}
MAPSDIR = /usr/share/syscons/keymaps
NOMAN = noman
-CLEANFILES += ${KEYMAPS} ${KEYMAPS_MK}
+CLEANFILES += ${OLDKEYMAPS} ${KEYMAPS_MK}
-all: ${KEYMAPS}
+all: ${OLDKEYMAPS}
install:
+ cd ${.CURDIR}; \
install -c -o ${BINOWN} -g ${BINGRP} -m 444 ${KEYMAPS} \
${DESTDIR}${MAPSDIR}
+ install -c -o ${BINOWN} -g ${BINGRP} -m 444 ${OLDKEYMAPS} \
+ ${DESTDIR}${MAPSDIR}
clean:
- -rm -f ${KEYMAPS} ${KEYMAPS_MK} core *.o
+ -rm -f ${OLDKEYMAPS} ${KEYMAPS_MK} core *.o
-${KEYMAPS}: ${.TARGET:R}.mk
+${OLDKEYMAPS}: ${.TARGET:R}.mk
./${.TARGET:R}.mk ${.TARGET}
${KEYMAPS_MK}: ${.TARGET:R} mkkbdfil.c
diff --git a/share/syscons/keymaps/danish.cp865.kbd b/share/syscons/keymaps/danish.cp865.kbd
new file mode 100644
index 000000000000..38a856d95d08
--- /dev/null
+++ b/share/syscons/keymaps/danish.cp865.kbd
@@ -0,0 +1,109 @@
+# alt
+# scan cntrl alt alt cntrl lock
+# code base shift cntrl shift alt shift cntrl shift state
+# ------------------------------------------------------------------
+ 000 nop nop nop nop nop nop nop nop O
+ 001 esc esc nop nop esc esc nop nop O
+ 002 '1' '!' nop nop '1' '!' nop nop O
+ 003 '2' '"' nul nul '@' '"' nul nul O
+ 004 '3' '#' nop nop 156 '#' nop nop O
+ 005 '4' 175 nop nop '$' 175 nop nop O
+ 006 '5' '%' nop nop '5' '%' nop nop O
+ 007 '6' '&' nop nop '6' '&' nop nop O
+ 008 '7' '/' nop nop '{' '/' nop nop O
+ 009 '8' '(' esc esc '[' '(' esc esc O
+ 010 '9' ')' gs gs ']' ')' gs gs O
+ 011 '0' '=' nop nop '}' '=' nop nop O
+ 012 '+' '?' nop nop '+' '?' nop nop O
+ 013 ''' '`' nop nop '|' '`' nop nop O
+ 014 del del del del del del del del O
+ 015 ht bs nop nop ht bs nop nop O
+ 016 'q' 'Q' dc1 dc1 'q' 'Q' dc1 dc1 C
+ 017 'w' 'W' etb etb 'w' 'W' etb etb C
+ 018 'e' 'E' enq enq 'e' 'E' enq enq C
+ 019 'r' 'R' dc2 dc2 'r' 'R' dc2 dc2 C
+ 020 't' 'T' dc4 dc4 't' 'T' dc4 dc4 C
+ 021 'y' 'Y' em em 'y' 'Y' em em C
+ 022 'u' 'U' nak nak 'u' 'U' nak nak C
+ 023 'i' 'I' ht ht 'i' 'I' ht ht C
+ 024 'o' 'O' si si 'o' 'O' si si C
+ 025 'p' 'P' dle dle 'p' 'P' dle dle C
+ 026 134 143 nop nop 229 197 nop nop C
+ 027 '"' '^' rs rs '~' '^' rs rs O
+ 028 cr cr nl nl cr cr nl nl O
+ 029 lctrl lctrl lctrl lctrl lctrl lctrl lctrl lctrl O
+ 030 'a' 'A' soh soh 'a' 'A' soh soh C
+ 031 's' 'S' dc3 dc3 's' 'S' dc3 dc3 C
+ 032 'd' 'D' eot eot 'd' 'D' eot eot C
+ 033 'f' 'F' ack ack 'f' 'F' ack ack C
+ 034 'g' 'G' bel bel 'g' 'G' bel bel C
+ 035 'h' 'H' bs bs 'h' 'H' bs bs C
+ 036 'j' 'J' nl nl 'j' 'J' nl nl C
+ 037 'k' 'K' vt vt 'k' 'K' vt vt C
+ 038 'l' 'L' ff ff 'l' 'L' ff ff C
+ 039 145 146 nop nop 230 198 nop nop C
+ 040 155 157 nop nop 248 216 nop nop C
+ 041 171 '~' nop nop 171 '~' nop nop O
+ 042 lshift lshift lshift lshift lshift lshift lshift lshift O
+ 043 ''' '*' nop nop ''' '*' nop nop O
+ 044 'z' 'Z' sub sub 'z' 'Z' sub sub C
+ 045 'x' 'X' can can 'x' 'X' can can C
+ 046 'c' 'C' etx etx 'c' 'C' etx etx C
+ 047 'v' 'V' syn syn 'v' 'V' syn syn C
+ 048 'b' 'B' stx stx 'b' 'B' stx stx C
+ 049 'n' 'N' so so 'n' 'N' so so C
+ 050 'm' 'M' cr cr 'm' 'M' cr cr C
+ 051 ',' ';' nop nop ',' ';' nop nop O
+ 052 '.' ':' nop nop '.' ':' nop nop O
+ 053 '-' '_' ns ns '-' '_' ns ns O
+ 054 rshift rshift rshift rshift rshift rshift rshift rshift O
+ 055 '*' '*' fkey16 fkey16 '*' '*' fkey16 fkey16 O
+ 056 lalt lalt lalt lalt lalt lalt lalt lalt O
+ 057 ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' O
+ 058 clock clock clock clock clock clock clock clock O
+ 059 fkey01 fkey13 fkey25 fkey37 scr01 scr11 scr01 scr11 O
+ 060 fkey02 fkey14 fkey26 fkey38 scr02 scr12 scr02 scr12 O
+ 061 fkey03 fkey15 fkey27 fkey39 scr03 scr13 scr03 scr13 O
+ 062 fkey04 fkey16 fkey28 fkey40 scr04 scr14 scr04 scr14 O
+ 063 fkey05 fkey17 fkey29 fkey41 scr05 scr15 scr05 scr15 O
+ 064 fkey06 fkey18 fkey30 fkey42 scr06 scr16 scr06 scr16 O
+ 065 fkey07 fkey19 fkey31 fkey43 scr07 scr07 scr07 scr07 O
+ 066 fkey08 fkey20 fkey32 fkey44 scr08 scr08 scr08 scr08 O
+ 067 fkey09 fkey21 fkey33 fkey45 scr09 scr09 scr09 scr09 O
+ 068 fkey10 fkey22 fkey34 fkey46 scr10 scr10 scr10 scr10 O
+ 069 nlock nlock nlock nlock nlock nlock nlock nlock O
+ 070 slock slock slock slock slock slock slock slock O
+ 071 fkey49 '7' '7' '7' '7' '7' '7' '7' N
+ 072 fkey50 '8' '8' '8' '8' '8' '8' '8' N
+ 073 fkey51 '9' '9' '9' '9' '9' '9' '9' N
+ 074 fkey52 '/' '/' '/' '/' '/' '/' '/' N
+ 075 fkey53 '4' '4' '4' '4' '4' '4' '4' N
+ 076 fkey54 '5' '5' '5' '5' '5' '5' '5' N
+ 077 fkey55 '6' '6' '6' '6' '6' '6' '6' N
+ 078 fkey56 '+' '+' '+' '+' '+' '+' '+' N
+ 079 fkey57 '1' '1' '1' '1' '1' '1' '1' N
+ 080 fkey58 '2' '2' '2' '2' '2' '2' '2' N
+ 081 fkey59 '3' '3' '3' '3' '3' '3' '3' N
+ 082 fkey60 '0' '0' '0' '0' '0' '0' '0' N
+ 083 del '.' '.' '.' '.' '.' '.' '.' N
+ 084 nop nop nop nop nop nop nop nop O
+ 085 nop nop nop nop nop nop nop nop O
+ 086 '<' '>' fs fs '\' '>' fs fs O
+ 087 fkey11 fkey23 fkey35 fkey47 scr11 scr11 scr11 scr11 O
+ 088 fkey12 fkey24 fkey36 fkey48 scr12 scr12 scr12 scr12 O
+ 089 scr03 scr03 scr03 scr03 scr03 scr03 scr03 scr03 N
+ 090 rctrl rctrl rctrl rctrl rctrl rctrl rctrl rctrl O
+ 091 '/' '/' '/' '/' '/' '/' '/' '/' N
+ 092 nscr nop debug nop nop nop nop nop O
+ 093 ralt ralt ralt ralt ralt ralt ralt ralt O
+ 094 fkey49 fkey49 fkey49 fkey49 fkey49 fkey49 fkey49 fkey49 O
+ 095 fkey50 fkey50 fkey50 fkey50 fkey50 fkey50 fkey50 fkey50 O
+ 096 fkey51 fkey51 fkey51 fkey51 fkey51 fkey51 fkey51 fkey51 O
+ 097 fkey53 fkey53 fkey53 fkey53 fkey53 fkey53 fkey53 fkey53 O
+ 098 fkey55 fkey55 fkey55 fkey55 fkey55 fkey55 fkey55 fkey55 O
+ 099 fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 O
+ 100 fkey58 fkey58 fkey58 fkey58 fkey58 fkey58 fkey58 fkey58 O
+ 101 fkey59 fkey59 fkey59 fkey59 fkey59 fkey59 fkey59 fkey59 O
+ 102 fkey60 fkey60 fkey60 fkey60 fkey60 fkey60 fkey60 fkey60 O
+ 103 fkey54 fkey54 fkey54 fkey54 fkey54 fkey54 boot fkey54 O
+ 104 slock slock slock slock slock slock slock slock O
diff --git a/share/syscons/keymaps/danish.iso.kbd b/share/syscons/keymaps/danish.iso.kbd
new file mode 100644
index 000000000000..bfb291049033
--- /dev/null
+++ b/share/syscons/keymaps/danish.iso.kbd
@@ -0,0 +1,109 @@
+# alt
+# scan cntrl alt alt cntrl lock
+# code base shift cntrl shift alt shift cntrl shift state
+# ------------------------------------------------------------------
+ 000 nop nop nop nop nop nop nop nop O
+ 001 esc esc esc esc esc esc debug esc O
+ 002 '1' '!' nop nop '1' '!' nop nop O
+ 003 '2' '"' nul nul '@' '"' nul nul O
+ 004 '3' '#' nop nop 158 '#' nop nop O
+ 005 '4' 164 nop nop '$' 164 nop nop O
+ 006 '5' '%' nop nop '5' '%' nop nop O
+ 007 '6' '&' nop nop '6' '&' nop nop O
+ 008 '7' '/' nop nop '{' '/' nop nop O
+ 009 '8' '(' esc esc '[' '(' esc esc O
+ 010 '9' ')' gs gs ']' ')' gs gs O
+ 011 '0' '=' nop nop '}' '=' nop nop O
+ 012 '+' '?' nop nop '+' '?' nop nop O
+ 013 ''' '`' nop nop '|' '`' nop nop O
+ 014 del del bs bs del del bs bs O
+ 015 ht bs nop nop ht bs nop nop O
+ 016 'q' 'Q' dc1 dc1 'q' 'Q' dc1 dc1 C
+ 017 'w' 'W' etb etb 'w' 'W' etb etb C
+ 018 'e' 'E' enq enq 'e' 'E' enq enq C
+ 019 'r' 'R' dc2 dc2 'r' 'R' dc2 dc2 C
+ 020 't' 'T' dc4 dc4 't' 'T' dc4 dc4 C
+ 021 'y' 'Y' em em 'y' 'Y' em em C
+ 022 'u' 'U' nak nak 'u' 'U' nak nak C
+ 023 'i' 'I' ht ht 'i' 'I' ht ht C
+ 024 'o' 'O' si si 'o' 'O' si si C
+ 025 'p' 'P' dle dle 'p' 'P' dle dle C
+ 026 229 197 nop nop 134 143 nop nop C
+ 027 '"' '^' rs rs '~' '^' rs rs O
+ 028 cr cr nl nl cr cr nl nl O
+ 029 lctrl lctrl lctrl lctrl lctrl lctrl lctrl lctrl O
+ 030 'a' 'A' soh soh 'a' 'A' soh soh C
+ 031 's' 'S' dc3 dc3 's' 'S' dc3 dc3 C
+ 032 'd' 'D' eot eot 'd' 'D' eot eot C
+ 033 'f' 'F' ack ack 'f' 'F' ack ack C
+ 034 'g' 'G' bel bel 'g' 'G' bel bel C
+ 035 'h' 'H' bs bs 'h' 'H' bs bs C
+ 036 'j' 'J' nl nl 'j' 'J' nl nl C
+ 037 'k' 'K' vt vt 'k' 'K' vt vt C
+ 038 'l' 'L' ff ff 'l' 'L' ff ff C
+ 039 230 198 nop nop 145 146 nop nop C
+ 040 248 216 nop nop 155 157 nop nop C
+ 041 189 167 nop nop 189 167 nop nop O
+ 042 lshift lshift lshift lshift lshift lshift lshift lshift O
+ 043 ''' '*' nop nop ''' '*' nop nop O
+ 044 'z' 'Z' sub sub 'z' 'Z' sub sub C
+ 045 'x' 'X' can can 'x' 'X' can can C
+ 046 'c' 'C' etx etx 'c' 'C' etx etx C
+ 047 'v' 'V' syn syn 'v' 'V' syn syn C
+ 048 'b' 'B' stx stx 'b' 'B' stx stx C
+ 049 'n' 'N' so so 'n' 'N' so so C
+ 050 'm' 'M' cr cr 'm' 'M' cr cr C
+ 051 ',' ';' nop nop ',' ';' nop nop O
+ 052 '.' ':' nop nop '.' ':' nop nop O
+ 053 '-' '_' ns ns '-' '_' ns ns O
+ 054 rshift rshift rshift rshift rshift rshift rshift rshift O
+ 055 '*' '*' '*' '*' '*' '*' '*' '*' O
+ 056 lalt lalt lalt lalt lalt lalt lalt lalt O
+ 057 ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' O
+ 058 clock clock clock clock clock clock clock clock O
+ 059 fkey01 fkey13 fkey25 fkey37 scr01 scr11 scr01 scr11 O
+ 060 fkey02 fkey14 fkey26 fkey38 scr02 scr12 scr02 scr12 O
+ 061 fkey03 fkey15 fkey27 fkey39 scr03 scr13 scr03 scr13 O
+ 062 fkey04 fkey16 fkey28 fkey40 scr04 scr14 scr04 scr14 O
+ 063 fkey05 fkey17 fkey29 fkey41 scr05 scr15 scr05 scr15 O
+ 064 fkey06 fkey18 fkey30 fkey42 scr06 scr16 scr06 scr16 O
+ 065 fkey07 fkey19 fkey31 fkey43 scr07 scr07 scr07 scr07 O
+ 066 fkey08 fkey20 fkey32 fkey44 scr08 scr08 scr08 scr08 O
+ 067 fkey09 fkey21 fkey33 fkey45 scr09 scr09 scr09 scr09 O
+ 068 fkey10 fkey22 fkey34 fkey46 scr10 scr10 scr10 scr10 O
+ 069 nlock nlock nlock nlock nlock nlock nlock nlock O
+ 070 slock slock slock slock slock slock slock slock O
+ 071 fkey49 '7' '7' '7' '7' '7' '7' '7' N
+ 072 fkey50 '8' '8' '8' '8' '8' '8' '8' N
+ 073 fkey51 '9' '9' '9' '9' '9' '9' '9' N
+ 074 fkey52 '-' '-' '-' '-' '-' '-' '-' N
+ 075 fkey53 '4' '4' '4' '4' '4' '4' '4' N
+ 076 nop '5' '5' '5' '5' '5' '5' '5' N
+ 077 fkey55 '6' '6' '6' '6' '6' '6' '6' N
+ 078 fkey56 '+' '+' '+' '+' '+' '+' '+' N
+ 079 fkey57 '1' '1' '1' '1' '1' '1' '1' N
+ 080 fkey58 '2' '2' '2' '2' '2' '2' '2' N
+ 081 fkey59 '3' '3' '3' '3' '3' '3' '3' N
+ 082 fkey60 '0' '0' '0' '0' '0' '0' '0' N
+ 083 del '.' del del del del boot del N
+ 084 nop nop nop nop nop nop nop nop O
+ 085 nop nop nop nop nop nop nop nop O
+ 086 '<' '>' fs fs '\' '>' fs fs O
+ 087 fkey11 fkey23 fkey35 fkey47 scr11 scr11 scr11 scr11 O
+ 088 fkey12 fkey24 fkey36 fkey48 scr12 scr12 scr12 scr12 O
+ 089 cr cr cr cr cr cr cr cr N
+ 090 rctrl rctrl rctrl rctrl rctrl rctrl rctrl rctrl O
+ 091 '/' '/' '/' '/' '/' '/' '/' '/' O
+ 092 nscr nop debug nop nop nop nop nop O
+ 093 ralt ralt ralt ralt ralt ralt ralt ralt O
+ 094 fkey49 fkey49 fkey49 fkey49 fkey49 fkey49 fkey49 fkey49 O
+ 095 fkey50 fkey50 fkey50 fkey50 fkey50 fkey50 fkey50 fkey50 O
+ 096 fkey51 fkey51 fkey51 fkey51 fkey51 fkey51 fkey51 fkey51 O
+ 097 fkey53 fkey53 fkey53 fkey53 fkey53 fkey53 fkey53 fkey53 O
+ 098 fkey55 fkey55 fkey55 fkey55 fkey55 fkey55 fkey55 fkey55 O
+ 099 fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 O
+ 100 fkey58 fkey58 fkey58 fkey58 fkey58 fkey58 fkey58 fkey58 O
+ 101 fkey59 fkey59 fkey59 fkey59 fkey59 fkey59 fkey59 fkey59 O
+ 102 fkey60 fkey60 fkey60 fkey60 fkey60 fkey60 fkey60 fkey60 O
+ 103 fkey54 fkey54 fkey54 fkey54 fkey54 fkey54 boot fkey54 O
+ 104 slock slock slock slock slock slock slock slock O
diff --git a/share/syscons/keymaps/german.cp850.kbd b/share/syscons/keymaps/german.cp850.kbd
new file mode 100644
index 000000000000..11b2ac75fcb8
--- /dev/null
+++ b/share/syscons/keymaps/german.cp850.kbd
@@ -0,0 +1,109 @@
+# alt
+# scan cntrl alt alt cntrl lock
+# code base shift cntrl shift alt shift cntrl shift state
+# ------------------------------------------------------------------
+ 000 nop nop nop nop nop nop nop nop O
+ 001 esc esc esc esc esc esc esc esc O
+ 002 '1' '!' nop nop '1' '!' nop nop O
+ 003 '2' '"' nop nop 253 253 nop nop O
+ 004 '3' 245 nop nop 252 252 nop nop O
+ 005 '4' '$' nop nop '4' '$' nop nop O
+ 006 '5' '%' nop nop '5' '%' nop nop O
+ 007 '6' '&' nop nop '6' '&' nop nop O
+ 008 '7' '/' nop nop '{' '{' nop nop O
+ 009 '8' '(' esc esc '[' '[' esc esc O
+ 010 '9' ')' gs gs ']' ']' gs gs O
+ 011 '0' '=' nop nop '}' '}' nop nop O
+ 012 225 '?' fs fs '\' '\' fs fs O
+ 013 179 180 nop nop 179 180 nop nop O
+ 014 bs bs del del bs bs del del O
+ 015 ht btab nop nop ht btab nop nop O
+ 016 'q' 'Q' dc1 dc1 '@' '@' nul nul C
+ 017 'w' 'W' etb etb 'w' 'W' etb etb C
+ 018 'e' 'E' enq enq 'e' 'E' enq enq C
+ 019 'r' 'R' dc2 dc2 'r' 'R' dc2 dc2 C
+ 020 't' 'T' dc4 dc4 't' 'T' dc4 dc4 C
+ 021 'z' 'Z' sub sub 'z' 'Z' sub sub C
+ 022 'u' 'U' nak nak 'u' 'U' nak nak C
+ 023 'i' 'I' ht ht 'i' 'I' ht ht C
+ 024 'o' 'O' si si 'o' 'O' si si C
+ 025 'p' 'P' dle dle 'p' 'P' dle dle C
+ 026 129 154 nop nop 129 154 nop nop C
+ 027 '+' '*' nop nop '~' '~' nop nop O
+ 028 cr cr nl nl cr cr nl nl O
+ 029 lctrl lctrl lctrl lctrl lctrl lctrl lctrl lctrl O
+ 030 'a' 'A' soh soh 'a' 'A' soh soh C
+ 031 's' 'S' dc3 dc3 's' 'S' dc3 dc3 C
+ 032 'd' 'D' eot eot 'd' 'D' eot eot C
+ 033 'f' 'F' ack ack 'f' 'F' ack ack C
+ 034 'g' 'G' bel bel 'g' 'G' bel bel C
+ 035 'h' 'H' bs bs 'h' 'H' bs bs C
+ 036 'j' 'J' nl nl 'j' 'J' nl nl C
+ 037 'k' 'K' vt vt 'k' 'K' vt vt C
+ 038 'l' 'L' ff ff 'l' 'L' ff ff C
+ 039 148 153 nop nop 148 153 nop nop C
+ 040 132 142 nop nop 132 142 nop nop C
+ 041 '^' 248 rs rs '^' 248 rs rs O
+ 042 lshift lshift lshift lshift lshift lshift lshift lshift O
+ 043 '#' ''' nop nop '#' ''' nop nop O
+ 044 'y' 'Y' em em 'y' 'Y' em em C
+ 045 'x' 'X' can can 'x' 'X' can can C
+ 046 'c' 'C' etx etx 'c' 'C' etx etx C
+ 047 'v' 'V' syn syn 'v' 'V' syn syn C
+ 048 'b' 'B' stx stx 'b' 'B' stx stx C
+ 049 'n' 'N' so so 'n' 'N' so so C
+ 050 'm' 'M' cr cr 230 230 nop nop C
+ 051 ',' ';' nop nop ',' ';' nop nop O
+ 052 '.' ':' nop nop '.' ':' nop nop O
+ 053 '-' '_' ns ns '-' '_' ns ns O
+ 054 rshift rshift rshift rshift rshift rshift rshift rshift O
+ 055 '*' '*' nscr nscr '*' '*' nscr nscr O
+ 056 lalt lalt lalt lalt lalt lalt lalt lalt O
+ 057 ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' O
+ 058 clock clock clock clock clock clock clock clock O
+ 059 fkey01 fkey13 fkey25 fkey37 scr01 scr11 scr01 scr11 O
+ 060 fkey02 fkey14 fkey26 fkey38 scr02 scr12 scr02 scr12 O
+ 061 fkey03 fkey15 fkey27 fkey39 scr03 scr13 scr03 scr13 O
+ 062 fkey04 fkey16 fkey28 fkey40 scr04 scr14 scr04 scr14 O
+ 063 fkey05 fkey17 fkey29 fkey41 scr05 scr15 scr05 scr15 O
+ 064 fkey06 fkey18 fkey30 fkey42 scr06 scr16 scr06 scr16 O
+ 065 fkey07 fkey19 fkey31 fkey43 scr07 scr07 scr07 scr07 O
+ 066 fkey08 fkey20 fkey32 fkey44 scr08 scr08 scr08 scr08 O
+ 067 fkey09 fkey21 fkey33 fkey45 scr09 scr09 scr09 scr09 O
+ 068 fkey10 fkey22 fkey34 fkey46 scr10 scr10 scr10 scr10 O
+ 069 nlock nlock dc3 dc3 nlock nlock dc3 dc3 O
+ 070 slock slock del del slock slock del del O
+ 071 fkey49 '7' '7' '7' '7' '7' '7' '7' N
+ 072 fkey50 '8' '8' '8' '8' '8' '8' '8' N
+ 073 fkey51 '9' '9' '9' '9' '9' '9' '9' N
+ 074 fkey52 '-' '-' '-' '-' '-' '-' '-' N
+ 075 fkey53 '4' '4' '4' '4' '4' '4' '4' N
+ 076 fkey54 '5' '5' '5' '5' '5' '5' '5' N
+ 077 fkey55 '6' '6' '6' '6' '6' '6' '6' N
+ 078 fkey56 '+' '+' '+' '+' '+' '+' '+' N
+ 079 fkey57 '1' '1' '1' '1' '1' '1' '1' N
+ 080 fkey58 '2' '2' '2' '2' '2' '2' '2' N
+ 081 fkey59 '3' '3' '3' '3' '3' '3' '3' N
+ 082 fkey60 '0' '0' '0' '0' '0' '0' '0' N
+ 083 del ',' del del del del del del N
+ 084 ns ns ns ns ns ns ns ns O
+ 085 nop nop nop nop nop nop nop nop O
+ 086 '<' '>' nop nop '|' '|' nop nop O
+ 087 fkey11 fkey23 fkey35 fkey47 scr11 scr11 scr11 scr11 O
+ 088 fkey12 fkey24 fkey36 fkey48 scr12 scr12 scr12 scr12 O
+ 089 scr03 scr03 scr03 scr03 scr03 scr03 scr03 scr03 N
+ 090 rctrl rctrl rctrl rctrl rctrl rctrl rctrl rctrl O
+ 091 '/' '/' '/' '/' '/' '/' '/' '/' N
+ 092 nscr nop debug nop nop nop nop nop O
+ 093 ralt ralt ralt ralt ralt ralt ralt ralt O
+ 094 fkey49 fkey49 fkey49 fkey49 fkey49 fkey49 fkey49 fkey49 O
+ 095 fkey50 fkey50 fkey50 fkey50 fkey50 fkey50 fkey50 fkey50 O
+ 096 fkey51 fkey51 fkey51 fkey51 fkey51 fkey51 fkey51 fkey51 O
+ 097 fkey53 fkey53 fkey53 fkey53 fkey53 fkey53 fkey53 fkey53 O
+ 098 fkey55 fkey55 fkey55 fkey55 fkey55 fkey55 fkey55 fkey55 O
+ 099 fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 O
+ 100 fkey58 fkey58 fkey58 fkey58 fkey58 fkey58 fkey58 fkey58 O
+ 101 fkey59 fkey59 fkey59 fkey59 fkey59 fkey59 fkey59 fkey59 O
+ 102 fkey60 fkey60 fkey60 fkey60 fkey60 fkey60 fkey60 fkey60 O
+ 103 fkey54 fkey54 fkey54 fkey54 fkey54 fkey54 boot fkey54 O
+ 104 slock slock slock slock slock slock slock slock O
diff --git a/share/syscons/keymaps/german.iso.kbd b/share/syscons/keymaps/german.iso.kbd
new file mode 100644
index 000000000000..acbfa39f4941
--- /dev/null
+++ b/share/syscons/keymaps/german.iso.kbd
@@ -0,0 +1,109 @@
+# alt
+# scan cntrl alt alt cntrl lock
+# code base shift cntrl shift alt shift cntrl shift state
+# ------------------------------------------------------------------
+ 000 nop nop nop nop nop nop nop nop O
+ 001 esc esc esc esc esc esc esc esc O
+ 002 '1' '!' nop nop '`' '`' nop nop O
+ 003 '2' '"' nul nul '@' '@' nul nul O
+ 004 '3' 167 nop nop '#' '#' nop nop O
+ 005 '4' '$' nop nop '4' '$' nop nop O
+ 006 '5' '%' nop nop '5' '%' nop nop O
+ 007 '6' '&' rs rs '^' '^' rs rs O
+ 008 '7' '/' esc esc '[' '[' esc esc O
+ 009 '8' '(' nop nop '8' '(' nop nop O
+ 010 '9' ')' gs gs ']' ']' gs gs O
+ 011 '0' '=' nop nop '{' '{' nop nop O
+ 012 223 '?' nop nop '|' '|' nop nop O
+ 013 146 147 nop nop ''' '`' nop nop O
+ 014 bs bs del del bs bs del del O
+ 015 ht btab nop nop ht btab nop nop O
+ 016 'q' 'Q' dc1 dc1 'q' 'Q' dc1 dc1 C
+ 017 'w' 'W' etb etb 'w' 'W' etb etb C
+ 018 'e' 'E' enq enq 'e' 'E' enq enq C
+ 019 'r' 'R' dc2 dc2 'r' 'R' dc2 dc2 C
+ 020 't' 'T' dc4 dc4 't' 'T' dc4 dc4 C
+ 021 'z' 'Z' sub sub 'z' 'Z' sub sub C
+ 022 'u' 'U' nak nak 'u' 'U' nak nak C
+ 023 'i' 'I' ht ht 'i' 'I' ht ht C
+ 024 'o' 'O' si si 'o' 'O' si si C
+ 025 'p' 'P' dle dle 'p' 'P' dle dle C
+ 026 252 220 esc esc '[' '{' esc esc C
+ 027 '+' '*' gs gs ']' '}' gs gs O
+ 028 cr cr nl nl cr cr nl nl O
+ 029 lctrl lctrl lctrl lctrl lctrl lctrl lctrl lctrl O
+ 030 'a' 'A' soh soh 'a' 'A' soh soh C
+ 031 's' 'S' dc3 dc3 's' 'S' dc3 dc3 C
+ 032 'd' 'D' eot eot 'd' 'D' eot eot C
+ 033 'f' 'F' ack ack 'f' 'F' ack ack C
+ 034 'g' 'G' bel bel 'g' 'G' bel bel C
+ 035 'h' 'H' bs bs 'h' 'H' bs bs C
+ 036 'j' 'J' nl nl 'j' 'J' nl nl C
+ 037 'k' 'K' vt vt 'k' 'K' vt vt C
+ 038 'l' 'L' ff ff 'l' 'L' ff ff C
+ 039 246 214 nop nop 246 214 nop nop C
+ 040 228 196 nop nop 228 196 nop nop C
+ 041 '<' '>' fs fs '\' '|' fs fs O
+ 042 lshift lshift lshift lshift lshift lshift lshift lshift O
+ 043 '#' '^' rs rs '`' '~' rs rs O
+ 044 'y' 'Y' em em 'y' 'Y' em em C
+ 045 'x' 'X' can can 'x' 'X' can can C
+ 046 'c' 'C' etx etx 'c' 'C' etx etx C
+ 047 'v' 'V' syn syn 'v' 'V' syn syn C
+ 048 'b' 'B' stx stx 'b' 'B' stx stx C
+ 049 'n' 'N' so so 'n' 'N' so so C
+ 050 'm' 'M' cr cr 'm' 'M' cr cr C
+ 051 ',' ';' nop nop ',' ';' nop nop O
+ 052 '.' ':' nop nop '.' ':' nop nop O
+ 053 '-' '_' ns ns '-' '_' ns ns O
+ 054 rshift rshift rshift rshift rshift rshift rshift rshift O
+ 055 '*' '*' nscr nscr '*' '*' nscr nscr O
+ 056 lalt lalt lalt lalt lalt lalt lalt lalt O
+ 057 ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' O
+ 058 clock clock clock clock clock clock clock clock O
+ 059 fkey01 fkey13 fkey25 fkey37 scr01 scr11 scr01 scr11 O
+ 060 fkey02 fkey14 fkey26 fkey38 scr02 scr12 scr02 scr12 O
+ 061 fkey03 fkey15 fkey27 fkey39 scr03 scr13 scr03 scr13 O
+ 062 fkey04 fkey16 fkey28 fkey40 scr04 scr14 scr04 scr14 O
+ 063 fkey05 fkey17 fkey29 fkey41 scr05 scr15 scr05 scr15 O
+ 064 fkey06 fkey18 fkey30 fkey42 scr06 scr16 scr06 scr16 O
+ 065 fkey07 fkey19 fkey31 fkey43 scr07 scr07 scr07 scr07 O
+ 066 fkey08 fkey20 fkey32 fkey44 scr08 scr08 scr08 scr08 O
+ 067 fkey09 fkey21 fkey33 fkey45 scr09 scr09 scr09 scr09 O
+ 068 fkey10 fkey22 fkey34 fkey46 scr10 scr10 scr10 scr10 O
+ 069 nlock nlock dc3 dc3 nlock nlock dc3 dc3 O
+ 070 slock slock del del slock slock del del O
+ 071 fkey49 '7' '7' '7' '7' '7' '7' '7' N
+ 072 fkey50 '8' '8' '8' '8' '8' '8' '8' N
+ 073 fkey51 '9' '9' '9' '9' '9' '9' '9' N
+ 074 fkey52 '-' ns ns '-' '-' '-' '-' N
+ 075 fkey53 '4' '4' '4' '4' '4' '4' '4' N
+ 076 fkey54 '5' '5' '5' '5' '5' '5' '5' N
+ 077 fkey55 '6' rs rs '6' '6' '6' '6' N
+ 078 fkey56 '+' '+' '+' '+' '+' '+' '+' N
+ 079 fkey57 '1' '1' '1' '1' '1' '1' '1' N
+ 080 fkey58 '2' '2' '2' '2' '2' '2' '2' N
+ 081 fkey59 '3' '3' '3' '3' '3' '3' '3' N
+ 082 fkey60 '0' '0' '0' '0' '0' '0' '0' N
+ 083 del '.' del del del del del del N
+ 084 ns ns ns ns ns ns ns ns O
+ 085 nop nop nop nop nop nop nop nop O
+ 086 nop nop nop nop nop nop nop nop O
+ 087 fkey11 fkey23 fkey35 fkey47 scr11 scr11 scr11 scr11 O
+ 088 fkey12 fkey24 fkey36 fkey48 scr12 scr12 scr12 scr12 O
+ 089 scr03 scr03 scr03 scr03 scr03 scr03 scr03 scr03 N
+ 090 rctrl rctrl rctrl rctrl rctrl rctrl rctrl rctrl O
+ 091 '/' '/' '/' '/' '/' '/' '/' '/' N
+ 092 nscr nop debug nop nop nop nop nop O
+ 093 ralt ralt ralt ralt ralt ralt ralt ralt O
+ 094 fkey49 fkey49 fkey49 fkey49 fkey49 fkey49 fkey49 fkey49 O
+ 095 fkey50 fkey50 fkey50 fkey50 fkey50 fkey50 fkey50 fkey50 O
+ 096 fkey51 fkey51 fkey51 fkey51 fkey51 fkey51 fkey51 fkey51 O
+ 097 fkey53 fkey53 fkey53 fkey53 fkey53 fkey53 fkey53 fkey53 O
+ 098 fkey55 fkey55 fkey55 fkey55 fkey55 fkey55 fkey55 fkey55 O
+ 099 fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 O
+ 100 fkey58 fkey58 fkey58 fkey58 fkey58 fkey58 fkey58 fkey58 O
+ 101 fkey59 fkey59 fkey59 fkey59 fkey59 fkey59 fkey59 fkey59 O
+ 102 fkey60 fkey60 fkey60 fkey60 fkey60 fkey60 fkey60 fkey60 O
+ 103 fkey54 fkey54 fkey54 fkey54 fkey54 fkey54 boot fkey54 O
+ 104 slock slock slock slock slock slock slock slock O
diff --git a/share/syscons/keymaps/ru.koi8-r b/share/syscons/keymaps/ru.koi8-r
index 20f263655d85..1014854ed6dd 100644
--- a/share/syscons/keymaps/ru.koi8-r
+++ b/share/syscons/keymaps/ru.koi8-r
@@ -115,7 +115,7 @@ keymap_t keymap = { 0xe9, /* keys number */
/* sc=50 */ F(58), '2', '2', '2', SET8|'2', SET8|'2', SET8|'2', SET8|'2', 0x80, 0x02,
/* sc=51 */ F(59), '3', '3', '3', SET8|'3', SET8|'3', SET8|'3', SET8|'3', 0x80, 0x02,
/* sc=52 */ F(60), '0', '0', '0', SET8|'0', SET8|'0', SET8|'0', SET8|'0', 0x80, 0x02,
-/* sc=53 */ F(54), '.', 0x7F, 0x7F, SET8|0x7F, SET8|0x7F, RBT, SET8|0x7F, 0x82, 0x02,
+/* sc=53 */ F(54), '.', 0x7F, 0x7F, SET8|0x7F, SET8|0x7F, RBT, RBT, 0x83, 0x02,
/* sc=54 */ ALK, ALK, ALK, ALK, ALK, ALK, ALK, ALK, 0xFF, 0x00,
/* sc=55 */ NOP, NOP, NOP, NOP, NOP, NOP, NOP, NOP, 0xFF, 0x00,
/* sc=56 */ NOP, NOP, NOP, NOP, NOP, NOP, NOP, NOP, 0xFF, 0x00,
@@ -244,7 +244,7 @@ keymap_t keymap = { 0xe9, /* keys number */
/* sc=50 */ F(58), '2', '2', '2', SET8|'2', SET8|'2', SET8|'2', SET8|'2', 0x80, 0x02,
/* sc=51 */ F(59), '3', '3', '3', SET8|'3', SET8|'3', SET8|'3', SET8|'3', 0x80, 0x02,
/* sc=52 */ F(60), '0', '0', '0', SET8|'0', SET8|'0', SET8|'0', SET8|'0', 0x80, 0x02,
-/* sc=53 */ F(54), '.', 0x7F, 0x7F, SET8|0x7F, SET8|0x7F, RBT, SET8|0x7F, 0x82, 0x02,
+/* sc=53 */ F(54), '.', 0x7F, 0x7F, SET8|0x7F, SET8|0x7F, RBT, RBT, 0x83, 0x02,
/* sc=54 */ ALK, ALK, ALK, ALK, ALK, ALK, ALK, ALK, 0xFF, 0x00,
/* sc=55 */ NOP, NOP, NOP, NOP, NOP, NOP, NOP, NOP, 0xFF, 0x00,
/* sc=56 */ NOP, NOP, NOP, NOP, NOP, NOP, NOP, NOP, 0xFF, 0x00,
diff --git a/share/syscons/keymaps/ru.koi8-r.kbd b/share/syscons/keymaps/ru.koi8-r.kbd
new file mode 100644
index 000000000000..40e3b611c1c6
--- /dev/null
+++ b/share/syscons/keymaps/ru.koi8-r.kbd
@@ -0,0 +1,237 @@
+# alt
+# scan cntrl alt alt cntrl lock
+# code base shift cntrl shift alt shift cntrl shift state
+# ------------------------------------------------------------------
+ 000 nop nop nop nop nop nop nop nop O
+ 001 esc esc nop nop 155 155 debug nop O
+ 002 '1' '!' nop nop 177 161 nop nop O
+ 003 '2' '@' nul nul 178 192 128 128 O
+ 004 '3' '#' nop nop 179 163 nop nop O
+ 005 '4' '$' nop nop 180 164 nop nop O
+ 006 '5' '%' nop nop 181 165 nop nop O
+ 007 '6' '^' rs rs 182 222 158 158 O
+ 008 '7' '&' nop nop 183 166 nop nop O
+ 009 '8' '*' nop nop 184 170 nop nop O
+ 010 '9' '(' nop nop 185 168 nop nop O
+ 011 '0' ')' nop nop 176 169 nop nop O
+ 012 '-' '_' ns ns 173 223 159 159 O
+ 013 '=' '+' nop nop 189 171 nop nop O
+ 014 bs bs del del 136 136 255 255 O
+ 015 ht fkey16 nop nop 137 fkey16 nop nop O
+ 016 'q' 'Q' dc1 dc1 241 209 145 145 C
+ 017 'w' 'W' etb etb 247 215 151 151 C
+ 018 'e' 'E' enq enq 229 197 133 133 C
+ 019 'r' 'R' dc2 dc2 242 210 146 146 C
+ 020 't' 'T' dc4 dc4 244 212 148 148 C
+ 021 'y' 'Y' em em 249 217 153 153 C
+ 022 'u' 'U' nak nak 245 213 149 149 C
+ 023 'i' 'I' ht ht 233 201 137 137 C
+ 024 'o' 'O' si si 239 207 143 143 C
+ 025 'p' 'P' dle dle 240 208 144 144 C
+ 026 '[' '{' esc esc 219 251 155 155 O
+ 027 ']' '}' gs gs 221 253 157 157 O
+ 028 cr cr nl nl 141 141 138 138 O
+ 029 lctrl lctrl lctrl lctrl lctrl lctrl lctrl lctrl O
+ 030 'a' 'A' soh soh 225 193 129 129 C
+ 031 's' 'S' dc3 dc3 243 211 147 147 C
+ 032 'd' 'D' eot eot 228 196 132 132 C
+ 033 'f' 'F' ack ack 230 198 134 134 C
+ 034 'g' 'G' bel bel 231 199 135 135 C
+ 035 'h' 'H' bs bs 232 200 136 136 C
+ 036 'j' 'J' nl nl 234 202 138 138 C
+ 037 'k' 'K' vt vt 235 203 139 139 C
+ 038 'l' 'L' ff ff 236 204 140 140 C
+ 039 ';' ':' nop nop 187 186 nop nop O
+ 040 ''' '"' nop nop 167 162 nop nop O
+ 041 '`' '~' nop nop 224 254 nop nop O
+ 042 lshift lshift lshift lshift lshift lshift lshift lshift O
+ 043 '\' '|' fs fs 220 252 156 156 O
+ 044 'z' 'Z' sub sub 250 218 154 154 C
+ 045 'x' 'X' can can 248 216 152 152 C
+ 046 'c' 'C' etx etx 227 195 131 131 C
+ 047 'v' 'V' syn syn 246 214 150 150 C
+ 048 'b' 'B' stx stx 226 194 130 130 C
+ 049 'n' 'N' so so 238 206 142 142 C
+ 050 'm' 'M' cr cr 237 205 141 141 C
+ 051 ',' '<' nop nop 172 188 nop nop O
+ 052 '.' '>' nop nop 174 190 nop nop O
+ 053 '/' '?' nop nop 175 191 nop nop O
+ 054 rshift rshift rshift rshift rshift rshift rshift rshift O
+ 055 '*' '*' nl nl 170 170 138 138 O
+ 056 lalt lalt lalt lalt lalt lalt lalt lalt O
+ 057 ' ' ' ' ' ' ' ' 160 160 160 160 O
+ 058 alock clock clock clock clock clock clock clock O
+ 059 fkey01 fkey13 fkey25 fkey37 scr01 scr11 scr01 scr11 O
+ 060 fkey02 fkey14 fkey26 fkey38 scr02 scr12 scr02 scr12 O
+ 061 fkey03 fkey15 fkey27 fkey39 scr03 scr13 scr03 scr13 O
+ 062 fkey04 fkey16 fkey28 fkey40 scr04 scr14 scr04 scr14 O
+ 063 fkey05 fkey17 fkey29 fkey41 scr05 scr15 scr05 scr15 O
+ 064 fkey06 fkey18 fkey30 fkey42 scr06 scr16 scr06 scr16 O
+ 065 fkey07 fkey19 fkey31 fkey43 scr07 scr07 scr07 scr07 O
+ 066 fkey08 fkey20 fkey32 fkey44 scr08 scr08 scr08 scr08 O
+ 067 fkey09 fkey21 fkey33 fkey45 scr09 scr09 scr09 scr09 O
+ 068 fkey10 fkey22 fkey34 fkey46 scr10 scr10 scr10 scr10 O
+ 069 nlock nlock nlock nlock nlock nlock nlock nlock O
+ 070 slock slock slock slock slock slock slock slock O
+ 071 fkey49 '7' '7' '7' 183 183 183 183 N
+ 072 fkey50 '8' '8' '8' 184 184 184 184 N
+ 073 fkey51 '9' '9' '9' 185 185 185 185 N
+ 074 fkey52 '-' '-' '-' 173 173 173 173 N
+ 075 fkey53 '4' '4' '4' 180 180 180 180 N
+ 076 fkey48 '5' '5' '5' 181 181 181 181 N
+ 077 fkey55 '6' '6' '6' 182 182 182 182 N
+ 078 fkey56 '+' '+' '+' 171 171 171 171 N
+ 079 fkey57 '1' '1' '1' 177 177 177 177 N
+ 080 fkey58 '2' '2' '2' 178 178 178 178 N
+ 081 fkey59 '3' '3' '3' 179 179 179 179 N
+ 082 fkey60 '0' '0' '0' 176 176 176 176 N
+ 083 fkey54 '.' del del 255 255 boot boot N
+ 084 alock alock alock alock alock alock alock alock O
+ 085 nop nop nop nop nop nop nop nop O
+ 086 nop nop nop nop nop nop nop nop O
+ 087 fkey11 fkey23 fkey35 fkey47 scr11 scr11 scr11 scr11 O
+ 088 fkey12 fkey24 fkey36 fkey48 scr12 scr12 scr12 scr12 O
+ 089 cr cr nl nl 141 141 138 138 O
+ 090 rctrl rctrl rctrl rctrl rctrl rctrl rctrl rctrl O
+ 091 '/' '/' nop nop 175 175 nop nop O
+ 092 nscr nop debug nop nop nop nop nop O
+ 093 ralt ralt ralt ralt ralt ralt ralt ralt O
+ 094 fkey49 fkey49 fkey49 fkey49 fkey49 fkey49 fkey49 fkey49 O
+ 095 fkey50 fkey50 fkey50 fkey50 fkey50 fkey50 fkey50 fkey50 O
+ 096 fkey51 fkey51 fkey51 fkey51 fkey51 fkey51 fkey51 fkey51 O
+ 097 fkey53 fkey53 fkey53 fkey53 fkey53 fkey53 fkey53 fkey53 O
+ 098 fkey55 fkey55 fkey55 fkey55 fkey55 fkey55 fkey55 fkey55 O
+ 099 fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 O
+ 100 fkey58 fkey58 fkey58 fkey58 fkey58 fkey58 fkey58 fkey58 O
+ 101 fkey59 fkey59 fkey59 fkey59 fkey59 fkey59 fkey59 fkey59 O
+ 102 fkey60 fkey60 fkey60 fkey60 fkey60 fkey60 fkey60 fkey60 O
+ 103 fkey54 fkey54 del del 255 255 boot 255 O
+ 104 slock slock slock slock slock slock slock slock O
+ 105 nop nop nop nop nop nop nop nop O
+ 106 nop nop nop nop nop nop nop nop O
+ 107 nop nop nop nop nop nop nop nop O
+ 108 nop nop nop nop nop nop nop nop O
+ 109 nop nop nop nop nop nop nop nop O
+ 110 nop nop nop nop nop nop nop nop O
+ 111 nop nop nop nop nop nop nop nop O
+ 112 nop nop nop nop nop nop nop nop O
+ 113 nop nop nop nop nop nop nop nop O
+ 114 nop nop nop nop nop nop nop nop O
+ 115 nop nop nop nop nop nop nop nop O
+ 116 nop nop nop nop nop nop nop nop O
+ 117 nop nop nop nop nop nop nop nop O
+ 118 nop nop nop nop nop nop nop nop O
+ 119 nop nop nop nop nop nop nop nop O
+ 120 nop nop nop nop nop nop nop nop O
+ 121 nop nop nop nop nop nop nop nop O
+ 122 nop nop nop nop nop nop nop nop O
+ 123 nop nop nop nop nop nop nop nop O
+ 124 nop nop nop nop nop nop nop nop O
+ 125 nop nop nop nop nop nop nop nop O
+ 126 nop nop nop nop nop nop nop nop O
+ 127 nop nop nop nop nop nop nop nop O
+ 128 nop nop nop nop nop nop nop nop O
+ 129 esc esc nop nop 155 155 debug nop O
+ 130 '!' '1' nop nop 177 161 nop nop O
+ 131 '"' '2' nul nul 178 192 128 128 O
+ 132 ''' '3' nop nop 179 163 nop nop O
+ 133 ';' '4' nop nop 180 164 nop nop O
+ 134 ':' '5' nop nop 181 165 nop nop O
+ 135 ',' '6' rs rs 182 222 158 158 O
+ 136 '.' '7' nop nop 183 166 nop nop O
+ 137 '*' '8' nop nop 184 170 nop nop O
+ 138 '(' '9' nop nop 185 168 nop nop O
+ 139 ')' '0' nop nop 176 169 nop nop O
+ 140 '-' '_' ns ns 173 223 159 159 O
+ 141 '=' '+' nop nop 189 171 nop nop O
+ 142 bs bs del del 136 136 255 255 O
+ 143 ht fkey16 nop nop 137 fkey16 nop nop O
+ 144 202 234 dc1 dc1 241 209 145 145 C
+ 145 195 227 etb etb 247 215 151 151 C
+ 146 213 245 enq enq 229 197 133 133 C
+ 147 203 235 dc2 dc2 242 210 146 146 C
+ 148 197 229 dc4 dc4 244 212 148 148 C
+ 149 206 238 em em 249 217 153 153 C
+ 150 199 231 nak nak 245 213 149 149 C
+ 151 219 251 ht ht 233 201 137 137 C
+ 152 221 253 si si 239 207 143 143 C
+ 153 218 250 dle dle 240 208 144 144 C
+ 154 200 232 esc esc 219 251 155 155 C
+ 155 223 255 gs gs 221 253 157 157 C
+ 156 cr cr nl nl 141 141 138 138 O
+ 157 lctrl lctrl lctrl lctrl lctrl lctrl lctrl lctrl O
+ 158 198 230 soh soh 225 193 129 129 C
+ 159 217 249 dc3 dc3 243 211 147 147 C
+ 160 215 247 eot eot 228 196 132 132 C
+ 161 193 225 ack ack 230 198 134 134 C
+ 162 208 240 bel bel 231 199 135 135 C
+ 163 210 242 bs bs 232 200 136 136 C
+ 164 207 239 nl nl 234 202 138 138 C
+ 165 204 236 vt vt 235 203 139 139 C
+ 166 196 228 ff ff 236 204 140 140 C
+ 167 214 246 nop nop 187 186 nop nop C
+ 168 220 252 nop nop 167 162 nop nop C
+ 169 163 179 nop nop 224 254 nop nop C
+ 170 lshift lshift lshift lshift lshift lshift lshift lshift O
+ 171 '\' '|' fs fs 220 252 156 156 O
+ 172 209 241 sub sub 250 218 154 154 C
+ 173 222 254 can can 248 216 152 152 C
+ 174 211 243 etx etx 227 195 131 131 C
+ 175 205 237 syn syn 246 214 150 150 C
+ 176 201 233 stx stx 226 194 130 130 C
+ 177 212 244 so so 238 206 142 142 C
+ 178 216 248 cr cr 237 205 141 141 C
+ 179 194 226 nop nop 172 188 nop nop C
+ 180 192 224 nop nop 174 190 nop nop C
+ 181 '/' '?' nop nop 175 191 nop nop O
+ 182 rshift rshift rshift rshift rshift rshift rshift rshift O
+ 183 '*' '*' nl nl 170 170 138 138 O
+ 184 lalt lalt lalt lalt lalt lalt lalt lalt O
+ 185 ' ' ' ' ' ' ' ' 160 160 160 160 O
+ 186 alock clock clock clock clock clock clock clock O
+ 187 fkey01 fkey13 fkey25 fkey37 scr01 scr11 scr01 scr11 O
+ 188 fkey02 fkey14 fkey26 fkey38 scr02 scr12 scr02 scr12 O
+ 189 fkey03 fkey15 fkey27 fkey39 scr03 scr13 scr03 scr13 O
+ 190 fkey04 fkey16 fkey28 fkey40 scr04 scr14 scr04 scr14 O
+ 191 fkey05 fkey17 fkey29 fkey41 scr05 scr15 scr05 scr15 O
+ 192 fkey06 fkey18 fkey30 fkey42 scr06 scr16 scr06 scr16 O
+ 193 fkey07 fkey19 fkey31 fkey43 scr07 scr07 scr07 scr07 O
+ 194 fkey08 fkey20 fkey32 fkey44 scr08 scr08 scr08 scr08 O
+ 195 fkey09 fkey21 fkey33 fkey45 scr09 scr09 scr09 scr09 O
+ 196 fkey10 fkey22 fkey34 fkey46 scr10 scr10 scr10 scr10 O
+ 197 nlock nlock nlock nlock nlock nlock nlock nlock O
+ 198 slock slock slock slock slock slock slock slock O
+ 199 fkey49 '7' '7' '7' 183 183 183 183 N
+ 200 fkey50 '8' '8' '8' 184 184 184 184 N
+ 201 fkey51 '9' '9' '9' 185 185 185 185 N
+ 202 fkey52 '-' '-' '-' 173 173 173 173 N
+ 203 fkey53 '4' '4' '4' 180 180 180 180 N
+ 204 fkey48 '5' '5' '5' 181 181 181 181 N
+ 205 fkey55 '6' '6' '6' 182 182 182 182 N
+ 206 fkey56 '+' '+' '+' 171 171 171 171 N
+ 207 fkey57 '1' '1' '1' 177 177 177 177 N
+ 208 fkey58 '2' '2' '2' 178 178 178 178 N
+ 209 fkey59 '3' '3' '3' 179 179 179 179 N
+ 210 fkey60 '0' '0' '0' 176 176 176 176 N
+ 211 fkey54 '.' del del 255 255 boot boot N
+ 212 alock alock alock alock alock alock alock alock O
+ 213 nop nop nop nop nop nop nop nop O
+ 214 nop nop nop nop nop nop nop nop O
+ 215 fkey11 fkey23 fkey35 fkey47 scr11 scr11 scr11 scr11 O
+ 216 fkey12 fkey24 fkey36 fkey48 scr12 scr12 scr12 scr12 O
+ 217 cr cr nl nl 141 141 138 138 O
+ 218 rctrl rctrl rctrl rctrl rctrl rctrl rctrl rctrl O
+ 219 '/' '/' nop nop 175 175 nop nop O
+ 220 nscr nop debug nop nop nop nop nop O
+ 221 ralt ralt ralt ralt ralt ralt ralt ralt O
+ 222 fkey49 fkey49 fkey49 fkey49 fkey49 fkey49 fkey49 fkey49 O
+ 223 fkey50 fkey50 fkey50 fkey50 fkey50 fkey50 fkey50 fkey50 O
+ 224 fkey51 fkey51 fkey51 fkey51 fkey51 fkey51 fkey51 fkey51 O
+ 225 fkey53 fkey53 fkey53 fkey53 fkey53 fkey53 fkey53 fkey53 O
+ 226 fkey55 fkey55 fkey55 fkey55 fkey55 fkey55 fkey55 fkey55 O
+ 227 fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 O
+ 228 fkey58 fkey58 fkey58 fkey58 fkey58 fkey58 fkey58 fkey58 O
+ 229 fkey59 fkey59 fkey59 fkey59 fkey59 fkey59 fkey59 fkey59 O
+ 230 fkey60 fkey60 fkey60 fkey60 fkey60 fkey60 fkey60 fkey60 O
+ 231 fkey54 fkey54 del del 255 255 boot 255 O
+ 232 slock slock slock slock slock slock slock slock O
diff --git a/share/syscons/keymaps/swedish.cp850.kbd b/share/syscons/keymaps/swedish.cp850.kbd
new file mode 100644
index 000000000000..057bfa527600
--- /dev/null
+++ b/share/syscons/keymaps/swedish.cp850.kbd
@@ -0,0 +1,109 @@
+# alt
+# scan cntrl alt alt cntrl lock
+# code base shift cntrl shift alt shift cntrl shift state
+# ------------------------------------------------------------------
+ 000 nop nop nop nop nop nop nop nop O
+ 001 esc esc esc esc nop nop nop nop O
+ 002 '1' '!' nop nop '1' '!' nop nop O
+ 003 '2' '"' nul nul '@' '@' nul nul O
+ 004 '3' '#' nop nop 156 156 nop nop O
+ 005 '4' 207 nop nop '$' '$' nop nop O
+ 006 '5' '%' nop nop '5' '%' nop nop O
+ 007 '6' '&' nop nop '6' '&' nop nop O
+ 008 '7' '/' nop nop '{' '{' nop nop O
+ 009 '8' '(' esc esc '[' '[' esc esc O
+ 010 '9' ')' gs gs ']' ']' gs gs O
+ 011 '0' '=' nop nop '}' '}' nop nop O
+ 012 '+' '?' fs fs '\' '\' fs fs O
+ 013 179 180 nop nop 179 180 nop nop O
+ 014 bs bs del del bs bs del del O
+ 015 ht btab nop nop ht btab nop nop O
+ 016 'q' 'Q' dc1 dc1 'q' 'Q' dc1 dc1 C
+ 017 'w' 'W' etb etb 'w' 'W' etb etb C
+ 018 'e' 'E' enq enq 'e' 'E' enq enq C
+ 019 'r' 'R' dc2 dc2 'r' 'R' dc2 dc2 C
+ 020 't' 'T' dc4 dc4 't' 'T' dc4 dc4 C
+ 021 'y' 'Y' em em 'y' 'Y' em em C
+ 022 'u' 'U' nak nak 'u' 'U' nak nak C
+ 023 'i' 'I' ht ht 'i' 'I' ht ht C
+ 024 'o' 'O' si si 'o' 'O' si si C
+ 025 'p' 'P' dle dle 'p' 'P' dle dle C
+ 026 134 143 nop nop 134 143 nop nop C
+ 027 177 176 rs rs 178 178 nop nop O
+ 028 cr cr nl nl cr cr nl nl O
+ 029 lctrl lctrl lctrl lctrl lctrl lctrl lctrl lctrl O
+ 030 'a' 'A' soh soh 'a' 'A' soh soh C
+ 031 's' 'S' dc3 dc3 's' 'S' dc3 dc3 C
+ 032 'd' 'D' eot eot 'd' 'D' eot eot C
+ 033 'f' 'F' ack ack 'f' 'F' ack ack C
+ 034 'g' 'G' bel bel 'g' 'G' bel bel C
+ 035 'h' 'H' bs bs 'h' 'H' bs bs C
+ 036 'j' 'J' nl nl 'j' 'J' nl nl C
+ 037 'k' 'K' vt vt 'k' 'K' vt vt C
+ 038 'l' 'L' ff ff 'l' 'L' ff ff C
+ 039 148 153 nop nop 148 153 nop nop C
+ 040 132 142 nop nop 132 142 nop nop C
+ 041 245 171 nop nop 245 171 nop nop O
+ 042 lshift lshift lshift lshift lshift lshift lshift lshift O
+ 043 ''' '*' nop nop ''' '*' nop nop O
+ 044 'z' 'Z' sub sub 'z' 'Z' sub sub C
+ 045 'x' 'X' can can 'x' 'X' can can C
+ 046 'c' 'C' etx etx 'c' 'C' etx etx C
+ 047 'v' 'V' syn syn 'v' 'V' syn syn C
+ 048 'b' 'B' stx stx 'b' 'B' stx stx C
+ 049 'n' 'N' so so 'n' 'N' so so C
+ 050 'm' 'M' cr cr 'm' 'M' cr cr C
+ 051 ',' ';' nop nop ',' ';' nop nop O
+ 052 '.' ':' nop nop '.' ':' nop nop O
+ 053 '-' '_' ns ns '-' '_' ns ns O
+ 054 rshift rshift rshift rshift rshift rshift rshift rshift O
+ 055 '*' '*' nscr nscr '*' '*' nscr nscr O
+ 056 lalt lalt lalt lalt lalt lalt lalt lalt O
+ 057 ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' O
+ 058 clock clock clock clock clock clock clock clock O
+ 059 fkey01 fkey13 fkey25 fkey37 scr01 scr11 scr01 scr11 O
+ 060 fkey02 fkey14 fkey26 fkey38 scr02 scr12 scr02 scr12 O
+ 061 fkey03 fkey15 fkey27 fkey39 scr03 scr13 scr03 scr13 O
+ 062 fkey04 fkey16 fkey28 fkey40 scr04 scr14 scr04 scr14 O
+ 063 fkey05 fkey17 fkey29 fkey41 scr05 scr15 scr05 scr15 O
+ 064 fkey06 fkey18 fkey30 fkey42 scr06 scr16 scr06 scr16 O
+ 065 fkey07 fkey19 fkey31 fkey43 scr07 scr07 scr07 scr07 O
+ 066 fkey08 fkey20 fkey32 fkey44 scr08 scr08 scr08 scr08 O
+ 067 fkey09 fkey21 fkey33 fkey45 scr09 scr09 scr09 scr09 O
+ 068 fkey10 fkey22 fkey34 fkey46 scr10 scr10 scr10 scr10 O
+ 069 nlock nlock dc3 dc3 nlock nlock dc3 dc3 O
+ 070 slock slock del del slock slock del del O
+ 071 fkey49 '7' '7' '7' '7' '7' '7' '7' N
+ 072 fkey50 '8' '8' '8' '8' '8' '8' '8' N
+ 073 fkey51 '9' '9' '9' '9' '9' '9' '9' N
+ 074 fkey52 '-' '-' '-' '-' '-' '-' '-' N
+ 075 fkey53 '4' '4' '4' '4' '4' '4' '4' N
+ 076 fkey54 '5' '5' '5' '5' '5' '5' '5' N
+ 077 fkey55 '6' '6' '6' '6' '6' '6' '6' N
+ 078 fkey56 '+' '+' '+' '+' '+' '+' '+' N
+ 079 fkey57 '1' '1' '1' '1' '1' '1' '1' N
+ 080 fkey58 '2' '2' '2' '2' '2' '2' '2' N
+ 081 fkey59 '3' '3' '3' '3' '3' '3' '3' N
+ 082 fkey60 '0' '0' '0' '0' '0' '0' '0' N
+ 083 del '.' del del del del del del N
+ 084 ns ns ns ns ns ns ns ns O
+ 085 nop nop nop nop nop nop nop nop O
+ 086 '<' '>' nop nop '|' '|' nop nop O
+ 087 fkey11 fkey23 fkey35 fkey47 scr11 scr11 scr11 scr11 O
+ 088 fkey12 fkey24 fkey36 fkey48 scr12 scr12 scr12 scr12 O
+ 089 scr03 scr03 scr03 scr03 scr03 scr03 scr03 scr03 N
+ 090 rctrl rctrl rctrl rctrl rctrl rctrl rctrl rctrl O
+ 091 '/' '/' '/' '/' '/' '/' '/' '/' N
+ 092 nscr nop debug nop nop nop nop nop O
+ 093 ralt ralt ralt ralt ralt ralt ralt ralt O
+ 094 fkey49 fkey49 fkey49 fkey49 fkey49 fkey49 fkey49 fkey49 O
+ 095 fkey50 fkey50 fkey50 fkey50 fkey50 fkey50 fkey50 fkey50 O
+ 096 fkey51 fkey51 fkey51 fkey51 fkey51 fkey51 fkey51 fkey51 O
+ 097 fkey53 fkey53 fkey53 fkey53 fkey53 fkey53 fkey53 fkey53 O
+ 098 fkey55 fkey55 fkey55 fkey55 fkey55 fkey55 fkey55 fkey55 O
+ 099 fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 O
+ 100 fkey58 fkey58 fkey58 fkey58 fkey58 fkey58 fkey58 fkey58 O
+ 101 fkey59 fkey59 fkey59 fkey59 fkey59 fkey59 fkey59 fkey59 O
+ 102 fkey60 fkey60 fkey60 fkey60 fkey60 fkey60 fkey60 fkey60 O
+ 103 fkey54 fkey54 fkey54 fkey54 fkey54 fkey54 boot fkey54 O
+ 104 slock slock slock slock slock slock slock slock O
diff --git a/share/syscons/keymaps/swedish.iso b/share/syscons/keymaps/swedish.iso
index c6e36107b01c..24f53b22585f 100644
--- a/share/syscons/keymaps/swedish.iso
+++ b/share/syscons/keymaps/swedish.iso
@@ -11,26 +11,26 @@
* DK9210 Aalborg SO Phone: +45 9814 8076
*/
-keymap_t keymap = { 107, /* swedish iso8859 keymap */
+keymap_t keymap = { 105, /* swedish iso8859 keymap */
/* alt
* scan cntrl alt alt cntrl
* code base shift cntrl shift alt shift cntrl shift spcl flgs
* ---------------------------------------------------------------------------
*/
/* sc=00 */ NOP, NOP, NOP, NOP, NOP, NOP, NOP, NOP, 0xFF, 0x00,
-/* sc=01 */ 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x00, 0x00,
+/* sc=01 */ 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, DBG, 0x1B, 0x02, 0x00,
/* sc=02 */ '1', '!', NOP, NOP, NOP, NOP, NOP, NOP, 0x3F, 0x00,
-/* sc=03 */ '2', '"', NOP, NOP, NOP, '@', NOP, NOP, 0x3B, 0x00,
-/* sc=04 */ '3', 0xA3, NOP, NOP, NOP, '#', NOP, NOP, 0x3B, 0x00,
-/* sc=05 */ '4', '$', NOP, NOP, NOP, NOP, NOP, NOP, 0x3F, 0x00,
+/* sc=03 */ '2', '"', NOP, NOP, '@', NOP, NOP, NOP, 0x37, 0x00,
+/* sc=04 */ '3', '#', NOP, NOP, 0xA3, NOP, NOP, NOP, 0x37, 0x00,
+/* sc=05 */ '4', '$', NOP, NOP, 0xA4, NOP, NOP, NOP, 0x37, 0x00,
/* sc=06 */ '5', '%', NOP, NOP, NOP, NOP, NOP, NOP, 0x3F, 0x00,
-/* sc=07 */ '6', '&', 0x1E, NOP, NOP, '^', 0x1E, NOP, 0x19, 0x00,
-/* sc=08 */ '7', '/', NOP, NOP, NOP, '&', NOP, NOP, 0x3B, 0x00,
-/* sc=09 */ '8', '(', NOP, NOP, NOP, '*', NOP, NOP, 0x3B, 0x00,
-/* sc=0a */ '9', ')', NOP, NOP, NOP, '(', NOP, NOP, 0x3B, 0x00,
-/* sc=0b */ '0', '=', NOP, NOP, NOP, ')', NOP, NOP, 0x3B, 0x00,
-/* sc=0c */ '+', '?', 0x1F, 0x1F, '-', '_', 0x1F, 0x1F, 0x00, 0x00,
-/* sc=0d */ 0xB4, '`', NOP, NOP, '=', '+', NOP, NOP, 0x33, 0x00,
+/* sc=07 */ '6', '&', NOP, NOP, NOP, NOP, NOP, NOP, 0x3F, 0x00,
+/* sc=08 */ '7', '/', NOP, NOP, '{', NOP, NOP, NOP, 0x37, 0x00,
+/* sc=09 */ '8', '(', NOP, NOP, '[', NOP, NOP, NOP, 0x37, 0x00,
+/* sc=0a */ '9', ')', NOP, NOP, ']', NOP, NOP, NOP, 0x37, 0x00,
+/* sc=0b */ '0', '=', NOP, NOP, '}', NOP, NOP, NOP, 0x37, 0x00,
+/* sc=0c */ '+', '?', NOP, NOP, '\\', NOP, 0x1C, NOP, 0x35, 0x00,
+/* sc=0d */ 0x180, '`', NOP, NOP, NOP, NOP, NOP, NOP, 0x3F, 0x00,
/* sc=0e */ 0x08, 0x08, 0x7F, 0x7F, 0x08, 0x08, 0x7F, 0x7F, 0x00, 0x00,
/* sc=0f */ 0x09, 0x08, NOP, NOP, 0x09, 0x08, NOP, NOP, 0x77, 0x00,
/* sc=10 */ 'q', 'Q', 0x11, 0x11, 'q', 'Q', 0x11, 0x11, 0x00, 0x01,
@@ -43,8 +43,8 @@ keymap_t keymap = { 107, /* swedish iso8859 keymap */
/* sc=17 */ 'i', 'I', 0x09, 0x09, 'i', 'I', 0x09, 0x09, 0x00, 0x01,
/* sc=18 */ 'o', 'O', 0x0F, 0x0F, 'o', 'O', 0x0F, 0x0F, 0x00, 0x01,
/* sc=19 */ 'p', 'P', 0x10, 0x10, 'p', 'P', 0x10, 0x10, 0x00, 0x01,
-/* sc=1a */ 0xE5, 0xC5, NOP, NOP, '[', '{', 0x1B, NOP, 0x31, 0x01,
-/* sc=1b */ 0xA8, '^', NOP, NOP, ']', '}', 0x1D, NOP, 0x31, 0x00,
+/* sc=1a */ 0xE5, 0xC5, NOP, NOP, '}', ']', NOP, NOP, 0x33, 0x01,
+/* sc=1b */ 0xA8, '^', NOP, NOP, '~', NOP, NOP, NOP, 0x37, 0x00,
/* sc=1c */ 0x0D, 0x0D, 0x0A, 0x0A, 0x0D, 0x0D, 0x0A, 0x0A, 0x00, 0x00,
/* sc=1d */ LCTR, LCTR, LCTR, LCTR, LCTR, LCTR, LCTR, LCTR, 0xFF, 0x00,
/* sc=1e */ 'a', 'A', 0x01, 0x01, 'a', 'A', 0x01, 0x01, 0x00, 0x01,
@@ -56,11 +56,11 @@ keymap_t keymap = { 107, /* swedish iso8859 keymap */
/* sc=24 */ 'j', 'J', 0x0A, 0x0A, 'j', 'J', 0x0A, 0x0A, 0x00, 0x01,
/* sc=25 */ 'k', 'K', 0x0B, 0x0B, 'k', 'K', 0x0B, 0x0B, 0x00, 0x01,
/* sc=26 */ 'l', 'L', 0x0C, 0x0C, 'l', 'L', 0x0C, 0x0C, 0x00, 0x01,
-/* sc=27 */ 0xF8, 0xD8, NOP, NOP, ';', ':', NOP, NOP, 0x33, 0x01,
-/* sc=28 */ 0xE6, 0xC6, NOP, NOP, '\'', '"', NOP, NOP, 0x33, 0x01,
-/* sc=29 */ '<', '>', NOP, NOP, '\\', '|', 0x1C, NOP, 0x31, 0x00,
+/* sc=27 */ 0xF6, 0xD6, NOP, NOP, '|', '\\', NOP, NOP, 0x33, 0x01,
+/* sc=28 */ 0xE4, 0xC4, NOP, NOP, '{', '[', NOP, NOP, 0x33, 0x01,
+/* sc=29 */ 0xA7, 0xBD, NOP, NOP, '\\', '|', NOP, NOP, 0x33, 0x00,
/* sc=2a */ LSH, LSH, LSH, LSH, LSH, LSH, LSH, LSH, 0xFF, 0x00,
-/* sc=2b */ '\'', '*', NOP, NOP, '`', '~', NOP, NOP, 0x33, 0x00,
+/* sc=2b */ '\'', '*', NOP, NOP, NOP, NOP, NOP, NOP, 0x3F, 0x00,
/* sc=2c */ 'z', 'Z', 0x1A, 0x1A, 'z', 'Z', 0x1A, 0x1A, 0x00, 0x01,
/* sc=2d */ 'x', 'X', 0x18, 0x18, 'x', 'X', 0x18, 0x18, 0x00, 0x01,
/* sc=2e */ 'c', 'C', 0x03, 0x03, 'c', 'C', 0x03, 0x03, 0x00, 0x01,
@@ -100,28 +100,26 @@ keymap_t keymap = { 107, /* swedish iso8859 keymap */
/* sc=50 */ F(58), '2', '2', '2', '2', '2', '2', '2', 0x80, 0x02,
/* sc=51 */ F(59), '3', '3', '3', '3', '3', '3', '3', 0x80, 0x02,
/* sc=52 */ F(60), '0', '0', '0', '0', '0', '0', '0', 0x80, 0x02,
-/* sc=53 */ 0x7F, '.', 0x7F, 0x7F, 0x7F, 0x7F, 0x7F, 0x7F, 0x00, 0x02,
+/* sc=53 */ 0x7F, '.', 0x7F, 0x7F, 0x7F, 0x7F, RBT, 0x7F, 0x02, 0x02,
/* sc=54 */ 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x00, 0x00,
/* sc=55 */ NOP, NOP, NOP, NOP, NOP, NOP, NOP, NOP, 0xFF, 0x00,
-/* sc=56 */ NOP, NOP, NOP, NOP, NOP, NOP, NOP, NOP, 0xFF, 0x00,
+/* sc=56 */ '<', '>', NOP, NOP, '|', NOP, NOP, NOP, 0x37, 0x00,
/* sc=57 */ F(11), F(23), F(35), F(47), S(11), S(11), S(11), S(11), 0xFF, 0x00,
/* sc=58 */ F(12), F(24), F(36), F(48), S(12), S(12), S(12), S(12), 0xFF, 0x00,
/* sc=59 */ 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0xFF, 0x02,
/* sc=5a */ RCTR, RCTR, RCTR, RCTR, RCTR, RCTR, RCTR, RCTR, 0xFF, 0x00,
/* sc=5b */ '/', '/', '/', '/', '/', '/', '/', '/', 0x00, 0x02,
-/* sc=5c */ '*', '*', '*', '*', '*', '*', '*', '*', 0x00, 0x02,
+/* sc=5c */ NEXT, NOP, DBG, NOP, NOP, NOP, NOP, NOP, 0xFF, 0x00,
/* sc=5d */ RALT, RALT, RALT, RALT, RALT, RALT, RALT, RALT, 0xFF, 0x00,
-/* sc=5e */ F(49), '7', '7', '7', '7', '7', '7', '7', 0x80, 0x02,
-/* sc=5f */ F(50), '8', '8', '8', '8', '8', '8', '8', 0x80, 0x02,
-/* sc=60 */ F(51), '9', '9', '9', '9', '9', '9', '9', 0x80, 0x02,
-/* sc=61 */ F(53), '4', '4', '4', '4', '4', '4', '4', 0x80, 0x02,
-/* sc=62 */ F(55), '6', '6', '6', '6', '6', '6', '6', 0x80, 0x02,
-/* sc=63 */ F(57), '1', '1', '1', '1', '1', '1', '1', 0x80, 0x02,
-/* sc=64 */ F(58), '2', '2', '2', '2', '2', '2', '2', 0x80, 0x02,
-/* sc=65 */ F(59), '3', '3', '3', '3', '3', '3', '3', 0x80, 0x02,
-/* sc=66 */ F(60), '0', '0', '0', '0', '0', '0', '0', 0x80, 0x02,
-/* sc=67 */ F(54), '5', '5', '5', '5', '5', '5', '5', 0x80, 0x02,
+/* sc=5e */ F(49), F(49), F(49), F(49), F(49), F(49), F(49), F(49), 0xFF, 0x00,
+/* sc=5f */ F(50), F(50), F(50), F(50), F(50), F(50), F(50), F(50), 0xFF, 0x00,
+/* sc=60 */ F(51), F(51), F(51), F(51), F(51), F(51), F(51), F(51), 0xFF, 0x00,
+/* sc=61 */ F(53), F(53), F(53), F(53), F(53), F(53), F(53), F(53), 0xFF, 0x00,
+/* sc=62 */ F(55), F(55), F(55), F(55), F(55), F(55), F(55), F(55), 0xFF, 0x00,
+/* sc=63 */ F(57), F(57), F(57), F(57), F(57), F(57), F(57), F(57), 0xFF, 0x00,
+/* sc=64 */ F(58), F(58), F(58), F(58), F(58), F(58), F(58), F(58), 0xFF, 0x00,
+/* sc=65 */ F(59), F(59), F(59), F(59), F(59), F(59), F(59), F(59), 0xFF, 0x00,
+/* sc=66 */ F(60), F(60), F(60), F(60), F(60), F(60), F(60), F(60), 0xFF, 0x00,
+/* sc=67 */ F(54), F(54), F(54), F(54), F(54), F(54), RBT, F(54), 0xFF, 0x00,
/* sc=68 */ SLK, SLK, SLK, SLK, SLK, SLK, SLK, SLK, 0xFF, 0x00,
-/* sc=69 */ NOP, NOP, NOP, NOP, NOP, NOP, NOP, NOP, 0xFF, 0x00,
-/* sc=6a */ NOP, NOP, NOP, NOP, NOP, NOP, NOP, NOP, 0xFF, 0x00,
};
diff --git a/share/syscons/keymaps/swedish.iso.kbd b/share/syscons/keymaps/swedish.iso.kbd
new file mode 100644
index 000000000000..f8c348a00e49
--- /dev/null
+++ b/share/syscons/keymaps/swedish.iso.kbd
@@ -0,0 +1,109 @@
+# alt
+# scan cntrl alt alt cntrl lock
+# code base shift cntrl shift alt shift cntrl shift state
+# ------------------------------------------------------------------
+ 000 nop nop nop nop nop nop nop nop O
+ 001 esc esc esc esc esc esc debug esc O
+ 002 '1' '!' nop nop nop nop nop nop O
+ 003 '2' '"' nop nop '@' nop nop nop O
+ 004 '3' '#' nop nop 163 nop nop nop O
+ 005 '4' '$' nop nop 164 nop nop nop O
+ 006 '5' '%' nop nop nop nop nop nop O
+ 007 '6' '&' nop nop nop nop nop nop O
+ 008 '7' '/' nop nop '{' nop nop nop O
+ 009 '8' '(' nop nop '[' nop nop nop O
+ 010 '9' ')' nop nop ']' nop nop nop O
+ 011 '0' '=' nop nop '}' nop nop nop O
+ 012 '+' '?' nop nop '\' nop fs nop O
+ 013 128 '`' nop nop nop nop nop nop O
+ 014 bs bs del del bs bs del del O
+ 015 ht btab nop nop ht btab nop nop O
+ 016 'q' 'Q' dc1 dc1 'q' 'Q' dc1 dc1 C
+ 017 'w' 'W' etb etb 'w' 'W' etb etb C
+ 018 'e' 'E' enq enq 'e' 'E' enq enq C
+ 019 'r' 'R' dc2 dc2 'r' 'R' dc2 dc2 C
+ 020 't' 'T' dc4 dc4 't' 'T' dc4 dc4 C
+ 021 'y' 'Y' em em 'y' 'Y' em em C
+ 022 'u' 'U' nak nak 'u' 'U' nak nak C
+ 023 'i' 'I' ht ht 'i' 'I' ht ht C
+ 024 'o' 'O' si si 'o' 'O' si si C
+ 025 'p' 'P' dle dle 'p' 'P' dle dle C
+ 026 229 197 nop nop '}' ']' nop nop C
+ 027 168 '^' nop nop '~' nop nop nop O
+ 028 cr cr nl nl cr cr nl nl O
+ 029 lctrl lctrl lctrl lctrl lctrl lctrl lctrl lctrl O
+ 030 'a' 'A' soh soh 'a' 'A' soh soh C
+ 031 's' 'S' dc3 dc3 's' 'S' dc3 dc3 C
+ 032 'd' 'D' eot eot 'd' 'D' eot eot C
+ 033 'f' 'F' ack ack 'f' 'F' ack ack C
+ 034 'g' 'G' bel bel 'g' 'G' bel bel C
+ 035 'h' 'H' bs bs 'h' 'H' bs bs C
+ 036 'j' 'J' nl nl 'j' 'J' nl nl C
+ 037 'k' 'K' vt vt 'k' 'K' vt vt C
+ 038 'l' 'L' ff ff 'l' 'L' ff ff C
+ 039 246 214 nop nop '|' '\' nop nop C
+ 040 228 196 nop nop '{' '[' nop nop C
+ 041 167 189 nop nop '\' '|' nop nop O
+ 042 lshift lshift lshift lshift lshift lshift lshift lshift O
+ 043 ''' '*' nop nop nop nop nop nop O
+ 044 'z' 'Z' sub sub 'z' 'Z' sub sub C
+ 045 'x' 'X' can can 'x' 'X' can can C
+ 046 'c' 'C' etx etx 'c' 'C' etx etx C
+ 047 'v' 'V' syn syn 'v' 'V' syn syn C
+ 048 'b' 'B' stx stx 'b' 'B' stx stx C
+ 049 'n' 'N' so so 'n' 'N' so so C
+ 050 'm' 'M' cr cr 'm' 'M' cr cr C
+ 051 ',' ';' nop nop nop '<' nop nop O
+ 052 '.' ':' nop nop nop '>' nop nop O
+ 053 '-' '_' ns nop '/' '?' nop nop O
+ 054 rshift rshift rshift rshift rshift rshift rshift rshift O
+ 055 '*' '*' nscr nscr '*' '*' nscr nscr O
+ 056 lalt lalt lalt lalt lalt lalt lalt lalt O
+ 057 ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' O
+ 058 clock clock clock clock clock clock clock clock O
+ 059 fkey01 fkey13 fkey25 fkey37 scr01 scr11 scr01 scr11 O
+ 060 fkey02 fkey14 fkey26 fkey38 scr02 scr12 scr02 scr12 O
+ 061 fkey03 fkey15 fkey27 fkey39 scr03 scr13 scr03 scr13 O
+ 062 fkey04 fkey16 fkey28 fkey40 scr04 scr14 scr04 scr14 O
+ 063 fkey05 fkey17 fkey29 fkey41 scr05 scr15 scr05 scr15 O
+ 064 fkey06 fkey18 fkey30 fkey42 scr06 scr16 scr06 scr16 O
+ 065 fkey07 fkey19 fkey31 fkey43 scr07 scr07 scr07 scr07 O
+ 066 fkey08 fkey20 fkey32 fkey44 scr08 scr08 scr08 scr08 O
+ 067 fkey09 fkey21 fkey33 fkey45 scr09 scr09 scr09 scr09 O
+ 068 fkey10 fkey22 fkey34 fkey46 scr10 scr10 scr10 scr10 O
+ 069 nlock nlock dc3 dc3 nlock nlock dc3 dc3 O
+ 070 slock slock del del slock slock del del O
+ 071 fkey49 '7' '7' '7' '7' '7' '7' '7' N
+ 072 fkey50 '8' '8' '8' '8' '8' '8' '8' N
+ 073 fkey51 '9' '9' '9' '9' '9' '9' '9' N
+ 074 fkey52 '-' ns ns '-' '-' '-' '-' N
+ 075 fkey53 '4' '4' '4' '4' '4' '4' '4' N
+ 076 fkey54 '5' '5' '5' '5' '5' '5' '5' N
+ 077 fkey55 '6' rs rs '6' '6' '6' '6' N
+ 078 fkey56 '+' '+' '+' '+' '+' '+' '+' N
+ 079 fkey57 '1' '1' '1' '1' '1' '1' '1' N
+ 080 fkey58 '2' '2' '2' '2' '2' '2' '2' N
+ 081 fkey59 '3' '3' '3' '3' '3' '3' '3' N
+ 082 fkey60 '0' '0' '0' '0' '0' '0' '0' N
+ 083 del '.' del del del del boot del N
+ 084 ns ns ns ns ns ns ns ns O
+ 085 nop nop nop nop nop nop nop nop O
+ 086 '<' '>' nop nop '|' nop nop nop O
+ 087 fkey11 fkey23 fkey35 fkey47 scr11 scr11 scr11 scr11 O
+ 088 fkey12 fkey24 fkey36 fkey48 scr12 scr12 scr12 scr12 O
+ 089 scr03 scr03 scr03 scr03 scr03 scr03 scr03 scr03 N
+ 090 rctrl rctrl rctrl rctrl rctrl rctrl rctrl rctrl O
+ 091 '/' '/' '/' '/' '/' '/' '/' '/' N
+ 092 nscr nop debug nop nop nop nop nop O
+ 093 ralt ralt ralt ralt ralt ralt ralt ralt O
+ 094 fkey49 fkey49 fkey49 fkey49 fkey49 fkey49 fkey49 fkey49 O
+ 095 fkey50 fkey50 fkey50 fkey50 fkey50 fkey50 fkey50 fkey50 O
+ 096 fkey51 fkey51 fkey51 fkey51 fkey51 fkey51 fkey51 fkey51 O
+ 097 fkey53 fkey53 fkey53 fkey53 fkey53 fkey53 fkey53 fkey53 O
+ 098 fkey55 fkey55 fkey55 fkey55 fkey55 fkey55 fkey55 fkey55 O
+ 099 fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 O
+ 100 fkey58 fkey58 fkey58 fkey58 fkey58 fkey58 fkey58 fkey58 O
+ 101 fkey59 fkey59 fkey59 fkey59 fkey59 fkey59 fkey59 fkey59 O
+ 102 fkey60 fkey60 fkey60 fkey60 fkey60 fkey60 fkey60 fkey60 O
+ 103 fkey54 fkey54 fkey54 fkey54 fkey54 fkey54 boot fkey54 O
+ 104 slock slock slock slock slock slock slock slock O
diff --git a/share/syscons/keymaps/uk.cp850.kbd b/share/syscons/keymaps/uk.cp850.kbd
new file mode 100644
index 000000000000..f9728bf92f95
--- /dev/null
+++ b/share/syscons/keymaps/uk.cp850.kbd
@@ -0,0 +1,109 @@
+# alt
+# scan cntrl alt alt cntrl lock
+# code base shift cntrl shift alt shift cntrl shift state
+# ------------------------------------------------------------------
+ 000 nop nop nop nop nop nop nop nop O
+ 001 esc esc esc esc esc esc esc esc O
+ 002 '1' '!' nop nop '1' '!' nop nop O
+ 003 '2' '"' nop nop '2' '"' nop nop O
+ 004 '3' 156 nop nop '3' 156 nop nop O
+ 005 '4' '$' nop nop '4' '$' nop nop O
+ 006 '5' '%' nop nop '5' '%' nop nop O
+ 007 '6' '^' rs rs '6' '^' rs rs O
+ 008 '7' '&' nop nop '7' '&' nop nop O
+ 009 '8' '*' nop nop '8' '*' nop nop O
+ 010 '9' '(' nop nop '9' '(' nop nop O
+ 011 '0' ')' nop nop '0' ')' nop nop O
+ 012 '-' '_' ns ns '-' '_' ns ns O
+ 013 '=' '+' nop nop '=' '+' nop nop O
+ 014 bs bs del del bs bs del del O
+ 015 ht btab nop nop ht btab nop nop O
+ 016 'q' 'Q' dc1 dc1 'q' 'Q' dc1 dc1 C
+ 017 'w' 'W' etb etb 'w' 'W' etb etb C
+ 018 'e' 'E' enq enq 'e' 'E' enq enq C
+ 019 'r' 'R' dc2 dc2 'r' 'R' dc2 dc2 C
+ 020 't' 'T' dc4 dc4 't' 'T' dc4 dc4 C
+ 021 'y' 'Y' em em 'y' 'Y' em em C
+ 022 'u' 'U' nak nak 'u' 'U' nak nak C
+ 023 'i' 'I' ht ht 'i' 'I' ht ht C
+ 024 'o' 'O' si si 'o' 'O' si si C
+ 025 'p' 'P' dle dle 'p' 'P' dle dle C
+ 026 '[' '{' esc esc '[' '{' esc esc O
+ 027 ']' '}' gs gs ']' '}' gs gs O
+ 028 cr cr nl nl cr cr nl nl O
+ 029 lctrl lctrl lctrl lctrl lctrl lctrl lctrl lctrl O
+ 030 'a' 'A' soh soh 'a' 'A' soh soh C
+ 031 's' 'S' dc3 dc3 's' 'S' dc3 dc3 C
+ 032 'd' 'D' eot eot 'd' 'D' eot eot C
+ 033 'f' 'F' ack ack 'f' 'F' ack ack C
+ 034 'g' 'G' bel bel 'g' 'G' bel bel C
+ 035 'h' 'H' bs bs 'h' 'H' bs bs C
+ 036 'j' 'J' nl nl 'j' 'J' nl nl C
+ 037 'k' 'K' vt vt 'k' 'K' vt vt C
+ 038 'l' 'L' ff ff 'l' 'L' ff ff C
+ 039 ';' ':' nop nop ';' ':' nop nop O
+ 040 ''' '@' nul nul ''' '@' nul nul O
+ 041 '`' 170 nop nop '|' '|' nop nop O
+ 042 lshift lshift lshift lshift lshift lshift lshift lshift O
+ 043 '#' '~' nop nop '#' '~' nop nop O
+ 044 'z' 'Z' sub sub 'z' 'Z' sub sub C
+ 045 'x' 'X' can can 'x' 'X' can can C
+ 046 'c' 'C' etx etx 'c' 'C' etx etx C
+ 047 'v' 'V' syn syn 'v' 'V' syn syn C
+ 048 'b' 'B' stx stx 'b' 'B' stx stx C
+ 049 'n' 'N' so so 'n' 'N' so so C
+ 050 'm' 'M' cr cr 'm' 'M' cr cr C
+ 051 ',' '<' nop nop ',' '<' nop nop O
+ 052 '.' '>' nop nop '.' '>' nop nop O
+ 053 '/' '?' nop nop '/' '?' nop nop O
+ 054 rshift rshift rshift rshift rshift rshift rshift rshift O
+ 055 '*' '*' nscr nscr '*' '*' nscr nscr O
+ 056 lalt lalt lalt lalt lalt lalt lalt lalt O
+ 057 ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' O
+ 058 clock clock clock clock clock clock clock clock O
+ 059 fkey01 fkey13 fkey25 fkey37 scr01 scr11 scr01 scr11 O
+ 060 fkey02 fkey14 fkey26 fkey38 scr02 scr12 scr02 scr12 O
+ 061 fkey03 fkey15 fkey27 fkey39 scr03 scr13 scr03 scr13 O
+ 062 fkey04 fkey16 fkey28 fkey40 scr04 scr14 scr04 scr14 O
+ 063 fkey05 fkey17 fkey29 fkey41 scr05 scr15 scr05 scr15 O
+ 064 fkey06 fkey18 fkey30 fkey42 scr06 scr16 scr06 scr16 O
+ 065 fkey07 fkey19 fkey31 fkey43 scr07 scr07 scr07 scr07 O
+ 066 fkey08 fkey20 fkey32 fkey44 scr08 scr08 scr08 scr08 O
+ 067 fkey09 fkey21 fkey33 fkey45 scr09 scr09 scr09 scr09 O
+ 068 fkey10 fkey22 fkey34 fkey46 scr10 scr10 scr10 scr10 O
+ 069 nlock nlock dc3 dc3 nlock nlock dc3 dc3 O
+ 070 slock slock del del slock slock del del O
+ 071 fkey49 '7' '7' '7' '7' '7' '7' '7' N
+ 072 fkey50 '8' '8' '8' '8' '8' '8' '8' N
+ 073 fkey51 '9' '9' '9' '9' '9' '9' '9' N
+ 074 fkey52 '-' '-' '-' '-' '-' '-' '-' N
+ 075 fkey53 '4' '4' '4' '4' '4' '4' '4' N
+ 076 fkey54 '5' '5' '5' '5' '5' '5' '5' N
+ 077 fkey55 '6' '6' '6' '6' '6' '6' '6' N
+ 078 fkey56 '+' '+' '+' '+' '+' '+' '+' N
+ 079 fkey57 '1' '1' '1' '1' '1' '1' '1' N
+ 080 fkey58 '2' '2' '2' '2' '2' '2' '2' N
+ 081 fkey59 '3' '3' '3' '3' '3' '3' '3' N
+ 082 fkey60 '0' '0' '0' '0' '0' '0' '0' N
+ 083 del '.' del del del del del del N
+ 084 ns ns ns ns ns ns ns ns O
+ 085 nop nop nop nop nop nop nop nop O
+ 086 '\' '|' fs fs '\' '|' fs fs O
+ 087 fkey11 fkey23 fkey35 fkey47 scr11 scr11 scr11 scr11 O
+ 088 fkey12 fkey24 fkey36 fkey48 scr12 scr12 scr12 scr12 O
+ 089 scr03 scr03 scr03 scr03 scr03 scr03 scr03 scr03 N
+ 090 rctrl rctrl rctrl rctrl rctrl rctrl rctrl rctrl O
+ 091 '/' '/' '/' '/' '/' '/' '/' '/' N
+ 092 nscr nop debug nop nop nop nop nop O
+ 093 ralt ralt ralt ralt ralt ralt ralt ralt O
+ 094 fkey49 fkey49 fkey49 fkey49 fkey49 fkey49 fkey49 fkey49 O
+ 095 fkey50 fkey50 fkey50 fkey50 fkey50 fkey50 fkey50 fkey50 O
+ 096 fkey51 fkey51 fkey51 fkey51 fkey51 fkey51 fkey51 fkey51 O
+ 097 fkey53 fkey53 fkey53 fkey53 fkey53 fkey53 fkey53 fkey53 O
+ 098 fkey55 fkey55 fkey55 fkey55 fkey55 fkey55 fkey55 fkey55 O
+ 099 fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 O
+ 100 fkey58 fkey58 fkey58 fkey58 fkey58 fkey58 fkey58 fkey58 O
+ 101 fkey59 fkey59 fkey59 fkey59 fkey59 fkey59 fkey59 fkey59 O
+ 102 fkey60 fkey60 fkey60 fkey60 fkey60 fkey60 fkey60 fkey60 O
+ 103 fkey54 fkey54 fkey54 fkey54 fkey54 fkey54 boot fkey54 O
+ 104 slock slock slock slock slock slock slock slock O
diff --git a/share/syscons/keymaps/uk.iso.kbd b/share/syscons/keymaps/uk.iso.kbd
new file mode 100644
index 000000000000..4402e5fa5e3e
--- /dev/null
+++ b/share/syscons/keymaps/uk.iso.kbd
@@ -0,0 +1,109 @@
+# alt
+# scan cntrl alt alt cntrl lock
+# code base shift cntrl shift alt shift cntrl shift state
+# ------------------------------------------------------------------
+ 000 nop nop nop nop nop nop nop nop O
+ 001 esc esc esc esc esc esc esc esc O
+ 002 '1' '!' nop nop '`' '`' nop nop O
+ 003 '2' '"' nul nul '@' '@' nul nul O
+ 004 '3' 163 nop nop '#' '#' nop nop O
+ 005 '4' '$' nop nop '4' '$' nop nop O
+ 006 '5' '%' nop nop '5' '%' nop nop O
+ 007 '6' '^' rs rs '^' '^' rs rs O
+ 008 '7' '&' nop nop '[' '[' esc esc O
+ 009 '8' '*' nop nop '8' '*' nop nop O
+ 010 '9' '(' nop nop ']' ']' gs gs O
+ 011 '0' ')' nop nop '{' '{' nop nop O
+ 012 '-' '_' ns ns '|' '|' ns ns O
+ 013 '=' '+' nop nop '}' '}' nop nop O
+ 014 bs bs del del bs bs del del O
+ 015 ht btab nop nop ht btab nop nop O
+ 016 'q' 'Q' dc1 dc1 'q' 'Q' dc1 dc1 C
+ 017 'w' 'W' etb etb 'w' 'W' etb etb C
+ 018 'e' 'E' enq enq 'e' 'E' enq enq C
+ 019 'r' 'R' dc2 dc2 'r' 'R' dc2 dc2 C
+ 020 't' 'T' dc4 dc4 't' 'T' dc4 dc4 C
+ 021 'y' 'Y' em em 'y' 'Y' em em C
+ 022 'u' 'U' nak nak 'u' 'U' nak nak C
+ 023 'i' 'I' ht ht 'i' 'I' ht ht C
+ 024 'o' 'O' si si 'o' 'O' si si C
+ 025 'p' 'P' dle dle 'p' 'P' dle dle C
+ 026 '[' '{' esc esc '[' '{' esc esc O
+ 027 ']' '}' gs gs ']' '}' gs gs O
+ 028 cr cr nl nl cr cr nl nl O
+ 029 lctrl lctrl lctrl lctrl lctrl lctrl lctrl lctrl O
+ 030 'a' 'A' soh soh 'a' 'A' soh soh C
+ 031 's' 'S' dc3 dc3 's' 'S' dc3 dc3 C
+ 032 'd' 'D' eot eot 'd' 'D' eot eot C
+ 033 'f' 'F' ack ack 'f' 'F' ack ack C
+ 034 'g' 'G' bel bel 'g' 'G' bel bel C
+ 035 'h' 'H' bs bs 'h' 'H' bs bs C
+ 036 'j' 'J' nl nl 'j' 'J' nl nl C
+ 037 'k' 'K' vt vt 'k' 'K' vt vt C
+ 038 'l' 'L' ff ff 'l' 'L' ff ff C
+ 039 ';' ':' nop nop ';' ':' nop nop O
+ 040 ''' '@' nul nul ''' '@' nul nul O
+ 041 '\' '|' fs fs '\' '\' fs fs O
+ 042 lshift lshift lshift lshift lshift lshift lshift lshift O
+ 043 '#' '~' nop nop '~' '~' nop nop O
+ 044 'z' 'Z' sub sub 'z' 'Z' sub sub C
+ 045 'x' 'X' can can 'x' 'X' can can C
+ 046 'c' 'C' etx etx 'c' 'C' etx etx C
+ 047 'v' 'V' syn syn 'v' 'V' syn syn C
+ 048 'b' 'B' stx stx 'b' 'B' stx stx C
+ 049 'n' 'N' so so 'n' 'N' so so C
+ 050 'm' 'M' cr cr 'm' 'M' cr cr C
+ 051 ',' '<' nop nop ',' '<' nop nop O
+ 052 '.' '>' nop nop '.' '>' nop nop O
+ 053 '/' '?' nop nop '/' '?' nop nop O
+ 054 rshift rshift rshift rshift rshift rshift rshift rshift O
+ 055 '*' '*' nscr nscr '*' '*' nscr nscr O
+ 056 lalt lalt lalt lalt lalt lalt lalt lalt O
+ 057 ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' O
+ 058 clock clock clock clock clock clock clock clock O
+ 059 fkey01 fkey13 fkey25 fkey37 scr01 scr11 scr01 scr11 O
+ 060 fkey02 fkey14 fkey26 fkey38 scr02 scr12 scr02 scr12 O
+ 061 fkey03 fkey15 fkey27 fkey39 scr03 scr13 scr03 scr13 O
+ 062 fkey04 fkey16 fkey28 fkey40 scr04 scr14 scr04 scr14 O
+ 063 fkey05 fkey17 fkey29 fkey41 scr05 scr15 scr05 scr15 O
+ 064 fkey06 fkey18 fkey30 fkey42 scr06 scr16 scr06 scr16 O
+ 065 fkey07 fkey19 fkey31 fkey43 scr07 scr07 scr07 scr07 O
+ 066 fkey08 fkey20 fkey32 fkey44 scr08 scr08 scr08 scr08 O
+ 067 fkey09 fkey21 fkey33 fkey45 scr09 scr09 scr09 scr09 O
+ 068 fkey10 fkey22 fkey34 fkey46 scr10 scr10 scr10 scr10 O
+ 069 nlock nlock dc3 dc3 nlock nlock dc3 dc3 O
+ 070 slock slock del del slock slock del del O
+ 071 fkey49 '7' '7' '7' '7' '7' '7' '7' N
+ 072 fkey50 '8' '8' '8' '8' '8' '8' '8' N
+ 073 fkey51 '9' '9' '9' '9' '9' '9' '9' N
+ 074 fkey52 '-' ns ns '-' '-' '-' '-' N
+ 075 fkey53 '4' '4' '4' '4' '4' '4' '4' N
+ 076 fkey54 '5' '5' '5' '5' '5' '5' '5' N
+ 077 fkey55 '6' rs rs '6' '6' '6' '6' N
+ 078 fkey56 '+' '+' '+' '+' '+' '+' '+' N
+ 079 fkey57 '1' '1' '1' '1' '1' '1' '1' N
+ 080 fkey58 '2' '2' '2' '2' '2' '2' '2' N
+ 081 fkey59 '3' '3' '3' '3' '3' '3' '3' N
+ 082 fkey60 '0' '0' '0' '0' '0' '0' '0' N
+ 083 del '.' del del del del del del N
+ 084 ns ns ns ns ns ns ns ns O
+ 085 nop nop nop nop nop nop nop nop O
+ 086 '\' '|' fs fs '\' '|' fs fs O
+ 087 fkey11 fkey23 fkey35 fkey47 scr11 scr11 scr11 scr11 O
+ 088 fkey12 fkey24 fkey36 fkey48 scr12 scr12 scr12 scr12 O
+ 089 scr03 scr03 scr03 scr03 scr03 scr03 scr03 scr03 N
+ 090 rctrl rctrl rctrl rctrl rctrl rctrl rctrl rctrl O
+ 091 '/' '/' '/' '/' '/' '/' '/' '/' N
+ 092 nscr nop debug nop nop nop nop nop O
+ 093 ralt ralt ralt ralt ralt ralt ralt ralt O
+ 094 fkey49 fkey49 fkey49 fkey49 fkey49 fkey49 fkey49 fkey49 O
+ 095 fkey50 fkey50 fkey50 fkey50 fkey50 fkey50 fkey50 fkey50 O
+ 096 fkey51 fkey51 fkey51 fkey51 fkey51 fkey51 fkey51 fkey51 O
+ 097 fkey53 fkey53 fkey53 fkey53 fkey53 fkey53 fkey53 fkey53 O
+ 098 fkey55 fkey55 fkey55 fkey55 fkey55 fkey55 fkey55 fkey55 O
+ 099 fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 O
+ 100 fkey58 fkey58 fkey58 fkey58 fkey58 fkey58 fkey58 fkey58 O
+ 101 fkey59 fkey59 fkey59 fkey59 fkey59 fkey59 fkey59 fkey59 O
+ 102 fkey60 fkey60 fkey60 fkey60 fkey60 fkey60 fkey60 fkey60 O
+ 103 fkey54 fkey54 fkey54 fkey54 fkey54 fkey54 boot fkey54 O
+ 104 slock slock slock slock slock slock slock slock O
diff --git a/share/syscons/keymaps/us.iso.kbd b/share/syscons/keymaps/us.iso.kbd
new file mode 100644
index 000000000000..51947d36c167
--- /dev/null
+++ b/share/syscons/keymaps/us.iso.kbd
@@ -0,0 +1,109 @@
+# alt
+# scan cntrl alt alt cntrl lock
+# code base shift cntrl shift alt shift cntrl shift state
+# ------------------------------------------------------------------
+ 000 nop nop nop nop nop nop nop nop O
+ 001 esc esc nop nop esc esc nop nop O
+ 002 '1' '!' nop nop '1' '!' nop nop O
+ 003 '2' '@' nul nul '2' '@' nul nul O
+ 004 '3' '#' nop nop '3' '#' nop nop O
+ 005 '4' '$' nop nop '4' '$' nop nop O
+ 006 '5' '%' nop nop '5' '%' nop nop O
+ 007 '6' '^' rs rs '6' '^' rs rs O
+ 008 '7' '&' nop nop '7' '&' nop nop O
+ 009 '8' '*' nop nop '8' '*' nop nop O
+ 010 '9' '(' nop nop '9' '(' nop nop O
+ 011 '0' ')' nop nop '0' ')' nop nop O
+ 012 '-' '_' ns ns '-' '_' ns ns O
+ 013 '=' '+' nop nop '=' '+' nop nop O
+ 014 del del bs bs del del bs bs O
+ 015 ht bs nop nop ht bs nop nop O
+ 016 'q' 'Q' dc1 dc1 'q' 'Q' dc1 dc1 C
+ 017 'w' 'W' etb etb 'w' 'W' etb etb C
+ 018 'e' 'E' enq enq 'e' 'E' enq enq C
+ 019 'r' 'R' dc2 dc2 'r' 'R' dc2 dc2 C
+ 020 't' 'T' dc4 dc4 't' 'T' dc4 dc4 C
+ 021 'y' 'Y' em em 'y' 'Y' em em C
+ 022 'u' 'U' nak nak 'u' 'U' nak nak C
+ 023 'i' 'I' ht ht 'i' 'I' ht ht C
+ 024 'o' 'O' si si 'o' 'O' si si C
+ 025 'p' 'P' dle dle 'p' 'P' dle dle C
+ 026 '[' '{' esc esc '[' '{' esc esc O
+ 027 ']' '}' gs gs ']' '}' gs gs O
+ 028 cr cr nl nl cr cr nl nl O
+ 029 lctrl lctrl lctrl lctrl lctrl lctrl lctrl lctrl O
+ 030 'a' 'A' soh soh 'a' 'A' soh soh C
+ 031 's' 'S' dc3 dc3 's' 'S' dc3 dc3 C
+ 032 'd' 'D' eot eot 'd' 'D' eot eot C
+ 033 'f' 'F' ack ack 'f' 'F' ack ack C
+ 034 'g' 'G' bel bel 'g' 'G' bel bel C
+ 035 'h' 'H' bs bs 'h' 'H' bs bs C
+ 036 'j' 'J' nl nl 'j' 'J' nl nl C
+ 037 'k' 'K' vt vt 'k' 'K' vt vt C
+ 038 'l' 'L' ff ff 'l' 'L' ff ff C
+ 039 ';' ':' nop nop ';' ':' nop nop O
+ 040 ''' '"' nop nop ''' '"' nop nop O
+ 041 '`' '~' nop nop '`' '~' nop nop O
+ 042 lshift lshift lshift lshift lshift lshift lshift lshift O
+ 043 '\' '|' fs fs '\' '|' fs fs O
+ 044 'z' 'Z' sub sub 'z' 'Z' sub sub C
+ 045 'x' 'X' can can 'x' 'X' can can C
+ 046 'c' 'C' etx etx 'c' 'C' etx etx C
+ 047 'v' 'V' syn syn 'v' 'V' syn syn C
+ 048 'b' 'B' stx stx 'b' 'B' stx stx C
+ 049 'n' 'N' so so 'n' 'N' so so C
+ 050 'm' 'M' cr cr 'm' 'M' cr cr C
+ 051 ',' '<' nop nop ',' '<' nop nop O
+ 052 '.' '>' nop nop '.' '>' nop nop O
+ 053 '/' '?' nop nop '/' '?' nop nop O
+ 054 rshift rshift rshift rshift rshift rshift rshift rshift O
+ 055 '*' '*' nscr nscr '*' '*' nscr nscr O
+ 056 lalt lalt lalt lalt lalt lalt lalt lalt O
+ 057 ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' O
+ 058 clock clock clock clock clock clock clock clock O
+ 059 fkey01 fkey13 fkey25 fkey37 scr01 scr11 scr01 scr11 O
+ 060 fkey02 fkey14 fkey26 fkey38 scr02 scr12 scr02 scr12 O
+ 061 fkey03 fkey15 fkey27 fkey39 scr03 scr13 scr03 scr13 O
+ 062 fkey04 fkey16 fkey28 fkey40 scr04 scr14 scr04 scr14 O
+ 063 fkey05 fkey17 fkey29 fkey41 scr05 scr15 scr05 scr15 O
+ 064 fkey06 fkey18 fkey30 fkey42 scr06 scr16 scr06 scr16 O
+ 065 fkey07 fkey19 fkey31 fkey43 scr07 scr07 scr07 scr07 O
+ 066 fkey08 fkey20 fkey32 fkey44 scr08 scr08 scr08 scr08 O
+ 067 fkey09 fkey21 fkey33 fkey45 scr09 scr09 scr09 scr09 O
+ 068 fkey10 fkey22 fkey34 fkey46 scr10 scr10 scr10 scr10 O
+ 069 nlock nlock nlock nlock nlock nlock nlock nlock O
+ 070 slock slock slock slock slock slock slock slock O
+ 071 fkey49 '7' '7' '7' '7' '7' '7' '7' N
+ 072 fkey50 '8' '8' '8' '8' '8' '8' '8' N
+ 073 fkey51 '9' '9' '9' '9' '9' '9' '9' N
+ 074 fkey52 '-' '-' '-' '-' '-' '-' '-' N
+ 075 fkey53 '4' '4' '4' '4' '4' '4' '4' N
+ 076 fkey54 '5' '5' '5' '5' '5' '5' '5' N
+ 077 fkey55 '6' '6' '6' '6' '6' '6' '6' N
+ 078 fkey56 '+' '+' '+' '+' '+' '+' '+' N
+ 079 fkey57 '1' '1' '1' '1' '1' '1' '1' N
+ 080 fkey58 '2' '2' '2' '2' '2' '2' '2' N
+ 081 fkey59 '3' '3' '3' '3' '3' '3' '3' N
+ 082 fkey60 '0' '0' '0' '0' '0' '0' '0' N
+ 083 del '.' del del del del del del N
+ 084 ns ns ns ns ns ns ns ns O
+ 085 nop nop nop nop nop nop nop nop O
+ 086 nop nop nop nop nop nop nop nop O
+ 087 fkey11 fkey23 fkey35 fkey47 scr11 scr11 scr11 scr11 O
+ 088 fkey12 fkey24 fkey36 fkey48 scr12 scr12 scr12 scr12 O
+ 089 scr03 scr03 scr03 scr03 scr03 scr03 scr03 scr03 N
+ 090 rctrl rctrl rctrl rctrl rctrl rctrl rctrl rctrl O
+ 091 '/' '/' '/' '/' '/' '/' '/' '/' N
+ 092 nscr nop debug nop nop nop nop nop O
+ 093 ralt ralt ralt ralt ralt ralt ralt ralt O
+ 094 fkey49 fkey49 fkey49 fkey49 fkey49 fkey49 fkey49 fkey49 O
+ 095 fkey50 fkey50 fkey50 fkey50 fkey50 fkey50 fkey50 fkey50 O
+ 096 fkey51 fkey51 fkey51 fkey51 fkey51 fkey51 fkey51 fkey51 O
+ 097 fkey53 fkey53 fkey53 fkey53 fkey53 fkey53 fkey53 fkey53 O
+ 098 fkey55 fkey55 fkey55 fkey55 fkey55 fkey55 fkey55 fkey55 O
+ 099 fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 O
+ 100 fkey58 fkey58 fkey58 fkey58 fkey58 fkey58 fkey58 fkey58 O
+ 101 fkey59 fkey59 fkey59 fkey59 fkey59 fkey59 fkey59 fkey59 O
+ 102 fkey60 fkey60 fkey60 fkey60 fkey60 fkey60 fkey60 fkey60 O
+ 103 fkey54 fkey54 fkey54 fkey54 fkey54 fkey54 boot fkey54 O
+ 104 slock slock slock slock slock slock slock slock O
diff --git a/share/syscons/scrnmaps/Makefile b/share/syscons/scrnmaps/Makefile
index 5a78201820b6..b8efbc528d33 100644
--- a/share/syscons/scrnmaps/Makefile
+++ b/share/syscons/scrnmaps/Makefile
@@ -1,17 +1,23 @@
-SCRMAPS = koi8-r2alt.scr
+OLDSCRMAPS = koi8-r2alt.scr
-SCRMAPS_MK = ${SCRMAPS:R:S/$/.mk/g}
+SCRMAPS = koi8-r2alt.scm
+
+SCRMAPS_MK = ${OLDSCRMAPS:R:S/$/.mk/g}
SCRDIR = /usr/share/syscons/scrnmaps
-CLEANFILES+= ${SCRMAPS} ${SCRMAPS_MK}
+CLEANFILES+= ${OLDSCRMAPS} ${SCRMAPS_MK}
+
NOMAN = noman
-all: ${SCRMAPS}
+all: ${OLDSCRMAPS}
install:
+ cd ${.CURDIR}; \
install -c -o ${BINOWN} -g ${BINGRP} -m 444 ${SCRMAPS} \
${DESTDIR}${SCRDIR}
+ install -c -o ${BINOWN} -g ${BINGRP} -m 444 ${OLDSCRMAPS} \
+ ${DESTDIR}${SCRDIR}
-${SCRMAPS}: ${.TARGET:R}.mk
+${OLDSCRMAPS}: ${.TARGET:R}.mk
./${.TARGET:R}.mk ${.TARGET}
${SCRMAPS_MK}: ${.TARGET:R} mkscrfil.c
diff --git a/share/syscons/scrnmaps/koi8-r2alt.scm b/share/syscons/scrnmaps/koi8-r2alt.scm
new file mode 100644
index 000000000000..1810ae173b25
--- /dev/null
+++ b/share/syscons/scrnmaps/koi8-r2alt.scm
@@ -0,0 +1,9 @@
+begin 444 koi8-r2alt
+M``$"`P0%!@<("0H+#`T.#Q`1$A,4%187&!D:&QP='A\@(2(C)"4F)R@I*BLL
+M+2XO,#$R,S0U-C<X.3H[/#T^/T!!0D-$149'2$E*2TQ-3D]045)35%565UA9
+M6EM<75Y?8&%B8V1E9F=H:6IK;&UN;W!Q<G-T=79W>'EZ>WQ]?G_$L]J_P-G#
+MM,+!Q=_<V]W>L+&R]/[Y^_?S\O_U^/WZ]LVZU?'6R;BWN]33R+Z]O,;'S+7P
+MMKG1TLO/T,K8U\[\[J"AYJ2EY*/EJ*FJJZRMKJ_OX.'BXZ:B[.NGZ.WIY^J>
+?@(&6A(64@Y6(B8J+C(V.CY^0D9*3AH*<FX>8G9F7FN'B
+`
+end
diff --git a/share/tmac/Makefile b/share/tmac/Makefile
index 4f588dc1ce39..4aeb347d2f0c 100644
--- a/share/tmac/Makefile
+++ b/share/tmac/Makefile
@@ -11,12 +11,9 @@ OFILES= tmac.an.v6compat tmac.an6n tmac.an6t tmac.a tmac.cp tmac.doc.old
all clean cleandir depend lint tags:
-strip.sed:
- ln -s ../me/strip.sed strip.sed
-
-beforeinstall: strip.sed
+beforeinstall: ../me/strip.sed
for i in ${MSRCS}; do \
- sed -f strip.sed < $$i > ${DESTDIR}${BINDIR}/tmac/tmac.$$i; \
+ sed -f ../me/strip.sed < $$i > ${DESTDIR}${BINDIR}/tmac/tmac.$$i; \
chown ${BINOWN}.${BINGRP} ${DESTDIR}${BINDIR}/tmac/tmac.$$i; \
chmod 444 ${DESTDIR}${BINDIR}/tmac/tmac.$$i; \
done
diff --git a/share/tmac/doc-syms b/share/tmac/doc-syms
index fc1e2a639834..8a0782920119 100644
--- a/share/tmac/doc-syms
+++ b/share/tmac/doc-syms
@@ -237,11 +237,11 @@
. \}
. if "\\*(A\\n(aP"-ansiC" \{\
. ie \\n(sT==1 \{\
-. ds b1 \&\\*(tNANSI \\*(aaX3.159-1989\\*(sV
+. ds b1 \&\\*(tNISO \\*(aa9899:1990\\*(sV
. as b1 (``\\*(tNANSI C\\*(aa'')
. \}
. el \{\
-. ds b1 \&\\*(tNANSI \\*(aaX3.159-1989\\*(sV
+. ds b1 \&\\*(tNISO \\*(aa9899:1990\\*(sV
. as b1 (``\\*(tNANSI C\\*(aa'')
. \}
. \}
@@ -255,6 +255,16 @@
. as b1 (``\\*(tNANSI C\\*(aa'')
. \}
. \}
+. if "\\*(A\\n(aP"-isoC-90" \{\
+. ie \\n(sT==1 \{\
+. ds b1 \&\\*(tNISO \\*(aa9899:1990\\*(sV
+. as b1 (``\\*(tNANSI/ISO C\\*(aa'')
+. \}
+. el \{\
+. ds b1 \&\\*(tNISO \\*(aa9899:1990\\*(sV
+. as b1 (``\\*(tNANSI/ISO C\\*(aa'')
+. \}
+. \}
. if "\\*(A\\n(aP"-iso8802-3" \{\
. ie \\n(sT==1 \{\
. ds b1 \&\\*(tNISO \\*(aa8802-3: 1989\\*(sV
diff --git a/share/zoneinfo/Makefile b/share/zoneinfo/Makefile
index b0cbbe14db4c..c1dc520b3ccc 100644
--- a/share/zoneinfo/Makefile
+++ b/share/zoneinfo/Makefile
@@ -34,7 +34,7 @@ TZDIR= ${DESTDIR}/usr/share/zoneinfo
# REDO= right_posix
# below.
-REDO= right_posix
+REDO= posix_right
# If you're running on a System V-style system and don't want lint grief,
# add