現在地

マイコン

マイコン

マイクロプロセッサ・マイクロコントローラ等です。

パーソナルなコンピュータの数値演算事情 (第5回:32ビット・そして…)

カテゴリー:

32ビットの時代になると32ビットの四則演算が一命令で実行できるのは当然になり、浮動小数点演算についても一般的になってきます。

Intel 80386ではレジスタが32ビットに拡張され、80486では浮動小数点演算機能も内蔵されます。廉価版として浮動小数点演算を省いた486SXというものありましたが主流にはなっていません。

MotorolaはMC68020で外部バスも32ビットになりましたが、このシリーズは最初から32ビット演算命令は持っていました。それよりもMC68020から外部の浮動小数点演算プロセッサであるMC68881に対応したことの方が大きいでしょう。

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

カテゴリー:

8086, MC68000, Z8000といった16ビットプロセッサになると加減乗除の命令を持っているのが一般的になります。もちろん1命令で16ビット幅の演算が可能で、MC68000などは32ビットまで可能でした。

まだ浮動小数点演算命令は持っていないのが一般的でしたが、NEC V60やPanafacom MN1613のように浮動小数点の加減乗除の命令を持っているものもありました。

また内蔵していないまでも外部に浮動小数点演算プロセッサを接続できるようになっているものもありました。前回取り上げた MM57109, Am9511, Am9512 はI/Oデバイスとして接続するものでしたが、プロセッサの命令を拡張する(浮動小数点演算命令が追加される)タイプが登場します。

Intelの8087は 8086, 8088 に追加することで浮動小数点演算命令が使えるようになります。

パーソナルなコンピュータの数値演算事情 (第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あたり、単項演算では符号反転・ビット反転・シフト・ローテートくらいを持っているのが一般的でした。中には符号反転+加算で代用できるからと減算命令を持たないものがあったり、各社の考え方や想定している用途等で微妙に異なってはいます。

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

P8052AH-BASICを動かす(動作編)

テーマ:

カテゴリー:

ハード編に引き続き今回は動作編です。

P8052AH-BASICはリセットしてもシリアルに何も出力してこないのでちょっと不安になりますが、スペースを送ってあげるとオープニングのメッセージが返ってきます。このスペースでターミナル側のボーレートを検出して自動的に合わせるようになっています。

クロック周波数をテキトーに決められるのはありがたいです。

間違ってスペース以外を送るとボーレート検出に失敗して正常に表示されないことがあります。その場合はリセットし直すしか無いと思います。

画面
無事に立ち上がったところで簡単なプログラムを動かしてみました。

P8052AH-BASICを動かす(ハード編)

テーマ:

カテゴリー:

P8052AH-BASICでボード製作中と書いてから一月近く経ってしまいましたが、やっと出来上がりました。

P8052AH-BASIC搭載ボード
動作確認ができる最小限の構成といったところです。

データ用メモリ空間の0000H~7FFFHに32kBのRAMを配置しています。プログラム用メモリ空間には何も接続していない(内蔵ROMのみ)のでBASICを使用する分には問題ありませんがネイティブコードを書いて実行することはできません。簡単な改造で対応可能なのでそのうち追加するかもしれません。

続・SBC6303がM5L2764Kで動かなかった件

テーマ:

カテゴリー:

以前、SBC6303 が M5L2764K の個体差によって動いたり動かなかったりと書きました。

念のために n を増やしてみると、起動メッセージの途中で止まってしまう M5L2764K も見つかりました。リセットを繰り返すと止まる場所も一定していません。

動いたと思ったものも心配になってきます。試しにメモリダンプを実行してみると、案の定ダンプ中にハングアップしてしまいました。

ところで私の持っている 2764 は三菱の M5L2764K ばかりです。ふと他社のものでも同じだろうかと思って Intel の D2764 を調達して試してみました。するとどれも正常に動作するではないですか。64kB のメモリ空間全部をダンプさせてみても最後までいきます。

Intel のものと三菱のもので何かが違うようです。

Intel P8052AH-BASIC

テーマ:

カテゴリー:

BASIC内蔵マイコンで取り上げたものをもう一つ入手できました。

P8052AH-BASIC
IntelのP8052AH-BASIC、全体が梨地で表示部分だけツルツルなのは他社ではあまり見かけませんね。

8051のROM,RAM容量を増やした8052(これらからROMを取り除いたのが8031,8032です)のROMにBASICインタープリタを格納したものです。

Intel 8031, 8032

テーマ:

カテゴリー:

前にマニュアルを取り上げましたが、MCS-51の現物もいくつか入手できました。

D80C31BH
これはIntelのD80C31BH、ROM無しのCMOS版でセラミックのパッケージに入ったものです。

MCS-51は8741Aのところで書いたMCS-48の後継チップに当たります。シングルチップに基本機能を詰め込むというコンセプトはそのままに、命令体系等は大幅に拡張されました。

ROMのタイプや容量の違いによるラインナップはMCS-48とよく似ています。

MC6803を動かす

テーマ:

カテゴリー:

手配していたロジックICが到着したのでSBC6303ルーズキットMC6803を載せて試してみることにします。

SBC6303ルーズキット
そのままではMC6803を動かすのに支障があるので一部変更しています。

まずNMOSのMC6803と組み合わせるのに74HCシリーズはマズいので74HCTシリーズに換えます。キット資料によればLS/ALS/ASとありますが、VIHの問題なら74HCTでもいけるはずです。

ページ