Page 1 of 1

Are Ben's books worth it?

Posted: Thu Aug 10, 2017 12:25 pm
by Octacone
I've got some money that I am willing to spend on...well...some books. Are Ben's books really worth that much?
Can I hear some general vertified experiences? Do they teach as well as what I've heard?
Are they written in a way that is generally easy to understand?
I would really appreciate some quality feedback.
Totally weird side question: approximately (really thin, average, thick) how "thin" is a single page? (asking it because I hope it is not easily tear-able).

Re: Are Ben's books worth it?

Posted: Thu Aug 10, 2017 12:49 pm
by dozniak
Yeah I think they're pretty thorough and practical.

Re: Are Ben's books worth it?

Posted: Thu Aug 10, 2017 4:43 pm
by narke
I own two of his books: The System Core and about the Virtual File System. They are worth to read but the only downside in my opinion is that there aren't too much code examples in the book itself, though you can contact the author and he would send you the whole source code (I haven't done that yet).
Anyway I plan to buy from his series about GUI and USB in some months.

Re: Are Ben's books worth it?

Posted: Thu Aug 10, 2017 9:14 pm
by BenLunt
Hi,

I thought I should comment too, if you don't mind.
Octacone wrote:Can I hear some general vertified experiences? Do they teach as well as what I've heard?
I am very interested in hearing some comments too. Other than this forum, have you heard elsewhere, and if so, I would like to know where that was.
Octacone wrote:Are they written in a way that is generally easy to understand?
I tried to write as if the reader knew very little about the subject, though some knowledge is a requirement. For example, they do not teach you how to program, program the x86, nor how to use a compiler or assembler. These things are prerequisites to reading the books. However, I explain why something is needed and how to implement it. Some say that I repeat myself throughout the text, but I do so to get a point across when that point is important.
Octacone wrote:I would really appreciate some quality feedback.
So would I...(smile)
Octacone wrote:Totally weird side question: approximately (really thin, average, thick) how "thin" is a single page? (asking it because I hope it is not easily tear-able).
Have you heard that the pages are thin? If so, where? The book is professionally bound using a professional company on a mass producing printing press. The paper is high-quality and does not tear very easily. The only thing I have found is that the cover tends to not stay closed, though this will happen to any book that is pressed open to stay at a certain page on the desk.

Now for some comments for you as well as other (potential) readers:
1) Please keep in mind that the books are written as if you have done little to no operating system development at all. Therefore, if you are at all fluent in OS development, you might find much of it boring and/or useless. However, with this in mind, I do put many comments throughout the books of quirks and other things a fluent programmer might not catch or know. For example, in another thread here in this forum, someone asked what the CS:IP register pair should be at boot time. This has been discussed numerous times in many forums and groups. In my opinion, it doesn't matter one bit what the CS:IP register pair is as long as you don't rely upon it. The CS:IP register pair could be 0010:7B00 for all I care, and your boot code should still function just the same. It is little things like this that I discuss in little side notes, peppered throughout the pages.

2) These books were/are done, for the most part, for my enjoyment. Therefore, and for example, Volume 4 has information about the BUS mouse. Yes, a mouse that is so for behind times, you can't even find hardware for it anymore. I did this, because I enjoyed the research and development of the chapter. However, keep in mind that reading that chapter might teach you how the BUS mouse is programmed, in turn teaching you how to program hardware.

3) Each volume is specific to a certain subject. For example, Volume 2 has quite a bit of information about creating a file system, showing details on a few known systems (FAT, ISO, etc), as well as creating a file system. However, it has very little to so with anything else that is not file system related.

4) Again, depending on your knowledge of OS development, you may or may not need one or more of the volumes in the set. If you have a good knowledge of OS development, you may only need Volumes 3 and 8. Volume 3 describing the details of the FDC and floppy programming, ATA(PI)/IDE controllers, and AHCI/SATA controllers. Volume 8, of course, is the USB volume (which is my favorite) and explains how to communicate with the UHCI, OHCI, EHCI, and xHCI controllers as well as common USB devices.

5) Volume 5 is not released and probably won't be since it doesn't have a lot to do with OS development, as well as any PCI programming needed for the other volumes are included in those volumes. I might change Volume 5 to something else.

6) Volume 7 is not yet released either, because it needs a lot of work. I have a working NE2k and RTL8139 network controller driver write up, as well as the start of a Network Stack, but it needs some more work.

7) Volume 6 shows the details and examples of a simple GUI, how to write to the VESA video screen, creating windows and objects. This one requires that you know a bit about mouse and keyboard input, explained in Volume 4.

8) I tried to write each book independent of another, not requiring you to have one volume to use another. Each book can be used by itself, as long as you are somewhat knowledgeable about programming.

9) Each book is written so that no underlining OS is needed. Each book is written to teach you, the programmer, how to directly communicate with the hardware, at an Port/Mem-mapped I/O level.

Anyway, I support all my work and if anyone has any questions, please feel free to ask. Once you have the book, simply send me a proof of purchase and I will send you the ISO of the source code. Why a proof of purchase? Imagine someone with the source code and not the book asking about a particular function within the code, while it is explained in heavy detailed on Page X, paragraph Y of Volume Z.

Another note is that I did not write the source code so that you could copy/paste it to your project. I wrote the source code to show how it can be done, leaving the implementation to you, the reader. You are to take the example source code and modify it and/or simply use it as a guide to write your own implementation. I won't do your homework for you.

