While having DLLs is nice we have some roadblock here. Not all compilers support dynamic linking.
Take - for example - PropGCC. I do work with a nice COBOL compiler. (GNU Cobol). It basically produces C code out of COBOL and runs it with some support DLLs (also written in C or COBOL compiled to C). No static linking supported.
Shoot. No way to run this with PropGCC even if GCC is the main C compiler used in this Project (runs also with VS 2008/10 - that's what I do for now). Same thing with @Heaters JavaScript build with emscripten. of your current compiler. Works perfect. But I am not sure if emscripten would support dynamic linking.
The current version of openspin should be able to run/compile with PropGCC - a version needing a DLL is doomed on the prop.
I do understand your wish of using the exact same Backend, but can you at least give the ability to compile this with static linking into one single file?
Maybe I am missing something here, but please consider this static linking issue.
As mentioned before I am not a C programmer at all. I do have no clue about GCC and very less experience with Linux. I am more fluent in JCL then Bash...
The OpenSpin compiler code will likely not compile successfully with propgcc right now. It depends on things that I don't believe are implemented fully in the runtime, such as full file system support for dealing with paths and reading/writing files and command line arguments being passed into main. If I am wrong and it does have everything needed, it's only going to work with an XMM setup that has sufficiently large amounts of memory available for both code and data.
The OpenSpin compiler code will likely not compile successfully with propgcc right now. It depends on things that I don't believe are implemented fully in the runtime, such as full file system support for dealing with paths and reading/writing files and command line arguments being passed into main. If I am wrong and it does have everything needed, it's only going to work with an XMM setup that has sufficiently large amounts of memory available for both code and data.
This is correct, PropellerGCC (and accompanying libraries) meet the ANSI-C standard for the conforming freestanding (embedded) implementation. It does not fully meet the requirements of the conforming hosted (operating system resident) implementation.
I would say that the main requirement, is the fact that we need to be sure that the development of such tool will not create, in a couple of weeks, several different branch depending on the hosting OS.
I've been playing with loader and terminal options. Things seem to work (especially in windows LOL) except for 2 issues at this point: 1) The Mac serial terminal receives characters out of order for some reason. 2) In my Linux VM, if I attach/detach the usb port through the virtualbox interface, the port will not open unless I restart the IDE program. I'll be experimenting with the new QSerialPort driver in Qt5.2.1 among other things to see if i can clean this up ... a branch would have been a better approach. Sorry for the mess.
It would be very useful if someone with a real Linux box could test the USB attach/detach stuff and let me know what happens. I have two, but they are old and moldy.
Also regarding plugging in different items to the IDE ... After the SPIN development stabilizes, we will be moving to a git repository. Once that happens, I'll probably branch the current repository to save it's state and move the default into another direction. The new direction will include allowing for any old compiler/loader mechanism most likely using make files.
I've been playing with loader and terminal options. Things seem to work (especially in windows LOL) except for 2 issues at this point: 1) The Mac serial terminal receives characters out of order for some reason. 2) In my Linux VM, if I attach/detach the usb port through the virtualbox interface, the port will not open unless I restart the IDE program. I'll be experimenting with the new QSerialPort driver in Qt5.2.1 among other things to see if i can clean this up ... a branch would have been a better approach. Sorry for the mess.
It would be very useful if someone with a real Linux box could test the USB attach/detach stuff and let me know what happens. I have two, but they are old and moldy.
Also regarding plugging in different items to the IDE ... After the SPIN development stabilizes, we will be moving to a git repository. Once that happens, I'll probably branch the current repository to save it's state and move the default into another direction. The new direction will include allowing for any old compiler/loader mechanism most likely using make files.
--Steve
Grabbed the repository (about 8:50PM ET) and built it.
It appears to work on Linux Mint 16. I started PropellerIDE without anything connected and there wasn't anything in the drop box. I plugged a Prop in and it appeared, unplugged it and it disappeared, back and forth it worked and worked. Then I downloaded a program, that worked. Unplugged and it disappeared, plugged and it appeared, downloaded and it worked.
Grabbed the repository (about 8:50PM ET) and built it.
It appears to work on Linux Mint 16. I started PropellerIDE without anything connected and there wasn't anything in the drop box. I plugged a Prop in and it appeared, unplugged it and it disappeared, back and forth it worked and worked. Then I downloaded a program, that worked. Unplugged and it disappeared, plugged and it appeared, downloaded and it worked.
If something is plugged in, the beanie tells me what it is, if nothing is plugged in, then the beanie tells me it can;t find one. If I put something in, it appears in the drop box, if I take it out, it disappears. Haven't had to restart the IDE to see this work. Is that how it should behave when I click my beanine?
We didn't need that in the 70's and sure don't need it now!!!
A seventies survivor that never wore polyester and never had big hair or platform shoes.
All I can say in my defense is that teenagers are easily influenced I quickly grew tired of disco biscuits though after enjoying feasts of Zeppelin, Aerosmith, Pink Floyd, Heart, and Rush.
You must have been 30 something when KC had his 5 minutes of fame.
Windows 7 64-bit box.
I just tried the latest clone, and seems to be working as expected until you click the beanie, then it hangs there looking for something.
Checking for Propeller on port COM6
Propeller Version ... 1
Propeller Version 1 on COM6
*** At this point I had clicked the beanie. ***
Checking for Propeller on port COM10
Can't open port COM10
Checking for Propeller on port LPT1
*** It hangs here looking for something. ***
Debian 64-bit box.
For some reason I am having some very unusual problems with Qt5. First, when I download the latest clone, it has some hidden folders where only Midnight Commander in superuser mode can get rid of. When I hit the run button, in Create, it goes through the build process but it never runs the Propeller IDE program, all that I see in the new debug folder is just a build file. I have done a couple of re-installs of Qt5 and the clone, but the results are always the same. Not sure what it will take too resolve this new issue.
What a relief, now I can also talk to forth via the terminal window. I else have had to use putty. It would be nice, if the terminal get focus, when it opens, so it don't close when I hit return.
On my Ubuntu.
Edit:
When I use F8,F10 or F11 Open Propeller disappears, so I have to restart. It is without anything in the USB.
I'm still very interested in seeing how the beanie button behaves (F7). Also need more testing with F8,F9,F10,F11.
Frida thanks for reporting your issue with that! I also ran into it. Should be ok now.
I've updated the "current serial terminal" to behave more rationally. I'll add the SimpleIDE Terminal features later.
Updates:
Added an Echo On check box for SPIN users (not persistent)
Made Enter Key send \r or \n based on the OS
Fixed issue with searching for non-COM ports on windows (thanks Ray!)
Fixed issue where no port in combo-box can cause program to crash
Made serial terminal capture all output without requiring delays in code
Added little PUB/PRI/CON/DAT/VAR etc... words to SpinnySense icons for Don
Added the block indent fix from Dennis (did I mention this already?)
My Mac jumbled characters problem turns out to have been an "iffy" propeller board.
Still TODO:
Port SimpleIDE Terminal features (Steve)
Add Zip (Dennis?)
Add find/replace (Dennis?)
Add background highlighting (Roy?)
I'd like to get the SpinnySense (AutoComplete) stuff to work better. On Mac for example, a new-line comes from nowhere. I'd also like to change the way PUB/PRI works. That is, highlight the parameters after enter to make changing them easier, and maybe keep up with the number of parameters entered with tool-tip suggestions. Another enhancement might be to show a tool-tip for any matching symbols in the editor.
Just had the chance to check in and update. Absolutely excellent. On Mac 10.8.6. My preferences were even kept through the update. My Beanie works:)
I have been able to add a button to the terminal window!!!
Of course, I can't actually do anything with the button.
What I would like to do is "log" the serial terminal to a file with echo off.
Regards
Rich
I also can't get the help menu to display… tried moving the code into void MainWindow::setupFileMenu()
1. Which would be better to offer in the font selector? parallax2.ttf or parallax2-bold.ttf ?
2. Anyone care to try making an application icon?
@rjo__ I'm not too sure about logging serial IO to a file at this point. It is very hard to keep up with fast input right now. When I switch to the QSerialPort, it may be better because of event driven receive. I've played with QSerialPort some, but I can't promise that it will actually work well yet. There are some annoying critters in Qt5 so far. I considered going back to Qt4, but that won't work with my recently updated Mac.
I committed my first change. It was just a bug fix (sometimes clicking functions in the side panel would take you to the wrong line in the file) and a minor change to how highlightCurrentLine works in prep for background colors.
Hopefully, I didn't bust anything. I'm new to hg, so I hope I got it right with my change notes and all.
Edit: well I thought I had committed, but I haven't actually. I had just done everything locally I guess. When I try to push it, it wants a username and password, but won't accept anything that I think it should for that. Figured out the right one, silly google code oddity. :P
Thanks for the quick response. I haven't tested this in Propeller IDE, but what I am used to in other serial terminals is a finite limit on the input
and/or
as the input is buffered to the terminal it slows down as the file gets bigger. It's not real important since we can use whatever we want for the serial terminal.
Another issue I wanted to raise was the issue of "help." Your IDE is so nice, I can easily imagine it being used for the Prop2…
where the help issue is going to be a real one. The unofficial prop2doc initiative https://docs.google.com/document/pub?id=1-9OtOVRkTxojO-cAFMwpcZEUorkCU_uwi26EQZMV8uM has been stalled waiting for the P2 to stabilize. I was wondering whether it might
be good to coordinate these two efforts so that what is there can be integrated with your IDE.
I just tried the latest version, on the Windows 7 box, and the beanie works without any hangup, good job! I tried some of the other things, and they seem to work as expected. Since I do not use any of the Fx keys, I did not try those out, I think frida has that covered. I still have not been able too get the Debian box Qt5 too work correctly, so somebody else will have too test that out.
I've removed the requirement for an external spin loader.
Thanks for your report Ray. Sorry I can't be more help to you with your Linux experiments. I'll note however, that in my Mint VM I had to turn off 3D acceleration (ctwardell mentioned this before) otherwise the VM would crash often even without Qt. Hopefully the Mint guys will fix this problem.
Frida, You're testing has been a great asset so far. Thanks.
Debian 64-bit box.
For a fresh Debian install to run Qt5:
install gcc
install g++
install make
install mesa-common-dev
install mesa-utils
and I still come up with an error in Qt5: cannot find -IGL. I am not sure what I need to do for IGL.
How come for a Widows 7 64-bit box to run Qt5, that compiles Propeller IDE, all you need is a straight forward Qt5 install, and you are ready to go?
Finally I found the missing link, for this run anyway, libgl1-mesa-dev. That is a lot of searching for a chance too run Qt5 correctly on a Debian 64-bit build. Anyway, below is the stuff yoy need when you do a fresh Debian 64-bit install.
Debian 64-bit box.
For a fresh Debian install to run Qt5 too compile Propeller IDE :
install gcc
install g++
install make
install mesa-common-dev
install mesa-utils
install libgl1-mesa-dev
So, after all this, the Linux version of Propeller IDE looks very good. The only problem is when you do the properties for a compiler, it looks for an openspin.exe, so you have to type in openspin.linux, then everything works as expected. Maybe there should something that shows all the files in a particular folder. The beanie worked as expected, and my blinker.spin program worked as expected also.
Comments
While having DLLs is nice we have some roadblock here. Not all compilers support dynamic linking.
Take - for example - PropGCC. I do work with a nice COBOL compiler. (GNU Cobol). It basically produces C code out of COBOL and runs it with some support DLLs (also written in C or COBOL compiled to C). No static linking supported.
Shoot. No way to run this with PropGCC even if GCC is the main C compiler used in this Project (runs also with VS 2008/10 - that's what I do for now). Same thing with @Heaters JavaScript build with emscripten. of your current compiler. Works perfect. But I am not sure if emscripten would support dynamic linking.
The current version of openspin should be able to run/compile with PropGCC - a version needing a DLL is doomed on the prop.
I do understand your wish of using the exact same Backend, but can you at least give the ability to compile this with static linking into one single file?
Maybe I am missing something here, but please consider this static linking issue.
As mentioned before I am not a C programmer at all. I do have no clue about GCC and very less experience with Linux. I am more fluent in JCL then Bash...
Enjoy!
Mike
Openspin might become a simple "shell" program plus a dynamically loaded library or two?
That might really bugger up our plans for a Spin compiler in the browser.
Or at least make it a lot harder.
I would say that the main requirement, is the fact that we need to be sure that the development of such tool will not create, in a couple of weeks, several different branch depending on the hosting OS.
so for me no opposition on your proposal Roy.
T.
I've been playing with loader and terminal options. Things seem to work (especially in windows LOL) except for 2 issues at this point: 1) The Mac serial terminal receives characters out of order for some reason. 2) In my Linux VM, if I attach/detach the usb port through the virtualbox interface, the port will not open unless I restart the IDE program. I'll be experimenting with the new QSerialPort driver in Qt5.2.1 among other things to see if i can clean this up ... a branch would have been a better approach. Sorry for the mess.
It would be very useful if someone with a real Linux box could test the USB attach/detach stuff and let me know what happens. I have two, but they are old and moldy.
Also regarding plugging in different items to the IDE ... After the SPIN development stabilizes, we will be moving to a git repository. Once that happens, I'll probably branch the current repository to save it's state and move the default into another direction. The new direction will include allowing for any old compiler/loader mechanism most likely using make files.
--Steve
It appears to work on Linux Mint 16. I started PropellerIDE without anything connected and there wasn't anything in the drop box. I plugged a Prop in and it appeared, unplugged it and it disappeared, back and forth it worked and worked. Then I downloaded a program, that worked. Unplugged and it disappeared, plugged and it appeared, downloaded and it worked.
Did you click the beanie?
Kinda personal but, yeah.
If something is plugged in, the beanie tells me what it is, if nothing is plugged in, then the beanie tells me it can;t find one. If I put something in, it appears in the drop box, if I take it out, it disappears. Haven't had to restart the IDE to see this work. Is that how it should behave when I click my beanine?
Can we get a remake with "Click your Beanie"...
https://www.youtube.com/watch?v=l3fZuW-aJsg&feature=kp
New Parallax add campaign...
Rick, that sounds perfect.
The Beanie Button is an F7 find propellers thingy. Some devices may be connected but not powered on.
We didn't need that in the 70's and sure don't need it now!!!
A seventies survivor that never wore polyester and never had big hair or platform shoes.
All I can say in my defense is that teenagers are easily influenced I quickly grew tired of disco biscuits though after enjoying feasts of Zeppelin, Aerosmith, Pink Floyd, Heart, and Rush.
You must have been 30 something when KC had his 5 minutes of fame.
Hey, I'm not THAT old!!! I just feel THAT old!!! I'm sure you just forgot that smiley on the end!!
I just tried the latest clone, and seems to be working as expected until you click the beanie, then it hangs there looking for something.
Debian 64-bit box.
For some reason I am having some very unusual problems with Qt5. First, when I download the latest clone, it has some hidden folders where only Midnight Commander in superuser mode can get rid of. When I hit the run button, in Create, it goes through the build process but it never runs the Propeller IDE program, all that I see in the new debug folder is just a build file. I have done a couple of re-installs of Qt5 and the clone, but the results are always the same. Not sure what it will take too resolve this new issue.
Ray
On my Ubuntu.
Edit:
When I use F8,F10 or F11 Open Propeller disappears, so I have to restart. It is without anything in the USB.
I'm still very interested in seeing how the beanie button behaves (F7). Also need more testing with F8,F9,F10,F11.
Frida thanks for reporting your issue with that! I also ran into it. Should be ok now.
I've updated the "current serial terminal" to behave more rationally. I'll add the SimpleIDE Terminal features later.
- Added an Echo On check box for SPIN users (not persistent)
- Made Enter Key send \r or \n based on the OS
- Fixed issue with searching for non-COM ports on windows (thanks Ray!)
- Fixed issue where no port in combo-box can cause program to crash
- Made serial terminal capture all output without requiring delays in code
- Added little PUB/PRI/CON/DAT/VAR etc... words to SpinnySense icons for Don
- Added the block indent fix from Dennis (did I mention this already?)
My Mac jumbled characters problem turns out to have been an "iffy" propeller board.Still TODO:
- Port SimpleIDE Terminal features (Steve)
- Add Zip (Dennis?)
- Add find/replace (Dennis?)
- Add background highlighting (Roy?)
I'd like to get the SpinnySense (AutoComplete) stuff to work better. On Mac for example, a new-line comes from nowhere. I'd also like to change the way PUB/PRI works. That is, highlight the parameters after enter to make changing them easier, and maybe keep up with the number of parameters entered with tool-tip suggestions. Another enhancement might be to show a tool-tip for any matching symbols in the editor.I have been able to add a button to the terminal window!!!
Of course, I can't actually do anything with the button.
What I would like to do is "log" the serial terminal to a file with echo off.
Regards
Rich
I also can't get the help menu to display… tried moving the code into void MainWindow::setupFileMenu()
- Add Zip (Dennis?) Yes!
- Add find/replace (Dennis?) Yes!
dgatelyGot some questions:
1. Which would be better to offer in the font selector? parallax2.ttf or parallax2-bold.ttf ?
2. Anyone care to try making an application icon?
@rjo__ I'm not too sure about logging serial IO to a file at this point. It is very hard to keep up with fast input right now. When I switch to the QSerialPort, it may be better because of event driven receive. I've played with QSerialPort some, but I can't promise that it will actually work well yet. There are some annoying critters in Qt5 so far. I considered going back to Qt4, but that won't work with my recently updated Mac.
Hopefully, I didn't bust anything. I'm new to hg, so I hope I got it right with my change notes and all.
Edit: well I thought I had committed, but I haven't actually. I had just done everything locally I guess. When I try to push it, it wants a username and password, but won't accept anything that I think it should for that. Figured out the right one, silly google code oddity. :P
Edit:
How do I get it to remember to have echo off
and/or
as the input is buffered to the terminal it slows down as the file gets bigger. It's not real important since we can use whatever we want for the serial terminal.
Another issue I wanted to raise was the issue of "help." Your IDE is so nice, I can easily imagine it being used for the Prop2…
where the help issue is going to be a real one. The unofficial prop2doc initiative https://docs.google.com/document/pub?id=1-9OtOVRkTxojO-cAFMwpcZEUorkCU_uwi26EQZMV8uM has been stalled waiting for the P2 to stabilize. I was wondering whether it might
be good to coordinate these two efforts so that what is there can be integrated with your IDE.
Fabulous work.
Thanks
Rich
@Frida, sorry about the F9 problem. It should work now. I've also added Terminal EchoOn persistence for you.
@rjo__, there should be no problem using this for P2. Chip said he would use .spin2 for P2 files to make it easier.
And F9 and echo are perfect now.
Ray
Thanks for your report Ray. Sorry I can't be more help to you with your Linux experiments. I'll note however, that in my Mint VM I had to turn off 3D acceleration (ctwardell mentioned this before) otherwise the VM would crash often even without Qt. Hopefully the Mint guys will fix this problem.
Frida, You're testing has been a great asset so far. Thanks.
For a fresh Debian install to run Qt5:
install gcc
install g++
install make
install mesa-common-dev
install mesa-utils
and I still come up with an error in Qt5: cannot find -IGL. I am not sure what I need to do for IGL.
How come for a Widows 7 64-bit box to run Qt5, that compiles Propeller IDE, all you need is a straight forward Qt5 install, and you are ready to go?
Ray
Debian 64-bit box.
For a fresh Debian install to run Qt5 too compile Propeller IDE :
install gcc
install g++
install make
install mesa-common-dev
install mesa-utils
install libgl1-mesa-dev
So, after all this, the Linux version of Propeller IDE looks very good. The only problem is when you do the properties for a compiler, it looks for an openspin.exe, so you have to type in openspin.linux, then everything works as expected. Maybe there should something that shows all the files in a particular folder. The beanie worked as expected, and my blinker.spin program worked as expected also.
Ray