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