現在地

ソフトウェア

ASに新CPU対応を(その3)

あれから作者の方と連絡とって質問したり、ID番号もらったり...
軽い気持ちで始めたのですが、ここまできたら本家への追加を目指そうかな。

以下は既存のcode***.cを参考に推測・試行錯誤した結果です。全体を理解して書いているわけではないので、間違っていたり作者の意図しない使い方をしたりしているかもしれません。ご了承ください。

前回厄介と書いたメモリに関係する L, ST, B, BAL, IMS, DMS の各命令も使えるようになりました。これらをデコードする DecodeAdr は長いのでゼロページ間接インデックス(MN1610で一番複雑)を例にみてみます。

ASに新CPU対応を(その2)

昨日に引き続きASのMN1610対応についてです。

以下は既存のcode***.cを参考に推測・試行錯誤した結果です。全体を理解して書いているわけではないので、間違っていたり作者の意図しない使い方をしたりしているかもしれません。ご了承ください。

前回の SwitchTo_MN1610() の最後で呼び出していた InitFields() です。

ASに新CPU対応を(その1)

なんか大昔のI/O誌の特集みたいなタイトルですが...

The Macroassembler ASは対応しているCPU多いのですが、先日のMN1613など対応していないものもあります。他にも手持ちのCPUで非対応のものにZ8001, NS32016, HD1-6120, HD642032なんかもあります。

日本独自のMN1613やHD642032(TRON-Chip)はともかく、Z8000(Z8001), NS32000, IM6100(HD1-6120)などは知名度も高いんですけどね。

EMILY Board +8 (ソフトウェア編)

テーマ:

前回EMILY Boardの16ビットバス化のハードウェアに書きました。今回はソフトウェアについてです。

4k×8bitのメモリ空間2つがターゲットCPUにどう見えるかはCPUボードのハードウェアによって決まります。

それではEMILY Boardのコンソールから各種コマンドでアクセスする場合にはどう見えるのが良いのでしょうか?

ターゲットからの見え方に合わせないと不便ですが、あまり自由度を高くすると設定が難しくなります。とりあえず必要最小限ということで以下のモードを用意しました。

SC/MPボード(ソフトウェア編)

テーマ:

SC/MPボードへのモニタの移植が一段落つきました。新しいプロセッサへの移植は毎回似たような流れで行なっていますので、その流れを書いてみたいと思います。

  1. いつもループ確認の後はいきなりモニタを書き始めているのですが、今回のSC/MPはサブルーチンコールなど基本的な命令が不足しているので使いそうなマクロをまず用意しました。
  2. なるべく似たプロセッサ(今回はMC6800, 6502)を参考にしながら先頭から実装していきます。最初の目標はオープニングメッセージの表示で、いわゆる"Hello, world!"に相当します。
  3. サブルーチン類は必要になったものから実装していきます。ラベルや配置順は可能な限り共通にして、他プロセッサ向けとの対応が取りやすいようにします。
  4. メッセージが表示できるようになったら次は行入力ルーチンです。
  5. 続いてコマンドを実装していきます。どれから始めてもよいですが私はD(ump)からですね。パラメータを16進文字列からバイナリへ変換、16進表示などを順に確認しながら実装していきます。

EMILY Board

テーマ:

メモリ基板、確かにメモリではあるのですがそれだけでもないので「EMILY Board」と名付けました。

Environment for Microprocessor Introduction ... の略というのはもちろん後からのこじつけで、二式大型飛行艇の連合国側コードネームからの命名です。

二式大型飛行艇
写真は鹿児島の鹿屋航空基地資料館に展示されている二式大型飛行艇、唯一の現存する機体のはずです。

これだけではなんなのでこれまで書かなかった資料編をお送りします。

コネクタ ピン配置

まずは基板上部のCPUボードへのコネクタです。

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] アセンブリ言語で書いている理由

テーマ:

現時点でも6800, 6809, 8080, AVR, Z8, Z80と多くのプロセッサで動いているUniversal Monitorですが、まだまだ対応プロセッサは増やすつもりでいます。

すでに完成したボードがあって動かせるMC68000、SBC8088ボード購入済みであとは組み立てるだけの8086/8088、6502/65C816あたりが次の候補ですね。

これだけの多プロセッサ展開を前提としているのになぜC言語を使わないのか不思議に思われるかもしれません。

そこで今回は何故オールアセンブリ言語なのか書いてみようと思います。

ページ