Skip to content

Commit cf2302c

Browse files
committed
Update README.md
1 parent b03daa6 commit cf2302c

File tree

1 file changed

+54
-1
lines changed

1 file changed

+54
-1
lines changed

README.md

+54-1
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,11 @@
1-
# elf2x68k
1+
# X680x0 クロス開発環境 elf2x68k
22

33
## 概要
44

55
elf2x68k はシャープ X680x0 用実行ファイル(X 形式)を PC の Unix/Linux 系環境上で開発するためのクロス開発環境です。m68k 用クロスツールチェイン (gcc, binutils) から出力される ELF ファイルを変換して、 X68k で実行可能な X 形式ファイルを出力します。
66

7+
更に、X-BASIC から C へのコンバートに対応しました。クロス環境上で X-BASIC プログラムを変換、コンパイルして X 形式ファイルを出力することができます。
8+
79
## 特徴
810

911
* 最新の binutils (2.41)、gcc (13.2.0) を用いた X68k のクロス開発が可能です
@@ -15,6 +17,7 @@ elf2x68k はシャープ X680x0 用実行ファイル(X 形式)を PC の Unix/L
1517
* [Newlib](https://sourceware.org/newlib/) (組み込みシステム等で使われている標準 C ライブラリ)
1618
* C Compiler PRO-68K v2.1 (XC) の 標準 C ライブラリ
1719
* アセンブラには 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 形式ファイルを得ることができます
1821

1922
## インストール
2023

@@ -27,6 +30,7 @@ x86_64 Linux 向けと MSYS2 MinGW 64bit 向けバイナリを配布していま
2730
アーカイブにはライブラリとして Newlib 環境のみが含まれています。
2831
展開した `m68k-xelf` ディレクトリにある `install-xclib.sh` スクリプトを実行することで、無償公開されている C Compiler PRO-68K ver2.1 (XC) をダウンロード、インストールします。
2932
これによって、Newlib に加えて XC のライブラリも利用できるようになります。
33+
* X-BASIC to C コンバータを利用する場合には必ず実行してください。
3034
* インストール後に `m68k-xelf` ディレクトリを移動した場合は `install-xclib.sh` スクリプトを再度実行してください (スクリプト内で実行時の絶対パスを記録する箇所があるため)。
3135

3236
ソースコードからビルドを行う方法は [README-elf2x68k.md](README-elf2x68k.md) を参照してください
@@ -57,6 +61,55 @@ m68k-xelf-gcc -o sample.x sample.c
5761
このようにリンク後に X 形式実行ファイルと ELF ファイルが生成されることを除けば、使い方は通常の gcc と同じです。もちろんコンパイルとリンクを分けて実行することも可能ですが、リンクは GNU リンカ `m68k-xelf-ld` を直接呼び出すことは避けて、コンパイラドライバ `m68k-xelf-gcc` から実行するようにしてください
5862
(ELF → X 形式の変換を gcc の specs ファイルの記述によって行っているため)。
5963

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+
60113
## ライブラリ環境の選択
61114

62115
elf2x68k は以下の 2 種類のライブラリ環境を用意しています。これらはコンパイル時の `-specs=` オプションによって使い分けが可能です。

0 commit comments

Comments
 (0)