←  Operating Systems

ComputerCraft | Programmable Computers for Minecraft

»

OneOS Version 2 - The All in One Operating...

oeed's Photo oeed 15 Jun 2014

 Csstform, on 15 June 2014 - 04:21 AM, said:

 oeed, on 15 June 2014 - 03:46 AM, said:

-snip-

Even though I may not see it in the competition, I am really looking forward to this!
Yea I'm gona have to give CCJam a miss, I'm just not going to have anything to show for really.
Quote

awsmazinggenius's Photo awsmazinggenius 15 Jun 2014

So it is something awesome. Though that screenie you posted didn't have syntax highlighting. Will that be added later?

Also, some people do use other languages. GravityScore's Brainfuck interpreter, someone made a peripheral for Jython a while back, etc.
Quote

killorx's Photo killorx 15 Jun 2014

i tried to install it into the beta. and it will not work. should i use 1.63 or 1.64pr2
i tried to install the oneos into the adv computer and it said. check your internet connection. nothing is being blocked.
Quote

oeed's Photo oeed 15 Jun 2014

 awsmazinggenius, on 15 June 2014 - 02:03 PM, said:

So it is something awesome. Though that screenie you posted didn't have syntax highlighting. Will that be added later?

Also, some people do use other languages. GravityScore's Brainfuck interpreter, someone made a peripheral for Jython a while back, etc.
Yea, I tried adding syntax highlighting but I was having a few issues. They will definitely be added though.

I don't know of anyone who's really made an actual program out of it really. Still, can't hurt to add it.
Quote

awsmazinggenius's Photo awsmazinggenius 16 Jun 2014

Well, it could just be useful to add extra highlighting for different functions, like the functions for an API.
Quote

skwerlman's Photo skwerlman 16 Jun 2014

 awsmazinggenius, on 15 June 2014 - 02:03 PM, said:

So it is something awesome. Though that screenie you posted didn't have syntax highlighting. Will that be added later?

Also, some people do use other languages. GravityScore's Brainfuck interpreter, someone made a peripheral for Jython a while back, etc.
I don't think I've ever even seen a brainfuck highlighter...
Quote

killorx's Photo killorx 17 Jun 2014

The program no longer works. it always goes to. too long without yielding
Quote

Win7yes's Photo Win7yes 17 Jun 2014

 killorx, on 17 June 2014 - 12:33 PM, said:

The program no longer works. it always goes to. too long without yielding
What Program?
Quote

oeed's Photo oeed 17 Jun 2014

 killorx, on 17 June 2014 - 12:33 PM, said:

The program no longer works. it always goes to. too long without yielding

Do you mean the OS as a whole or one bit?
What version are you using?
Quote

oeed's Photo oeed 21 Jun 2014

Ok, so I haven't really been able to do much work on OneOS/OneCode because my Mac's hard drive can't be found by my Mac, it's being repaired at the moment and there shouldn't be any dataloss. However, it meant that I haven't really have access to recent code.

I managed to find a backup somewhere with some newish code, although it doesn't have any OneCode stuff. Because of this I've focused on the actual programs, the API driving everything and their format.

Here is the code for a fairly basic program with a clickable button that changes text when you click on it. In my previous system this would be about 100 - 200 lines, let alone programs in which people had to write their own API, but this is only 14 lines, most of which is actually formatting! If you remove the unneeded lines it's only 7.
OneOS.LoadAPI('/System/API/Bedrock.lua', false)
OneOS.LoadAPI('/System/API/Drawing.lua')
OneOS.LoadAPI('/System/API/View.lua')
OneOS.LoadAPI('/System/API/Button.lua')

local program = Bedrock:Initialise()

program:ObjectClick('Button1', function(self, event, side, x, y)
  self.Text = 'Hi'
end)

program:Run(function()
  program:LoadView('main')
end)

Which creates, when clicked:
Posted Image

In future I'm also looking to remove the loadAPIs (other than Bedrock [the main framework] of course).

This code is loading a view called main, which you'll design with drag and drop, from a file that looks like this:
{
  ["Objects"]={
	[1]={
	  ["Y"]=2,
	  ["X"]=2,
	  ["Name"]="Button1",
	  ["Type"]="Button",
	  ["Text"]="A Button"
	},
  },
  ["BackgroundColour"]=8192,
}

In the designer you'll be able to set a name for each object (e.g. button) which allows you to easily get that object and set what happens when it's clicked etc.

Here is a bit of code and comments showing what you can either do at the moment or will be added very soon.
Spoiler

You'll noticed that there is no while loop or a huge if statement for events.
All events have a function that you can assign which is called when fired If it's a custom event you can use RegsterEvent.

