2012年03月14日

8255と8049の設計(15)

 まだまだCMT セーブの設計中です。

 タイトルは、"8255と8049の設計”ですが、実際は SD をコントロールしているファームウエアの設計です。

 Windows やDOS と違って直接デバイスを触るため、OS でやっている処理をする羽目になっています。

 やっとそれなりな物が出来ましたが、特殊な条件の時の処理が未実装です(結構面倒...)


 SD カードのプログラムは、もうお腹いっぱいな状態です...


posted by えすび at 19:25| Comment(0) | FPGA化:サブCPUと8255 | このブログの読者になる | 更新情報をチェックする

2012年03月03日

8255と8049の設計(14)

 CMT セーブの設計中なんですが...

 前のロードの時の設計(というかプログラム)が悪いのか、このまま行くと手直しがすごく大変で、さらにバグりそうです。

 最初にSDカードのアクセスのプログラムを書くときに、後の事を考えずに作ったのがまずかったようですね...


 今後の事(FDD対応)の事もあるため、プログラム全部を見直して、再設計中です。

 アセンブラなので、大変なんですが(−−;

posted by えすび at 18:32| Comment(0) | FPGA化:サブCPUと8255 | このブログの読者になる | 更新情報をチェックする

2012年02月06日

mk2のバスリクエストについて(2)

  ちょっと書き込みの時間が空いてしまいました。


  BUSRQ を間引く方法はちゃんと動きそうなんですが、原因不明の不具合が出ました。

  mk2 でMODE1〜4 の時のみ、左にゴミが出るというものです。


  他のモードではちゃんと動いているんですけどねー。

posted by えすび at 19:14| Comment(0) | FPGA化:サブCPUと8255 | このブログの読者になる | 更新情報をチェックする

2011年10月19日

8255と8049の設計(11)

 ロード完了直後にハングする問題は、また8049関連でした。

 どうもロード直後に、ロード完了のコマンドを投げる前に、ゲームキーの調査のコマンドを投げられているらしく、これが悪さしているようです。

 この部分を修正して、ついでにSDRAM周りに機能を追加しました。



 SDRAMは、16ビット幅のものが搭載されているのですが、このうち8ビットしか使っていませんでした。

 書き込みや読み出しでコケた場合にエラーを検出するように、上位8ビットにエラー検出用のバイトを設けました。

 と言っても、元データとアドレス上位8ビット、アドレス下位8ビットをXOR したものを書き込んでいるだけですが。



 ロードは出来るようになりましたが、大抵のソフトはどこか調子が悪いような動きをします。

 オールBASICでも、平気で(?)ハングアップしたり、よくわからないErrorで止まったり...

 メモリの読み込みではコケてないようなので他に原因があるのですが、8049周りか他なのか、まだ絞り込めていません。



 というか、どうやって調べていけばいいか、まだ思いついていないんですね...



 ↓は、比較的まともに動いたソフトです。


動作画面


posted by えすび at 22:59| Comment(0) | FPGA化:サブCPUと8255 | このブログの読者になる | 更新情報をチェックする

2011年10月18日

8255と8049の設計(10)

 CMT のリードを実装するのに、SDカードから読み込ませるのは結構大変で、ヘタすると何が何やらわからなくなりそう。

 なので、内部にプログラムを書き込んだROMを持たせて、そこからリードするという風に、とりあえず実装してみました。
 後に、このROMをSDカードのインタフェース部に置き換える感じです。


 ROM からの待ち時間が少ないと、ロードの最初の部分が壊れるようで、かなり速度を落とさないとダメなようです。
 (もしかしたら、他の原因かも)

 短いプログラムならロードは出来たのですが、ちょっと長くなるとロードが終わると暴走します。



 うーん、いろいろと引っ掛かるなぁ...


posted by えすび at 20:42| Comment(0) | FPGA化:サブCPUと8255 | このブログの読者になる | 更新情報をチェックする

8255と8049の設計(9)

 すぐ止まる原因は、やはり 8049 が問題でした。

>> 4)キーボードポーリング
>> 5)RxRDYポーリング

 の時は、コマンドを待たせておく事にしたのですが、これがうまく行かない時があったようです。

 シミュレーションで、ポーリングとコマンドが重なる時を検証すると、再現しました...


 キーボードの問題も直したので、CMT周りと音源周り以外は実装が完了しました。


 気になったので、CRTKILL(OUT&H93,2)をすると、こんな画面に。

