Hi Bernd, I can confirm, I also get AH=38h in dosemu when I try to access a nonexistent drive a: e.g. by calling ls a: with DOG. Same thing happens with dir a: using FreeCom. Both of these report a similar error:
DOG reports: Read error drive A: DOS area (Abort/Fail/Ignore/Retry)? FreeCom reports: Error reading from drive A: DOS area: sector not found (A)bort, (I)gnore, (R)etry, (F)ail? Both of these can only appear when AH=38h https://fd.lod.bz/rbil/interrup/dos_kernel/24.html#table-02544 shows what the bit values correspond to. So I agree, this seems to be a kernel error 🤔 especially since other kernels behaves differently. --Wolf On Thu, May 29, 2025, 13:32 Bernd Böckmann via Freedos-devel < freedos-devel@lists.sourceforge.net> wrote: > Hi Wolf, > > > Am 28.05.2025 um 22:32 schrieb Wolf Bergenheim <wolf+...@bergenheim.net > >: > > > > Are you running in a VM or physical machine? What dos DR-DOS return? > > It is running on an emulated Pentium system via 86box, on FreeDOS, MS-DOS > and SvarDOS (EDR-DOS kernel). > > > Soo now I wonder what is the full value of register AX? I'd expect the > kernel to set values to indicate a drive not ready error. So for some > reason bit 7 of AH is set? So now I wonder why not? > > The test program may be downloaded from > https://nextcloud.iww.rwth-aachen.de/index.php/s/2zzo8LrxKsA35bD > > For laziness I wrote it in Turbo Pascal. > > In the following there is the critical error sequence of the different > kernels. The test program basically tries to open a file on a non-existing > diskette, and then tries to write some bytes into it. The program aborts as > soon as a DOS function returns an error. > > On the critical error return = 0 (IGNORE), FreeDOS returns a file handle. > It returns 5 bytes written despite it did not write anything. Therefore > previously EDIT did not detect an error. The system eventually hangs. > > MS-DOS and EDR-DOS kernels report errors via the INT21 calls despite the > error "being ignored". > > The AX given to the critical error handler explains the different > behavior. On FreeDOS, bit 5 of AH ist set, so it allows the error to be > ignored. On MS-DOS and EDR-DOS this bit is cleared, and IGNORE is treated > as a FAIL. > > So I consider this to be an incompatibility, and it should therefore be > classified as a kernel bug. > > > FreeDOS critical error return = 0 (IGNORE): > creating file (INT21.3C) > critical error AX=3800H > critical error AX=3800H > critical error AX=3900H > handle: 5 > writing to file (INT21.40) > critical error AX=3800H > critical error AX=3800H > bytes written: 5 > -- system hangs -- > > FreeDOS critical error retorn = 3 (FAIL): > creating file (INT21.3C) > critical error AX=3800H > IO Error: 3 > > > MS-DOS 3.31 critical error return = 0 (IGNORE): > creating file (INT21.3C) > critical error AX=1A00H > IO Error: 3 > > MS-DOS 3.31 critical error retorn = 3 (FAIL): > creating file (INT21.3C) > critical error AX=1A00H > IO Error: 3 > > > EDR-DOS critical error return = 0 (IGNORE): > creating file (INT21.3C) > critical error AX=1800H > IO Error: 83 > > EDR-DOS critical error retorn = 3 (FAIL): > creating file (INT21.3C) > critical error AX=1800H > IO Error: 83 > > > > _______________________________________________ > Freedos-devel mailing list > Freedos-devel@lists.sourceforge.net > https://lists.sourceforge.net/lists/listinfo/freedos-devel > > // BR var regards = {nick:[image: ] , name: "Wolf", kanji: "狼"};
_______________________________________________ Freedos-devel mailing list Freedos-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/freedos-devel