現在地

思い出・昔話

パーソナルなコンピュータの数値演算事情 (第3回:8ビット後期)

カテゴリー:

8ビットマイコンでも集積度が上がってくると乗算や除算命令を持つものが出てきます。

日立のHD64180はZ80の拡張ですが、8ビット×8ビットの乗算命令が追加されています。

MotorolaのMC6809にも8ビット×8ビットの乗算命令が含まれています。

Zilog Z8の上位のSuper8シリーズは乗算に加えて16ビット÷8ビットの除算命令も持っています。

プロセッサに内蔵せずともCDP1855のような外付けの乗除算ユニット等もありました。これはRCA CDP1802ファミリの乗除算ユニットで、単独で8ビット×8ビットの乗算・16ビット÷8ビットの除算が可能です。最大4段まで接続でき32ビット×32ビットの乗算・64ビット÷32ビットの除算まで拡張することもできました。

浮動小数点演算については8ビットプロセッサで内蔵したものは見たことがありません。当然ソフトウェアで処理することになりますが、(少なくとも当時は)複雑な処理だったのでライブラリとして提供されたり、書籍や雑誌記事にもよく書かれていました。

パーソナルなコンピュータの数値演算事情 (第2回:8ビット前期)

カテゴリー:

今回からパーソナルということでマイコンの事情について見ていきましょう。

8080, MC6800, 6502といった初期の8ビットマイコンの直接扱える数値はもちろん8ビットの整数です。16ビットのレジスタを持ったものもありますが主にアドレス指定のためのもので使える演算が限られていたり自由度の低いものでした。

この頃になると数値のビット表現は2進で負数は2の補数に収束しています。ただ10進演算の需要自体は残っているため、8ビットを2つに分けて10進2桁として使用するための補正命令を持っているものもありました。通常の加算命令と組み合わせることで10進の加算ができるというものです。

演算は2項演算としては加算・減算・比較・AND・OR・XORあたり、単項演算では符号反転・ビット反転・シフト・ローテートくらいを持っているのが一般的でした。中には符号反転+加算で代用できるからと減算命令を持たないものがあったり、各社の考え方や想定している用途等で微妙に異なってはいます。

乗算や除算命令は無いのが普通で、必要とあらばソフトウェアで処理をします。

パーソナルなコンピュータの数値演算事情 (第1回:パーソナル以前)

カテゴリー:

今は汎用の(組み込みではない)コンピュータでは最低でも32ビットの整数が扱え浮動小数点演算もハードウェアでサポートされるのが当たり前になっています。

今回はこのあたりの事情について何回かに分けて書いていきたいと思っています。

第1回は個人で使えるようになる以前の話です。

まずは黎明期の有名なコンピュータをいくつか挙げてみましょう。

マイナーなZ80周辺LSI

カテゴリー:

昔のプロセッサ誌を調べていたらZ80の面白い周辺LSIの紹介記事「Z80 GLU と Z80 SPCT」を見つけましたので、今回はこれについて書きたいと思います。現物を持っていないので写真は無しです。

まずはZ84C80, Z84C81 Z80 GLU(General Logic Unit)です。

これはよく使われる以下の機能をまとめたものです。

  • クロック発振器
  • DRAMコントローラ(アドレスのマルチプレクサも含む)
  • ROM用のアドレスデコーダ
  • メモリあるいはI/O用のアドレスデコーダ
  • リセット回路・ウォッチドッグタイマ
  • WAIT挿入回路
  • Z8500系デバイスとのインターフェイス(Z84C80のみ)
  • パワーダウンモードへの移行(Z84C80のみ)
  • GPIO

一部のピンは共有になっているので同時に全てが使えるわけではありません。

BASIC内蔵マイコン

カテゴリー:

先日のINS8073はBASICインタプリタを内蔵していましたが、似たようなものは他にもいくつかありました。

  1. NS INS8073
    CPUはSC/MP IIIでROMは2.5kBです。内蔵RAMだけでは不足なので最低256バイト以上のRAMを外付けする必要があります。

    このBASICはNIBL(National Industrial BASIC Language)と呼ばれており、そのサイズからもわかる通りいわゆるTiny BASICです。扱える数値は16ビットの整数のみです。

  2. NS INS8075
    CPUは上と同じくSC/MP IIIでROM容量は4kBに増えています。

    資料が少なく4kBの容量とN2BASICの名称以外の詳細は不明です。

手持ちのROMを読んでみた

カテゴリー:

せっかくROMライタもあることですし、昔使っていたROMを読んでみることにしました。何か懐かしいものが書かれているかもしれません。

UVEPROM
実際に使った記憶のある 2764, 27128 を集めました。あとTMM323C(2716)もライタを作ったことがあるので何か書かれているかもしれません。

まずは 2764(ほとんどが三菱のM5L2764K)です。これはZ80ボード3号機に使ったもの、MC68kボードも初期はこれを使っていたかもしれません。

NMOS Z80 CPU のクロック

カテゴリー:

先日クロック信号について書いた時、資料に面白い記述を見つけたので今回はそれについて書いてみます。

それは1978年3月版のZ80 CPUの仕様のAC特性にあった以下の記述です。『Z80ファミリ・ハンドブック』もこれを元にしていると思われます。

昔のクロック信号(タイミング編)

カテゴリー:

前回はクロックに特殊な電圧レベルを要求するものを取り上げましたが、今回は特殊なタイミングを要求するものたちです。

多相クロック

複数のクロック入力を持っており、それぞれのクロックの間の関係が規定されています。

Intel 8080など

多相クロックの最も一般的なパターンで、2つのクロックφ1, φ2を交互に"H"にします。φ1, φ2が同時に"H"になってはいけません。

この仲間には以下のようなプロセッサも含まれます。

昔のクロック信号(電圧レベル編)

カテゴリー:

先日のZ8581NS32C201, 8080用の8224など、昔のプロセッサには専用のクロックICが用意されていることがよくありました。

普通のロジックICで扱えないほど周波数が高いわけでも無いのに何故専用ICが用意されていたのでしょう?

それは電圧レベル的にもタイミング的にも特殊な信号が要求されることが多かったからです。通常ロジックレベルの矩形波を供給すればよい、組み込み用なら発振回路も内蔵されていて水晶を繋げるだけで良いこともある、現在とは状況が違っていました。

電圧レベル

Intel 8080

まずはかなり厄介な部類のIntel 8080のDC特性をデータシートから拾ってみます。

ノギスとバーニヤ目盛り

カテゴリー:

ノギスも今ではディジタルで直読できるもの普及していますが、私は昔ながらのものを愛用しています。

ノギス
ミツトヨ製で小型の100mmのものです。電子部品を測るのがメインなので大きなものは必要ないと考えたからです。

買ったのは20年くらい前でしょうか、勤め人時代は職場に置いていることが多かったですね。

私は公式にはソフト屋ということになっていましたが、机にはこのノギスの他にもオシロスコープやハンダゴテがあったり、分解したメカの一部や基板が転がっていたので、よく「お前は何屋なんだ?」と聞かれたものです。
でもメカ制御系のソフトにはあると便利だったんですよね。

ページ