2014.8.27

前へ
次へ
ホームページトップへ戻る

MYCPU80でCP/Mを!
超巨大基板の8080互換HCMOS・CPUでCP/Mを走らせてしまおうという、なんとも狂気なプロジェクトです!


[第24回]


●320msのデータを記録するのに30分かかります

前回お見せしたログファイルなのですがなんと17MBもあります。
それはどれくらいの記録なのかといいますと、128K×4バイトのメモリのたった5回分の記録データです。

計算が合わないじゃないかとお思いかもしれませんが、もとの1組4バイトのデータをZB28Kに送る段階で3バイトのメモリアドレス情報を追加していますから、それだけでも75%の増量になります。
ログファイルはもとのデータの1バイトを16進数2バイトのASCII文字列に変換して、さらにデータとデータの間にはスペースを置いて見易くするほか適宜MEMRD、OPCODEなどの文字列も追加していますから、もとの生のデータの8倍程度にふくらんでしまいます。

メモリが一杯になるまで1回分の記録データはMYCPU80のわずか約320ms分のデータです([第18回]参照)。
ですからお見せしたログファイルにはMYCPU80のわずか1.5秒間のデータしか記録されていません。
それではこのログファイルはどれほどの時間のログなのかといいますと、約2時間半の間のログなのです。
逆算してみますと320msのデータを記録するのに30分かかっている計算になります。

CPLD(XC95144XL)を使ってMYCPU80の動作をリアルタイムに記録していることは間違いないのですが、わずか300msほど記録するとすぐにMYCPU80のBUSRQをアクティブにしてそこで一時停止させておいて、それから延々30分かけてデータをXC95144XL→ZB28K→Windowsパソコンのように送ってそこでログファイル(テキストファイル)を作成します。
これはちょっとたまらんなあという感じです。

前回やっとつかまえたMYCPU80の誤動作は13万データ目にやっと出現したものです。
たった一回確認できただけですから、その原因を解明するにはちょいとデータ不足です。
もっと何回かの誤動作の記録がほしいところです。
そういうことになりますと、せっかく作ったデータ記録システムなのですが、これではちょいと間に合いそうもありません。
もう少しシステムを改良する必要があります。
さて。
どうしましょう。

●機械語のプログラムで受ける

なぜそれほどに時間がかかってしまうのかといいますと、BASICでプログラムしているから、ということもありますけれど、手っ取り早い方法としてログファイルをそのまま利用するという手抜きをしたことが結果として記録時間の増大につながってしまいました。
ログを取るために、XC95144XLから受け取ったデータをPRINT文で画面に表示させました。
この画面表示に時間がかかっているのです。
記録時間を短縮するためには、ログファイルを利用するなんていう手抜きはやめて、やっぱり正攻法で攻めなくてはだめなようであります。
ここはもうすっぱりと方針を変えてBASICではなくて機械語のプログラムを使って、データを画面に表示する代わりに直接データファイルを作成してそこに書き込んでしまうことを考えました。

前にも説明しておりますようにXC95144XLからのデータは当社のBASIC制御マイコンボードZB28Kで受けております。
ZB28KにBSAVE(バイナリファイルSAVE)の機能があればよいのですけれど。
マニュアル操作でバイナリデータをSAVEする/SVコマンドはあるのですが、BASICや機械語のプログラムからCALLして使うようにはできていません。
ここはしかしどうしてもバイナリファイルの作成機能が必要になってきました。
そうしないことには、320msを30分かけて記録するしか道がなくなってしまいます。

そりゃあもう、やるしかありませんでしょう。
ZB28KにBSAVEの機能を作って追加したうえで、機械語のプログラムでデータを受けて、バイナリファイルとしてSAVEするようにシステムを作り変えました。

MYCPU80でCP/Mを![第24回]
2014.8.27upload

前へ
次へ
ホームページトップへ戻る