Re: Ia32

From: Beth (BethStone21_at_hotmail.NOSPICEDHAM.com)
Date: 08/30/04


Date: Mon, 30 Aug 2004 16:11:41 GMT

wolfgang kern wrote:
> Hi Beth,

Hi wolfgang :)

> a very well done collection, I may add a few comments.

Please, carry on...

> Hi Luca,
>
> A confusing jungle?
> Yes, but don't hesitate to continue your attempts.
> You are very young now, so you are allowed to almost forget about
> historical (museal relicts) for your target in writing an Os which
> may become part of the future soon.

[ Oh, indeed...were we all able to so easily forget "real mode addressing"
and early versions of Windows, eh? ;) ]

> But it wont hurt to know about things that already exist, even
> they are marked as obsolete yet.
>
> I think, if you start yet, you may skip all CPU's before x468,
> or even before Intel P4 (pentium 4) and AMD K7.

[ Oops, typo...that's "x486", not "x468"...don't worry, there's not another
whole family of processors yet mentioned or anything, wolfgang just slipped
on the keys typing (well, there are 68xxx processors but these have nothing
to do with x86 PCs or anything ;) ]

> The 'obligatory' backwards compatibilty will give you the
> ability to program/control older chips anyway.

[ Oh, yes...true enough, true enough...the dreaded old "backwards
compatibility" keeping a late '70s chip like the x86 still alive as it
approaches its 30 year anniversary soon enough... ]

> Writing an Os sounds easy, and in fact it is.
> The very heavy steps are the huge amount of different hardware around,
> and the often not well (or even not) documented hardware features.