CRTKILLプログラム

CRTKILL実行結果


 実機での実行結果をあまり覚えていないんですが、bernie さん所の日記を探してみると、似たような写真が。

 多分、よさそうかなぁ。


 ただ、実装していろいろと触っていて、問題がいくつか見つかりました。

 ・突然暴走する

  どうもこれは、SDRAM の読み出しでコケる場合があるようです。タイミングを変更してからは暴走していません。


 ・連続でOUT 命令を実行すると、おかしくなる。

  10 OUT &H93,3:GOTO 10

  とかいうプログラムを実行すると、ちょっとしてから、?UL Error が出る。とりあえず保留。


 ・PAINT 命令の動作がヘン

  ちゃんと塗りつぶしてくれない事がある。これも保留。


 先にCMT のLOAD を実装するつもりです。

 が、またSDカードのアクセス関係なので、ちょっとグッタリです...


posted by えすび at 18:20| Comment(0) | FPGA化:サブCPUと8255 | このブログの読者になる | 更新情報をチェックする

2011年10月17日

8255と8049の設計(8)

 キーボードは、PC-6001と同じキーマトリックスを作って実現しました。

 キーマトリックスは、ハードウエアで実現してもいいんですが、使う時に面倒なのでPS/2 のキーボードを使えるようにしました。
 ただし、日本語キーボード専用になります。

 キーボードにないキーは、以下のようにしました。

 かな :全角/半角
 GRAPH :ALT
 ↓↑ :Page Up
 STOP :End


 とりあえず動きます。


起動画面


 ...が、問題アリ。

 ・HOMEキー、Page Up キーなどの動きがおかしい
 ・すぐにハングアップする。


 1つ目の問題は何となく分かっていて、PS/2 の拡張キーを押した時の動作が、こちらの意図と違うようです。

 問題は2つ目で、8049 との連携がうまく行っていなく、ハングする所は決まって、106D〜1071 の間を無限ループします。


 原因調査中...

posted by えすび at 20:00| Comment(0) | FPGA化:サブCPUと8255 | このブログの読者になる | 更新情報をチェックする

2011年10月15日

8255と8049の設計(5)

 8255+8049の問題は、ロジアナで見ながら、調子が悪い所を観測しました。

 なぜか、106D〜1071 の間を無限ループに入っていました。


 いろいろ調べると、8049 のゲーム用キーの調査に対する割り込みの値

>> 4)ゲーム用キー割り込み
>>  返す値は2バイト。0x16 + キーコード

 これの最初の値が間違っていました。そのため、違う割り込みの処理に入っていた事が原因でした...


 修正すると、画面が出た〜♪


起動画面


 キー入力は出来ませんが、2msタイマの割り込みはちゃんと動いているようで、カーソルの点滅も出来ています。


 これから、8049 関連で、キーボードとCMT 周りの設計に入れます。


posted by えすび at 13:34| Comment(0) | FPGA化:サブCPUと8255 | このブログの読者になる | 更新情報をチェックする

2011年10月14日

8255と8049の設計(4)

 8255に関しては、MODE2/MODE0 固定でとりあえずHDL化が完了しました。

 8049 に関しては、8049 へ出力したデータの取り込みと、ゲーム用キー調査に関するレスポンスさえ作れば、とりあえずBASIC が起動する所まで行くはずです。

 ダミーでとりあえず作ってみました。すると...暴走(−−;)

 ロジアナで調べてみると、SDRAMからのデータがおかしい...


 例の取り込みタイミング問題かと、いろいろ試してみてもダメ。

 よく見てみると、データの出力に、取り込みのタイミングが間に合っていない。
 100M でアクセスしているのを、4Mで読み出しているので、全然問題ないはずなのだが...


 結局、デコーダの間違いでした(−−;

 トップレベルでシミュレーションしてなかった箇所でした。やっぱりシミュレーションすべきですねぇ。



 メモリ周りの問題は解決しましたが、まだ 8255 + 8049 は動いてくれません。

posted by えすび at 22:37| Comment(0) | FPGA化:サブCPUと8255 | このブログの読者になる | 更新情報をチェックする