高速化 編集用APIを用意すべし API_SendIDOをつくるべし メモリ利用効率を上げるため、ハンドル数を512 handles/Zone にする file のincludeができるといいな(IDL2IRL) object の型をもっと重視すべきでは SDAとPSPの切り換え オブジェクト型重視による格納方法の見直し Library DataObjects .. refcountの復活 Link作成 not TESTed やっぱりどっかで飛ぶ Resize のバグだった 対策済み mov ds, NextMCB -> mov bx, NextMCB -l option追加 OK とうとうGetAddressの返り値をds:siにしてしまった。 GetAddress の返り値を ds:si memory block address ds:ax memory control block address にするにあたっての変更箇所 lowmem.asm Delete . GetAddress ..++ RawRead . RawWrite + GetSize . GetType .. SetType .. UseMem . base.asm CreateNode . AttachNode . ChangeNode . BindContents . Unlink . GetContentsPtr廃止 ReadObj . WriteObj + GetContents . GetParent . SetName . GetList . GetHandleByName . GetName . Clear + DettachNode . GetNumOfLists . GetListNumber + Send@irio でまとめ送りすべし OK SetNameでdsを保存し忘れてるぞ〜 OK 高速化のためにGetAddressは返り値をds:axにすべし noteA にてIRMENUでsend main send endすると間が空きすぎてこけてしまう。 そういう訳ではなかった、IRMENUのバグのせい 対策済 MCBに_ID word を設けてGetAddress@lowmem内で不正アクセスのチェックをする ちょっとやりすぎかも がーん、GetEntry@lowmemでOpenしたIRLIB$のCloseをわすれている。 share.exeによる不具合の原因はこれか。 対策済み エラーを取得するファンクションを作成 ZONEをallocateしようとして失敗するとどっか変なところを破壊する …とおもったが再現不能 zone内のメモリリストはやっぱりoffsetの方がいい ReAddressも不要になるし でも最初のうちGetAddressの返り値はsegmentにしよう その1 _MemListをオフセットにする。 ハンドルてーぶるは現状維持 したがってReAddressではハンドルテーブルのみ変換する 変更箇所 Combine OK ReAddress OK GetMem OK Resize OK SvrInit OK ReAddressの信頼性が低いぞ その2 ReAddressの廃止 GetAddressで補正する その3 GetMem GetAddress Resize 名前をIRLIB$に OK Clearがスタックをめちゃくちゃ食う 再帰をやめたいが… Clearはたいしたことなかった Combineが悪の根元だ 再帰をやめた ディスパッチャを主常駐部に その必要はない 少ないページしか亜炉けーとしてないのにpagemapをでっかくgetしようとすると save array size よりでっかく格納してくれちゃう。 さいしょっから4ページとっとけばいいんだけどね… というわけで、PartialPage* はやめる ページのセーブをスタックに OK STACKの切り換え OK EMSをつかうのだ OK apiのせいり ほぼOK それにともなうdebugの変更 エラーコードが出せるぞ OK なまえを無制限に GetNameでRawReadをcallする部分の引数をとりあえず256に SANYOのリモコンでEND IRDの必要性を認識 send End を作成