CPU実験室

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

TMS9995

しくじり先生 2

これはやっちまったパタンですね 単に目視のためのインジケータであれば、下位バイトに表示したいデータをセットして出力すれば一瞬上位バイトが表示された後、下位バイトが表示され安定するので用は足ります。 しかしこのパルス出力を外部の制御に使おうと…

CでLチカ

TMS9995をCでプログラムできる環境ができたので まずはいつものLEDチカチカです。 $F100番地にメモリマップされたラッチにインクリメントデータを書き込んでいます アセンブラでのテスト結果と同様に16ビットカウンタの上位5ビットが出力され、見てわかる速…

スタートアップルーチン

TI99-4Aエミュレータのサイトをうろうろしていたらプログラム開発用のライブラリを集めたページにアセンブラで書かれたスタートアップルーチンを見つけました。 スタックポインタの初期化やPUSH/CALL/RETURN処理の実体、飛び先の登録が行われているのでまさ…

Cコンパイラ

TI99/4AのエミュレータをインストールしたフォルダにTMS99XX用のCコンパイラもセットアップされているのに気づきました。 なんですが簡単なコマンドラインの説明があるだけで言語仕様については何の説明もありません。 とりあえず簡単なCソースを書いてコン…

原始モニタ

シリアルの入出力が大丈夫そうなのでモニタの作成に取り掛かりました。 ただメモリのダンプ、編集を行うような完全なモニタを作成するのは見慣れないニーモニックのアセンブラで組むのは骨が折れます。 先ずは ・プログラムのバイナリコードをメモリにロード…

ファイル変換

同じ文字が256個続くのは16bitカウンタの値を外部8ビットバスへ出力するとき上位8ビット側を出力している、ということです。 修正するならば右8ビットシフトして出力すれば良く、結果は明らかなのでOKとしておきます。というわけでTMS9995はバスの扱いがイン…

シリアルテスト

シリアルコントローラTMS9902とDsubコネクタを基板に実装し通信テストを始めました。 CRUインターフェースなのでこのように18ピンDIPという小さいパッケージで済んでいます。同じシリアルコントローラでも28ピンの8251や40ピンのuPD7210に比べる…

シリアル接続

例によってモニタを乗せられるようにシリアルI/Fが使えるようにしておきます シリアルコントローラTMS9902(AAC=Asynchronous Communication Controller)はCRUI/Fで接続されます。CRU空間のデコードを改めて見直したのですがメモリ空間と切り離すために/MEM…

CRUインターフェース

TMS9995へ周辺I/Oを接続する場合、前項の74VHC574を使ったパラレル出力のようにメモリ空間にマッピングするのが簡単です。 メモリ空間を一部潰してしまいますが80系インターフェースを持つ周辺I/O、8255や8251も容易に接続できると思います。 ですがTMS9995…

Lチカ速度

チカチカ実行中のパラレルポート74VHC574のクロック端子を見ると大体130kHzでラッチされています TMS9995の各インストラクションの実行サイクルはマニュアルに記載がありますが、オペコード、オペランドがONchipかOFFchipか、バイトアクセスかワードアクセス…

LEDチカチカ

$F100に配置したパラレルポートがアクセスできるようになったのでここにインクリメントデータを出力してLEDのチカチカをやってみます。 まだSRAMを実装していないのでカウンタにつかう変数はレジスタに置くことになりますが実はTMS9995には汎用レジスタが内…

デコーダ修正

ボード上のI/Oに合わせてアドレスデコーダの内容を最終形に修正しました。 メモリマップはこのような感じ ROMの配置は最初と同じですが、外付けRAMは内蔵RAMと外部拡張I/Oを避けて8000-EFFFに配置。I/Oのチップセレクトも生成します。これをゲート表記で回路…

最小プログラム

CPUとROMだけの環境ですがまずは最小のプログラムを動かしてバスの挙動を見てみます。いつものことですが JMP $ からですね コードにするにはハンドアセンブルでも容易だし、TLCS90で使ったアセンブラASでも対応しているようですがWindows上で動作するア…

デコーダ作成

ROMとRAMへのチップセレクト信号を出すためのアドレスデコーダを作成します 実際には他にI/Oがいろいろありますが取り急ぎメモリ周りのみ。 もっとも簡単にROMは0000H~7FFFHまで。SRAMは8000H~FFFFHまでとそれぞれ32kBづつ割り振ればアドレスの最上位ビッ…

CPU挿入

CPUを動かすのに最小の環境としてリセット回路とクロック用の水晶をはんだ付けし CPUのみソケットに挿入。電源を入れてみました。 無事水晶は発振し、3ピンのCLKOUTには原振12MHzを4分周した3MHzが出ています。 バスは完全に浮いているのでむちゃくちゃな…

