JR-100ではプログラムを音声データにより外部媒体(カセットテープ)に保存することが可能です。この音声データ(仕様)を再生するプログラムを作成しました。目的は、JR-100のVIAのエミュレーションを正しく行うために、VIAの仕様書を読むだけでは理解できない動作をJR-100実機を使って検証するためです。様々なパターンのマシン語プログラムを毎回打ち込んだりカセットからロードするのは時間がかかりすぎるので、PCから直接再生することにしました。
使い方
[download id=”923″]
Java 1.7以降のJREがインストールされていることが前提です。
ファイルをダウンロードして適当なフォルダに格納してzipファイルを展開してください。JR-100のプログラムデータをデータフォーマットに従ってテキストファイルに格納し、コマンドプロンプトから必要な引数を指定して実行すると、音声データがスピーカーから再生されます。PCのヘッドホン出力とJR-100のモニタ端子を接続して再生することで、JR-100にプログラムを読み込ませることができます。うまくロードできない場合は、音量を調整してみてください。
書式
java -jar fskplayer.jar {-basic|-machine} -r name -a addr -n name -v value
- -basic
- BASICプログラムを再生する場合に指定します。
- -machine
- マシン語プログラムを再生する場合に指定します。-basicも-machineも指定されなかった場合は-basicが指定されたものとみなします。
- -r name
- 読み込むファイルを指定します。
- -a addr
- マシン語プログラムの開始アドレスを指定します。-basicが指定されている場合は無視されます。
- -n name
- プログラム名を指定します。省略した場合はPROGRAMが指定されたものとみなしします。
- -v value
- 再生する音量を0から100の整数値で指定します。0が無音、100が最大音量を意味します。規定値は20です。
実行例1
E:\tmp\test.bas
ファイルに格納されたBASICプログラムをPROGRAM
(規定値)という名前で保存する。
$ java -jar fskplayer.jar -r E:\tmp\test.bas
実行例2
e:\tmp\test.dat
ファイルに格納されたマシン語プログラムをTEST
という名前でアドレス0x3000から保存する。再生音量は30とする。
$ java -jar fskplayer.jar -machine -r E:\tmp\test.bas -a 0x3000 -n TEST -v 30
データフォーマット
BASICプログラム
JR-100 BASICの書法に従って、1行に「<行番号> <本体>」の形式で記述します。大文字・小文字は問いませんが、小文字はすべて大文字に変換されます。ASCII文字以外の特殊文字を入力する場合は、「\nn」(バックスラッシュ+16進数の数字2桁)で指定してください。
プログラム例
画面内のランダムな位置にUFOを100個表示します。UFO文字の文字コードは0x85なので、「\85」と表記します。
10 FOR I=1 TO 100 20 X=RND(22) 30 Y=RND(32) 40 LOCATE Y,X:PRINT "\85"
マシン語プログラム
マシン語を表す16進数の2桁の数字を空白文字または改行文字で区切って列挙します。数字の前にプレフィックスはつける必要はありません。つけるとエラーになります。1行に含まれる数字の個数は任意です。
プログラム例
画面の左上から右方向に、文字コード0x00から0xFFまでの文字を表示します。
まず以下のプログラムをtest.dat
に保存します。
CE C1 00 86 00 A7 00 08 4C 26 FA 39
次にfskplayerでJR-100に読み込ませます。開始アドレスは0x3000とします。
java -jar fskplayer.jar -machine -a 0x3000 -r e:\tmp\test.dat -n TEST -v 30
JR-100で読み込んだ機械語プログラムを実行します。
A=USR($3000)
コメント
初めまして。fskplayerをダウンロードしようとしたらエラーになってしまいました。
Warning: fopen(http://yorumomiji.sakura.ne.jp/contents/wp-content/uploads/dlm_uploads/2017/02/fskplayer.jar): failed to open stream: HTTP request failed! HTTP/1.1 403 Forbidden
in /home/yorumomiji/www/contents/wp-content/plugins/download-monitor/src/DownloadHandler.php on line 667
Warning: Cannot modify header information – headers already sent by (output started at /home/yorumomiji/www/contents/wp-content/plugins/download-monitor/src/DownloadHandler.php:667) in /home/yorumomiji/www/contents/wp-content/plugins/download-monitor/src/DownloadHandler.php on line 550
ご迷惑をおかけします。上記のエラーの原因を調査します。
ひとまず下記からダウンロードを試していただけますでしょうか。
それでもダメなら再度調べてみます。
http://yorumomiji.sakura.ne.jp/contents/software-tool-of-playing-jr-100-program
ご迷惑だなんて滅相もありません。大変有益なツールを公開してくださってありがとうございます。
ですが、再度試しましたがそのページからのダウンロードでも同様のDLできませんでした。
また、別のページになりますが、ここにあるFSKローダーもDLできませんでした(一見DL出来ているように見せかけて、中身がエラーメッセージというパターン)
http://yorumomiji.sakura.ne.jp/contents/jr-100-emulator
お手数をおかけしますが対応をお願いします(この辺が無いと実機から何も持ってこれない(汗))
失礼しました。
今日帰宅し次第対応しますね。
実機をお持ちとのこと、仲間が増えたようで嬉しいです!
ありがとうございます。よろしくお願いたします。
初めてのパソコン(マイコン)はJR-100でした。親が小学校に寄付するとか言って一度手元を離れてしまいましたが、懐かしのSTAR FIREをプレイしたくて最近になって入手し直しました(月間マイコンは持っていますが入力が大変なのでOCRで楽したい。昔は頑張って入力したんですけどねぇw)。
あとJR-200、JR-800も手元にあります。JR-200は丈夫みたいで特に問題はないのですが、JR-800はいろいろと調子が悪い。誰か修理できる人はいないかなぁ。。。
リンクを調整しました。レンタルサーバを引っ越した時にリンクがおかしくなっていたようです。
再度お試しいただけますと幸いです。
FSKプレイヤー、FSKローダーともに修正済みです。
FSKローダーの方はほとんどメンテナンスしていないので、wavファイルによってはうまく読み込めないかもしれません。なるべく音質を上げて録音した方が良いかもしれません。
JR-800をお持ちとは羨ましいですねー。
あまり雑誌でプログラムが公開されていなかったような記憶がありますが、一度触ってみたかったマシンです。
貴重なマシンなので適当な修理をして壊してしまうのが怖いですね。。。
返信が遅くなりました。対応ありがとうございます。
師走でドタバタしております。落ち着いたらチャレンジしますね。
よろしくお願いいたします。
初めまして。
マシン語にFFが含まれるとNullPointerExceptionが発生するようです。
いぬふとさん、はじめまして。
不具合のご指摘ありがとうございます。
Java版の方、ちょっと調べてみますね。
もし環境があればPython版の方も試してみていただけますと幸いです。
https://github.com/kemusiro/jr100emulib