Module Name: src
Committed By: tsutsui
Date: Sat Jun 25 03:57:18 UTC 2022
Modified Files:
src/sys/arch/x68k/dev: ite_tv.c
Log Message:
Restore EUC-JP support broken since rev 1.16.
I committed a wrong branch in the previous and it included wip version:
https://mail-index.netbsd.org/source-changes-d/2022/06/25/msg013708.html
This version is based on a fix from isaki@ and also confirmed me.
To generate a diff of this commit:
cvs rdiff -u -r1.18 -r1.19 src/sys/arch/x68k/dev/ite_tv.c
Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.
Modified files:
Index: src/sys/arch/x68k/dev/ite_tv.c
diff -u src/sys/arch/x68k/dev/ite_tv.c:1.18 src/sys/arch/x68k/dev/ite_tv.c:1.19
--- src/sys/arch/x68k/dev/ite_tv.c:1.18 Sat Jun 25 03:18:38 2022
+++ src/sys/arch/x68k/dev/ite_tv.c Sat Jun 25 03:57:17 2022
@@ -1,4 +1,4 @@
-/* $NetBSD: ite_tv.c,v 1.18 2022/06/25 03:18:38 tsutsui Exp $ */
+/* $NetBSD: ite_tv.c,v 1.19 2022/06/25 03:57:17 tsutsui Exp $ */
/*
* Copyright (c) 1997 Masaru Oki.
@@ -31,7 +31,7 @@
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: ite_tv.c,v 1.18 2022/06/25 03:18:38 tsutsui Exp $");
+__KERNEL_RCSID(0, "$NetBSD: ite_tv.c,v 1.19 2022/06/25 03:57:17 tsutsui Exp $");
#include <sys/param.h>
#include <sys/device.h>
@@ -294,17 +294,17 @@ tv_getfont(int cset, int ch)
static void
tv_putc_nm(struct ite_softc *ip, int ch, char *p)
{
- short fh, hi;
+ short fh, hi, lo;
volatile uint16_t *kf;
uint8_t *f;
hi = ip->save_char & 0x7f;
+ lo = ch & 0x7f;
- if (hi >= 0x21 && hi <= 0x7e &&
- (ch & 0x7f) >= 0x21 && (ch & 0x7f) <= 0x7e) {
+ if (hi >= 0x21 && hi <= 0x7e && lo >= 0x21 && lo <= 0x7e) {
/* multibyte character */
kf = (volatile uint16_t *)tv_kfont[hi];
- kf += (ch & 0x7f) * FONTHEIGHT;
+ kf += lo * FONTHEIGHT;
/* draw plane */
for (fh = 0; fh < FONTHEIGHT; fh++, p += ROWBYTES)
*(uint16_t *)p = *kf++;
@@ -322,17 +322,17 @@ tv_putc_nm(struct ite_softc *ip, int ch,
static void
tv_putc_in(struct ite_softc *ip, int ch, char *p)
{
- short fh, hi;
+ short fh, hi, lo;
volatile uint16_t *kf;
uint8_t *f;
hi = ip->save_char & 0x7f;
+ lo = ch & 0x7f;
- if (hi >= 0x21 && hi <= 0x7e &&
- (ch & 0x7f) >= 0x21 && (ch & 0x7f) <= 0x7e) {
+ if (hi >= 0x21 && hi <= 0x7e && lo >= 0x21 && lo <= 0x7e) {
/* multibyte character */
kf = (volatile uint16_t *)tv_kfont[hi];
- kf += (ch & 0x7f) * FONTHEIGHT;
+ kf += lo * FONTHEIGHT;
/* draw plane */
for (fh = 0; fh < FONTHEIGHT; fh++, p += ROWBYTES)
*(uint16_t *)p = ~*kf++;
@@ -350,18 +350,18 @@ tv_putc_in(struct ite_softc *ip, int ch,
static void
tv_putc_bd(struct ite_softc *ip, int ch, char *p)
{
- short fh, hi;
+ short fh, hi, lo;
u_int data;
volatile uint16_t *kf;
uint8_t *f;
hi = ip->save_char & 0x7f;
+ lo = ch & 0x7f;
- if (hi >= 0x21 && hi <= 0x7e &&
- (ch & 0x7f) >= 0x21 && (ch & 0x7f) <= 0x7e) {
+ if (hi >= 0x21 && hi <= 0x7e && lo >= 0x21 && lo <= 0x7e) {
/* multibyte character */
kf = (volatile uint16_t *)tv_kfont[hi];
- kf += (ch & 0x7f) * FONTHEIGHT;
+ kf += lo * FONTHEIGHT;
/* draw plane */
for (fh = 0; fh < FONTHEIGHT; fh++, p += ROWBYTES) {
data = *kf++;
@@ -399,17 +399,17 @@ expbits(uint32_t data)
static void
tv_putc_ul(struct ite_softc *ip, int ch, char *p)
{
- short fh, hi;
+ short fh, hi, lo;
volatile uint16_t *kf;
uint8_t *f;
hi = ip->save_char & 0x7f;
+ lo = ch & 0x7f;
- if (hi >= 0x21 && hi <= 0x7e &&
- (ch & 0x7f) >= 0x21 && (ch & 0x7f) <= 0x7e) {
+ if (hi >= 0x21 && hi <= 0x7e && lo >= 0x21 && lo <= 0x7e) {
/* multibyte character */
kf = (volatile uint16_t *)tv_kfont[hi];
- kf += (ch & 0x7f) * FONTHEIGHT;
+ kf += lo * FONTHEIGHT;
/* draw plane */
for (fh = 0; fh < UNDERLINE; fh++, p += ROWBYTES)
*(uint16_t *)p = *kf++;
@@ -435,18 +435,18 @@ tv_putc_ul(struct ite_softc *ip, int ch,
static void
tv_putc_bd_in(struct ite_softc *ip, int ch, char *p)
{
- short fh, hi;
+ short fh, hi, lo;
u_int data;
volatile uint16_t *kf;
uint8_t *f;
hi = ip->save_char & 0x7f;
+ lo = ch & 0x7f;
- if (hi >= 0x21 && hi <= 0x7e &&
- (ch & 0x7f) >= 0x21 && (ch & 0x7f) <= 0x7e) {
+ if (hi >= 0x21 && hi <= 0x7e && lo >= 0x21 && lo <= 0x7e) {
/* multibyte character */
kf = (volatile uint16_t *)tv_kfont[hi];
- kf += (ch & 0x7f) * FONTHEIGHT;
+ kf += lo * FONTHEIGHT;
/* draw plane */
for (fh = 0; fh < FONTHEIGHT; fh++, p += ROWBYTES) {
data = *kf++;
@@ -468,17 +468,17 @@ tv_putc_bd_in(struct ite_softc *ip, int
static void
tv_putc_ul_in(struct ite_softc *ip, int ch, char *p)
{
- short fh, hi;
+ short fh, hi, lo;
volatile uint16_t *kf;
uint8_t *f;
hi = ip->save_char & 0x7f;
+ lo = ch & 0x7f;
- if (hi >= 0x21 && hi <= 0x7e &&
- (ch & 0x7f) >= 0x21 && (ch & 0x7f) <= 0x7e) {
+ if (hi >= 0x21 && hi <= 0x7e && lo >= 0x21 && lo <= 0x7e) {
/* multibyte character */
kf = (volatile uint16_t *)tv_kfont[hi];
- kf += (ch & 0x7f) * FONTHEIGHT;
+ kf += lo * FONTHEIGHT;
/* draw plane */
for (fh = 0; fh < UNDERLINE; fh++, p += ROWBYTES)
*(uint16_t *)p = ~*kf++;
@@ -504,18 +504,18 @@ tv_putc_ul_in(struct ite_softc *ip, int
static void
tv_putc_bd_ul(struct ite_softc *ip, int ch, char *p)
{
- short fh, hi;
+ short fh, hi, lo;
u_int data;
volatile uint16_t *kf;
uint8_t *f;
hi = ip->save_char & 0x7f;
+ lo = ch & 0x7f;
- if (hi >= 0x21 && hi <= 0x7e &&
- (ch & 0x7f) >= 0x21 && (ch & 0x7f) <= 0x7e) {
+ if (hi >= 0x21 && hi <= 0x7e && lo >= 0x21 && lo <= 0x7e) {
/* multibyte character */
kf = (volatile uint16_t *)tv_kfont[hi];
- kf += (ch & 0x7f) * FONTHEIGHT;
+ kf += lo * FONTHEIGHT;
/* draw plane */
for (fh = 0; fh < UNDERLINE; fh++, p += ROWBYTES) {
data = *kf++;
@@ -551,18 +551,18 @@ tv_putc_bd_ul(struct ite_softc *ip, int
static void
tv_putc_bd_ul_in(struct ite_softc *ip, int ch, char *p)
{
- short fh, hi;
+ short fh, hi, lo;
u_int data;
volatile uint16_t *kf;
uint8_t *f;
hi = ip->save_char & 0x7f;
+ lo = ch & 0x7f;
- if (hi >= 0x21 && hi <= 0x7e &&
- (ch & 0x7f) >= 0x21 && (ch & 0x7f) <= 0x7e) {
+ if (hi >= 0x21 && hi <= 0x7e && lo >= 0x21 && lo <= 0x7e) {
/* multibyte character */
kf = (volatile uint16_t *)tv_kfont[hi];
- kf += (ch & 0x7f) * FONTHEIGHT;
+ kf += lo * FONTHEIGHT;
/* draw plane */
for (fh = 0; fh < UNDERLINE; fh++, p += ROWBYTES) {
data = *kf++;