MSXのジョイスティックポートを使ったシリアル通信 (1)
MSXでジョイスティックポートを使ったシリアル通信が出来るらしいので、
事例を少々調べてみました。
シリアル通信が使えると、パソコンとの通信やArduinoとの連携等が出来るので、
色々とと楽しいことが出来ます。
ジョイスティックポートを使ったシリアル通信の事例
・Joy232
HAKADAY.IO Print using RS232 on the joystick port of MSX computers
https://hackaday.io/project/18552-joy232
github - Danjovic/Joy232
https://github.com/Danjovic/Joy232
・JoyNet
まとめサイト http://map.grauw.nl/resources/joynet/
Joy232 Print using RS232 on the joystick port of MSX computers
joy232は、シリアル通信の出力のみ対応ですが、
BASICのLPRINTコマンドで出力することが出来るので、使い勝手が良いです。
早速試してみました。
ホームページの解説を参考にして、Dサブ9ピン コネクタで通信用コネクタを作りました。
USB-シリアル変換モジュールを使ってパソコンとの通信を試してみます。
ホームページに公開されている、「STEP 1 Method 2」のBASICプログラムを、
MSX1(カシオ PV-7)で実行し、更にテスト用プログラム を実行してみました。
TeraTerm (通信速度 9600bps)にて、受信することが出来ました。
MSXからの出力は、
LPRINT "Hello,World"
みたいに、LPRINTコマンドで任意のデータを出力出来ます。
意外と簡単に出来ました。色々と遊べそうです。
Arduinoと通信を試そうと思い、
とりあえず、以前作成したLEDマトリックスを試してみました。
シリアル通信でLEDマトリックスを制御できるモジュールです。
Arduino pro miniに8x8LEDマトリックスを直付けしただけです。
(LEDは定格許容範囲内の短いパルス出力では大きな電流を流せます)
LPRINT "@?1234567890"
と実行すると、
念のため、機種を切り替えてMSX2でも動作確認してみました。
結果は、...
動きません。MSX2が暴動しました。
調べてみると、マシン語プログラムの配置アドレスがまずいようです。
下記はプログラムの問題箇所の抜粋です。
60 EI=&HFAF5:SIZE=63
70 FOR A = EI TO EI+SIZE
80 READ B$: POKE A,VAL("&H"+B$)
90 NEXT A
100 REM
110 POKE &HFFB8,&HFA
120 POKE &HFFB7,&HF5
130 POKE &HFFB6,&HC3
LPRINTのフック(マシン語プログラム)の配置アドレス &hFAxxxx は
MSX2で新たにワーク領域と使われているようです。
基本的に &hF380H番地から&hFFFEH番地 はワーク領域なので使用禁止です。
プログラム自体はリロケータブルなようで、配置位置を&hF200 に変更したところ、
問題なく動作しました。
修正したプログラム(修正箇所のみ抜粋)
60 EI=&HF200:SIZE=63
70 FOR A = EI TO EI+SIZE
80 READ B$: POKE A,VAL("&H"+B$)
90 NEXT A
100 REM
110 POKE &HFFB8,&HF2
120 POKE &HFFB7,&H0
130 POKE &HFFB6,&HC3
動いている様子
LEDマトリックスを制御しているMSX BASICプログラム
前半は1ドット単位の表示、後半はメッセージを1文字単位で
スクロール方向を変えて表示しています。
10 LPRINT "@?{}"
20 FOR Y=0 TO 7
30 FOR X=0 TO 7
40 LPRINT "@?{";CHR$(48+X);CHR$(48+Y);"1}"
50 NEXT X
60 NEXT Y
70 LPRINT "@?{}"
80 S$="Hello,Wrld.I love MSX!"
90 L=LEN(S$)
100 FOR I=1 TO L
110 R=INT(RND(1)*13)
120 LPRINT "@scrl ";R;",40"
130 LPRINT "@?";MID$(S$,I,1)
140 GOSUB 180
150 NEXT I
160 GOTO 100
170 END
180 TIME=0
190 IF TIME <20 GOTO 190
200 RETURN
上記のプログラムでは、シリアル通信の出力のみなので、
LEDマトリックスにコマンド送信した際の実行完了待ちが出来ないため
180行のサブルーチンで適当な時間待ちを行っています。
出力のみでも、十分遊べると思います。
« 入手したボード用 Arduino STM32用ブートローダの作成 | トップページ | MSX用ゲームカートリッジのROM交換 »
「arduino」カテゴリの記事
- Arduino IDE+Arduino STM32環境で指定と異なるgccが使われてしまう(2025.01.23)
- Zorin OSでArduino Uno互換機(CH340)が認識しない(2025.01.19)
- Arduino IDE 2.3.4でArduino STM32を利用する(2025.01.12)
- Arduino用 SKK日本語変換ライブラリの開発 その1(2024.12.28)
- NeoPixel(WS2812B)の制御 その5(2024.09.15)
「表示器制御関連」カテゴリの記事
- NeoPixel(WS2812B)の制御 その5(2024.09.15)
- Arduino用 美咲フォントライブラリを更新しました(2024.03.21)
- Raspberry Pi Pico(MicroPython)でLEDドットマトリックスを使ってみる(2024.03.14)
- Raspberry Pi Pico MicroPython用のマルチフォントライブラリ(2023.02.09)
- MicroPython(Raspberry Pi pico)で8x8ドットNeoPixcel文字表示(2023.02.08)
「MSX・レトロPC」カテゴリの記事
- 不調なMSX PV-7のメンテナンス(2025.02.15)
- MSXのジョイスティックポートを使ったシリアル通信 (2)(2025.02.11)
- キーボードの黄ばみ落とし(2021.01.28)
- MSX関連の書籍を収集中!(2020.06.17)
コメント
« 入手したボード用 Arduino STM32用ブートローダの作成 | トップページ | MSX用ゲームカートリッジのROM交換 »
公式ではファイティングファルコンで
ジョイスティックポート通信を使ってますね
https://web.archive.org/web/20190201063100/http://www.geocities.jp/galfned/f16/f16.htm
D-SUBコネクタを綺麗に加工する方法がありました。
http://niga2.sytes.net/wordpress/?p=254
投稿: daiki | 2019年6月21日 (金) 12時24分
daikiさん
情報ありがとうございます。
MSXのジョイスティックポートの活用情報が徐々に消えているようです。
アクロバット232の情報が欲しいのですが、
掘り起こせない状態です。
投稿: たま吉さん(管理者) | 2019年6月21日 (金) 20時37分
完全にロストしてますね…
あおざかな族館
https://web.archive.org/web/20010429213953/http://www.hf.rim.or.jp:80/~ot_m/msx/
アフターサポートについて
https://web.archive.org/web/20010107124900/http://www.g-net.org/index.html
投稿: daiki | 2019年6月22日 (土) 02時20分