om

For some reason I was not kicked off this list for being a flamer.

I was in a praticularly non-productive mood that day and tore into
everyone because of the obvious lack of design talent...

This time I have decided to take the opportunity to contribute my design
talent as it is the only thing I have to offer cuz I can't code worth
squat.... =\ 

The remainder of this posting will attempt to convey an aditude and
methodology for designing a truly good DOS and then apply that in the
form of a design outline for a DOS that definitely won't suck. 

om 

-- A Randian Perspective. 

The philosopher Ayn Rand, in her work "The Fountainhead" explored how
orrigional works compare to "second handness". The message being that
copying something is like diluting it... It becomes worse in the
process. FreeDos is currently at the level of MS-DOS 5.0 and will be
stuck there eternally unless it can be re-invented from the beginning. 

So to write the best possible DOS we must design it from scratch! This
may be a bit difficult to swallow as DOS has been set in stone for more
than a decade now... Still, I mean exactly what I say, for DOS to be
preserved for the future it must be completely re-designed from the
beginning! 

To do this properly we must understand what DOS does and why it was made
that way and then extrapolate those same motives into the present day.

The best question to start out with is "What does DOS add to a
computer?" 

A machine such as an Apple II can work just fine without an OS. The user
inserts his program disk and his data disk and then carrys out his task.
What the Disk Operating System does is allow a single disk to hold many
programs and many files of data and it gives the user the ability to
manipulate and use all of these. Furthermore, as a requirement for both
running on machines with 128k of RAM and for usability, the software
which does this should be as simple as possible. 

Today given an 800MHZ FSB Pentium IV the problem is to design a program
that will run on this machine and facilitate the managment of programs
and data. 

How do we do this? 

intel's (sic) refferance manuals tell us that real-mode is obsolete and
thet all new software should be written for protected mode. We also
require that our "DOS 2003" support a majority of the applications (but
not utilities!) written for classic DOS. 

Our challenge is, then, to write the world's first easy-to-use 32-bit
OS. I say first because every other so-called 32-bit OS is a gawdawful
monstrosity. (especially linux!!!!) 

Since we also want this to be a free OS we immediately set-asside the
propriatary compilers used to this point in the project and switch to
OpenWatcom. 

Because we want our OS to be good rather than bad we decide to support
open standards such as the MultiBoot specification. Our kernel,
therefore, will be a 32-bit Linear Executable that includes a multiboot
header. 

DOS showed us a very good way to organize a kernel into BIOS extension
drivers and the primary server. 

We know that our BIOS extension driver will need to support the classic
floppies, ATA hard drives, and ATAPI removable media. We know that it
will need to support the real time clock, and the most recient standards
for the legacy IO ports... ( such as EPP paralell ports...) 

Because we are writing this in 2003 instead of 1983, we implement a
modern hardware detection algorithm and attempt to detect hardware
through ACPI, failing that we look for PnP structures and, as a last
resort, we assume we are on purple-book compliant hardware. (It has
taken me many years to discover this hardware detection algorithm!) 

Because newer machines, such as the one sitting next to me, has as many
as 24 interrupt lines-- a great deal more than the classic 15!!! we need
to implement a driver architecture which facilitates the allocation of
IRQ lines. 

We can also design this layer so that users can link in additional
drivers such as network-boot options should such be necessary. The
primary driver interface, however, will be through a variant of
Config.Sys because this solution has proven itself to be the simplest
way for users to install additional drivers and features. 


The machine I mentioned above also has two CPUs. ;) as a good Operating
system, we should provide some type of processor device extension that
will cover both SMP and co-processor architectures such as modern
graphics cards... 

With the basic hardware detected, and with all CPUs running, we need to
determine what features we wish to add into our kernel. 

