Skip to content

Commit

Permalink
Update README.md
Browse files Browse the repository at this point in the history
  • Loading branch information
yunkya2 committed Jul 15, 2024
1 parent 0ebb32f commit 8aeadbc
Show file tree
Hide file tree
Showing 2 changed files with 32 additions and 32 deletions.
41 changes: 10 additions & 31 deletions README-elf2x68k.md
Original file line number Diff line number Diff line change
Expand Up @@ -39,6 +39,13 @@ m68k-xelf/ 内に追加される、X68k 対応のためのファイル一覧で
* ELFファイルをX形式実行ファイルに変換するpythonスクリプトです
* bin/x68k2elf.py
* X68kのオブジェクトファイルやライブラリをELF形式に変換するpythonスクリプトです
* bin/bas2c.py
* bin/bas2c.def
* [X-BASIC to Cコンバータ](https://github.com/yunkya2/bas2c-x68k) の python スクリプトです
* bin/m68k-xelf-bas
* bas2c.py を用いて X-BASIC プログラムを C に変換し、m68k-xelf-gcc でコンパイルするスク
* bin/unlha.py
* [LZH アーカイブ展開ツール](https://github.com/yunkya2/unlha) の python スクリプトです
* lib/gcc/m68k-elf/\<gcc version\>/specs
* m68k-xelf-gcc の挙動を修正するspecsファイルです。デフォルトの Newlib 環境時に使われます
* リンク時にX68kに必要なライブラリもリンクします
Expand All @@ -64,8 +71,9 @@ m68k-xelf/ 内に追加される、X68k 対応のためのファイル一覧で
* m68k-elf/include/x68k/*
* libiocs.a, libdos.a を利用するためのヘッダファイルです
* m68k-elf/sys-include/*
* 標準ヘッダファイル m68k-elf/include 内を置き換えるためのヘッダファイルです。
* fcntl.h に O_BINARY, O_TEXT の定義を追加するために使われます。
* 標準ヘッダファイル m68k-elf/include 内を置き換えるためのヘッダファイルです
* fcntl.h に O_BINARY, O_TEXT の定義を追加するために使われます
* dirent.h に DIR, struct dirent の定義を追加するために使われます
* install-xclib.sh
* [無償公開されている C Compiler PRO-68K v2.1 (XC)](http://retropc.net/x68000/software/sharp/xc21/) をダウンロードし、ライブラリとヘッダファイルをインストールして XC 環境を構築するスクリプトです。

Expand All @@ -82,32 +90,3 @@ usage: elf2x68k.py [-h] [-o OUTPUT] [-b BASE] [-s] file
* `-b` オプションが指定されている場合は、変換後のX形式ファイルのベースアドレスが指定したアドレスに設定されます。
* X68kのディスクのブートセクタから起動可能なファイルを生成するためには、`-b 0x6800` を指定してベースアドレスを0x6800にしておく必要があります。
* 変換元のELFファイルのシンボル情報がX形式ファイルにも付加されます。 `-s` オプションが指定されている場合はシンボル情報を削除します。

## サンプル

### sample/hello

* printf()とシンプルなIOCSコール呼び出しのサンプルです
* makeすると hello.x というファイルができます。Human68kでそのまま実行できます

### sample/hellosys

* 上記 sample/hello と同じ内容を、Human68k を使わずに実行するサンプルです
* makeすると hellosys.sys というバイナリが生成されます。このファイルは以下の手順で起動できます。
1. 実機でフォーマット済みのフロッピーディスク、またはエミュレータでフォーマット済みディスクイメージを用意します
2. hellosys.sys を **human.sys という名前で** ディスクにコピーします
* ディスクには他のファイルを置かないでください。ブートセクタから起動できるファイルはディスクの連続したセクタに配置されている必要があるためです。
3. 作成したディスク(イメージ)を実機またはエミュレータにセットし、リセットします。


### sample/fileio

* newlibのファイルI/O周りのAPIをテストするサンプルです

### sample/xsp

* よっしん氏 (@yosshin4004) 作の [スプライト管理ライブラリ XSP](https://github.com/yosshin4004/x68k_xsp) のサンプルコードを elf2x68k 環境でビルドできるようにしたサンプルです

### sample/defsptool

* Human68k システムディスクに含まれているスプライトパターンエディタ DEFSPTOOL.BAS を C に変換できるようにパッチを当てて m68k-xelf-bas でコンパイルするサンプルです
23 changes: 22 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -21,10 +21,11 @@ elf2x68k はシャープ X680x0 用実行ファイル(X 形式)を PC の Unix/L

## インストール

### Linux/MinGW 向け

以下の環境向けバイナリを配布しています
* x86_64 Linux (Windows 11 の WSL2 にインストールした Ubuntu-20.04 で動作確認)
* MSYS2 MinGW 64bit
* Apple Silicon macOS (14.5 Sonoma)

[Release](https://github.com/yunkya2/elf2x68k/releases) から利用する環境のアーカイブをダウンロードし、任意のディレクトリに展開してください。
`m68k-xelf/bin` にパスを通すことで使用できるようになります。
Expand All @@ -35,8 +36,28 @@ elf2x68k はシャープ X680x0 用実行ファイル(X 形式)を PC の Unix/L
* X-BASIC to C コンバータを利用する場合には必ず実行してください。
* インストール後に `m68k-xelf` ディレクトリを移動した場合は `install-xclib.sh` スクリプトを再度実行してください (スクリプト内で実行時の絶対パスを記録する箇所があるため)。

### macOS 向け

macOS 向けは Homebrew からインストールできます (M3 Macbook Air / macOS 14.5 (Sonoma) で動作確認)。
Homebrew がインストールされている環境でコマンドラインから

```
brew install yunkya2/tap/elf2x68k
```
を実行すると、ソースコードをダウンロードしてビルド、インストールを行います
(M3 Macbook Air で 30 分程度かかります)。

XC ライブラリのインストールも合わせて行いますので、`install-xclib.sh` スクリプトは実行不要です。

### ソースコードからのビルド

ソースコードからビルドを行う方法は [README-elf2x68k.md](README-elf2x68k.md) を参照してください

## サンプルコード

C や C++、X-BASIC to C のサンプルコードを [elf2x68k-samples](https://github.com/yunkya2/elf2x68k-sample) リポジトリに用意しています。
サンプルコードの説明は [README.md](https://github.com/yunkya2/elf2x68k-sample/blob/master/README.md) を参照してください。

## 実行例

テストとして、以下のようなサンプルをコンパイルしてみます。
Expand Down

0 comments on commit 8aeadbc

Please sign in to comment.