[Subject Prev][Subject Next][Thread Prev][Thread Next][Subject Index][Thread Index]
[OSASK 2928] Re: GUIGUI code conv.
- Subject: [OSASK 2928] Re: GUIGUI code conv.
- From: Hidemi KAWAI <kawai !Atmark! imasy.org>
- Date: Mon, 14 Jan 2002 10:35:53 -0000
こんばんは、川合です。
I.Tak. さんは 2002/01/14 14:26:24 の「[OSASK 2927] GUIGUI code c
onv Re: Fullset EUC」で書きました:
> GLやGRはC0、空白、DEL、C1を含みません。GR側に空白は無いのです。
がーん。そうだったのか・・・僕はなんと恥ずかしい誤解を・・・。
> 文字集合の話にはエンコードを離れて群面区点番号(コードではない)
>を使うものです、ということでした。ひらがなは第三面ですね。
それは、2000JISの中に組み込むとしたら、の話ですよね?・・・そ
うではなくて、川合語として・・・っていうか、こんなどうでもいいこ
とにこだわってもしょうがないですね。この話はやめます(笑)。
> ……ナニワともあれ(^^; シフトJISを含む変換ルーチンができました。
>http://home1.catvmics.ne.jp/~msy/tak/garage/ggc.lzh
みてみました。SJISの部分が「本当にこれでOKなのか?」という感じ
です(笑)。次のバージョンか、もしかしたらその次のバージョンにな
るかもしれませんが、それくらいには組み込みます。今はディスク周り
を重点的に拡張しているところなので。・・・どっちにしても、1週間
以内に組み込めると思います。しばらくお待ちください。
> それで質問です。MS拡張文字の変換はどういう仕組みなんですか?
>六つあるうちの第何面がベースいくつで、というのを教えてください。
ああなるほど。そういえばその辺の説明をしていませんでした。今か
ら説明します。
<全角文字領域>
・+0x00000〜0x4507f : JISの0x2121〜0x7e7e (第一水準〜第三水準)
・+0x45080〜0x47f7f : NEC拡張の0x7921〜0x7c7e相当 [7f21-827e]
・+0x47f80〜0x496ff : リザーブ (全角188文字分) [8321〜847e]
・+0x49700〜0x49bdf : Win拡張 シフトJISコード 0xfa-0x40〜0xfa-0x5b [8521〜853c]
・+0x49be0〜0x49bff : リザーブ (全角12文字分) [853d〜8548]
ということになっているので、こうしてください。
---
a : 第一バイト, b : 第二バイト
x = (a - 0xfa) * 94 + (b - 0x40);
if ((unsigned) b >= 0x80)
x--;
で計算されるxに対して、以下の方法で、yを求める。
0 <= x <= 27 : y = x * 2 + 0x4970 + base1;
28 <= x : y = (x - 28) * 2 + 0x4508 + base1;
= x * 2 - 0x38 + 0x4508 + base1;
そして、(y), (y + 1)を出力すればよい。
---
例によって、ソースにコメントです。
> if (al ccB 94) { /* GRのみ (0xffを許すと半角256個まで溢れる) */
うーん、微妙ですねえ・・・(笑)。
OKです。半角256文字ならやっちゃってください。切りをよくするた
めに、94x94の後には全角188文字+半角384文字以上が存在するので。多
分このルールは今後も守りますし。
97行目をEDX = EAX;にすれば、129行目はなくせそうです。
106行目や、122行目の*2は、EAXにつけるのを間違っているんですよ
ね?
それと、
>MITSUNARI's way:
> x=(x^0x20)-0xa1;
これと、実際に実装されているコード
> al ^= 0xa0;
> al -= 0x21;
とが微妙に違う気がするんですが、どっちが正しいのでしょうか?もし
やどっちも同じ結果になる???いや、ならないみたいですね。これは
実装の方が書き違ったみたいです。
それにしても、全体的にかなり精練されていますね。・・・この調子
で全部のルーチンをいじられたら、OSASKは半分くらいになってしまう
かもしれません。だあああ〜。ま、いいです。今は雑に作っている段階
なので(いいわけ)。
仕様面での問題は全く見付けられませんでした。おまけ機能であるグ
ラフィックキャラクターへの変換よりも、面倒な場合分けを減らすこと
を優先しているみたいですし。
> OSASK/TOWNSでもVRAM幅800ができました!近日発表です。
>ちなみに800と768は差が32しか無く、横スクロールが無駄な感じです。
言えてますね・・・。1024x512では縦スクロールが無駄っぽくて、80
0x655では横スクロールが無駄っぽいですか・・・。
yが600を超えればいいわけですから、xを800以上にしていただいても
いいんですが・・・。まあ、I.Tak.さんのセンスにお任せします。
AT版の方も800x600にこだわる必要はないんですが、800x600モードと
描画ルーチンを兼用にしている関係で、結局800x600になっています。
それでは。
--
川合 秀実(KAWAI Hidemi)
川合堂社長 / OSASK計画総指揮 / カーネル開発班
E-mail:kawai !Atmark! imasy.org
Homepage http://www.imasy.org/~kawai/