Advertisement

A Collaborative Free and Open-Source OS?

Started by April 06, 2014 07:22 PM
115 comments, last by Tutorial Doctor 10 years, 9 months ago

There you go

I tried the first few tutorials but got bored very quickly. It will take a really long time before you can do any meaningful with your OS.

Your best bet would be to use something like Linux From Scratch and build upon that.

Cheers

If you ever made any demonstrations (demos) during the Amiga era, you would know how hard it is just to get even the simplest things working.

In general, for OS development, you have to know every bit of your hardware, get to know the whole instruction set (assembler/machine code instructions), look at pin layout and addressing and how to properly communicate with the different chips and busses on your computer. You have to know every detail on how to set up the timer chip, interrupts, and properly handle those. You have to set up a flat and protected memory mode (I think 'x86 CPUs STILL start up in REAL MODE.) You have to implement paging, a driver architecture, threading system, securing your kernel with proper communication between RINGS. (That is kernel mode/user mode/etc, essentially which privileges you are allowed on the CPU.) You have to get into every little detail on OS concepts. How to load files into memory, and run the software. You have to interface with hardware through drivers you make. Most hardware vendors DOES NOT even supply any technical documentation at all, which is why Linux struggles sometimes.

I haven't even started. None of these topics are trivial. I know a lot about these things because I have a special interest, but I would probably STRUGGLE a great deal if I ever were to actually start writing my own OS.

You have to be a wizard to be able to pull this through. Actually you have to be a lot of wizards, because that is what Apple and Microsoft has: LOTS of wizards that are experts on the field. What makes you think you can make something better than all those wizards together? Alone? With no cooperation from hardware vendors, because they just consider you too small to waste their time?

I started to make a disassembler for 680x0 once, trying to make it scriptable so you could easily add more processors later. Here is part of the code to detect instructions:


[BTST       :111111001:0000100000xxxxxx00000000dddddddd]
[BCHG       :111111001:0000100001xxxxxx00000000dddddddd]
[BCLR       :111111001:0000100010xxxxxx00000000dddddddd]
[BSET       :111111001:0000100011xxxxxx00000000dddddddd]
[MOVES      :001111001:00001110xxxxxxxxxxxxx00000000000:SUPERVISOR]

A massive table of matching rules.

Here is the output of the first few lines of code for "Ultimate Soundtracker 1.21":


00000000: 4EB900001EB4   JSR $00001EB4.L
00000006: 4EB900006418   JSR $00006418.L
0000000C: 4EB9000020AA   JSR $000020AA.L
00000012: 4EB90000004C   JSR $0000004C.L
00000018: 610005CC    BSR.W $000005E6
0000001C: 610002AE    BSR.W $000002CC
00000020: 61000192    BSR.W $000001B4
00000024: 610000D4    BSR.W $000000FA
00000028: 0CB9736F6E6700002984 CMPI.L #$736F6E67, $00002984.L //'song'
00000032: 66000008    BNE.W $0000003C
00000036: 4EB900002270   JSR $00002270.L
0000003C: 0839000600BFE001  BTST #$6, $00BFE001.L //CIAA, PRA - /FIR1 /FIR0 /RDY /TK0 /WPR0 /CHNG /LED OVL
00000044: 670009BC    BEQ.W $00000A02
00000048: 6000FFCE    BRA.W $00000018
----------------------------------------------------------------
0000004C: 207900001EB0   MOVEA.L $00001EB0.L, A0
00000052: 317C0AAA0002   MOVE.W #$0AAA,$0002(A0)
00000058: 317C08880006   MOVE.W #$0888,$0006(A0)
0000005E: 317C0666000A   MOVE.W #$0666,$000A(A0)
00000064: 4E75     RTS
----------------------------------------------------------------
00000066: 207900001EB0   MOVEA.L $00001EB0.L, A0
0000006C: 317C00A00002   MOVE.W #$00A0,$0002(A0)
00000072: 317C00800006   MOVE.W #$0080,$0006(A0)
00000078: 317C0060000A   MOVE.W #$0060,$000A(A0)
00000080: 207900001EB0   MOVEA.L $00001EB0.L, A0
----------------------------------------------------------------
----------------------------------------------------------------
00000086: 317C0BA00002   MOVE.W #$0BA0,$0002(A0)
0000008C: 317C09800006   MOVE.W #$0980,$0006(A0)
00000092: 317C0760000A   MOVE.W #$0760,$000A(A0)
0000009A: 207900001EB0   MOVEA.L $00001EB0.L, A0
----------------------------------------------------------------
----------------------------------------------------------------
000000A0: 317C005B0002   MOVE.W #$005B,$0002(A0)
000000A6: 317C00490006   MOVE.W #$0049,$0006(A0)
000000AC: 317C0006000A   MOVE.W #$0006,$000A(A0)
000000B4: 207900001EB0   MOVEA.L $00001EB0.L, A0
----------------------------------------------------------------
----------------------------------------------------------------
000000BA: 317C0A5A0002   MOVE.W #$0A5A,$0002(A0)
000000C0: 317C08280006   MOVE.W #$0828,$0006(A0)
000000C6: 317C0606000A   MOVE.W #$0606,$000A(A0)
000000CC: 4E75     RTS
----------------------------------------------------------------
000000CE: 207900001EB0   MOVEA.L $00001EB0.L, A0
000000D4: 317C0C000002   MOVE.W #$0C00,$0002(A0)
000000DA: 317C09000006   MOVE.W #$0900,$0006(A0)
000000E0: 317C0700000A   MOVE.W #$0700,$000A(A0)
000000E6: 223C0000000F   MOVE.L #$0000000F,D1
000000EC: 4EB90000188A   JSR $0000188A.L
000000F2: 51C9FFF8    DBF.W D1, $000000EC
000000FA: 0CB90000000000002984 CMPI.L #$00000000, $00002984.L //'    '
----------------------------------------------------------------
00000104: 67000004    BEQ.W $0000010A
00000108: 4E75     RTS

Even a "small" thing like this is a massive task...

Advertisement

In general, for OS development, you have to know every bit of your hardware.

:)

