On Thu, Apr 15, 2021 at 11:04 AM Liam Proven <lpro...@gmail.com> wrote: > > On Thu, 15 Apr 2021 at 01:16, Adam Nielsen via Freedos-user > <freedos-user@lists.sourceforge.net> wrote: > > > > Have you written down your tips and tricks for this anywhere? I find > > these sorts of things interesting to read, mostly for nostalgia > > reasons - as in finally learning about things that mystified me when I > > was younger. > > For DOS memory optimisation? No... I have considered it, but it's > quite a complex process and some of it depends a bit on other > knowledge (e.g. dependencies among DOS drivers, or the few drivers > that can be loaded either from CONFIG.SYS _or_ from AUTOEXEC.BAT). > > I tried writing up just the DOS disk drive letter assignment > algorithm, but even that is quite complex! > > Axioms: > • DOS only understands FAT12, FAT16 and in later versions FAT32. HPFS, > NTFS and all *nix filesystems will be skipped. > • We are only considering MBR partitioning > > So: > > • Hard disks support 2 partition types: primary and logical. Logical > drives must go inside an extended partition. > • MBR supports a legal max of 4 primaries per drive. > • Only 1 primary partition on the 1st drive can be marked "active" and > the BIOS will boot that one _unless_ you have a *nix bootloader > installed. > • You can only have 1 extended partition per drive. It counts as a > primary partition. > • To be "legal" and to support early versions of NT and OS/2, only 1 > DOS-readable primary partition per drive is allowed. All other > partitions should go inside an extended partition. > • MS-DOS, PC DOS and NT will only boot from a primary partition. > > Those are our "givens". Now, after all that, how does DOS (inc Win9x) > assign drive letters? > > 1. It starts with drive letter C > 2. It enumerates all available hard drives visible to the BIOS > 3. The first *primary* partition on each drive is assigned a letter. > 4. Then it goes back to the start and starts going through all the > physical hard disks a 2nd time. > 5. Now it enumerates all *logical* partitions on each drive and > assigns them letters. > 6. So, all the logicals on the 1st drive get sequential letters > 7. Then all the logicals on the next drive > 8. And so on through all logicals on all hard disks. > 9. Then drivers in CONFIG.SYS are processed and if they create drives > (e.g. DRIVER.SYS) those letters are assigned next. > 10. Then drivers in AUTOEXEC.BAT are processed and if _they_ create > drives (e.g. MSCDEX) those are assigned next. > > So you see... it's quite complicated. :-) > > Assigning upper memory blocks is _more_ complicated. >
I encourage you to write articles about FreeDOS. Your outline (above) about DOS drive letters would probably be very interesting to a lot of readers on the right websites. I write a lot of articles for OpenSource.com - including articles about FreeDOS. In fact, I've arranged with the editors to write a month-long article series about FreeDOS throughout June 2021. And OpenSource.com has run articles about FreeDOS from other folks, including Kevin O'Brien's recent article series about FreeDOS. I'm sure they'd be interested in running other articles about FreeDOS. I also write for CloudSavvyIT, including some FreeDOS stuff. Several of my early articles were about FreeDOS, and I recently posted two articles about DOS (both related to DOS text colors; I think they will show up in the next week or so). And I'm sure you can find other websites to write for. Generally, the websites that focus on open source software are more receptive to articles about FreeDOS. Look for a "contact us" link or an "editors" link on the website, and reach out to them. The secret in the publishing world is that most websites are hungry for new content, so if you come to them with an article idea (or better, a "first draft" for your article) they will probably say Yes. Jim _______________________________________________ Freedos-user mailing list Freedos-user@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/freedos-user