diff lisp/mule/cyrillic.el @ 4072:aa28d959af41

[xemacs-hg @ 2007-07-22 22:03:29 by aidan] Add support for non-ISO2022 8 bit fixed-width coding-systems
author aidan
date Sun, 22 Jul 2007 22:04:14 +0000
parents fbf54025c136
children 751ae075e76e
line wrap: on
line diff
--- a/lisp/mule/cyrillic.el	Sun Jul 22 21:53:08 2007 +0000
+++ b/lisp/mule/cyrillic.el	Sun Jul 22 22:04:14 2007 +0000
@@ -4,6 +4,7 @@
 ;; Licensed to the Free Software Foundation.
 ;; Copyright (C) 1997 MORIOKA Tomohiko
 ;; Copyright (C) 2001, 2002 Ben Wing.
+;; Copyright (C) 2007 Free Software Foundation
 
 ;; Keywords: multilingual, Cyrillic
 
@@ -29,16 +30,6 @@
 ;; The character set ISO8859-5 is supported.  KOI-8 and ALTERNATIVNYJ are
 ;; converted to ISO8859-5 internally.
 
-;; [Windows-1251 support deleted because XEmacs has automatic support.]
-
-;; #### We only have automatic support on Windows; that needs to be put
-;; back. Also, the Russian Wikipedia articles on KOI-8 list several other
-;; related encodings--KOI8-U (Ukrainian), KOI8-RU (simultaneous support for
-;; Russian, Belorussian, and Ukrainian), KOI8-C (for languages of the
-;; Caucasus), KOI8-O (Old Church Slavonic)--and it would be nice to have
-;; them. Beyond that, we're currently trashing lots of code points with
-;; KOI-8 R; it would be nice to leverage the Unicode support to not do that. 
-
 ;;; Code:
 
 ;; Case table:
@@ -93,8 +84,8 @@
   with case-table = (standard-case-table)
   do
   (put-case-table-pair (make-char 'cyrillic-iso8859-5 upper)
-		       (make-char 'cyrillic-iso8859-5 lower)
-		       case-table))
+                       (make-char 'cyrillic-iso8859-5 lower)
+                       case-table))
 
 ;; The default character syntax is now word. Pay attention to the
 ;; exceptions in ISO-8859-5, copying them from ISO-8859-1. 
