68000アセンブラ環境を無料でパソコン上に作る

【概要】本文書では、Linux上に68000アセンブラの実験環境を構築する方法を解説する。Linuxのインストールから、各種ツールやライブラリの整備、68000開発環境(クロスコンパイラ、エミュレータBSVC)の導入、RTEMSの設定までを順を追って説明する。Red Hat Linux 9を例に、rpmパッケージやソースファイルからのインストール手順を示す。

【目次】

  1. はじめに
  2. 使用するソフトウェア
  3. Linuxのインストール
  4. 各種ツール、ライブラリの整備
  5. 68000開発環境
  6. RTEMS環境の構築

2003年8月6日

はじめに

本文書では、68000アセンブラの実験環境をLinux上に構築する方法を解説する。対象とするLinuxディストリビューションはRed Hat Linux 9である。FreeBSDを使用する場合は、「FreeBSD上で68000アセンブラの実験環境を作る」を参照のこと。

本文書に記載されている内容、および本文書を参照してダウンロードしたプログラムの使用によって生じたいかなる結果に対しても、作者は責任を負わない。利用は個人の責任において行うこと

使用するソフトウェア

本セクションでは、68000アセンブラ環境の構築に必要なソフトウェアの全体像を示す。各ソフトウェアの詳細なインストール手順は、以降のセクションで説明する。

基盤ソフトウェア

68000エミュレータ

エミュレータとは、ある機種のコンピュータを別のコンピュータ上で模擬的に動作させるソフトウェアである。BSVCは、68000プロセッサの動作をPC上で再現する。

必要なファイルは、http://www.freebsd.org/ja/ports/index.htmlで調べることができる。検索ボックスにbsvcと入力すると、BSVCに必要なファイルが表示される。

68000クロスコンパイラ

クロスコンパイラとは、実行環境とは異なるプラットフォーム向けの実行ファイルを生成するコンパイラである。ここでは、Linux PC上で68000プロセッサ向けのコードを生成するために使用する。

参考Webページ:

日本語対応ライブラリ

BSVCの画面表示を日本語化するために必要なライブラリである。

参考Webページ:

その他の必要ソフトウェア

68000アセンブラ実験専用ファイル

Linuxのインストール

Linuxのインストール、およびWindowsなど他のOSとの共存については、Linuxに関するドキュメント、Webサイト、書籍等を参考にして、個人の責任において行うこと。

インストール時の注意点

以下のソフトウェアが必要である。Linuxのインストーラでは、インストールするソフトウェアを選択できる。下記のソフトウェアをインストール対象として選択すること。

上記のソフトウェアは、日本語対応版を導入すると便利である。日本の企業や団体が配布しているLinuxディストリビューションであれば、日本語に対応している(Red Hat Linux バージョン9では日本語が使用可能であった)。

各種ツール、ライブラリの整備

本セクションでは、68000開発環境をインストールする前に必要な、前提ソフトウェアのインストール方法を説明する。68000開発環境(コンパイラ等)とエミュレータをインストールする前に、本セクションの作業を完了させること

必要なソフトウェア一覧

パッケージファイルについて

Linuxでは、ソフトウェアを「パッケージ」という単位で管理する。Red Hat系のLinuxでは、rpm形式のパッケージファイル(拡張子.rpm)を使用してソフトウェアをインストールする。

rpmパッケージファイルの選択

rpmパッケージファイルは、インストールされているOSに適合するものを選択する。Red Hat Linux 9の場合は*.i386.rpm、*.i586.rpm、*.i686.rpmなどが該当する。

ダウンロード元

rpmパッケージファイルは、以下のサイトからダウンロードできる。

http://fr2.rpmfind.net/linux/RPM/index.html

注意: ダウンロード時は、ソースファイル(*.src.rpm)ではないものを選択すること。*.src.rpmはrpmコマンドだけではインストールできない。

インストール方法

ダウンロードしたディレクトリで、以下のコマンドを実行する。

[root@localhost root]# rpm -i <パッケージファイル>

実行例:

[root@localhost guest]# rpm -i imake-4.3.99.903-5.i686.rpm

依存関係エラーへの対処

一部のソフトウェアは、他のソフトウェアが事前にインストールされている必要がある。以下のようなエラーが表示された場合は、必要なソフトウェアを先にインストールする。

