Z280MBにFUZIXを移植する試みの第一歩です。
FUZIXの情報を求めてネットをさまよってたどり着いたのが、Oh!石さんの FUZIXをビルドしてみよう です。最近のバージョン 0.4pre1 のビルドに成功されていて参考になります。
FUZIXにはターゲットとしてZ280もあるのですが、まだ動作していないようなので、まずはz80packでFUZIXを動かし、その構造や動作を確認したいと思います。
FUZIXの実行環境構築
Ubuntu 20.04.3と WSLで確認しています。
SDCCのインストール
バージョンは4.1.0で、インストールはOh!石さんの記事に従って行っています。
z80packのインストール
バージョンは1.37です。こちらは、make installの前に、ホームディレクトリにbin/を作っておきます。make後はメッセージに従い $HOME/binをPATHに加えます。こうしないと、z80packの実行時にエラーが出ます。いちいちexportするのは面倒なので、.bashrcにでも書き加えておきます。
$ tar xvzf z80pack-1.37.tgz
$ cd z80pack-1.37/cpmsim/srcsim
$ make
$ cd ../srctools
$ make
$ mkdir ~/bin
$ make install
$ export PATH=$PATH:$HOME/bin
cpmsim/cpm2で、CP/M 2.2 が起動するか確認しておきます。
Ctrl+\ で終了します。
FUZIXのビルド
GitHubからソースをクローンします。最新のコミットではkernelのコンパイルで失敗します。コンパイルが確認できているハッシュは、3d26de6eb800af0b1a5672b53ccbc0da6c1a3d1bです。
$ git clone https://github.com/EtchedPixels/FUZIX.git
$ cd FUZIX
$ git checkout 3d26de6e
Makefileを修正します。56行目あたりにビルドターゲットの指定があるので、z80packを指定します。90行目あたりのapps, kernel, diskimageターゲットから依存ターゲットのltoolsを削除します。
TARGET=z80pack
...
apps:
+(cd Applications: ...
kernel:
mkdir -p Images ...
diskimage:
mkdir -p Images ...
ユーティリティとクロス開発環境をコンパイルします。make install した後、/opt/fcc/binをPATHに加えておきます。
$ make stand
$ cd Library
$ make
$ sudo make USERCPU=z80 install
$ export PATH=$PATH:/opt/fcc/bin
クロス開発環境用のライブラリをコンパイルします。
$ cd libs
$ make -f Makefile.z80 USERCPU=z80
$ sudo make -f Makefile.z80 USERCPU=z80 install
FUZIXアプリケーションをコンパイルします。fcc(SDCC)でのコンパイルはかなり時間がかかるので、テレビでも見ながら気長に待ちます。$ cd ../../
$ make apps
カーネルをコンパイルし、ルートファイルシステムとブートディスクのイメージを作成します。
$ make kernel
$ make diskimage
FUZIXの起動
ディスクイメージは、FUZIX/Images/z80pack/に作られています。これらをz80packにコピーしエミュレータを起動します。
$ cp FUZIX/Images/z80pack/boot.dsk z80pack-1.37/cpmsim/disks/drivea.dsk
$ cp FUZIX/Images/z80pack/hd_fuzix.dsk z80pack-1.37/cpmsim/disks/drivei.dsk
$ cd z80pack-1.37/cpmsim/
$ ./cpmsim
bootdev: には 0 を入力し、rootでログインすれば、プロンプトが出ます。
終了する場合はshutdownコマンドを実行後、Ctrl-\ を入力します。