FreeDOS on SBC188 - Differences of loaders (Announce)
> One thing, however, I do not understand, what does the new bootloader do
> that the old ones that already work don't? why not keep the old bootloaders
> working?
I haven't studied the exact differences between the older and more recent original FreeDOS loaders.
As for my (lDOS boot) loaders, the _COMPAT_FREEDOS variants relocate differently than FreeDOS's originals. That means the kernel file to load can be larger. However, I had to disable the RPL support for things to fit into the loader. The FreeDOS originals do not exactly support RPLs but their fixed relocation is unlikely to corrupt any RPL of reasonable size.
The "L" in my loader instsect names stands for "LBA only". The "C" stands for "CHS only". The "A" stands for "Automatically try LBA and if it returns error 1 then try CHS". Using "C" or "L" loaders may be needed to override a wrong detection decision. As opposed to our "A" variants, FreeDOS original loaders assume a diskette is always CHS, and otherwise do a proper LBA detection callout to determine whether to try LBA or CHS. (There is an option for ours to use the detection callout but it is disabled by default because it needs more space.)
The "U" in my loader names stands for "Use partition information". This means that, when booting a hard disk (unit >= 128), the load partition offset from a prior MBR stage is used, if a simple detection scheme suggests it is there. This is useful in that the "hidden sectors" field in the boot sector's BPB need not be maintained. On the other hand, the detection can yield a false positive and trash the hidden sectors to use, so an "N" variant may be better in some cases. On diskettes the "U" detection always yields negative so the hidden sectors are used as stored on disk (generally holding a value of zero). FreeDOS's original loaders always act like my loaders without "U".
The "Q" stands for "Query Geometry" which means the loader will try to ask the ROM-BIOS for the CHS geometry. This again means that the Heads and Sectors fields of the boot sector need not be maintained. (Crucially, when moving a disk from one system to another, the systems may disagree about the geometry to use.) The detection is unlikely to turn up any false positives. If the detection result is negative, the values stored on disk in the BPB are used. Diskettes usually don't support the call (int 13.08) used for the detection. The "L" variants of the loaders do not come in "Q" variants because L means that the CHS geometry is never used so the Q option would only waste space. FreeDOS's originals always act like the non-"Q" loaders.
Other than that, my loaders support uncommon sector, cluster, and root directory sizes. Specifically, sector sizes 32 to 8192 bytes, cluster sizes 32 bytes to about 128 KiB, and root directory sizes that do not match to a sector size boundary as well as root directory sizes exceeding 64 KiB. (The 128 KiB cluster size limitation is because of limitations of a simple FreeDOS load protocol implementation. Other protocols allow cluster sizes up to 2 MiB.)
My loaders will detect and error out on file too large situations. They will also retry CHS reads if interrupt 13h calls return failure.
The FAT16 loader will only load a single sector of the FAT per call, if and when it is needed; FreeDOS's FAT16 loader always loads the entire FAT. (In pathological cases my approach may actually read FAT sectors more often than theirs, but realistically mine is better.)
My loaders will load root directory sectors one by one too, so they won't read the entire root directory if the load file is found before the last directory sector. FreeDOS FAT12 and FAT16 loaders always load the entire root directory.
My loaders only display a single letter in error conditions, but it differs which letter it is depending on the cause. ("R"ead error, "F"ile not found, Out of "M"emory, Check "V"alue mismatch.) I also send a codepoint 7 (Bell). Other than their longer error message, FreeDOS original loaders of course have the dots display for each sectors read call.
This comparison is all about the FAT12 and FAT16 loaders, and only the FreeDOS load protocol ones. The FAT32 loaders are a little different. Comparing my FAT32 loader to theirs, they also made different decisions. My native (lDOS load protocol) loaders also differ in more ways.
---
l
Complete thread:
- FreeDOS on SBC188 - GizMo79, 12.09.2020, 01:26 (Announce)
- FreeDOS on SBC188 - Oso2k, 12.09.2020, 01:59
- FreeDOS on SBC188 - Oso2k, 12.09.2020, 02:03
- FreeDOS on SBC188 - GizMo79, 12.09.2020, 02:12
- FreeDOS on SBC188 - GizMo79, 12.09.2020, 02:16
- FreeDOS on SBC188 - Rugxulo, 12.09.2020, 02:36
- FreeDOS on SBC188 - GizMo79, 12.09.2020, 03:00
- FreeDOS on SBC188 - GizMo79, 12.09.2020, 03:42
- FreeDOS on SBC188 - Oso2k, 12.09.2020, 06:30
- FreeDOS on SBC188 - GizMo79, 12.09.2020, 11:59
- FreeDOS on SBC188 - Oso2k, 12.09.2020, 06:30
- FreeDOS on SBC188 - GizMo79, 12.09.2020, 11:58
- FreeDOS on SBC188 - ecm, 12.09.2020, 13:06
- FreeDOS on SBC188 - ecm, 12.09.2020, 14:56
- FreeDOS on SBC188 - ecm, 12.09.2020, 15:06
- FreeDOS on SBC188 - ecm, 12.09.2020, 15:21
- FreeDOS on SBC188 - GizMo79, 13.09.2020, 15:19
- FreeDOS on SBC188 - ecm, 13.09.2020, 19:36
- FreeDOS on SBC188 - GizMo79, 13.09.2020, 20:14
- FreeDOS on SBC188 - Rugxulo, 13.09.2020, 22:11
- FreeDOS on SBC188 - ecm, 13.09.2020, 22:19
- FreeDOS on SBC188 - Rugxulo, 13.09.2020, 22:11
- FreeDOS on SBC188 - GizMo79, 13.09.2020, 20:14
- FreeDOS on SBC188 - ecm, 13.09.2020, 19:36
- FreeDOS on SBC188 - GizMo79, 13.09.2020, 15:19
- FreeDOS on SBC188 - GizMo79, 12.09.2020, 22:06
- FreeDOS on SBC188 - ecm, 13.09.2020, 21:07
- FreeDOS on SBC188 - ecm, 13.09.2020, 21:39
- FreeDOS on SBC188 - GizMo79, 13.09.2020, 22:09
- FreeDOS on SBC188 - ecm, 13.09.2020, 22:12
- FreeDOS on SBC188 - GizMo79, 14.09.2020, 00:48
- FreeDOS on SBC188 - ecm, 14.09.2020, 04:48
- FreeDOS on SBC188 - GizMo79, 14.09.2020, 11:53
- FreeDOS on SBC188 - GizMo79, 14.09.2020, 12:05
- FreeDOS on SBC188 - ecm, 14.09.2020, 13:22
- FreeDOS on SBC188 - GizMo79, 14.09.2020, 13:31
- FreeDOS on SBC188 - GizMo79, 14.09.2020, 13:34
- FreeDOS on SBC188 - ecm, 14.09.2020, 23:31
- FreeDOS on SBC188 - ecm, 14.09.2020, 13:22
- FreeDOS on SBC188 - ecm, 14.09.2020, 04:48
- FreeDOS on SBC188 - GizMo79, 15.09.2020, 00:26
- FreeDOS on SBC188 - ecm, 15.09.2020, 10:03
- FreeDOS on SBC188 - GizMo79, 15.09.2020, 13:52
- FreeDOS on SBC188 - ecm, 15.09.2020, 15:15
- FreeDOS on SBC188 - ecm, 15.09.2020, 15:48
- FreeDOS on SBC188 - GizMo79, 15.09.2020, 21:19
- FreeDOS on SBC188 - ecm, 15.09.2020, 15:54
- FreeDOS on SBC188 - GizMo79, 15.09.2020, 21:25
- FreeDOS on SBC188 - Differences of loaders - ecm, 15.09.2020, 23:18
- FreeDOS on SBC188 - Differences of loaders - GizMo79, 18.09.2020, 00:55
- FreeDOS on SBC188 - Differences of loaders - ecm, 15.09.2020, 23:18
- FreeDOS on SBC188 - GizMo79, 15.09.2020, 21:25
- FreeDOS on SBC188 - ecm, 15.09.2020, 15:15
- FreeDOS on SBC188 - GizMo79, 15.09.2020, 13:52
- FreeDOS on SBC188 - ecm, 15.09.2020, 10:03
- FreeDOS on SBC188 - GizMo79, 13.09.2020, 22:09
- FreeDOS on SBC188 - GizMo79, 14.09.2020, 00:29
- FreeDOS on SBC188 - GizMo79, 15.09.2020, 00:14
- FreeDOS on SBC188 - ecm, 13.09.2020, 21:39
- FreeDOS on SBC188 - ecm, 13.09.2020, 21:39
- FreeDOS on SBC188 - GizMo79, 13.09.2020, 22:04
- FreeDOS on SBC188 - ecm, 13.09.2020, 22:10
- FreeDOS on SBC188 - GizMo79, 13.09.2020, 22:27
- FreeDOS on SBC188 - Rugxulo, 13.09.2020, 22:32
- FreeDOS on SBC188 - GizMo79, 13.09.2020, 22:42
- FreeDOS on SBC188 - Rugxulo, 13.09.2020, 22:32
- FreeDOS on SBC188 - GizMo79, 14.09.2020, 12:12
- FreeDOS on SBC188 - ecm, 14.09.2020, 13:35
- FreeDOS on SBC188 - GizMo79, 14.09.2020, 21:46
- FreeDOS on SBC188 - ecm, 14.09.2020, 23:22
- FreeDOS on SBC188 - GizMo79, 15.09.2020, 13:40
- FreeDOS on SBC188 - ecm, 15.09.2020, 13:53
- FreeDOS on SBC188 - GizMo79, 14.09.2020, 21:46
- FreeDOS on SBC188 - ecm, 14.09.2020, 13:35
- FreeDOS on SBC188 - GizMo79, 13.09.2020, 22:27
- FreeDOS on SBC188 - GizMo79, 13.09.2020, 22:13
- FreeDOS on SBC188 - Rugxulo, 13.09.2020, 22:21
- FreeDOS on SBC188 - GizMo79, 13.09.2020, 22:44
- FreeDOS on SBC188 - GizMo79, 13.09.2020, 22:47
- FreeDOS on SBC188 - GizMo79, 01.10.2020, 13:35
- FreeDOS on SBC188 - Rugxulo, 13.09.2020, 22:21
- FreeDOS on SBC188 - ecm, 13.09.2020, 22:10
- FreeDOS on SBC188 - GizMo79, 13.09.2020, 22:04
- FreeDOS on SBC188 - ecm, 13.09.2020, 21:07
- FreeDOS on SBC188 - Rugxulo, 12.09.2020, 02:36
- FreeDOS on SBC188 - Oso2k, 12.09.2020, 02:03
- FreeDOS on SBC188 - Rugxulo, 13.09.2020, 22:16
- FreeDOS on SBC188 - Oso2k, 12.09.2020, 01:59