モトローラフリーアセンブラをWIndowsで [8bitマイコン]
68系の開発にモトローラのフリーアセンブラを使用しているが、これはMS-DOS時代のソフト(いや元々はunix系だったのかな?)で今のWindowsでは直接は動かない。ただこのアセンブラはソースも公開されているのでリコンパイルしてWindowsで動くようにしてみる。
さて、ソースは確かAMIGA版のやつがソース付だったと思ったが、今現在AMIGAは動作出来る状態にない。ネットであさるとGithubで難なく見つかった。
https://github.com/JimInCA/motorola-6800-assembler
ただし、公開者が色々手を入れてるみたいで完全なオリジナルではない。
Linuxでmakeできるようになっているが、このソースを利用してWindowsで動くようにしてみる。
(1)Windows Subsystem for Linux
これはLinuxだからそのまんま。
すっぴんのWindows Subsystem for Linuxはgccもmakeも入ってないのでインストールする必要があるが、makeするだけ。
当然だがWindowsのコマンドプロンプトから実行できるわけではない。
(2)コマンドプロンプトからmake
コマンドプロンプト、あるいはPowerShellからmakeできるか?
まずはVisual C++。
makefileをVisualC向けに書き直してみたがでエラー。
gnu系のmakeとnmakeでは書式が違ったかな?
bcc32(C++Builder)でmakeしてもだめ。Borlandのmakeはnmakeと同じだったような気もする。
もう何年(十何年)?もmakefileなんか書いてないし、すっかり忘れているのでこれ以上追求するのはやめ。
(3)C++ Builder
次に(Vsual Studioでもできるが)C++Builderの統合開発環境。
C++Builderを起動し、新規作成→その他→コンソールアプリケーションでプロジェクトを作る。
ターゲットフレームワークなし。
ソースの種類はC、マルチスレッドとプロジェクトソースの指定のチェックをはずす。
プロジェクトグループとグループ所属の空のプロジェクトが作成される。
プロジェクトグループ名はオリジナルのあわせてmotoasmとでもし、プロジェクトはas0(6800用アセンブラ)と変更しておく。
プロジェクトも一つ同時に作られるがプロジェクト名を
プロジェクトのあるフォルダにアセンブラソースを全部コピー。
プロジェクトas0に対して「プロジェクトに追加」でソースを追加。
ソースはdo*.c、table*.cが各CPUの個別ソースでそれ以外は共通。
なのでプロジェクトas0(6800向アセンブラ)ならdo0.c、table0.cとそれ以外を全部追加。
念のためヘッダファイルもプロジェクトに追加。
プロジェクト新規作成時にできたデフォルトのソースとヘッダは削除。
同様にプロジェクトグループに対してプロジェクト(as1,as4,as5,as9,as11)を新規追加していく。
そしてそれぞれのプロジェクトにソース(do*.c,table*.cだけ各個でそれ以外は全部同じものを指定)を追加していく。
それが終了したら全てのプロジェクトをビルド。as0,as1,as4,as5,as9,as11が一気にビルドされる。
ビルドするとヘッダファイル"unistd.h"がないとエラーがでる。
"unistd.h"はunix系依存のヘッダファイル
エラーがでるinclude行をコメントアウトしてリビルドをかけると警告はでるがエラーもなく成功する。
警告はopen,close,read,write,create,lseek。
今は使わない古い関数ですね。
fopen等に変更すればいいはずだが、ソースを色々いじる必要があるので"io.h"で代用。これで警告もなくなる。
今までのソース等いくつかアセンブルさせてみたが問題なくアセンブルできているもよう。
まぁ全てのCPU版を試したわけではないが、とりあえず問題なさそう。
あとは今使ってるROMライタにあわせて、IntelHexをはけるようにできれば…
さて、ソースは確かAMIGA版のやつがソース付だったと思ったが、今現在AMIGAは動作出来る状態にない。ネットであさるとGithubで難なく見つかった。
https://github.com/JimInCA/motorola-6800-assembler
ただし、公開者が色々手を入れてるみたいで完全なオリジナルではない。
Linuxでmakeできるようになっているが、このソースを利用してWindowsで動くようにしてみる。
(1)Windows Subsystem for Linux
これはLinuxだからそのまんま。
すっぴんのWindows Subsystem for Linuxはgccもmakeも入ってないのでインストールする必要があるが、makeするだけ。
当然だがWindowsのコマンドプロンプトから実行できるわけではない。
(2)コマンドプロンプトからmake
コマンドプロンプト、あるいはPowerShellからmakeできるか?
まずはVisual C++。
makefileをVisualC向けに書き直してみたがでエラー。
gnu系のmakeとnmakeでは書式が違ったかな?
bcc32(C++Builder)でmakeしてもだめ。Borlandのmakeはnmakeと同じだったような気もする。
もう何年(十何年)?もmakefileなんか書いてないし、すっかり忘れているのでこれ以上追求するのはやめ。
(3)C++ Builder
次に(Vsual Studioでもできるが)C++Builderの統合開発環境。
C++Builderを起動し、新規作成→その他→コンソールアプリケーションでプロジェクトを作る。
ターゲットフレームワークなし。
ソースの種類はC、マルチスレッドとプロジェクトソースの指定のチェックをはずす。
プロジェクトグループとグループ所属の空のプロジェクトが作成される。
プロジェクトグループ名はオリジナルのあわせてmotoasmとでもし、プロジェクトはas0(6800用アセンブラ)と変更しておく。
プロジェクトも一つ同時に作られるがプロジェクト名を
プロジェクトのあるフォルダにアセンブラソースを全部コピー。
プロジェクトas0に対して「プロジェクトに追加」でソースを追加。
ソースはdo*.c、table*.cが各CPUの個別ソースでそれ以外は共通。
なのでプロジェクトas0(6800向アセンブラ)ならdo0.c、table0.cとそれ以外を全部追加。
念のためヘッダファイルもプロジェクトに追加。
プロジェクト新規作成時にできたデフォルトのソースとヘッダは削除。
同様にプロジェクトグループに対してプロジェクト(as1,as4,as5,as9,as11)を新規追加していく。
そしてそれぞれのプロジェクトにソース(do*.c,table*.cだけ各個でそれ以外は全部同じものを指定)を追加していく。
それが終了したら全てのプロジェクトをビルド。as0,as1,as4,as5,as9,as11が一気にビルドされる。
ビルドするとヘッダファイル"unistd.h"がないとエラーがでる。
"unistd.h"はunix系依存のヘッダファイル
エラーがでるinclude行をコメントアウトしてリビルドをかけると警告はでるがエラーもなく成功する。
警告はopen,close,read,write,create,lseek。
今は使わない古い関数ですね。
fopen等に変更すればいいはずだが、ソースを色々いじる必要があるので"io.h"で代用。これで警告もなくなる。
今までのソース等いくつかアセンブルさせてみたが問題なくアセンブルできているもよう。
まぁ全てのCPU版を試したわけではないが、とりあえず問題なさそう。
あとは今使ってるROMライタにあわせて、IntelHexをはけるようにできれば…