=MSXの寿命を長くするプロジェクト<番外編2>=

//MSXパソコンを表計算として使う//

電卓、関数電卓、ポケコン、パソコンと計算のスタイルは変わっていきました。
BASICは汎用言語とも呼ばれ、いろいろな用途に適した言語でした。
マシン語では苦手とした計算などをPCの言語が変わってできるようになりました。
Officeソフトに投資ができない方は自作にトライしてみてはどうでしょうか?

MSX2+で使える漢字BASIC

 
いままでのMSXでは英数ひらがなのみの対応で日本語の漢字表示はできませんでした。
MSXにはワープロパソコンという機能がオプションで付いておりましたが、
漢字がパソコンでできない事は当時の「日本語ブーム」では致命的なところでもありました。
この問題を解消したのが漢字BASICでMSX2+より日本語変換が実装されました。
MSX2+モードを使うことでMSXPLAYer、BlueMSXにも実装されています。

漢字BASICが搭載していない機種も対応したページ(2回目以降)
(MSX/MSX2/1chipMSX)では以下のURLになります。

http://www.geocities.jp/fullmsx2/u-yan/word-process5.html


プログラムができれば…
ワープロでパソコン、パソコンでワープロ。さらには表計算、そういった事がMSXで可能になります。

MSX:B-Sheet

このプロジェクトは普通のMSXBASICで縦横計算できるようにメモリする使い方から始まり
テキストエディタで表計算するプログラム、さらには漢字入力もできてセル移動ができる
プログラムを作ってみました。このセルでどう処理をするかを作れば表計算ができそうです!


*ウクセル
テキストエディタで表計算するプログラム:http://f28.aaa.livedoor.jp/%7Euyanexp/center/uxcel.html
*B-Sheet
表計算に近いイメージのプログラム:http://www.geocities.jp/fullmsx2/u-yan/b-sheet/index.html


表計算できないMSX2+パソコンは表を計算として使う

MSX-JEカートリッジの漢字BASICは拡張されたBASICで漢字を入力できます。
また、MSX2+パソコンがあればシフトJISのテキストを入力することができます。
MSX2ではひらがな、カタカナと限られた文字が漢字まで広がります。

<<モードの設定>>
<<表を作ろう、文字データ>
<<座標を間違えた場合>>
<<表を作ろう、数値データ>
<<座標を参照して合計を出す>>
<<エクセルからMSXへ>>
<<応用として>>




MSX:表を計算する

==MSXBASICで表を計算する==

品名:[1,1]
Coffee
価格[1,2]
120
数量[1,3]
1
と、入力しますと、合計が出ます。
合計
120
となります。
品名を入力しないで[Enter]キーを入れると総計になります。

なお、お試し版のため^^;保存できません。

<< kodukai.lzh を ダウンロード >>


<<モードの設定、入力方法>>

次のコマンドを入力します。

CALL KANJI 3:WIDTH 80

※MSXPLAYerではインターレースではなく、解像度が512×424になります。

MSXは縦が12行と24行、横が32と40、縮小で64か80のサイズになります。
CALLKANJIはお好みのモード1〜3を選んでください。
以下のようなエラーメッセージがある機種は対応していません。

CALL KANJI 3:WIDTH 80
Syntax error
Ok


・仮想端末モードON/OFF

文字変換のできる仮想端末モードの説明です。
仮想端末モードはCALLKANJIを入力した後から有効になります。
PRINT"を入力して、次のコマンドで入ります。
[Ctrl]+[     ]、Ctrlを押しながら[      ](スペース)を押します。
文字を入力し終えた場合はこの仮想端末をOFFにします。

・ローマ字変換はF1キー

MSX2+パソコンの場合はKIを入れると「き」と表示できればここまでです。
この機能がないMSXPLAYerなどの単漢字実装機の場合は
MSX2のローマ字かな変換モードに入るため[Shift]+右の[Alt](実機はかな)を押します。

漢字BASIC

「かん」とローマ字入力すると「かん」の後に変換候補群が現れます。
スペースで変換します。→で次候補、←で前候補、↓で次候補群、↑全候補群
確定は[Enter](RETURN)です。キャンセルは[Esc]です。

これで漢字BASICの入力方法はわかりましたね。

・漢字BASICでエラーが出る命令

CLS命令はエラーが出ます。CLSをしたい時はPRINT CHR$(12)または
CALL CLSを使います。

表計算ソフトはインターフェイスですから決められた操作というわけです。
何かのボタンを押すと合計が計算されるという操作などありますね。
「S.検索 R.置き換え >>」という表示で、漢字BASICはどちらかと言えば
MS-DOSのデータベースのような操作を得意とします。