[guest@localhost guest]$ rpm -i autoconf-2.59-2.2.0.ix86-debian3.0-openpkg.rpm
警告: autoconf-2.59-2.2.0.ix86-debian3.0-openpkg.rpm: V3 DSA signature: NOKEY, key ID 63c4cb9f
エラー: Failed dependencies:
        OpenPKG is needed by autoconf-2.59-2.2.0
        openpkg >= 2.2.0 is needed by autoconf-2.59-2.2.0

2つのソフトウェアが互いに依存している場合(AにはBが必要で、BにはAが必要な場合)は、--nodepsオプションを付けて実行する。

[root@localhost root]# rpm -i --nodeps imake-4.3.99.903-5.i686.rpm

ファイルの展開時に既存ファイルとの競合でエラーが発生する場合は、--replacefilesオプションを付けて実行する。

[root@localhost root]# rpm -i --replacefiles imake-4.3.99.903-5.i686.rpm

libiconvのダウンロード元

Red Hat Linux version 9用のlibiconvは、以下のURLからダウンロードできる。このサイトにはlibiconv以外のファイルは存在しない。

http://www.samba.gr.jp/pub/samba-3.0-ja/RPMS/RedHat9/LIBICONV/

インストール済みソフトウェアの確認

Linuxのインストール時に自動でインストールされるソフトウェアがある。まずインストール状況を確認し、インストールされていないものだけを手動でインストールする。

インストール状況を確認するには、「rpm -qi <パッケージ名>」を実行する。以下のスクリプトで複数のソフトウェアを一括確認できる。

LANG=C
PRESOFTS="expat freetype fontconfig libgcj gettext libiconv newlib rpm apt autoconf automake bash binutils bison checkinstall flex gdb imake libtool make patch rpmbuild texinfo shellutils m4 perl g++ tcl tk emacs"
echo "Software List"
for i in `echo $PRESOFTS`;
  do ( rpm -qi $i | grep "Name" | awk '{print $3}'; rpm -qi $i | grep   "Version" | awk '{print "  " $3}'  );
done

Cコンパイラのインストール

以降の作業にはCコンパイラ(gcc)が必要である。「rpm -qi gcc」でインストール状況を確認し、インストールされていない場合は、flex、bison、libiconv、gccをパッケージファイルでインストールする。

flex、bison、libiconv、gccのRPMファイルをhttp://fr2.rpmfind.net/linux/RPM/index.htmlなどから入手し、「rpm -i <パッケージファイル名>」でインストールする。

以下のシェルスクリプトで一連の作業を自動化できる。これはRed Hat Linux 9用である。他のLinuxディストリビューションで使用する場合は、DOWNLOAD_URL_SOFT1、DOWNLOAD_URL_LIBICONV、および各rpmファイル名を適切に変更すること。

#
# 設定
#

# RedHat Linux 9 用の設定です
# PRESOFT_URL1, PRESOFT_URL_LIBICONV, PRESOFTS_LIST1, PRESOFT_LIBICONV を適切に設定して下さい。残りはそのままでも動くと思います

DOWNLOAD_URL_SOFT1=https://www.kkaneko.jp/computer/linux/redhat/9/en/os/i386/RedHat/RPMS
DOWNLOAD_URL_LIBICONV=https://www.kkaneko.jp/computer/linux/redhat/9/en/os/i386/RedHat/RPMS
# DOWNLOAD_URL_SOFT1=ftp://fr2.rpmfind.net/linux/redhat/9/en/os/i386/RedHat/RPMS
# DOWNLOAD_URL_LIBICONV=http://www.samba.gr.jp/pub/samba-3.0-ja/RPMS/RedHat9/LIBICONV/

MYRPM_FLEX=flex-2.5.4a-29.i386.rpm
MYRPM_BISON=bison-1.35-6.i386.rpm
MYRPM_LIBICONV=libiconv-1.8-1.i386.rpm
MYRPM_GCC=gcc-3.2.2-5.i386.rpm

#
# 作業手順
#

LANG=C
cd /tmp