部品実装(2)

まずCPU,RAM、ROM、GALのICソケットのみ実装しました この最小ハードでCPUの動作確認からしていきます

部品実装(1)

ポチポチと部品実装を始めています。 どうせ工具を広げんるんでついでにTMS320C25ボードの2枚目も同時に作業しています パスコンとかプルアップ抵抗、LEDなんかは同じ値なので並べて一気に付けてしまったほうが在庫部品を探し出すのも手間が省けるわけです …

しくじり先生 1

せっかく出来上がったTMS9995ボード。 そろそろ部品実装を始めようかと基板の細部を点検していました。 ガーバーデータ裏面表示 実物裏面 よしよし、設計通り良く出来てるじゃん 画面左上隅のチップトランジスタQ1ですがこれはリセットスイッチをパラでオー…

基板仕上がり

前回はひしゃげた箱でしたが今回は緩衝材付きの封筒に入ってきました 枚数は5枚発注できっちり5枚。真空パックされています 基板の仕上がり状態です。 こういう平たいものはスキャナで撮るのが最適です。というかプリンタについていたスキャナ機能を 買って…

基板到着

fusionPCBの基板到着しました 今回は約20日です。部品をそろえるのもこれからだしまあボチボチやっていきます シンガポール郵便局までの動きは結局わかりませんが、郵便局内での動きを見てみると いったんカントリーコード「ID」にディスパッチされ慌てて…

輸送追跡

fusionPCBへの発注が10/7夜、 翌日10/8にはprocessingとなり、11日に「送ったよ」のメールが来ました。 ステータスもtraceableになって、これは早い!と思っていたんですがそこからが全く音沙汰無し。番号追跡も引っかかりません。 ステータスもい…

基板発注

ガーバーで出力してみたところです スルーホールも大量にあるしさすがにこれは手作り。というわけにはいかないので外注します いままではフリーのEagleの制約で80×100mmくらいの基板しか発注していませんでしたが今回はじめて倍の大きさ100×150mmでの作成…

オートルータ

久々更新です 部品をボード上にやっと再配置してオートルータをかけました。 KICADから独立したこのFreeRouteは非常によくできています。 Eagleのルータは数時間格闘した挙句未配線ネットが残ってしまうことがありますが FreeRouteではざっくりとした接続は…

やっちまいました

ボード図面上への部品配置もほとんど出来上がっているのですが 念のため回路図図面の見直しを行っています 気になっているのがCPUとVDPが1つの水晶を共有していること。 データシートにそのような配線例が記載されているのですが実装状態ではIC間がかなり離…

3D表示

回路図の入力、ボード上への部品配置がほぼ終わったところです ボードエディタ上で3D表示を選択するとたちどころに3Dの実装イメージを見ることができます 部品どうしの干渉が無いか確認できるだけでななく、最初から完成時のイメージがあるとモチベーション…

部品作成

以前ダウンロードした初期のKICADは部品ライブラリが貧弱で、対して膨大なライブラリが付属していたEagleに比べて見劣りがしましたが、今回落としたKICADVer4.0.3ではライブラリをGithubから参照できるしネット上にもあちこちにデータがあるのでそれをローカ…

部品配置

スケマチック図面上でアノテーションをかけてコンポーネントに部品番号付与、 CvPCBツールでコンポーネントとフットプリントの関係性付けしてNETファイル出力 そのNETファイルをPCBnewツールに読み込んでボードレイアウトに展開・・・ とやっていくとボード…

エラーチェック

周辺ロジックや電源周りも大体入力完了。回路図上でERCをかけてみました。 最初は100以上のエラー箇所の指摘が出ましたがほとんどがページ間に渡る信号名を グローバルラベルで名前を付けていたのに、信号源を定義し忘れ未解決エラーとなったもの。回路が…

VDPまわり

TMS9918をつかったディスプレイ制御周りの回路を入力。 ここは完全にメーカ推奨回路そのものでいまどき16KbitのDRAM8個でVRAMを構成しています 初期のDRAM4116はなんと+5/+12/-5Vの3電源が必要です メモリセルの駆動が12V、外部とのI/Fが+5Vがメインで-5Vは…

CPUまわり

CPU周りの入力完了 TMS9995とフラッシュROM29F010(128kBのうち32kBのみ使用)、256kbitSRAMを接続しました。このCPUはバスのビット並びが一般とは逆でD0,A0がMSB、D7,A15がLSBになっています。SRAMへの接続はどうでもいいのですが、ROMへの結線は注意が必…