Hallo Herr Bret Johnson via Freedos-devel, am Montag, 28. April 2025 um 04:53 schrieben Sie:
>> the resident part of SETVER (MS-DOS 6.22) when loaded as a device >> driver is 464 byte on my system. This is mainly the version table >> (4Bh bytes for other stuff like the device header). The SETVER >> device driver notifies the kernel about the location of the table. >> The far pointer to the table is stored at 37h of the LoL [1]. >> >> So by _far_ smaller you mean in the order of a few bytes? As the >> table gets larger, more RAM gets occupied. So this MIGHT become an >> issue if one enters hundreds of additional entries to the table. But >> had this ever be an issue? "si tacuisses, philosophus mansisses" > I try to avoid loading things as device drivers when there is an option to > load them as a TSR for lots of reasons like larger footprint due to PSP? > (one of them being you can't easily tell how much and what kinds of memory > it's actually using). Smart people know at least one program that tell them the size used. Not so smart people start DOS with and without SETVER driver, subtract size available and have the answer. Into what category do you place yourself? > MS-DOS SETVER requires a table of executable file names and the version > number DOS is supposed to return when those executable files with those > specific names are running and ask DOS what version it is. If SETVER stores > the table in memory it takes a lot more than a few hundred bytes. This table requires 8 bytes for the name, and 2 bytes for the version. How do you arrive at "a lot more than a few hundred bytes"? There are zero programs in FreeDOS itself that require SETVER, and they are rare - if they even exist in 1995+. > The table doesn't necessarily be in conventional memory, but it will be > somewhere. It could also do what the DOS kernel does by dividing itself into > a resident and transient part The kernel does nothing like that. > with the transient part (with the table of names and versions) stored on > disk and would need to open the file and read it into memory when it wanted > to look up data from the table. MSDOS SETVER works like this, but reads that table at init time, or when you enter a new program/version pair. And yes, SETVER is split between a resident and a transient part. > What I'm saying about the other program I used to use is that it didn't have > a table of names and versions like the MS SETVER does. You can sort of think > of it like the way many anti-virus programs work. They have a list of known > viruses and signatures (kind of like what MS SETVER does with a list of known > programs and versions), but anti-virus programs also have a heuristic check > that finds non-specific viruses. Do you have even the remotest idea how larger the memory footprint of antivirus stuff is? even DOS antivirus? It's MEGA bytes. And many of them. > MS SETVER doesn't do a heuristic test of what it should return for the DOS > version, right. > but the other program I had only did the "heuristic" test and didn't have a > fixed list. extraction the version wanted out of mov AH, 30h int 21h cmp ax, ABCD <<< this is the version wanted jne exit_program is not "heuristic". So simple. It returns exactly the version required to the calling program. if this request is posted in the proper form. which is true for all MSDOS programs. no more. no less. Tom _______________________________________________ Freedos-devel mailing list Freedos-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/freedos-devel