Page 1 of 1

would someone help me

Posted: Sun Jul 19, 2020 9:58 am
by Androv
would someone help me , i like computer so much and i dream to make my own os but unfortunately i have ADHD i tried learning programming for 6 years but returned with no practical ability cause of perplexity , i want someone to reference me sources assuming i have zero knowledge , strating from scratch building my own os , and i will be thankful :)

Re: would someone help me

Posted: Mon Jul 20, 2020 8:46 pm
by Seahorse
You mean start of learning programming or start of learning OS/system dev?

Re: would someone help me

Posted: Mon Jul 20, 2020 11:05 pm
by nullplan
OS development is one of the king disciplines of programming. The others being compiler development and 3D game development. It is ill-advised to try to build an OS as the very first thing. I would suggest you get familiar with C in userspace first, writing simple applications. Then slowly turn up the difficulty until you feel you are ready to work without a net.

When learning to dive, you wouldn't go to Mariana's Trench as the very first thing, would you? OS development is complicated, and as a beginner you will be quickly overwhelmed trying to keep all the things in your head. ADHD will not aid in this.

Re: would someone help me

Posted: Wed Jul 22, 2020 2:04 pm
by LegendaryTetra
Hello Hello, Let's start with the most important fundamentals to getting started...

How familiar are you With C programming?

I see you said you have 6 years experience, what languages have you used?

If you are very familiar with C programming, how about Assembly eg NASM? This is your hammer and screw driver to build an OS from scratch project :D

Re: would someone help me

Posted: Fri Jul 24, 2020 8:55 am
by Androv
Seahorse wrote:You mean start of learning programming or start of learning OS/system dev?
i mean to start programming from scratch till building my os

Re: would someone help me

Posted: Fri Jul 24, 2020 9:01 am
by Androv
nullplan wrote:OS development is one of the king disciplines of programming. The others being compiler development and 3D game development. It is ill-advised to try to build an OS as the very first thing. I would suggest you get familiar with C in userspace first, writing simple applications. Then slowly turn up the difficulty until you feel you are ready to work without a net.

When learning to dive, you wouldn't go to Mariana's Trench as the very first thing, would you? OS development is complicated, and as a beginner you will be quickly overwhelmed trying to keep all the things in your head. ADHD will not aid in this.
i just want someone to reference me sources(books) in order , so i can learn programming(assembly) from scratch till building my os as long as it's practicable

Re: would someone help me

Posted: Fri Jul 24, 2020 9:05 am
by nexos
I learned assembly language from http://www.tutorialspoint.com. They have tutorials for practically anything.

Re: would someone help me

Posted: Fri Jul 24, 2020 1:50 pm
by crosssans
The best way to learn is by practising (and it doesn't apply just to computer science, it's the same for every single domain; whether it's hobby or professional!) - Grab documentation, tutorials (although it's recommended to have textual tutorials instead of videos), example source code & even projects that uses the language(s) that you chose to learn; try to create/modify the source code and see what happens!

On the x86 architecture, I suggest you to start off by doing small programs on MS-DOS in Real Mode with NASM - The best program that allows you to emulate (and not virtualize) an x86 machine with MS-DOS is DOSBox; since it allows you to directly map folders & disk images to drive letters (for example, I can "mount" my home directory located in `/home/alex/` to drive letter C; that way I can then change my current drive to C: & thus I can access all of my files and run my assembled binaries from there!). There is a good tutorial about this software here: https://www.dosbox.com/wiki/Basic_Setup ... _of_DosBox

There is also a good website that lists all of the available interrupts in Real Mode here (yep, it's Ralf Brown's Interrupt List!): http://www.ctyme.com/intr/cat.htm (although I strongly recommend for beginners to use the "Category" section of the website instead of the "Interrupt table" section). When you choose a specific interrupt sub-routine, it tells you exactly what registers values to set & what interrupt to call; so this is really practical! :D

