|
長年、MSXと「通信」に特に興味を持って過ごしてまいりました。ず〜っと以前には、Arduinoとの間で「PDL通信」てなものも考えましたっけ。MSXのPDL関数は、入力されたパルスの長さを0〜255の256段階に認識するのであります。
タイトーのゲーム「アルカノイド」シリーズは自前のルーチンを用意しBIOSに頼らなかったので、PDL関数が削除されたturboRでも遊べました。しかし、PDL関数を使って「スカッシュ」などのゲームを作っていたアマチュアは、turboRの仕打ちによって自作ハードウエアとともに奈落の底に落ちたのであります。
もちろん、Arduinoとの「PDL通信」もおじゃんとなりました。Arduino側でのPWMの調整も微妙過ぎたという反省もあって、実は自分でもあまり使う気にならなかったのでありました(爆)
捲土重来、起死回生。
いつものようにJポート(「ジョイスティックポート」あるいは「汎用入出力ポート」を慣用的にぼくは「Jポート」と呼んでいます)を眺めていて、ふと思いつきました。
「これってArduino→MSXの通信に使えるんじゃないの?」
何を今さらとお思いでしょうが、お聞きください。
ついついピン1〜4の4ビットで信号入力と思いがちでしたが、そのためにはマシン語の助けを借りないといけません。BASICのSTICK関数を使えば「0〜8」をMSXは受け取ることができるのです。同じ機能のBIOSも用意されています。
↓STICK関数で受け取れる数字。
これを通信に応用するとすれば、Arduinoのデジタル出力を4ピンを使って、アイドリング時は「1111」を出力します。MSXにとっては「0」です。「1110」を出力するとMSXにとっては「1(Up)」です。というわけで、「0〜8」の9通りの信号をMSXに渡すとすれば、別途CLKも要りません。一例として次のような手順が考えられるでしょう。
(1) 「0」が続く間、MSXは受信データ待ち。
(2) 「0」以外が来たとき、MSXはデータとして受け取る。(受信スタート)
(3) データとデータの間には「0」を挟む。
(4) 例えば30秒間「0」が続いたら通信終了とみなす。
通信終了の方法はケース・バイ・ケースで考える必要があります。
1000 DEFINT A-Z:DIM A(200):N=0
1010 ON INTERVAL>1800 GOSUB 2000
1020 INTERVAL ON
1030 D=STICK(2):IF D=0 THEN 1030 'JPort-B
1040 INTERVAL OFF
1050 A(N)=D-1:N=N+1:IF N=200 GOSUB 2000
1060 TIME=0:GOTO 1020
1070 '
2000 INTERVAL OFF:RETURN 2010
2010 END
Arduinoが今ちょっとアレなので、まだ実際には動かしていませんが、こんな感じで配列Aに200個のデータが格納できるのではないでしょうか?200個未満で通信終了したときは、Nに受信数+1が入っているで正しいかな?(・∀・)?
【追記】このままではオクタルなので使いにくいですね。16進数が使えるように、もう一工夫要るようです。
Arduino側で、まず8で割った整数除算の商を、次に剰余を送信して、MSX側でふたつのデータから16進数に組み立て直すとか?
何とかしてくださいw
|
全体表示




PDL通信、懐かしいですね〜。Arduinoとの連携もうまくいったのでよく覚えています。turboRでは、biosごと吸い出して使いましたね。bios部を走らせる場合は、「今だけZ80モード」で動いていました。turboRでも「スカッシュだけよん」が遊べたので印象深い実験でした。
今回も、MSXのジョイポートをしゃぶりつくそうという取り組みですね。まだそんな関数があったのかと驚きの声が聞こえそうです(汗;)。
この勢いだとMSXでモールス通信が復活しそうです(笑)。
[ dotallcafe ]
2015/2/11(水) 午後 10:07
どもども〜(*´▽`*)
「できる限りMSXでする」姿勢は変わらないです。
PDL関数は0〜255を拾えるスグレモノなのに、滅多に使われない可哀想な関数でした。そこに光を当てたつもりですが、やっぱりturboRというのはMSX進化における鬼子ですね。
しからばと、今も健在のSTICK関数に目を付けました。0〜8と、ぐぐっと小粒になりますが、「0〜8」ってところがいいですね。ヘタに「0〜7」だとCLKが居るじゃん?となるところでした。
モールス信号って、一種の調歩同期でしたっけ? 長音は短音の3倍、無音は短音と同じ長さてな決まりがあったように思います。コーディングも不定長ながらよく考えたものだと感心した覚えがあります。何に感心したのか忘れましたがw
PSG#15と#14を行ったり来たりするのが、最近めんどくさくなってきました(爆)
[ KIKI ]
2015/2/12(木) 午後 6:09