Here is part of the code to detect instructions:

[BTST :111111001:0000100000xxxxxx00000000dddddddd]

(Assembly) code for which system architecture (linux, Windows, mac, myOS etc.)?

UNREAL ENGINE 4:
Total LOC: ~3M Lines
Total Languages: ~32

--
GREAT QUOTES:
I can do ALL things through Christ - Jesus Christ
--
Logic will get you from A-Z, imagination gets you everywhere - Albert Einstein
--
The problems of the world cannot be solved by skeptics or cynics whose horizons are limited by the obvious realities. - John F. Kennedy

Now that I think about it, perhaps an OS with AI would be the best OS.
I used this software once that I can't find anyone called Cynthia 3.0. It was pretty much a chat bot whose image and animation you could change. You could teach it like:
"The sun is a big ball of burning gas in the sky."
This information would be saved to a text file.
Then you could type "what is a sun?"
And it would respond "The sun is a big ball of burning gas in the sky."
Creating a useful enough AI for such a system as seen in sic-fi movies doesn't seem far off with technology like this around, other than voice recognition files, and realistic text to speech recordings.
I myself am working on a pretty realistic AI system that started as a way to detect objects like we do in real life using senses.
I just picked up a new term called "fuzzy logic." That is what such a system as JARVIS would need to use.
To make such AI, You would need the most skilled people in every major science, medical, and artistic field (artistic if you want to make an iron man suit). And you'd need a good and simple yet effective plan.
Perhaps you'd need a cross of augmented reality and virtual reality to get sight right for iron man.
This topic has turned rather fantastic. Haha.

Have you heard of JARVIS OS? It's being made by a group of 7 people with an average age of < 20. The founder is less than 20 (last time i checked).
Making something as awesome as this is simply hard. Take it one step at a time.
For example, you can start with "JARVIS, search for Iron man on google" then "JARVIS, backup all my phone data and check my schedule" till you reach "JARVIS, make me a watchdogs duplicate and an engine 10 times more efficient than cryengine+unreal". Eventually, it'll reach "Kitt (do you know Kitt?), attack mode". Come to think of it, Kitt is better than JARVIS (name wise).

Take it one step at a time? You missed a lot of of steps between the first two and the third. I can write an irc bot that can do the first command in a minute (Hell my 15 year old intern showed me his bot which would return the first results of a search on google or youtube) and the second in a day, but reading it in from voice command is pretty hard and the third command is so insane I don't really want to think about it!

I mean, Kinect is probably the closest thing you have to something like jarvis or whatever and look how much R&D has gone into it plus that example of JARVIS OS? Is that just a linux distro because that's all I found.

