CPU実験室

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

286

シリアル信号振幅

実は前から気付いていたのですが、286基板をホストにシリアルケーブルで接続するときPCにレガシーポートとして用意されているホンモノのシリアルポートでは接続がうまく行くのですがUSB-シリアルケーブルを使うと何故か下り(PC→CPU基板)が通信できません。…

NDP換装

・・・と冗談はさておき。 80287の改良タイプi287XLを入手しました。 ゴールドのフタとロゴがカッコイイです どうもPC98XAのペイントがある80287が気に入らないので換装してみました。 ピンアサインは80287と当然コンパチブル・・というか冗長な信号だっ…

評価ボード製品化

パタン修正後の基板が量産できたので製品化しました。 ブリスターパックに基板と必要な付属品を同梱していますので 手軽に評価ができます 付属品はライブラリ、モニタプログラムやドキュメント類を納めたCD1枚と 16桁2行LCD、電源ハーネスとゴム足です 5V-2…

CUIゲーム

CPU周りのスペックとしては往年のPC9801VX相当の286基板ですが、いかんせんI/Oが ホストとのシリアル通信と基板上のLED、LCDだけなので、まるで能力が生かされてません。 CUI(キャラクタユーザI/F)ベースのアプリをぼちぼちと動かしています これは68000基…

周辺ロジックFIX

LCDのインターフェース部分も組み込んで最終の全ロジックはこんな形でFIXとします CPLD、XC9536へのフィッティング状況です。 実装時のピン数を間違って基板を設計したりと一時はどうなることかと思いましたが、 使用ピン数はギリギリなものの、内…

LCD制御修正

不具合時の動作を整理すると、 ・表示クリア、表示アドレス変更・・・・コマンドレジスタ(I/Oアドレス0x30)にコマンド書込み →正常 ・文字表示・・・・データレジスタ(I/Oアドレス0x31)にデータ書込み →文字化け異常 ということになります。 これはよく…

LCD制御信号

