News:

Printed Amstrad Addict magazine announced, check it out here!

Main Menu

Project Unify

Started by Trebmint, 12:18, 26 June 14

Previous topic - Next topic

0 Members and 1 Guest are viewing this topic.

Trebmint

Hey, I just thought I'd start a thread on my latest work in progress which is something called 'Unify'. It is indeed a reworking of another WIP called SymStudio which was a IDE / App creator for Prodatron's fantastic Symbos.





For those of you who never looked at SymStudio it was a Form editor/ Assembler which could create cross platform symbos apps in a few seconds. It even had a graphics package/video and its own version of Basic. 


If you want to have a look at SymStudio you can look at the following tutorial vids I made some months back.



Introduction to SymStudio 2014 - YouTube

Symstudio project part 2 - YouTube

A sample symstudio project - YouTube


I recently decided to change SymStudio into Unify as a large number of improvements have/are gone in... and Symbasic wasnt so basic anymore. In fact now we have a fully OO language with Classes and Modifiers etc, and free use of not just Basic syntax, but C/C#/Java and of course z80. The compiler now spits out compact and super quick code, outperforming that of pretty much any existing z80 high level language compiler. Oh and I'm currently updating the old UI to be something more in keeping with today.


For example once compiled this runs in 1.1 seconds on a cpc

f=0
While f<10
    rew=0
    While rew<2000
        rew=rew+1
        If rew =390  Then
            f=f+1
        EndIf
    Wend
Wend

In fact it even generates the Z80 output for you like this at compile time... or command by command within the text editor (meaning you can hand craft those bits of M/C that need super speed inline)

;//f = 0
LD HL,0                                       ;//Load Number Into HL
LD (f),HL                                     ;//Put HL into Variable f
;//While f < 10
LD HL,(f)                                     ;//Load Number Into HL
LD DE,10                                     ;//Load Number Into DE
OR A                                          ;//Clear Carry Flag
SBC HL,DE                                     ;//Compare HL/DE
JP NC,SkipIf                                  ;//Set to False
;//rew = 0
LD HL,0                                       ;//Load Number Into HL
LD (rew),HL                                   ;//Put HL into Variable rew
;//While rew < 2000
LD HL,(rew)                                   ;//Load Number Into HL
LD DE,2000                                    ;//Load Number Into DE
OR A                                          ;//Clear Carry Flag
SBC HL,DE                                     ;//Compare HL/DE
JP NC,SkipIf                                  ;//Set to False
;//rew = rew + 1
LD HL,(rew)                                   ;//Load Number Into HL
LD DE,1                                       ;//Load Number Into DE
ADD HL,DE                                     ;//Adds DE & HL into HL
LD (rew),HL                                   ;//Put HL into Variable rew
;//If rew = 390 Then
LD HL,(rew)                                   ;//Load Number Into HL
LD DE,390                                     ;//Load Number Into DE
OR A                                          ;//Clear Carry Flag
SBC HL,DE                                     ;//Compare HL/DE
JP NZ,SkipIf                                  ;//Skip If if False
;//f = f + 1
LD HL,(f)                                     ;//Load Number Into HL
LD DE,1                                       ;//Load Number Into DE
ADD HL,DE                                     ;//Adds DE & HL into HL
LD (f),HL                                     ;//Put HL into Variable f
;//Wend
JP BackToWhile                                ;//Jumps back To corrosponding While
;//Wend
JP BackToWhile                                ;//Jumps back To corrosponding While

Plus you can code in various styles like Basic

Class Button
    Field x:Int = 0
    Field y:Int = 0
    Field w: Int = 50
    Field h: Int = 20
    Method Move(offsetx:Int,offsety:Int)
        Var totalx:Int = x + offsetx       //Yes could not use these and just have x=x+offsetx Var totaly:Int = y + offsety      //But I wanted to show a Var definition x = totalx y = total
    End Method
End Class

Or mode C# ish like