・漢字変換ROM

 漢字変換ROMが実装されているMSX2+では
連文節変換ができますが、
RAMではないので書き換えることはできません。
非公式MSXエミュレータでは使うことができません。

・漢字BASICのメモリー不足

 漢字BASICにはグラフィックモードというものがあります。
このモードはグラフィックモードに漢字を表示することができます。
 数画面程度のBASICプログラムを組むと動かなくなる場合があります。


<<BASICで表を作ろう、文字入力>>

もっと、さらっと誰でもわかるようにしてみます。
MSXBASICで日本語を入力できれば、
あとは数値をどのようにメモリするか、計算するか、保存するかです。

まず、入力した文字をメモリに入れます。
LINEINPUT A$
LINEINPUT B$
LINEINPUT C$
これで3つの入力した文字がメモリに入りました。
PRINT A$:PRINT B$:PRINT C$
これで表示します。この〜$を文字列型とよびます。
今度はLINEINPUTに数を入れます。
A=VAL(A$):B=VAL(B$):C=VAL(C$)
このVALはValueの略です。A,B,.Cに数値が入りました。
A$=STR$(A):B$=STR$(B):C$=STR$(C)
逆にこれで、数値を文字列に変えることができます。
 計算はD=A+B+CとするだけでDに合計が出ます。
四則演算は+-×÷が+−*/になります。
平均をDに出す場合はD=(A+B+C)/3となります。
 保存です。保存はTEST.TXTにします。
OPEN"TEST.TXT"FOROUTPUTAS#1
PRINT #1,A$
PRINT #1,B$
PRINT #1,C$
CLOSE #1
 読み込みます。ファイル番号を#1として
OPEN"TEST.TXT"FORINPUTAS#1
LINEINPUT#1,A$
LINEINPUT#1,B$
LINEINPUT#1,C$
CLOSE#1
これでA$,B$,C$にデータを読み込みました。
 このようにBASICは電卓よりも便利なところがあります。
特にメモリに多くのデータを残すことができるところがよいです。

CHR$はコントロールコードを指定できます。
画面を消すのはCHR$(12)、EnterキーはCHR$(13)、ESCキーはCHR$(27)です。
BSキーはCHR$(8)です。

CALL CLSがありますが、ANKと共用にします。
10 PRINT CHR$(12)

<<配列変数を使ってテキストを9行入力するようにする方法です>>

画面を消すと左上のかどに移動します。Homeキーを押した位置ですね。
 初期状態での0〜9まで配列変数10個を使うことができます。
20 LINEINPUT I$(L)
30 L=L+1
40 IF L>9 THEN END
50 GOTO20
MSXBASICの文字入力は入力してRETURN(Enter)を押します。
これで各行の入力がメモリに入ります。
このデータが入れば今度は修正したい、消したい、コピーしたいなどの機能が欲しいです。
そこで、今度は1字ごとに入力していくコンソール部を作ります。
I$=INPUT$(1)
これでI$に1バイトのデータが入ります。
I$のコードを調べるには
PRINT ASC(I$)
で数字が表示されます。RETURN(enter)は13です。
IF I$=CHR$(13) THEN
これでコード13の場合は何をするかの処理になります。
IF I$=CHR$(13) THEN L=L+1:GOTO 230
Lに+1加算して230行へ飛ぶといった具合です。
それ以外は
I1$=I1$+I$
これはABCがI1$、DがI$ならI1$がABCDになります。
逆にI1$=I$+I1$では
ABCの前にDABCと挿入キーのようになります。
いろいろと工夫してみましょう。


<<2次元の配列変数を使って表計算のように数字を入れる方法です>>

0は項目名などに使用するといいかもしれません。座標(Cell)のCをとってC$(X,Y)と2次元にしてみます。

 C$(1,0)="駅名"

この入力の流れはモードがOFFの状態で

C$(1,0)="

までいれます。
ここで、
[Ctrl]+[     ]、Ctrlを押しながら[      ](スペース)を押します。
さらにMSXPLAYerなどの単漢字実装機の場合は
ローマ字かな変換モードに入るため[Shift]+右の[Alt](実機はかな)を押します。


えき、スペース、確定で駅
めい、スペース、確定で名

ローマ字かな変換モードを出る場合、右の[Alt](実機はかな)を押します。

"

となります。ちょっと慣れが必要です^^;

 C$(1,0)="駅名"
 C$(2,0)="所在地"
 C$(3,0)="鉄道会社名"

と入れます。表にすると

駅名            所在地               路線名

というふうになります。次の行を入れます。

 C$(1,1)="池袋"
 C$(2,1)="東京都豊島区池袋"
 C$(3,1)="JR東日本"