First, we should add a new binary format. In addition to .com, and .exe,
we should add .le (the primary output of our watcom compiler, and use
this .le format as our standard for new software. 

Because we are writing this entire thing in protected mode, we can add
as many features as we like. In this case we look at what a typical DOS
user will load in his config.sys and autoexec.bat and include these, as
standard, in the kernel. 

Here are the config files streight from this 486: 

--- BEGIN CONFIG.SYS ---
; DEVICE=C:\CTCM\CTCM.EXE
'''''''''''''''''
This program is a plug and play utility which is sometimes useful in
configuring my sound card. As I mentioned above, plug-and play should be
one of the primary hardware detection algorithms. In addition, there
should be a USB driver framework which maps all USB devices to: 

USBA001 ( which means USB hub "A" device 001") 
''''''''''''''''

DEVICE=C:\QEMM\QEMM386.SYS RAM BE:N
DEVICEHIGH=C:\QEMM\QDPMI.SYS
''''''''''''''''
These are the files of QEMM 9.0. 
They provide the following interfaces: 

LIM EMM 4.0
VCPI -- some version; I'll have to check...
DPMI 0.9
and Extended memory.

They also provide services for device drivers that compensate for
hardware paging: VDS (Virtual DMA services). 

All of these and DPMS -- A driver interface, should be standard in the
kernel. A complete set of DPMS (or other 32-bit standard) drivers should
be provided...
''''''''''''

FILES=60
BUFFERS=20
''''''''

These statements relate to 16-bit DOS. Because we are writing this for
32-bit mode and have access to the "Vector" container class in C++ we
can easily write the OS to support unlimited files streight out of the
box. 
'''''''''''

DOS=HIGH,UMB
DOSDATA=UMB
LASTDRIVE = Z

''''''
Wouldn't it be a great improvment to make these un necessary? 
I THINK SO!!!!
'''''''''
DEVICEHIGH=C:\DRIVERS\CMD640X.SYS /A33 /L
''''''

This is an extended driver for the hard drive controller. Our DOS should
use a high-performance 32-bit driver architecture....

'''''''''''
DEVICEHIGH=C:\DRIVERS\ECP300.SYS
'''''''

This supports the extended paralell port. 
'''''''

DEVICEHIGH=C:\DRIVERS\DAISY111.SYS
'''''''
Frankly, I don't know what this does. (it is a part of the driver for
the multi-IO card...) 

''''''
DEVICEHIGH=C:\SB16\DRV\CTSB16.SYS /UNIT=0 /BLASTER=A:220 I:5 D:1 H:5
DEVICEHIGH=C:\SB16\DRV\CTMMSYS.SYS
''''''''

A truly modern DOS will support most AC'97 chipsets and provide
sound-blaster emulation. I am fortunate enough to have a hardware
MPU-401 MIDI module though software emulation will probably be the
technique of choice on most systems....

'''''''''''''''
DEVICEHIGH=C:\DRIVERS\ch_ide.SYS /D:CH_CDROM
'''''''''''''''

This is the CD-ROM driver... Since most everybody uses them these days,
it should be a basic part of IO.sys and be configured in such a way to
allow CD-ROM booting....

''''''''''''''
DEVICEHIGH=C:\DOS\ANSI.SYS
''''''''''''''

