Hi all
... and happy new year :-)

I took some time to compare the current CVS stable / HEAD
kernel FreeDOS 2036 to the "extra stable 2035c" kernel
which is used by Tom. The latter is generally a bit older,
but also features some patches which have not yet found
their way into 2036. There are also places where it is
unclear which variant is better, so I hope you can give
some feedback on this mail - in particular Tom, Arkady,
Bart and Jeremy can hopefully help to get a clearer "big
picture" of the differences...

In the end, I would like to have 2036 "extra stabilized"
so that Tom no longer needs a separate kernel version.
Here we go, big list of diffs :-). To check the 2036
sources, get a source zip or use the cvs web browser:
http://freedos.cvs.sourceforge.net/freedos/kernel/
The Tom sources are available from Tom, but I can also
provide a (not very well cleaned up) unified diff file.

- Tom has a build2 bat file, which does a SYS CONFIG
   on the kernel, copies the kernel to A:, and sorts the
   map file. We could add that to the cvs.

- buildall, build, default: more comments in cvs,
   plus cvs has set dos4g=quiet

- bugs / build / lfnapi / mkboot / nls / sys / readme.txt:
   at most differs in linebreak style? WHAT is "2." in mkboot??
   Is the zip naming scheme still up to date in readme?
   Does sys.txt describe all current stable SYS options?

- config.txt: cvs has a newer extended version
   NOTE: I think there should be a FCBS note telling that
   FreeDOS can provide FCBS without FCBS=... line?
   The IF %config%==... example should use "".

- contrib.txt: cvs is newer, updates Bernd / Aitor

- fdkernel.lsm / version.h / globals.h differ, of course
   NOTE that we no longer have REVISION_MAJOR nor
   REVISION_MINOR as those were incompatible to 32RTM!

- intfns.txt CVS version better describes the current state
   QUESTION: Which int 2f functions are still missing?
   Any volunteers for int 21.5d01 ... 21.5d05?
   Typo in CVS: "drive" instead of "driver" for LFN

- readme.cvs CVS version is better, more up to date

- floppy.asm CVS version is slightly better, improved
   comments. The FL_DISKCHANGED implementation is a bit
   different but in the end seems to do the same thing.
   Could anybody CHECK THAT?
   There are also some whitespace changes and stuff.

- filelist, makefile: CVS version provides more FreeDOS
   style directory / zip file structure and no longer
   includes autoexec / config / install bat files. IF we
   had somewhat more useful SAMPLE CONFIG / autoexec, it
   would make sense to include them, but for now, I prefer
   the CVS style :-).

- device.h CVS version provides r_si and r_di but those
   do not seem to be used yet?

- hdr.h CVS version makes intr() void, Tom uses unsigned
   WHICH is better? CVS probably?

- portab.h CVS version has some extra Watcom pragmas with
   the comment "min.unpacked size" (default parm / modify)
   I assume CVS is better?
   The CVS version also has MK_SEG_PTR and MK_UWORD and
   MK_ULONG, probably by Arkady, but I think those are not
   yet actually used for much?

- asmsupt.asm CVS version uses some FSTRCMP / _fstrcmp /
   pascal_setup in Watcom, while Tom has that commented
   out as still untested. WHICH IS BETTER?

- config.c timeout is "time > timeout" in Tom version and
   "time >= timeout" in CVS version, the latter is maybe
   better for 0 timeouts / hanging timers??

- dosfns.c CVS DosGetFree returns UWORD (-1 for false)
   instead of BOOL, so it no longer has a UWORD * spc
   argument
   NOTE: What is the purpose of "spc = rg[0]" in cvs?
   IsDevice has different handling of "padding can be
   with spaces or 00 bytes", probably having the same
   effect in the end. Could somebody COMPARE both versions?
   The CVS version also skips something for block devices.

- dsk.c the TOM VERSION provides an call to int 2f.4a00
   to ask a potential GUI whether it is okay to display
   the "insert disk a:/b:..." "DJ" message as text. A GUI
   can trap this and show a dialog box instead. VERY NICE.
   NOTE that both versions have a typo: "... the any key ..."

