Or rather, I still feel very unfamiliar with it.
> I once used it under pure DOS to virtualize a Win2003 ISO image file as a CD-ROM drive and perform the installation.
Virtualizing an ISO as a CD-ROM drive under DOS and being able to perform installation does not mean that the ISO file has been completely emulated as a physical CDROM.
I am guessing: does it interpret the sector contents of the ISO file, and then use some MSCDEX-compatible program to turn the CDROM into some DOS drive letter, such as drive H:? This does not operate on the CDROM hardware IO ports. In real mode it is impossible to emulate IO ports. In real mode, IO ports can only access real devices.
If that is the case, then this kind of emulation cannot exist independently of DOS. GRUB's emulation does not depend on DOS, so this method cannot be used to implement it. Although GRUB runs under DOS, GRUB does not use any DOS interrupts or DOS data structures. GRUB only uses BIOS interrupts and BIOS data structures. Because GRUB has to boot other operating systems, GRUB is independent of any particular operating system. Therefore, one cannot emulate a CDROM from an ISO the way BCDL does.
> if it is modified a bit and converted into a real SYS driver, it should not be too difficult, right?
Simply converting a SYS into an EXE, or vice versa, should not be difficult (I do not understand the structure of SYS either). But whether SYS or EXE, they are both concepts used internally by DOS and cannot be borrowed by GRUB. I think it will not work for GRUB to learn from that path. Of course, if what is being discussed is not GRUB but how to boot a system from an ISO file, then it is entirely possible. But I think that implementing this from inside DOS still has a few other small difficulties to face (though not easy to solve) (let us not discuss that now).
> BCDL.BIN itself should not be directly operating on the physical addresses of the CD. Rather, before BCDL.BIN is actually loaded, it first calls a DOS CD-ROM driver program (such as VIDE - CDD.SYS, OAKCDROM.SYS, and the like), and that CD-ROM driver operates on and drives the physical CD. Then BCDL.BIN uses an MSCDEX INT-compatible method to actually load and boot from the CD. If SHSUCDHD.SYS (that is, the SYS version of SHSUCDHD.EXE) were used as that intermediate CD-ROM driver to virtualize an ISO image file, then what BCDL.BIN would see would be a real physical CD-ROM drive, because BCDL.BIN does not directly access the physical addresses of the CD-ROM drive, but only performs the next step according to the already loaded DOS CD-ROM driver.
Because I am not familiar with it, I still do not quite understand this paragraph. BCDL first loads a SYS CD-ROM driver. So can it be said this way: a SYS file runs in a DOS environment? SHSUCDHD.EXE obviously runs under DOS. If a SYS file does not run under DOS, and we want to convert SHSUCDHD.EXE into such a SYS format, then even if the conversion succeeds, I am afraid it still cannot be used. Even if it can be used, there is still another problem: you said BCDL uses an MSCDEX-compatible method to handle the CD, which is equivalent to saying it simulates the ISO as a drive letter under DOS. This can only be used for DOS-compatible operating systems, not for other systems such as LINUX. LINUX does not know drive letters.
Hehe, I am quite muddled, so what I am saying may be rather laughable. If you find I have some unclear concepts, you can continue to point them out and explain them.
> I once used it under pure DOS to virtualize a Win2003 ISO image file as a CD-ROM drive and perform the installation.
Virtualizing an ISO as a CD-ROM drive under DOS and being able to perform installation does not mean that the ISO file has been completely emulated as a physical CDROM.
I am guessing: does it interpret the sector contents of the ISO file, and then use some MSCDEX-compatible program to turn the CDROM into some DOS drive letter, such as drive H:? This does not operate on the CDROM hardware IO ports. In real mode it is impossible to emulate IO ports. In real mode, IO ports can only access real devices.
If that is the case, then this kind of emulation cannot exist independently of DOS. GRUB's emulation does not depend on DOS, so this method cannot be used to implement it. Although GRUB runs under DOS, GRUB does not use any DOS interrupts or DOS data structures. GRUB only uses BIOS interrupts and BIOS data structures. Because GRUB has to boot other operating systems, GRUB is independent of any particular operating system. Therefore, one cannot emulate a CDROM from an ISO the way BCDL does.
> if it is modified a bit and converted into a real SYS driver, it should not be too difficult, right?
Simply converting a SYS into an EXE, or vice versa, should not be difficult (I do not understand the structure of SYS either). But whether SYS or EXE, they are both concepts used internally by DOS and cannot be borrowed by GRUB. I think it will not work for GRUB to learn from that path. Of course, if what is being discussed is not GRUB but how to boot a system from an ISO file, then it is entirely possible. But I think that implementing this from inside DOS still has a few other small difficulties to face (though not easy to solve) (let us not discuss that now).
> BCDL.BIN itself should not be directly operating on the physical addresses of the CD. Rather, before BCDL.BIN is actually loaded, it first calls a DOS CD-ROM driver program (such as VIDE - CDD.SYS, OAKCDROM.SYS, and the like), and that CD-ROM driver operates on and drives the physical CD. Then BCDL.BIN uses an MSCDEX INT-compatible method to actually load and boot from the CD. If SHSUCDHD.SYS (that is, the SYS version of SHSUCDHD.EXE) were used as that intermediate CD-ROM driver to virtualize an ISO image file, then what BCDL.BIN would see would be a real physical CD-ROM drive, because BCDL.BIN does not directly access the physical addresses of the CD-ROM drive, but only performs the next step according to the already loaded DOS CD-ROM driver.
Because I am not familiar with it, I still do not quite understand this paragraph. BCDL first loads a SYS CD-ROM driver. So can it be said this way: a SYS file runs in a DOS environment? SHSUCDHD.EXE obviously runs under DOS. If a SYS file does not run under DOS, and we want to convert SHSUCDHD.EXE into such a SYS format, then even if the conversion succeeds, I am afraid it still cannot be used. Even if it can be used, there is still another problem: you said BCDL uses an MSCDEX-compatible method to handle the CD, which is equivalent to saying it simulates the ISO as a drive letter under DOS. This can only be used for DOS-compatible operating systems, not for other systems such as LINUX. LINUX does not know drive letters.
Hehe, I am quite muddled, so what I am saying may be rather laughable. If you find I have some unclear concepts, you can continue to point them out and explain them.
因为我们亲手创建,这个世界更加美丽。

DigestI