# RPM ファイルをダウンロード
wget -S --passive-ftp $DOWNLOAD_URL_SOFT1/$MYRPM_FLEX
wget -S --passive-ftp $DOWNLOAD_URL_SOFT1/$MYRPM_BISON
wget -S --passive-ftp $DOWNLOAD_URL_LIBICONV/$MYRPM_LIBICONV
wget -S --passive-ftp $DOWNLOAD_URL_SOFT1/$MYRPM_GCC

# インストール済のソフトを確認
rpm -qi `basename $MYRPM_FLEX .i386.rpm`     | grep "Name" | awk '{print $3}'
rpm -qi `basename $MYRPM_FLEX .i386.rpm`     | grep   "Version" | awk '{print "  " $3}'
rpm -qi `basename $MYRPM_BISON .i386.rpm`    | grep "Name" | awk '{print $3}'
rpm -qi `basename $MYRPM_BISON .i386.rpm`    | grep   "Version" | awk '{print "  " $3}'
rpm -qi `basename $MYRPM_LIBICONV .i386.rpm` | grep "Name" | awk '{print $3}'
rpm -qi `basename $MYRPM_LIBICONV .i386.rpm` | grep   "Version" | awk '{print "  " $3}'
rpm -qi `basename $MYRPM_GCC .i386.rpm`      | grep "Name" | awk '{print $3}'
rpm -qi `basename $MYRPM_GCC .i386.rpm`      | grep   "Version" | awk '{print "  " $3}'

# rpm -i でインストール
rpm -i $MYRPM_FLEX
rpm -i $MYRPM_BISON
rpm -i $MYRPM_LIBICONV
rpm -i $MYRPM_GCC

基本ソフトウェアのパッケージインストール

他のソフトウェアもパッケージファイルでインストールする。RPMファイルを入手し、「rpm -i <パッケージファイル名>」でインストールする。

freetype、fontconfig、libgcj、rpm、bash、m4、emacs、emacs-el、emacs-leim、automake、autoconf、binutils、gettext、libtool、make、texinfo、gdb、perl、tcl、tkは、http://fr2.rpmfind.net/linux/RPM/index.htmlなどで入手できる。これ以外のソフトウェアについては、後述する方法でインストールする。

以下のシェルスクリプトで一連の作業を自動化できる。これはRed Hat Linux 9用である。他のLinuxディストリビューションで使用する場合は、PRESOFT_URL2、PRESOFTS_LIST2を適切に変更すること。

LANG=C

# PRESOFT_URL2, PRESOFTS_LIST2 を適切に設定して下さい。残りはそのままでも動くと思います

# RedHat Linux 9
PRESOFT_URL2=https://www.kkaneko.jp/computer/linux/redhat/9/en/os/i386/RedHat/RPMS
# PRESOFT_URL2=ftp://fr2.rpmfind.net/linux/redhat/9/en/os/i386/RedHat/RPMS
PRESOFTS_LIST2="expat-1.95.5-2.i386.rpm \
freetype-2.1.3-6.i386.rpm \
fontconfig-2.1-9.i386.rpm \
libgcj-3.2.2-5.i386.rpm \
rpm-4.2-0.69.i386.rpm \
bash-2.05b-20.i386.rpm \
m4-1.4.1-13.i386.rpm \
emacs-21.2-33.i386.rpm \
emacs-el-21.2-33.i386.rpm \
emacs-leim-21.2-33.i386.rpm \
automake-1.6.3-5.noarch.rpm \
autoconf-2.57-3.noarch.rpm \
binutils-2.13.90.0.18-9.i386.rpm \
gettext-0.11.4-7.i386.rpm \
libtool-1.4.3-5.i386.rpm \
make-3.79.1-17.i386.rpm \
patch-2.5.4-16.i386.rpm \
rpm-build-4.2-0.69.i386.rpm \
texinfo-4.3-5.i386.rpm \
gdb-5.3post-0.20021129.18.i386.rpm \
perl-5.8.0-88.i386.rpm \
tcl-8.3.5-88.i386.rpm \
tk-8.3.5-88.i386.rpm"

cd /tmp

# RPM ファイルをダウンロード
echo "--------------------------------"
echo Download...
for i in `echo $PRESOFTS_LIST2`;
  do ( wget -S --passive-ftp $PRESOFT_URL2/$i );
done

