借り初めのひみつきち

仮ブログです。

64KB の壁。

OSZ がメモリ 64KB で起動するようになりました🎉

f:id:neriring16:20171025164158p:plain

少し前のバージョンまで 96KB くらいが動作の下限で、 MCB の初期化が終わるまでメモリの扱いがどんぶり勘定だったのを調整しました。

メモリ 64KB って CP/M だとかなり豪華なのに 8086 だと 64KB で動いたところで実用性はたぶんありませんが。。

さて、一連の作業をしていて COM ファイルの弱点に気づきました。

メモリ 64KB までしか使えない?たしかにコードと初期データの合計は 64KB 超えられませんが、ヒープに上限はありません。

もっと深刻なのは、本当に 64KB 必要なのかどうか判断する基準が何もないということです。

COM ファイルにはヒープの情報がまったくありません。
メモリが十分にあるときはなんとなく 64KB 割り当てれば大抵の COM ファイルはたぶん動きます。
しかし、本当に 64KB で十分なのか、もっと必要なのか、もっと少なくていいのか、 COM ファイルにはそれを確定する情報がありません。

冒頭のようにシステム全体のメモリが 64KB の環境ではアプリに 64KB 割り当てることができませんが、それでもアプリが動くかどうか COM ファイルは判断できません。
現在はシステムもアプリも自分で全部作っているのでどのくらい割り当てれば動くか把握できていますが、将来いろいろなアプリが動くようになったとき機械的にメモリ割り当てを決定するのは難しいです。