That's getting close to the truth. Bill Gates made 40 gigadollars last year which means that a lot of PC's are running with M$ software. I don't think that anyone wants to throw away that kind of money and go to a new platform which may not have the kind of support they need for several years.
So with all of us not wanting to spend more money we find ways to use the old stuff on our new PC's.
And as for where this all started, IMHO it started long before there was any 8086's or 8088's. Much of the structure of the BIOS and DOS has it's beginnings in CP/M 1.4 for the 8080.
And as for the architecture of the x86, IMHO that comes from the 4040 through the 8080 to the 8086. It was all very logical. For example, memories at the time were very slow. To speed them up, it was necessary to assert RAS before CAS, low address bits before high address bits. Intel just couldn't put enough transistors on silicon to do it the right way. And everybody had software that ran on the old hardware and didn't want to rewrite software to run on a different architecture.
Some manufacturers did have hardware that was well thought out (the motorola 68xxx for example) running on for the time well thought out operating systems (the MAC OS). But that technical superiority ultimately left Apple with less than 5% of the market while Wintel made giga dollars cornering the market. It's all about having lots of software for the end user to use to run his spread sheet, word processor or ... and the ability to market them. And if Bill is anything, he is good a selling his ....
Six months ago when I joined this list, there was a discussion similar to the current one. Some of us pointed out that main frames didn't have BIOS's but a simple (3 instruction) boot loader, that loaded a loader to load the OS and that was really what the BIOS was doing for Wintel. Linux does its own but very similar thing. Since that was the Wintel/Mainframe way of doing things, the flame throwers came out.
As I remember my first Pc, the BIOS provided some very basic hardware interfaces that can't (couldn't) fit on my 360 (or 180) K floppy drive and I couldn't afford a 2 megabyte (that's right, megabyte) hard drive, and it loaded two routines which were packed right behind the boot sector on the floppy: msdos.sys and io.sys (depending on the OS used DR-DOS, PC-DOS or MS-DOS) and then command.com. If I was brave enough, I could mix and match, as I did by using msdos.sys and io.sys from M$ and command.com from DR. (since M$ "borrowed" DOS from DR through QDOS they were and still are largely compatible) (some think software piracy is wrong only if you steal from Bill).
Today I have a 20 gigabyte hard drives and I don't think that the low level interface routines need to be embedded in ROM. And if I don't need to embed the low level drivers in ROM, then they can go on a hard drive with everything else. That said then it would seem to me that:
Preloader(3 instructions/MB unique)->loader->(BIOS->OS)
ought to work for all operating systems and all platforms and should be cross platform C compatible. Some of the libs would be hardware dependant so that the #include's are still necessary. (ie. #include <linlib.h> and #include (i440FX.h> for example) and there might be some other unique libs.
The new BIOS could be installed by using a program similar to fdisk with the following assumptions:
1. There is a ROM on the motherboard that contains the preloader.
2. The partition table resides in sector 0 and contains the loader (no change from now).
3. The remainder of cylinder 0 is reserved and contains a configurable BIOS either preinstalled by the manufacturer, by a value added reseller or the end user (the first partition begins at cyliner 1 so we still only have 4 partitions). An initial bios is placed there by the fdisk at the time the disk is partitioned and could be replaced at anytime in the future by rerunning the fdisk without changing the partition table. The BIOS would be loaded into shadow ram starting at location F0000 by the loader (to make it compatible with current practice but could be loaded at any other memory location compatible with the OS).
The BIOS itself could be configured with hardware unique drivers for the video card, unique ide/scsi drivers etc. which might be optimized for caching etc. As long as the BIOS is loadable from the hard drive, it can be made to look anyway you want, do anything you want and be configurable anyway you want which gives us the ultimate flexibility.
I guess the point I'm reall trying to make is that while loader's and BIOS's are different they are definitely not mutually exclusive but are complimentary and by using both, maybe every one wins.
At 04:04 PM 7/16/99 -0230, you wrote:
Niklas Ekström wrote:
I don't think BIOS designers are to blame for the incredibly stupid hardware constructions of the IBM-PC compatible computers. I don't even think you can blame the Intel engineer for that, since they did what they had to do to keep their customers. Mostly it's all IBM's fault! ;)
I blame everybody, including customers :-)* The architecture should have been better designed in the beginning, but nobody knew better, the customers were reliant on the old technology. the only way is to ease people out of it. Linux would be *much* more popular if it ran everybody's crappy win32 apps, even though many UNIX apps are way better (GIMP, TeX, etc).
So really there isn't much to discuss. If you want to make your BIOS IBM-PC compatible, you will end up with the same stuff as always before, but if you are ready to let the compability go you can do something much better.
Not quite. Look at the Linux kernel, which managed to ease people into radically new formats, a.out->ELF. It wasn't perfect, but it worked. I don't know anybody with a.out binaries.
I think OpenBIOS should be configurable in the same way, and I'm obviously not the only one. You could have an 'old-BIOS' configuration, while developing a fancy new OpenBIOS way that eliminates limitations and is designed to be easily 'upgradeable.' If it's there, the Linux kernel guys could do a similar thing, allowing 'old-BIOS' or OpenBIOS loading. Those who run certain other OSes could stick with old-BIOS while those of us with Linux-only machines could test and use the new format. Maybe something could be put in to allow the kernel to find out which kind of BIOS is loading it and adjust itself accordingly.
James Oakley jfunk@roadrunner.nf.net
To Unsubscribe: send mail to majordomo@freiburg.linux.de with "unsubscribe openbios" in the body of the message
- To Unsubscribe: send mail to majordomo@freiburg.linux.de with "unsubscribe openbios" in the body of the message