You are here

Macroassembler AS

ASのNanoprocessor対応

1820-1692も例によって適当な開発環境が見当たりません。

というわけでCP-1600のときと同様にASのコードジェネレータを書いてみました。CP-1600同様これも書式は簡単で命令数も少なく、着手してから半日ほどでテストも含めて書けました。

現時点のパッチなどをhttps://electrelic.com/pub/asl-Nanoprocessor-20220616/に置いておきます。

  1. asl-1.42bld223を展開してそのトップディレクトリでpatch -p1 < Nanoprocessor.patchでパッチを当てます。
  2. バイナリファイルt_nano.oritests/t_nanoにコピーします。

後は普通にビルドできるはずです。

ASに新CPU対応を(続編)

ちょうど2年前にASのMN1613対応を行ないましたが、セグメント関係と浮動小数点関係が積み残しになっていました。

今MN1613が話題になっていることでもあり対応方法を考えていたのですが...

先日のUniversal Monitorの拡張を行なう中で他にも機能不足を感じる点が出てきました。

      29/     80F : 5374 7269 6E67      	DC	"String",CR,LF,0
              812 : 000D 000A 0000    

これは意図した結果ではありません。STROUTルーチンはバイト単位で取り出して処理するのでこのように途中に"00"が入るとそこで終了してしまいます。

ASをCP-1600対応に

CP-1600を実際に動かしてみるとなると問題になるものの一つとして開発環境をどうするかというのがあります。

ざっと探してみましたが使えそうなアセンブラが見当たりません。

Cコンパイラなどが無いのはともかく、アセンブラも無いのはさすがに困ります。いくら昔を懐かしむといっても今さらハンドアセンブルはしたくありません。

というわけで以前ASをMN1610対応させたようにCP-1600対応のコードジェネレータを書いてみました。

16ビットワードマシンであることなどMN1610に似ている点もあり、基本的な枠組みはMN1610とほぼ一緒です。

続いて各命令のデコーダを書いていきますが、結論から言うととても楽でした。

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

モニタも動いてこれまでに実装済みのMN1610命令に問題無いことがわかり、時間にも余裕が出てきたので、残りのMN1613拡張命令も一気に実装してしまいました。

MN1613で追加された命令にはパースの面倒なアドレッシングなどは無く、命令の数が多いだけの単純作業に近かったですね。

一段落したので現時点のファイル(asl-patch-20191120.tar_.gz)を添付しておきます。

ビルド方法

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)などは知名度も高いんですけどね。

The Macroassembler AS

以前うまくインストールできずに旧バージョンを入れてしのいでいた「The Macroassembler AS」ですが、公式ページを見に行ったところ数日前に新バージョンが出ていたことと、SBC6800, SBC6809のコードを書き始めるところだったことから最新版にアップデートしました。

前回はさらっと書いたので今回は流れを書いてみます。

私はNetBSD環境で使いたいのでソースコードからビルドすることにします。

まだpkgsrcには入っていないようです。私は野良ビルドしてしまうことが多いので気にしません。

Win32などバイナリの用意されているプラットフォームもあります。

Pages