Skip to content
buricco edited this page Aug 2, 2022 · 4 revisions

DOSLITE Wiki

This is the Wiki for the DOSLITE Project, maintained by its current developer.

What is DOSLITE?

DOSLITE aims to replace components of MS-DOS piece by piece, eventually to include the kernel. Although the DOSLITE components generally are meant to implement the versions of commands from MS-DOS 6.21 or PC DOS 7.0, they are also intended to be compatible with versions of either operating system down to version 3.3 with minimal degradation of functionality.

More importantly, however, in line with the concept of software freedom, DOSLITE is also made fully available to the power user to use, share, and improve (in any combination) as the user pleases.

Generally, if a utility is complete, this means it will be fully functional at the same level as MS-DOS 6.21 (or, if it does not exist on MS-DOS, PC DOS 7.0). There are some cases where a PC DOS 7.0 version of a utility will have functionality that the DOSLITE version does not. Generally, if you know how to use or have documentation for the MS-DOS version of the utility, it will apply to DOSLITE.

Why DOSLITE?

The objective of DOSLITE is a smaller implementation of MS-DOS 6.21.

I have noticed that MS-DOS 6.21 can be a bit too heavy for particularly older computers (especially XTs and low-end ATs). I myself maintain an IBM PS/2 Model 30/286, which is an example of a low-end AT (being a 286/10 with 1 MB of RAM). It is more useful on these machines to keep the DOS at version 3.3.

The DOSLITE versions of utilities often have the full MS-DOS 6.21 functionality, with the exception of the built-in online help, but a footprint more comparable with MS-DOS 3.3; this makes them more useful to these older computers.

What about FreeDOS?

If the reference to software freedom makes DOSLITE sound a lot like FreeDOS, it is not entirely a coincidence. Both operating systems are MS-DOS clones, and both operating systems aim to maintain software freedom.

The similarity ends there: where FreeDOS is the "GNU" of MS-DOS clones, DOSLITE aims to be the "BSD". As one example, FreeDOS applications are often bigger but more powerful versions of those from MS-DOS, while their DOSLITE counterparts aim to be exactly as powerful as those of MS-DOS and, often, smaller. "Codegolfing", or the process of whittling away code to produce the smallest result, is not uncommon.

The "BSD" analogy regarding DOSLITE extends to the licensing. If code is given to me and I am unable to use it under terms comparable to the standard BSD license (such as the modified UIUC license I use for most of my code, or the MIT license used for the opened MS-DOS 2.11 source, some of which has indeed been incorporated into DOSLITE), I will not incorporate it into the project.

Why no kernel yet? / Why is this mostly high-level stuff?

This is, admittedly, a common failure mode of these projects. Unfortunately, I'm not very well versed in that kind of programming.

The best I can hope for right now is to try to figure out ways to improve the MS-DOS 2.11 kernel (which would not actually save that much work, I suspect), to gradually bring it up to 3.31 and then 6.0 level. Alternatively someone could Chinese-wall the 6.0 source code ("explain it to me like I'm 15").

I wrote a COMMAND.COM clone 20 years ago, and it is too buggy to use. I wrote part of one recently, and it is even worse. Perhaps my best bet is, again, to try to hack the 2.11 version - and again I've done this, but I'm having trouble figuring out how to implement the most important parts because I am a C programmer, not an ASM programmer. I've had to learn ASM in order to get the size of these tools down.

I'm trying to figure out from other people's freely available code how to do other important things. There is a FORMAT command I can use but I want to rewrite it in assembler to save space, and the code is too messy for me to understand. I cannot understand the code of Ranish Partition Manager, which is public-domain, and my best bet at understanding the necessaries of implementing FDISK.