今は無きモノ(コンピュータ編)
予告通りパソコン編と言いたいところですがワークステーションもあるのでコンピュータ編とさせていただきます。
予告通りパソコン編と言いたいところですがワークステーションもあるのでコンピュータ編とさせていただきます。
2回目は電卓編ということで電卓やポケコンなどを取り上げます。
いつも「こんなモノ持ってる」なのでたまには趣向を変えて今はもう無いけど昔はこんなモノ持っていたを書いてみたいと思います。
1回目の今回は工作編ということで昔作ったものです。
ホーマーだったかエースだったかのキットで、まだゲルマニウムトランジスタ(2SB56だったかな)でした。
今回は久々に「~遍歴」シリーズ、ハンダごて遍歴を書いてみます。
以前FX-888Dのところで書いたものと一部重複しています。
昨日のことです、椅子から立ち上がろうとした瞬間、足の裏から変な感触がありました。
何か踏んでしまったようです。
何だろうと思って取り上げてみたところ......
やっちまった。
LED Flasherの基板がいつの間にか机から落ちていてそれを踏んでしまったようです。
基板は裏返し(ハンダ面が上)に落ちていて、LM3909Nを支点に真っ二つに折れてしまいました。
まぁ試しに組んでみただけなので回路は別にいいのですが、貴重なLM3909Nの足があらぬ方向に曲がってしまいました。ソケットは無事だったのでピンセットで簡単に抜くことができました。
このところ台所でトラブルが連続しています。
最初はLED照明が点灯しなくなりました。元々は20W直管蛍光灯用の器具にグロー球を外せばそのまま使えるというLED蛍光灯を付けていました。購入履歴によると3年でちょっと短い気もしますが、密閉式なのでしょうがないのかな。密閉してもOKなものを選んではいるのですけどね。
それから一週間も経たずに今度は水栓のレバーがぽっきり折れてしまいまして......
またちょっと古いICが出てきました。
MotorolaのMC6847P VDG(Video Display Generator)です。
これはNTSCテレビにキャラクタやグラフィック表示をするためのもの、NECのPC-6001シリーズに使われていました。類似のモノだとMSXなどに採用されたTexas InstrumentsのTMS9918シリーズが有名ですね。
両者は表示モードの方向性など多くの相違点がありますが、最大の違いは表示用メモリの扱いでしょう。TMS9918系がCPU空間とは独立したメモリ空間を持ちDRAMコントローラ機能も内蔵しているのに対し、このMC6847はMPUのメモリ空間の一部を表示メモリとして使用します。そのためMPUとVDGからのアクセスを調停する何らかの回路が必要です。以前取り上げた74LS783はこの機能を持っていました。
一応今回をもってSC61860 & SC62015のシリーズは最後となります。
前回予告したようにテストデータ作成についてです。
ASにはtestsディレクトリ以下にソース(*.asm)と期待値(*.ori)を配置しておいてmake test
を実行すると自動テストを行なう機能があります。特にSC62015のようなアドレッシングモードの複雑なものでは新たなモード追加の際に以前のものを壊すリスクがそれなりにあるので、追加のたびに全モードをテストできることは重要です。
で、このテスト用データの作成なのですが......
網羅性の高いテストソースの作成はそれだけで大きなテーマではありますが今回はそこには触れません。
もう一方の期待値のファイルはソースをハンドアセンブルするだけなのですが、(バイナリファイルなこともあり)意外に面倒なものです。
今回は予告通り、SC61860の公式ドキュメントを教えていただいてちょっと修正した件を書きたいと思います。
その1のコメントとしてenakaさんより教えていただいたSC61860のドキュメント、正確にはPC-1350の機械語のドキュメントですが、CPU SC61860の記述がメインになっています。PC-1350も持っているので残りも興味深いのですが、今はあくまでもCPUのマニュアルとして読むことにします。
そもそもこのSC61860というCPU、当初は仕様は非公開だったはずです。PC-1250の時代だと思いますが実機の動作から解析された方がいて、わかってしまったのならということで後から情報が出てきたという経緯だったとどこかで読んだような。今回参考にしている『ポケコン・マシン語ブック』の前の『ポケコン・マシン語入門』だった気がするのですが、残念ながらこの本が行方不明でして確認できていません。今度永田町に読みに行こうかな。
ということで『ポケコン・マシン語ブック』とシャープの資料を比較してみたところ、ちょっとした相違点はあるものの大きな違いはありませんでした。
SC61860対応ができたので、続いてSC62015の対応を進めます。
SC62015はSC61860から一転かなり厄介です。ニーモニック数が少ないのに対し、アドレッシングモードが複雑だからです。
ASはアーキテクチャ共通の動作としてソースの1行をラベル部・ニーモニック部・オペランド部に分割し、さらにニーモニック部によって各デコードルーチンに分岐してくれます。IM6100のようにこのフォーマットが特殊な場合はちょっと面倒ですが、そうでなければお任せにすることができます。
一方でオペランドのパースは自分で書かなくてはなりません。
SC61860のオペランドは定数のみで、定数式の評価ルーチンは用意されているのでほぼ呼び出すだけですみました。