MSXさいたまロゴ

MSXさいたま研究室沿革
MSXさいたまブログへ

-お知らせ 2020年11月追記 -

さいたま新都心から拠点を上尾に変更しました。
さいたま新都心へは大成とか三橋とか大宮公園が混みやすいことです。
上尾は川越、蓮田方面から
また遠方では圏央道からの利便性がよいです。

さらに電車よりはマイカーの方に考慮したこともあります。
MSXパソコンに関することは何でもOKです。

MSXさいたま研究室



・MSXマガジン永久保存版を買うなら与野の書楽がいい
・MSXでゲーム作り
・プログラムで実行速度を調べる
・MSXでディスクマガジンを
・MSXPLAYerでも50音配列を再現

国道16号:イメージ

神奈川から埼玉へ国道16号のトラック街道を夜
走りながらもMSXのアイデアを考えたりもしています。
八王子から川越へは曲はアルフィーで
八王子から横浜へは曲はサザンオールスターズを聴いています。
正確には拝島橋あたりですが、八王子じゃないですね。
アルフィーというのは躍動感があり抑揚が激しい曲で
あまり好きではなかったのですが、埼玉ということで数十回聴いても
飽きがこない私のお気に入りの名曲になってしまいました。
急カーブがあったり、アップダウンがあったり、分岐があったり
する国道16号にピッタリな曲です。気を許すと日高方面へ^^;川越市内へ^^;





■MSXマガジン永久保存版を買うなら与野の書楽がいい

 まぁ、MSXマガジン永久保存版はいろいろな店にあります。
でも3冊揃えたいと思う人も多いかもしれません。
 そこで、埼玉県であればココの店がよいです。
え?手抜きだって、そりゃぁ新都心の近くですから^^;
そう言われるとさいたまを調べてみましたが、やはりココですね。
場所は埼京線の北与野の駅前で車では国道17号を走れば
わかります。MSX以外にも専門書が多くありオススメです。

MSX:さいたま
さいたま新都心

あとは大宮ロフトにあるジュンク堂ですね。
最近はモラージュ菖蒲にも大型書店があるそうです!

さいたまの話をちょこっとしましょう。
湘南新宿ラインの東海道、高崎線直通の場合は
高崎から籠原くらいまでは、のどかな雰囲気です。やっぱり高崎線ですね。
熊谷から大宮まではおじさん、おばさん達が多いです。
そして、大宮で人柄がガラリと変わります。学生、ビジネスマンが増えます。
混雑していた車内も新宿で減り、
神奈川の藤沢から国府津まではかなり人が減ります。
長く乗っていると、大きく様変わりするのがわかります。
とにかく、高崎線は大宮までは東海道線よりも人が多いです。
埼玉はバス路線がありますが、
神奈川の駅ロータリのバス待ちのような行列はありません。
交通手段はバスよりも自転車ですね。

■MSXでゲーム作り


 MSXBASICでプログラムと言っても、ゲームプログラムの仕方がわかりません。
最初から大作を作ることは難しいので、ここではプログラムという事から考えます。
最初の目標は10×10のマップに自由に1文字を置いていきましょう。
10 SCREEN1
20 LOCATE 2,3:PRINT"I"
左上が0で右方向に123がXで、下方向に123がYになります。
これを覚えます。
文字の色を決める場合COLORで決めます。
COLOR 1が黒、3が緑、5が青、8が赤、10が黄色とこんなところです。
背景はCOLOR15,1で黒になります。
これでうまく画面を完成させましょう。
次にスタート位置を決めます。CX=3,CY=4にしたい場合
CX=3:CY=4と書きます。変数と言いますが、PXでもCXでもXでもかまいません。
そして、LOCATE CX,CY:PRINT"*"とプログラミングすると画面はできます。
でも、*を動かして、入れない場所を決めたり、文字と座標が重なると
何かをしたい場合が出てきます。
1つ1つ座標をチェックするようにするには配列を使います。
配列は決められた文字長にします。10×10はXとYが最大で10ですから
10桁10行です。必ず10文字データにします。
そうしないとイリガールファンクションコールが後で出る事になります。
1行目は
AAAEEEAAAB
2行目も
AAAAAAAAAA
というように10行まで作ります。220行、230行と作ります。
これをDATA文に入れます。
200 DATA ”AAAEEEAAAB”
210 DATA ”AAAAAAAAAA”
次にBASICの配列は10以上になるとDIMで宣言する必要があります。
10行ですから、DIM M$(10)とします。
10 SCREEN1:DIM M$(10):CX=3:CY=4
DATA文の読み取りは次のようになります。
20 FOR I=1 TO 10:READ M$(I):NEXT
そして、画面の左上から表示するので
30 FOR I=1 TO 10:PRINT M$(I):NEXT
これでデータが入った面が表示されます。
さて、プレイヤー*の表示です。
40 LOCATE CX,CY:PRINT"*"
次にかーソル移動処理です。
50 S=STICK(0):IF S=0 GOTO 50
これはセットで覚えます。
60 '
60 行は'にします。
カーソルの状態が0であれば50行をリピートします。
数字は上が1、右が3と1357と覚えておきましょう。
70 IF S=1 THEN CY=CY-1
80 IF S=3 THEN CX=CX+1
90 IF S=5 THEN CY=CY+1
100 IF S=7 THEN CX=CX-1
このようにやりますが、これでは*****と前の*が残ってしまいます。
そこで、座標が変わる前に消す必要がでてきます。
I$=M$(CY)で行を読みます。
I$=MID$(M$(CY),CX,1)で文字列から文字数ぶんの文字を入れる命令です。
これは文字数がCXと対応していますので1文字です。
これでI$にキャラクターでかぶっていたマップの文字が入ります。
60 I$=MID$(M$(CY),CX,1):LOCATE CX,CY:PRINT I$
I$がMだったらIF I$="M" THEN LOCATE0,11:PRINT"かぎがかかっている"
というふうにできます。
ここまで、わかれば何か1つはゲームを作ることができます。
見栄えがするゲームは難しいですが、
画面を気にしなければ、思っているゲームもできるかもしれません。
ごのサンプルについては
basic/sprite.html

