Hi guys !

After days of work, I finally decided to release the first version of the DoorsCS 7 GUI axiom : AxeDCS !

This axiom allows you to use DoorsCS 7 widgets and several GUI functions in order to build your own graphical interface, which was a very hard task leading to a huge program. Now you can easily display and handle text or number input, button clicking and others !

Also, for now I documented all the available functions at the AxeDCS GUI Reference page on dcs.cemetech.net. Make sure to take a look at it before starting programming !

Let me know what do you think of it, and of course you can ask questions Smile

Latest download : http://mattias.refeyton.fr/espace-ti/AxeDCS/axiomdcs_v0.5.8xv

To use it, just add :
Code:
#Axiom(AXIOMDCS)
to your Axe code, and then you'll can use AxeDCS functions Wink

Enjoy !
Yes, I've been following along closely with this project. May I request that you upload your beta to the Cemetech archives, and then update it with the major incremental releases? Smile
Yeah, I'll do that Smile
matrefeytontias wrote:
Yeah, I'll do that Smile
As per our discussion on IRC, I think that the TI-83+/84+ ASM Shell Modules folder would be the best place for this:

http://www.cemetech.net/programs/index.php?mode=folder&path=/83plus/asm/shells/modules/
I was wondering if there were any examples of how to set up a gui with this axiom. An example would really help. Smile
Hi,

There is an example program in this package : http://www.ticalc.org/archives/files/fileinfo/450/45022.html

I thought I had included it in the Cemetech archive, I'm updating it.

EDIT : nevermind all of that, here is the example : http://www.omnimaga.org/ti-z80-calculator-projects/password-the-first-axe-program-using-the-dcs7-gui-api/
Here's what I have so far in my program.


Code:

.IRC
#Axiom(AXIOMDCS)
#Axiom(CN2AXE)
[FFFFFFFFFF] -> GDB1
"TITLE" [00
LargeWin(GDB1)
Mouse
While GetKey(15) ≠ 1
1->A
End


Once compiled, when I run it the calc screen goes blank, and when I press on it gives me the RAM Reset screen.

Any help would be appreciated.[/code]
First, make sure you compile your Axe program for DCS.

Then, with only a window, your GUI doesn't actually have any clickable element. Try adding a WinBtn element to it: http://dcs.cemetech.net/index.php/WinBtn
Apparently that didn't do the trick either. Does it crash on the Mouse or on the LargeWin()? I was going to suggest that you needed to OpenGUIStack() somewhere, but it doesn't appear that AxeDCS has a way to open or close the GUI stack; PushGUIStack, called by LargeWin() and similar functions, does that. It would be a good idea to at least expose CloseGUIStack(), though.
I tried adding WinBtn, but I get the same problem.


Code:
#Axiom(AXEDCS)
#Axiom(CN2AXE)
Lbl CLOSE
GUIEvent
Goto END
[FFFFFFFFFF]->GDB1
"TITLE" [00
LargeWin(GDB1)
WinBtn(Data(1, ʟCLOSE, ʟCLOSE, ʟCLOSE))
Mouse
Lbl END


EDIT: @KermM It crashes at Mouse
In Axe, will execution start at [FFFF.... or at Lbl CLOSE when you first start the program? If it will start at Lbl CLOSE, then that will crash immediately.
The former I believe. I think Lbl in axe means its the start of a subroutine/function.
Axe mostly works the same as assembly. At least that's the case for labels. In other words, "Lbl Close" is the same as "Close:", at the only condition that you only write code in that region.

This program will start at its beginning, which is Lbl Close.

Something that doesn't work exactly like assembly though is data. It is always inserted at the end of the program. So [FFFFFFFFFF]->GDB1 and "TITLE" [00 are not to take into account when debugging. Once compiled, They will not be in the middle of the code as they seem to be here once. If you want some kind of proof, try moving those two lines and putting them elsewhere, you'll see that it will not change anything as long as you put the "TITLE" line right after the GDB1 line. In other words, Axe data works the same as assembly if you put your data at the end of your program.
Hayleia wrote:
Axe mostly works the same as assembly. At least that's the case for labels. In other words, "Lbl Close" is the same as "Close:", at the only condition that you only write code in that region.

This program will start at its beginning, which is Lbl Close.
Ah, then in that case, Sonic's program needs to be rearranged to ret immediately after Lbl END, and to have Lbl CLOSE isolated by itself.
I don't know about Lbl Close but the Return (which compiles as ret) at the end is not necessary, it is added automatically by the Axe Parser if missing. It is highly recommended to put it though, in case you want to add a routine and forget about the fact you didn't put a Return.
I don't get why not put a Return instead of the Goto END though (after moving the Lbl Close and what comes with it), why jump to ret instead of ret ?
That makes sense. I believe the more correct version of Sonic's code goes something like this:

Code:
#Axiom(AXEDCS)
#Axiom(CN2AXE)
[FFFFFFFFFF]->GDB1
"TITLE" [00
LargeWin(GDB1)
WinBtn(Data(1, ʟCLOSE, ʟCLOSE, ʟCLOSE))
Mouse
// Mouse does not continue afterwards
Lbl CLOSE
GUIEvent
Lbl END
Return
There should be a CloseGUIStack before the Return, but it seems like Matrefeytontias did not expose that.
The reason there's a goto instead of a return is because in the docs it says it needs a goto because it jumps to the lbl instead of calling it.
That's what mouse does, jumping to routines. It's just that if you want to resume normal execution of the program, you must jump out of the routine and not return from it.

Again, please confirm you compile your Axe program for DCS and not Noshell.
sonicrules1234 wrote:
The reason there's a goto instead of a return is because in the docs it says it needs a goto because it jumps to the lbl instead of calling it.
Well my question was not "why jump instead of ret ?" but "why jump to ret instead of just ret ?" Wink
But anyway, replacing the jump to ret with a ret won't solve anything.
To answer your question, I have been compiling for doorcs this whole time, and continue to do so. Also, thanks to help on IRC, I got it working. Very Happy
  
Register to Join the Conversation
Have your own thoughts to add to this or any other topic? Want to ask a question, offer a suggestion, share your own programs and projects, upload a file to the file archives, get help with calculator and computer programming, or simply chat with like-minded coders and tech and calculator enthusiasts via the site-wide AJAX SAX widget? Registration for a free Cemetech account only takes a minute.

» Go to Registration page
Page 1 of 2
» All times are UTC - 5 Hours
 
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum

 

Advertisement