echo "--------------------------------"
echo Remove Old Version of Software Before Installation
for i in `echo $PRESOFTS_LIST2`;
# まずは、現在のソフトウェアリストを表示
  do ( rpm -qi `basename $i .tar.gz` | grep "Name" | awk '{print $3}'; rpm -qi `basename $i .tar.gz` | grep   "Version" | awk '{print "  " $3}' );
done

echo "--------------------------------"
echo Install...
for i in `echo $PRESOFTS_LIST2`;
# rpm -i でインストール
  do ( rpm -i $i )
done

echo "--------------------------------"
echo Software List After Installation
for i in `echo $PRESOFTS_LIST2`;
# 最後に、現在のソフトウェアリストを表示
  do ( rpm -qi `basename $i .tar.gz` | grep "Name" | awk '{print $3}'; rpm -qi `basename $i .tar.gz` | grep   "Version" | awk '{print "  " $3}'  );
done

checkinstallのインストール

checkinstallは、「make install」でインストールするソフトウェアを、rpmパッケージとして管理可能にするツールである。checkinstallを使用すると、ソースからビルドしたソフトウェアもrpmコマンドでアンインストールできるようになる。

前提条件: checkinstallの動作にはrpmbuildが必要である。checkinstallが正常に動作しない場合は、「rpm -qi rpmbuild」でrpmbuildがインストールされているか確認すること。

参考サイト: http://www.atmarkit.co.jp/flinux/rensai/linuxtips/530mkrpmfs.html

インストール手順

  1. 以下のサイトからcheckinstall-1.5.3-1.i386.rpmをダウンロードする。
    https://asic-linux.com.mx/~izto/checkinstall/download.php
    
  2. 以下のコマンドでインストールする。
    rpm -i checkinstall-1.5.3-1.i386.rpm
    rpm -qi checkinstall
    

checkinstallの使用例

checkinstallを使用してpkgconfigをインストールする例を示す。通常の「./configure」「make」「make install」の手順のうち、「make install」の代わりに「checkinstall」を実行する。

-----------------------------------------------------------------------
# tar -xvzf pkgconfig-0.15.0.tar.gz
# cd pkgconfig-0.15.0
# ./configure
# make
# checkinstall

   (省略)
The package documentation directory ./doc-pak does not exist.
Should I create a default set of package docs?  [y]: y


   (省略)
Please choose the packaging method you want to use.
Slackware [S], RPM [R] or Debian [D]? R

Please write a description for the package.
End your description with an empty line or EOF.
>>

This package will be built according to these values:

1 -  Summary: [ Package created with checkinstall 1.5.3 ]
2 -  Name:    [ pkgconfig ]
3 -  Version: [ 0.15.0 ]
4 -  Release: [ 1 ]
5 -  License: [ GPL ]
6 -  Group:   [ Applications/System ]
7 -  Architecture: [ i386 ]
8 -  Source location: [ pkgconfig-0.15.0 ]
9 -  Alternate source location: [  ]
10 - Provides: [ pkgconfig ]

Enter a number to change any of them or press ENTER to continue:
Enterキーを押す

   (省略)
**********************************************************************

 Done. The new package has been installed and saved to
 /usr/src/redhat/RPMS/i386/pkgconfig-0.15.0-1.i386.rpm

 You can remove it from your system anytime using:

      rpm -e pkgconfig-0.15.0-1

**********************************************************************

# rpm -qi pkgconfig
Name        : pkgconfig                    Relocations: (not relocateable)
Version     : 0.15.0                            Vendor: (none)
Release     : 1                             Build Date: 2004年12月15日 11時20分08秒
Install Date: 2004年12月15日 11時20分09秒      Build Host: testlinux.db.is.kyushu-u.ac.jp
Group       : 開発/ツール                   Source RPM: pkgconfig-0.15.0-1.src.rpm
Size        : 136595                           License: GPL
Signature   : (none)
Packager    : checkinstall-1.5.3
Summary     : コンパイルオプションを決定するツール
Description :
pkgconfigツールはコンパイルオプションを決定する。必須の各ライブラリについて、
設定ファイルを読み込み、必要なコンパイラフラグとリンカフラグを出力する。
-----------------------------------------------------------------------

