Octacone wrote:
I am still missing some crucial concepts such as: schedulers, multitasking, protecting level, message passing, all the boot-time stuff, VFS stuff, etc... I would like to learn some of that by reading your books.
Volume 1 has information on hardware task switching and a round-robin type scheduler, a little on protection levels, nothing on message passing though. Maybe a future edition. Volume 2 has information on Virtual File systems and how to keep your kernel file system independent.
Octacone wrote:
I wish it covered file-systems such as EXT2 but I guess if you figure out how one of them (FAT, ISO, etc) works you can figure out the other one easily. Does it cover FAT-32 btw? Self made file system is a nice addition.
Exactly. I cover the FAT file system, 12-, 16-, and 32-bit, since it is a fairly easy file system to use, and a very common file system. I then also cover a couple of hobby file systems just to show how you can make your own if you desire. Another is the ISO9660 as well as bootable CDROM's.
Octacone wrote:
I do have some old floppy hardware but not the actual diskettes. (are they one time only write btw?)
Standard 3 1/2" diskettes? Think of a single platter hard drive but floppy instead. They are re-writtable as many times as you wish, though depending on the quality of the disk, this may be short lived. I have some name brand diskettes that last quite a while, 1000's of format/write cycles. However, I have some very cheap diskettes that last about 20 cycles.
Octacone wrote:
I bet it will take a while for the networking one to be released. That is a really really huge area that needs to be covered.
It has been taking quite some time, due to the fact there is a lot of information to cover. I have a working code base that will announce itself on a LAN and see other systems on that same LAN, but don't have much after that, yet...
Octacone wrote:
I don't really like that you used DOS and some ancient compilers to create your books and projects. I hope that everything you've talked about is recreate-able on a modern day Linux with GCC and NASM, as a default environment most of today's OS developers use.
First a little background for others that may be following this thread. The reason I use DOS and some "ancient compilers" (smile) is that they are minimal requirement tools. For example, DOS is easily available, requires very little to no installation knowledge. For example, if you still have a floppy, I have a fully working 1.44Meg image, ready to be written to a floppy, which I even include a tool to write it with. If you don't have a floppy drive, there is information on where to get an installation ISO of FreeDOS and then the FreeDOS site has detailed instructions on installing on a local partition. The said floppy contains a bootable FreeDOS environment with all of the examples included. Of course, the floppy image could be ran in an emulator also.
As for the "ancient compiler", I use it because of the DOS environment the example code is designed for. The reason for the DOS environment is that it does not restrict me from using the whole system. No protection.
Now, please keep in mind. The example source code is all C code and is as portable as I can make it, only requiring one specific item and that is a DPMI, simply to allow me to allocate physical memory above the 64k/1Meg restriction that DOS has. However, the code is written so that if you know a little about a DPMI, you can modify it to work with any other compiler, as long as you modify it to read memory above 1 Meg and have memory buffers larger than 64k.
Most of the example code should be capable of being compiled as is on modern OSes, using modern compilers. However, please note that some of the code will not run on modern OSes due to the fact that they access memory-mapped devices, and any decent modern OS will forbid that. Hence the use of DOS and an "ancient compiler".
Octacone wrote:
I am actually talking about your teaching way not being tied to a specific development environment, for example using DOS calls to achieve something or using some special compiler stuff that is only available on a 70 year old machine, you know what am I talking about? Like not using the default system (Windows XP, DOS) for system calls for your own OS. Do you get what am I trying to ask? Something like that.
None of my code uses any system calls *except* for memory allocation. More specific, all of my code is as if you had just booted the machine and had no underlining OS to get in the way, which means you can't call any underlining OS services. (Again, except for memory allocation). Remember, my code is simply example snippets, code that is designed to be ran from the example it is written for, to show you how it can be done. It is up to the reader to take the knowledge from the book and the example code and write his/her own code base.
One of the main points of all my books is that there is no requirement for a host OS. All information is as if you were designing the host OS you would be making the said calls to.
Octacone wrote:
Another very very important question. Why are there multiple revision of the same book, why do they have different price tags on them? Are they really really different from one another? Is there are list perhaps to see the differences?
The processes I use to publish these books is fairly easy. All I have to do is have a .PDF file ready for printing. Therefore, if I add information, addition chapters, etc., all I have to do is send the new .PDF to the publisher and they print it. Period. In fact, if there was a single spelling mistake (which I am sure there are a few), I could fix that spelling mistake and send a new .PDF. Just that easy.
However, this makes for many different versions of the same book, as you pointed out. Therefore, I only do this when a major addition has been done. Then I document the changes and have an errata for each book. For example,
Volume 8 has only had a single edition update, the original release and a new edition. I then have two errata, one for each edition, including another document with notes and additions. See the top of page
http://www.fysnet.net/the_universal_serial_bus.htm.
Some of the books have an Amazon Kindle version, which I am starting to get away from since its formatting is not very compatible with this kind of book.
Either way, each edition is marked with a date of release, which I just noticed, I don't show this date on the web page anywhere. Something I will fix. However, each volume's web page has a link to the publisher's edition which will
always be the latest edition, period. Purchasing from the publisher might be a few dollars more, but there is no chance of getting a used or older edition. The publisher sends you a brand new, latest edition copy.
Octacone wrote:
I hope you will answer my questions.
Cheers!
Always. I support my work, and love to help others. Many people have helped me and I like to pass on the example and generosity.
I will make a note that I need to put the latest edition date on each volume's web page so that you can see the date. Also, each book has this dated edition on the 4th page of the book, page iii. Amazon, for example, lets you see these pages with "Look inside". You can then verify the edition from page iii.
Ben