CPU実験室

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

TLCS90

7219コントロール

CでLEDディスプレイコントローラMAX7219のドライバ部分を記述してみました。 3線シリアルのDIN、CLK、LOADにつながった各ピンをパタパタON/OFFするだけなのでCで書くまでもないのですが。しかも少しでも速くなるかと思ってインラインアセンブラにしてみまし…

CでLチカ

TLCS-90ボードで動作するプログラムをCで書いてみました。 ポートP8のビット3にLEDをつないであるのでこれをチカチカさせますがI/Oポートはメモリマップドのため、該当アドレスへのビット操作になります。 コンパイル、アセンブルが通った後のリスティングフ…

ツール更新

Am29kでちょっとつまづいていて、冷却期間も置くため普段使っているツール類のバージョンアップしておきました。 The Macroassembler ASは頻繁に更新を繰り返しているようで、最新版を取りに行ったらバージョン自体は1.42で変わりませんがビルドが96から一気…

2CH接続

もう片側のチャンネルのドライバも作成し2個同時にモータを回しています 現状でA相のクロックは実測で300Hz。モータへのステップレートは4倍の1200Hzですが無負荷では脱調ギリギリ。回転数は毎秒6回転で振動もなくきれいに回っています 8桁のLEDは結構明る…

励磁シーケンス

TLCS90のステッピングモータコントローラはシフトレジスタのステージ間接続の切り替えと 初期データによって各種励磁シーケンスを作り出せます。 4相クロックの出力をロジアナで見てみました (1) 1相励磁 常に励磁されているのは1相だけなので消費電力…

モータテスト

ステッピングモータのテストを始めました TLCS90内蔵のステッピングモータコントローラの実体は、内部タイマで生成されるクロックで駆動される単なるシフトレジスタになっています。 最初に初期値としてこのレジスタにA相だけをONにした励磁パタンをロードし…

モータドライバ

残っていたステッピングモータドライバまわりの部品を挿入して基板としては完成です ドライバの周りに電流検出用の酸化金属皮膜抵抗が見えます ドライバはサンケンのSLA7026が2チャンネルついています。TLCS90にはステッピングモータのコントローラが内蔵さ…

7セグLEDテスト

モニタも稼働してSRAM増設してメモリも潤沢に使えるようになるとハードデバッグが一気に加速します MAX7219の制御ルーチンを作って7セグの点灯テストをしています。 電源ONのデフォルト状態ではシャットダウンモードになっていることに気付かず、ちっとも点…

SRAM追加

シリアルの入出力に問題がないので内蔵レジスタの初期化、スタックポインタを修正してアセンブル。 ROMに焼き付けたところ無事にモニタが起動しました。 内容はほとんど確認せず丸々移植ですが、各コマンド正常に動作しているようです。 CPU内蔵のSR…

シリアル入出力

コードの書き換えでエラーは完全になくなりましたが、これからが移植の本番です 先ずはシリアル通信ができないとデバッグが全く進みません これも今になって気付いたのですが内蔵シリアルコントローラにはステータスレジスタが無く割込み駆動で使うようです…

アセンブルエラー

1文字入出力の変更やメモリマップの違いは置いておいて、まずはそのままのコードで ターゲットをTLCS-90指定でアセンブルできるかを確かめておきます D:\USR\ASM\tlcs>asw -L monitor.asm macro assembler 1.42 Beta [Bld 97] (i386-unknown-win32) (C) 1992…

部品追加

CPUがちゃんと動くようなので、タクトスイッチ入力、RS232入出力、ICL7219を使った7セグ×8桁等の周辺部品を差し込み始めました 先ずはシリアル、SRAMの動作を確認し、その構成に乗るモニタを作って、テストプロをDLLしながら他の周辺もハ…

ASアセンブラ

ウオッチドッグタイマを止めるためにWDT制御レジスタにフラグ、コマンドを書き込み、そのあとでループさせるようにすればOKです。 このテスト程度であればハンドアセンブルでも大したことないですが、今後アセンブラはどうしても必要です。 TLCS-90に…

