現在地
ノウハウ・テクニック
SC/MP使いの憂鬱
SC/MPボードにUniversal Monitorの移植を始めたのですが、前にも書いたように癖が強くて大変です。
そこで移植をしていて「げっ」と思ったことを書いてみたいと思います。
テスタの抵抗測定時の電圧
カテゴリー:
導通チェッカはPN接合がオンしない低電圧で測るのがウリですが、普通のテスタだとどうなるのか試してみました。
事の発端はダイオードの順方向電圧を測ろうとしたときのことです。テストリードのどちらがプラスなのか念のため電圧を測ってみました。
ついでに抵抗測定モードも見たのですが、300mV程しかかかっていません。これなら普通のテスタでもいけるのではないでしょうか。
ということで手元にあった2つのテスタと導通チェッカの電圧をチェックしてみました。各レンジで100Ω, 1kΩ, 10kΩ, 100kΩおよび開放時の電圧を測っています。
CPU判別法(80編)
CPU判別法(68編)
現在のCPUではその種類や対応する命令の範囲などを取得する命令(例えばx86系のCPUID命令)がありますが、以前は微妙な挙動の違いなどから判別していました。
自作のUniversal Monitorのソースコードを例に解説してみます。
MC6800系
まずは昨日目処が立ったと書いたMC6800系からです。
該当部分のソースは次のようになっています。
AVRA から AS へ
カテゴリー:
これまでAVRのソフトウェア開発はAVRAを使ってきました。文法が純正アセンブラとほぼ一緒で、NetBSD上で使えるのがその理由でした。
最近 8080, Z8, MC6800, MC6809 などで共通に使えるという理由で The Macroassembler AS を使うことが増えてきました。Z80 も容易に移行できたので、AVR もこの際統一しようとやってみたので引っかかった点などを書いてみようと思います。
題材は、ROMエミュレータのメモリ編集ルーチンの製作中のボードへの移植です。製作中のボードについてはある程度形になったところで取り上げようと思います。
PC-8001 テープからのオートスタート
カテゴリー:
テープ時代のメモの記事でオートスタートに触れたのでその仕組みを書いてみます。
PC-8001でバイナリ(いわゆるマシン語)のプログラムをテープから読んで実行するには普通次のようにします。
mon
*L
*GD55B
ここで「*
」はプロンプトなので入力はしません。
「mon
」コマンドでマシン語モニタに入り、「L
」でテープからロードし、「G
」で実行します。「D55B
」は実行開始アドレスです。
「mon
」「L
」は不変なので憶えられますが、実行開始アドレスはプログラム毎に異なるので面倒です。そこで市販ソフトウェアを中心にこのオートスタートのテクニックが使われました。
The Macroassembler AS
カテゴリー:
LED駆動方式の実験
カテゴリー:
昔LED駆動の実験をした基板です。
いかに少ないポートで多くのLEDを駆動(制御)できるかというものです。
実験なので最小規模の3ポートでLED6つの構成です。6つのうち任意の1つを点灯することができます。複数を点灯させることもできなくはありませんが一部の組み合わせしかできず、電流制御にも問題が生ずるので使いにくいと思います。必要ならダイナミックスキャンを行ないます。
基板からの線は3本です。これへのLEDの繋ぎ方は6通りあるので、最大6つまでは独立して制御できる可能性があります。
NMOS Z80 CPU のクロック
先日クロック信号について書いた時、資料に面白い記述を見つけたので今回はそれについて書いてみます。
それは1978年3月版のZ80 CPUの仕様のAC特性にあった以下の記述です。『Z80ファミリ・ハンドブック』もこれを元にしていると思われます。