現在地
ソフトウェア
EMILY Board +8 (ソフトウェア編)
前回、EMILY Boardの16ビットバス化のハードウェアに書きました。今回はソフトウェアについてです。
4k×8bitのメモリ空間2つがターゲットCPUにどう見えるかはCPUボードのハードウェアによって決まります。
それではEMILY Boardのコンソールから各種コマンドでアクセスする場合にはどう見えるのが良いのでしょうか?
ターゲットからの見え方に合わせないと不便ですが、あまり自由度を高くすると設定が難しくなります。とりあえず必要最小限ということで以下のモードを用意しました。
SC/MPボード(ソフトウェア編)
SC/MPボードへのモニタの移植が一段落つきました。新しいプロセッサへの移植は毎回似たような流れで行なっていますので、その流れを書いてみたいと思います。
- いつもループ確認の後はいきなりモニタを書き始めているのですが、今回のSC/MPはサブルーチンコールなど基本的な命令が不足しているので使いそうなマクロをまず用意しました。
- なるべく似たプロセッサ(今回はMC6800, 6502)を参考にしながら先頭から実装していきます。最初の目標はオープニングメッセージの表示で、いわゆる"Hello, world!"に相当します。
- サブルーチン類は必要になったものから実装していきます。ラベルや配置順は可能な限り共通にして、他プロセッサ向けとの対応が取りやすいようにします。
- メッセージが表示できるようになったら次は行入力ルーチンです。
- 続いてコマンドを実装していきます。どれから始めてもよいですが私はD(ump)からですね。パラメータを16進文字列からバイナリへ変換、16進表示などを順に確認しながら実装していきます。
SC/MP使いの憂鬱
SC/MPボードにUniversal Monitorの移植を始めたのですが、前にも書いたように癖が強くて大変です。
そこで移植をしていて「げっ」と思ったことを書いてみたいと思います。
EMILY Board
6502ボード(ソフトウェア編)
ハードウェア編に続いて今回はソフトウェア編です。
最初のテストはJMP
でループを作ってみます。これは3バイト命令なのできりの良いアドレスに配置すればA0, A1が変化しA2以降のアドレスは変化しません。
これでメモリ基板から読んで実行できていることがわかります。メモリ基板のターゲット側ポートはこれまで未確認だったのですが、ここで確認が取れました。
この後はメモリへの書き込みなど一つずつ確認していくのが堅実だとは思いますが、一気にUniversal Monitorの移植に進むことにしました。
実はこの時点ではR65C51 ACIAは未搭載だったのでメモリ基板のコンソール機能を利用します。この機能も未確認なのでまずはオープニングメッセージを表示するところまで移植してみます。
6502のアセンブリ言語を書くのは初めてです。
Accelerated-X
カテゴリー:
昔使っていたXサーバのマニュアルも出てきました。
386bsd, FreeBSD, Linux などのPCのUNIX系OSのグラフィック環境としてはX Window Systemを使用するのが一般的です。X Window System自体はオープンソースで、PC用の実装であるX386, XFree86ももちろんオープンソースです。
私も386bsdを使い始めた時からX386 ⇒ XFree86を使用していました。
これ(正確にはその中のXサーバ)はグラフィックスハードウェアに依存したソフトウェアです。最初のころはPCのグラフィックスハードウェアの仕様は公開されていたので問題はありませんでした。
[UniMon] アセンブリ言語で書いている理由
カテゴリー:
CPU判別法(80編)
CPU判別法(68編)
現在のCPUではその種類や対応する命令の範囲などを取得する命令(例えばx86系のCPUID命令)がありますが、以前は微妙な挙動の違いなどから判別していました。
自作のUniversal Monitorのソースコードを例に解説してみます。
MC6800系
まずは昨日目処が立ったと書いたMC6800系からです。
該当部分のソースは次のようになっています。