テストコード実行

先ずは例によって最小限ループテスト: START:JP START を実行させてみます。アセンブラが無いのでとりあえずマニュアルのコード表を首っ引きでハンドアセンブル。ROMの0番地から配置すると 1A 00 00 の3バイトになります。 これをROMに焼いて電…

コンパイル結果

TLCS-90はZ80の上位互換のインストラクションセットを持っています。 同じソースコードを -mz80オプションでZ80コードを吐くように指示するとほぼ同じアセンブラコードが得られますが、よくよく見るとTLCS-90では出来たSPへのイ…

開発用ツール

TLCS-90用の開発ツールとしてはSDCCでCコンパイラが使えそう、などと呑気に考えていていよいよハードが動かせる状態になったので簡単なコンパイルテストをしてみました 適当なソースを書いて いざコンパイル・・・・ ん? TLCS-90用のア…

動作テスト開始

ROMはとっかえひっかえができるようにCPUにZIFソケットを付けておきます。 中身は確認していませんが適当な2764をセットして、まずはバスの動きを見ることにします 横から見るとCPUソケット、CPU本体、中継のROMソケット、ZIFソケット、ROMという5階建…

CPU実装

CPUへの電源、クロック、リセットといった最低限の結線のみやってチップを差し込んでみました。 2列のソケット幅の精度が若干不安でしたがすんなりと収まりました 水晶は10MHzを付けています 先ずは背中に乗せたROMをアクセスしようとするかといっ…

ソケット取付

1.778mmピッチ750mil幅なんて都合のよいソケットはないので600mil幅のものを半分に割って差し込んでいます 裏面でソケットな足を折り曲げ元々のランドへはんだ付け。 丸ピンソケットでは足が硬いので、こんなピッチの乱れた穴にはそもそ…

大ポカ発覚

CPUは1.778mmシュリンクピッチの64ピンのパッケージですが、ピン幅は物差しでざっと測ったところ20mmくらいだったのでいままでずっと800mil幅と思い込んでパタン設計していました。 基板の穴あけもできたので、もちろんちゃんと合って…

基板穴あけ

こちらも一気に片付けました 見た目はあまり変わりませんがいちおう全て穴あけ済です。 ところどころドリルの狙いがずれてセンタから外れているのもありますが、問題なさそうです

基板エッチング

パタン設計したあとずっと放置していたのをやっとエッチングしました 感光基板の製造日が2014/11ですっかり賞味期限を過ぎていたので、長めの240秒露光です。安いOHPシートのマスクでパタン部分のカブリが若干不安でしたが難なく完成。 仕上がりパタンをチェ…

基板レイアウト(3)

ステッピングモータのドライバ部分も入力完了 単なるトランジスタアレイでなく、たまたま手持ちしていた定電流ドライバのため外付け部品が多くかなりキツキツの配置です。 あとは部品の干渉が無いかの再確認と引き回しの細かい調整

基板レイアウト(2)

SRAMを追加したりしているうちどうにもこうにも部品が載りきらなくなったので 基板サイズを100×150mmに変更。いつもの大きさです。 パタン入力もあと残りはステッピングモータドライバ周辺くらいまできました

基板レイアウト

このCPUも評価基板を作ってみようと思います ROMは親子ガメ式に乗るとして、外部にRAMを拡張するかどうかが悩みどころです 多数のI/Oをとるかプログラム書換えの自由度をとるかですが、LEDをチカチカさせる程度しか確認しないパラレルポートがそんなにあって…

また初モノ

またまた新たにワンチップコントローラを手に入れました 東芝TLCS90シリーズのTMP90G840です コアのアーキテクチャはZ80を拡張したものでインストラクションセットもほぼ同じ。 ただしバイナリ互換ではありません。アセンブラやコンパイラが見つかるかどうか…