にあります。このようにFULLMSXサイトでは
ゲームプログラムのサンプルを紹介しています。

■プログラムで実行速度を調べる 11/12更新

  MSXPLAYerで倍速モードにするとTIME関数も倍速になってしまいます。
そこでGETTIMEで時刻に変化があるとTIMEをセット、 次の
時刻の表示に変化があると
表示して、TIMEが60を超えれば倍速とわかり、TIME¥60で何倍速かわかります。
 時間がかかるのは現在時刻に合わせる為で、+10の数値はプログラムによる
誤差があるので若干調整しています。
SFは初期の処理をさせる為のフラグの数値で、a$=""の場合がある回避法^^;です。

MSX:実行速度を調べる

■MSXでディスクマガジンを!!

  自分のディスクマガジンを作りたいとMSXクリエイターは思ったかもしれない。
DVDのようなメニューもMSXで作ってみたい。
そこで作ってみました。これならば使えるかもしれない。

MSX:ディスクマガジン<サンプル>

カーソルで移動して、RETURNを押せばメニュー番号が表示されて終了。

 このように枠の中にグラフィックを入れて、
MSXディスクマガジンという、仮のロゴを書き換えればメニューが完成。
 プログラムを見ればわかるが、LINE文でメニュー枠のサイズを自由に変えたり、
ON MU GOSUB以下の分岐を加えればメニューの数を増やすこともできる。
 さらに、各メニュー番号から左にいったり、上にいったりの移動処理も同様の分岐になっている。
GOSUB命令を2ネストも入れてあるギリギリ仕様だが、まず問題ない。
いろいろなバリエーションが考えられる…
 メニューを完成させて自分なりのエンターテイメントを楽しもう。

ダウンロード:メニューサンプルをダウンロード

■MSXPLAYerでも50音配列が実現!



 私たちのほとんど人が知らずに使っているのが、50音の配列です。
えっ?と、思うかもしれませんが、銀行、郵便局などのATMは全て50音です。
ローマ字で銀行名は打たないですよね?そういう配列の話です。
この画面は漢字BASICで属性を50音配列に設定したものです。
設定には以下の命令をくわえることで実現できます。

 POKE&HFCAD,0

MSXの上位互換という仕様で成せる技です。
 今からパソコンを始めて使う人にはローマ字配列は決して楽ではないと思います。
MSXPLAYerは「MSXマガジン永久保存版」を購入すれば手に入ります。
これでと・り・あ・え・ずは109キーボードに50音配列が載りました。

■当時のMSXパソコンのキーボード

 今のように、マウスとキーボードの2つのデバイスがなかった、
MSXパソコンの当初は50音配列を基本にしたキー配列でした。
 入力のバランスがよくないので、今のようなJISのひらがな配列が生まれました。
当時のキーボード配列は123にあいうと並んだ50音配列でした。

50音配列キーボード

GRPHキーではいろいろな事ができます。
8「百」、9「千」、0「万」、¥「円」
1234567「日月火水木金土」、>「大」、<「小」、L「中」
Year「年」、Hour「時」、Minute「分」、Second「秒」、Pai「π」
+はクローバー、*はハート、?はスペード、_はダイヤ
[は○、]は●、Xは×、罫線キーがERT DFG CVB I -です。
 この画像からキーボードは難しくはないものと、思ってくれればよいです。