This is all very early stages, I've only just got it working. But essentially I'd like feedback on the style and layout of it. If people don't like how it works they won't use it, which makes the entire thing pointless.
Edited by oeed, 22 June 2014 - 12:18 AM.
Quote

Saldor010's Photo Saldor010 22 Jun 2014

That looks amazing, Oeed!
Quote

oeed's Photo oeed 22 Jun 2014

 Jiloacom, on 22 June 2014 - 12:36 AM, said:

That looks amazing, Oeed!

Thanks!

I should also mention a few other things.

Most importantly, everything is subject to change, even the stuff above is rather out of date. Sometimes I realise that one way of doing something does work as well, so I end up changing huge amounts.

I've also been working speeding up drawing, sometimes it gets really slow. To help with this all objects now cache their drawing, meaning that if it's asked to draw and it already has but the content is still the same it won't have to recalculate a whole ton of stuff. To be honest I don't really know if this will improve the situation (although I presume it will). I'm also looking in to making the buffering system quicker.

This will, yet again, push the 1.2 release forward. I've decided to essentially convert all the programs across to this framework, it'll save a ton of space and allow for easier editing in the future. I haven't decided if OneCode will be included with 1.2 though, that might come 1.3 (which will probably be only a few weeks later).

Edit: So, I've also decided it will be beneficial to move to an inheritance based object model. In English, basically all the on-screen objects (buttons, labels, etc) will inherit one base object which has lots of the base code for initialisation, drawing, etc. Kind of like I intended to do with PearOS (although it's worth noting that it didn't actually work in PearOS as I thought it did, it appeared to but didn't really). This too will save a ton of space, it changes all object files from 80+ lines to in many cases just 10. This is due to the radical reengineering the framework has allowed me to do, objects are no longer initialised with their values (width, position, etc). Instead they are injected from the interface file later.

There's a lot of changes, but I really think this will provide a huge boost in terms of speed of OneOS as well as fixing things and future additions.
Edited by oeed, 23 June 2014 - 09:43 AM.
Quote

awsmazinggenius's Photo awsmazinggenius 24 Jun 2014

Looking at the code for that simple program, it looks really easy to make programs if you use the API. Unfortunately, I can't use it, because if I were to ever get around to releasing my programs, it would be critical that they work on CraftOS, and it's not practical to separately distribute those API files unless you were to minify and concatenate them, and under the license you can't distribute modified versions.
Edited by awsmazinggenius, 24 June 2014 - 02:35 AM.
Quote

oeed's Photo oeed 24 Jun 2014

 awsmazinggenius, on 24 June 2014 - 02:33 AM, said:

Looking at the code for that simple program, it looks really easy to make programs if you use the API. Unfortunately, I can't use it, because if I were to ever get around to releasing my programs, it would be critical that they work on CraftOS, and it's not practical to separately distribute those API files unless you were to minify and concatenate them, and under the license you can't distribute modified versions.

I will definitely make it possible for people to release their programs for CraftOS. I'll make a single file minified version for the API, it will probably be under 100KB
Quote

Agoldfish's Photo Agoldfish 24 Jun 2014

Wow, almost 500 posts! Nice job Oeed. This is porbably one of the most successful programs yet to date.
Quote

oeed's Photo oeed 24 Jun 2014

 Agoldfish, on 24 June 2014 - 07:46 PM, said:

Wow, almost 500 posts! Nice job Oeed. This is porbably one of the most successful programs yet to date.
Yea, actually now I look at it, it's the 3rd most replied to program. The 1st being Advanced Mining Turtle and 2nd being Firewolf.
Also noticed the 2nd most replied to OS is PearOS :P

In terms of out of all the forums though many forum games and servers beat all the programs by miles.
Quote

MrStickmanPro1's Photo MrStickmanPro1 29 Jun 2014

Hey,

first of all, I gotta say that this is the best OS I've seen so far for computercraft. Well done.

However, I've got one question: If yes, how can you use external monitors?

- MrStickmanPro1
Quote

Beeskee's Photo Beeskee 30 Jun 2014

This is pretty sweet, I'm running it on FTB Unleashed and everything seems to be going well so far. The only bug I have encountered is in the app store, it crashes. I get this error: "startup:572: attempt to get length of number"
Quote

itzstarstruck's Photo itzstarstruck 02 Jul 2014

Awesome!
Please keep up the good work oeed
-========= MRZOMBIEKINS LUA PROGRAMMER =======-

:D
Quote

NanoBob's Photo NanoBob 03 Jul 2014

I wanted to test it out, but when I ran the installer I got an error
Bios:500: Domain not permitted
I got this error just while it was Determining latest Version
Quote