理科年表
カテゴリー:
今回出てきたものは「理科年表」、東京天文台/国立天文台が編纂しているデータ集です。
これは子供の頃に親に買ってもらった昭和57年版、当時読みまくったようでかなりボロボロになっています。
大きく暦・天文・気象・物理化学・地学の各部に分かれていますが、私が主に興味を持ったのは物理化学の部でした。今から思うと何が面白かったんだろうというところですが、物質名と化学式の表なんかをひたすら読んでいた記憶があります。
さらに平成3年版と平成6年版も出てきました。
こちらは大学の頃で自分で買ったはず。この頃になると意味もなく読むということはあまりありませんが、やはり読むのは物理化学の部ばかりでしたね。あとは附録の公式集などです。必要があって引くだけなのでこちらはキレイな状態でした。
HDDコネクタ?
カテゴリー:
ちょっと部屋で探しものをしていたところこんなものを発見しました。
コネクタが2つ、フレキシブル基板で接続されています。
絶縁のためでしょうか、コネクタのハンダ付け部分はゴム状の樹脂が盛られています。
PC-386NOTE A用HDDのモノではないかと思っていますが、どうでしょうか?
このコネクタは50ピン、こちらが本体側ではないかと思います。
最近のお買い物(2022/7)
カテゴリー:
ちょうど一月前PCR検査受けて陰性だったのですが、あの時は普通に電話して予約できていました。今では発熱外来にかかることすら大変な状況になってしまいました。
HD1-6120ボード(モニタ移植編)
カテゴリー:
HD1-6120ボードを作ってから約2年、ASが使えるようになったのでUniversal Monitorの移植に着手しました。
ボード完成以来ソフトウェア編での無限ループ確認くらいしかしていなかったのですが、やっとまともなプログラムが動かせます。いくつかあった問題は、ASはIM6100対応を行ない、EMILY Boardも12ビット8進表示モードを作ったことでほぼ解決しています。
残るUniversal Monitorの仕様は... 常に8進表示でダンプ時のASCII表示は無しとすることにします。
そう決まればあとは黙々と実装するのみです。
現在 D(ump), G(o), S(et) の各コマンドができて L(oad) はインテルHEXのみ実装してデバッグ中といった状況です。
ある程度のプログラムを書いてこのIM6100の癖がわかってきたので書いてみたいと思います。
ASのIM6100対応(その4)
カテゴリー:
前回の最後に複合命令の処理がイマイチと書いたのは次のようなことです。
SNL MQA
SNL
はグループ2ですから次のMQA
は共通命令テーブルとグループ2の命令テーブルを探すことになります。ところがこれはグループ3なので当然見つかりません。
結果として"unknown instruction"エラーになるわけですが、MQA
は存在する命令でただSNL
とグループが違っているだけです。"invalid instruction combination"エラーの方がより親切というものでしょう。
そこですべてを1つの命令テーブルに入れることにしました。各命令ごとに複合命令にできるか、できるならどのグループかの情報を付加して組み合わせられるか判定します。
ASのIM6100対応(その3)
カテゴリー:
ASでは数多くのエラーメッセージが用意されており大抵はその中から選べるのですが、新たなプロセッサへの対応をしているとどれもしっくりこないことがあります。
そこで3回目の今回はエラーメッセージの追加方法を書いてみます。
IM6100には元になったミニコンPDP-8のコンソールパネルを再現するための特別なモードがあり、そのモードでしか実行できない命令あるいは逆に通常モードでしか実行できない命令があります。これは他のプロセッサにはない概念なので適当なエラーメッセージは存在しません。
これを例にエラーメッセージの追加方法について書いていきます。
まずはエラーの名称(表示内容ではなくプログラム中から参照するときの識別子です)とエラー番号を決めます。ちなみにエラー番号は1000未満だと"Warning", 1000以上だと"Error"として扱われます。
最初はどう決めてよいかわからないと思いますので既存のものを参考にするのが良いでしょう。
これをerrmsg.h
に追加します。
EMILY Board +16
カテゴリー:
uPD78CG14ボードの基板と一緒に注文していたのがこのEMILY Board +16の基板です。
現時点でのEMILY Boardのフル拡張状態です。
これで8ビット・16ビット・32ビット幅のバスが使えるようになります。メモリ構成的には4k×8bit, 4k×16bit, 4k×32bitですが、プロセッサボードに簡単なアドレスデコーダを積むことで16k×8bitや8k×16bitのような使い方も可能です。
ASのIM6100対応(その2)
ASのIM6100対応(その1)
カテゴリー:
前回楽ではなさそうと書きましたが、基本機能は動くようになりましたのでIM6100対応について数回に分けて書いていきたいと思います。
第1回目は複合命令の処理です。
前回3種類のアイデアを書きましたが最終的にはオリジナルのアセンブラ書式に近い3番目を採用しました。
ASの一般的な処理を知らないとわかりにくいと思いますので、簡単に説明しておきます。
まずSwitchTo_xxxx()
関数(これはCPU
疑似命令で切り替わったときに呼ばれます)で必要な命令を登録します。特殊な疑似命令が必要ならそれもここで登録します。
AddMR("AND", 00000);
AddMR("TAD", 01000);
ここでAddMR()
は同じ引数を繰り返すのが面倒で用意したラッパーなので、例えば1行目は以下のように書いたのと同じです。