このメールは、OSASK-ML投稿フォームから書き込まれた内容です。
お名前: 清水
清水です。
このようなロジックを使っているのですが、
lib_readmodulesize(0x0210);
で止まっています。原因はわかりますか?
// load classes wrp file into memory
static void loadWrpWarpFile() {
uchar *fp, *fp0;
int filesize, areasize, i;
areasize = lib_readCSd(0x0014) & ~0xfff /* file:指定値取得 */
- 65536 /* copybufの最初の4バイト、有効バイト数64KB */;
/* 設定ファイル読み込み */
/* 正しくない設定ファイルを読ませるとあっさりと暴走するだろう */
lib_initmodulehandle0(0x0008, 0x0210); /* user-dirに初期化 */
lib_steppath0(0, 0x0210 /* slot */, "CLASSES.WRP", 16 /* sig */);
do {
i = getsignalw();
fputc(i);
fputs("\n");
} while (i < 16);
if (i == 16) {
filesize = lib_readmodulesize(0x0210);
fputs("filesize=");
fputc(filesize);
fputs("\n");
/* クラスマップ用領域確保 */
classesMap = malloc(filesize);
/* モジュールマッピング(fopenに相当) */
lib_mapmodule(0x0000 /* opt */, 0x0210 /* slot */, 0x5 /* R-mode */,
areasize /* map-window size */, fp0, 0);
/* ファイル読み込み */
fp = fp0;
for (i = 0; i < filesize - 1; i++) {
fputc((int)(*fp++));
classesMap[i] = *fp;
}
fputs("\n");
}
numClassRecords = getUInt32(classesMap+4);
fputs("numClassRecords=");
fputc(numClassRecords);
fputs("\n");
for ( i=0 ; i<numClassRecords ; i++ ) {
classRecordOfs[i] = getUInt32(classesMap+8+4*i);
classRecordSize[i] = getUInt32(classesMap+12+4*i)-classRecordOfs[i];
}
}