(2024/12/30版)
- OpenBSD/amd64 7.6-stable
- 2024/12/29頃の FUZIX および Fuzix-Compiler-Kit のソースツリー
以下を pkg_add しておいてください。
- devel/boost
- devel/git
- devel/gmake
FUZIXのビルドツールは /opt/fcc 以下にインストールされることを想定されているので、あらかじめディレクトリを用意します。(ここではユーザ権限で更新できるよう chown しています)
% doas mkdir -p /opt/fcc
% doas chown ${USER} /opt/fcc
最初にアセンブラ、リンカなどが含まれる Fuzix-Bintools をインストールします。
git clone して gmake & gmake install で /opt/fcc/{bin,lib} に素直にインストールできます。
% git clone https://github.com/EtchedPixels/Fuzix-Bintools.git
% cd Fuzix-Bintools
% gmake
% gmake install
この後、/opt/fcc/bin にパスを通しておいてください。
次に FUZIX ビルド用に作者の Alan Cox さんがメンテナンスしているコンパイラ+ライブラリをインストールします。
Linux に依存した部分があるので、パッチ obsd-Fuzix-Compiler-Kit.diff をあてて gmake bootstuff、gmake install します。
% git clone https://github.com/EtchedPixels/Fuzix-Compiler-Kit.git
% cd Fuzix-Compiler-Kit
% patch < /path/to/obsd-Fuzix-Compiler-Kit.diff
% gmake bootstuff
% gmake install
obsd-Fuzix-Compiler-Kit.diff はこちらにあります。主な内容は以下の通りです。
- Makefile、*.mk
- make → $(MAKE)の書き換え
- gcc → $(CC) の書き換え
- 配布物に含まれていないファイルを使用するターゲットを削除
- cpp
- ホストのネイティブcppを呼び出すシェルスクリプトcppの書き換え
- Complier-Kit のcpp(バイナリ版)が動くようになったのでもう不要かも
- ホストのネイティブcppを呼び出すシェルスクリプトcppの書き換え
私はZ80用しか試していませんが、他のCPUも多数サポートされています。
CPUによっては開発中のものもあるので、ステータスは Fuzix-Compiler-Kit の README 等もあわせて確認してください。
% fcc -v
cc [option and file list]
options:
-c: compile to object modules only
-D: define a macro for the C preprocessor
-E: preprocess only, to stdout
-i: enable split I/D if supported by this target
-I: add a directory to the include path
-l: add a library name to link
-L: add a path to the library search path
-m: set the CPU to compile for
-M: create a map file
-o: specify the output file name of the complation (a.out default)
-O: set optimization level 0-3, or for size '-Os'
-s: build standalone. Do not include the OS libraries and include paths
-S: compile to assembly source only
-t: set the target OS
-T: set the starting address of the text/code segment
-V: verbosely print pass information
-X: keep temporary files for debugging
long options:
--dlib: build a loadable object module instead
processors:
-m8080: Intel 8080 (compatible 8085, Z80)
-m8085: Intel 8085
-mz80: Zilog Z80 (compatible Z180, Z280, eZ80)
-mz180: Zilog Z180
z80/z180 feature options:
-mz80-banked: Z80 with banked code
-mz80-noix: do not touch IX
-mz80-noiy: do not touch IY
processors (debug):
-m65c816: 65C816 16bit mode
-m6303: Hitachi 6303
-m6309: Hitachi 6309 (currently as 6809)
-m6800: Motorola 6800 (compatible 6303, 6803, 68HC11)
-m6803: Motorola 6803 (compatible 6303, 68HC11)
-m6809: Motorola 6809 (compatible 6309)
-m68hc11: Motorola 68HC11
-mnova: DG Nova
-mnova3: DG Nova 3 and later (with stack hardware)
-mthread: Generate threadcode tables
-msuper8: Zilog Super 8
-mz8: Zilog Z8
nova feature options:
-multiply: use the hardware multiply and divide option
processors (development only)
-m1802: bytecode for 1802 interpreter
-m1805: bytecode for 1805 interpreter
-m6502: 6502 8bit, NMOS legal instructions
-m65c02: 6502 8bit CMOS legal instructions
-m8086: Intel 8088/8086 (compatible 80186/286/..)
-m80186: Intel 80188/186 (compatible 80286/...)
-m8070: NS8070 series
-mnova3: DG Nova3, Nova4 or MicroNova
%
こちらも Linux に依存している部分があるので、パッチ obsd-FUZIX.diff をあててからビルドします。
gmake でカーネルやユーザランドバイナリ一式が生成され、gmake diskimage でディスクイメージが Images ディレクトリ以下に生成されます。
% git clone https://github.com/EtchedPixels/FUZIX.git
% cd FUZIX
% patch < /path/to/obsd-FUZIX.diff
% gmake
% gmake diskimage
obsd-FUZIX.diff はこちらにあります。z80pack 用のバイナリを作成するためのパッチになっていますので、他のターゲットのバイナリを作成する時は、Kernel/platform/platform-XXXX/Makefile などを適切に変更し、大元の Makefile の TARGET ?= の行を変更してください。
主な変更点は以下の通りです。
- Makefile関連
- make → $(MAKE)の書き換え
- gcc → $(CC) の書き換え
- オリジナルの yacc を使用
- Fuzix-Bintools のリンカは引数の順番が異なるので修正
- Library/link/ldz80
- bash のパスの書き変え
- Standalone/mkftl.c
- clang のビルトイン ffsl() を使用
青山 健治 / Kenji Aoyama
X(旧Twitter) @ao_kenji
Mastodon @[email protected]
GitHub https://github.com/ao-kenji/