注意: 「make install_packages」など、「make install」以外のコマンドでインストールするソフトウェアの場合は、以下のように実行する。

# checkinstall make install_packages

詳細はREADMEを参照のこと。

ソースファイルからのインストール

newlib、shellutils、textutilsについては、Red Hat Linux 9用のパッケージファイルが存在しない。これらはソースファイルをダウンロードしてコンパイルし、checkinstallを使用してインストールする。

スクリプト実行時の注意: スクリプト実行中に以下の質問が表示される。

LANG=C

PRESOFT_SRC_URL=https://www.kkaneko.jp/computer/src/toollib
PRESOFT_GNU_SRC_URL=https://www.kkaneko.jp/computer/src/gnu
PRESOFTS_SRC_LIST="newlib-1.12.0.tar.gz "
PRESOFTS_GNU_SRC_LIST="textutils-2.1.tar.gz shtool-2.0.1.tar.gz"

cd /tmp

# ソースファイルをダウンロード
echo "--------------------------------"
echo Download...
for i in `echo $PRESOFTS_SRC_LIST`;
  do ( wget -S --passive-ftp $PRESOFT_SRC_URL/$i );
done
for i in `echo $PRESOFTS_GNU_SRC_LIST`;
  do ( wget -S --passive-ftp $PRESOFT_GNU_SRC_URL/$i );
done


echo "--------------------------------"
echo Remove Old Version of Software Before Installation
for i in `echo $PRESOFTS_SRC_LIST $PRESOFTS_GNU_SRC_LIST`;
# まずは、現在のソフトウェアリストを表示
  do ( rpm -qi `basename $i .tar.gz` | grep "Name" | awk '{print $3}'; rpm -qi `basename $i .tar.gz` | grep   "Version" | awk '{print "  " $3}' );
done

for i in `echo $PRESOFTS_SRC_LIST $PRESOFTS_GNU_SRC_LIST`;
# rpm -e で強制的に削除
  do ( echo "removing " `basename $i .tar.gz`; rpm -e `basename $i .tar.gz`  );
done

# インストール

#      しばらくすると、以下の質問がでるので、yと答える
#        The package documentation directory ./doc-pak does not exist.
#        Should I create a default set of package docs?  [y]: y
#      しばらくすると、以下の質問がでるので、Rと答える
#        Please choose the packaging method you want to use.
#        Slackware [S], RPM [R] or Debian [D]? R
#      しばらくすると、以下の表示がでるのでEnterをおす
#        Enter a number to change any of them or press ENTER to continue:

cd /tmp
tar -xvzf newlib-1.12.0.tar.gz
cd newlib-1.12.0
./configure
./etc/configure
# -R : Build a RPM package
/usr/local/sbin/checkinstall -R -y

cd /tmp
tar -xvzf textutils-2.1.tar.gz
cd textutils-2.1
./configure
/usr/local/sbin/checkinstall -R -y

cd /tmp
tar -xvzf shtool-2.0.1
cd shtool-2.0.1
./configure
./etc/configure
/usr/local/sbin/checkinstall -R -y


echo "--------------------------------"
echo Software List After Installation
for i in `echo $PRESOFTS_SRC_LIST $PRESOFTS_GNU_SRC_LIST`;
# 最後に、現在のソフトウェアリストを表示
  do ( rpm -qi `basename $i .tar.gz` | grep "Name" | awk '{print $3}'; rpm -qi `basename $i .tar.gz` | grep   "Version" | awk '{print "  " $3}'  );
done

ここまでで、前提ソフトウェアのインストールは完了である。

動作確認

Tcl、Tkが日本語版であるかを確認するには、プログラムで日本語を表示し、正しく表示されるかを確認する。

68000開発環境

本セクションでは、68000クロスコンパイラとエミュレータをインストールする。これにより、Linux PC上で68000アセンブラプログラムの作成と実行が可能になる。

クロスコンパイラのインストール

以下のサイトから必要なファイルをダウンロードし、rpmコマンドでインストールする。

ftp://ftp.rtems.com/pub/rtems/linux/redhat/7.3/i386/rpms/rtems-4.6

ダウンロードするファイル:

