BASIC とその漢字コードについて

PC-88 で動作する、漢字が文字列として直接扱える BASIC には以下のものがありました。

これらの BASIC では、日本語文字列をそれぞれ異なる内部形式で保持していたため、バイナリレベルでの互換性は全くありませんでした。N88-日本語BASIC および 新8801漢字BASIC には、他の BASIC で利用している形式のコンバータがあったので、これを利用することで文字列の相互利用を可能にしていました。もし今、これらの BASIC のデータをサルベージしなければいけなくなったらどうするか。何も資料として残らないと大変なので、ここに資料を残したいと思います。

なお、PC-8001mkII用に N80-漢字BASIC(NEC, PC-8037K-2W(K)) という BASIC(要JIS第一水準漢字ROM)がありますが、これはN88-漢字BASICと同様と考えられます。


1.それぞれの BASIC が扱えた文字集合

これから内部形式を説明する BASIC と、それらが扱うことができた文字集合の違いは以下の通りです。

BASIC 対応機種 グラフィックキャラクタ 半角2バイト文字 備考
N88-日本語BASIC PC-8801mkIISR以降
×
×
Shift JIS
MS-DOS版
N88-日本語BASIC(86)
PC-9800シリーズ
+MS-DOS
スタンドアロン版
N88-日本語BASIC(86)
PC-9800シリーズ
(NEC 漢字)
8801漢字BASIC,
新8801漢字BASIC
PC-8800シリーズ*
(独自方式)
N88-漢字BASIC PC-8800シリーズ*
×
(独自方式)
*: PC-8801(無印) の場合、JIS 第一水準漢字 ROM が必要です。
△:PC-9801 の半角2バイト文字は、PC-8801のそれとは異なります。

この表に関しては詳細な資料が残っていません。間違っているようでしたらご指摘下さい。

なお、MS-DOS版N88-日本語BASIC(86) は N88-日本語BASICと同じ Shift JIS なので、以下「N88-日本語BASIC(86)」とあるのはスタンドアロン版(DOSを介さず起動する版)のことを指します。

2.実際の文字コード形式

以下に、これらの BASIC が "AB日本語CD" という文字列をどのように扱っているかを示します。

文中 KI / KO とあるのは、それぞれ Kanji In / Kanji Out の略で、漢字(2バイト文字)の開始・終了の制御文字を指します。

N88-日本語BASIC/MS-DOS 版 N88-日本語BASIC(86)

N88-日本語BASICの文字コード
A B C D
41 42 93 FA 96 7B 8C EA 43 44
(10bytes)
MS-DOS版 N88-日本語BASIC(86)の文字コード Shift JIS コードのため、全角文字は2バイト、半角文字は1バイトで表現される。MS-DOS、Windows の文字コード(CP932)なども ほぼ Shift JIS コードである。

スタンドアロン版N88-日本語BASIC(86)

スタンドアロン版 N88-日本語BASIC(86)の文字コード
A B KI KO C D
41 42 1B 4B 46 7C 4B 5C 38 6C 1B 48 43 44
(14bytes)
JISコードの前にKI(ESC K)/KO(ESC H)コードを付ける。PC-PR201(プリンタ)の制御コードと同じである。

8801漢字BASIC/新8801漢字BASIC

8801漢字BASICの文字コード
A B KI KO C D
41 42 7F C6 FC CB DC B8 EC 7F 43 44
(12bytes)
新8801漢字BASICの文字コード JISコードの、8/16ビット目を1にしたコードの前後に、KI/KOコードを付ける。

N88-漢字BASIC

N88-漢字BASICの文字コード
A B KI KO C D
41 42 FA 7C 46 DC* 4B 6C 38 FD 43 44
(12bytes) *漢字コードとしては 5C だが、下位・上位それぞれの最上位ビットが1になることがある。
JISコードを、下位→上位バイトの順に並べ、前後にKI/KOコードを付ける。

3.8801漢字BASIC/新8801漢字BASICの2バイト半角文字

8801漢字BASIC/新8801漢字BASICの2バイト半角文字コード表 8801漢字BASIC/新8801漢字BASICの2バイト1/4角文字コード表 PC-8001/8801の1バイト半角文字コード表

念のため、コード表を作ってみました。中央の表は2バイト1/4角です。右側に、比較用の88が元から持っている非漢字のコード表を並べてみました。

4.N88-日本語BASIC(86)の2バイト半角文字

スタンドアロン版 N88-日本語BASIC(86)の2バイト半角文字コード表 MS-DOS版 N88-日本語BASIC(86)の2バイト半角文字コード表 PC-9801の1バイト半角文字コード表

こちらも比較のため、コード表を作ってみました。左がJISコード、右がShift_JISコードです。88との違いは、平仮名がなく罫線があることと、片仮名の配置です。右側に、比較用の98が元から持っている非漢字のコード表を並べてみました。


漢字コードコンバータについて

8801漢字BASICの漢字コードコンバータ 8801漢字BASICに標準添付されている漢字コードコンバータは、N88-日本語BASIC(86)との相互変換のみ可能です。
新8801漢字BASICの漢字コードコンバータ N88-日本語BASICの漢字コードコンバータ

N88-日本語BASIC、新8801漢字BASICに標準添付されている漢字コードコンバータは、更に多機能になっています。もしWindowsなど最近のシステム用に変換をかけるつもりであれば、N88-日本語BASIC用に変換をかけると Shift JIS になります。また、N88-漢字BASICの変換のみ一方通行です。

なお、コンバータ自体は、次のようなファイルの変換が可能です。

  1. シーケンシャルファイル:ドキュメントファイルなど、普通のテキストファイル。BASICのプログラムの場合は、アスキーセーブ(内部形式ではなく、テキスト形式による保存)をしてから、こちらで変換をかけます。
  2. ランダムファイル:レコード長固定のファイル。フィールドの形態を指定するため、途中に数値データなどが含まれていても問題ない。

また、変換先の BASIC でサポートしていない文字については、グラフィックキャラクタの場合は空白に、半角2バイト文字については全角2バイト文字に変換されます。

参考文献:月刊マイコン 1987年2月号付録

PC-8801MA付属のファイルコンバータ MAなどのシステムディスクには、ワープロソフトとN88-日本語BASICとのコンバータも付属します。

N88/MS-DOSファイルコンバータ PC-9801 用 MS-DOS 6.2 拡張機能セットなどに添付されているファイルコンバータ(FILECONV.EXE)も、ファイルコンバート時にスタンドアロン版N88-日本語BASIC(86)の漢字コードと Shift JIS との変換が可能です。

PC-8801 用のフロッピーも、2HD・2Dともに対応しています。2Dの場合は、認識までしばらく時間がかかります(2DDでも試行するため)。

今だから使うPC-88へ戻る

TopPage工場のご案内(Top page)へ戻る