11
10

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

MacでX1のクロス開発(アセンブラ準備編)

Last updated at Posted at 2015-11-14

開発をするには、Macで動くZ80のアセンブラが必要です。
こちらも情報が少ないのですが、いくつか探した結果、ASxxxxを使うことにしました。
理由は、比較的簡単に使える状態にできたのと、アセンブルした結果をintel HEX形式という比較的平易なフォーマットで出力できるためです。
また、これは、Z80だけでなく色々な8bit CPUのアセンブラがセットになっていますので、他の機種向けの開発にも使えそうです。

ASxxxx の用意

以下の手順で用意します。

  • http://shop-pdp.net/ashtml/asxxxx.htm を開く
  • Get the "ASxxxx Cross Assemblers" をクリック
  • ASxxxx Cross Assemblers Source Code as a zipped file (4578K) をクリックしてダウンロード
  • 解凍し、asxs5p10/asxv5pxx/asxmak/linux/build に移動
  • make
  • asxs5p10/asxv5pxx/asxmak/linux/exe の下に実行ファイルができている
  • asz80,aslink をパスの通ったディレクトリ(/usr/local/bin など)にコピー

その他試してみたアセンブラ

ASxxxx 以外に試してみたものです。

z80asm

homebrew で brew search z80 として出てくるもの。インストールしようとしたがサーバーが反応しませんでした。

gnu binutils

ビルドの仕方がよくわからず断念しました。
./configure --target=z80-unknown-coff
とすればいけそうでしたが、途中で面倒くさくなってきて後回しにして、そのままです。

sdcc

8bit CPU向けのCコンパイラですが、アセンブラも含んでいます。
sdcc-3.5.0-universal-apple-macosx.tar.bz2 を解凍すると、bin/sdasz80 にビルドされたものがあるので、用意するのは一番簡単です。
ちょっと試しましたが、イミディエイトアドレッシングに # をつけるのに違和感があります。(LD A,#0 とか)

X1エミュレータでHello world

まずは、X1エミュレータでプログラムを動かせるかテストをしてみます。
おなじみのHello worldです。

hello.asm
	.area	TEST	(ABS)
	.org	0xe000
	ld	bc,0x2000+40	;;アトリビュートのアドレス
	exx
	ld 	bc,0x3000+40	;;テキストVRAMの2行目のアドレス
	ld 	hl,_msg
_loop:
	ld 	a,(hl)
	or 	a
	jr 	z,_end
	out 	(c),a		;;テキストVRAMに1文字出力
	inc 	bc
	inc 	hl
	exx
	ld 	a,7
	out 	(c),a		;;アトリビュートに出力(文字色を白にする)
	inc 	bc
	exx
	jr 	_loop
_end:
	halt
_msg:
	.ascii	/Hello, world!/	;;出力するメッセージ
	.db	0					;;メッセージの終了

これをアセンブル、リンクします。

asz80 -o hello
aslink -i hello

これで、hello.ihx というintel HEX形式のファイルができます。
が、このままではエミュレータで読み込めません。
ディスクイメージに変換する必要がありますが、適当なツールは見当たらないので、これくらいは自作することにします。(詳細は後述)
見事出来上がったディスクイメージファイルを、エミュレータの仮想ディスクドライブにセットして起動します。

mame64 x1 -flop1 hello.2d

すると・・・
hello.png
1行目はIPLでディスクイメージを読み込んだというメッセージで、2行めがプログラムで出力したメッセージです。
これでようやくプログラム開発の必要最小限の環境が整いました。

11
10
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
11
10

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?