現在地

ノウハウ・テクニック

アドレスエラー・バスエラー (その2)

カテゴリー:

前回はMC68000/MC68008について書いたので今回はMC68010/MC68012です。

MC68010 / MC68012

MC68000/MC68008ではアドレスエラー・バスエラーからのソフトウェアによる復帰はできませんでした。それを改善したのがMC68010(とメモリ空間を拡大したMC68012)です。

そのためには例外処理を行なっている間復帰に必要な内部状態を保存しておかなくてはなりません。内部にこっそり保存するという方法も考えられなくはありませんが、MC68010ではスタックに積むことで保存します。

アドレスエラー・バスエラー発生時のスタックには以下のように29ワードという大量の情報が積まれています。

アドレスエラー・バスエラー

カテゴリー:

Universal Monitor 68000は自分のボードで動かせるMC68000, MC68010まで対応し、MC68020以降は動かす人もいないだろうから後回し、と思っていたのですが...

なんとMC68030で動かした方がおられます(リンク参照)。

これは判別やら例外処理やら対応しなくてはと思いソースを見たところ、MC68010のアドレスエラー・バスエラーの表示を作りかけたままになっておりました。これを放置したまま他の変更を行なうのは混乱の元(一応 Subversion で管理してはいますが...)なのでまずこれを完了させることにしました。

MC68000系では割り込みの他、ゼロ除算や未定義命令の実行などが発生したときにあらかじめ用意したルーチンを実行する機能があります。これを例外処理といいます。

原則として(復帰できるように)発生時のPCとSRをスタックに積んでから実行するのですが、アドレスエラーとバスエラーの場合はさらに多くの情報がスタックに積まれます。

写り込み対策(その2)

カテゴリー:

その1で現実的なサイズのリングライトでは難しそうだとわかったので別なアプローチを考えてみました。

写り込まないようにしなくてもコントラストがなければ問題ありません。

理想的には円筒形の光源で囲ってしまえばいいのですが...

一般的には撮影ボックスなどを使うのでしょう。でも真上から撮りたい、ある程度大きなものにも対応したい、使わないときは邪魔にならないように片づけたい、などと考えるとなかなか良さそうなものがありません。

そこでキャビネット用のLEDバーライトで簡易的な面光源を作ってみました。これを複数作って被写体を囲むように並べます。


アルミのチャンネル材(長さ300mm)の内側にLEDバーライトを両面テープで固定します。これは光源であるとともに重しでもあります。

写り込み対策(その1)

カテゴリー:

デバイス撮影法(照明編)で書いた基板へのリングライトの写り込み問題、ちょっと試したことを書いていきたいと思います。

まず試したのは、ライトの光を散乱させること。

リングの中央から撮影する都合上穴を開けないといけませんし取り付けを考えるとライトと同形状のドーナッツ形が良さそうです。専用品があればよいのですが見つからなかったのでプラ板で自作してみました。

用意する材料はプラ板、どのくらいの厚さがいいのかわからないので0.3mm, 0.5mm, 1.2mmがセットになったものを選びました。

デバイス撮影法(撮影編)

カテゴリー:

デバイス撮影法の最後は撮影編です。

カメラ・レンズは... 近接撮影になることだけ留意します。私はSONY α77 II とSIGMA 18-50mm F2.8 EX DC MACROの組合せで撮っています。カメラは元々は航空機撮影用に購入したものですし、レンズも1本くらいはマクロレンズも持っておこうと買ったもので、特にこのために選んだものではありません。

絞りはF8.0くらいで撮ることが多いですね。これは手持ちの頃にシャッタスピードと被写界深度のバランスをとった結果です。三脚やスタンドで撮るならもう少し絞ってもいいかもしれません。

AFのフォーカスエリアは中央にしています。上記のレンズでも十分に寄ることができず中央に小さくしか写せないことがあり、フォーカスエリアを広くしていると目的のところにピントが合わないことがあるからです。

このことに気付く前に撮ったものでは、逆さにした8ピンDIPの足の先端にピントが合ってしまっていたりします。裏の写真はマーキング記録目的なので足はどうでもいいのですが...

もっと絞ればこれは気にしなくてよくなるかも。

照明は決まっているのでホワイトバランスも固定しています。

デバイス撮影法(照明編)

カテゴリー:

3回目の今回は照明法についてです。

基板などある程度大きなものは離れて撮影するので部屋の照明だけでも撮影可能な場合もありますが、小さなデバイスは接近しての撮影になりますし、特にコピースタンドを使用しての真上からの撮影ではカメラの陰になるので専用の照明が不可欠です。

カメラ内蔵のフラッシュを使う手もありますが強い影が出るので、レフ板的なものを用意するか、複数のフラッシュを併用するなどの工夫が必要になります。また撮影してみないと結果がわからないのも厄介な点です。

個人的にフラッシュ撮影はあまり好きではないこともあってあまり使用していません。

そんな中で長らく使ってきたのはLED式のデスクライトを2台左右に並べる方法です。

デバイス撮影法(舞台編)

カテゴリー:

デバイスの撮影法、第2回目は背景やカメラ配置などの舞台編です。

デバイス撮影の背景は原則として導電マットを用いています。現実的に問題ないとはいえやはり静電対策されたものを使いたいですし、導電スポンジや金属では撮影がしにくいですから。

デバイス撮影法(清掃編)

カテゴリー:

これまでデバイスの写真をたくさん掲載してきましたが、その撮影について何回かに分けて書いてみようと思います。

第1回目は被写体(デバイス)の清掃編です。

最初の頃はそのままか軽く口で吹く程度で撮影していたのですが... なにしろ古いものが多いですから埃まみれになっていることが多く、またUV-EPROMでは古いラベルを剥がした糊が残っていることもあります。

今まで以下のような方法を試してきました。

NetBSDマシンに6TB HDDを追加した話

カテゴリー:

とあるパーティションが手狭になってきたので6TB HDDを追加しました。

これは元々容量に余裕のあったNASに置いていたのですが、小さなファイルが大量にあるという条件のためかNASのパフォーマンスがあまり出ていませんでした。そこで余っていた(NASトラブルでTS-410から外した)2TBのHDDに移していたのですが、遂に使用率が容量の80%・i-nodeの95%に達してしまい増設することにしました。

2TB→6TBと容量は3倍ですが、容量当たりのi-nodeを倍にする予定なので実質4倍近くになります。

ということでNASでも実績のあるWD Red PlusシリーズのWD60EFZXを調達しました。

INS8073のBASICで独自のコンソールを使う

カテゴリー:

前にBASICの持つコンソールルーチンをモニタから使用する方法を書きましたが、今度は逆に独自に用意したコンソールルーチンをBASICに使用させる方法です。

こちらは一応マニュアルにも載っている公認の機能です。

マニュアルの情報不足と誤りのせいでROMを読むまでは動かせませんでしたが...

ということでINS8073のコンソールの設定方法についてまとめておきます。

ページ