Cygwinを使ったFuzix v0.3のビルド
2019年11月9日
Cygwin上でも、2019年11月現在最新版のver 0.3のビルドができる事を確認した。Cygwinには、予め次のものをインストールしてから作業を行なった。
SDCC-3.9.0のビルドとインストール
Fuzix ver 0.3のビルドは、SDCC-3.6.0やそれ以前のものではうまく行かない。2019年現在の最新版の3.9.0を使う必要があった。ただし、以前も書いたように、デフォルトのSDCCではKernelのビルドができないので、パッチを当てなければならない。用意されているパッチは3.5.0用のものなので、3.5.0と3.9.0のソースコードを比較して、パッチを作り直した。パッチファイルのZIPアーカイブ「sdcc-3.9.0.patch.zip」はここからダウンロードできる。
SDCC-3.9.0のソースコードを、ここからダウンロードし、展開する。先の通りダウンロードしたパッチファイルも解凍して「sdcc-3.9.0.patch」を同じディレクトリに置いて、適応する。三回ファイル名を聞かれるので、「sdcc-3.9.0/src/z80/gen.c」「sdcc-3.9.0/src/z80/main.c」「sdcc-3.9.0/src/z80/z80.h」を入力する。
configureし、ビルドする。無事に終われば、インストールする。
Fuzix v0.3のビルド
Fuzixソースコードを取得し、ver 0.3のものに巻き戻す。Makefileを編集する。
「TARGET=z80pack」のところ、
「TARGET=tomssbc-rom」とする。
私の環境では、このままmakeすると、「find.c」のビルドでエラーが出て停止した。よく分からないので、このファイルのビルドをスキップする事にした。「Applications/MWC/cmd/Makefile.z80」の8行目で、「find.c」を削除し、次のように書き換えた。
全て準備が整ったので、いよいよビルドする。
ただし、アプリケーションはビルドできる事を確認するだけでオブジェクトは使わないので、アプリケーションのビルドが始まったらキャンセルし、「make kernel」としてカーネルのビルドを最後に行なうか、Makefileの72行目を「all: stand ltools libs kernel」として(appsを削除)、アプリケーションのビルドをスキップしても良いかも知れない。その場合は、上記の「Makefile.z80」の編集は必要ない。
Hello Worldプログラムをビルドしてみる
以上のプロセスが無事終了すれば、Fuzix ver 0.3用のアプリケーションを作製する環境が整った事になる。Hello Worldプログラムを作製してみた。
hello.c
Makefile
「make」すれば「hello」というファイルができるので、UCPによりディスクイメージに取り込めば、実行できる。
これで、Fuzixのカーネルを改変したりアプリケーションを開発したりする環境が、全て整った事になる。
gcc-core gcc-g++ make patch bison flex libboost-devel git zlib zlib-devel
SDCC-3.9.0のビルドとインストール
Fuzix ver 0.3のビルドは、SDCC-3.6.0やそれ以前のものではうまく行かない。2019年現在の最新版の3.9.0を使う必要があった。ただし、以前も書いたように、デフォルトのSDCCではKernelのビルドができないので、パッチを当てなければならない。用意されているパッチは3.5.0用のものなので、3.5.0と3.9.0のソースコードを比較して、パッチを作り直した。パッチファイルのZIPアーカイブ「sdcc-3.9.0.patch.zip」はここからダウンロードできる。
SDCC-3.9.0のソースコードを、ここからダウンロードし、展開する。先の通りダウンロードしたパッチファイルも解凍して「sdcc-3.9.0.patch」を同じディレクトリに置いて、適応する。三回ファイル名を聞かれるので、「sdcc-3.9.0/src/z80/gen.c」「sdcc-3.9.0/src/z80/main.c」「sdcc-3.9.0/src/z80/z80.h」を入力する。
tar xjvf sdcc-src-3.9.0.tar.bz2 patch<sdcc-3.9.0.patch
configureし、ビルドする。無事に終われば、インストールする。
cd sdcc-3.9.0 ./configure --prefix=/usr --disable-pic14-port --disable-pic16-port --disable-mcs51-port --disable-r2k-port --disable-r3ka-port --disable-tlcs90-port--disable-ds390-port --disable-ds400-port --disable-hc08-port --disable-s08-port --disable-stm8-port --disable-ucsim make make install
Fuzix v0.3のビルド
Fuzixソースコードを取得し、ver 0.3のものに巻き戻す。Makefileを編集する。
「TARGET=z80pack」のところ、
「TARGET=tomssbc-rom」とする。
git clone https://github.com/EtchedPixels/FUZIX.git cd FUZIX git checkout cacbe5238588d352768ab95951c46d09879ba310 (Makefileを編集)
私の環境では、このままmakeすると、「find.c」のビルドでエラーが出て停止した。よく分からないので、このファイルのビルドをスキップする事にした。「Applications/MWC/cmd/Makefile.z80」の8行目で、「find.c」を削除し、次のように書き換えた。
SRCS = ac.c almanac.c at.c col.c cron.c deroff.c du.c ed.c make.c \ moo.c pr.c tar.c ttt.c units.c
全て準備が整ったので、いよいよビルドする。
make
ただし、アプリケーションはビルドできる事を確認するだけでオブジェクトは使わないので、アプリケーションのビルドが始まったらキャンセルし、「make kernel」としてカーネルのビルドを最後に行なうか、Makefileの72行目を「all: stand ltools libs kernel」として(appsを削除)、アプリケーションのビルドをスキップしても良いかも知れない。その場合は、上記の「Makefile.z80」の編集は必要ない。
Hello Worldプログラムをビルドしてみる
以上のプロセスが無事終了すれば、Fuzix ver 0.3用のアプリケーションを作製する環境が整った事になる。Hello Worldプログラムを作製してみた。
hello.c
#include <stdio.h> int main(/*int argc, char* argv[]*/) { printf("Hello World!\n"); return 0; }
Makefile
all: hello.c /opt/fcc/bin/fcc -O2 -mz80 -c hello.c /opt/fcc/bin/fcc -O2 -mz80 hello.rel -o hello clean: rm *.rel rm *.map
「make」すれば「hello」というファイルができるので、UCPによりディスクイメージに取り込めば、実行できる。
これで、Fuzixのカーネルを改変したりアプリケーションを開発したりする環境が、全て整った事になる。