CPU実験室

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

PGAソケット完了

MC68030ソケットのコンタクトをスリーブの長いものでやり直し、全て植え付け終わりました。MC68882のソケットは既製品のものを仮置きしてます。 真横から見ると1mmの中敷きを入れたことで既製品のソケットとも高さが揃うのでその意味でも良かったかもしれま…

丸ピンコンタクト(2)

丸ピンソケットのスリーブ深さを稼ぐためもう一枚穴あき基板を挟むことにしました。フランジを少し埋没させた分も含めあと1.0mmもあれば十分でしょう 秋月のDサイズのユニバーサル基板は1.6mm/1.0mm/0.3mmと厚みのバリエーションがあるので1.0mm厚を選択、13…

丸ピンコンタクト

着荷した基板に真っ先にPGAソケットを組込んでみました。面一とまではいきませんが座グリしたのでコンタクトのフランジが基板に収まり良い感じです。「さなえちゃん」の働きで傾きもそろっています(いま話題の「早苗ちゃん」ではない) ぐるり外周を田植え…

ソケットベース

PGAソケットのベースになるユニバーサル基板を切り出しました。左が寄せ集め基板のガラス基板FR-4、右がガラスコンポジットCEM-3の秋月D基板から切り出したものです。加工性は圧倒的にCEM-3の方が楽。孔は全てφ1.5のドリルでさらい2枚重ねて端面研磨しておき…

基板到着

MC68030ボードの改版が出来上がってきました。発注からちょうど1週間目です。見た目にはほとんど変わりないので取り違えに気を付けなければ。 この基板の組立てに当たっての懸案は68030の変則的PGAソケットですがこれは前回と同じく自作になります。ただそ…

基板発注

最終的にビア位置を微調整しています。今回は特に異常に接近しているものを離したり可能な限りX,Yのグリッドに合わせこんでパタンを完成させ発注。これが3日前で、今日、進捗を見たら製造完了して既に発送済になっていました。設計変更が結構入ったので余計…

SCC回路変更

シリアルコントローラAm85C30周りの回路を変更しました。まず動作クロックPCLKをCPLDで分周した10MHzに変更。その近くを見ていたら割込みアクノリッジ/INTACKを使っていなかったことに気付いてCPLDに接続しました 転送クロックRTxC/TRxCはPCLKをSCC内部のボ…

モデム制御線(3)

ポインタレジスタWR0→コントロールレジスタWR5のアクセスの方法、タイミングは間違いないはずなんですが、念のためリカバリタイムを稼ぐiowait()ループをインラインで埋め込んでみました GCCのアセンブラ中間ファイルを確認してみるとソース通りの効率の良い…

モデム信号線(2)

DTR,RTSの制御ビットがあるWR5レジスタにアクセスするにはポインタレジスタWR0に5をセットしてから再度同じレジスタにデータを出力するというZ80SIOやuPD72001と同じ方法ですがレジスタに連続して書くにはリカバリタイムが必要です 待ち時間は実時間ではなく…

モデム信号線

CADへの設計変更がだいたい終わったんで配線引回しの微調整をして基板発注かな・・と思ってたのですがいや待て、まだ確認してないとこがありました シリアルコントローラAm85C30のモデム制御信号DTRとRTSにLEDが直付けしてあるのですがこれをまだチカチカさ…

割込みエンコーダ変更

別件で手持ち部品を探していたらフラットパッケージの74HC148:8-3プライオリティエンコーダを発見しました。なんだこれでいいじゃん 包装からして鈴商で入手したものですね。小さいラベルを印刷して封入とかえらい手間がかかってます。レジ台の店員が無心に…

WinCUPL Ⅱ

CPU周辺のグルーロジックはEPM7064と2個のGAL16V8に振り分けることにしました。1個目のGALはバスセレクタ、2個目は8-3プライオリティエンコーダでそれぞれインプリメントするには十分余裕があるはずですが念のため先行して内部ロジックを設計しておきます。 …

基板リファイン検討

68030ボードについては確認できるところは全て完了といってよいでしょう。初の4層基板も以下の致命的ミスを除いては設計製造はうまくいきました、ということで早くも基板のリファインの検討に入っています 直さなといけないと今の時点で明らかになっているの…

プログラムロード

ハード側修正でモニタも完全に動くようになったしプログラム書換のたびのROM焼きからもやっと解放です。 さっそくSRAMの先頭番地(0x20000000)にロードされるテストプログラムを作りました。目に見える速さでLEDをチカチカさせているだけです これをAS68k.e…

バスセレクト信号

入力値とメモリダンプの出力値を比べるとアドレス4n+0~4n+3に現れる値が入力とは逆順っぽいのとアドレス4n+0と4n+2に同じ値が現れることからDATA_STROBEモジュールのロジックがおかしいということになります。配線のテレコ+真理値表からロジックに落とすと…

