アークピットのアセンブラは、使用する実行プログラムは個別になっていますが、6502 だけではなく、6800,6809,8080,Z80やその他の多種のマイクロプロセッサに対応しています。

使用者にもよるのでしょうが、私にとってはくせのない使いやすアセンブラであり、特に短いコードでは、どのプロセッサでもアークピットのアセンブラを使用しています。

アークピットの主要なものを以下に示します。

  • X6502.EXE: 6502用アセンブラ
  • X6801.EXE: 6800,6803用アセンブラ
  • X6809.EXE 6809用アセンブラ
  • XZ80.EXE: Z80用アセンブラ

癖がないといいましたが、ちょっとだけ残念に思っている点が2つだけあります。

  • オペランドを記述する際に、スペースを挟んでしまうと、それ以降がコメントとみなされてしまう
    • 例えば、FCB等でデータを列挙する際にカンマの後にスペースをおいて列挙すると、スペース以降がコメントとして捨てられてしまい、エラーも出ないので深刻なバグになる
  • xX6502.EXE は 65C02で追加された命令セットに対応していない

アークピットのアセンブラのインストール

アークピットのクロスアセンブラはWEBページから自由にダウンロードでき、無償で使用できることがうたわれています。

ところが。。。

最近までアークピットのホームページからダウンロードできていたのですが、気が付くと、アークピットのホームページにアクセスできなくなっていました。

しかしながら、アークピットとの関係はよくわかりませんが、以下のURLでアークピットのWEBページが保全されており、ありがたいことにクロスアセンブラもダウンロードできる状態です。

アークピットのクロスアセンブラは、対応するすべてのプロセッサ用のバイナリが一つの圧縮ファイルxasm02.lzhにまとめられており、一括してダウンロードすることができます。

この圧縮ファイルを解凍するとxasm02というフォルダに展開されます。そのフォルダをアクセスしやすい場所にドラッグアンドドロップで解凍・コピーしてやれば、それでインストールは終了です。

この文書中では、xasm02をXASMに変更して以下のパスに置かれたものとして説明を行っています。

  • C:\XENESIS\XASM

アークピットのクロスアセンブラは、正確にはWindows用ではなくMS-DOS用で、Windowsで動かすためには、MS-DOSのエミュレータが必要になります。

MS-DOSエミュレータには以下のソフトウェアを使うことができます。

関連ファイルがまとめられた圧縮ファイルは、msdos.7zという名前でダウンロードできます。

拡張子が7zとなっている圧縮ファイルは、以下のWEBページで公開されている7ZIPで解凍することができます。7ZIPでは、ZipやLzhの圧縮ファイルも解凍することができます。

msdos.7zを解凍すると、\verb+[msdos\binary\i86_x64]+フォルダの中に、msdos.exe が格納されているので、アークピットのアセンブラと同じXASMフォルダにおいてください。

X6502.exeによるプログラムのアセンブル

「X6502用 echo.asm」に示すecho.asmを例としてアセンブルの方法を示します。

図\ref{fig:asm-echo-tma}に示したThe Macro Assembler ASのソースファイルとほぼ同じですが、ソースファイル中ごろのORG $0270の下の、STARTアドレスの記述用の疑似命令がDWとなっています。

アセンブラごとに細かな違いがあるので、異なるアセンブラを使用する場合には注意が必要です。

このプログラムではThe Macro Assembler ASとの違いがはここだけですが、大きなプログラムを書く場合には、さらにいろいろな違いがあるので、参考資料をよく確認する必要があります。

; MONITOR I/O Routines
WSTART	  EQU	$FF83
CONOUTLF EQU	$FF8F
CONIN	   EQU	$FF98
; Constants
CTRLC    EQU $03
; START ADDRESS SETTING for Universal Monitor
         ORG	$02F0	; Universal Monitor REG:PC
         DW	START	; for X6502
;        FDB	START	; for ASW: The Macro Assembler AS
; エコープログラム
         ORG $0300	; プログラムの開始位置
START    JSR CONIN
         CMP #CTRLC
         BEQ WEXIT
         JSR CONOUTLF
         JMP START
WEXIT    JMP	WSTART

X6502用 echo.asm

X6502.exeでプログラムを手軽にアセンブルするためのバッチファイルasm6502.batを「X6502の asm6502.bat」に示します。

このバッチファイルでは、アセンブルした結果のSレコードファイルと、リストファイルが得られます。

PATH=C:\XENESIS\XASM
msdos x6502 /LS %1.ASM,%1.SREC,%1.LST;

X6502の asm6502.bat

生成されたSレコードファイルの内容を「X6502の echo.SREC」に示します。実行コードは同じですが、先の他のアセンブラが出力したSレコード形式と異なっていますね。

このファイルにも、Universal Monitor 用の実行開始アドレスの指定が埋め込まれているので、6502-COREにロードしたら、単にGコマンドを入力するだけで実行できます。

S10502F0000305
S11303002098FFC903F006208FFF4C00034C80FFA8
S9030000FC

X6502の echo.SREC