"A Collaborative Free and Open-Source OS?" - That is practically the definition of almost all Linux Distros...

Engineering Manager at Deloitte Australia

In general, for OS development, you have to know every bit of your hardware.

smile.png

Here is part of the code to detect instructions:

[BTST :111111001:0000100000xxxxxx00000000dddddddd]

(Assembly) code for which system architecture (linux, Windows, mac, myOS etc.)?

I would like to kindly point out that none of those you listed -- Windows, Linux, Mac, or myOS are "architectures." All of these are operating systems. Examples of architectures are ARM, Amtel, PowerPC( *cringes* ), x86, and x86-64 (Both AMD64 and Intel 64).Thus, you already lack the most fundamental concepts needed to build J.A.R.V.I.S

"The code you write when you learn a new language is shit.
You either already know that and you are wise, or you don’t realize it for many years and you are an idiot. Either way, your learning code is objectively shit." - L. Spiro

"This is called programming. The art of typing shit into an editor/IDE is not programming, it's basically data entry. The part that makes a programmer a programmer is their problem solving skills." - Serapth

"The 'friend' relationship in c++ is the tightest coupling you can give two objects. Friends can reach out and touch your privates." - frob

In general, for OS development, you have to know every bit of your hardware.

:)

Here is part of the code to detect instructions:

[BTST :111111001:0000100000xxxxxx00000000dddddddd]

(Assembly) code for which system architecture (linux, Windows, mac, myOS etc.)?
I would like to kindly point out that none of those you listed -- Windows, Linux, Mac, or myOS are "architectures." All of these are operating systems. Examples of architectures are ARM, Amtel, PowerPC( *cringes* ), x86, and x86-64 (Both AMD64 and Intel 64).Thus, you already lack the most fundamental concepts needed to build J.A.R.V.I.S
I knew there was something wrong there. Note: i lack the knowledge of assembly and C coding so i still need to learn.
Anyways, thanks.
So aregee, which architecture is it for (and OS)?

UNREAL ENGINE 4:
Total LOC: ~3M Lines
Total Languages: ~32

--
GREAT QUOTES:
I can do ALL things through Christ - Jesus Christ
--
Logic will get you from A-Z, imagination gets you everywhere - Albert Einstein
--
The problems of the world cannot be solved by skeptics or cynics whose horizons are limited by the obvious realities. - John F. Kennedy

Advertisement


So aregee, which architecture is it for (and OS)?

He said what architecture, it's 680x0 assembler.

OS is mostly irrelevant, but "Ultimate Soundtracker" is an Amiga program.

I'm assuming though that the actual disassembler is not running on Amiga, but some modern OS on a modern processor (not 680x0)

Take it one step at a time? You missed a lot of of steps between the first two and the third

I know :)

. . . but reading it in from voice command is pretty hard

They are all voice commands and it's supposed to be hard, initially.

. . . and the third command is so insane I don't really want to think about it!

I really do think about it and it's amazing.

. . . and look how much R&D has gone into it plus that example of JARVIS OS? Is that just a linux distro because that's all I found.

It's not. They are building it from scratch, different from every OS.

UNREAL ENGINE 4:
Total LOC: ~3M Lines
Total Languages: ~32

--
GREAT QUOTES:
I can do ALL things through Christ - Jesus Christ
--
Logic will get you from A-Z, imagination gets you everywhere - Albert Einstein
--
The problems of the world cannot be solved by skeptics or cynics whose horizons are limited by the obvious realities. - John F. Kennedy


Note: i lack the knowledge of assembly and C coding so i still need to learn.

That has absolutly nothing to do with the question you asked. Problem is that you lack the most fundamental skills and concepts - apparently, ability to read and research, as aregee said:


I started to make a disassembler for 680x0 once

Also, his examples were based around Amiga PCs, as it was clearly mentioned in 1st sentence.

If you did a little Google search, you'd find out that 680x0 is another name for Motorola 68000 family of processors developed in 1980s and early 1990s, which had its own architecture which was competing with Intel's x86 architecture. Further reading would give you some insight into characteristics of the family.


It's not. They are building it from scratch, different from every OS.

So it's not this one? http://jarvisos.webs.com/

Because that one is SUSE Linux, and seems to be mostly vaporware, and not even including voice recognition (the easiest part of anything jarvis-like)

Are there more groups of young people making os:es they call "Jarvis"?

This topic is closed to new replies.

Advertisement