The old version restored the BIOS interrupt int70 - int77 vectors according to the values in the range 0000:05dc - 0000:05fb. Since this memory area looks like a stack and is sometimes overwritten, the new t12 version no longer restores interrupt vectors according to the values in this area. In this way, the new version solves the old problem that GRUB.EXE was not reentrant.
The method t12 uses is to detect the MS-DOS interrupt service routines pointed to by the interrupt vectors in the range 0000:01c0 - 0000:01df, and from them find the original int70 -int77 BIOS interrupt vectors.
After VIDE-CDD.SYS is loaded, it may have modified the interrupt vectors in the range 0000:01c0 - 0000:01df, which causes this detection to fail.
The solution is to use the old detection method first, and if it fails, then use the new detection method.
Please use debug to list the values in the range 0000:01c0 - 0000:01df. I need to see which vectors have been modified and which vectors have not changed.
The method t12 uses is to detect the MS-DOS interrupt service routines pointed to by the interrupt vectors in the range 0000:01c0 - 0000:01df, and from them find the original int70 -int77 BIOS interrupt vectors.
After VIDE-CDD.SYS is loaded, it may have modified the interrupt vectors in the range 0000:01c0 - 0000:01df, which causes this detection to fail.
The solution is to use the old detection method first, and if it fails, then use the new detection method.
Please use debug to list the values in the range 0000:01c0 - 0000:01df. I need to see which vectors have been modified and which vectors have not changed.
因为我们亲手创建,这个世界更加美丽。

DigestI
