短期集中講座 続・クロス開発のすすめ

さらにクロス開発のメリット

 さて、前回の「クロス開発のすすめ」では、主にスピードに重点を置いて、クロス開発のメリットを書いてきましたが、クロス開発のメリットはそれだけではありません。
 MSXでMSX-CやHI-TECH Cを使って開発を行った方ならご存じでしょうが、これらの開発ツールを使って開発をしていると、特に長いプログラムをコンパイルした際に、メモリ不足で正常にコンパイルが行えないことがあります。
 これは、MSX自体のワークエリアや、MSX-DOS/DOS2のワークエリアの分だけ、TPAが減少するために起こる現象で、ワークエリアを大量に使うMSX-CやHI-TECH Cで、この問題が顕在化するというわけです。

 では、CP/MエミュレータやMSX-DOSエミュレータ上の環境ではどうでしょうか?
 これらの環境では、MSX自体のワークエリアは当然必要ない上、MSX-DOS,CP/MのワークエリアもTPA以外のところに持つことができるので、これらのワークエリアの分もまるまるTPAとしてユーザーが使うことができます。
 この結果、大量のワークエリアを必要とするMSX-CやHI-TECH Cでも長いプログラムをコンパイルするのに十分なワークエリアが得られ、高速なCPUや記憶媒体によるコンパイル自体の高速化とあわせて、MSX-CやHI-TECH Cなど、大量のワークエリアを使う開発ツールがMSX用のプログラム開発用として十分に使い物になるというメリットがあります。

TPAの増加を検証する

 では、実際にMSX-DOS,DOS2とエミュレータでは、どのくらいTPAの大きさが違うのでしょうか?簡単なプログラムで検証してみましょう。


#include	<stdio.h>

int main(void)
{
	fprintf(stderr,"TPA limit is %04xH\n",*(unsigned short *)0x0006);
	return(0);
}

 このプログラムは、システム領域の開始番地を表示するプログラムです。実際のTPAの大きさは、これからワークエリアの100Hをひいただけの量となります。
 このプログラムをMSX-DOS1,DOS2,CP/Mエミュレータ、MSX-DOSエミュレータで実行した結果が下の表です。

環境システム領域開始番地
MSX-DOS2 似非RAM+FDD*1(+仮想FD)+RAMDISK D506H
MSX-DOS2 FDD*1(+仮想FD)+RAMDISK D506H
MSX-DOS2 FDD*1+RAMDISK D506H
MSX-DOS1 似非RAM+FDD*1(+仮想FD) D006H
MSX-DOS1 FDD*1(+仮想FD) D606H
MSX-DOS1 FDD*1 DC06H
MSX.EXE EFFFH
Z_EMF906H

 この結果からも分かるように、CP/Mエミュレータ(Z_EM)やMSX-DOSエミュレータ(MSX.EXE)ではMSX自体、そしてMSX-DOS/DOS2が必要とするワークエリアが不要な分TPAが広がっているということが分かります。
 不思議なのはMSX-DOS1とDOS2での結果で、BASIC環境ではMSX-DOS2のほうがフリーエリアが大きくなるにもかかわらず、MSX-DOS2 FDD*1(+仮想FD)+RAMDISKの環境とMSX-DOS1 FDD*1(+仮想FD)という環境では、後者のほうがTPAが大きくなります。もっとも、ドライブ数が多くなると(上では似非RAMが付いた環境ですね)DOS2のほうが明らかにTPAの減少が抑えられる事が分かりますが、DOS上で必ずしもDOS2のほうが大きなTPAを取れるわけではないというのは意外かもしれません。

 それはともかく、クロス開発を行う場合、CP/MエミュレータやMSX-DOSエミュレータを使う場合でも高速化や、MSX実機より大きなTPAを生かすことで、大きなプログラムの開発ができたり、開発ツールの選択肢が広がったりという利点がある事がお分かりいただけましたでしょうか。
 それでは、クロス開発で浮いた時間を生かした素晴らしい作品が出る事を祈って終わりにかえたいと思います。


御意見、御感想、御希望等ありましたら何でもE-Mailでどうぞ

This page is presented by Tatsuhiko Syoji(rxk16664@nifty.ne.jp)

Tatsu's MSX Researchesにもどる