Class Button {
    Field x:Int = 0;
    Field y:Int = 0;
    Field w: Int = 50;
    Field h: Int = 20;
    Method Position(mx:Int, my:Int, mw:Int, mh:Int) {
        x = mx;
        y = my;
        w = mw;
        h = mh;
    }
    Method Move(Moveoffsetx:Int,offsety:Int) {
        Var totalx:Int = x + offsetx;
        Var totaly:Int = y + offsety;
        x = totalx;
        y = totaly;
    }
}

Meaning you can then do something like

Var SayOk:Button;
SayOk.Position(10,100,50,20);
While (SayOk.X < 100) {
    SayOk.Move(5,0);
}

Ygdrazil


This is really good news...


Been following the SymbOS project for quite a while now (mostly on msx.org) .. even done some programming for SymbOS in assembler in the past. Been waiting for Symstudio to surface... so this is excellent news!


/Ygdrazil

Quote from: Trebmint on 12:18, 26 June 14
Hey, I just thought I'd start a thread on my latest work in progress which is something called 'Unify'. It is indeed a reworking of another WIP called SymStudio which was a IDE / App creator for Prodatron's fantastic Symbos.





For those of you who never looked at SymStudio it was a Form editor/ Assembler which could create cross platform symbos apps in a few seconds. It even had a graphics package/video and its own version of Basic. 


If you want to have a look at SymStudio you can look at the following tutorial vids I made some months back.



Introduction to SymStudio 2014 - YouTube

Symstudio project part 2 - YouTube

A sample symstudio project - YouTube


I recently decided to change SymStudio into Unify as a large number of improvements have/are gone in... and Symbasic wasnt so basic anymore. In fact now we have a fully OO language with Classes and Modifiers etc, and free use of not just Basic syntax, but C/C#/Java and of course z80. The compiler now spits out compact and super quick code, outperforming that of pretty much any existing z80 high level language compiler. Oh and I'm currently updating the old UI to be something more in keeping with today.


For example once compiled this runs in 1.1 seconds on a cpc

f=0
While f<10
    rew=0
    While rew<2000
        rew=rew+1
        If rew =390  Then
            f=f+1
        EndIf
    Wend
Wend

In fact it even generates the Z80 output for you like this at compile time... or command by command within the text editor (meaning you can hand craft those bits of M/C that need super speed inline)

;//f = 0
LD HL,0                                       ;//Load Number Into HL
LD (f),HL                                     ;//Put HL into Variable f
;//While f < 10
LD HL,(f)                                     ;//Load Number Into HL
LD DE,10                                     ;//Load Number Into DE
OR A                                          ;//Clear Carry Flag
SBC HL,DE                                     ;//Compare HL/DE
JP NC,SkipIf                                  ;//Set to False
;//rew = 0
LD HL,0                                       ;//Load Number Into HL
LD (rew),HL                                   ;//Put HL into Variable rew
;//While rew < 2000
LD HL,(rew)                                   ;//Load Number Into HL
LD DE,2000                                    ;//Load Number Into DE
OR A                                          ;//Clear Carry Flag
SBC HL,DE                                     ;//Compare HL/DE
JP NC,SkipIf                                  ;//Set to False
;//rew = rew + 1
LD HL,(rew)                                   ;//Load Number Into HL
LD DE,1                                       ;//Load Number Into DE
ADD HL,DE                                     ;//Adds DE & HL into HL
LD (rew),HL                                   ;//Put HL into Variable rew
;//If rew = 390 Then
LD HL,(rew)                                   ;//Load Number Into HL
LD DE,390                                     ;//Load Number Into DE
OR A                                          ;//Clear Carry Flag
SBC HL,DE                                     ;//Compare HL/DE
JP NZ,SkipIf                                  ;//Skip If if False
;//f = f + 1
LD HL,(f)                                     ;//Load Number Into HL
LD DE,1                                       ;//Load Number Into DE
ADD HL,DE                                     ;//Adds DE & HL into HL
LD (f),HL                                     ;//Put HL into Variable f
;//Wend
JP BackToWhile                                ;//Jumps back To corrosponding While
;//Wend
JP BackToWhile                                ;//Jumps back To corrosponding While

