CPU実験室

誰も見向きもしない古いCPUをいじって動かしてみようというプロジェクトです

#工学

液晶表示テスト

CPUボード上にI/Fとして最後にLCD制御を確認しておきます。LCD制御用の関数をいくつか用意しますがこれらは他のCPUボードで実績があるソースをそのまま持ってこれます。ただしi8031のI/Oはメモリマップドなのでinp()、outp()でポートをアクセスする部分はポ…

モード切替

GAL内に用意したモード切替レジスタとSRAMへのアクセス方法を整理すると以下のようになります。 MODE(/DLL)信号を0(赤LEDが点灯)状態ではプログラム空間に置かれたRAM0へCPUの/WR信号が入力されるのでシリアルラインからプログラムのダウンロードができ…

モニタ起動

CPU(80C31),PPI(8255A)をICソケットに挿入。GALは既に設計済のロジックを書き込み。ROMには前Rev基板と同じpaulmonモニタのバイナリをそのまま焼いたものをセットしました。 水晶は手持ちの16MHzを付けています。ボーレートは原振の1/384となるので41,667bau…

部品実装完了

いままで作ったCPUボードの電源コネクタは、ほぼヒロセのDF1Bシリーズの4Pで統一しています。電源供給の規格が同じなので別途作ろうとしているテスト用治具も共通して使うことができます。この8031基板もさっそく動作を確認したいので古い試作基板をゴソゴソ…

部品実装中

8031基板にICソケット、コネクタ等の機構部品も取り付けました 基板の左下部分にUSB-シリアル変換モジュールを直付けしています あとは4Pの電源入力コネクタを残すのみなのですが、ここに来て手持ちが欠品です。まあ急ぐこともないので次の買い物のときにで…

部品取り付け

チップCR、LEDとフラットパッケージのICを取り付けました。今回は手持ち部品だけでいけそうです。 ただ256kbitSRAMを日立HM62256で設計したところに東芝TC55257を付けてしまいましたがこれって完全にコンパチだったか、ちょっと不安になってきました。

Rev01基板実装開始

i8031ボードの改版基板が出来上がってから放置していましたが、いよいよ部品の実装を開始します。基板の表裏はこのような出来上がりです。

外部リセット追加

シリアルポートを介してボードにリセットをかける回路は、パタンはあるのですがトランジスタQ1のパタンを裏返しに作ってしまったので未実装のまま放置していました。DRAMを交換するために久しぶりに基板を出してきたのでこの際、直しておきました。パタンに…

スイッチ交換

MC68020ボードを収納しているケースの電源スイッチが接点が腐食してるか何かで壊れていて2回路のうち片回路で配線を直し、支障はありませんがそのうち交換してやろうと思ってました。 がんばってメタコンとか使って製品っぽく作ってますがAC100Vとかヒュー…

メモリ換装

懐かしの64kbitのDRAM、uPD4164を入手しました。65536×1ビット幅なのでこれを8個並べるとZ80の全メモリ空間をカバーするのでこれとシャドーROMを組み合わせた8ビットパソコンがあった気がします。 セラミックパッケージと金属のハーメチックシールがいい感じ…

FPUテスト

最後まで残っていたFPU:NS32081をソケットに挿入しました モニタも起動するのでデバッグは容易です。まず単純にFPUのレジスタに値が代入できること、簡単な演算ができるかテストプログラムで確認しました 1行目のsetcfg [F]はCPU内のCFGレジスタにFPUが存在…

挿入部品完了

基板に実装する部品で残っていたボックスコネクタ10p,14p,20pを取付けて部品のはんだ付けはすべて終わりました。 あとはコプロセッサNS32081をソケットに差し込めば完成です。 パラレル出力の20ピンコネクタにデバッグ用LED基板を差し込んでチカチカさせてい…

パラレル出力テスト

モニタを使ってRAM領域にプログラムをロードできるのでデバッグが一気に楽になりました。ROMを外してプログラムを書き込んでまた挿入、これが32bitなので毎回4度繰り返さないといけない環境と比べると雲泥の差です。 ただちょっと気になるのがプログラムはRA…

モニタ暫定完成

ロードと実行だけできる原始モニタをROMに焼き込み、電源ONで起動できるようになりました。この状態で0xF80000番地からのRAM上にユーザプログラムを転送し実行できます。先ずは原始モニタ自体にいくつかの機能を拡張しユーザプログラムとして実行、問題なけ…

bin2hexコレクション

いままでいろいろなボードコンピュータ用に作ってきたモニタを見てみると、もちろんCPUアーキテクチャの違いはもちろんですが、その時のスキル、そのCPUへの理解度で様々な書き方をしていました。メモリダンプ表示にはかかせず、共通に含まれていているBIN→H…

