JR-300エミュレータの開発その7

このシリーズ完結編!(^-^)

この先にも開発は続くので、その時は続編みたいな感じに続けるよ!

 

JR-300 ナショナル」のキーワードで検索をするといくつかの写真が見つかる。

本体とキーボードが分離したセパレートタイプの筐体で、初代PC-8801やX1っぽい感じを受ける。

BASICがカセットテープで供給されるのに、本体にカセットデッキがついてないように見えるんだが…しかもデータレコーダーは別売りだった??

年代によってカタログに記載されたスペックも違うようで、だいぶ紆余曲折感が漂う。

 

時代の狭間にあったマシンなのかもな…と思ってみたり(^^)

でも愛すべきマシンですよ、JR-300!

 

2022/11/29(火)

昨日までの解析で、今まで謎に包まれていたグラフィックコントローラは、PC-9801などで使われていたμPD7220らしい事が判明した。

 

GDCは直線補完、円、拡大したグラフィック文字、傾斜文字、VRAMからの読み出し/書き出しなどの機能がある。

対応の仕方が分からなかったSYMBOL命令とか、もしかしたらGDCの機能を利用しているのかも??

 

コントローラの素性が分かると、今まで謎だった仕様が明らかになる。

そうなると……ソースコードをキレイに直したくなるよね??(^^;;

 

今までは100%が想像であったし、MSB-LSB反転の解釈だったので間違いも多い。

全体を反転させた状態、つまり素のGDCとして定義し直したい気持ちが強い。

 

というわけで!

グラフィック表示系を全部作り直すよ!!!(^o^)

 

気合が入ったところではあるけれど、

これから実務が忙しくなるので毎日作業ができなくなる。

なんとか2023年のお披露目会(1/14[土])には間に合わせたいのだが…。

 

2022/11/30(水)
この先はグラフィックコントローラ改めGDCと書くことにする。

まずは今あるグラフィックコントローラ系のプログラムを一旦外す。
この状態でもBASICは起動するはずだ。

 

その上で、GDC μPD7220 としてコードを再編するようにした。


機能はほぼすべてわかっているので、今度は作るための資料がたくさんある!
むしろ機能がわかりすぎて、これ、全部対応するの?ってなってる汗

リファクタリング…というか作り直しはちょっと大変だぞこれは。

 

でも困ったことに実務の締切がキツくて、JR-300の作業が当面出来ない…

ぐぬぬ

 

2022/12/06(火)
GDCのコマンドを見直す作業を継続する。

手元にあるGDCテクニカルブックを読み直しているけど、これを参考にしてGDC制御のプログラムを作ったことが一度も無かった!

GDCのコマンドってパラメータの数が微妙に可変長だったりして判定が難しい。

 

さらに、JR-300のBASICでCLS(画面クリア)で発行されるコマンドが、資料に書かれているコマンド発行と違ってるのが理解できぬ…。


うーむ…

勝手に解析してたときは気軽に解釈してたけど、資料が揃うととたんに難しくなるのはコレ如何に(T-T)

 

2023/01/13(金)

だー!1ヶ月以上も手がつけられなかった!

しかも締め切り明日だし!!(T-T)

せめて以前まで動いてたデモくらいは動かした状態でお披露目したい!

 

BASICインタプリタで発行されるGDC初期化部分は対応が終わったけど、それ以外の描画については手つかず状態だった。

……1日で対応できる量なのかな…(^^;;;

 

でも実装するべきものが決まっていると作業効率も良い!

一度書いたことがある処理なので中身で悩むところはなく、PSET、LINE(ラインスタイル含む)、VRAMからの読み出しを一気に実装した!

円(CIRCLE)だけは未実装案件だったけど、書籍に数学書いてあったから思ったよりも簡単に実装できた。良かった(^^;

 

今のところはBASICとデモンストレーションの対応が出来れば良いだけ。

いわゆるお行儀のよいプログラムの対応をしただけの状態。

 

この手の実装で難しいのは「ユーザーが限界ギリギリの速度を出そうとして、マニュアルに書かれていない方法(でも動いちゃう)を使う」のに対応する事であって、規定に基づいた使い方を実装するのは、そこまで難しくないのだ(^^)

 

書かれている通りに実装をしたらちゃんと思ったように絵が描かれた!

当たり前の事なんだろうけれども、それがなんだか嬉しかったよ!(^^;;

 

GDCの実装が終わった後の映像。

おそらくJR-300の文字はこれでよいのだと思う。

無限マークは左半分がテキスト(表示はPCG、つまりGDCとは無関係)なので、そっちの解釈が間違ってるんだろうと思われる。

どう表示されるのが正しいのかが分からないなコレは…orz

 

GDCの実装をちゃんとしたら、それまで見えてなかった漢字が表示されるようになった!表示されてなかった原因が、色の解釈の問題だったのか、それとも別の機能だったのかは調べてない(^^;

まだ文字の拡大表示をサポートしていないので、その機能でないことは確か。

本体に漢字ROMは入ってなくて、デモプログラムに内包されてる。

 

全体的に色があってるのか少し不安w

木になってるリンゴが円で描かれてた!

LINE機能のラインスタイルを対応したら、中間色PAINTのような表示になった。

なるほど、いろんな機能をちゃんと使ってるね!(^^)

右から飛んでくる飛行機はPCGで描かれていて、雲?みたいな跡が残ると思うけれど表示が化ける。これも正しい解釈が分かってない…。

 

これが謎だったデモンストレーション!
GDCのCIRCLE機能に対応したら描画されるようになった。

BASICのCIRCLE命令はZ80側でドットを計算してPSETしてるのに対し、デモンストレーションの中ではGDCの機能を使ってた。

多分、BASICの描画よりもだいぶ速かったと思う。

同時にカラーパレット機能も使われてました!

 

この画面はテキスト表示だけだったのでサブCPUのお仕事(^^)

ここだけで横80キャラクタ(WIDTH 80)が使われてます。

 

最後の画面。

多分、円の中がちゃんとPAINTされていないのと、棒グラフの一番下の赤が「その他」とか書かれていそうな予感。これも表示系がちゃんと出来てない。

 

……という感じで、まだまだ完成には程遠い感じ!

デモンストレーションの表示を完璧にした状態で、あとは用途不明のBASICを解析していく流れかなーと考えてる。

 

 

BASICとデモテープだけを頼りにエミュレータを書く

こんな体験ができるとは思ってなかったなかったけど、これも巡り合わせなのかな…!

良い経験をさせてもらえました!(^-^)

一度手を付けてしまったマシンなので、最後まで頑張りたい(^-^)

 

JR-300エミュレータの開発編、これにて終了!(^o^)

ありがとうございました!!

 

ではまた次回!(^-^)ノ