非専門的シンギュラリティー研究所

無限に動き続けるシステムを表す方法を AI なども使って考えていきます。

X68000(7)

前回からの手順がわからなかったので ChatGPT で調べました。

X68000 をターゲットとしたクロスコンパイラで作ったファイルを、X68000エミュレータで実行する手順を教えてください

と入力すると以下のような結果が返されました。

1 クロスコンパイル環境で実行ファイルを作る

まず、クロスコンパイル環境(例: `x68k-elf-gcc`)でターゲット実行ファイルを作ります。

例: Hello World

#include <stdio.h>

int main(void) {
    printf("Hello, X68000!\n");
    return 0;
}

ビルド例:

x68k-elf-gcc -o hello.x -msmall hello.c

ポイント

  • `-msmall` はスモールモデル(メモリ空間が狭い)向けで、X68000 ではよく使います。
  • 出力ファイル形式は `.x`(X68000 のバイナリ形式)または `.prg`(拡張子は自由ですが、慣習的に `.x` や `.prg`)。

2 実行ファイルの確認

ロスコンパイラが生成するファイルは通常 X68000 のバイナリ形式(X-binary)になっていますが、環境によっては `.elf` や `.coff` 形式になる場合もあります。この場合は、X-binary 形式(X68000 の実行ファイル)に変換する必要があります。

  • `.elf` → `.x` 変換には `objcopy` を使う場合があります:
  x68k-elf-objcopy -O xfile hello.elf hello.x

あるいは、直接 X-binary で出力するクロスリンカを設定してください。

3 実行ファイルをディスクイメージにコピー

X68000エミュレータでは、通常 HDDイメージ(.hds)フロッピーイメージ(.xdf) をマウントします。作った `.x` ファイルを、実行可能なイメージ(.xdf か .hds)にコピーします。

方法1: フロッピーイメージ(.xdf)

1. FDイメージを用意
例: `blank.xdf`(空のXDFイメージ)
2. ディスクイメージ操作ツールを使う
例: `EDITDISK`(Windows)や `mtools`(Linux/macOS)。
3. mtoolsの例(Linux/macOS:

   mcopy -i blank.xdf hello.x ::

これで `hello.x` がフロッピーイメージに書き込まれます。

方法2: HDDイメージ(.hds)

1. 既存のHDDイメージを使うか、エミュレータ付属のツールで新規作成します。
2. ディスク操作ツール(EDITDISKやDiskExplorer) を使って `.x` をHDDイメージ内の任意のフォルダにコピーします。

4 エミュレータでマウントして起動

例えば、XM6 Pro-68k の場合:

1. メニューの「SASI/SCSI HDD」または「フロッピーディスク」にイメージをマウントします。
2. 起動。
3. エミュレータX68000画面上で `hello.x` を起動:

   A>hello.x

または

   B>hello.x

(ドライブ番号は実際のイメージのマウント先によります)

実行できれば成功です!

5 もし動かない場合

  • ファイルフォーマットが正しいか(X-binaryか)
  • リンカ設定やライブラリがX68000用か
  • RAM容量(XM6でRAM設定512KB/1MBなど)
  • BIOS(IPL-ROM)とOS(Human68k)が正しく設定されているか

まとめ

もし実際のエミュレータやツール、またはファイル形式変換で詰まったら、詳細を教えてもらえれば一緒に解決しますよ!

この手順に従って、

  • DiskExplorer を導入し、
  • HUMAN302.XDF をコピーし SAMPLE.XDF とし、内容のファイルを削除し、sample.x をドラッグアンドドロップでコピーし、
  • エミュレーターのドライブ0に SAMPLE.XDF をマウントし、
  • SAMPLE.X を実行

すると実行することができました。