Once you have a bit of experience on this, you can try to make a simple boot sector that switches to Protected Mode & displays "Hello World" without using the BIOS interrupts (since you can't use them anyways, unless if you enable the Virtual 8086 Mode)! And then, you can try to do even more stuff from there :P - There is a good article on the OSDev's wiki that talks about the boot sequence, so that can be also useful for you: https://wiki.osdev.org/Boot_Sequence

Of course if you don't want to learn how a BIOS-based boot strap works, you can directly skip to how UEFI manages the boot-loading sequence (and that can be understandable since UEFI is less requiring in knowledge, see this article for more information: https://wiki.osdev.org/UEFI)

Anyways, that's what I suggest you to do but you are free to do whatever suits you the best - good luck & have fun in your operating system development journey :D

Re: would someone help me

Posted: Fri Jul 24, 2020 2:08 pm
by PeterX
I think crosssans has given good advice.

I would advice first writing applications - in any programming language you understand well. Be it C, Python, Basic, Pascal, C++, C#, Java etc.
Then learn C and x86 real mode (16bit) assembler. Then x86 32bit assembler. Then x86 64bit assembler. With each step x86 assembler is becoming more complicated, but the PC architecture gets more exciting I think.

I struggle with psychical illness, too. So I know about code not getting done and I don't recommend for ADHD to develop an OS. But if you really like it and really want it very much, then do it! It's not crazy to have an psychical illness. But it's crazy to choose OS development as hobby (for everybody). But I stick to it. So can you do, too, if you like.

Greetings
Peter

Re: would someone help me

Posted: Fri Jul 24, 2020 8:37 pm
by Seahorse
nexos wrote:I learned assembly language from http://www.tutorialspoint.com. They have tutorials for practically anything.
I overlooked that place before. What is your review of it? I got the impression it may have been so-so. But, hey I guess that's better than using no resource.

Re: would someone help me

Posted: Fri Jul 24, 2020 8:43 pm
by Seahorse
I wish this had a like feature for crosssans post.

Re: would someone help me

Posted: Sat Jul 25, 2020 3:01 am
by crosssans
I wanted to add that I have myself a slight form of ADHD with hyperactivity, yet this doesn't stop me to learn & create cool projects (such as making a kernel or writing a game engine for example; although I never finish them since I get attracted to new project ideas right away unfortunately #-o) - If you love what you do, nothing is going to block you from doing it whether there's an additional constraint or not; you just got to be patient, organized & motivated to learn and conceive new & unique things :mrgreen:

I think that the best way to fully develop a project from start to finish is to have a very, VERY clear mind about how the project is organized & implemented - and I can notice that the more I do this, the longer I will work on since I have the right objectives to fulfill. I am currently thinking on how should I implement my build system & I remarked that looking up at documentation on how each component works with each other reassures me on the complexity level of it - but that's just what I experience of course :P

Anyways, hope this will help you structure your project - I hope you'll have fun doing this :)

(Note: Thanks to PeterX & Seahorse's feedback, it means a lot to me! :wink:)

Re: would someone help me

Posted: Sat Jul 25, 2020 3:34 am
by PeterX
Seahorse wrote:
nexos wrote:I learned assembly language from http://www.tutorialspoint.com. They have tutorials for practically anything.
I overlooked that place before. What is your review of it? I got the impression it may have been so-so. But, hey I guess that's better than using no resource.
Yes, they are so-so. Not going into deep details. But good starting point. Books are better, but they cost a lot. I once and then got some precious informations from tutorialspoint.
crosssans wrote:you just got to be patient, organized & motivated to learn and conceive new & unique things :mrgreen:
Yes, true.
I also can recommend the book "Essentialism - the disciplined pursuit of less" which says: Don't do everything, do only important things. If it isn't a clear Yes, it's a clear No. We all tend to get lost in pseudo-important stuff. And many of us get distracted by other projects which keeps them from contributing to their main project.

Greetings
Peter

Re: would someone help me

Posted: Sun Aug 02, 2020 8:35 am
by Androv
thanks to all of you , i will follow your instructions and if anything stoped me i will return to ask

Re: would someone help me

Posted: Sun Aug 02, 2020 10:49 pm
by Seahorse
PeterX wrote:I think crosssans has given good advice.

I would advice first writing applications - in any programming language you understand well. Be it C, Python, Basic, Pascal, C++, C#, Java etc.
Then learn C and x86 real mode (16bit) assembler. Then x86 32bit assembler. Then x86 64bit assembler. With each step x86 assembler is becoming more complicated, but the PC architecture gets more exciting I think.

I struggle with psychical illness, too. So I know about code not getting done and I don't recommend for ADHD to develop an OS. But if you really like it and really want it very much, then do it! It's not crazy to have an psychical illness. But it's crazy to choose OS development as hobby (for everybody). But I stick to it. So can you do, too, if you like.

Greetings
Peter
I thought i was kind of the only one who wanted to "make my own operating system" one day.