思い出のMSX1パソコン、CANON V-10のジョイスティックポートを経由して、IchigoJamからプログラムを送り込むことに成功!
左はIchigoJamの画面、右はMSXの画面(COLOR15,1,1で色変更)
IchigoJam側で打ち込んだ文字をOUT1とOUT2を使って、SPI非同期通信。MSX BASICで書いた受信プログラムで受け取ったデータを表示しつつ、マシン語用に確保したメモリに書き込めた。
どこかで100円で購入したD-Sub9ピンのオスケーブルを、ブレッドボードで使えるように準備。
テスターで導通チェックしながら、1から9番ピンまで並べます。(シールドも9番のGNDにはんだづけしましたが、どうだろう)
ピンはどちらでも使えるように、長ピンソケットをはんだづけしてできあがり!
ジョイスティックポート、MSX BASICのSTRIG命令を使ってボタンの押し下げを取得できます。
8番ピンを6番や7番へショートすれば、押したなることを確認できます。確認用のMSX BASICプログラムはこれだけ!
10 ?STRIG(1),STRIG(3):GOTO 10
続いて、IchigoJamとの接続です。
IchigoJamのOUT1とOUT2を、6番、7番ピンへ接続。9番ピンのGNDの接続ついでに、5番ピンの5VをIchigoJam用に拝借!
IchigoJamから確認してみましょう
OUT1,1 OUT1,0 OUT2,1 OUT2,0
無事、IchigoJamからMSXへ伝わりまし���!
(IchigoJam同士でOUT1からIN1へ接続しても遊べます)
あとは、この2本を使って送受信プログラムをつくるだけ。最初のMSX BASIC上のプログラムは手で打ち込まないといけないので、できるだけ短く実装できる、通信方式に同期式通信であるSPIを採用。
IchigoJam用送信プログラム
10 OUT1,1:OUT2,1:W=2 20 K=INKEY():IF!KCONT 30 FORI=7TO0STEP-1:OUT2,~K>>I&1:OUT1,0:WAITW:OUT1,1:WAITW:NEXT 40 GOTO 20
MSX BASIC用受信プログラム
10 CLEAR200,&HCFFF:DEFINTA-Z:A=&HD000 20 N=0:B=128 30 IF NOT STRIG(1) THEN 30 40 N=N+(STRIG(3)AND1)*B 50 IF STRIG(1) THEN 50 60 B=B/2:IF B THEN 30 70 ?CHR$(N); 80 POKE A,N:A=A+1:GOTO 20
BASICのプログラムも、中間コードをバイナリ#D000以降に受け取ったデータを、#8000や#C000などのBASICプログラム領域にコピーすればOK!
Z80用のCコンパイラ&アセンブラなどのツールキット「Z88DK」もいい感じに動いたので、いろいろ捗りそうです。
STICKコマンドを含めて、BASICでも最大6つの信号を受け取れるので、MSXをIchigoJamから音源としてとして使う、PanCake的にグラフィックボード的に使うなどもありですね! 身近なコンピューター、いろいろつないで遊んでみましょう!