ソフトウェア

EMILY Board

2019-09-24 21:08 — asano

テーマ

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

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

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

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

コネクタ ピン配置

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

6502ボード(ソフトウェア編)

2019-09-22 23:00 — asano

テーマ

ハードウェア編に続いて今回はソフトウェア編です。

最初のテストはJMPでループを作ってみます。これは3バイト命令なのできりの良いアドレスに配置すればA0, A1が変化しA2以降のアドレスは変化しません。

これでメモリ基板から読んで実行できていることがわかります。メモリ基板のターゲット側ポートはこれまで未確認だったのですが、ここで確認が取れました。

この後はメモリへの書き込みなど一つずつ確認していくのが堅実だとは思いますが、一気にUniversal Monitorの移植に進むことにしました。

実はこの時点ではR65C51 ACIAは未搭載だったのでメモリ基板のコンソール機能を利用します。この機能も未確認なのでまずはオープニングメッセージを表示するところまで移植してみます。

6502のアセンブリ言語を書くのは初めてです。

Accelerated-X

2019-08-25 23:59 — asano

テーマ

カテゴリー

昔使っていたXサーバのマニュアルも出てきました。

マニュアル
386bsd, FreeBSD, Linux などのPCのUNIX系OSのグラフィック環境としてはX Window Systemを使用するのが一般的です。X Window System自体はオープンソースで、PC用の実装であるX386, XFree86ももちろんオープンソースです。

私も386bsdを使い始めた時からX386 ⇒ XFree86を使用していました。

これ(正確にはその中のXサーバ)はグラフィックスハードウェアに依存したソフトウェアです。最初のころはPCのグラフィックスハードウェアの仕様は公開されていたので問題はありませんでした。

しかしグラフィックアクセラレータが進化するにしたがって仕様を秘匿するメーカが出てきました。そのようなメーカ製のグラフィックボードでは動作しなかったり、動作してもアクセラレータ機能が使えなかったりします。

[UniMon] アセンブリ言語で書いている理由

2019-07-18 23:58 — asano

テーマ

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

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

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

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

CPU判別法(80編)

2019-07-10 12:55 — asano

68編に引き続き80編をお送りします。

8080系

8080系とZ80系の区別は『I/O』誌の記事を参考にしました。i8080/μPD8080AF, μPD8080A, i8085の判別法は一般的なものがあれば利用するつもりでしたが、見当たらなかったのでデータシートを元に独自に書いたものです。

CPU判別法(68編)

2019-07-09 22:59 — asano

現在のCPUではその種類や対応する命令の範囲などを取得する命令(例えばx86系のCPUID命令)がありますが、以前は微妙な挙動の違いなどから判別していました。

自作のUniversal Monitorのソースコードを例に解説してみます。

MC6800系

まずは昨日目処が立ったと書いたMC6800系からです。

この系統はあまり情報が無く(旬な時期にあまりかかわらなかったのも理由です)手持ちのデバイスで試しながら書いたものです。

該当部分のソースは次のようになっています。

Universal Monitor コマンド一覧

2019-06-03 23:55 — asano

テーマ

Universal Monitor Z8の基本機能が現在対応している全プロセッサで使用可能になりました。

前回はコマンドの概要のみを書きましたが、今回はコマンドラインの形式も書いておきます。

コマンドは原則1文字ですが、PIなどのように2文字のものも一部あります。
<addr>,<offset>といった数値パラメータは16進表記で必要以上の桁数を入力した場合は末尾が使用されます。
英字の大文字小文字は区別されません。
コマンドとパラメータの間・パラメータとカンマの間には空白を入れても構いません。ただし行入力バッファは短いので注意してください。

モニタ プログラム

2019-05-23 23:35 — asano

テーマ

カテゴリー

Z8用モニタについて書きましたが、それ以前にもモニタは何度となく書いています。

  1. Z80ボード3号機
    これはオリジナルではなく『トランジスタ技術』1984年6月号掲載のものをベースに移植・拡張したものです。Z80のアセンブリ言語で記述されています。
    他の多くがシリアルポート経由で操作するのに対し、16進テンキーと8桁7セグメントLEDを使用します。

  2. MC68kボード
    これもオリジナルではありません。やはり『トランジスタ技術』1985年4月号掲載のものを移植拡張しました。MC68000のアセンブリ言語で記述されています。後にMC68010用に変更しています。

FDCボード (テスト編 その4)

2019-05-22 20:32 — asano

テーマ

カテゴリー

前回「つづく」とか書いておきながら気づくと一月以上経ってしまいました。

その間、電卓やらROMエミュレータとそれを使ってZ8モニタやらと寄り道をしていたわけですが、このFDCボードについても少しずつですが進めていました。

Universal Monitor Z8

2019-05-20 23:27 — asano

テーマ

カテゴリー

先日のROMエミュレータを2732には去年作ったZ8613ボードにモニタを移植するのが目的でした。

Universal Monitor Z8
とりあえず基本的な機能が動くようになりましたので、試しているスクリーンショットを載せておきます。

まずは0FFF8H~0FFFFH,0000H~0077Hまでのメモリダンプ、次のHコマンドでCが表示されているのでこれはプログラム(コード)メモリ空間です。

次にHRコマンドでレジスタファイル空間に切り替えてから内容を書き換えて確認したところです。上とアドレスが一部重なっていますが、内容がまったく違っていることがわかると思います。

現時点で実装されているコマンドは以下です。