思い出・昔話

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

2018-08-24 23:25 — asano

テーマ

カテゴリー

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

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

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

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

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

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

2018-08-23 14:22 — asano

テーマ

カテゴリー

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

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

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

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

マイナーなZ80周辺LSI

2018-06-17 22:25 — asano

テーマ

カテゴリー

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

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

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

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

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

BASIC内蔵マイコン

2018-06-07 23:08 — asano

テーマ

カテゴリー

先日の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を読んでみた

2018-03-16 23:42 — asano
カテゴリー

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

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

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

見つけたものを片端から読んでみましたが、残念ながらすべてブランクでした。

NMOS Z80 CPU のクロック

2018-03-02 23:08 — asano
カテゴリー

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

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

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

2018-02-15 23:54 — asano

テーマ

カテゴリー

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

多相クロック

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

Intel 8080など

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

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

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

2018-02-14 21:55 — asano

テーマ

カテゴリー

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

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

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

電圧レベル

Intel 8080

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

ノギスとバーニヤ目盛り

2018-01-17 12:01 — asano
カテゴリー

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

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

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

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

頻繁に使うメカ屋さんはディジタルのを使っている人がほとんどで、サイズもひと回り大きな150mmが多かったですね。ダイヤル式もあったかな。一つだけ1000mmという巨大なものもありましたが、これは目盛り式でした。

水銀体温計

2018-01-12 20:35 — asano
カテゴリー

二晩寝たらとりあえず復活。昨日「体温計」と書きましたが、あれこそ電子化で遺物になったものですね。

体温計
うちでまだ現役の体温計、どう見ても水銀体温計です。

写真では見にくいかもしれませんが35°Cの左(34.9°C付近)まで銀色が来ているのがわかると思います。角度によって見えたり見えなかったりするのでなれないと使いにくいかもしれません。

それから測定には時間がかかるのが欠点ですね。測定する対象物(人体)と温度平衡になるのを待たないといけないからです。これは電子体温計でもそうなのですが、最近の多くの電子体温計は温度の変化率から計算で予測しているので短時間で計れるように見えているだけです。