Plus you can code in various styles like Basic

Class Button
    Field x:Int = 0
    Field y:Int = 0
    Field w: Int = 50
    Field h: Int = 20
    Method Move(offsetx:Int,offsety:Int)
        Var totalx:Int = x + offsetx       //Yes could not use these and just have x=x+offsetx Var totaly:Int = y + offsety      //But I wanted to show a Var definition x = totalx y = total
    End Method
End Class

Or mode C# ish like

Class Button {
    Field x:Int = 0;
    Field y:Int = 0;
    Field w: Int = 50;
    Field h: Int = 20;
    Method Position(mx:Int, my:Int, mw:Int, mh:Int) {
        x = mx;
        y = my;
        w = mw;
        h = mh;
    }
    Method Move(Moveoffsetx:Int,offsety:Int) {
        Var totalx:Int = x + offsetx;
        Var totaly:Int = y + offsety;
        x = totalx;
        y = totaly;
    }
}

Meaning you can then do something like

Var SayOk:Button;
SayOk.Position(10,100,50,20);
While (SayOk.X < 100) {
    SayOk.Move(5,0);
}


Trebmint

Quote from: Ygdrazil on 15:41, 26 June 14
This is really good news...


Been following the SymbOS project for quite a while now (mostly on msx.org) .. even done some programming for SymbOS in assembler in the past. Been waiting for Symstudio to surface... so this is excellent news!


/Ygdrazil
Well yes to start with it is a Symbos IDE... but then its onto the no coding required games development side!

Gryzor

Looks really nice... hope we get to see some new apps!

Joseman

As i said on msx.org

looking for Unify to try some coding!




Trebmint

Quote from: Gryzor on 17:36, 26 June 14
Looks really nice... hope we get to see some new apps!


I certainly hope we see a lot more activity with coding apps for Symbos with the release of Unify. I think any coder who tries it will really like it... plus the limits of what symbos can do have changed a lot (in the graphics area) with the imminent release of 2.1

joska

Quote from: Trebmint on 09:50, 27 June 14I certainly hope we see a lot more activity with coding apps for Symbos with the release of Unify.


I will definitely try it out. From the videos it looks amazing.

Joseman

Quote from: Trebmint on 09:50, 27 June 14
plus the limits of what symbos can do have changed a lot (in the graphics area) with the imminent release of 2.1

will be support for full screen apps? mode 0 on amstrad perhaps?


Trebmint

Quote from: joska on 11:39, 27 June 14

I will definitely try it out. From the videos it looks amazing.
Cheers, and that's why i've spent so many hours building it. Symbos is a special piece of coding and it deserves to be used. Over the years I've worked on a number of what can only be called graphical shells on the CPC pretending to be real OS's like DES etc... so when I came across Symbos and its true OSness and API's I decided I should support it, and rather than making an app I decided to make an app maker.
Quote from: Joseman on 14:15, 27 June 14will be support for full screen apps? mode 0 on amstrad perhaps?


Erm I think I have to say no from the sense of Symbos. Prodatron has spent a lot of time making a truely cross platform system for CPC, MSX and PcW so I doubt he wants to break that and allow people to code directly to screen hardware which what I guess you mean. You need to ask him though.

What symbos does have with the 2.1 release though is what I'd call a version of DirectX. Previously it was hard to make apps with anything but Symbos's built in Control Objects. If you had a picture box it was literally just that... you could change the picture, but you couldnt plot or write text or draw lines on it. That's why my picture slider demo works as it does. It doesnt change the contents of the image boxes... it changes the location of the image boxes :)
With 2.1 for the first time I can copy a sprite graphic onto any location in a window pixel perfectly and even including transparency at a pretty good speed. You wont create a scrolling shootemup with it but its good for simple games.
The same question with Unify in mind the answer will be yes... eventually. The plan is to have Unify be able to create projects for Symbos, CPC (mode 0/1), Plus, MSX 1 & 2, Speccy, Sam, Enterprise etc. Just turn on the Symbos Form Editor, or the CPC Mode 0 mapper etc.

EgoTrip

