X68000をブートさせるために必要なファイル等を書いてみた。

概要

「ディスク入れると単独でゲームが起動するやつってどうするの?」と思い、色々調べながらディスクの環境を作っていきたいと考えました。

ご存知の方には釈迦に説法かもしれませんが、Windowsのファイルシステムから触れてると
MS-DOSとかのシステムより隠蔽されてる部分が多く、
どう触ったらいいのかわからん!となることもあるので、一度書いていこうかと。

そもそもディスクを入れて起動することが可能なんです

例えばWindowsではOS動いてる上でディスク入れて起動ということも可能ですが、
MS-DOSやX68000では「最初からディスク入れておいてそれを起動する」というやり方も存在しています。
上記はどういう方法で実現しているのか、ということですね。

勿論すごいのだとOSを起動しないで実行みたいなこともできると思いますが、普段はOSを起動するはずです。

参考:
https://zenn.dev/morian/articles/ab313ec56c4c4f

というよりOS経由のほうがメモリの取り扱いがしやすいかと。

ファイルのライセンスについて

ライセンス周りも可能な限り見ていきたいと考えますので、トータルで割と長くなります。

大前提は以下。

http://www.retropc.net/x68000/software/sharp/license.htm

http://www.retropc.net/x68000/software/sharp/x68bios/

よって、配布する場合どういうデータが必要なの?どういうライセンスなの?ということについては気をつける必要があります。

一部のプログラムについては著作権が明確に記載がありますので注意。

起動の仕組み

データを調べてみると、「Human.sys」「Command.x」「Config.sys」等色々あったりするので、 まずはそこらへんの情報を整理することにします。

以下の順番で処理を辿っていってる様子。

ディスク内に存在する「Human.sys」を起動する
Config.Sysを読み込む(+必要なデバイスドライバやIOCS等をメモリにロード)
シェルプログラムを起動する(初期設定だとCommand.xを起動する)
OS起動後必要なプログラムを実行(初期設定だとAUTOEXEC.BAT)

Human68Kの起動

ブート時の動きとしては、まずフロッピーディスク内にある「Human.sys」を起動します。
これは、X68000のOSであるHuman68kのカーネル部分に相当する模様。

実際X68000のFormatプログラムでフォーマットした後、
システム情報を書き込むという形にするとHuman.sysが書き込まれますので、
起動ディスクについてはフォーマットしたブランクディスクから作れそうですね。

(X68000Zでも動作を確認)

設定ファイルの用意

さてOSを起動した後は必要なプログラムが何であるかを定義する必要があります。

本来は色々書いてありまして、X68000のIO出力用のメモリのどこをいじれば機能するよ、等
OSに必要な情報を動かすプログラムや、OS上で記録媒体やデバイスを取り扱う場合、
最初から設定を入れておく等準備が必要になります。

これらの準備情報を書き込んでおくファイルが存在します。それが「CONFIG.SYS」になります。

CONFIG.SYSには様々な設定を書き込むことができ、下記のような情報を指定可能な様子。

https://gamesx.com/wiki/doku.php?id=human68k_manual:configsys

ゲームとかだとIOCS.xやFloatライブラリだけを書き込んでしまって起動する、なんてものもある様子。

実際、IOCSは必要かと思いますが、それ以外のユーティリティは不要かと思いますので。
(とは言うもののそれだけだとプログラム終了後他の事ができない可能性があるので再起動を促すのがいいかもしれません)

シェルプログラムの起動

「Human.sys」起動後、必要になってくるのがシェルプログラムです。

シェルとはユーザとOSの橋渡しをしてくれるプログラムの事で、UnixとかLinuxで「ls」とか「pwd」とか入力するやつですね。

あのベースになるプログラムと考えて下さい。

デフォルトでは「Command.x」というプログラムが定義されています。
CONFIG.SYSにシェルに関する情報を書き込まなければCommand.xを起動することになります。

シェルについては差し替え可能で、
より使い勝手のいいプログラムがある場合、そちらに切り替えるという形が可能になります。

シェルプログラムを切り替えるには同じフォルダにCONFIG.SYS(後述)を作成し、

SHELL=”シェルのプログラム名”

と入力すると起動する模様。

OS起動後に実行するプログラム

Command.xを起動している場合、Autoexec.batというファイルの内容に準拠して利用が可能。

他のランチャーやファイラー(シェルですね)だと別途定義されてる形式で記述することになります。

他になにかわかれば

追記予定です