-
Notifications
You must be signed in to change notification settings - Fork 160
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
This is xm7src.txt from the 17020 zip file, transcoded from shift_jis to utf-8 and with an english pre-amble that explains the license a bit. Thanks to mef for help!
- Loading branch information
Showing
1 changed file
with
288 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,288 @@ | ||
This is the original README coming with the 71020 distfile. | ||
It basically says: | ||
|
||
If you re-use whole part of, or some part of this software, | ||
the following rules should be honored. This applies all the software | ||
versions released historically. | ||
|
||
- Re-use under the VM directory, Copyright notice should be explicitly | ||
marked (reserved) for the source and the documnets. Commercial use is | ||
prohibited. | ||
- Other parts could be re-used freely. But commercial use is still | ||
prohibited. | ||
|
||
Re-Distribution of this archive could not be accepted. You need prior | ||
permission to do that. | ||
|
||
Here's the original: | ||
|
||
------------------------------------------------------------------------------ | ||
|
||
FM-7 EMULATOR XM7 (V1.0L20) | ||
|
||
ソースコード | ||
Copyright (C) 1999-2001 PI.([email protected]) | ||
|
||
------------------------------------------------------------------------------ | ||
□ソース公開にあたって | ||
|
||
このアーカイブはFM-7エミュレータXM7(V1.0L20)の全ソースコードです。 | ||
|
||
私は元々、ソースコード公開に余り積極的ではありません。ただ本ソフトについては | ||
その性質上、実機・資料の入手が難しい過去の機種の、詳細なドキュメント・仕様書 | ||
となり得ますので、電子保存の意味でも公開すべきだと考えます。 | ||
|
||
またXM7の開発の過程で、M88をはじめとする多くのソフトウェアのソースを参考に | ||
させて頂きました。そのお礼という意味もあります。 | ||
|
||
|
||
□使用規定 | ||
|
||
アーカイブに含まれるファイル群は、一部の例外(後述)を除きPI.が著作権を保有 | ||
しています。 | ||
|
||
ソースファイルの一部、もしくは全部を再利用する場合は、次の規則に基づくもの | ||
とします。 | ||
・VMディレクトリ下のファイルを再利用する場合は、ドキュメントにオリジナルの | ||
著作権表示を明記してください。また商用利用は禁止します。 | ||
・それ以外の部分の再利用は自由です。ただし前項同様、商用利用は禁止します。 | ||
|
||
このアーカイブの再配布はできません。無断転載を禁じます。 | ||
|
||
|
||
□例外、その他 | ||
|
||
以下に示すファイルはM88の作者であるcisc氏の許可を得て、改変の上組み込んで | ||
いるものです。この部分については前述の規定は適用されません。 | ||
|
||
vm\fmgen.cpp | ||
vm\fmgen.h | ||
vm\fmgeninl.h | ||
vm\fmgenx86.h | ||
vm\opna.cpp | ||
vm\opna.h | ||
vm\psg.cpp | ||
vm\psg.h | ||
|
||
またLinuxディレクトリについては、(寿)TM氏が開発を担当し、PI.が管理を代行 | ||
しています。 | ||
|
||
次にあげるファイルはM.A.M.E. 0.33のソースファイルを再利用し、改変したもの | ||
です。 | ||
|
||
vm\cpu.c | ||
|
||
|
||
□ディレクトリ | ||
|
||
以下のようなディレクトリ構成になっています。これは便宜的なものです。 | ||
|
||
VM 仮想FM-7 | ||
X680x0 I/O部(SHARP X680x0) | ||
PC-98 I/O部(NEC PC-98x1) | ||
Linux I/O部(Linux, FreeBSD等) | ||
WIN16 I/O部(Microsoft Windows 3.1) | ||
FMTOWNS I/O部(FUJITSU FM-TOWNS) | ||
IBMPC I/O部(IBM-PC Compatible) | ||
WIN32 I/O部(Microsoft Windows95/98/NT4/2000) | ||
TOOL 補助ツール | ||
|
||
|
||
□定義済みシンボル | ||
|
||
以下のシンボルを全体で使っています。 | ||
|
||
_DEBUG デバッグビルドします。WIN32版以外は定義しないでください。 | ||
NDEBUG リリースビルドします。通常はこちらを定義します。 | ||
CPU_ASM アセンブラ版CPUコアを使います。X680x0では定義しないでください。 | ||
|
||
HUMAN68K X680x0を宣言します。(gccによる自動定義) | ||
__MSDOS__ MS-DOSを宣言します。(tcc,bccによる自動定義) | ||
PC98 PC-98を宣言します。 | ||
_XWIN X Windowを宣言します。 | ||
_WIN16 WIN16を宣言します。 | ||
FMT FM-TOWNSを宣言します。 | ||
IBM IBM-PCを宣言します。 | ||
_WIN32 WIN32を宣言します。(clによる自動定義) | ||
|
||
|
||
□ソース解説 | ||
|
||
VMディレクトリのソースを参考にされる方のために、取っかかりを説明します。 | ||
|
||
次の部分を見ると全体の構造はつかめます。device.hで定義されている関数の | ||
実体や、mainetc_timer()、keyboard_make()などを呼び出すのが機種別実装の役割 | ||
です。 | ||
|
||
XM7.h | ||
device.h | ||
system.c | ||
debug.c内 debug_run() | ||
mainetc.c内 mainetc_timer() | ||
|
||
またhistory.cに開発履歴を書いています。参考までに。 | ||
|
||
|
||
□ビルド | ||
|
||
メイクファイル類は複数ディレクトリに対応していません。このためビルドの際は | ||
ターゲットとなるプラットフォームのファイルと、VMディレクトリ下の全ファイル | ||
を同一ディレクトリに配置します。 | ||
|
||
全体としてメイクファイルはあまり凝っていません。どちらかというと間に合わせ | ||
的なものですので、問題があれば適宜書き換えるなどして対処して下さい。 | ||
|
||
またIntelプラットフォームではアセンブラとしてNASM(Netwide Assembler)を採用 | ||
しています。無償で入手できますので、別途準備してください。バージョンは0.98 | ||
を使っています。 | ||
|
||
以下、プラットフォームごとに説明します。 | ||
|
||
|
||
□X680x0 | ||
|
||
コンパイル時にワークエリアとして2MBを宣言しているので、4MB以上の空きメモリ | ||
を推奨します。X680x0の実装メモリが6MBあれば大丈夫でしょう。 | ||
|
||
gcc1(まりこ版)、has、hlkが必要です。私は次のバージョンを使っています。 | ||
|
||
gcc X68000 真里子バージョン Ver1.29 | ||
X68k High-speed Assembler v3.09 | ||
X68k SILK Hi-Speed Linker v3.01 | ||
|
||
メイクにGNU make(homy版)を使います。has,hlkはそれぞれas,lkにリネームするか、 | ||
lndrvを使ってリンクをはっておきます。準備が完了したら、メイクできます。 | ||
|
||
make -f makefile.68k | ||
|
||
フルメイクはかなり時間が掛かります。私の環境(XVI 24MHz, RAM 12MB)で、大体 | ||
15分〜20分程度を要します。 | ||
|
||
|
||
□PC-98x1 | ||
|
||
Turbo C++ 4.0Jでコンパイルしています。一部インラインアセンブラを使用し、 | ||
メモリモデルはラージです。 | ||
|
||
別途、アセンブラ版CPUコア(cpu_x86.obj)を用意する必要があります。cpu_x86.asm | ||
をアセンブルすれば良いのですが、MS-DOS版NASMではメモリ不足で作成できません。 | ||
Win32上でクロスアセンブルしたオブジェクトを持ってきます。 | ||
|
||
nasm -f obj -d __MSDOS__ cpu_x86.asm | ||
|
||
cpu_x86.objが揃えば、メイクできます。makeはTC++付属のものを使います。 | ||
|
||
maker -fmakefile.98 | ||
|
||
リンカに386プロセスを指示しているので、286以下のプロセッサではリンクできな | ||
いと思われます(出来たオブジェクトはV30以降で動きます)。その場合はmakefile | ||
内の LDFLAGS から /3 を取って下さい。 | ||
|
||
|
||
□Linux(X Window System) | ||
|
||
Linuxは若干めんどうです。以下のツールが必要です。 | ||
gcc, g++, nasm, strip, nkf, lha | ||
|
||
ファイルを作業ディレクトリに準備したら、nkf, lhaを使って漢字コードを変換 | ||
します。 | ||
|
||
make -f Makefile.X11 convert | ||
|
||
ビルドします。 | ||
|
||
make -f Makefile.X11 | ||
|
||
stripを使って、シンボルテーブルを取り去ります。(取らなくても良い) | ||
|
||
strip xm7 | ||
|
||
|
||
□Windows 3.1 | ||
|
||
Borland C++ 4.0Jでコンパイルしています。付属のOWLライブラリを使っています。 | ||
|
||
cpu_x86.objはPC-98x1と同じ方法で準備してください。オブジェクトをコピーする | ||
だけでokです。 | ||
|
||
Borland C++のIDEを起動し、プロジェクトファイルXM7.IDEをロードします。 | ||
メニューから「再構築」でXM7.EXEができあがります。 | ||
|
||
|
||
□FM-TOWNS | ||
|
||
Turbo C 2.0Jでコンパイルしています。メモリモデルはラージです。makefile.fmt | ||
のSTARTUP,LIBS定義を絶対パスで書いていますので、コンパイル環境に合わせて | ||
調整する必要があります。 | ||
|
||
cpu_x86.objはPC-98x1と同じ方法で準備してください。オブジェクトをコピーする | ||
だけでokです。fmt_sub.asmは小さいのでMS-DOS版NASM16.EXEでアセンブルします。 | ||
メイクはTurbo C付属のものだと通りません。Turbo C++ 4.0Jのものを使って下さい。 | ||
|
||
maker -fmakefile.fmt | ||
|
||
FM-TOWNS版は全体的に作業量重視、軽めの作りにしています。最初に移植したとき | ||
は2日間で作業完了させました:-) | ||
|
||
|
||
□IBM-PC | ||
|
||
Borland C++ 4.0Jでコンパイルしています。一部インラインアセンブラを使用し、 | ||
メモリモデルはラージです。 | ||
|
||
cpu_x86.objはPC-98x1と同じ方法で準備してください。オブジェクトをコピーする | ||
だけでokです。 | ||
|
||
IBM-PC版は386必須、コプロセッサ必須です。このため/3で386コードを指定し、 | ||
FP87.LIBをリンクしています。makeはBC++付属のものを使います。 | ||
|
||
maker -fmakefile.ibm | ||
|
||
|
||
□Windows95/98/NT4/2000 | ||
|
||
Visual C++ (4.0J Standard Edition)でコンパイルしています。またDirectX3 | ||
SDKを必要とします。あらかじめインストールしておいて下さい。 | ||
|
||
ビルドの前にcpu_x86.objを用意します。次の構文でアセンブルします。 | ||
|
||
nasm -f win32 -d _WIN32 cpu_x86.asm | ||
|
||
Visual C++のIDEを開き、ワークスペースXM7.mdpをロードします。メニューから | ||
「リビルド」を選ぶとReleaseもしくはDebugディレクトリにXM7.exeが生成され | ||
ます。 | ||
|
||
Visual C++の5.0、6.0ではうまくビルドできないかもしれません。そのときは | ||
cisc.hの内容をチェックしてください。VC++4.0ではboolが実装されていません。 | ||
|
||
Resources下に含まれるアイコンは、渡辺 善美氏に提供頂いた物です、99/夏頃の | ||
開発が軌道に乗った頃に作成していただきました。 | ||
|
||
|
||
□補助ツール | ||
|
||
ROM作成ツールSAVEROMは、FM77AV上で動作する部分(6809アセンブラで記述)と、 | ||
起動ディスクを作成する部分(8086アセンブラで記述)に分かれています。 | ||
|
||
6809アセンブラ部は次のツールで作成します。 | ||
HD63C09/6809 クロスアセンブラ AS63.EXE Version1.12Ta | ||
8086アセンブラ部は次のツールで作成します。 | ||
Turbo Assembler Version 2.0 | ||
Turbo Link Version 3.0 | ||
|
||
メイクは適当なツールを使って下さい。TASM付属のもので十分です。 | ||
|
||
AS63のオプティマイズ機能を使い、6809のブランチはロングブランチ主体で記述 | ||
しています。アセンブル時にショートで届くものはショートに変換されます。 | ||
|
||
|
||
□連絡先 | ||
|
||
ホームページ(PI. Home page) | ||
http://www.ipc-tokai.or.jp/‾ytanaka/ | ||
|
||
公式掲示板 | ||
http://cgi.ipc-tokai.or.jp/‾ytanaka/cgi-bin/xm7/hyperbbs.cgi | ||
|
||
メールアドレス | ||
[email protected] |