@@ -114,6 +105,7 @@
                      (string (char-syntax ?\# (standard-syntax-table)))
                      (standard-syntax-table))
 
+;; And create the coding system.
 (make-coding-system
  'iso-8859-5 'iso2022
  "ISO-8859-5 (Cyrillic)"
@@ -125,224 +117,1226 @@
 
 (set-language-info-alist
  "Cyrillic-ISO" '((charset cyrillic-iso8859-5)
-		  (tutorial . "TUTORIAL.ru")
-		  (coding-system iso-8859-5)
-		  (native-coding-system iso-8859-5)
-		  (coding-priority iso-8859-5)
-		  (input-method . "cyrillic-yawerty")
-		  (features cyril-util)
-		  (sample-text . "Russian (,L@caaZXY(B)	,L7T`PRabRcYbU(B!")
-		  (documentation . "Support for Cyrillic ISO-8859-5."))
+                  (tutorial . "TUTORIAL.ru")
+                  (coding-system iso-8859-5)
+                  (native-coding-system iso-8859-5)
+                  (coding-priority iso-8859-5)
+                  (input-method . "cyrillic-yawerty")
+                  (features cyril-util)
+                  (sample-text . "Russian (,L@caaZXY(B)     ,L7T`PRabRcYbU(B!")
+                  (documentation . "Support for Cyrillic ISO-8859-5."))
  '("Cyrillic"))
 
-;; KOI-8
-
-(eval-and-compile
-
-(defvar cyrillic-koi8-r-decode-table
-  [
-   0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
-   16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
-   32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47
-   48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63
-   64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79
-   80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95
-   96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111
-   112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127
-   ?$B(!(B ?$B("(B ?$B(#(B ?$B($(B ?$B(&(B ?$B(%(B ?$B('(B ?$B()(B ?$B(((B ?$B(*(B ?$B(+(B 32  ?$(G#'(B ?$(G#+(B ?$(G#/(B 32
-   32  ?$(C"F(B 32  32  ?$B"#(B 32  ?$B"e(B ?$A!V(B ?$A!\(B ?$A!](B ?,L (B  32  ?,A0(B  ?,A2(B  ?,A7(B  ?,Aw(B
-   ?$(G#D(B 32  32  ?,Lq(B  32  32  32  32  32  32  32  32  32  32  32  ?$(G#E(B
-   32  32  ?$(G#G(B ?,L!(B  32  32  32  32  32  32  32  32  ?$(G#F(B 32  32  ?,A)(B
-   ?,Ln(B  ?,LP(B  ?,LQ(B  ?,Lf(B  ?,LT(B  ?,LU(B  ?,Ld(B  ?,LS(B  ?,Le(B  ?,LX(B  ?,LY(B  ?,LZ(B  ?,L[(B  ?,L\(B  ?,L](B  ?,L^(B 
-   ?,L_(B  ?,Lo(B  ?,L`(B  ?,La(B  ?,Lb(B  ?,Lc(B  ?,LV(B  ?,LR(B  ?,Ll(B  ?,Lk(B  ?,LW(B  ?,Lh(B  ?,Lm(B  ?,Li(B  ?,Lg(B  ?,Lj(B 
-   ?,LN(B  ?,L0(B  ?,L1(B  ?,LF(B  ?,L4(B  ?,L5(B  ?,LD(B  ?,L3(B  ?,LE(B  ?,L8(B  ?,L9(B  ?,L:(B  ?,L;(B  ?,L<(B  ?,L=(B  ?,L>(B 
-   ?,L?(B  ?,LO(B  ?,L@(B  ?,LA(B  ?,LB(B  ?,LC(B  ?,L6(B  ?,L2(B  ?,LL(B  ?,LK(B  ?,L7(B  ?,LH(B  ?,LM(B  ?,LI(B  ?,LG(B  ?,LJ(B ]
-  "Cyrillic KOI8-R decoding table.")
-
-(defvar cyrillic-koi8-r-encode-table
-  (let ((table (make-vector 256 32))
-	(i 0))
-    (while (< i 256)
-      (let* ((ch (aref cyrillic-koi8-r-decode-table i))
-	     (split (split-char ch)))
-	(cond ((eq (car split) 'cyrillic-iso8859-5)
-	       (aset table (logior (nth 1 split) 128) i))
-	      ((eq ch 32))
-	      ((eq (car split) 'ascii)
-	       (aset table ch i))))
-      (setq i (1+ i)))
-    table)
-  "Cyrillic KOI8-R encoding table.")
-
-)
+;; KOI8-R, the most common encoding for Cyrillic on Unix and Usenet.
+(make-8-bit-coding-system 
+ 'koi8-r
+ '((#x80 ?\u2500) ;; BOX DRAWINGS LIGHT HORIZONTAL
+   (#x81 ?\u2502) ;; BOX DRAWINGS LIGHT VERTICAL
+   (#x82 ?\u250C) ;; BOX DRAWINGS LIGHT DOWN AND RIGHT
+   (#x83 ?\u2510) ;; BOX DRAWINGS LIGHT DOWN AND LEFT
+   (#x84 ?\u2514) ;; BOX DRAWINGS LIGHT UP AND RIGHT
+   (#x85 ?\u2518) ;; BOX DRAWINGS LIGHT UP AND LEFT
+   (#x86 ?\u251C) ;; BOX DRAWINGS LIGHT VERTICAL AND RIGHT
+   (#x87 ?\u2524) ;; BOX DRAWINGS LIGHT VERTICAL AND LEFT
+   (#x88 ?\u252C) ;; BOX DRAWINGS LIGHT DOWN AND HORIZONTAL
+   (#x89 ?\u2534) ;; BOX DRAWINGS LIGHT UP AND HORIZONTAL
+   (#x8A ?\u253C) ;; BOX DRAWINGS LIGHT VERTICAL AND HORIZONTAL
+   (#x8B ?\u2580) ;; UPPER HALF BLOCK
+   (#x8C ?\u2584) ;; LOWER HALF BLOCK
+   (#x8D ?\u2588) ;; FULL BLOCK
+   (#x8E ?\u258C) ;; LEFT HALF BLOCK
+   (#x8F ?\u2590) ;; RIGHT HALF BLOCK
+   (#x90 ?\u2591) ;; LIGHT SHADE
+   (#x91 ?\u2592) ;; MEDIUM SHADE
+   (#x92 ?\u2593) ;; DARK SHADE
+   (#x93 ?\u2320) ;; TOP HALF INTEGRAL
+   (#x94 ?\u25A0) ;; BLACK SQUARE
+   (#x95 ?\u2219) ;; BULLET OPERATOR
+   (#x96 ?\u221A) ;; SQUARE ROOT
+   (#x97 ?\u2248) ;; ALMOST EQUAL TO
+   (#x98 ?\u2264) ;; LESS-THAN OR EQUAL TO
+   (#x99 ?\u2265) ;; GREATER-THAN OR EQUAL TO
+   (#x9A ?\u00A0) ;; NO-BREAK SPACE
+   (#x9B ?\u2321) ;; BOTTOM HALF INTEGRAL
+   (#x9C ?\u00B0) ;; DEGREE SIGN
+   (#x9D ?\u00B2) ;; SUPERSCRIPT TWO
+   (#x9E ?\u00B7) ;; MIDDLE DOT
+   (#x9F ?\u00F7) ;; DIVISION SIGN
+   (#xA0 ?\u2550) ;; BOX DRAWINGS DOUBLE HORIZONTAL
+   (#xA1 ?\u2551) ;; BOX DRAWINGS DOUBLE VERTICAL
+   (#xA2 ?\u2552) ;; BOX DRAWINGS DOWN SINGLE AND RIGHT DOUBLE
+   (#xA3 ?\u0451) ;; CYRILLIC SMALL LETTER IO
+   (#xA4 ?\u2553) ;; BOX DRAWINGS DOWN DOUBLE AND RIGHT SINGLE
+   (#xA5 ?\u2554) ;; BOX DRAWINGS DOUBLE DOWN AND RIGHT
+   (#xA6 ?\u2555) ;; BOX DRAWINGS DOWN SINGLE AND LEFT DOUBLE
+   (#xA7 ?\u2556) ;; BOX DRAWINGS DOWN DOUBLE AND LEFT SINGLE
+   (#xA8 ?\u2557) ;; BOX DRAWINGS DOUBLE DOWN AND LEFT
+   (#xA9 ?\u2558) ;; BOX DRAWINGS UP SINGLE AND RIGHT DOUBLE
+   (#xAA ?\u2559) ;; BOX DRAWINGS UP DOUBLE AND RIGHT SINGLE
+   (#xAB ?\u255A) ;; BOX DRAWINGS DOUBLE UP AND RIGHT
+   (#xAC ?\u255B) ;; BOX DRAWINGS UP SINGLE AND LEFT DOUBLE
+   (#xAD ?\u255C) ;; BOX DRAWINGS UP DOUBLE AND LEFT SINGLE
+   (#xAE ?\u255D) ;; BOX DRAWINGS DOUBLE UP AND LEFT
+   (#xAF ?\u255E) ;; BOX DRAWINGS VERTICAL SINGLE AND RIGHT DOUBLE
+   (#xB0 ?\u255F) ;; BOX DRAWINGS VERTICAL DOUBLE AND RIGHT SINGLE
+   (#xB1 ?\u2560) ;; BOX DRAWINGS DOUBLE VERTICAL AND RIGHT
+   (#xB2 ?\u2561) ;; BOX DRAWINGS VERTICAL SINGLE AND LEFT DOUBLE
+   (#xB3 ?\u0401) ;; CYRILLIC CAPITAL LETTER IO
+   (#xB4 ?\u2562) ;; BOX DRAWINGS VERTICAL DOUBLE AND LEFT SINGLE
+   (#xB5 ?\u2563) ;; BOX DRAWINGS DOUBLE VERTICAL AND LEFT
+   (#xB6 ?\u2564) ;; BOX DRAWINGS DOWN SINGLE AND HORIZONTAL DOUBLE
+   (#xB7 ?\u2565) ;; BOX DRAWINGS DOWN DOUBLE AND HORIZONTAL SINGLE
+   (#xB8 ?\u2566) ;; BOX DRAWINGS DOUBLE DOWN AND HORIZONTAL
+   (#xB9 ?\u2567) ;; BOX DRAWINGS UP SINGLE AND HORIZONTAL DOUBLE
+   (#xBA ?\u2568) ;; BOX DRAWINGS UP DOUBLE AND HORIZONTAL SINGLE
+   (#xBB ?\u2569) ;; BOX DRAWINGS DOUBLE UP AND HORIZONTAL
+   (#xBC ?\u256A) ;; BOX DRAWINGS VERTICAL SINGLE AND HORIZONTAL DOUBLE
+   (#xBD ?\u256B) ;; BOX DRAWINGS VERTICAL DOUBLE AND HORIZONTAL SINGLE
+   (#xBE ?\u256C) ;; BOX DRAWINGS DOUBLE VERTICAL AND HORIZONTAL
+   (#xBF ?\u00A9) ;; COPYRIGHT SIGN
+   (#xC0 ?\u044E) ;; CYRILLIC SMALL LETTER YU
+   (#xC1 ?\u0430) ;; CYRILLIC SMALL LETTER A
+   (#xC2 ?\u0431) ;; CYRILLIC SMALL LETTER BE
+   (#xC3 ?\u0446) ;; CYRILLIC SMALL LETTER TSE
+   (#xC4 ?\u0434) ;; CYRILLIC SMALL LETTER DE
+   (#xC5 ?\u0435) ;; CYRILLIC SMALL LETTER IE
+   (#xC6 ?\u0444) ;; CYRILLIC SMALL LETTER EF
+   (#xC7 ?\u0433) ;; CYRILLIC SMALL LETTER GHE
+   (#xC8 ?\u0445) ;; CYRILLIC SMALL LETTER HA
+   (#xC9 ?\u0438) ;; CYRILLIC SMALL LETTER I
+   (#xCA ?\u0439) ;; CYRILLIC SMALL LETTER SHORT I
+   (#xCB ?\u043A) ;; CYRILLIC SMALL LETTER KA
+   (#xCC ?\u043B) ;; CYRILLIC SMALL LETTER EL
+   (#xCD ?\u043C) ;; CYRILLIC SMALL LETTER EM
+   (#xCE ?\u043D) ;; CYRILLIC SMALL LETTER EN
+   (#xCF ?\u043E) ;; CYRILLIC SMALL LETTER O
+   (#xD0 ?\u043F) ;; CYRILLIC SMALL LETTER PE
+   (#xD1 ?\u044F) ;; CYRILLIC SMALL LETTER YA
+   (#xD2 ?\u0440) ;; CYRILLIC SMALL LETTER ER
+   (#xD3 ?\u0441) ;; CYRILLIC SMALL LETTER ES
+   (#xD4 ?\u0442) ;; CYRILLIC SMALL LETTER TE
+   (#xD5 ?\u0443) ;; CYRILLIC SMALL LETTER U
+   (#xD6 ?\u0436) ;; CYRILLIC SMALL LETTER ZHE
+   (#xD7 ?\u0432) ;; CYRILLIC SMALL LETTER VE
+   (#xD8 ?\u044C) ;; CYRILLIC SMALL LETTER SOFT SIGN
+   (#xD9 ?\u044B) ;; CYRILLIC SMALL LETTER YERU
+   (#xDA ?\u0437) ;; CYRILLIC SMALL LETTER ZE
+   (#xDB ?\u0448) ;; CYRILLIC SMALL LETTER SHA
+   (#xDC ?\u044D) ;; CYRILLIC SMALL LETTER E
+   (#xDD ?\u0449) ;; CYRILLIC SMALL LETTER SHCHA
+   (#xDE ?\u0447) ;; CYRILLIC SMALL LETTER CHE
+   (#xDF ?\u044A) ;; CYRILLIC SMALL LETTER HARD SIGN
+   (#xE0 ?\u042E) ;; CYRILLIC CAPITAL LETTER YU
+   (#xE1 ?\u0410) ;; CYRILLIC CAPITAL LETTER A
+   (#xE2 ?\u0411) ;; CYRILLIC CAPITAL LETTER BE
+   (#xE3 ?\u0426) ;; CYRILLIC CAPITAL LETTER TSE
+   (#xE4 ?\u0414) ;; CYRILLIC CAPITAL LETTER DE
+   (#xE5 ?\u0415) ;; CYRILLIC CAPITAL LETTER IE
+   (#xE6 ?\u0424) ;; CYRILLIC CAPITAL LETTER EF
+   (#xE7 ?\u0413) ;; CYRILLIC CAPITAL LETTER GHE
+   (#xE8 ?\u0425) ;; CYRILLIC CAPITAL LETTER HA
+   (#xE9 ?\u0418) ;; CYRILLIC CAPITAL LETTER I
+   (#xEA ?\u0419) ;; CYRILLIC CAPITAL LETTER SHORT I
+   (#xEB ?\u041A) ;; CYRILLIC CAPITAL LETTER KA
+   (#xEC ?\u041B) ;; CYRILLIC CAPITAL LETTER EL
+   (#xED ?\u041C) ;; CYRILLIC CAPITAL LETTER EM
+   (#xEE ?\u041D) ;; CYRILLIC CAPITAL LETTER EN
+   (#xEF ?\u041E) ;; CYRILLIC CAPITAL LETTER O
+   (#xF0 ?\u041F) ;; CYRILLIC CAPITAL LETTER PE
+   (#xF1 ?\u042F) ;; CYRILLIC CAPITAL LETTER YA
+   (#xF2 ?\u0420) ;; CYRILLIC CAPITAL LETTER ER
+   (#xF3 ?\u0421) ;; CYRILLIC CAPITAL LETTER ES
+   (#xF4 ?\u0422) ;; CYRILLIC CAPITAL LETTER TE
+   (#xF5 ?\u0423) ;; CYRILLIC CAPITAL LETTER U
+   (#xF6 ?\u0416) ;; CYRILLIC CAPITAL LETTER ZHE
+   (#xF7 ?\u0412) ;; CYRILLIC CAPITAL LETTER VE
+   (#xF8 ?\u042C) ;; CYRILLIC CAPITAL LETTER SOFT SIGN
+   (#xF9 ?\u042B) ;; CYRILLIC CAPITAL LETTER YERU
+   (#xFA ?\u0417) ;; CYRILLIC CAPITAL LETTER ZE
+   (#xFB ?\u0428) ;; CYRILLIC CAPITAL LETTER SHA
+   (#xFC ?\u042D) ;; CYRILLIC CAPITAL LETTER E
+   (#xFD ?\u0429) ;; CYRILLIC CAPITAL LETTER SHCHA
+   (#xFE ?\u0427) ;; CYRILLIC CAPITAL LETTER CHE
+   (#xFF ?\u042A));; CYRILLIC CAPITAL LETTER HARD SIGN
+ "KOI8-R (,L:^T(B ,L>Q\U]P(B ,L8]d^`\PfXUY(B, 8 ,LQXb(B) for Russian and Bulgarian."
+ '(mnemonic "KOI8"
+   documentation
+   "This is the ASCII-compatible encoding documented in RFC 1341. 
+,L:>8(B8-,L@(B is very common across the Cyrillic-using internet and in Unix
+implementations; it shares the useful property with the other ,L:>8(B8
+encodings that when the high bit is stripped, encoded text remains
+readable (Cyrillic characters get mapped to corresponding Roman
+character of the opposite case). "
+   aliases (cyrillic-koi8 koi8 cp878)))
 
-(define-ccl-program ccl-decode-koi8
-  `(3
-    ((read r0)
-     (loop
-      (write-read-repeat r0 ,cyrillic-koi8-r-decode-table))))
-  "CCL program to decode KOI8.")
-
-(define-ccl-program ccl-encode-koi8
-  `(1
-    ((read r0)
-     (loop
-      (if (r0 != ,(charset-id 'cyrillic-iso8859-5))
-	  (write-read-repeat r0)
-	((read r0)
-	 (write-read-repeat r0 , cyrillic-koi8-r-encode-table))))))
-  "CCL program to encode KOI8.")
-
-;; (define-coding-system-alias 'koi8-r 'cyrillic-koi8)
-;; (define-coding-system-alias 'koi8 'cyrillic-koi8)
-
-(make-coding-system
- 'koi8-r 'ccl
- "KOI8-R (Cyrillic)"
- '(decode ccl-decode-koi8
-   encode ccl-encode-koi8
-   mnemonic "KOI8"))
-
-;; `iso-8-1' is not correct, but XEmacs doesn't have a `ccl' category
-(coding-system-put 'koi8-r 'category 'iso-8-1)
-
-;; (define-ccl-program ccl-encode-koi8-font
-;;   `(0
-;;     ((r1 |= 128)
-;;      (r1 = r1 ,cyrillic-koi8-r-encode-table)))
-;;   "CCL program to encode Cyrillic chars to KOI font.")
-
-;; (setq font-ccl-encoder-alist
-;;       (cons (cons "koi8" ccl-encode-koi8-font) font-ccl-encoder-alist))
-
-(defvar cyrillic-koi8-r-to-external-code-table
-  (let ((table (make-char-table 'generic))
-	(i 0)
-	(len (length cyrillic-koi8-r-decode-table)))
-    (while (< i len)
-      (let ((ch (aref cyrillic-koi8-r-decode-table i)))
-	(if (characterp ch)
-	    (put-char-table ch i table)))
-      (incf i)))
-  "Table to convert from characters to their Koi8-R code.")
-
+;; Create a corresponding language environment. 
 (set-language-info-alist
  "Cyrillic-KOI8" '((charset cyrillic-iso8859-5)
-		   (coding-system koi8-r)
-		   (native-coding-system koi8-r)
-		   (coding-priority koi8-r)
-		   (input-method . "cyrillic-yawerty")
-		   (features cyril-util)
-		   (locale "ru")
-		   (mswindows-locale . "RUSSIAN")
-		   (tutorial . "TUTORIAL.ru")
-		   (sample-text . "Russian (,L@caaZXY(B)	,L7T`PRabRcYbU(B!")
-		   (documentation . "Support for Cyrillic KOI8-R."))
+                   (coding-system koi8-r)
+                   (native-coding-system koi8-r)
+                   (coding-priority koi8-r)
+                   (input-method . "cyrillic-yawerty")
+                   (features cyril-util)
+                   (locale "ru")
+                   (mswindows-locale . "RUSSIAN")
+                   (tutorial . "TUTORIAL.ru")
+                   (sample-text . "Russian (,L@caaZXY(B)    ,L7T`PRabRcYbU(B!")
+                   (documentation . "Support for Cyrillic KOI8-R."))
+ '("Cyrillic"))
+
+;; Alias it to Russian. 
+(set-language-info-alist
+ "Russian"
+ (cdr (assoc "Cyrillic-KOI8" language-info-alist))
+ '("Cyrillic"))
+
+;; KOI8-U, for Ukrainian. 
+(make-8-bit-coding-system
+ 'koi8-u
+ '((#x80 ?\u2500) ;; BOX DRAWINGS LIGHT HORIZONTAL
+   (#x81 ?\u2502) ;; BOX DRAWINGS LIGHT VERTICAL
+   (#x82 ?\u250C) ;; BOX DRAWINGS LIGHT DOWN AND RIGHT
+   (#x83 ?\u2510) ;; BOX DRAWINGS LIGHT DOWN AND LEFT
+   (#x84 ?\u2514) ;; BOX DRAWINGS LIGHT UP AND RIGHT
+   (#x85 ?\u2518) ;; BOX DRAWINGS LIGHT UP AND LEFT
+   (#x86 ?\u251C) ;; BOX DRAWINGS LIGHT VERTICAL AND RIGHT
+   (#x87 ?\u2524) ;; BOX DRAWINGS LIGHT VERTICAL AND LEFT
+   (#x88 ?\u252C) ;; BOX DRAWINGS LIGHT DOWN AND HORIZONTAL
+   (#x89 ?\u2534) ;; BOX DRAWINGS LIGHT UP AND HORIZONTAL
+   (#x8A ?\u253C) ;; BOX DRAWINGS LIGHT VERTICAL AND HORIZONTAL
+   (#x8B ?\u2580) ;; UPPER HALF BLOCK
+   (#x8C ?\u2584) ;; LOWER HALF BLOCK
+   (#x8D ?\u2588) ;; FULL BLOCK
+   (#x8E ?\u258C) ;; LEFT HALF BLOCK
+   (#x8F ?\u2590) ;; RIGHT HALF BLOCK
+   (#x90 ?\u2591) ;; LIGHT SHADE
+   (#x91 ?\u2592) ;; MEDIUM SHADE
+   (#x92 ?\u2593) ;; DARK SHADE
+   (#x93 ?\u2320) ;; TOP HALF INTEGRAL
+   (#x94 ?\u25A0) ;; BLACK SQUARE
+   (#x95 ?\u2022) ;; BULLET
+   (#x96 ?\u221A) ;; SQUARE ROOT
+   (#x97 ?\u2248) ;; ALMOST EQUAL TO
+   (#x98 ?\u2264) ;; LESS-THAN OR EQUAL TO
+   (#x99 ?\u2265) ;; GREATER-THAN OR EQUAL TO
+   (#x9A ?\u00A0) ;; NO-BREAK SPACE
+   (#x9B ?\u2321) ;; BOTTOM HALF INTEGRAL
+   (#x9C ?\u00B0) ;; DEGREE SIGN
+   (#x9D ?\u00B2) ;; SUPERSCRIPT TWO
+   (#x9E ?\u00B7) ;; MIDDLE DOT
+   (#x9F ?\u00F7) ;; DIVISION SIGN
+   (#xA0 ?\u2550) ;; BOX DRAWINGS DOUBLE HORIZONTAL
+   (#xA1 ?\u2551) ;; BOX DRAWINGS DOUBLE VERTICAL
+   (#xA2 ?\u2552) ;; BOX DRAWINGS DOWN SINGLE AND RIGHT DOUBLE
+   (#xA3 ?\u0451) ;; CYRILLIC SMALL LETTER IO
+   (#xA4 ?\u0454) ;; CYRILLIC SMALL LETTER UKRAINIAN IE
+   (#xA5 ?\u2554) ;; BOX DRAWINGS DOUBLE DOWN AND RIGHT
+   (#xA6 ?\u0456) ;; CYRILLIC SMALL LETTER BYELORUSSIAN-UKRAINIAN I
+   (#xA7 ?\u0457) ;; CYRILLIC SMALL LETTER YI
+   (#xA8 ?\u2557) ;; BOX DRAWINGS DOUBLE DOWN AND LEFT
+   (#xA9 ?\u2558) ;; BOX DRAWINGS UP SINGLE AND RIGHT DOUBLE
+   (#xAA ?\u2559) ;; BOX DRAWINGS UP DOUBLE AND RIGHT SINGLE
+   (#xAB ?\u255A) ;; BOX DRAWINGS DOUBLE UP AND RIGHT
+   (#xAC ?\u255B) ;; BOX DRAWINGS UP SINGLE AND LEFT DOUBLE
+   (#xAD ?\u0491) ;; CYRILLIC SMALL LETTER GHE WITH UPTURN
+   (#xAE ?\u255D) ;; BOX DRAWINGS DOUBLE UP AND LEFT
+   (#xAF ?\u255E) ;; BOX DRAWINGS VERTICAL SINGLE AND RIGHT DOUBLE
+   (#xB0 ?\u255F) ;; BOX DRAWINGS VERTICAL DOUBLE AND RIGHT SINGLE
+   (#xB1 ?\u2560) ;; BOX DRAWINGS DOUBLE VERTICAL AND RIGHT
+   (#xB2 ?\u2561) ;; BOX DRAWINGS VERTICAL SINGLE AND LEFT DOUBLE
+   (#xB3 ?\u0401) ;; CYRILLIC CAPITAL LETTER IO
+   (#xB4 ?\u0404) ;; CYRILLIC CAPITAL LETTER UKRAINIAN IE
+   (#xB5 ?\u2563) ;; BOX DRAWINGS DOUBLE VERTICAL AND LEFT
+   (#xB6 ?\u0406) ;; CYRILLIC CAPITAL LETTER BYELORUSSIAN-UKRAINIAN I
+   (#xB7 ?\u0407) ;; CYRILLIC CAPITAL LETTER YI
+   (#xB8 ?\u2566) ;; BOX DRAWINGS DOUBLE DOWN AND HORIZONTAL
+   (#xB9 ?\u2567) ;; BOX DRAWINGS UP SINGLE AND HORIZONTAL DOUBLE
+   (#xBA ?\u2568) ;; BOX DRAWINGS UP DOUBLE AND HORIZONTAL SINGLE
+   (#xBB ?\u2569) ;; BOX DRAWINGS DOUBLE UP AND HORIZONTAL
+   (#xBC ?\u256A) ;; BOX DRAWINGS VERTICAL SINGLE AND HORIZONTAL DOUBLE
+   (#xBD ?\u0490) ;; CYRILLIC CAPITAL LETTER GHE WITH UPTURN
+   (#xBE ?\u256C) ;; BOX DRAWINGS DOUBLE VERTICAL AND HORIZONTAL
+   (#xBF ?\u00A9) ;; COPYRIGHT SIGN
+   (#xC0 ?\u044E) ;; CYRILLIC SMALL LETTER YU
+   (#xC1 ?\u0430) ;; CYRILLIC SMALL LETTER A
+   (#xC2 ?\u0431) ;; CYRILLIC SMALL LETTER BE
+   (#xC3 ?\u0446) ;; CYRILLIC SMALL LETTER TSE
+   (#xC4 ?\u0434) ;; CYRILLIC SMALL LETTER DE
+   (#xC5 ?\u0435) ;; CYRILLIC SMALL LETTER IE
+   (#xC6 ?\u0444) ;; CYRILLIC SMALL LETTER EF
+   (#xC7 ?\u0433) ;; CYRILLIC SMALL LETTER GHE
+   (#xC8 ?\u0445) ;; CYRILLIC SMALL LETTER HA
+   (#xC9 ?\u0438) ;; CYRILLIC SMALL LETTER I
+   (#xCA ?\u0439) ;; CYRILLIC SMALL LETTER SHORT I
+   (#xCB ?\u043A) ;; CYRILLIC SMALL LETTER KA
+   (#xCC ?\u043B) ;; CYRILLIC SMALL LETTER EL
+   (#xCD ?\u043C) ;; CYRILLIC SMALL LETTER EM
+   (#xCE ?\u043D) ;; CYRILLIC SMALL LETTER EN
+   (#xCF ?\u043E) ;; CYRILLIC SMALL LETTER O
+   (#xD0 ?\u043F) ;; CYRILLIC SMALL LETTER PE
+   (#xD1 ?\u044F) ;; CYRILLIC SMALL LETTER YA
+   (#xD2 ?\u0440) ;; CYRILLIC SMALL LETTER ER
+   (#xD3 ?\u0441) ;; CYRILLIC SMALL LETTER ES
+   (#xD4 ?\u0442) ;; CYRILLIC SMALL LETTER TE
+   (#xD5 ?\u0443) ;; CYRILLIC SMALL LETTER U
+   (#xD6 ?\u0436) ;; CYRILLIC SMALL LETTER ZHE
+   (#xD7 ?\u0432) ;; CYRILLIC SMALL LETTER VE
+   (#xD8 ?\u044C) ;; CYRILLIC SMALL LETTER SOFT SIGN
+   (#xD9 ?\u044B) ;; CYRILLIC SMALL LETTER YERU
+   (#xDA ?\u0437) ;; CYRILLIC SMALL LETTER ZE
+   (#xDB ?\u0448) ;; CYRILLIC SMALL LETTER SHA
+   (#xDC ?\u044D) ;; CYRILLIC SMALL LETTER E
+   (#xDD ?\u0449) ;; CYRILLIC SMALL LETTER SHCHA
+   (#xDE ?\u0447) ;; CYRILLIC SMALL LETTER CHE
+   (#xDF ?\u044A) ;; CYRILLIC SMALL LETTER HARD SIGN
+   (#xE0 ?\u042E) ;; CYRILLIC CAPITAL LETTER YU
+   (#xE1 ?\u0410) ;; CYRILLIC CAPITAL LETTER A
+   (#xE2 ?\u0411) ;; CYRILLIC CAPITAL LETTER BE
+   (#xE3 ?\u0426) ;; CYRILLIC CAPITAL LETTER TSE
+   (#xE4 ?\u0414) ;; CYRILLIC CAPITAL LETTER DE
+   (#xE5 ?\u0415) ;; CYRILLIC CAPITAL LETTER IE
+   (#xE6 ?\u0424) ;; CYRILLIC CAPITAL LETTER EF
+   (#xE7 ?\u0413) ;; CYRILLIC CAPITAL LETTER GHE
+   (#xE8 ?\u0425) ;; CYRILLIC CAPITAL LETTER HA
+   (#xE9 ?\u0418) ;; CYRILLIC CAPITAL LETTER I
+   (#xEA ?\u0419) ;; CYRILLIC CAPITAL LETTER SHORT I
+   (#xEB ?\u041A) ;; CYRILLIC CAPITAL LETTER KA
+   (#xEC ?\u041B) ;; CYRILLIC CAPITAL LETTER EL
+   (#xED ?\u041C) ;; CYRILLIC CAPITAL LETTER EM
+   (#xEE ?\u041D) ;; CYRILLIC CAPITAL LETTER EN
+   (#xEF ?\u041E) ;; CYRILLIC CAPITAL LETTER O
+   (#xF0 ?\u041F) ;; CYRILLIC CAPITAL LETTER PE
+   (#xF1 ?\u042F) ;; CYRILLIC CAPITAL LETTER YA
+   (#xF2 ?\u0420) ;; CYRILLIC CAPITAL LETTER ER
+   (#xF3 ?\u0421) ;; CYRILLIC CAPITAL LETTER ES
+   (#xF4 ?\u0422) ;; CYRILLIC CAPITAL LETTER TE
+   (#xF5 ?\u0423) ;; CYRILLIC CAPITAL LETTER U
+   (#xF6 ?\u0416) ;; CYRILLIC CAPITAL LETTER ZHE
+   (#xF7 ?\u0412) ;; CYRILLIC CAPITAL LETTER VE
+   (#xF8 ?\u042C) ;; CYRILLIC CAPITAL LETTER SOFT SIGN
+   (#xF9 ?\u042B) ;; CYRILLIC CAPITAL LETTER YERU
+   (#xFA ?\u0417) ;; CYRILLIC CAPITAL LETTER ZE
+   (#xFB ?\u0428) ;; CYRILLIC CAPITAL LETTER SHA
+   (#xFC ?\u042D) ;; CYRILLIC CAPITAL LETTER E
+   (#xFD ?\u0429) ;; CYRILLIC CAPITAL LETTER SHCHA
+   (#xFE ?\u0427) ;; CYRILLIC CAPITAL LETTER CHE
+   (#xFF ?\u042A)) ;; CYRILLIC CAPITAL LETTER HARD SIGN
+ "KOI8-U, for Ukrainian"
+ '(mnemonic ",L:>8(B8,LC(B"
+   documentation
+   "KOI8-U, a KOI-8-compatible encoding for Ukrainian, described in RFC2319.
+This has GHE WITH UPTURN, BYELORUSSIAN-UKRAINIAN I, UKRAINIAN IE and
+YI instead of some box-drawing characters.  Russian in this encoding
+(without using box-drawing characters) is bit-for-bit compatible with
+Russian in KOI8-R.  "))
+
+;; Case support, for the new characters.
+(loop
+  for (upper lower)
+  in '((?\u0404 ?\u0454) ; UKRAINIAN IE
+       (?\u0406 ?\u0456) ; BYELORUSSIAN-UKRAINIAN I
+       (?\u0407 ?\u0457) ; YI
+       (?\u0490 ?\u0491)); GHE WITH UPTURN
+  with case-table = (standard-case-table)
+  do
+  (put-case-table-pair upper lower case-table))
+
+(set-language-info-alist
+ "Ukrainian" '((coding-system koi8-u)
+               (coding-priority koi8-u)
+               (input-method . "cyrillic-ukrainian")
+               (documentation
+                . "Support for Ukrainian with KOI8-U character set."))
  '("Cyrillic"))
 
-;;; WINDOWS-1251 deleted; we support it automatically in XEmacs
-
-;;; ALTERNATIVNYJ
-
-(eval-and-compile
-
-(defvar cyrillic-alternativnyj-decode-table
-  [
-   0   1   2   3   4   5   6   7   8   9  10  11  12  13  14  15
-   16  17  18  19  20  21  22  23  24  25  26  27  28  29  30  31
-   32  33  34  35  36  37  38  39  40  41  42  43  44  45  46  47
-   48  49  50  51  52  53  54  55  56  57  58  59  60  61  62  63
-   64  65  66  67  68  69  70  71  72  73  74  75  76  77  78  79
-   80  81  82  83  84  85  86  87  88  89  90  91  92  93  94  95
-   96  97  98  99 100 101 102 103 104 105 106 107 108 109 110 111
-   112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127
-   ?,L0(B  ?,L1(B  ?,L2(B  ?,L3(B  ?,L4(B  ?,L5(B  ?,L6(B  ?,L7(B  ?,L8(B  ?,L9(B  ?,L:(B  ?,L;(B  ?,L<(B  ?,L=(B  ?,L>(B  ?,L?(B
-   ?,L@(B  ?,LA(B  ?,LB(B  ?,LC(B  ?,LD(B  ?,LE(B  ?,LF(B  ?,LG(B  ?,LH(B  ?,LI(B  ?,LJ(B  ?,LK(B  ?,LL(B  ?,LM(B  ?,LN(B  ?,LO(B
-   ?,LP(B  ?,LQ(B  ?,LR(B  ?,LS(B  ?,LT(B  ?,LU(B  ?,LV(B  ?,LW(B  ?,LX(B  ?,LY(B  ?,LZ(B  ?,L[(B  ?,L\(B  ?,L](B  ?,L^(B  ?,L_(B
-   32  32  32  32  32  32  32  32  32  32  32  32  32  32  32  32
-   32  32  32  32  32  32  32  32  32  32  32  32  32  32  32  32
-   32  32  32  32  32  32  32  32  32  32  32  32  32  32  32  32
-   ?,L`(B  ?,La(B  ?,Lb(B  ?,Lc(B  ?,Ld(B  ?,Le(B  ?,Lf(B  ?,Lg(B  ?,Lh(B  ?,Li(B  ?,Lj(B  ?,Lk(B  ?,Ll(B  ?,Lm(B  ?,Ln(B  ?,Lo(B
-   ?,L!(B  ?,Lq(B   32  32  32  32  32  32  32  32  32  32  32  32  32 ?,Lp(B]
-  "Cyrillic ALTERNATIVNYJ decoding table.")
-
-(defvar cyrillic-alternativnyj-encode-table
-  (let ((table (make-vector 256 32))
-	(i 0))
-    (while (< i 256)
-      (let* ((ch (aref cyrillic-alternativnyj-decode-table i))
-	     (split (split-char ch)))
-	(if (eq (car split) 'cyrillic-iso8859-5)
-	    (aset table (logior (nth 1 split) 128) i)
-	  (if (/= ch 32)
-	      (aset table ch i))))
-      (setq i (1+ i)))
-    table)
-  "Cyrillic ALTERNATIVNYJ encoding table.")
-  
-)
-
+;; Windows 1251 may be provide automatically on Windows, in which case
+;; we don't need to.
+(unless (find-coding-system 'windows-1251) 
+  (make-8-bit-coding-system 
+   'windows-1251
+   '((#x80 ?\u0402) ;; CYRILLIC CAPITAL LETTER DJE
+     (#x81 ?\u0403) ;; CYRILLIC CAPITAL LETTER GJE
+     (#x82 ?\u201A) ;; SINGLE LOW-9 QUOTATION MARK
+     (#x83 ?\u0453) ;; CYRILLIC SMALL LETTER GJE
+     (#x84 ?\u201E) ;; DOUBLE LOW-9 QUOTATION MARK
+     (#x85 ?\u2026) ;; HORIZONTAL ELLIPSIS
+     (#x86 ?\u2020) ;; DAGGER
+     (#x87 ?\u2021) ;; DOUBLE DAGGER
+     (#x88 ?\u20AC) ;; EURO SIGN
+     (#x89 ?\u2030) ;; PER MILLE SIGN
+     (#x8A ?\u0409) ;; CYRILLIC CAPITAL LETTER LJE
+     (#x8B ?\u2039) ;; SINGLE LEFT-POINTING ANGLE QUOTATION MARK
+     (#x8C ?\u040A) ;; CYRILLIC CAPITAL LETTER NJE
+     (#x8D ?\u040C) ;; CYRILLIC CAPITAL LETTER KJE
+     (#x8E ?\u040B) ;; CYRILLIC CAPITAL LETTER TSHE
+     (#x8F ?\u040F) ;; CYRILLIC CAPITAL LETTER DZHE
+     (#x90 ?\u0452) ;; CYRILLIC SMALL LETTER DJE
+     (#x91 ?\u2018) ;; LEFT SINGLE QUOTATION MARK
+     (#x92 ?\u2019) ;; RIGHT SINGLE QUOTATION MARK
+     (#x93 ?\u201C) ;; LEFT DOUBLE QUOTATION MARK
+     (#x94 ?\u201D) ;; RIGHT DOUBLE QUOTATION MARK
+     (#x95 ?\u2022) ;; BULLET
+     (#x96 ?\u2013) ;; EN DASH
+     (#x97 ?\u2014) ;; EM DASH
+     (#x99 ?\u2122) ;; TRADE MARK SIGN
+     (#x9A ?\u0459) ;; CYRILLIC SMALL LETTER LJE
+     (#x9B ?\u203A) ;; SINGLE RIGHT-POINTING ANGLE QUOTATION MARK
+     (#x9C ?\u045A) ;; CYRILLIC SMALL LETTER NJE
+     (#x9D ?\u045C) ;; CYRILLIC SMALL LETTER KJE
+     (#x9E ?\u045B) ;; CYRILLIC SMALL LETTER TSHE
+     (#x9F ?\u045F) ;; CYRILLIC SMALL LETTER DZHE
+     (#xA0 ?\u00A0) ;; NO-BREAK SPACE
+     (#xA1 ?\u040E) ;; CYRILLIC CAPITAL LETTER SHORT U
+     (#xA2 ?\u045E) ;; CYRILLIC SMALL LETTER SHORT U
+     (#xA3 ?\u0408) ;; CYRILLIC CAPITAL LETTER JE
+     (#xA4 ?\u00A4) ;; CURRENCY SIGN
+     (#xA5 ?\u0490) ;; CYRILLIC CAPITAL LETTER GHE WITH UPTURN
+     (#xA6 ?\u00A6) ;; BROKEN BAR
+     (#xA7 ?\u00A7) ;; SECTION SIGN
+     (#xA8 ?\u0401) ;; CYRILLIC CAPITAL LETTER IO
+     (#xA9 ?\u00A9) ;; COPYRIGHT SIGN
+     (#xAA ?\u0404) ;; CYRILLIC CAPITAL LETTER UKRAINIAN IE
+     (#xAB ?\u00AB) ;; LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
+     (#xAC ?\u00AC) ;; NOT SIGN
+     (#xAD ?\u00AD) ;; SOFT HYPHEN
+     (#xAE ?\u00AE) ;; REGISTERED SIGN
+     (#xAF ?\u0407) ;; CYRILLIC CAPITAL LETTER YI
+     (#xB0 ?\u00B0) ;; DEGREE SIGN
+     (#xB1 ?\u00B1) ;; PLUS-MINUS SIGN
+     (#xB2 ?\u0406) ;; CYRILLIC CAPITAL LETTER BYELORUSSIAN-UKRAINIAN I
+     (#xB3 ?\u0456) ;; CYRILLIC SMALL LETTER BYELORUSSIAN-UKRAINIAN I
+     (#xB4 ?\u0491) ;; CYRILLIC SMALL LETTER GHE WITH UPTURN
+     (#xB5 ?\u00B5) ;; MICRO SIGN
+     (#xB6 ?\u00B6) ;; PILCROW SIGN
+     (#xB7 ?\u00B7) ;; MIDDLE DOT
+     (#xB8 ?\u0451) ;; CYRILLIC SMALL LETTER IO
+     (#xB9 ?\u2116) ;; NUMERO SIGN
+     (#xBA ?\u0454) ;; CYRILLIC SMALL LETTER UKRAINIAN IE
+     (#xBB ?\u00BB) ;; RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
+     (#xBC ?\u0458) ;; CYRILLIC SMALL LETTER JE
+     (#xBD ?\u0405) ;; CYRILLIC CAPITAL LETTER DZE
+     (#xBE ?\u0455) ;; CYRILLIC SMALL LETTER DZE
+     (#xBF ?\u0457) ;; CYRILLIC SMALL LETTER YI
+     (#xC0 ?\u0410) ;; CYRILLIC CAPITAL LETTER A
+     (#xC1 ?\u0411) ;; CYRILLIC CAPITAL LETTER BE
+     (#xC2 ?\u0412) ;; CYRILLIC CAPITAL LETTER VE
+     (#xC3 ?\u0413) ;; CYRILLIC CAPITAL LETTER GHE
+     (#xC4 ?\u0414) ;; CYRILLIC CAPITAL LETTER DE
+     (#xC5 ?\u0415) ;; CYRILLIC CAPITAL LETTER IE
+     (#xC6 ?\u0416) ;; CYRILLIC CAPITAL LETTER ZHE
+     (#xC7 ?\u0417) ;; CYRILLIC CAPITAL LETTER ZE
+     (#xC8 ?\u0418) ;; CYRILLIC CAPITAL LETTER I
+     (#xC9 ?\u0419) ;; CYRILLIC CAPITAL LETTER SHORT I
+     (#xCA ?\u041A) ;; CYRILLIC CAPITAL LETTER KA
+     (#xCB ?\u041B) ;; CYRILLIC CAPITAL LETTER EL
+     (#xCC ?\u041C) ;; CYRILLIC CAPITAL LETTER EM
+     (#xCD ?\u041D) ;; CYRILLIC CAPITAL LETTER EN
+     (#xCE ?\u041E) ;; CYRILLIC CAPITAL LETTER O
+     (#xCF ?\u041F) ;; CYRILLIC CAPITAL LETTER PE
+     (#xD0 ?\u0420) ;; CYRILLIC CAPITAL LETTER ER
+     (#xD1 ?\u0421) ;; CYRILLIC CAPITAL LETTER ES
+     (#xD2 ?\u0422) ;; CYRILLIC CAPITAL LETTER TE
+     (#xD3 ?\u0423) ;; CYRILLIC CAPITAL LETTER U
+     (#xD4 ?\u0424) ;; CYRILLIC CAPITAL LETTER EF
+     (#xD5 ?\u0425) ;; CYRILLIC CAPITAL LETTER HA
+     (#xD6 ?\u0426) ;; CYRILLIC CAPITAL LETTER TSE
+     (#xD7 ?\u0427) ;; CYRILLIC CAPITAL LETTER CHE
+     (#xD8 ?\u0428) ;; CYRILLIC CAPITAL LETTER SHA
+     (#xD9 ?\u0429) ;; CYRILLIC CAPITAL LETTER SHCHA
+     (#xDA ?\u042A) ;; CYRILLIC CAPITAL LETTER HARD SIGN
+     (#xDB ?\u042B) ;; CYRILLIC CAPITAL LETTER YERU
+     (#xDC ?\u042C) ;; CYRILLIC CAPITAL LETTER SOFT SIGN
+     (#xDD ?\u042D) ;; CYRILLIC CAPITAL LETTER E
+     (#xDE ?\u042E) ;; CYRILLIC CAPITAL LETTER YU
+     (#xDF ?\u042F) ;; CYRILLIC CAPITAL LETTER YA
+     (#xE0 ?\u0430) ;; CYRILLIC SMALL LETTER A
+     (#xE1 ?\u0431) ;; CYRILLIC SMALL LETTER BE
+     (#xE2 ?\u0432) ;; CYRILLIC SMALL LETTER VE
+     (#xE3 ?\u0433) ;; CYRILLIC SMALL LETTER GHE
+     (#xE4 ?\u0434) ;; CYRILLIC SMALL LETTER DE
+     (#xE5 ?\u0435) ;; CYRILLIC SMALL LETTER IE
+     (#xE6 ?\u0436) ;; CYRILLIC SMALL LETTER ZHE
+     (#xE7 ?\u0437) ;; CYRILLIC SMALL LETTER ZE
+     (#xE8 ?\u0438) ;; CYRILLIC SMALL LETTER I
+     (#xE9 ?\u0439) ;; CYRILLIC SMALL LETTER SHORT I
+     (#xEA ?\u043A) ;; CYRILLIC SMALL LETTER KA
+     (#xEB ?\u043B) ;; CYRILLIC SMALL LETTER EL
+     (#xEC ?\u043C) ;; CYRILLIC SMALL LETTER EM
+     (#xED ?\u043D) ;; CYRILLIC SMALL LETTER EN
+     (#xEE ?\u043E) ;; CYRILLIC SMALL LETTER O
+     (#xEF ?\u043F) ;; CYRILLIC SMALL LETTER PE
+     (#xF0 ?\u0440) ;; CYRILLIC SMALL LETTER ER
+     (#xF1 ?\u0441) ;; CYRILLIC SMALL LETTER ES
+     (#xF2 ?\u0442) ;; CYRILLIC SMALL LETTER TE
+     (#xF3 ?\u0443) ;; CYRILLIC SMALL LETTER U
+     (#xF4 ?\u0444) ;; CYRILLIC SMALL LETTER EF
+     (#xF5 ?\u0445) ;; CYRILLIC SMALL LETTER HA
+     (#xF6 ?\u0446) ;; CYRILLIC SMALL LETTER TSE
+     (#xF7 ?\u0447) ;; CYRILLIC SMALL LETTER CHE
+     (#xF8 ?\u0448) ;; CYRILLIC SMALL LETTER SHA
+     (#xF9 ?\u0449) ;; CYRILLIC SMALL LETTER SHCHA
+     (#xFA ?\u044A) ;; CYRILLIC SMALL LETTER HARD SIGN
+     (#xFB ?\u044B) ;; CYRILLIC SMALL LETTER YERU
+     (#xFC ?\u044C) ;; CYRILLIC SMALL LETTER SOFT SIGN
+     (#xFD ?\u044D) ;; CYRILLIC SMALL LETTER E
+     (#xFE ?\u044E) ;; CYRILLIC SMALL LETTER YU
+     (#xFF ?\u044F)) ;; CYRILLIC SMALL LETTER YA
+   "Microsoft's Code Page 1251, for Russian, Bulgarian, Serbian and others.  "
+   '(mnemonic "CyrW"
+     documentation
+     "This ASCII-compatible encoding is unfortunately not compatible at
+the code point level with the KOI8 family of encodings, but it
+provides several widely-used punctuation and quotation marks that
+KOI-8R and its relatives don't, and has become widely used.  "
+     aliases (cp1251))))
 
-(define-ccl-program ccl-decode-alternativnyj
-  `(3
-    ((read r0)
-     (loop
-      (write-read-repeat r0 ,cyrillic-alternativnyj-decode-table))))
-  "CCL program to decode Alternativnyj.")
+(set-language-info-alist
+ "Bulgarian" '((coding-system windows-1251)
+               (coding-priority windows-1251)
+               (input-method . "bulgarian-bds")
+               (documentation
+                . "Support for Bulgarian with windows-1251 character set.")
+               (tutorial . "TUTORIAL.bg"))
+ '("Cyrillic"))
 
-(define-ccl-program ccl-encode-alternativnyj
-  `(1
-    ((read r0)
-     (loop
-      (if (r0 != ,(charset-id 'cyrillic-iso8859-5))
-	  (write-read-repeat r0)
-	((read r0)
-	 (write-read-repeat r0 ,cyrillic-alternativnyj-encode-table))))))
-  "CCL program to encode Alternativnyj.")
-
-;; (define-coding-system-alias 'alternativnyj 'cyrillic-alternativnyj)
+(set-language-info-alist
+ "Belarusian" '((coding-system windows-1251)
+                (coding-priority windows-1251)
+                (input-method . "belarusian")
+                (documentation
+                 . "Support for Belarusian with windows-1251 character set.
+\(The name Belarusian replaced Byelorussian in the early 1990s.)"))
+ '("Cyrillic"))
 
-(make-coding-system
- 'alternativnyj 'ccl
- "Alternativnyj (Cyrillic)"
- '(decode ccl-decode-alternativnyj
-   encode ccl-encode-alternativnyj
-   mnemonic "Cy.Alt"))
-
-;; `iso-8-1' is not correct, but XEmacs doesn't have `ccl' category
-(coding-system-put 'alternativnyj 'category 'iso-8-1)
-
-;; (define-ccl-program ccl-encode-alternativnyj-font
-;;   '(0
-;;     ((r1 |= 128)
-;;      (r1 = r1 ,cyrillic-alternativnyj-encode-table)))
-;;   "CCL program to encode Cyrillic chars to Alternativnyj font.")
-
-;; (setq font-ccl-encoder-alist
-;;       (cons (cons "alternativnyj" ccl-encode-alternativnyj-font)
-;;             font-ccl-encoder-alist))
-
-(defvar cyrillic-alternativnyj-to-external-code-table
-  (let ((table (make-char-table 'generic))
-	(i 0)
-	(len (length cyrillic-alternativnyj-decode-table)))
-    (while (< i len)
-      (let ((ch (aref cyrillic-alternativnyj-decode-table i)))
-	(if (characterp ch)
-	    (put-char-table ch i table)))
-      (incf i)))
-  "Table to convert from characters to their Alternativnyj code.")
+;;; Alternativnyj
+(make-8-bit-coding-system
+ 'alternativnyj
+ '((#x80 ?\u0410) ;; CYRILLIC CAPITAL LETTER A
+   (#x81 ?\u0411) ;; CYRILLIC CAPITAL LETTER BE
+   (#x82 ?\u0412) ;; CYRILLIC CAPITAL LETTER VE
+   (#x83 ?\u0413) ;; CYRILLIC CAPITAL LETTER GHE
+   (#x84 ?\u0414) ;; CYRILLIC CAPITAL LETTER DE
+   (#x85 ?\u0415) ;; CYRILLIC CAPITAL LETTER IE
+   (#x86 ?\u0416) ;; CYRILLIC CAPITAL LETTER ZHE
+   (#x87 ?\u0417) ;; CYRILLIC CAPITAL LETTER ZE
+   (#x88 ?\u0418) ;; CYRILLIC CAPITAL LETTER I
+   (#x89 ?\u0419) ;; CYRILLIC CAPITAL LETTER SHORT I
+   (#x8A ?\u041A) ;; CYRILLIC CAPITAL LETTER KA
+   (#x8B ?\u041B) ;; CYRILLIC CAPITAL LETTER EL
+   (#x8C ?\u041C) ;; CYRILLIC CAPITAL LETTER EM
+   (#x8D ?\u041D) ;; CYRILLIC CAPITAL LETTER EN
+   (#x8E ?\u041E) ;; CYRILLIC CAPITAL LETTER O
+   (#x8F ?\u041F) ;; CYRILLIC CAPITAL LETTER PE
+   (#x90 ?\u0420) ;; CYRILLIC CAPITAL LETTER ER
+   (#x91 ?\u0421) ;; CYRILLIC CAPITAL LETTER ES
+   (#x92 ?\u0422) ;; CYRILLIC CAPITAL LETTER TE
+   (#x93 ?\u0423) ;; CYRILLIC CAPITAL LETTER U
+   (#x94 ?\u0424) ;; CYRILLIC CAPITAL LETTER EF
+   (#x95 ?\u0425) ;; CYRILLIC CAPITAL LETTER HA
+   (#x96 ?\u0426) ;; CYRILLIC CAPITAL LETTER TSE
+   (#x97 ?\u0427) ;; CYRILLIC CAPITAL LETTER CHE
+   (#x98 ?\u0428) ;; CYRILLIC CAPITAL LETTER SHA
+   (#x99 ?\u0429) ;; CYRILLIC CAPITAL LETTER SHCHA
+   (#x9A ?\u042A) ;; CYRILLIC CAPITAL LETTER HARD SIGN
+   (#x9B ?\u042B) ;; CYRILLIC CAPITAL LETTER YERU
+   (#x9C ?\u042C) ;; CYRILLIC CAPITAL LETTER SOFT SIGN
+   (#x9D ?\u042D) ;; CYRILLIC CAPITAL LETTER E
+   (#x9E ?\u042E) ;; CYRILLIC CAPITAL LETTER YU
+   (#x9F ?\u042F) ;; CYRILLIC CAPITAL LETTER YA
+   (#xA0 ?\u0430) ;; CYRILLIC SMALL LETTER A
+   (#xA1 ?\u0431) ;; CYRILLIC SMALL LETTER BE
+   (#xA2 ?\u0432) ;; CYRILLIC SMALL LETTER VE
+   (#xA3 ?\u0433) ;; CYRILLIC SMALL LETTER GHE
+   (#xA4 ?\u0434) ;; CYRILLIC SMALL LETTER DE
+   (#xA5 ?\u0435) ;; CYRILLIC SMALL LETTER IE
+   (#xA6 ?\u0436) ;; CYRILLIC SMALL LETTER ZHE
+   (#xA7 ?\u0437) ;; CYRILLIC SMALL LETTER ZE
+   (#xA8 ?\u0438) ;; CYRILLIC SMALL LETTER I
+   (#xA9 ?\u0439) ;; CYRILLIC SMALL LETTER SHORT I
+   (#xAA ?\u043A) ;; CYRILLIC SMALL LETTER KA
+   (#xAB ?\u043B) ;; CYRILLIC SMALL LETTER EL
+   (#xAC ?\u043C) ;; CYRILLIC SMALL LETTER EM
+   (#xAD ?\u043D) ;; CYRILLIC SMALL LETTER EN
+   (#xAE ?\u043E) ;; CYRILLIC SMALL LETTER O
+   (#xAF ?\u043F) ;; CYRILLIC SMALL LETTER PE
+   (#xB0 ?\u2591) ;; LIGHT SHADE
+   (#xB1 ?\u2592) ;; MEDIUM SHADE
+   (#xB2 ?\u2593) ;; DARK SHADE
+   (#xB3 ?\u2502) ;; BOX DRAWINGS LIGHT VERTICAL
+   (#xB4 ?\u2524) ;; BOX DRAWINGS LIGHT VERTICAL AND LEFT
+   (#xB5 ?\u2561) ;; BOX DRAWINGS VERTICAL SINGLE AND LEFT DOUBLE
+   (#xB6 ?\u2562) ;; BOX DRAWINGS VERTICAL DOUBLE AND LEFT SINGLE
+   (#xB7 ?\u2556) ;; BOX DRAWINGS DOWN DOUBLE AND LEFT SINGLE
+   (#xB8 ?\u2555) ;; BOX DRAWINGS DOWN SINGLE AND LEFT DOUBLE
+   (#xB9 ?\u2563) ;; BOX DRAWINGS DOUBLE VERTICAL AND LEFT
+   (#xBA ?\u2551) ;; BOX DRAWINGS DOUBLE VERTICAL
+   (#xBB ?\u2557) ;; BOX DRAWINGS DOUBLE DOWN AND LEFT
+   (#xBC ?\u255D) ;; BOX DRAWINGS DOUBLE UP AND LEFT
+   (#xBD ?\u255C) ;; BOX DRAWINGS UP DOUBLE AND LEFT SINGLE
+   (#xBE ?\u255B) ;; BOX DRAWINGS UP SINGLE AND LEFT DOUBLE
+   (#xBF ?\u2510) ;; BOX DRAWINGS LIGHT DOWN AND LEFT
+   (#xC0 ?\u2514) ;; BOX DRAWINGS LIGHT UP AND RIGHT
+   (#xC1 ?\u2534) ;; BOX DRAWINGS LIGHT UP AND HORIZONTAL
+   (#xC2 ?\u252C) ;; BOX DRAWINGS LIGHT DOWN AND HORIZONTAL
+   (#xC3 ?\u251C) ;; BOX DRAWINGS LIGHT VERTICAL AND RIGHT
+   (#xC4 ?\u2500) ;; BOX DRAWINGS LIGHT HORIZONTAL
+   (#xC5 ?\u253C) ;; BOX DRAWINGS LIGHT VERTICAL AND HORIZONTAL
+   (#xC6 ?\u255E) ;; BOX DRAWINGS VERTICAL SINGLE AND RIGHT DOUBLE
+   (#xC7 ?\u255F) ;; BOX DRAWINGS VERTICAL DOUBLE AND RIGHT SINGLE
+   (#xC8 ?\u255A) ;; BOX DRAWINGS DOUBLE UP AND RIGHT
+   (#xC9 ?\u2554) ;; BOX DRAWINGS DOUBLE DOWN AND RIGHT
+   (#xCA ?\u2569) ;; BOX DRAWINGS DOUBLE UP AND HORIZONTAL
+   (#xCB ?\u2566) ;; BOX DRAWINGS DOUBLE DOWN AND HORIZONTAL
+   (#xCC ?\u2560) ;; BOX DRAWINGS DOUBLE VERTICAL AND RIGHT
+   (#xCD ?\u2550) ;; BOX DRAWINGS DOUBLE HORIZONTAL
+   (#xCE ?\u256C) ;; BOX DRAWINGS DOUBLE VERTICAL AND HORIZONTAL
+   (#xCF ?\u2567) ;; BOX DRAWINGS UP SINGLE AND HORIZONTAL DOUBLE
+   (#xD0 ?\u2568) ;; BOX DRAWINGS UP DOUBLE AND HORIZONTAL SINGLE
+   (#xD1 ?\u2564) ;; BOX DRAWINGS DOWN SINGLE AND HORIZONTAL DOUBLE
+   (#xD2 ?\u2565) ;; BOX DRAWINGS DOWN DOUBLE AND HORIZONTAL SINGLE
+   (#xD3 ?\u2559) ;; BOX DRAWINGS UP DOUBLE AND RIGHT SINGLE
+   (#xD4 ?\u2558) ;; BOX DRAWINGS UP SINGLE AND RIGHT DOUBLE
+   (#xD5 ?\u2552) ;; BOX DRAWINGS DOWN SINGLE AND RIGHT DOUBLE
+   (#xD6 ?\u2553) ;; BOX DRAWINGS DOWN DOUBLE AND RIGHT SINGLE
+   (#xD7 ?\u256B) ;; BOX DRAWINGS VERTICAL DOUBLE AND HORIZONTAL SINGLE
+   (#xD8 ?\u256A) ;; BOX DRAWINGS VERTICAL SINGLE AND HORIZONTAL DOUBLE
+   (#xD9 ?\u2518) ;; BOX DRAWINGS LIGHT UP AND LEFT
+   (#xDA ?\u250C) ;; BOX DRAWINGS LIGHT DOWN AND RIGHT
+   (#xDB ?\u2588) ;; FULL BLOCK
+   (#xDC ?\u2584) ;; LOWER HALF BLOCK
+   (#xDD ?\u258C) ;; LEFT HALF BLOCK
+   (#xDE ?\u2590) ;; RIGHT HALF BLOCK
+   (#xDF ?\u2580) ;; UPPER HALF BLOCK
+   (#xE0 ?\u0440) ;; CYRILLIC SMALL LETTER ER
+   (#xE1 ?\u0441) ;; CYRILLIC SMALL LETTER ES
+   (#xE2 ?\u0442) ;; CYRILLIC SMALL LETTER TE
+   (#xE3 ?\u0443) ;; CYRILLIC SMALL LETTER U
+   (#xE4 ?\u0444) ;; CYRILLIC SMALL LETTER EF
+   (#xE5 ?\u0445) ;; CYRILLIC SMALL LETTER HA
+   (#xE6 ?\u0446) ;; CYRILLIC SMALL LETTER TSE
+   (#xE7 ?\u0447) ;; CYRILLIC SMALL LETTER CHE
+   (#xE8 ?\u0448) ;; CYRILLIC SMALL LETTER SHA
+   (#xE9 ?\u0449) ;; CYRILLIC SMALL LETTER SHCHA
+   (#xEA ?\u044A) ;; CYRILLIC SMALL LETTER HARD SIGN
+   (#xEB ?\u044B) ;; CYRILLIC SMALL LETTER YERU
+   (#xEC ?\u044C) ;; CYRILLIC SMALL LETTER SOFT SIGN
+   (#xED ?\u044D) ;; CYRILLIC SMALL LETTER E
+   (#xEE ?\u044E) ;; CYRILLIC SMALL LETTER YU
+   (#xEF ?\u044F) ;; CYRILLIC SMALL LETTER YA
+   (#xF0 ?\u0401) ;; CYRILLIC CAPITAL LETTER IO
+   (#xF1 ?\u0451) ;; CYRILLIC SMALL LETTER IO
+   (#xF2 ?\u0404) ;; CYRILLIC CAPITAL LETTER UKRAINIAN IE
+   (#xF3 ?\u0454) ;; CYRILLIC SMALL LETTER UKRAINIAN IE
+   (#xF4 ?\u0407) ;; CYRILLIC CAPITAL LETTER YI
+   (#xF5 ?\u0457) ;; CYRILLIC SMALL LETTER YI
+   (#xF6 ?\u040E) ;; CYRILLIC CAPITAL LETTER SHORT U
+   (#xF7 ?\u045E) ;; CYRILLIC SMALL LETTER SHORT U
+   (#xF8 ?\u00B0) ;; DEGREE SIGN
+   (#xF9 ?\u2022) ;; BULLET
+   (#xFA ?\u00B7) ;; MIDDLE DOT
+   (#xFB ?\u221A) ;; SQUARE ROOT
+   (#xFC ?\u2116) ;; NUMERO SIGN
+   (#xFD ?\u00A4) ;; CURRENCY SIGN
+   (#xFE ?\u25A0) ;; BLACK SQUARE
+   (#xFF ?\u00A0)) ;; NO-BREAK SPACE
+ "Alternativnyj (Cyrillic). Microsoft's Code Page 966. "
+ '(mnemonic "Cy.Alt"
+   aliases (cp866)))
 
 (set-language-info-alist
  "Cyrillic-ALT" '((charset cyrillic-iso8859-5)
-		  (coding-system alternativnyj)
-		  (native-coding-system alternativnyj)
-		  (coding-priority alternativnyj)
-		  (input-method . "cyrillic-yawerty")
-		  (features cyril-util)
-		  (tutorial . "TUTORIAL.ru")
-		  (sample-text . "Russian (,L@caaZXY(B)	,L7T`PRabRcYbU(B!")
-		  (documentation . "Support for Cyrillic ALTERNATIVNYJ."))
+                  (coding-system alternativnyj)
+                  (native-coding-system alternativnyj)
+                  (coding-priority alternativnyj)
+                  (input-method . "cyrillic-yawerty")
+                  (features cyril-util)
+                  (tutorial . "TUTORIAL.ru")
+                  (sample-text . "Russian (,L@caaZXY(B)     ,L7T`PRabRcYbU(B!")
+                  (documentation . "Support for Cyrillic ALTERNATIVNYJ."))
+ '("Cyrillic"))
+
+(make-8-bit-coding-system
+ 'koi8-ru
+ '((#x80 ?\u2500) ;; BOX DRAWINGS LIGHT HORIZONTAL
+   (#x81 ?\u2502) ;; BOX DRAWINGS LIGHT VERTICAL
+   (#x82 ?\u250C) ;; BOX DRAWINGS LIGHT DOWN AND RIGHT
+   (#x83 ?\u2510) ;; BOX DRAWINGS LIGHT DOWN AND LEFT
+   (#x84 ?\u2514) ;; BOX DRAWINGS LIGHT UP AND RIGHT
+   (#x85 ?\u2518) ;; BOX DRAWINGS LIGHT UP AND LEFT
+   (#x86 ?\u251C) ;; BOX DRAWINGS LIGHT VERTICAL AND RIGHT
+   (#x87 ?\u2524) ;; BOX DRAWINGS LIGHT VERTICAL AND LEFT
+   (#x88 ?\u252C) ;; BOX DRAWINGS LIGHT DOWN AND HORIZONTAL
+   (#x89 ?\u2534) ;; BOX DRAWINGS LIGHT UP AND HORIZONTAL
+   (#x8A ?\u253C) ;; BOX DRAWINGS LIGHT VERTICAL AND HORIZONTAL
+   (#x8B ?\u2580) ;; UPPER HALF BLOCK
+   (#x8C ?\u2584) ;; LOWER HALF BLOCK
+   (#x8D ?\u2588) ;; FULL BLOCK
+   (#x8E ?\u258C) ;; LEFT HALF BLOCK
+   (#x8F ?\u2590) ;; RIGHT HALF BLOCK
+   (#x90 ?\u2591) ;; LIGHT SHADE
+   (#x91 ?\u2592) ;; MEDIUM SHADE
+   (#x92 ?\u2593) ;; DARK SHADE
+   (#x93 ?\u2320) ;; TOP HALF INTEGRAL
+   (#x94 ?\u25A0) ;; BLACK SQUARE
+   (#x95 ?\u2219) ;; BULLET OPERATOR
+   (#x96 ?\u221A) ;; SQUARE ROOT
+   (#x97 ?\u2248) ;; ALMOST EQUAL TO
+   (#x98 ?\u2264) ;; LESS-THAN OR EQUAL TO
+   (#x99 ?\u2265) ;; GREATER-THAN OR EQUAL TO
+   (#x9A ?\u00A0) ;; NO-BREAK SPACE
+   (#x9B ?\u2321) ;; BOTTOM HALF INTEGRAL
+   (#x9C ?\u00B0) ;; DEGREE SIGN
+   (#x9D ?\u00B2) ;; SUPERSCRIPT TWO
+   (#x9E ?\u00B7) ;; MIDDLE DOT
+   (#x9F ?\u00F7) ;; DIVISION SIGN
+   (#xA0 ?\u2550) ;; BOX DRAWINGS DOUBLE HORIZONTAL
+   (#xA1 ?\u2551) ;; BOX DRAWINGS DOUBLE VERTICAL
+   (#xA2 ?\u2552) ;; BOX DRAWINGS DOWN SINGLE AND RIGHT DOUBLE
+   (#xA3 ?\u0451) ;; CYRILLIC SMALL LETTER IO
+   (#xA4 ?\u0454) ;; CYRILLIC SMALL LETTER UKRAINIAN IE
+   (#xA5 ?\u2554) ;; BOX DRAWINGS DOUBLE DOWN AND RIGHT
+   (#xA6 ?\u0456) ;; CYRILLIC SMALL LETTER BYELORUSSIAN-UKRAINIAN I
+   (#xA7 ?\u0457) ;; CYRILLIC SMALL LETTER YI
+   (#xA8 ?\u2557) ;; BOX DRAWINGS DOUBLE DOWN AND LEFT
+   (#xA9 ?\u2558) ;; BOX DRAWINGS UP SINGLE AND RIGHT DOUBLE
+   (#xAA ?\u2559) ;; BOX DRAWINGS UP DOUBLE AND RIGHT SINGLE
+   (#xAB ?\u255A) ;; BOX DRAWINGS DOUBLE UP AND RIGHT
+   (#xAC ?\u255B) ;; BOX DRAWINGS UP SINGLE AND LEFT DOUBLE
+   (#xAD ?\u0491) ;; CYRILLIC SMALL LETTER GHE WITH UPTURN
+   (#xAE ?\u045E) ;; CYRILLIC SMALL LETTER SHORT U
+   (#xAF ?\u255E) ;; BOX DRAWINGS VERTICAL SINGLE AND RIGHT DOUBLE
+   (#xB0 ?\u255F) ;; BOX DRAWINGS VERTICAL DOUBLE AND RIGHT SINGLE
+   (#xB1 ?\u2560) ;; BOX DRAWINGS DOUBLE VERTICAL AND RIGHT
+   (#xB2 ?\u2561) ;; BOX DRAWINGS VERTICAL SINGLE AND LEFT DOUBLE
+   (#xB3 ?\u0401) ;; CYRILLIC CAPITAL LETTER IO
+   (#xB4 ?\u0404) ;; CYRILLIC CAPITAL LETTER UKRAINIAN IE
+   (#xB5 ?\u2563) ;; BOX DRAWINGS DOUBLE VERTICAL AND LEFT
+   (#xB6 ?\u0406) ;; CYRILLIC CAPITAL LETTER BYELORUSSIAN-UKRAINIAN I
+   (#xB7 ?\u0407) ;; CYRILLIC CAPITAL LETTER YI
+   (#xB8 ?\u2566) ;; BOX DRAWINGS DOUBLE DOWN AND HORIZONTAL
+   (#xB9 ?\u2567) ;; BOX DRAWINGS UP SINGLE AND HORIZONTAL DOUBLE
+   (#xBA ?\u2568) ;; BOX DRAWINGS UP DOUBLE AND HORIZONTAL SINGLE
+   (#xBB ?\u2569) ;; BOX DRAWINGS DOUBLE UP AND HORIZONTAL
+   (#xBC ?\u256A) ;; BOX DRAWINGS VERTICAL SINGLE AND HORIZONTAL DOUBLE
+   (#xBD ?\u0490) ;; CYRILLIC CAPITAL LETTER GHE WITH UPTURN
+   (#xBE ?\u040E) ;; CYRILLIC CAPITAL LETTER SHORT U
+   (#xBF ?\u00A9) ;; COPYRIGHT SIGN
+   (#xC0 ?\u044E) ;; CYRILLIC SMALL LETTER YU
+   (#xC1 ?\u0430) ;; CYRILLIC SMALL LETTER A
+   (#xC2 ?\u0431) ;; CYRILLIC SMALL LETTER BE
+   (#xC3 ?\u0446) ;; CYRILLIC SMALL LETTER TSE
+   (#xC4 ?\u0434) ;; CYRILLIC SMALL LETTER DE
+   (#xC5 ?\u0435) ;; CYRILLIC SMALL LETTER IE
+   (#xC6 ?\u0444) ;; CYRILLIC SMALL LETTER EF
+   (#xC7 ?\u0433) ;; CYRILLIC SMALL LETTER GHE
+   (#xC8 ?\u0445) ;; CYRILLIC SMALL LETTER HA
+   (#xC9 ?\u0438) ;; CYRILLIC SMALL LETTER I
+   (#xCA ?\u0439) ;; CYRILLIC SMALL LETTER SHORT I
+   (#xCB ?\u043A) ;; CYRILLIC SMALL LETTER KA
+   (#xCC ?\u043B) ;; CYRILLIC SMALL LETTER EL
+   (#xCD ?\u043C) ;; CYRILLIC SMALL LETTER EM
+   (#xCE ?\u043D) ;; CYRILLIC SMALL LETTER EN
+   (#xCF ?\u043E) ;; CYRILLIC SMALL LETTER O
+   (#xD0 ?\u043F) ;; CYRILLIC SMALL LETTER PE
+   (#xD1 ?\u044F) ;; CYRILLIC SMALL LETTER YA
+   (#xD2 ?\u0440) ;; CYRILLIC SMALL LETTER ER
+   (#xD3 ?\u0441) ;; CYRILLIC SMALL LETTER ES
+   (#xD4 ?\u0442) ;; CYRILLIC SMALL LETTER TE
+   (#xD5 ?\u0443) ;; CYRILLIC SMALL LETTER U
+   (#xD6 ?\u0436) ;; CYRILLIC SMALL LETTER ZHE
+   (#xD7 ?\u0432) ;; CYRILLIC SMALL LETTER VE
+   (#xD8 ?\u044C) ;; CYRILLIC SMALL LETTER SOFT SIGN
+   (#xD9 ?\u044B) ;; CYRILLIC SMALL LETTER YERU
+   (#xDA ?\u0437) ;; CYRILLIC SMALL LETTER ZE
+   (#xDB ?\u0448) ;; CYRILLIC SMALL LETTER SHA
+   (#xDC ?\u044D) ;; CYRILLIC SMALL LETTER E
+   (#xDD ?\u0449) ;; CYRILLIC SMALL LETTER SHCHA
+   (#xDE ?\u0447) ;; CYRILLIC SMALL LETTER CHE
+   (#xDF ?\u044A) ;; CYRILLIC SMALL LETTER HARD SIGN
+   (#xE0 ?\u042E) ;; CYRILLIC CAPITAL LETTER YU
+   (#xE1 ?\u0410) ;; CYRILLIC CAPITAL LETTER A
+   (#xE2 ?\u0411) ;; CYRILLIC CAPITAL LETTER BE
+   (#xE3 ?\u0426) ;; CYRILLIC CAPITAL LETTER TSE
+   (#xE4 ?\u0414) ;; CYRILLIC CAPITAL LETTER DE
+   (#xE5 ?\u0415) ;; CYRILLIC CAPITAL LETTER IE
+   (#xE6 ?\u0424) ;; CYRILLIC CAPITAL LETTER EF
+   (#xE7 ?\u0413) ;; CYRILLIC CAPITAL LETTER GHE
+   (#xE8 ?\u0425) ;; CYRILLIC CAPITAL LETTER HA
+   (#xE9 ?\u0418) ;; CYRILLIC CAPITAL LETTER I
+   (#xEA ?\u0419) ;; CYRILLIC CAPITAL LETTER SHORT I
+   (#xEB ?\u041A) ;; CYRILLIC CAPITAL LETTER KA
+   (#xEC ?\u041B) ;; CYRILLIC CAPITAL LETTER EL
+   (#xED ?\u041C) ;; CYRILLIC CAPITAL LETTER EM
+   (#xEE ?\u041D) ;; CYRILLIC CAPITAL LETTER EN
+   (#xEF ?\u041E) ;; CYRILLIC CAPITAL LETTER O
+   (#xF0 ?\u041F) ;; CYRILLIC CAPITAL LETTER PE
+   (#xF1 ?\u042F) ;; CYRILLIC CAPITAL LETTER YA
+   (#xF2 ?\u0420) ;; CYRILLIC CAPITAL LETTER ER
+   (#xF3 ?\u0421) ;; CYRILLIC CAPITAL LETTER ES
+   (#xF4 ?\u0422) ;; CYRILLIC CAPITAL LETTER TE
+   (#xF5 ?\u0423) ;; CYRILLIC CAPITAL LETTER U
+   (#xF6 ?\u0416) ;; CYRILLIC CAPITAL LETTER ZHE
+   (#xF7 ?\u0412) ;; CYRILLIC CAPITAL LETTER VE
+   (#xF8 ?\u042C) ;; CYRILLIC CAPITAL LETTER SOFT SIGN
+   (#xF9 ?\u042B) ;; CYRILLIC CAPITAL LETTER YERU
+   (#xFA ?\u0417) ;; CYRILLIC CAPITAL LETTER ZE
+   (#xFB ?\u0428) ;; CYRILLIC CAPITAL LETTER SHA
+   (#xFC ?\u042D) ;; CYRILLIC CAPITAL LETTER E
+   (#xFD ?\u0429) ;; CYRILLIC CAPITAL LETTER SHCHA
+   (#xFE ?\u0427) ;; CYRILLIC CAPITAL LETTER CHE
+   (#xFF ?\u042A));; CYRILLIC CAPITAL LETTER HARD SIGN
+ "KOI8-RU, a mostly-compatible superset of KOI8-R. 
+Also known as Windows code page 21866; has Ukrainian and Belarussian support. "
+ '(mnemonic ",L@C(B"
+   aliases (cp21866)))
+
+(set-language-info-alist
+ "Cyrillic-KOI8RU" '((charset cyrillic-iso8859-5)
+                     (coding-system koi8-ru)
+                     (native-coding-system koi8-ru)
+                     (coding-priority koi8-ru)
+                     (input-method . "cyrillic-yawerty")
+                     (tutorial . "TUTORIAL.ru")
+                     (sample-text . "Russian (,L@caaZXY(B)  ,L7T`PRabRcYbU(B!")
+                     (documentation . "Support for Cyrillic ALTERNATIVNYJ."))
  '("Cyrillic"))
 
-;;; cyrillic.el ends here
+;; We should provide an input method and the corresponding language
+;; environments for the next three coding systems. 
+
+(make-8-bit-coding-system
+ 'koi8-t
+ '((#x80 ?\u049B) ;; CYRILLIC SMALL LETTER KA WITH DESCENDER
+   (#x81 ?\u0493) ;; CYRILLIC SMALL LETTER GHE WITH STROKE
+   (#x82 ?\u201A) ;; SINGLE LOW-9 QUOTATION MARK
+   (#x83 ?\u0492) ;; CYRILLIC CAPITAL LETTER GHE WITH STROKE
+   (#x84 ?\u201E) ;; DOUBLE LOW-9 QUOTATION MARK
+   (#x85 ?\u2026) ;; HORIZONTAL ELLIPSIS
+   (#x86 ?\u2020) ;; DAGGER
+   (#x87 ?\u2021) ;; DOUBLE DAGGER
+   (#x89 ?\u2030) ;; PER MILLE SIGN
+   (#x8A ?\u04B3) ;; CYRILLIC SMALL LETTER HA WITH DESCENDER
+   (#x8B ?\u2039) ;; SINGLE LEFT-POINTING ANGLE QUOTATION MARK
+   (#x8C ?\u04B2) ;; CYRILLIC CAPITAL LETTER HA WITH DESCENDER
+   (#x8D ?\u04B7) ;; CYRILLIC SMALL LETTER CHE WITH DESCENDER
+   (#x8E ?\u04B6) ;; CYRILLIC CAPITAL LETTER CHE WITH DESCENDER
+   (#x90 ?\u049A) ;; CYRILLIC CAPITAL LETTER KA WITH DESCENDER
+   (#x91 ?\u2018) ;; LEFT SINGLE QUOTATION MARK
+   (#x92 ?\u2019) ;; RIGHT SINGLE QUOTATION MARK
+   (#x93 ?\u201C) ;; LEFT DOUBLE QUOTATION MARK
+   (#x94 ?\u201D) ;; RIGHT DOUBLE QUOTATION MARK
+   (#x95 ?\u2022) ;; BULLET
+   (#x96 ?\u2013) ;; EN DASH
+   (#x97 ?\u2014) ;; EM DASH
+   (#x99 ?\u2122) ;; TRADE MARK SIGN
+   (#x9B ?\u203A) ;; SINGLE RIGHT-POINTING ANGLE QUOTATION MARK
+   (#xA1 ?\u04EF) ;; CYRILLIC SMALL LETTER U WITH MACRON
+   (#xA2 ?\u04EE) ;; CYRILLIC CAPITAL LETTER U WITH MACRON
+   (#xA3 ?\u0451) ;; CYRILLIC SMALL LETTER IO
+   (#xA4 ?\u00A4) ;; CURRENCY SIGN
+   (#xA5 ?\u04E3) ;; CYRILLIC SMALL LETTER I WITH MACRON
+   (#xA6 ?\u00A6) ;; BROKEN BAR
+   (#xA7 ?\u00A7) ;; SECTION SIGN
+   (#xAB ?\u00AB) ;; LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
+   (#xAC ?\u00AC) ;; NOT SIGN
+   (#xAD ?\u00AD) ;; SOFT HYPHEN
+   (#xAE ?\u00AE) ;; REGISTERED SIGN
+   (#xB0 ?\u00B0) ;; DEGREE SIGN
+   (#xB1 ?\u00B1) ;; PLUS-MINUS SIGN
+   (#xB2 ?\u00B2) ;; SUPERSCRIPT TWO
+   (#xB3 ?\u0401) ;; CYRILLIC CAPITAL LETTER IO
+   (#xB5 ?\u04E2) ;; CYRILLIC CAPITAL LETTER I WITH MACRON
+   (#xB6 ?\u00B6) ;; PILCROW SIGN
+   (#xB7 ?\u00B7) ;; MIDDLE DOT
+   (#xB9 ?\u2116) ;; NUMERO SIGN
+   (#xBB ?\u00BB) ;; RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
+   (#xBF ?\u00A9) ;; COPYRIGHT SIGN
+   (#xC0 ?\u044E) ;; CYRILLIC SMALL LETTER YU
+   (#xC1 ?\u0430) ;; CYRILLIC SMALL LETTER A
+   (#xC2 ?\u0431) ;; CYRILLIC SMALL LETTER BE
+   (#xC3 ?\u0446) ;; CYRILLIC SMALL LETTER TSE
+   (#xC4 ?\u0434) ;; CYRILLIC SMALL LETTER DE
+   (#xC5 ?\u0435) ;; CYRILLIC SMALL LETTER IE
+   (#xC6 ?\u0444) ;; CYRILLIC SMALL LETTER EF
+   (#xC7 ?\u0433) ;; CYRILLIC SMALL LETTER GHE
+   (#xC8 ?\u0445) ;; CYRILLIC SMALL LETTER HA
+   (#xC9 ?\u0438) ;; CYRILLIC SMALL LETTER I
+   (#xCA ?\u0439) ;; CYRILLIC SMALL LETTER SHORT I
+   (#xCB ?\u043A) ;; CYRILLIC SMALL LETTER KA
+   (#xCC ?\u043B) ;; CYRILLIC SMALL LETTER EL
+   (#xCD ?\u043C) ;; CYRILLIC SMALL LETTER EM
+   (#xCE ?\u043D) ;; CYRILLIC SMALL LETTER EN
+   (#xCF ?\u043E) ;; CYRILLIC SMALL LETTER O
+   (#xD0 ?\u043F) ;; CYRILLIC SMALL LETTER PE
+   (#xD1 ?\u044F) ;; CYRILLIC SMALL LETTER YA
+   (#xD2 ?\u0440) ;; CYRILLIC SMALL LETTER ER
+   (#xD3 ?\u0441) ;; CYRILLIC SMALL LETTER ES
+   (#xD4 ?\u0442) ;; CYRILLIC SMALL LETTER TE
+   (#xD5 ?\u0443) ;; CYRILLIC SMALL LETTER U
+   (#xD6 ?\u0436) ;; CYRILLIC SMALL LETTER ZHE
+   (#xD7 ?\u0432) ;; CYRILLIC SMALL LETTER VE
+   (#xD8 ?\u044C) ;; CYRILLIC SMALL LETTER SOFT SIGN
+   (#xD9 ?\u044B) ;; CYRILLIC SMALL LETTER YERU
+   (#xDA ?\u0437) ;; CYRILLIC SMALL LETTER ZE
+   (#xDB ?\u0448) ;; CYRILLIC SMALL LETTER SHA
+   (#xDC ?\u044D) ;; CYRILLIC SMALL LETTER E
+   (#xDD ?\u0449) ;; CYRILLIC SMALL LETTER SHCHA
+   (#xDE ?\u0447) ;; CYRILLIC SMALL LETTER CHE
+   (#xDF ?\u044A) ;; CYRILLIC SMALL LETTER HARD SIGN
+   (#xE0 ?\u042E) ;; CYRILLIC CAPITAL LETTER YU
+   (#xE1 ?\u0410) ;; CYRILLIC CAPITAL LETTER A
+   (#xE2 ?\u0411) ;; CYRILLIC CAPITAL LETTER BE
+   (#xE3 ?\u0426) ;; CYRILLIC CAPITAL LETTER TSE
+   (#xE4 ?\u0414) ;; CYRILLIC CAPITAL LETTER DE
+   (#xE5 ?\u0415) ;; CYRILLIC CAPITAL LETTER IE
+   (#xE6 ?\u0424) ;; CYRILLIC CAPITAL LETTER EF
+   (#xE7 ?\u0413) ;; CYRILLIC CAPITAL LETTER GHE
+   (#xE8 ?\u0425) ;; CYRILLIC CAPITAL LETTER HA
+   (#xE9 ?\u0418) ;; CYRILLIC CAPITAL LETTER I
+   (#xEA ?\u0419) ;; CYRILLIC CAPITAL LETTER SHORT I
+   (#xEB ?\u041A) ;; CYRILLIC CAPITAL LETTER KA
+   (#xEC ?\u041B) ;; CYRILLIC CAPITAL LETTER EL
+   (#xED ?\u041C) ;; CYRILLIC CAPITAL LETTER EM
+   (#xEE ?\u041D) ;; CYRILLIC CAPITAL LETTER EN
+   (#xEF ?\u041E) ;; CYRILLIC CAPITAL LETTER O
+   (#xF0 ?\u041F) ;; CYRILLIC CAPITAL LETTER PE
+   (#xF1 ?\u042F) ;; CYRILLIC CAPITAL LETTER YA
+   (#xF2 ?\u0420) ;; CYRILLIC CAPITAL LETTER ER
+   (#xF3 ?\u0421) ;; CYRILLIC CAPITAL LETTER ES
+   (#xF4 ?\u0422) ;; CYRILLIC CAPITAL LETTER TE
+   (#xF5 ?\u0423) ;; CYRILLIC CAPITAL LETTER U
+   (#xF6 ?\u0416) ;; CYRILLIC CAPITAL LETTER ZHE
+   (#xF7 ?\u0412) ;; CYRILLIC CAPITAL LETTER VE
+   (#xF8 ?\u042C) ;; CYRILLIC CAPITAL LETTER SOFT SIGN
+   (#xF9 ?\u042B) ;; CYRILLIC CAPITAL LETTER YERU
+   (#xFA ?\u0417) ;; CYRILLIC CAPITAL LETTER ZE
+   (#xFB ?\u0428) ;; CYRILLIC CAPITAL LETTER SHA
+   (#xFC ?\u042D) ;; CYRILLIC CAPITAL LETTER E
+   (#xFD ?\u0429) ;; CYRILLIC CAPITAL LETTER SHCHA
+   (#xFE ?\u0427) ;; CYRILLIC CAPITAL LETTER CHE
+   (#xFF ?\u042A));; CYRILLIC CAPITAL LETTER HARD SIGN
+ ",L:>8(B-8 for Tajik."
+ '(mnemonic ",LB%GҶ%@(B"
+   documentation
+   "Compatible in the alphabetic characters with KOI-8R for Russian,
+this 8-bit Cyrillic coding system makes those characters available
+that are necessary for writing Tajik, (,LWPQ^]%Gӣ%@(B ,Lb^%Gҷ%@XZ%Gӣ%@(B) the main
+language of Tajikistan and a close relative of Persian.  "))
+
+;; Case support, for the new characters.
+(loop
+  for (upper lower)
+  in '((?\u04B6 ?\u04B7) ;; CHE WITH DESCENDER
+       (?\u0492 ?\u0493) ;; GHE WITH STROKE
+       (?\u04B2 ?\u04B3) ;; HA WITH DESCENDER
+       (?\u04E2 ?\u04E3) ;; I WITH MACRON
+       (?\u049A ?\u049B) ;; KA WITH DESCENDER
+       (?\u04EE ?\u04EF)) ;; U WITH MACRON
+  with case-table = (standard-case-table)
+  do
+  (put-case-table-pair upper lower case-table))
+
+;; Support fot the languages of the Caucasus.
+(make-8-bit-coding-system
+ 'koi8-c
+ '((#x80 ?\u0493) ;; CYRILLIC SMALL LETTER GHE WITH STROKE
+   (#x81 ?\u0497) ;; CYRILLIC SMALL LETTER ZHE WITH DESCENDER
+   (#x82 ?\u049B) ;; CYRILLIC SMALL LETTER KA WITH DESCENDER
+   (#x83 ?\u049D) ;; CYRILLIC SMALL LETTER KA WITH VERTICAL STROKE
+   (#x84 ?\u04A3) ;; CYRILLIC SMALL LETTER EN WITH DESCENDER
+   (#x85 ?\u04AF) ;; CYRILLIC SMALL LETTER STRAIGHT U
+   (#x86 ?\u04B1) ;; CYRILLIC SMALL LETTER STRAIGHT U WITH STROKE
+   (#x87 ?\u04B3) ;; CYRILLIC SMALL LETTER HA WITH DESCENDER
+   (#x88 ?\u04B7) ;; CYRILLIC SMALL LETTER CHE WITH DESCENDER
+   (#x89 ?\u04B9) ;; CYRILLIC SMALL LETTER CHE WITH VERTICAL STROKE
+   (#x8A ?\u04BB) ;; CYRILLIC SMALL LETTER SHHA
+   (#x8B ?\u2580) ;; UPPER HALF BLOCK
+   (#x8C ?\u049D) ;; CYRILLIC SMALL LETTER KA WITH VERTICAL STROKE
+   (#x8D ?\u04E3) ;; CYRILLIC SMALL LETTER I WITH MACRON
+   (#x8E ?\u04E9) ;; CYRILLIC SMALL LETTER BARRED O
+   (#x8F ?\u04EF) ;; CYRILLIC SMALL LETTER U WITH MACRON
+   (#x90 ?\u0492) ;; CYRILLIC CAPITAL LETTER GHE WITH STROKE
+   (#x91 ?\u0496) ;; CYRILLIC CAPITAL LETTER ZHE WITH DESCENDER
+   (#x92 ?\u049A) ;; CYRILLIC CAPITAL LETTER KA WITH DESCENDER
+   (#x93 ?\u049C) ;; CYRILLIC CAPITAL LETTER KA WITH VERTICAL STROKE
+   (#x94 ?\u04A2) ;; CYRILLIC CAPITAL LETTER EN WITH DESCENDER
+   (#x95 ?\u04AE) ;; CYRILLIC CAPITAL LETTER STRAIGHT U
+   (#x96 ?\u04B0) ;; CYRILLIC CAPITAL LETTER STRAIGHT U WITH STROKE
+   (#x97 ?\u04B2) ;; CYRILLIC CAPITAL LETTER HA WITH DESCENDER
+   (#x98 ?\u04B6) ;; CYRILLIC CAPITAL LETTER CHE WITH DESCENDER
+   (#x99 ?\u04B8) ;; CYRILLIC CAPITAL LETTER CHE WITH VERTICAL STROKE
+   (#x9A ?\u04BA) ;; CYRILLIC CAPITAL LETTER SHHA
+   (#x9B ?\u2321) ;; BOTTOM HALF INTEGRAL
+   (#x9C ?\u04D8) ;; CYRILLIC CAPITAL LETTER SCHWA
+   (#x9D ?\u04E2) ;; CYRILLIC CAPITAL LETTER I WITH MACRON
+   (#x9E ?\u04E8) ;; CYRILLIC CAPITAL LETTER BARRED O
+   (#x9F ?\u04EE) ;; CYRILLIC CAPITAL LETTER U WITH MACRON
+   (#xA0 ?\u00A0) ;; NO-BREAK SPACE
+   (#xA1 ?\u0452) ;; CYRILLIC SMALL LETTER DJE
+   (#xA2 ?\u0453) ;; CYRILLIC SMALL LETTER GJE
+   (#xA3 ?\u0451) ;; CYRILLIC SMALL LETTER IO
+   (#xA4 ?\u0454) ;; CYRILLIC SMALL LETTER UKRAINIAN IE
+   (#xA5 ?\u0455) ;; CYRILLIC SMALL LETTER DZE
+   (#xA6 ?\u0456) ;; CYRILLIC SMALL LETTER BYELORUSSIAN-UKRAINIAN I
+   (#xA7 ?\u0457) ;; CYRILLIC SMALL LETTER YI
+   (#xA8 ?\u0458) ;; CYRILLIC SMALL LETTER JE
+   (#xA9 ?\u0459) ;; CYRILLIC SMALL LETTER LJE
+   (#xAA ?\u045A) ;; CYRILLIC SMALL LETTER NJE
+   (#xAB ?\u045B) ;; CYRILLIC SMALL LETTER TSHE
+   (#xAC ?\u045C) ;; CYRILLIC SMALL LETTER KJE
+   (#xAD ?\u0491) ;; CYRILLIC SMALL LETTER GHE WITH UPTURN
+   (#xAE ?\u045E) ;; CYRILLIC SMALL LETTER SHORT U
+   (#xAF ?\u045F) ;; CYRILLIC SMALL LETTER DZHE
+   (#xB0 ?\u2116) ;; NUMERO SIGN
+   (#xB1 ?\u0402) ;; CYRILLIC CAPITAL LETTER DJE
+   (#xB2 ?\u0403) ;; CYRILLIC CAPITAL LETTER GJE
+   (#xB3 ?\u0401) ;; CYRILLIC CAPITAL LETTER IO
+   (#xB4 ?\u0404) ;; CYRILLIC CAPITAL LETTER UKRAINIAN IE
+   (#xB5 ?\u0405) ;; CYRILLIC CAPITAL LETTER DZE
+   (#xB6 ?\u0406) ;; CYRILLIC CAPITAL LETTER BYELORUSSIAN-UKRAINIAN I
+   (#xB7 ?\u0407) ;; CYRILLIC CAPITAL LETTER YI
+   (#xB8 ?\u0408) ;; CYRILLIC CAPITAL LETTER JE
+   (#xB9 ?\u0409) ;; CYRILLIC CAPITAL LETTER LJE
+   (#xBA ?\u040A) ;; CYRILLIC CAPITAL LETTER NJE
+   (#xBB ?\u040B) ;; CYRILLIC CAPITAL LETTER TSHE
+   (#xBC ?\u040C) ;; CYRILLIC CAPITAL LETTER KJE
+   (#xBD ?\u0490) ;; CYRILLIC CAPITAL LETTER GHE WITH UPTURN
+   (#xBE ?\u040E) ;; CYRILLIC CAPITAL LETTER SHORT U
+   (#xBF ?\u040F) ;; CYRILLIC CAPITAL LETTER DZHE
+   (#xC0 ?\u044E) ;; CYRILLIC SMALL LETTER YU
+   (#xC1 ?\u0430) ;; CYRILLIC SMALL LETTER A
+   (#xC2 ?\u0431) ;; CYRILLIC SMALL LETTER BE
+   (#xC3 ?\u0446) ;; CYRILLIC SMALL LETTER TSE
+   (#xC4 ?\u0434) ;; CYRILLIC SMALL LETTER DE
+   (#xC5 ?\u0435) ;; CYRILLIC SMALL LETTER IE
+   (#xC6 ?\u0444) ;; CYRILLIC SMALL LETTER EF
+   (#xC7 ?\u0433) ;; CYRILLIC SMALL LETTER GHE
+   (#xC8 ?\u0445) ;; CYRILLIC SMALL LETTER HA
+   (#xC9 ?\u0438) ;; CYRILLIC SMALL LETTER I
+   (#xCA ?\u0439) ;; CYRILLIC SMALL LETTER SHORT I
+   (#xCB ?\u043A) ;; CYRILLIC SMALL LETTER KA
+   (#xCC ?\u043B) ;; CYRILLIC SMALL LETTER EL
+   (#xCD ?\u043C) ;; CYRILLIC SMALL LETTER EM
+   (#xCE ?\u043D) ;; CYRILLIC SMALL LETTER EN
+   (#xCF ?\u043E) ;; CYRILLIC SMALL LETTER O
+   (#xD0 ?\u043F) ;; CYRILLIC SMALL LETTER PE
+   (#xD1 ?\u044F) ;; CYRILLIC SMALL LETTER YA
+   (#xD2 ?\u0440) ;; CYRILLIC SMALL LETTER ER
+   (#xD3 ?\u0441) ;; CYRILLIC SMALL LETTER ES
+   (#xD4 ?\u0442) ;; CYRILLIC SMALL LETTER TE
+   (#xD5 ?\u0443) ;; CYRILLIC SMALL LETTER U
+   (#xD6 ?\u0436) ;; CYRILLIC SMALL LETTER ZHE
+   (#xD7 ?\u0432) ;; CYRILLIC SMALL LETTER VE
+   (#xD8 ?\u044C) ;; CYRILLIC SMALL LETTER SOFT SIGN
+   (#xD9 ?\u044B) ;; CYRILLIC SMALL LETTER YERU
+   (#xDA ?\u0437) ;; CYRILLIC SMALL LETTER ZE
+   (#xDB ?\u0448) ;; CYRILLIC SMALL LETTER SHA
+   (#xDC ?\u044D) ;; CYRILLIC SMALL LETTER E
+   (#xDD ?\u0449) ;; CYRILLIC SMALL LETTER SHCHA
+   (#xDE ?\u0447) ;; CYRILLIC SMALL LETTER CHE
+   (#xDF ?\u044A) ;; CYRILLIC SMALL LETTER HARD SIGN
+   (#xE0 ?\u042E) ;; CYRILLIC CAPITAL LETTER YU
+   (#xE1 ?\u0410) ;; CYRILLIC CAPITAL LETTER A
+   (#xE2 ?\u0411) ;; CYRILLIC CAPITAL LETTER BE
+   (#xE3 ?\u0426) ;; CYRILLIC CAPITAL LETTER TSE
+   (#xE4 ?\u0414) ;; CYRILLIC CAPITAL LETTER DE
+   (#xE5 ?\u0415) ;; CYRILLIC CAPITAL LETTER IE
+   (#xE6 ?\u0424) ;; CYRILLIC CAPITAL LETTER EF
+   (#xE7 ?\u0413) ;; CYRILLIC CAPITAL LETTER GHE
+   (#xE8 ?\u0425) ;; CYRILLIC CAPITAL LETTER HA
+   (#xE9 ?\u0418) ;; CYRILLIC CAPITAL LETTER I
+   (#xEA ?\u0419) ;; CYRILLIC CAPITAL LETTER SHORT I
+   (#xEB ?\u041A) ;; CYRILLIC CAPITAL LETTER KA
+   (#xEC ?\u041B) ;; CYRILLIC CAPITAL LETTER EL
+   (#xED ?\u041C) ;; CYRILLIC CAPITAL LETTER EM
+   (#xEE ?\u041D) ;; CYRILLIC CAPITAL LETTER EN
+   (#xEF ?\u041E) ;; CYRILLIC CAPITAL LETTER O
+   (#xF0 ?\u041F) ;; CYRILLIC CAPITAL LETTER PE
+   (#xF1 ?\u042F) ;; CYRILLIC CAPITAL LETTER YA
+   (#xF2 ?\u0420) ;; CYRILLIC CAPITAL LETTER ER
+   (#xF3 ?\u0421) ;; CYRILLIC CAPITAL LETTER ES
+   (#xF4 ?\u0422) ;; CYRILLIC CAPITAL LETTER TE
+   (#xF5 ?\u0423) ;; CYRILLIC CAPITAL LETTER U
+   (#xF6 ?\u0416) ;; CYRILLIC CAPITAL LETTER ZHE
+   (#xF7 ?\u0412) ;; CYRILLIC CAPITAL LETTER VE
+   (#xF8 ?\u042C) ;; CYRILLIC CAPITAL LETTER SOFT SIGN
+   (#xF9 ?\u042B) ;; CYRILLIC CAPITAL LETTER YERU
+   (#xFA ?\u0417) ;; CYRILLIC CAPITAL LETTER ZE
+   (#xFB ?\u0428) ;; CYRILLIC CAPITAL LETTER SHA
+   (#xFC ?\u042D) ;; CYRILLIC CAPITAL LETTER E
+   (#xFD ?\u0429) ;; CYRILLIC CAPITAL LETTER SHCHA
+   (#xFE ?\u0427) ;; CYRILLIC CAPITAL LETTER CHE
+   (#xFF ?\u042A));; CYRILLIC CAPITAL LETTER HARD SIGN
+ "KOI-8 for the Caucasus."
+ '(documentation 
+   "Note that this does not support old Russian orthography;
+for that, see koi8-o. "))
+
+(loop
+  for (upper lower)
+  in '((?\u04E9 ?\u04E8) ;; BARRED O
+       (?\u04B9 ?\u04B8) ;; CHE WITH VERTICAL STROKE
+       (?\u0452 ?\u0402) ;; DJE
+       (?\u0455 ?\u0405) ;; DZE
+       (?\u04A3 ?\u04A2) ;; EN WITH DESCENDER
+       (?\u049D ?\u049C) ;; KA WITH VERTICAL STROKE
+       (?\u04BB ?\u04BA) ;; SHHA
+       (?\u04AF ?\u04AE) ;; STRAIGHT U
+       (?\u04B1 ?\u04B0) ;; STRAIGHT U WITH STROKE
+       (?\u0497 ?\u0496)) ;; ZHE WITH DESCENDER
+  with case-table = (standard-case-table)
+  do
+  (put-case-table-pair upper lower case-table))
+
+;; Archaic Russian support.
+(make-8-bit-coding-system
+ 'koi8-o
+ '((#x80 ?\u0402) ;; CYRILLIC CAPITAL LETTER DJE
+   (#x81 ?\u0403) ;; CYRILLIC CAPITAL LETTER GJE
+   (#x82 ?\u00B8) ;; CEDILLA
+   (#x83 ?\u0453) ;; CYRILLIC SMALL LETTER GJE
+   (#x84 ?\u201E) ;; DOUBLE LOW-9 QUOTATION MARK
+   (#x85 ?\u2026) ;; HORIZONTAL ELLIPSIS
+   (#x86 ?\u2020) ;; DAGGER
+   (#x87 ?\u00A7) ;; SECTION SIGN
+   (#x88 ?\u20AC) ;; EURO SIGN
+   (#x89 ?\u00A8) ;; DIAERESIS
+   (#x8A ?\u0409) ;; CYRILLIC CAPITAL LETTER LJE
+   (#x8B ?\u2039) ;; SINGLE LEFT-POINTING ANGLE QUOTATION MARK
+   (#x8C ?\u040A) ;; CYRILLIC CAPITAL LETTER NJE
+   (#x8D ?\u040C) ;; CYRILLIC CAPITAL LETTER KJE
+   (#x8E ?\u040B) ;; CYRILLIC CAPITAL LETTER TSHE
+   (#x8F ?\u040F) ;; CYRILLIC CAPITAL LETTER DZHE
+   (#x90 ?\u0452) ;; CYRILLIC SMALL LETTER DJE
+   (#x91 ?\u2018) ;; LEFT SINGLE QUOTATION MARK
+   (#x92 ?\u2019) ;; RIGHT SINGLE QUOTATION MARK
+   (#x93 ?\u201C) ;; LEFT DOUBLE QUOTATION MARK
+   (#x94 ?\u201D) ;; RIGHT DOUBLE QUOTATION MARK
+   (#x95 ?\u2022) ;; BULLET
+   (#x96 ?\u2013) ;; EN DASH
+   (#x97 ?\u2014) ;; EM DASH
+   (#x98 ?\u00A3) ;; POUND SIGN
+   (#x99 ?\u00B7) ;; MIDDLE DOT
+   (#x9A ?\u0459) ;; CYRILLIC SMALL LETTER LJE
+   (#x9B ?\u203A) ;; SINGLE RIGHT-POINTING ANGLE QUOTATION MARK
+   (#x9C ?\u045A) ;; CYRILLIC SMALL LETTER NJE
+   (#x9D ?\u045C) ;; CYRILLIC SMALL LETTER KJE
+   (#x9E ?\u045B) ;; CYRILLIC SMALL LETTER TSHE
+   (#x9F ?\u045F) ;; CYRILLIC SMALL LETTER DZHE
+   (#xA0 ?\u00A0) ;; NO-BREAK SPACE
+   (#xA1 ?\u0475) ;; CYRILLIC SMALL LETTER IZHITSA
+   (#xA2 ?\u0463) ;; CYRILLIC SMALL LETTER YAT
+   (#xA3 ?\u0451) ;; CYRILLIC SMALL LETTER IO
+   (#xA4 ?\u0454) ;; CYRILLIC SMALL LETTER UKRAINIAN IE
+   (#xA5 ?\u0455) ;; CYRILLIC SMALL LETTER DZE
+   (#xA6 ?\u0456) ;; CYRILLIC SMALL LETTER BYELORUSSIAN-UKRAINIAN I
+   (#xA7 ?\u0457) ;; CYRILLIC SMALL LETTER YI
+   (#xA8 ?\u0458) ;; CYRILLIC SMALL LETTER JE
+   (#xA9 ?\u00AE) ;; REGISTERED SIGN
+   (#xAA ?\u2122) ;; TRADE MARK SIGN
+   (#xAB ?\u00AB) ;; LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
+   (#xAC ?\u0473) ;; CYRILLIC SMALL LETTER FITA
+   (#xAD ?\u0491) ;; CYRILLIC SMALL LETTER GHE WITH UPTURN
+   (#xAE ?\u045E) ;; CYRILLIC SMALL LETTER SHORT U
+   (#xAF ?\u00B4) ;; ACUTE ACCENT
+   (#xB0 ?\u00B0) ;; DEGREE SIGN
+   (#xB1 ?\u0474) ;; CYRILLIC CAPITAL LETTER IZHITSA
+   (#xB2 ?\u0462) ;; CYRILLIC CAPITAL LETTER YAT
+   (#xB3 ?\u0401) ;; CYRILLIC CAPITAL LETTER IO
+   (#xB4 ?\u0404) ;; CYRILLIC CAPITAL LETTER UKRAINIAN IE
+   (#xB5 ?\u0405) ;; CYRILLIC CAPITAL LETTER DZE
+   (#xB6 ?\u0406) ;; CYRILLIC CAPITAL LETTER BYELORUSSIAN-UKRAINIAN I
+   (#xB7 ?\u0407) ;; CYRILLIC CAPITAL LETTER YI
+   (#xB8 ?\u0408) ;; CYRILLIC CAPITAL LETTER JE
+   (#xB9 ?\u2116) ;; NUMERO SIGN
+   (#xBA ?\u00A2) ;; CENT SIGN
+   (#xBB ?\u00BB) ;; RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
+   (#xBC ?\u0472) ;; CYRILLIC CAPITAL LETTER FITA
+   (#xBD ?\u0490) ;; CYRILLIC CAPITAL LETTER GHE WITH UPTURN
+   (#xBE ?\u040E) ;; CYRILLIC CAPITAL LETTER SHORT U
+   (#xBF ?\u00A9) ;; COPYRIGHT SIGN
+   (#xC0 ?\u044E) ;; CYRILLIC SMALL LETTER YU
+   (#xC1 ?\u0430) ;; CYRILLIC SMALL LETTER A
+   (#xC2 ?\u0431) ;; CYRILLIC SMALL LETTER BE
+   (#xC3 ?\u0446) ;; CYRILLIC SMALL LETTER TSE
+   (#xC4 ?\u0434) ;; CYRILLIC SMALL LETTER DE
+   (#xC5 ?\u0435) ;; CYRILLIC SMALL LETTER IE
+   (#xC6 ?\u0444) ;; CYRILLIC SMALL LETTER EF
+   (#xC7 ?\u0433) ;; CYRILLIC SMALL LETTER GHE
+   (#xC8 ?\u0445) ;; CYRILLIC SMALL LETTER HA
+   (#xC9 ?\u0438) ;; CYRILLIC SMALL LETTER I
+   (#xCA ?\u0439) ;; CYRILLIC SMALL LETTER SHORT I
+   (#xCB ?\u043A) ;; CYRILLIC SMALL LETTER KA
+   (#xCC ?\u043B) ;; CYRILLIC SMALL LETTER EL
+   (#xCD ?\u043C) ;; CYRILLIC SMALL LETTER EM
+   (#xCE ?\u043D) ;; CYRILLIC SMALL LETTER EN
+   (#xCF ?\u043E) ;; CYRILLIC SMALL LETTER O
+   (#xD0 ?\u043F) ;; CYRILLIC SMALL LETTER PE
+   (#xD1 ?\u044F) ;; CYRILLIC SMALL LETTER YA
+   (#xD2 ?\u0440) ;; CYRILLIC SMALL LETTER ER
+   (#xD3 ?\u0441) ;; CYRILLIC SMALL LETTER ES
+   (#xD4 ?\u0442) ;; CYRILLIC SMALL LETTER TE
+   (#xD5 ?\u0443) ;; CYRILLIC SMALL LETTER U
+   (#xD6 ?\u0436) ;; CYRILLIC SMALL LETTER ZHE
+   (#xD7 ?\u0432) ;; CYRILLIC SMALL LETTER VE
+   (#xD8 ?\u044C) ;; CYRILLIC SMALL LETTER SOFT SIGN
+   (#xD9 ?\u044B) ;; CYRILLIC SMALL LETTER YERU
+   (#xDA ?\u0437) ;; CYRILLIC SMALL LETTER ZE
+   (#xDB ?\u0448) ;; CYRILLIC SMALL LETTER SHA
+   (#xDC ?\u044D) ;; CYRILLIC SMALL LETTER E
+   (#xDD ?\u0449) ;; CYRILLIC SMALL LETTER SHCHA
+   (#xDE ?\u0447) ;; CYRILLIC SMALL LETTER CHE
+   (#xDF ?\u044A) ;; CYRILLIC SMALL LETTER HARD SIGN
+   (#xE0 ?\u042E) ;; CYRILLIC CAPITAL LETTER YU
+   (#xE1 ?\u0410) ;; CYRILLIC CAPITAL LETTER A
+   (#xE2 ?\u0411) ;; CYRILLIC CAPITAL LETTER BE
+   (#xE3 ?\u0426) ;; CYRILLIC CAPITAL LETTER TSE
+   (#xE4 ?\u0414) ;; CYRILLIC CAPITAL LETTER DE
+   (#xE5 ?\u0415) ;; CYRILLIC CAPITAL LETTER IE
+   (#xE6 ?\u0424) ;; CYRILLIC CAPITAL LETTER EF
+   (#xE7 ?\u0413) ;; CYRILLIC CAPITAL LETTER GHE
+   (#xE8 ?\u0425) ;; CYRILLIC CAPITAL LETTER HA
+   (#xE9 ?\u0418) ;; CYRILLIC CAPITAL LETTER I
+   (#xEA ?\u0419) ;; CYRILLIC CAPITAL LETTER SHORT I
+   (#xEB ?\u041A) ;; CYRILLIC CAPITAL LETTER KA
+   (#xEC ?\u041B) ;; CYRILLIC CAPITAL LETTER EL
+   (#xED ?\u041C) ;; CYRILLIC CAPITAL LETTER EM
+   (#xEE ?\u041D) ;; CYRILLIC CAPITAL LETTER EN
+   (#xEF ?\u041E) ;; CYRILLIC CAPITAL LETTER O
+   (#xF0 ?\u041F) ;; CYRILLIC CAPITAL LETTER PE
+   (#xF1 ?\u042F) ;; CYRILLIC CAPITAL LETTER YA
+   (#xF2 ?\u0420) ;; CYRILLIC CAPITAL LETTER ER
+   (#xF3 ?\u0421) ;; CYRILLIC CAPITAL LETTER ES
+   (#xF4 ?\u0422) ;; CYRILLIC CAPITAL LETTER TE
+   (#xF5 ?\u0423) ;; CYRILLIC CAPITAL LETTER U
+   (#xF6 ?\u0416) ;; CYRILLIC CAPITAL LETTER ZHE
+   (#xF7 ?\u0412) ;; CYRILLIC CAPITAL LETTER VE
+   (#xF8 ?\u042C) ;; CYRILLIC CAPITAL LETTER SOFT SIGN
+   (#xF9 ?\u042B) ;; CYRILLIC CAPITAL LETTER YERU
+   (#xFA ?\u0417) ;; CYRILLIC CAPITAL LETTER ZE
+   (#xFB ?\u0428) ;; CYRILLIC CAPITAL LETTER SHA
+   (#xFC ?\u042D) ;; CYRILLIC CAPITAL LETTER E
+   (#xFD ?\u0429) ;; CYRILLIC CAPITAL LETTER SHCHA
+   (#xFE ?\u0427) ;; CYRILLIC CAPITAL LETTER CHE
+   (#xFF ?\u042A));; CYRILLIC CAPITAL LETTER HARD SIGN
+ "KOI-8 for old-orthography Russian; also known as KOI-C."
+ '(mnemonic ",L:>(B"
+   documentation
+   "KOI-8 for old-orthography Russian; also known as KOI-C.
+
+This is mostly compatible with KOI8-R in the alphabetic characters, and
+provides ,L&v(B, %GѲѳ%@, %GѢѣ%@, and %GѴѵ%@ instead of some of the box-drawing characters.  "))
+
+(loop
+  for (upper lower)
+  in '((?\u0472 ?\u0473) ;; FITA
+       (?\u0474 ?\u0475) ;; IZHITSA
+       (?\u0408 ?\u0458) ;; JE
+       (?\u0462 ?\u0463)) ;; YAT
+  with case-table = (standard-case-table)
+  do
+  (put-case-table-pair upper lower case-table))
+
+(provide 'cyrillic)
+
+;;; cyrillic.el ends here
\ No newline at end of file