80系でリロケータブルを実現する
80系(8080,Z80,8085)で真のリロケータブルコード(PIC)を書くことはほぼ不可能です。
MC6809では普通に可能だったので、6809ファンの友人によく馬鹿にされたものです。
PICであるためには何が必要で80系では何が欠けているのか考えて見ましょう。必要なのはコード内のアドレスを正しく求め、参照できることです。
80系(8080,Z80,8085)で真のリロケータブルコード(PIC)を書くことはほぼ不可能です。
PICであるためには何が必要で80系では何が欠けているのか考えて見ましょう。必要なのはコード内のアドレスを正しく求め、参照できることです。
ここ何週間も四苦八苦していた所得税の確定申告をやっと出すことができました。
確定申告自体は10年ほど出していたのですが、これまでは給与所得+株・FXだったのでWEB上でチョイチョイと数字を入れるだけで済んでいました。
しかし今回からは事業所得(まだ赤字ですが)でしかも青色申告なので、やれ棚卸しだ決算だと慣れないことばかりです。これまで表計算で帳簿付けてきたのですが、いざ決算書等を作ろうとするとわからないことが次から次へと出てきます。結局、専用のソフトウェアを購入して1年分を再入力することになってしまいました。
それにしても1年目はまだ慣れていない上に、開業前から持っていたカードの利用分が引き落とされたり、プロバイダ料金はいつの分がいつ請求されるか、など例外的な事項が多くて大変です。こういうことって本等にもあまり書いていないんですよね。
そんなわけで何とか仕上げて投函してきました。
あとは税務署から電話かかってこないことを祈るのみです。
3回目も昨日に引き続き、80系アセンブラの懐かしいテクニックです。
スタックポインタ(SP)を利用してメモリクリアです。
2日目の今日は80系(8080, Z80, 8085など)のちょっと懐かしいテクニックです。
今こんな書き方をすると、わかりにくいと怒られるか、パイプラインなどに悪影響が出たり技術的にもデメリットになったりしますので避けるべきですが、当時はそれなりにメリットもあってよく使われていました。
一つは命令の途中に飛び込むというものです。例えばこんな感じです。
1: 8000 ORG 8000H
2: 8000 entry1:
3: 8000 3EAF LD A,0AFH
4: 8002 3200FF LD (0FF00H),A
5: 8005 C9 RET
3行目でAレジスタに0AFHを入れ、4行目で0FF00H番地のメモリに書き込んで、リターンするだけのものです。
ここでは8000Hがエントリポイントですが、8001Hもエントリポイントと考えると以下のようになります。オブジェクトは上と一緒です。
今回からしばらくはちょっと趣向を変え、ソフトウェアについて書いてみたいと思います。1回目は「ソースコード等に16進を記述する際の記述方法」です。
今回のモノは比較的初期のCD-ROMドライブです。
SONY製のCDU561というCD-ROMドライブです。
左からヘッドホンジャック、ヘッドホン用のボリューム、アクセスLED、イジェクトボタンと今のドライブと変わりはありません。右端の穴は強制的にイジェクトするためのもの、中にスイッチがあるわけではなく機械的に動かすのでそれなりに丈夫なもので押す必要があります。
挿入口に「CADDY LOADED」とあるのはディスクがセットされていることを表しています。セットされていないときは確かCDロゴの付いたグレーのカバーが見えるようになりました。
今回のデバイス、昔は単独のICでしたがコントローラに内蔵されるようになり、現在では用途そのものが無くなりつつあります。
これはSED9420C、フロッピーディスク用のデータセパレータのICです。
データセパレータというのはフロッピーディスクドライブから読み出された信号、これはデータとクロックが一緒に記録されているわけですが、そこからデータを取り出す回路です。より正確にはデータの位置(タイミング)を示す信号(WINDOW)を作り出す回路です。この信号を元にFDC (Floppy Disc Controller)はデータを取り出します。
なぜ直接データを取り出さないかというと、FDCはデータ以外にクロックの抜けているところ(Missing Clock)と呼ばれるものを検出する必要があるためで、そのためにクロックの含まれた信号も必要としているからです。
以前AVRマイコンの開発用に製作したものなのですが、何をするものなのかわからなくなってしまいました。
自分で作っておきながらわからなくなるとはマヌケな話ですが、憶えているのはパラレルプログラミングによってどこかのFuse bitを書き換えるツールだということだけです。
昔使っていたモデムです。
HucomのHUCOM-EX336、その名の通り33.6kbpsのモデムです。
モデムはその速度性能が電話代に直結するということで私にしては積極的に新しいモノを買っていましたが、冷静に考えるとモデム代の元を取れるほどの通信量は無かったですね。
正面には各種LEDのみです。
背面にはコネクタが並びます。
今回はXC68030とよくペアで使われたFPUです。
これがMC68882RC25A、PGAパッケージの25MHz版です。他にPLCCとQFPのものが出ていたはずで、PLCCは持っているかも。
MC68882は以前紹介したMC68881の改良版でピン配置も命令も互換です。基本的に挿し換えればそのまま使えるはず。「基本的に」と書いたのは、未確認ですがFSAVE, FRESTORE命令でスタックに積まれる内部状態は異なっている可能性があり、これを直接操作するようなソフトウェアは影響を受けるから。そんなソフトウェアが実際にあるかは疑問ですが、デバッガとかであればフォーマット番号くらいは参照していても驚きません。