駅名            所在地               路線名

池袋            東京都豊島区池袋 JR東日本

というデータが入ります。

<<座標を間違えた場合>>

 C$(1,2)="池袋"

これを1,1にします。

 C$(1,1)="池袋"

これでよいです。

<<表を作ろう、数値データ>>

 表計算は計算ができないとそう言えません。次は数値データを使ってみます。
通常は文字列として定義されます。これを数値化(Value)にします。

 C$(1,0)="商品名"
 C$(2,0)="価格"

と入れます。表にすると

商品名        価格

と、いうふうになります。次の行を入れます。

 C$(1,1)="紙カップコーヒー"
 C$(2,1)="70"
 C$(1,2)="マクドナルドバリューセット"
 C$(2,2)="525"

というデータが入ります。

<<座標を参照して合計を出す>>

 見てみると座標のXが2の場合、70と525となっています。
これを加算して、C$(2,3)に入れてみます。
 SUMのようにするにはFOR〜NEXTを使います。
まず、使っていない変数CCとIを使うことにしましょうか。

FOR I=1 TO 2
    CC=CC+VAL(C$(2,I))
NEXT
C$(2,3)=STR$(CC)

このプログラムでCCが入ります。VAL(C$(2,I))とかがちょっとExcelっぽいかな。
まず、CC=0に数を加えていくとCCには595が入ります。
これは数値なので文字列化(STR$)を使っています。

<<エクセルからMSXへ>>

エクセルからMSX

 まず、エクセルでタブ区切りテキストで保存します。
つぎにBook1.txtを読みます。

100 CLEAR1000
110 OPEN"BOOK1.TXT"FORINPUTAS#1
120 IF-EOF(1)THEN210
130 LINEINPUT#1,I$
140 CR=1:L=INSTR(I$,CHR$(9)):II$=I$
150 IFL=LEN(I$)THENL=0
160 IFLTHENII$=LEFT$(I$,L-1):I$=MID$(I$,L+1,(LEN(I$)-L)):CR=0
170 C$(X,Y)=II$
180 IFCR=0THENX=X+1:GOTO140
190 Y=Y+1:X=0:GOTO120
200 BEEP
210 X=0:Y=0
220 FORX=0TO1
230 PRINT C$(X,Y),
240 NEXT
250 PRINT:Y=Y+1
260 IFY=9THENEND
270 GOTO220

 実行するとリストが読み込まれます。


・次世代日本語入力システムJ-IN

このような問題がありますので
メモリが少ない、時代に合った変換方式でユーザーがカスタマイズできる
J-INが考案されました。

J-INダウンロードページ:
http://www.geocities.jp/fullmsx2/u-yan/index1-5.html

MSXの入力環境はダメですよ、でも全体を見れば
BASICは短時間で作れるので素晴らしい言語です。
Beginner's All purpose Symbolic Instruction Code
という略ですがBASICはベーシックに語呂合わせしたと思います。
Symbolic Instruction Code
というのは当たり前すぎる用語で誰でも使いやすい言語と
アピールしたのかもしれません。
今のC言語はBよりCが新しいイメージがありますね。


※・・・表計算ソフトと表を計算するのとは違う・・・

大型の業務システム(サーバー)に端末として入力できるPCが始まりでした。
 昔のパソコンは表計算を表示するだけでしたが、
パソコン、ワープロが普及するにつれ大容量メモリになり新しい機能として加わりました。
さて、MSXパソコンはHALNOTE、ViewCALCというソフトなどがありました。
 RAMが256KB、MSX−DOS2で動作しましたが、このような仕様ではMSXをハードウェアで拡張する必要がありました。
例えば、材料明細などを作ろうとすると、1本1本拾っていきます。「ダイオード、数量3、価格70円」と、いうふうにです。
 このような細かいデータを作って、見積もりなどが可能になります。これはメモリが必要になる作業です。
もっと簡単に言えばコンビニのパン1つからパソコンに入れるとなるとこれは大変な量が必要になります。
 これが表計算ソフトの利用法です。
でも、もっと簡単な表の利用法はないでしょうか?
高校の頃にNHKラジオの気象通報で「ハバロフスク、風力3、快晴、1009ヘクトパスカル、-11度」と、入れていったことがあります。
 これぐらいならば表計算のないMSXパソコンで利用することができます。
あと、あかりプロジェクトでシフトJISの漢字を全て読み込ませてもアクセス時間はかかってしまいますが、読んでしまうんですよね。
 そういう数枚程度の伝票くらいであればできそうですね。MSXのデータベースってかなりいけるかもしれません。