Fuzix

FUZIX Kernelのビルドに挑戦

2019年11月3日

一つ前の記事では、先人の教えにしたがって、Fuzix ver 0.1のビルドを行なった。現在使用しているFuzixは、ver 0.3で、Tom's SBC 用に構築された物である。これのビルドもできるようにしておきたい。色々試したのち、ようやくビルドできるようになったので、メモ。

Fuzix用SDCCのビルド
ここが一番のミソなのだが、Z80用Fuzixのビルドには、SDCCを少し修正して使っているらしい。ソースコード中、次のように書かれている。
https://github.com/EtchedPixels/FUZIX/blob/master/Kernel/patches
SDCC:

	This patch adds 

	1. Helpers to cut down the size of C code for function entry. Right
	   now the __enter and __enter_s must be in common memory.

	2. An option --external-banker that keeps 4 byte stack offsets for
	   arguments so the linker can patch up banked binaries. Unbanked
	   code is called via push af call foo pop af
このパッチを当てて、オプション「--external-banker」を有効にしないと、Tom's SBC用のKernelがちゃんとビルドできない。なので、まずパッチを当てたSDCCのビルドから始める。

SDCCのビルドに必要なツールをまずインストール。
sudo apt install bison
sudo apt install flex
sudo apt install libboost-dev

SDCC ver 3.5.0 のソースコードをここからダウンロードして、展開する。パッチファイル(SDCC)をここの「Raw」ボタンから取ってきて、同じディレクトリーに置き、パッチを当てる。複数回ファイル名を聞かれるので、「sdcc-3.5.0/src/SDCCglue.c」「sdcc-3.5.0/src/z80/gen.c」「sdcc-3.5.0/src/z80/main.c」「sdcc-3.5.0/src/z80/z80.h」と入力する。
tar xjvf sdcc-src-3.5.0.tar.bz2
patch<SDCC

SDCCのビルドとインストールを行なう。なお、別のSDCCを予めインストールしてあった場合は、そちらは削除しておく事。
cd sdcc-3.5.0
./configure --prefix=/usr --disable-pic14-port --disable-pic16-port
make
sudo make install

Kernelのビルド
Fuzixソースコードを取得し、Kernelをビルドする。Makefileはビルド前に編集する。
「TARGET=z80pack」のところ、
「TARGET=tomssbc-rom」とする。
git clone https://github.com/EtchedPixels/FUZIX.git
cd FUZIX
(Makefileを編集)
sudo make kernel

このビルドは、Fuzix ver 0.3においての物なので、それより後のバージョンではうまく行かないかも知れない。その場合は、
git checkout 9d5f38b410a11c31aa9967fa88831d2db76bccaf
として、2019年11月現在のレポジトリーか、
git checkout cacbe5238588d352768ab95951c46d09879ba310
として、ver 0.3のレポジトリーに巻き戻してから、make kernel すればよいだろう。

うまく行けば、pratform-tomssbc-romディレクトリに、「fuzix.com」という、64Kbのファイルが構築される。

コメント

コメントはありません

コメント送信