漢字モードと50音配列に設定していますから、すぐに試すことができます。

ダウンロード:50on-inp.bas

■キーボードで理想の環境へ

 入力デバイスにはキーボード、マウスと2つが今はあります。
例えば文字を入力して、マウスに持ちかえてIMEバーで英数にして打ち込む。
 この動作はどうでしょうか?
キーボードからマウスへ持ちかえて、再びキーボードを打つ。
これはインターフェイスの使い方としてはあまりよくはないと、思うのです。
 キーボードは何のためにあるのかわからないですね。マウスは補助として使うのが一般的です。
両手をホームポジションに置いてみましょう。
 この手の回りにある特殊キーにはさまざまな機能があるのです。
例えばPageUp、PageDownキー、これはページごとに移動します。
 マウスのスクロール移動より速いです。
次にAltキーを1回押します。するとメニューにカーソルがきます。
 このように特殊キーに使いやすい機能を加えればグンと環境がよくなります。

MSXさいたま:大宮アルシェ
 大宮駅の西口を出るとガラス張りのビル大宮アルシェです。
地元放送局NACK5のスタジオもあるようです。
 んー小田急の相模大野駅に近いイメージかな


・一般プログラム
・ゲームプログラム
・業務プログラム


・一般プログラム

<<仮想時計活用法>>

・正確な時間調整
 
SETTIME命令が効かないMSXPLAYerなどに使えます。
一度合わせればロードして使用することもできます。

・世界時計
 
海外から日本の時刻をセットしたり、逆に日本から海外の時刻をセットしたりすることもできます。

・うるう秒修正対応
 うるう秒が入る日時をあらかじめ知っておけば、いつでも修正できます。

<<仮想時計から、うるう秒時刻表示方法>>

 「F1」キーを押すと”うるう秒あり”になります。
もちろん、グラフィックキャラクタの「秒」です^^;
この時刻に「F1」キーを押せばうるう秒が入ります。
 「F2」キーを押すと時の刻みに戻ります。

<<クロック系プログラム数連発!>>

 
TIME関数を使って、タイマー、ストップウォッチ、時刻の計算、MSX2から標準装備された内蔵時計。
フロッピーを差し込むだけで入退室管理などなど
 まだ、公開されていないプログラムもあります。


・ゲームプログラム

<< グラフィックの条件判定 >>

四隅の判定

 例えばキャラクタを赤い丸(地獄?)の近くに白いキャラクタをもっていってほしい。
近づきすぎると、飛び跳ねて戻ってしまう。
 このように四隅の色をスキャンして、もし赤であればスプライトを表示して、座標を戻す。
こういう小アクションもできる!!
 このプログラムを改造して赤い迷路のようにして、青い所に付けばゴールということも・・・
スプライト処理は実に簡単なものだ。

ダウンロード:yosumi.bas



<< 敵の移動を楽しもう! >>

 難しい設定をしないでカーソルで点跡を敵が動くようにするものです。

日付:01/28 表題:点跡を自動化するその1

 ラジコン飛行機のように、カーソルで左回り、右回りさせて上下で速度を加減するようにやってみました。
8方向でクルクルと回るようになりましたが、カクカクとした旋回になってしまいました。
 次は誘導するようにしてみたいです。



・業務プログラム

<<バーコードをMSXで表示>>

JANコードからのバーコード表示
 

JAN2の実行例
JAN2.BASを実行した画面

MSXで業務ができるのか?プログラムを試作しています。

 このプログラムは構造化していないので応用はしやすいと思います。
偶数パリティ、奇数パリティをデータ化してあります。ただ、左の9が9のデータのみです。
 この9のデータは偶数奇数偶数偶数・・と偶数と奇数を1と0であらわす、パリティコードになっています。
要するに組み合わせてチェックすれば0が読めなくても1が読めなくても数を読めることになります。
 こんな話をすると1ページになるので、このへんにしておいて興味のある人はやってください。
JANコードの12桁まで入力するとチェックデジットを算出し、このバーコードが表示されます。
 JANコードを978477411093まで入力すると最後の数値が6になるわけです。

 用途はないと思いますが何かのデモに使ってください。

バーコードの下にJANコード:jan.bas

JANコードのみ:jan2.bas

バーコードからJANコード

バーコード取り込み

 デジカメからの取り込みで見てのとおりリアルな画像です。
 これからの処理はデジタルの黒にする
(グレイスケール)処理です。
実はPCの黒は鉛筆の黒、ボールペンの黒を黒としては認識していません。
赤成分の入った黒、青成分の入った黒という感じですね。
仮にMSXのハンディスキャナを使用した場合もこのような感じになると思われます。
 黒に見える色です。まずはMSXで、そのコードを抽出させて、白黒の2値化する準備をします。
サンプルではSCREEN8に表示させています。