I'll definitely give this a go when its released.

joska

Quote from: Trebmint on 15:08, 27 June 14
so when I came across Symbos and its true OSness and API's I decided I should support it, and rather than making an app I decided to make an app maker.

It looks like a very powerful tool. I'm looking forward to see how the BASIC turns out. I'm mostly an Atari ST guy, and the ST scene is really missing a tool like Unify. I hope you're releasing the source code :)

Trebmint

Quote from: joska on 23:46, 27 June 14
It looks like a very powerful tool. I'm looking forward to see how the BASIC turns out. I'm mostly an Atari ST guy, and the ST scene is really missing a tool like Unify. I hope you're releasing the source code :)
Well the St /Amiga had STOS/Amos didnt it which is kind of the same. And I've deliberately moved away from calling it SymBasic and created structures like c# so it doesnt have that stigma that basic has now.


I dont think the source would help much really. Its written in a old language called Blitz, which was a bad choice, but I was using it in 2006.

Prodatron

I am quite surprised, how quick you implemented the new UI for Unify! It looks very cool and modern!
Quote from: Trebmint on 07:33, 28 June 14Its written in a old language called Blitz, which was a bad choice, but I was using it in 2006.
It was already end of 2004 when you started SymStudio  :P

Regarding Mode 0 support: There is already a plattform specific (CPC) function to access the screen directly, which is used by SymShell and the starfield screen saver.

The new "DirectX"-like graphic library has been developed for reaching these three goals:
- providing all necessary functions for modifying picture boxes
- handling large graphics in multiple 64K ram bank areas
- staying platform independant by capsuling the screen data encoding inside the library

CU,
Prodatron

GRAPHICAL Z80 MULTITASKING OPERATING SYSTEM

Joseman

Sorry for the semi-off topic...

Prodatron, talking about number of efective users on symbos and people who will code future applications... why not make a port of symbos for spectrum, is there some problem with? Resolution perhaps?, lack of advanced memory access modes?

