[UniMon] アセンブリ言語で書いている理由

テーマ:

現時点でも6800, 6809, 8080, AVR, Z8, Z80と多くのプロセッサで動いているUniversal Monitorですが、まだまだ対応プロセッサは増やすつもりでいます。

すでに完成したボードがあって動かせるMC68000、SBC8088ボード購入済みであとは組み立てるだけの8086/8088、6502/65C816あたりが次の候補ですね。

これだけの多プロセッサ展開を前提としているのになぜC言語を使わないのか不思議に思われるかもしれません。

そこで今回は何故オールアセンブリ言語なのか書いてみようと思います。

G65SC816

テーマ:

カテゴリー:

6502を拡張したのがこのG65SC816です。

G65SC816P-4
プラスチックDIPの4MHz版、1987年製のようです。

データシートに65SC802と65SC816の2種併記されていますが、65SC802は6502とピンコンパチでメモリ空間は64kB、65SC816の方はマルチプレクスバスになってメモリ空間が16MBに拡張されています。

MB8861 と MB8870

予告どおり富士通のMB8861, MB8870です。

MB8861H
MB8861はMotorola MC6800の相当品ですが、いくつか独自の命令が追加されています。これは1979年製のようですね。

パッケージは中央に大きな円と下側に溝のある富士通独特の特徴あるスタイルです。今回は国内調達したのであまり心配はないのですが、海外からだとこのパッケージは(ニセモノの可能性が低いということで)安心材料の一つといえそうです。

さて、追加された命令の詳細を知りたいところなのですが、富士通のデバイスはデータシートの入手が難しいことが多く、このMB8861も入手できていません。ハード的にはMC6800と差し替え可能ということで、「リンク」に挙げたサイトの情報と実験をもとに動かしていきます。

74L04 と 74L42

テーマ:

カテゴリー:

MB8861とMB8870を手に入れたのですが判定ルーチンと一緒に書こうと思いまして、今回は珍しい74シリーズを取り上げます。

SN74L42N
一つ目はTIのSN74L42N、BCD to 10のデコーダです。型番表示が右によっているのは古いTI製にはよくありました。1976年製。

何が珍しいかというと「74L」というところ、以前取り上げた74Hとともに滅多に見かけないシロモノです。すぐに74S, 74LSの時代になったのであまり普及しなかったようです。

最初の74は種類が豊富だった(SやLSが作られなかった品種も多い)ためか生き残ったのですが、74L,74Hにはそういうアドバンテージも無さそうです。

AKI-ROMがもう1枚...

テーマ:

AKI-ROMがなぜかもう1枚出てきちゃいました。

AKI-ROM
こちらにはDC-DCが搭載されていない他、左下のスイッチやZIFソケットからも別の個体であることがわかります。

2枚作った理由は...、例によって使いたいときに行方不明だったからでしょうね。

秋月のキットとしては高価な部類に入るのでよほど急いで必要だったのでしょう。となると、Flash EEPROMを飛ばしてしまったP/I-P55TP4Nの復活の時かもしれません。数万円のマザーボードの修復のためとなればそう高いとは感じないでしょうから。

CPU判別法(80編)

68編に引き続き80編をお送りします。

8080系

8080系とZ80系の区別は『I/O』誌の記事を参考にしました。i8080/μPD8080AF, μPD8080A, i8085の判別法は一般的なものがあれば利用するつもりでしたが、見当たらなかったのでデータシートを元に独自に書いたものです。

CPU判別法(68編)

現在のCPUではその種類や対応する命令の範囲などを取得する命令(例えばx86系のCPUID命令)がありますが、以前は微妙な挙動の違いなどから判別していました。

自作のUniversal Monitorのソースコードを例に解説してみます。

MC6800系

まずは昨日目処が立ったと書いたMC6800系からです。

この系統はあまり情報が無く(旬な時期にあまりかかわらなかったのも理由です)手持ちのデバイスで試しながら書いたものです。

該当部分のソースは次のようになっています。

[UniMon] レジスタ命令追加

カテゴリー:

8080, Z80, 6809に続いて6800用でもCPU判別を追加しようと思っているのですが情報があまりありません。

わかった範囲ではMC6800 ⇒ MC6801/MC6803 ⇒ HD6301/HD6303と改良されるにしたがって命令は追加されていますが、既存命令の挙動は変化が無いようです。これは互換性という点では非常にありがたいのですが、判別という点では困ったことです。

追加された命令の存在が確認できれば良いのですが、そのオペコードは旧プロセッサでは未定義なので何が起こるかわかりません。データシートにも記載は無いので試してみるしかないのです。

レジスタを設定し、問題の命令を実行し、レジスタがどう変化したかを地道に見ていく必要があります。

そこでレジスタを任意に設定して実行する機能、レジスタの内容を表示する機能を追加することにしました。これはデバッグにも有効です。

片面単密

テーマ:

カテゴリー:

8インチのディスケット探していたらこんなものが出てきました。

8インチ片面単密ディスケット
8インチ片面単密のディスケット、IBM純正ですね。

内容を表すラベルがありませんが、一緒に出てきたほかのディスケットから想像するに高校のころ廃棄されるものをもらったものではないかと思います。

マウスパッド

テーマ:

こんなマウスパッドが出てきました。

マウスパッド
保管状態があまり良くなかったのでキズが結構あります。

こうして全体を見ると単なる黒っぽい光沢のあるマウスパッドでしかありません。

が、拡大してみると...

一部を拡大...
一部を拡大してみると格子模様が印刷されているのがわかります。

Pages