Messages in this thread Patch in this message |  | | Date | Thu, 26 Sep 1996 04:58:07 +0200 (MET DST) | From | Juergen Ehling <> | Subject | lx-2.0.10: semigraphics, fixed console code-page switching |
| |
Couldn't do semigrafics when using 7bit codes after switching to "second alternate code page" with ansi (at least: SCO) style control sequence "ESC[12m". The kernel properly sets "toggle_meta" to 1, maps the 7bit code to unicode but fails to convert that to the 8bit code for the screen; instead delivers the original 7bit code (so we get "MM" instead of "==" etc.)
The reason is the failing test for validity of a hash table, which isn't used any longer but seems not definitely to be discarded, as some remains still hang around. The following fix gave me my semigraphics and hopefully will not be destructive in other ways, as I couldn't check for the necessity of this test regarding the validity of the "paged" tables, now used instead of hashing.
I experienced the problem while using iBCS on old Xenix programms, so I send this mail to the iBCS list either.
- - Hans-Juergen Ehling | Berner Str. 4, 12205 Berlin | NETZ ohne ZENSUR !! | Voice +49 30 8470 98 66 | OFFENE Software !! | E-Mail eh@eclipse.aball.de | LINUX! Stoppt M$ !!
------------------- uni_to_pc conversion patch --------------------------- diff -u -r lx/drivers/char/consolemap.c /usr/src/linux-2.0.10/drivers/char/consolemap.c --- lx/drivers/char/consolemap.c Sat Jun 8 15:14:39 1996 +++ /usr/src/linux-2.0.10/drivers/char/consolemap.c Thu Sep 26 03:24:05 1996 @@ -457,9 +457,14 @@ * UNI_DIRECT_MASK indicates the bit span of the region. */ else if ( (ucs & ~UNI_DIRECT_MASK) == UNI_DIRECT_BASE ) - return ucs & UNI_DIRECT_MASK; - - if (!hashtable_contents_valid) + return ucs & UNI_DIRECT_MASK; + + /* Currently (lx-2.0.10, 960926) hashtable_contents_ _never_ valid, so no + * unicode is eval'ed by uni_pagedir. Thus switching to second alternate + * code page (SCO, right) without effect. Is there still any function for + * this test? Thus cancel or replace! eh@eclipse.aball.de + */ + if (0 && !hashtable_contents_valid) return -3;
if ( (p1 = uni_pagedir[ucs >> 11]) && ------------------- uni_to_pc conversion patch - end----------------------
|  |