CPLDロジック変更

SRAMのアドレス4n目しか更新されない、あるいは読出しできない件でSRAMのバイト幅単位のチップセレクトを生成するロジックを見直してました。A0/A1/SIZ0/SIZ1をデコードしてできる4本のセレクト信号ですが考えてみるとこれは書込み時にどのバイト位置(どのS…

HEX表示ルーチン

そのまま移植したはずなのに・・でバグっていることはよくあることで結局は1文字出力putcomの差し替えが原因でした。 HEX表示ルーチンhexout8、hexout2にはD1レジスタで値を渡しているのですが、 なんのことはない差し替えたputcomは内部でD1レジスタを破壊…

モニタ移植

シリアルコントローラ部分については使用実績もあるし実はあまり心配してなかったのですが、このテストの重大な意義はSRAMが動作しているかの確認にありました。 SRAMは32bitバスに直接つながっていてバイト指定信号BYTE0-3の生成ロジックが合っているか、ハ…

SCCテスト

もうひとつ周辺I/Oとして載せているSerial Communications Controller:Am85C30の動作確認をしておきます Am29030ボードやi80486DXボードでも使っていて初期化や1文字入出力のC関数はあるのですがアセンブラで書こうとしても680x0でのビットテスト命令がうろ…

PPIテスト

最小ループテストがうまくいったので少なくともCPLDに組み込んだアドレスデコーダ、WAIT生成、DSACK返送回路が正常に機能していることがわかります。次のステップは周辺I/Oとして増設したPPI:8255のテストをやってみます。 8ビット幅にバスサイジングしたデ…

最小プログラム

ROMソケットも実装していつものように最小プログラムの実行からハードデバッグを始めました。 コードは680x0系のいつものやつです。0番地から4byteのスタックポインタ初期値、4byteのプログラムカウンタ初期値をセットした後に最小ループ BRA $ が置いてあり…

MPU実装

いろいろ失敗しているこのボードはプロトタイプと割り切ってさっさと確認を進めていきます。なるべく部品実装を無駄にしたくないので最小限の構成から始めますが、なにはなくともMC68030は挿入しなければなりません。 前回苦心した手作りPGAソケットへの実装…

バス制御ロジック(3)

せめて引き込んでいるアドレスバスA31/A30/A29を、A19/A18/A17/A16に差し換えることができればFPUを含むCPU空間のデコードとメモリ、I/O空間のデコードを共用することができ、こんなにエレガント且つコンパクトなメモリマップになったのです このマップの大…

バス制御ロジック(2)

面倒なバスアライメントロジックの設計ができたので残りのバス制御を片付けます。以下の回路はメモリ/IO空間のアドレスデコーダ、WAIT発生回路、68k非同期バス用のDSACK返送回路になります ここらへんは今まで68000.68020.68040ボードで同様な設計をしている…

バス制御ロジック

トランスピュータT805ボードとISERVERの接続はmy独自設計仕様とメーカ仕様のすり合わせがうまくいかないようでいったん保留にしておきます。 代わりに取り出したのがずいぶん放置していた68030ボードです。バス制御をおこなうCPLDのロジック設計で頓挫してい…

ISERVER解析

ビルドしたISERVERがちゃんと動作しない原因を調べてます。指定したブータブルファイルがT805まで転送されているのは間違いなさそうですが、ボード上で起動してない感があります。考えられるのは ①展開されるメモリアドレスが違う ②使用しているリンクポート…

コードアセンブラ化

Cで書いたソースを見直してみると、ほとんどが周辺のレジスタアクセスでありバッファも100H境界に置いてレジスタペアをインデックスとして下位バイトのみインクリメントすればモジュロ演算をするまでもなく自動的にリングになる訳でアセンブラでの記述も容易…

プロトコルコンバータ

ホストPCと64180ボードとの仮想COMポートを通じた接続がうまくいったので次はリンクアダプタIMSC011のドライバを組み合わせてトランスピュータT805側と接続させます。データの流れを模式的に書くとこういう感じです ホストPCのアプリケーションISERVERはWrit…

シリアル入出力(2)

仮想COMポートをさらにエミュレートした環境で、実在しないレジスタを直叩きなんていうことが果たしてできるのかとかなり懐疑的だったのですが、なんとこれがちゃんとできるのです。モードの初期化、1文字入出力関数ともにDosBox内で正常動作しました そう…

シリアル入出力

ホストPCと64180ボードを接続する手段は仮想COMポートを介したシリアル通信しかないのでホスト側アプリはこのCOMポートをアクセスするプログラムを書かなければなりません。しかも16bitアプリで、ということになります そもそもDOSエミュレータのDosBoxから…