黒い枡(真ん中に穴が開いている)などキャラジェネROMに持っていないのでこれは初期化されていないユーザ定義文字が表示されてしまったと思われます CPLDで生成したLCDの制御信号をロジアナで取り込んでみました データレジスタ書込時(ch0:Eクロック…

LCD取り付け

286基板にコネクタを介して16桁*2行のLCDを接続してみました。 カーソルを2行目に移して「** TEST **」と表示させたつもりが変な黒枡が10個。 表示消去、表示アドレスセットといったLCDに対するコマンドは通っていますがデータだけがおかしい…

Nクイーン問題

LSIC-86も言語仕様的には何の遜色もないのですが、使い慣れてるせいもあってMSC6.0でのコーディングが楽でほぼそれに移行しています。 浮動小数点処理を使用しなければ例外処理やライブラリも軽くなるので出来上がりサイズもかなり小さくなり、組込み用ファ…

ビア補修

ここのところ、電源ONで起動しないとか、しばらく通電していると何とかモニタは起動するも 動作が不安定で、NDPも認識しないなど286CPU基板の不調が続いていました 寒い部屋が暖房で暖まってくると安定するような気もするのでアクセスタイミングの問題かと思…

プログラムリロケート

プログラムの再配置のためにメモリの使い方を記述した設定ファイルを準備します 完全にROM化するシステムならばコード領域をROM、データ領域をRAMに割り振ればOKですが モニタでロード・実行する領域は全てRAMなので、仮に0x02000から0x1ffff番地をコード用 …

プログラムビルド

生成されるオブジェクトコードの構造、DOS管理下でのプログラムのロード、実行方法を 詳細に調べると勉強になるかも知れませんが、さすがに今さら感もあるのであまり深く考えず 簡単に専用ツールを使ってスタンドアロン化を実現してみます。 まずは改めてユ…

コンパイラ変更

LSIC-86のコード生成はいまいちで、特に浮動小数点処理をするとき頻繁にサブルーチンコールする ので効率が良くありません ここではDOSアプリ時代に相当お世話になったMicrosoft-C Compiler Ver6.00を利用してやってみよう と思います。 DOSアプリ用のコンパ…

NDP回路変更

ここでCLKMクロックモードをLOWにして内部3分周するのが最も簡単な対策なのですが それを使ったら負けなので(何に?)NDP専用のクロックを用意することにします。 といっても変更はCPLDで原振を分周しているカウンタからタップで8MHzを取り出し、それをNDP…

クロックアップ失敗?

原振を16MHzにアップして起動させたところモニタは正常に起動しました。 アクセスタイムの詳細な検討はしていませんがROM,RAM、I/Oともノーウェイトで今のところ問題なく 動くようです。 ここでNDPのテストで使ったSQRT(2)を求めるテストプログラムを実行さ…

クロックアップ

ボード上のCPUはA80286-8で8MHz動作のものです クロックジェネレータ82284やバスコントローラ82288も「-8」のサフィックスが付いているので 当然のように8MHzの水晶をつけていたのですが、CPUのデータシートを読み返してみると CLK端子からのクロックはは2…

NDP動作確認

満を持して再度電源ON。 モニタで変数_8087の格納場所100番地をみるとint型で1がセットされていて成功です。 これ以降はこのフラグを見て浮動小数点演算はx87命令を使ったルーチンが呼ばれるようになりますが 強制的にフラグをON/OFFしてどれくらいの速度比…

デコード変更

ハードウェアでロジックを追加し、もうこれで大丈夫と思って電源を投入したら・・・ 今度はモニタが起動しなくなりました。 考えれば理由は明らかです。 現状のNDPチップセレクトは単にアドレスバスのA3~A7をデコードしているだけなので、 これでデータバッ…

ワンゲートロジック

82288のDEN(データイネーブル)の正論理信号を74HC245の負論理イネーブルピンにつなぐために インバータが1個入っています。 これは完全に独立していて他の信号との連携も不要なのでわざわざCPLDに取り込むまでもないと思い 1パッケージにゲートが1個し…

CPUローカルバス

CPUとNDP周りの構成をブロック図にするとこんな具合になります CPUとNDPだけでローカルバスを形成し、バスバッファを通してメモリやI/Oにつながるシステムバス になっています この図を見ているうちに気がつきました CPUがNDPの結果を読み出そうとするとき…

NDP信号チェック

80287の制御がちゃんと行われているか自作ロジアナを接続してみました I/Oとしての制御信号と、データやり取りのタイミングを取るためのハンドシェイク信号の数本を プローブします。 CERDIPというのはリードがパッケージにぴったり付いていて隙間が無いの…

NDP関数

SQRT関数をNDPのアセンブラで書いた関数sqrt87に差し替えてみました。 これで存在チェックによるフラグによらず必ずNDPが使われるようになります。 C言語メインルーチン アセンブラ sqrt87関数 これのコードでいざ実行! だめぽ・・・

NDPテスト

80287NDPのテストのため、簡単なプログラムをロードしてみます。 2の平方根を計算して出力するだけで、結果は以下のように一見正常に動作しているように見えます。 ところが、これは実はダメなのです。 FPU=0と表示されているように「_8087」というグロー…

NDP接続

いよいよ数値演算コプロセッサ80287の対応です まずCPLDのロジックにNDP制御を付け加えますが、80286から見ると80287は単なるI/Oデバイスなので I/Oアドレス00F*をデコードしてチップセレクトを作るだけです。念のためアドレスA3も加えて **F8~**FFでアクテ…

CPU換装

ハード的な修正はだいたい完了したので、CPUを元々の予定のセラミックPGAのものに取り替えました。 ロゴや型番のマーキングも目立ちませんがれっきとしたインテルA80286-8です。 今まで載せていたのがAMDの80C286でCMOSプロセスでしたが、今回NMOSプロセスの…

SRAMチェック(再)

SRAMチェックプログラムのチェック範囲を拡張し、10000-FFFFFをなめるようにしたものをSRAMにロードして実行した結果です 先ずROMKILL信号を1にすると今まで見えなかったSRAMの後半80000-FFFFFもリードライトできるようになっているのが…

メモリマップ変更

配線の補修で動作もOK。ほっとしました。 ついでにCPLDへの引き込む信号も整理したのでロジックに少し手を入れます。 現状ではROMとRAMのエリアは固定でそれぞれ半分しか生かしていませんでしたが ここでROM制御信号を1つ設けて全域RAMに切替えるようにして…

配線補修

表裏の導通が無いランドは接続先とつながる部分までUEWを飛ばして補修しました なんだかんだとだんだんジャンパが増えてきます 全てリードの足が基板の穴を通るスルーホール部品であればジャンパによる補修は半田面だけで 済むわけですが、表面実装部品を多…

ソケット取り付け

ピンヘッダを取り外した跡に変換ソケットを直付けになるわけですがこれがまた大変でした。 2.54mmピッチの正方格子のピンを孔に挿すというのは双方既製品なら何でもないことですがお互い手作業の精度の悪い工作なのでなかなかピンと孔がヒットしません…

絶縁シート

変換ソケットを今度は基板に直付けしますが、互いにパタンが走ってるので絶縁しておきます ちょうどピンが通る孔が開いているユニバーサル基板が良いので切れっ端を挟んでみました。 ただ銅のランドが不要なのでエッチング液で溶かしてしまおうかと思いまし…