- fatdir.c WHICH VERSION IS BETTER HERE? Tom uses
   "if ((attr & D_VOLID|D_DIR)==D_VOLID) i=3" while CVS uses
   "if ((attr & ~(D_RDONLY|D_ARCHIVE))==D_VOLID) i=3 else
   attr &= ~D_VOLID" ... (this is in findfirst afair)

- fatfs.c adds a parameter char * name to init_direntry
   in the CVS version, which produces more compact code...
   The CVS version also prevents "removal of the current
   directory". There are also differences in handling
   directories with further attributes: Tom commented out
   all extra checks, and the CVS version does
   "if (!(attr & D_DIR) || (attr & ~(D_DIR|D_ARCHIVE)))
   then abort" (so system/hidden/readonly directories
   cannot be deleted)
   The CVS version also has more exact tests whether the
   first two entries are . and .. (and a typo, "secondard")
   The CVS version also blocks renaming of the current
   directory and does "init fnode for new file name to
   match old file name" around line 725.
   The CVS version allows something to happen if D_DIR is
   set, but blocks D_VOLID and reserved bits, while Tom
   also blocks D_DIR. The comment is "JPP: ... causes an
   issue with deltree which is trying to work around another
   issue" as reason not to test for D_DIR any more. IDEAS?
   The CVS version does one merge_file_changes more than Tom.

- fattab.c has more verbose messages in CVS and masks values
   with LONG_LAST_CLUSTER to 28 bits for FAT32, which turned
   out to be necessary for some Windows drives...

- fcbfns.c uses UWORD for spc in Toms version and UBYTE for
   a pspc in the CVS version, which version is better here?
   The CVS version has a STRANGE aspect, it masks spc &= 0xff
   while that value is not returned. IDEAS?
   FcbParseFname uses UBYTE in CVS, int in Toms, for wTestMode.
   It also uses i instead of an extra variable mode for the
   FcbParseFname call at another place - CVS probably gets
   better code compiled??

- initdisk.c seems to do better nsize / huge / NumSect handling
   in the CVS version...?

- initoem.c either has a duplicate test (peek for RAMSIZE)
   in the Tom version or an actrually better test. This is
   in movebda. IDEAS?

- int2f.asm has different comments: CVS "INT2F/11xx" while
   Tom has "INT2F/12xx and INT2F/4A01,4A02"... which is right?
   There is also some part commented out by Tom, with the
   comment "moved into intr() style by Tom" - IN WHAT WAY?

Time for a new years party now, the next mail will give
details about differences in the following files:

inthndlr.c 3301 / xdpp, error handling, fnode reset, etc etc
intr.asm some INTR code only present at Toms kernel
ioctl.c Tom uses an array of commands for C_IOCTL... stuff
   while the CVS version embeds values in a switch case...
   THE TOM VERSION looks as if it covers more cases here :-)
main.c what is better, STATIC int or nothing for EmulatedDriveStatus?
   TYPO in CVS: booot from
makefile: Tom calls dir before upx, nice?
memmgr.c: CVS has QBasic double free support
nls.c: several differences, please compare!
proto.h: DosGetFree / dpb16to32 / FcbParseFname / FatGetDrvData
   differ, according to the different implementations
serial.asm: CVS provides a new function ComInStat and less waiting
makefile: also better comments in CVS...
sys.c: is fat32readwrite int or is it void?
   TOM uses a better OEM, "FRDOS5.1", better than "FreeDOS " as ID.

Happy new year :-)

Eric



-------------------------------------------------------------------------
Take Surveys. Earn Cash. Influence the Future of IT
Join SourceForge.net's Techsay panel and you'll get the chance to share your
opinions on IT & business topics through brief surveys - and earn cash
http://www.techsay.com/default.php?page=join.php&p=sourceforge&CID=DEVDEV
_______________________________________________
Freedos-kernel mailing list
Freedos-kernel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/freedos-kernel

Reply via email to