1
- # elf2x68k
1
+ # X680x0 クロス開発環境 elf2x68k
2
2
3
3
## 概要
4
4
5
5
elf2x68k はシャープ X680x0 用実行ファイル(X 形式)を PC の Unix/Linux 系環境上で開発するためのクロス開発環境です。m68k 用クロスツールチェイン (gcc, binutils) から出力される ELF ファイルを変換して、 X68k で実行可能な X 形式ファイルを出力します。
6
6
7
+ 更に、X-BASIC から C へのコンバートに対応しました。クロス環境上で X-BASIC プログラムを変換、コンパイルして X 形式ファイルを出力することができます。
8
+
7
9
## 特徴
8
10
9
11
* 最新の binutils (2.41)、gcc (13.2.0) を用いた X68k のクロス開発が可能です
@@ -15,6 +17,7 @@ elf2x68k はシャープ X680x0 用実行ファイル(X 形式)を PC の Unix/L
15
17
* [ Newlib] ( https://sourceware.org/newlib/ ) (組み込みシステム等で使われている標準 C ライブラリ)
16
18
* C Compiler PRO-68K v2.1 (XC) の 標準 C ライブラリ
17
19
* アセンブラには GNU binutils の as を使用します。680x0 アセンブリ言語の書式は、HAS.X などで用いられているモトローラ形式でなく [ MIT形式] ( https://sourceware.org/binutils/docs/as/M68K_002dSyntax.html ) (GASフォーマット) となります
20
+ * X-BASIC to C コンバータ ` bas2c.py ` とそのサポートコマンド ` m68k-xelf-bas ` により、X-BASIC で書かれたプログラムを変換、コンパイルして X 形式ファイルを得ることができます
18
21
19
22
## インストール
20
23
@@ -27,6 +30,7 @@ x86_64 Linux 向けと MSYS2 MinGW 64bit 向けバイナリを配布していま
27
30
アーカイブにはライブラリとして Newlib 環境のみが含まれています。
28
31
展開した ` m68k-xelf ` ディレクトリにある ` install-xclib.sh ` スクリプトを実行することで、無償公開されている C Compiler PRO-68K ver2.1 (XC) をダウンロード、インストールします。
29
32
これによって、Newlib に加えて XC のライブラリも利用できるようになります。
33
+ * X-BASIC to C コンバータを利用する場合には必ず実行してください。
30
34
* インストール後に ` m68k-xelf ` ディレクトリを移動した場合は ` install-xclib.sh ` スクリプトを再度実行してください (スクリプト内で実行時の絶対パスを記録する箇所があるため)。
31
35
32
36
ソースコードからビルドを行う方法は [ README-elf2x68k.md] ( README-elf2x68k.md ) を参照してください
@@ -57,6 +61,55 @@ m68k-xelf-gcc -o sample.x sample.c
57
61
このようにリンク後に X 形式実行ファイルと ELF ファイルが生成されることを除けば、使い方は通常の gcc と同じです。もちろんコンパイルとリンクを分けて実行することも可能ですが、リンクは GNU リンカ ` m68k-xelf-ld ` を直接呼び出すことは避けて、コンパイラドライバ ` m68k-xelf-gcc ` から実行するようにしてください
58
62
(ELF → X 形式の変換を gcc の specs ファイルの記述によって行っているため)。
59
63
64
+ ## X-BASIC to C コンバータの利用
65
+
66
+ elf2x68k は ` m68k-xelf-bas ` コマンドによる X-BASIC プログラムのコンパイルが可能です。
67
+
68
+ ```
69
+ usage: m68k-xelf-bas [OPTIONS][-o output] input.bas
70
+ ```
71
+
72
+ ` input.bas ` で指定された X-BASIC プログラムを C ソースコードに変換し、そのファイルを m68k-xelf-gcc でコンパイルします。コンパイル時には XC の BASIC ライブラリ (libbas) が自動的にリンクされます。\
73
+ (` -specs=xc.specs -lbas ` オプションがデフォルトで指定されます)
74
+
75
+ 以下のコマンドラインオプション指定が可能です。
76
+ * ` -o output ` : 出力先となる X 形式実行ファイルのファイル名を指定します。省略した場合は入力ファイル名の拡張子を .bas から .x に変えたものになります。
77
+ * ` -S ` : X-BASIC から C への変換のみを行い、実行ファイルへのコンパイルは行いません。
78
+ * ` -Xb [option] ` : bas2c.py へ渡すオプションを指定します。
79
+
80
+ その他のオプションは、変換後に実行される ` m68k-xelf-gcc ` にそのまま渡されます。
81
+
82
+ X-BASIC から C への変換には [ bas2c.py] ( https://github.com/yunkya2/bas2c-x68k ) を使用しています。オプションの詳細については[ こちらのドキュメント] ( https://github.com/yunkya2/bas2c-x68k/blob/main/README.md ) も参照してください
83
+
84
+ 実行例:
85
+ ```
86
+ % cat test.bas (X-BASIC プログラム)
87
+ 10 for i=0 to 100
88
+ 20 print i
89
+ 30 next
90
+
91
+ % m68k-xelf-bas test.bas (test.x と test.x.elf が生成される)
92
+
93
+ % m68k-xelf-bas -S test.bas (test.c が生成される)
94
+
95
+ % cat test.c (変換された C ソースコード)
96
+ #include <basic0.h>
97
+ #include <string.h>
98
+
99
+ static int i;
100
+
101
+ /******** program start ********/
102
+ void main(int b_argc, char *b_argv[])
103
+ {
104
+ b_init();
105
+ for (i = 0; i <= 100; i++) {
106
+ b_iprint(i);
107
+ b_sprint(STRCRLF);
108
+ }
109
+ b_exit(0);
110
+ }
111
+ ```
112
+
60
113
## ライブラリ環境の選択
61
114
62
115
elf2x68k は以下の 2 種類のライブラリ環境を用意しています。これらはコンパイル時の ` -specs= ` オプションによって使い分けが可能です。
0 commit comments