This should be standard in IO.sys. _ALL_ DOS packaged utilities should
assume a PC-ASCII/ANSI terminal and be compatible with use on both the
standard CON device as well as the AUX device. (one should be able to
connect a color dumb terminal to his PC and still be able to use _ALL_
standard DOS utilities.

''''''''''''''
DEVICEHIGH=D:\WINDOWS\IFSHLP.SYS
;device=c:\dos\interlnk.exe
'''''''''''''

These are interesting because they relate to so-called "installable file
systems". This is an extemely powerful though poorly implemented system
in DOS. I think the current implementation should be scrapped and a
"FSCHAIN" system should be installed instead. This will involve a
convention whereby each file system will examine each logical volume as
it is inserted into the machine and automaticly detect the filesystem.
It should also provide a system for registering volumes at runtime... 

Thes mechanism should replace all previous designs... ISO-9660 should be
supported by the kernel as well as a HPFS-32 as the primary fixed-disk
filesystem. ( HPFS is an enhancment of FAT which places the file
allocation tables in the middle of the physical device so that the head
doesn't have to seek nearly as far to reach it...) 

Because we are designing DOS rather than copying it, we can also make
other enhancements such as the one mentioned in "Undocumented DOS" that
involved a tweaked filesystem with a non-fixed root directory.

Because we are designing from scratch, we will need to provide an
equivalent of Norton Utilities for the new filesystem architecture...

'''''''''''''''''
@echo off
SET CTCM=C:\CTCM
D:\WINDOWS\net start
'''''''''''''''''
This last line configures Windows networking.... We should design a
standard packet interface that is compatable with the widest variety of
DOS applications and interface well with windows 3.11... We should
therefore modify windows 3.11 to be compatible with our network
interface...
'''''''

prompt $p$g
''''''''''
This is actually a default with my DOS but sometimes I use this line to
change the color of the prompt and such. ;) 
'''''''''''

SET SOUND=C:\SB16
SET BLASTER=A220 I5 D1 H5 P330 T6
rem C:\CTCM\CTCU /S /W=D:\WINDOWS
SET MIDI=SYNTH:1 MAP:E
SET TEMP=D:\TEST
SET E=/S
''''''''''''''
I love E!
It is the best text editor in the universe! It even has built-in C
macros! =)  
(E is the standard editor for IBM PC-DOS 7.0) 
'''''''''''''

PATH C:\DOS;C:\RES;C:\QEMM;D:\WINDOWS;e:\bc45\bin;e:\tasm\bin
lh C:\DOS\MSCDEX.EXE /D:CH_CDROM /M:20 /E
smartdrv
'''''''

This is another function that should be standard to the kernel. A part
of the high performance filesystem should include caching and disk
scheduling....
It sohould also be noted that to support multitasking properly that
share.exe and windows 3.11 Vshare.386 should also be a standard part of
the kernel... These file locking mechanisms can sometimes be annoying so
there should be a way for programs to make "soft locks" such as how
netscape's composer extension will not lock the webpage being edited so
that I can load the page in both netscape _AND_ E at the same time where
netscape will, through vshare386, be notified whenever E writes a new
version of the file and offer to reload it....

'''''''''''''
mode con:lines=50
mode con:rate=30 delay=1
lh keyb dv,,c:\drivers\dvorak.sys
'''''''''''''

DVORAK rules! 
AOEU HTNS!!! =) 

'''''''
lh mouse /Y
'''''''

This should be a kernel level service using the COMn or PS-AUX device in
IO.sys.

'''''''''
C:\SB16\DIAGNOSE /S
C:\SB16\SB16SET /P /Q
lh C:\DOS\DOSKEY.COM
'''''''''''''''''''

Because we have a very large ammount of memory available for our shell,
there is no reason not to streamline things by integrating doskey into
it....

WINDOWS 3.11

I've already said quite a bit but I want to close with a note about
Windows 3.11.

It is a truly suckey OS but, neverthe less, it is still much much better
than linux because it is fairly streight forward to modify. Because we
are changing so much of the orrigional DOS architecture we will need to
make extensive modifications to windows 3.11. These changes should
involve replacing all of the relevant "VxD"/.386 drivers with ones
designed for the new DOS. For example the DOSX.386, that implements
preemptive multitasking on-top-of DOS should be replaced that one that
uses the multitasking functions of our DOS and supports full VESA
mode-switching and everything... 


-- 
Testimonial: I wasted 2,000 hours using Linux.

http://users.rcn.com/alangrimes/

==^================================================================
This email was sent to: [EMAIL PROTECTED]

EASY UNSUBSCRIBE click here: http://topica.com/u/?b1ddyi.b3hwCs.YXJjaGl2
Or send an email to: [EMAIL PROTECTED]

TOPICA - Start your own email discussion group. FREE!
http://www.topica.com/partner/tag02/create/index2.html
==^================================================================

Reply via email to