MSX2+の漢字BASICを使う メモ帳でプログラミング 漢字グラフィックモード | MSXさいたま仮想鉄道ブログ

MSXさいたま仮想鉄道ブログ

A列車で行こう9の仮想鉄道ブログです。

今回はWindowsのメモ帳でプログラミングしてBlueMSXで実行してみます。

メモ帳などのエディタでプログラムを作ってMSXで実行します。
MSXBASICで修正することはできますがBlueMSXでは日本語入力システムがないので
シフトJISコードを変えたりすることができません。

こんなふうにプログラムを書きます。メモ帳はANSIコードで保存します。
ANSIコードはASCIIコードを拡張したコードで旧日本工業規格(日本産業規格、JAS)の
電気通信のシフトJISコードが起用しています。
英語(半角)と日本語(全角)の2つのコードが混在するものです。
それまではNEC漢字や旧JISなど端末によって異なって統一されていませんでした。
MSXのアスキー文字では下の画面のようになります。
よく見るとA~、B~という文字列になっていますね。
BlueMSXではディレクトリ(フォルダ)に入れてロードします。

 

ANSIコードはASCIIコードを拡張したコードのことでアスキーセーブできます。
全角2バイトコードのシフトJISコードとして利用できます。
さらにパソコン通信ではANSIのESCシーケンスを使用してMS-DOSで位置や色といった文字制御ができました。
MS-DOSやMSXのターミナルソフトでは可能でした。
MSXでは^[[36mMSX-DOS2は通常はできません^[[0mのように

フリーウェアのADDESC.COMがないと通常は対応していません。
WZエディタを派生したものがWindowsアプリにあれば
ESCコードを書いて色を変えることができるかもしれませんね。
 

通常でASCIIコードは全角がないのでMSXのキャラクタセットになります。
MSX2+はCALL KANJIモードで拡張されてシフトJISで全角表示が可能になります。

 

 

プログラムリストは大きく表示されるので見やすくなります。
大きいのでKEYOFFしたほうがいいかもしれませんね。

実行するとこんな感じです。

 

 

2倍大きくなった16ドット文字です。
今までの大きさにするにはCALLKANJI2か3で小さくなります。

この画面は偶数ラインと奇数ラインを瞬間的に切り替えている、
インターレースになっているので止める(PAUSE)と一方のラインだけで
通常のMSXパソコンでは文字が欠けます。

 

こんなふうになります。
さらに漢字グラフィックモードというものがあります。
これは漢字BASICでグラフィックモードを使うことができます。

 

CALLKANJI:WIDTH64をプログラムの最初に宣言して
漢字BASICを有効にしておきグラフィックが表示された後に
COLOR255:LOCATE0,0:PRINT"東京レインボーブリッジ"

を入れるだけで表示できます。ちょっとやってみます。

ANSIコードでTESTフォルダにテキスト保存します。ディレクトリ挿入でTESTフォルダを指定します。
MSXでは拡張子は判別しないのでMERGE"T-R.TXT"でもかまいません。
あらかじめCALLKANJIを実行しておきます。
CALLKANJI(0)モードはWIDTH64は文字幅が半角で64文字、全角で32文字までで

こういう感じになります。


1つ1つベタで並べるとグラデーションしているような錯覚になります。
MSX2で256色同時発色できRGBのB、ブルー系の色が少ないので
使いにくい特徴があります。

SCREEN8に文字を表示させたい時はOPEN"GRP:"AS#1というふうに
グラフィックに文字出力のコマンドを打ち込みますが、
漢字BASICになっていればLOACATEとPRINT文で表示できます。
座標をドット単位で表示させるにはフリーソフトやPUTKANJIを使う必要があります。
N88(86)日本語BASICを使っていた方でもラクにプログラミングできると思います。

ただ、最後にI$=INPUT$(1)で画面を止めれば問題ありません。

 

また上のSCREEN8ローダーを使えば画像表示ができますが、
ファイル名ではなくコマンドを入力することでいろいろなプログラムが機能します。


まだ、わかりませんが1つのアプリだけを多機能しないで
MSXはメモリが足りなくなってしまうので必要最低限の機能にして
その機能を特化させたアプリを構築して頻度ごとに分けるためのメニューです。
例えばロードして書いてセーブする、これを1つのアプリでできました。
このメニューではロード、書く、セーブのアプリが分かれています。
CurrentColor(カレントカラー)というのは指定した色や座標色がわかります。
 

カーソルでパレットを選択してカレントカラーのコードがわかりますので
プログラムにCOLOR254と入力すれば文字色にもできます。
このモードでドットを描く良さそうなプログラムがないので制作しています。

 

ドラフターはプログラミングに時間がかかるので見送って16ドットエディタを追加します。
こう書けば、もっと軽いイメージになりますね~
ドットをクラフトすることでいろいろなモノを作ることができます。


プログラムはドットエディタをカラーコード110で枠作成をしています。
256色カラーを表示させています。

 

プログラムではサブルーチンをラベル管理しているのでわかりやすくなってます。

他の言語を使っていると面倒くさくなるんですね;

オブジェクト指向向けではないので、サブルーチンのサブルーチンのサブルーチンとか
入れ子構造は2ネストまでが難点でしかたなくGOTOで分岐させています。
FOR~NEXTのNEXTをRETURN代わりに使う荒技もできそうですが、やったことないです。
でもR=1を設定して無理やりサブルーチン化してIFでRETURNにしたりありますね。

今回はカーソル操作に限定していますがポインターの位置でキークリックに対応しています。
キーボードのcでCLS、hでハーフトーン、bでボーダーに塗りつぶし、sでセーブします。

好きな色を2色クリックするとできます。

 

MSX-Viewはハーフトーンのバックだったので機能を付けたくなりました。
ハーフトーンは建物などの影に使います。とりあえずはゲームではないので;
背景の壁紙を作ってMSX2+をデコりたいのでやっていきます。

 


効果としてはハーフトーンをバックにして文字を入れると赤白など
バックの強調がやわらぎライトな感じのイメージになります。
また顔が赤くなるなどのボカシ効果もあるのでいいです。
さらにドット絵の下書きで全体のバランスをとったりする時にもよいです。

 

 

プログラムはこんな感じです。C1とC2にカラーコードを入れます。
Xを2ごとにジャンプさせます。
Y座標の偶数ライン奇数ラインをMODで余りを出します。
次に2色の点を配置します。余りがある場合は赤白、ない場合は白赤のようになります。

 

 

せっかくここまで組んだのでボーダーもできるようにしました。
この下に16個を折り曲げて4x4マスでパーツを並べれば
1行目をエディトできるようにしたいです。

 

わかりやすいように合成しました。4×4マスの場合は120行を4にします。
WIDTHなど文字桁を30と入力すれば数式的には折り返しができます。
MODは割り算の余りの数値です。オフセット値を加えて位置決めをします。


とりあえずは16の枠の中に16個保存できるようになりました。
この超簡易エディタでクラフトしていけばいいのでラクです。
ゲーム風に言えばアイテムボックスを最大12個まで増やせます。

今は1/12です。
 

こんな感じで作っています。フォーマットが決まりました。
16個×12個の16ドットパーツは00~C0、
192個を地形や建物などのパーツとして登録できます。
C0~FFまではコードがD3に当たった場合に
何かが起こる仕掛けに活用することを前提にします。
 

D3を配置する時にスプライト番号を表示すれば
地形効果やモンスターをマップに固定させることもできますね。
パーツの上に黒い丸いスプライトを表示させれば下に落ちたりなど
ギミックを作ることも可能になります。
イベントエディタ、おもしろそうですね。

 

あと、スプライトをポインターで表示していますが、
実はハーフトーンの部分に移動させるとスプライトが欠けたり化ける現象が起こります。
これはBlueMSXの不具合かどうかわかりませんが原因を調べています。
256色になるとカラフルになりますがデータが16から256に変わるので容量が足りなくなります。
専用のDディスクを作ることになるかもしれませんね。
 

アセンブラくんなどは試しましたが32ドットキャラで今回は出番はないですね。
ちょっとだけ見てみましたが、次回のダウンロードは7月上旬の予定です。
では。