[ Indeed...and, in both cases, Microsoft serve as poor role models...that
gargantuan levithian they create in Windows is far too much even for a
commercial mass-market OS...and even then, none of it is "hard" but there's
just so much of it...a basic OS - _even_ if employing luxuries like even a
GUI (see "Menuet"...assembly-based GUI OS on a floppy disk ;) - does not
need to be _anywhere near_ such absurd sizes...Microsoft are the yardstick
for the definition of "bloatware programmers"...

And, also, Microsoft are a poor role model regards the hardware issue
too...because the universal hardware support for Windows makes it look too
easy...but then this is a large part - a physical barrier - in how
Microsoft maintain their OS monopoly on x86 PCs...

The story here is basically:

Intel "hacked" in a short-sighted "real mode addressing" scheme into the
x86 ("640KB is enough for anyone" ;)...the "standard" developed by IBM and
third-party manufacturers to supply "device drivers in ROM" via the BIOS
interrupts was a scheme abruptly ruined...when Intel, in "fixing" their
previous mistake of "real mode addressing", saw no option but to
restructure the entire memory addressing scheme with "protected mode"
(though this added a previously only "mainframe" level of MMU - memory
manager unit - into the x86 microprocessor, so it wasn't all bad news
;)...Microsoft and others stepped in with their _proprietary_ solutions to
the missing BIOS routines on a platform who's largest feature was its array
of diverse hardware configurations..."device drivers" are, indeed, the
correct solution...in a sense, the BIOS _was_ a set of "universal device
drivers" but it was not multi-tasking aware and was rendered useless - due
to incompatible addressing between the "modes" - when "protected mode" was
engaged...but Microsoft's device drivers followed a completely proprietary
Windows-specific format that rendered them somewhat useless to any other OS
(to be fair, _ALL_ the OS manufacturers were trying the same trick of
making PC hardware "theirs" with proprietary solutions (indeed, if some had
only been less "greedy" and co-operated to get a _UNIVERSAL_ driver model
set up early on, then the story might have been completely different)...but
Microsoft succeeded to completely win that battle and remove all
competition)...

Now, when a hardware manufacturer creates hardware and wishes to sell it to
a mass-audience, there is no real choice in the matter...90+% of machines
on Earth are Windows PCs...you know what I mean? If you don't create
Windows drivers for your PC hardware then you are _severely_ limiting your
market and potential sales...so, it's somewhat "obligatory" to create a
Windows driver...of course, it's the _third-parties_ who write this
software for their hardware (a necessity; Without appropriate drivers, the
hardware just can't be used, however good that hardware is
technically...hardware and software _depend_ on each other)...and Microsoft
just sit back - having secured "monopoly" - happily collecting these
drivers and possibly redistributing them via "Windows Update" even...

Which is why Microsoft are misrepresentative of the actual problem in OS
writing: That of "hardware support"...they actually do very little about
this (in fact, Microsoft contribution could even be viewed a touch like
"blackmail"...they know how much the hardware people are _obligated_ to
support Windows and use this to, well, put Microsoft Windows logos onto
your keyboard, "Designed for..." badges onto your PC box, lately Windows
EULAs are _stamped_ onto the PC boxes permanently as *ahem* "anti-piracy",
they say (dubious, really...Windows is installed on the _hard drive_, after
all, not the PC box ;)...and then Microsoft gain a massive advantage in
that they "specify" new "standards" and "protocols" that, again, hardware
manufacturers are obligated to follow for their hardware to work properly
and fully on the platform where most sales will happen...allowing Microsoft
to code up their ACPM routines into Windows _before_ even announcing - via
what is almost like an "internal memo" - to the hardware manufacturers that
they're now obligated to follow yet another Microsoft "standard" or they
risk their hardware looking poor next to competitors on the Windows
platform...the only platform that matters to hardware manufacturers looking
for _large sales_ (90+% of all machines, remember ;)...

Hence, Microsoft give the impression that OSes need to be gargantuan beasts
so monsterously large as to scare the gods at Mount Olympus...and they give
the impression that hardware support is almost "automatic", it's so
effortless...both impressions are inaccurate...

As wolfgang says, a basic OS is actually relatively easy (at least, in
relative terms...and a case of "easy steps" but that there's a lot of steps
that must be taken..."tedious" will hit you first before "complex", so to
speak ;)...but when it comes to hardware support? Well, Linux works its
*** off and exploits "thousand eyes" world-wide driver development...it
does rather well at this but it's always two steps behind (remember how
Microsoft actually _specify_ some of these "standards" and, thus, can write
their support for it, before hardware manufacturers even know they are
apparently all going to have to follow it soon enough ;)...and it's the
work of a _lot_ of people and would actually be physically beyond the
abilities of a single developer to do alone...

ReactOS is taking the "cheeky" route around this by making itself a
binary-compatible Windows "clone" and, thus, it can use Windows own drivers
directly...but, of course, because Windows drivers are so "Windows
specific" that you do, indeed, have to create a pretty accurate "clone" to
Windows...now, it's a worthy enough pursuit - and good luck to them - to
merely create a version of Windows _without_ Microsoft involvement (might
be the "escape route" for those who still want Windows when "Palladium"
shows up...as I'm sure ReactOS will _NOT_ be "cloning" that part of
Windows...perhaps leading to a "split" that ReactOS carry on with the style
of Windows we're currently enjoying while Microsoft will be going around
"locking in" poor old Clueless Newbies with their "propoganda" that handing
the keys to your data to Microsoft is a wise thing to do ;)...

But, lest this sounds a touch hopeless (well, these are the "big guns" and
they can't find a method that yet cracks Microsoft's armour), the point is
that an OS only needs that "hardware coverage" when it's intended to be a
"mass-market" product...writing specifically to the hardware that you have
personally with your PC or a basic set of "generic" devices to grab a
reasonable set of machines...this works perfectly well...it only presents a
problem when you need to cover a large amount of hardware and cover every
single product - "mainstream" or "obscure" - for wide marketing across any
and all PCs...

Well, at first, you don't need to directly bother with that...in that you
can develop the OS for a set of fixed hardware configurations to get it
working...and should it later prove to become a popular platform, then so
long as third-parties and interested developers have the means and
documentation for creating additional drivers then the support can build up
and "snowball" naturally...this is, in fact, basically how Linux got to the
position its in...developers add on drivers for the devices they personally
have and are interested in then "contribute" it - in the "open source"
fashion - to the wider Linux community...when developers everywhere are
doing this then the "portfolio" of device drivers expands rapidly...and, in
fact, if the platform gains sufficient ground and represents worth the
investment of hardware manufacturers directly creating drivers then, for
example, as nVidia have an annoying policy (unfortunately becoming more
common...is Microsoft paying them? Well, they've been found _guilty_ of
unfair competition by _bribing_ people to "bias" to their OS in that DoJ
case) of not publishing their hardware specifications to the public then
nVidia themselves have created the Linux drivers (but one has to suffer an
"advert" of the nVidia logo appearing as the X server boots up...they don't
know their audience very well, do they? They'll likely _lose_ sales and
goodwill for pestering Linux users so, not gain any extra from all the
"free advertising" ;)...

And one more solution is coming onto the horizon (that Linux is also being
coded to support)...it's the "retaliation" from the hardware companies
themselves to being "remote controlled" by Microsoft...everyone has "pride"
and they don't like being told their jobs by a "bloatware" software
manufacturer who didn't even know how to write a proper GUI OS for a decade
or so - and, arguably, the "unkind" version many might say is that they
_still_ don't know how to write a proper GUI OS even now - and so they want
to "release" the stranglehold of the "monopoly"...

So, there's also the "UDI" project ("Uniform Driver Interface") to
consider...the hardware manufacturers _finally_ put their quarrels amongst
themselves to one side, realising that if they'd only got together to
develop a "protected mode" multi-tasking equivalent of the BIOS then
Microsoft's monopoly might never have gotten so bad...and they are creating
that "standard" for device drivers that has no proprietary ties to any
particular OS..._IF_ this idea picks up then that would finally solve the
"hardware problem" in that you merely add support for UDI and, Hopefully,
as a single UDI drivers development covers all UDI-supporting OSes in one
go (and doesn't require a new and separate driver development for each and
every OS), hardware manufacturers will start also coding up UDI drivers for
their hardware...then _everyone_ would enjoy what only Microsoft currently
can...that of the "hardware coverage" being solved for you by hardware
manufacturers writing the device drivers to work with your OS, rather than
scrambling in the dirt looking for "technical specifications" for a million
devices and following simply making a "hard slog" through them all
one-by-one...

It's interesting - but obvious - to note Microsoft's _absence_ from the UDI
project while every other big name (and _ALL_ the companies Microsoft has
pissed off over the years, such as Sun Microsystems and IBM ;) seems happy
to be involved...must be the only big hardware-related project of this size
in which Microsoft _haven't_ inserted an "operative" to dictate what
everyone else must do, whether they like it or not...what's even more
interesting is the presence of Lockheed Martin (not their usual territory),
suggesting that it's not only the DoJ (read: US government) who are not
particularly happy with one company - Microsoft - holding so much power all
to themselves...

UDI has the means to break Microsoft's monopoly properly and
permanently...but it _needs_ to be supported and it needs to "get lucky"
that hardware manufacturers will start consider coding for it and...and...a
lot things need to fall into place but, if it works as intended, it returns
what we've wanted all along: A _level_ playing field (well, Microsoft dirty
tricks temporarily ignored...but these should be easier to counter when OS
products otherwise have a level playing field because not merely one firm
and one firm only holds all the cards ;)...

> But anyway, you are welcome to ask any question here or in
> 'news:alt.os.development'.

[ Ah, my ISP sadly dropped "alt.os.development" without warning or I'd
still pop in there once in a while... ]

> I've got some experience by writing
> my KESYS, and I'm willing and happy to share what I've gathered so far,
> with a fast learning youngster, like you seem to be ;) :)

[ Cool :) ]

Beth :)


Quantcast