2015年5月6日水曜日

パソピアの漢字コード変換

前回、PASOPIA7用のワープロソフト「WORK7」で日本語を入力したが、かな入力はまだしも、単漢字変換で、文章を作成するのはとても大変。

テキストファイルをパソピアの漢字コードにコンバートするプログラムを考えてみる。

前回のブログで記載したが、前回のブログでパソピア/7の漢字コードは、区番号と点番号のから計算できる。(区番号と点番号は、Wikiなどを参考)
漢字コード=(区番号-1)×94+(点番号-1)+256

以下のアプリを作ってみたので、ここからダウンロードできます。
 ・Kanji Converter(KanjiConv.exe):S-JISコードをPasopia7の漢字コードに変換
  Windowsプログラムです。以下のファイル形式で保存できます。
  (1) バイナリ(*.bin)で保存
   2バイト毎で漢字コード(リトルエンディアン)が保存されます。
   ファイルサイズは、2048バイトの倍数でサイズ調整(0埋め)されます。
  (2) CSVで保存
   漢字コードは、10進数のカンマ区切りで出力されます。

 ・Display Kanji(DispKJ.bin)
  パソピアのRAM PAC2イメージです。以下のXPAC2の以下コマンドでマウントできます。
   sv 3 text.rom
  以下の2つのBASICプログラムが登録されいます。
  (1)DISPKJ:XPAC2に保存された漢字コードのバイナリデータを読み込んで表示します。
   Kanji Converterで作成したバイナリの漢字コードを利用できます。
  (2)MANUAL:XPAC2のマニュアルの一部を表示します。
   Kanji Converterで作成したCSVを使っています。
  ※(1)(2)共に、プログラム実行前に「SCREEN 1」又は「SCREEN 2」にしておきます。

以下、使い方です。

S-JISテキストをパソピアの漢字コードに変換するWinアプリ「KanjiConv.exe」(.NET 4.0が必要)

ファイルからS-JISテキストファイルを読み込む、もしくはテキストボックスに直接テキストを読み込み、Saveボタンを押します。
ファイルを保存ダイアログで、バイナリ(*.bin)で保存するか、CSVで保存するか選択します。

バイナリで保存した場合、2バイト毎で漢字コード(リトルエンディアン)が保存されます。
ファイルサイズは、XPAC2で読み込めるように、2048バイトの倍数でサイズ調整(0埋め)されます。

例えば、text.binと保存したバイナリファイルを、スロット3(デバイス番号6)に保存する場合、コマンドプロンプト「CMD」で、以下のように実行します
sv 3 text.rom

パソピア7でバイナリの漢字コードを読み込んで表示するプログラム「DISPKJ」を用意しました。
10 'XPAC2 Display Kanji (C) 2015 zak
20 R$=CHR$(13)+CHR$(10)
30 INPUT"Width ";W:WIDTH W
40 PRINT"Select Slot Number."
50 PRINT"[3] 64KB MRAM (DEVICE 6)"
60 PRINT"[4] 64KB MRAM (DEVICE 5)"
70 PRINT"[5]  8KB SRAM"
80 PRINT"[6]  4KB SRAM"
90 PRINT"[7]  2KB SRAM"
100 INPUT S:IF S<3 OR S>7 GOTO 40
110 INPUT"Start Address &H",A$
120 L=VAL("&H"+RIGHT$("00"+A$,2))
130 H=VAL("&H"+LEFT$(RIGHT$("0000"+A$,4),2))
140 LOCATE 0,24
150 OUT &H1B,S:OUT &H19,H:OUT &H18,L:A=INP(&H1A)
160 IF L<255 THEN L=L+1 ELSE L=0:H=H+1
170 OUT &H1B,S:OUT &H19,H:OUT &H18,L:B=INP(&H1A)
180 K=B*256+A:IF K=0 THEN PRINT R$:END
190 IF K=255 THEN X=0:PRINT R$:GOTO 220
200 PUT%(X,23),KANJI(K),7
210 IF X<W-2 THEN X=X+2 ELSE X=0:PRINT R$
220 IF L<255 THEN L=L+1 ELSE L=0:H=H+1
230 GOTO 150

パソピア7の場合は、200行目にあるPUT%()命令でテキスト画面に漢字を表示することかできます。
「SCREEN 1」もしくは「SCREEN 2」で実行します。プログラムを実行すると画面幅を聞かれますので、40 or 80を入力します。続いてバイナリの漢字コードが保存されているスロット(上記の例の場合は3)を選択し、読み込み開始アドレスを入力します。

「KanjiConv.exe」アプリでCSVに漢字コードを保存した場合、そのままDATA文としてコードに書き込むことで漢字コードを利用して画面表示できます。

CSVの漢字コードをDATA文に組み込んで、XPAC2のマニュアルの一部を表示するプログラム「MANUAL」を用意しました。
こちらもPUT%を使っているので、実行前に「SCREEN 1」もしくは「SCREEN 2」にしておきます。
10 'XPAC2 Display Manual (C) 2015 zak
20 R$=CHR$(13)+CHR$(10)
30 WIDTH 80
40 LOCATE 0,24
50 READ K
60 IF K=0 THEN PRINT R$:END
70 IF K=255 THEN X=0:PRINT R$:GOTO 50
80 PUT%(X,23),KANJI(K),7
90 IF X<80-2 THEN X=X+2 ELSE X=0:PRINT R$
100 GOTO 50

300 DATA 680,660,683,633,286,466,4440,650,714,691,642,283,672,313,499,491
・・・(略)
2610 DATA 550,599,562,258,255,0

以下のように、スクロールしながらマニュアルが表示されます。

これで、日本語表示がいくぶん楽にできるようになった。。

0 件のコメント:

コメントを投稿