条件判断

これは実際にとっかえひっかえして動かすとすぐにわかるのですが意外にも「LT」(Less Than)が正解なのです。R0レジスタと10を比べてR0の値が同じか大きければ分岐させたいので直感的には「GE」(Greater Than or Equal)なんですがそれをやると前回のダンプ…

条件分岐

原始モニタの機能はプログラムのロード[L]と実行[G]さえできれば十分なのですが今回初めてのハードなのでRAMにちゃんとプログラムがセットされるか確かめられるようにメモリダンプ[D]も作り込みました RAMの先頭0xF80000番地から256バイトを16進ダンプ…

モニタ作成

いちおう1文字出力(入力は確認できてないけどたぶん大丈夫)とSRAMの動作ができているので原始モニタのコーディングを始めました。ROMの抜き差しをしなくて済むようにバイナリコードをシリアルからSRAM上に展開(「L」:ロード)とコードの実行先頭番地へ…

シリアルテスト

シリアルコントローラからインクリメントデータを垂れ流すプログラムを書いてみました。一気に本格的なコーディングのようですが中身はコントローラの初期化追加とLチカループに1文字送信ルーチンを挿入しただけです このプログラムで重要なのはシリアルコ…

シリアル実装

CPUの正常動作が確認できたので周辺デバイスのデバッグがやっとできます。最初はモニタを搭載するためやはりシリアルコントローラからです デバイスはTL16C550をつかっています。 転送用のクロックはCPUクロックを流用してもいいのですが、標準的なボーレー…

ピン終端処理

初期のCPUやDRAMでは+5V、+12V、-5Vとか複数の電源を要求するものがありましたが、やはり扱いにくいのですぐに単電源動作が当たり前になったのだと思います。ですが内部的にはどうしてもバイアス電圧が必要な場合があるのでしょう。ただこういうBBGのように…

Lチカ成功

パタン修正しやれることはやりましたし、なんとかこれで動いてくれとADDQによるインクリメント、PC相対ジャンプも使ったプログラムをROMに焼きました。 祈る気持ちで電源ON・・・ 動きました! 静止画像ではわかりませんがLEDはちゃんと目で追える速さでバイ…

パタン修正

接続修正のためにパタンカット、ジャンパ位置を入念に検討しました。+5V系は基板裏面(ハンダ面)のライン(緑)のカットでいけます。ただし、つなぎたくないランドを経由して本来の接続先に至るところもあるのでそこは切り離した後ジャンパで接続を再建しな…

電源配線見直し

NS32C032では複数の電源ピンを+5VとGNDにつなぐだけでしたが(左図)、NS32032は内部で使うために生成している負電圧がBBGピンに出力されているのでフィルタのためにここにコンデンサをつなげと書いてありました(右図) しかもコンデンサの容量、種類までし…

しくじり初め

年も改まったことだし原点に立ち戻ってマニュアルを読み返してました PDF版を見つけたのですが、以前にリアルの本も見たことがあります。1000ページ以上もある電話帳みたいです。(今時そのたとえは通用しませんが)このころメーカによってマニュアルのシン…

もやもやしたまま今年も終わり

インクリメントはちょっと置いといて別の方法でLチカを試みてみます。 これも単純なんですがローテーション命令です 初期値0xFEをロード・・・パラレルLEDは'0'になっているビットが点灯するため・・・しておきそれを左ローテーションさせるだけですがこれは…

Lチカ苦戦中

単純に1づつ増加するデータをパラレル出力するというだけなのですがここのところずっと嵌ってます。同じ動作をするはずのプログラムをいくつか書いてみました。 1は現状の書き方。+1のクイック加算でインクリメントしています。 2は通常の加算命令でソース…

バスデータ解析

ここのところ動作が不調でプロジェクトが停滞していますが、やはりどうも動きが変です。 まず、今実行しているテストコードをあらためて示すとこうなります 期待する動きはパラレルLEDに0x55からはじまって0x56,0x57・・・0xFF,0x00・・とインクリメントする…

バスライン観察

ROM読出し信号の接続間違いを修正しプログラムが安定して実行されるようになったのですがまだ変なところがあります。 LEDにはインクリメントデータをラッチしているので上位ビットに行くほど1/2,1/4・・とトグル周波数が下がっていくはずなのに全ビット同じ…

パタン修正

これはもうパタンカット、ジャンパで修正するしかありません。パタン修正は半田面だけでいけそうですが、ROM3の/OEピンはそこを経由してラインの引き回しがあるため、パタンカットは3か所、ジャンパは3本となります。 ROMの/WEピンは当面はVCCへ固定しても…