SNJ54ALS38AJ

テーマ:

カテゴリー:

P8185を買ったときついでにこんなのも一緒に買っていました。


TIのSNJ54ALS38AJ、オープンコレクタのNANDゲートです。

パッケージはセラミックのCERDIPですが、上面が賑やかですね。

1行目、GFAFは不明ですが9051Yはおそらくデートコードで1990年51週、台湾製です。

2行目のSNJ54ALS38AJが型番ですが、データシートを見ると少し不思議な点があります。データシートのタイトルにはSN54ALS38B(改良版のデータシートしか見つかりませんでした)とありますが、PACKAGING INFORMATIONの欄ではSNJ54ALS38BJと「J」が増えています。末尾のJはCERDIPを表すのでいいのですが、SNJのJは何でしょう?

Z280固有の初期化(その1)

Z280は特別な初期化をしなくても高速なZ80として動作するので何もしていませんでしたが、Z180の初期化を加えたのでZ280でもやってみました。ゆくゆくはトラップの対応などもやってみたいと考えています。

以下はCPU判別でZ280であると判定されたところです。

HP NC365T

テーマ:

このところマイコン関係ばかりだったのでたまにはPC関係のものを。


何年か前にこんな感じのボードもらった記憶があるのですが、どこかのジャンク屋で見かけたものだったかも、記憶があいまいです。

HP製のPCI Expressネットワークボード、GbE×4というあまり家庭には縁のなさそうなボードですね。

Zilog Z8S180

テーマ:

カテゴリー:

Z180の判別と初期化でHD64180RとHD64180Z(Z180)の判別ができましたが、そうなるとZ8S180の判別もしたくなります。これは持っていないので新たに調達しました。


Zilog Z8S18010VSG、10MHz版になります。Z8S180には33MHz版などという高速なものもありますが目的が目的なのでこれで十分です。

デートコードは2007、なんと2020年製ですね。このZ8S180は現行品なので買ったのもいつものeBayやAliExpressではなくて真っ当なルートです。

まずはそのまま載せ替えてみます。

87C64と8185

テーマ:

カテゴリー:

またちょっと面白いメモリ入手してみました。


IntelのD87C64というUVEPROMです。27C64と似たような型番ですね。

27C64は汎用のUVEPROMですが、87C64の方はマイクロプロセッサファミリの一員です。それで何が違うかというと87C64は8085, 8088, 8051といったマルチプレックスバスのプロセッサに接続しやすいようにアドレスラッチを内蔵していて、ALE/CEの立下りでA0A7がラッチされます。

PLCC引き抜き工具

テーマ:

カテゴリー:

Z80180-Z80 ADAPTER for SBCZ80で久しぶりにPLCCを使ったのでPLCC引き抜き工具を探したら3本もありました。探せばもう何本か出てくるかもしれません。


これ3本とも同じに見えますね。

樹脂部分はまったく区別がつきません。この写真撮るときに表裏を揃えずに撮ってしまったのですが、向きを揃えるとパテント番号の刻印から型から抜く時のピンの位置までそっくりです。

ですが使い勝手はまったく異なっていました。

中央のものはまったく問題なく使えます。

左のはソケットによっては先端が片方しかソケットの溝に入らなかったりします。片方ずつ持ち上げたりすれば抜けないことはないのですが...

MC68000でブレーク

カテゴリー:

長らくお待たせしました、MC68000でのブレーク処理です。

MC68000でブレークに使いやすい命令は何かを考えてみます。命令を置き換えて埋め込むので1ワード長のもの、ユーザモードで実行中でもスーパバイザモードに戻ってくるためには例外を発生させるものが良さそうです。もちろん無条件で実行される必要があります。

これらの条件を満たすものとして以下が考えられます。

  1. TRAP命令
  2. 特権命令
  3. 未実装命令(Line-1010, Line-1111)
  4. 不当命令

TRAP命令はAPI的に使われることが多いのでできれば残しておきたいところです。

スーパバイザモードでブレークしたくなることも考えると特権命令も避けたいですね。

未実装命令もMC68020+MC68881などでは使われます。X68000がIOCSコールに未実装命令を使用していたのですが、X68030開発時にコプロセッサ命令との衝突がありIOCSコールの番号を変更せざるを得なかったという事例があります。

Z180の不正命令TRAPを捕まえよう

Z8S180の前にやってみたいことがあります。

Z180には未定義な命令を実行しようとした時に発生するTRAP割り込みというものがあります。これを捕まえてRST 38Hによるブレークのようにアドレスやレジスタが表示できれば便利でしょう。

ということで調べ始めたのですが、思った以上にハードルが高く簡単ではありませんでした。

まず未定義な命令を実行しようとした時に何が起こるかです。

  1. ITC(Interrupt TRAP Control)レジスタのTRAPビットが1になる
  2. PCの値がスタックに積まれる
  3. 論理アドレス0000Hにジャンプする

えっ、0000Hってリセットと同じではないですか。MMUで論理アドレス0000Hに異なる物理アドレスを設定していれば問題ありませんが、ROM, RAMともに16kBしかないSBCZ80でこのためだけにMMUを有効にするのはかなり面倒です。

Z180の判別と初期化

カテゴリー:

今回はZ80180-Z80 ADAPTER for SBCZ80のソフトウェア編です。

SBCZ80にZ80180-Z80 ADAPTER for SBCZ80を載せてもそのままでは正常に動作しません。

Z180ではZ80から追加された機能をコントロールするための内蔵レジスタがI/O空間の00H~3FHに配置されていますが、SBCZ80ではZ80 SIOがI/O空間の00H~03Hに配置されており、アドレスが重なってしまっているからです。SBCZ80を改造してZ80 SIOのアドレスを変更する手もありますが、Z180の内蔵レジスタはI/O Control Register(ICR, 3FH)で移動可能なのでこちらを移動することにします。

以上の変更で一応動作するようにはなりますが、さらにいくつかのレジスタを設定することでパフォーマンスが上がりますので設定しておきます。

ページ