I appreciate all the support I have received from the readers, the praise and not so praise, the corrections, the comments, etc. With this in mind, please note that my books may not be 100% correct, and I don't imply that they are. I wrote them for the enjoyment of the research and development, are correct to the best of my knowledge, and hope that others learn from my work.

Thank you for your comments, and I would very much appreciate any comments you or others in this forum might have.

Ben

Re: Are Ben's books worth it?

Posted: Sat Aug 12, 2017 3:32 am
by Octacone
@dozniak @narke
That is nice to hear.
I think that there shouldn't be too much code anyways. The point is basically to learn and to do it yourself. It wouldn't be fun if you could just throw something together without knowing why it works.
There should definitely be some code examples when it comes to some of the more complex hardware.

@BenLunt
Yeah I wanted you to comment, to see some legit thinking of yours.
I've mostly heard those nice comment on Amazon and Google groups occasionally.
It is perfectly normal to require some knowledge because OS-deving is not an easy topic.
Actually nobody has ever said anything about the thickness of the book, that is why I'm asking. Paper-cover sounded thin so I was just curious. =) forget about it.
I can't really call myself fluent. 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.
I want to have an entire collection so I am likely to buy them all (not at once lol). Maybe 2 by two or something like that.
Old hardware such as an already mentioned BUS mouse is not used anymore, but it can be useful to see how thing developed trough history. Backwards compatibility maybe and things like that.
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.
Media devices sound like something really interesting. (especially AHCI and some newer stuff) The only problem is not having a damn floppy disk itself for testing. I do have some old floppy hardware but not the actual diskettes. (are they one time only write btw?) I could do it just for fun I guess, not that I am ever going to use them for something specifically.
PCI is not that hard really, but if you know something that others don't it would be a nice thing to include it.
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.
GUI is currently in a galaxy far far away from me. Will take a lot of work before I get there.
I like the idea of each book being for itself.
Memory mapped hardware sound like something I don't know much about, will serve.
That is all perfectly fine, requiring a proof of purchase is something mandatory, you don't need to excuse.
As I said earlier there is really no point of copy-pasting an OS, that is just so low. Better learn and try it yourself, that if why you've choose this hobby I guess.
It is good to have a source close to you, if you have any bugs you can always check what you've done wrong.
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. 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.
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?

I hope you will answer my questions.
Cheers!

Re: Are Ben's books worth it?

Posted: Sat Aug 12, 2017 10:16 am
by BenLunt
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

Re: Are Ben's books worth it?

Posted: Mon Aug 21, 2017 7:37 am
by Octacone
@BenLunt

Thanks for answering. You answered everything I wanted to know. :=)
I am just wondering if you've ever heard of emulators. That statement about using DOS to gain hardware access is plain weird.
I guess I could emulate DPMI with Virtual 8086 mode, that shouldn't be too hard.
Also do you know if refurbished books always match the latest ones? My question is: does every book release have a different "other sellers" list, or "other sellers and offers" list doesn't care about different releases?

Re: Are Ben's books worth it?

Posted: Mon Aug 21, 2017 1:27 pm
by BenLunt
Octacone wrote:@BenLunt
Thanks for answering. You answered everything I wanted to know. :=)
I am just wondering if you've ever heard of emulators. That statement about using DOS to gain hardware access is plain weird.
Smile. I actually wrote the original UHCI, OHCI, and xHCI code for the Bochs emulator, which was then used by others to start the support for the QEMU USB emulation, which then the QEMU EHCI support was then used to bring back to Bochs. Volker did a lot of the updates and the EHCI stuff, but I did the core support for the first three.

I haven't used QEMU's USB emulation much yet, but plan to some time. Recently, due to another thread, I have found a few quirks with VirtualBox's USB emulation, one with the OHCI reset sequence, as well as a few others.

My intention with my book(s) is for real hardware, hence the DOS reference to get to a state that you can use real hardware with my examples. Even with an emulator, you still have to get to a User Interface that allows "hardware access" to run my examples.
Octacone wrote:I guess I could emulate DPMI with Virtual 8086 mode, that shouldn't be too hard.
DPMI is only used to allocate memory and use memory buffers larger than 64k in size, as well as a technique to access memory above 1meg, the device's Mem-mapped I/O area.

Please note that my examples are just that, examples. They do very little but the core code to show how to access the device. It is up to the reader, through research (using the book and other resources) and trial and error to create a proper and working USB driver.
Octacone wrote:Also do you know if refurbished books always match the latest ones?
I cannot guaranty that they will. The latest edition of the USB book has 580 pages, the 1st edition had 558 pages. I am sure that most places will display the page count.
Octacone wrote:My question is: does every book release have a different "other sellers" list, or "other sellers and offers" list doesn't care about different releases?
Since all books originate from one place, any sells within the past few years should be the 2nd Edition from almost anywhere. However, it is possible that a seller bought the book back when it was first released and still has it for sell. This could happen. So, I will comment again, if you wish to guaranty that you get the latest edition, get it from the horse's mouth, https://www.createspace.com/3760149.

Ben

Re: Are Ben's books worth it?

Posted: Fri Dec 15, 2017 2:33 pm
by Thomas
I have purchased the kindle versions of all of them. I really like them!. This is after all my personal opinion.

--Thomas

Re: Are Ben's books worth it?

Posted: Sat Dec 16, 2017 10:38 am
by Octacone
Thomas wrote:I have purchased the kindle versions of all of them. I really like them!. This is after all my personal opinion.

--Thomas
I am planning on doing the same. I already have 2 of his books and I can say that they are really worth it. Buying them all soon.