The reality is that the spectrum has big amount of users compared with other 8bit systems (maybe i'm wrong), maybe it's a good idea to make a port of symbos for speccy?



Ygdrazil


Hi There


As I understand it (correct me if i am wrong) you nailed it.. the classic ZX spectrum does not have the required memory access modes (Although the later PLUS models deviced by Amstrad has them).


Also i was under the impression that the Sam Coupe could not run SymbOS either because of (its otherwise superior qualities)  its ability to back switch 32Kb.


I would really like a port for the NC series.. portable SymbOS nice!

[/size][size=78%]/Ygdrazil [/size]

Quote from: Joseman on 14:39, 28 June 14
Sorry for the semi-off topic...

Prodatron, talking about number of efective users on symbos and people who will code future applications... why not make a port of symbos for spectrum, is there some problem with? Resolution perhaps?, lack of advanced memory access modes?

The reality is that the spectrum has big amount of users compared with other 8bit systems (maybe i'm wrong), maybe it's a good idea to make a port of symbos for speccy?

joska

Quote from: Trebmint on 07:33, 28 June 14Well the St /Amiga had STOS/Amos didnt it which is kind of the same.


STOS is unfortunately quite a crappy language. Old-style BASIC with line numbers and no support for GEM at all. It even has to be patched for every minor version changes of TOS.


Unify seems to be a very powerful and straightforward way to build clean applications, there is no such development tool for the Atari ST range. STOS especially is absolutely useless for this.


Quote from: Trebmint on 07:33, 28 June 14I dont think the source would help much really. Its written in a old language called Blitz, which was a bad choice, but I was using it in 2006.


Sources are always helpful :)

Trebmint

#16
Firstly the banking on the spectrum isn't adequate for what symbos requires. I believe that Prodatron thinks a version for the Sam Coupe is possible... although if there is to a version for a new machine it would probably be the Enterprise 128.


Yes I realise STOS was a games package really.


Im not sure what you mean when you talk about coming with source though. SymStudio always throws out a complete Z80 listing of every app it creates, and all the z80 source is sitting there as .asm files. Unify will hopefully be even better with supplying source than symstudio was too.


If you mean from the PC code side I don't mind supplying source but as its written for a package called Blitz, it will be hard for anyone to use unless you own it. One of the things that i'm trying to do with Unify is have it be more data driven, so there is less hard coding and more external data files which can be added too.


One of the concepts I hope to try with Unify is that of an Asset base, so that if you write a useful function you can upload it for the community, and then everyone has access to it from within Unify. That would be for code, graphics or entire projects. In fact I'd like to take it to be an entirely cloud based community development system. The idea of being able to develop an app or game within a team seems like a good idea

Munchausen

Hi Trebmint, this is a really awesome piece of work.


How is development going? I was hoping to have a play with it... I looked everywhere for the old SymStudio a year or more ago because I wanted to use it but I could never find a download link for it. Do you have some beta that I can have a go with?


Thanks!

Morri

Quote from: Munchausen on 12:02, 26 July 14
How is development going? I was hoping to have a play with it...
Yes please! I would love to have a look at this again too. I had a play around with it a few years ago but never got much going. I would love to create something though even if just a simple game for symbos.

Quote from: Munchausen on 12:02, 26 July 14
I looked everywhere for the old SymStudio a year or more ago because I wanted to use it but I could never find a download link for it.
I'm not sure if it is the latest version but I found 0.991 at Symstudio | The Amstrad CPC news portal
Keeping it Kiwi since 1977

Trebmint

#19
Hey, I'm really glad people are interested in this. Gives me reason to keep slogging on. Here's the last uploaded version of symstudio released in February and is a considerable improvement over version .991

http://www.catanddoggifts.co.uk/image/sorp/sym2014.zip

It should be completely usable, and pretty stable. Some work was done into making the language more complete, including syntax highlighting etc and the text editor easier to work with. There are a lot of sample programs, 90% of which work :P Some were part finished projects and some were code from edoz who wrote 2 or 3 working apps in symbasic which are now available. Its perfectly possible to write apps with symbasic now, and of course if you lack a command you can just code that part in z80 within the same bit of code.


If you download and have any questions lets me know. Chances are I cant fix them, but they will be done for Unify


Work on Unify is slowed at the moment because of life, but it will see the light of day before the end of this year definately. In most respects nothing changes between symstudio and unify (old symstudio projects will always work in Unify), but the IDE will be more modern, the compiler will spit out tighter and super fast code (currently symbasic doing integer stuff is probably 5 times faster than Locomotive, but the new compiler pushes that upto around 50-100 times faster), and the language support will be a mixture of basic/c#/java and much more in line with OO idea of coding. And hopefully a load of other tools which will drag symbos and cpc development into the modern age :P

Morri

Unfortunately link not working for me. (The page you requested cannot be found.) :(
Keeping it Kiwi since 1977

Trebmint

#21
ooops sorry... try the link above again. Must of placed it in weird directory.


I really should test everything before, which is why the old symstudio was so flakey. My 45 year old brain is losing its marbles. I hope this works well... it should

Prodatron

Link works fine now! :)

GRAPHICAL Z80 MULTITASKING OPERATING SYSTEM

Munchausen

Thanks a lot @Trebmint ! I will give this a try as soon as I get some time :D


Off topic, but @Prodatron , have you considered Enterprise 128 as a target for SymbOS? It's a pretty awesome machine, particularly the graphics modes.

Prodatron

Quote from: Munchausen on 13:12, 29 July 14Off topic, but @Prodatron , have you considered Enterprise 128 as a target for SymbOS? It's a pretty awesome machine, particularly the graphics modes.
Yes, it's the next platform in the queue :) Such a port would be easy, as the screen routines will be taken from the CPC and the memory banking routines from the MSX/PCW. Not sure about 32K screen mode support yet regarding memory consumption and speed.
The only thing which requires new code is probably the FDC driver, but as there is already support for about 6 different FDCs that shouldn't be a problem.

GRAPHICAL Z80 MULTITASKING OPERATING SYSTEM

Powered by SMFPacks Menu Editor Mod