![]()
![]()
MDIR310이 2gb이상 os2 warp4, 4.5에서 동작하지 않는 문제를 수정했습니다.
M3는 여유% = 여유바이트 / (전체바이트/100) 을 계산합니다 (이미지 0x13FF0~0x14004).
TP의 32비트 나눗셈 헬퍼(0x2C248)는 제수가 0이면 이렇게 처리합니다:
0x2c2d4: mov ax, 0xC8 ; 0xC8 = 200 → 소프트웨어적으로 Runtime Error 200 발생
큰 볼륨(예: 8GB HPFS) 에서 전체 크기가 32비트를 넘쳐 wrap → 전체/100 == 0 → 제수 0 → 나눗셈 → RTE200.
수정본 (검증 완료)
제수가 0일 때 RTE200을 던지지 않고 0을 반환하도록 헬퍼를 9바이트만 패치했습니다:
0x2c2d1: 9d 9d 31 c0 31 d2 cb 90 90 ; add sp,4;mov ax,C8;jmp RTE → popf;popf;xor ax,ax;xor dx,dx;retf
검증:
정상 볼륨 → 2,013,265,920(93%)byte free 정상 표시 (회귀 없음)
제수 0 강제(고장 조건) → 크래시 없이 파일관리자 정상 실행, 퍼센트만 0%로 표시
산출물 (충실한 원본과 오직 그 9바이트만 다름)