rtems-4.6-m68k-rtems-gdb-5.2-1.i686.rpm
rtems-4.6-m68k-rtems-gcc-gcc3.2.3newlib1.11.0-4.i686.rpm
rtems-4.6-m68k-rtems-c++-gcc3.2.3newlib1.11.0-4.i686.rpm
rtems-4.6-m68k-rtems-binutils-2.13.2.1-2.i686.rpm
rtems-4.6-automake-rtems-1.7.2-2.noarch.rpm
rtems-4.6-autoconf-rtems-2.59-0.noarch.rpm
rtems-4.6-apt-conf-0.0-0.noarch.rpm

エミュレータBSVCのインストール

68000エミュレータBSVCをインストールする。BSVCにより、68000プロセッサの動作をPC上でシミュレートできる。

参考FTPサイト:

専用スクリプトのインストール

68000アセンブラプログラムをエミュレータで動作させるための専用スクリプトファイルを用意している。これらをインストールすると、m68k-asコマンド(アセンブル用)とm68k-emuコマンド(エミュレータ起動用)が使用可能になる。

注意: 利用は各自の責任で行うこと。

まず、スクリプトファイルを入手して展開する。

m68k-5.0.tgz を入手する
(https://www.kkaneko.jp/~kaneko/as/jikken/m68k-5.0.tgz)
# cd ~/
# tar zxvfp m68k-5.0.tgz

次にインストールを実行する。

# cd m68k-5.0
# ./install.sh

このスクリプトは、libディレクトリ以下を/usr/local/lib/soft-jikkenに、binディレクトリ以下を/usr/local/binにコピーする。

動作確認: xterm(またはkterm)のウィンドウを開き直して、m68k-asおよびm68k-emuが実行できることを確認する。

RTEMS環境の構築

本セクションでは、リアルタイムOS「RTEMS」の環境を構築する。RTEMSは、組み込みシステム向けのリアルタイムオペレーティングシステムであり、68000プロセッサをターゲットとした開発に使用できる。

必要なソフトウェアのインストール

rpmコマンドを使用して、以下のソフトウェアをインストールする。必要なソフトウェアは、以下のページで検索できる。

http://www.rtems.com/down.html

検索条件:

インストールするファイル:

rtems-4.6-rtems-base-binutils-2.13.2.1-2.i686.rpm
rtems-4.6-m68k-rtems-binutils-2.13.2.1-2.i686.rpm
rtems-4.6-rtems-base-gcc-gcc3.2.3newlib1.11.0-4.i386.rpm
rtems-4.6-m68k-rtems-gcc-gcc3.2.3newlib1.11.0-4.i686.rpm
rtems-4.6-m68k-rtems-c++-gcc3.2.3newlib1.11.0-4.i686.rpm
rtems-4.6-rtems-base-gdb-5.2-1.i686.rpm
rtems-4.6-m68k-rtems-gdb-5.2-1.i686.rpm

ソースコードのダウンロードと解凍

RTEMSソースコードとサンプルプログラムを以下のサイトからダウンロードし、/home/guestに配置する。

ftp://ftp.rtems.com/pub/rtems/4.6.2/rtems-4.6.2.tar.bz2
ftp://ftp.rtems.com/pub/rtems/4.6.2/examples-4.6.2.tar.bz2

以下のコマンドで解凍する。

# cd /tmp/tools
# tar xjf /home/guest/rtems-4.6.2.tar.bz2

gccの動作確認

クロスコンパイラが正常に動作するか確認する。まず、環境変数PATHを設定する。

# setenv PATH /opt/rtems-4.6/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/usr/X11R6/bin:/root/bin

適当なCプログラム(例: f.c)を作成し、コンパイルできるかテストする。

# m68k-rtems-gcc -v -S f.c
# m68k-rtems-gcc -v -c f.c

確認方法: f.sとf.oが生成されていれば成功である。

RTEMSのビルドとインストール

# mkdir /tmp/tools/build-rtems
# cd /tmp/tools/build-rtems
# ../rtems-4.6.2/configure --target=m68k-rtems --prefix=/opt/rtems-4.6
# make all install

「--prefix=/opt/rtems-4.6」を指定しているのは、前の手順でインストールしたコマンド(m68k-rtems-gccなど)がこのディレクトリに存在するためである。

参考情報

参考Webページ:

参考FTPサイト: