Something that you could do to allow BASIC programmers to work with CALCnet is to write an ASM shell program that basically runs various event handlers written in BASIC (or ASM, should you desire to expand this). The events include (for example):
- Main (called at the beginning of the program)
- FrameRecieve (called when the frame is recieved, passes the frame's contents in Ans as whatever format you choose)
- KeyPress (called when a key is pressed, passes the keypress code in Ans)
- TimerTick (called when a timer ticks)
- Shutdown (called when the BASIC program requests the program to quit, turns off CALCnet soon afterwards)
ASM utility programs are also provided:
- ZCHECKTX: Returns the frame to be sent as if it was recieved by the RecieveFrame event handler. If Ans contains zero, there is no frame.
- ZSEND: Packages Ans as the next frame to be sent (but does not set the OK to send bit yet)
- ZQUIT: Signals to the ASM kernel program that we want to quit
Basically, this strategy gives the maximum amount of opportunity to get back into the ASM kernel and reenable CALCnet. To protect against the BASIC interpreter's messing with interrupts, CALCnet is reenabled after every event handler, and an event handler is not entered if a frame is pending on either end, but has not completed. To use this, programmers would create an Associated Program that specifies the programs for each event handler, and opening the Associated Program would run it in the utility.
you could always make a BASIC library
spud2451 wrote:
you could always make a BASIC library
But as Kerm said before, the BASIC interpreter plays games with interrupts, which messes up CALCnet. Thus, the main utility program has to be in ASM, so that the program has excellent control over CALCnet interrupts. Anyway, I know that some programmers like an event driven model anyway, so being able to use one would probably increase their code's efficiency.
The thing is calcnet has to have full interrupt control even chaining them in asm is a task that is underestimated (I should know I have tried.) the basic parser enables and disables interupts willy nilly and spazticly so much that its not feasible to even make a implementation unless we can implement it in a blocking fashion that during the sending and receiving of data there is no possible way for the basic program to continue.
On that note if you really really want something like that I might take a stab at it its still not an easy task and its one KermM would have to help me on immensly.
How about making an axe parser version of it?
Hopefully saving the TI-BASIC CALCnet discussion for another topic, I anticipate that we can settle on a contest topic soon. I was thinking we might be able to announce the contest tomorrow, to start November 1st and end around January 20th, 2013, although that may be unrealistic now.
Well if we are wanting to do a calcnet themed compo its going to take me about a month unless I get alot of help with the basic library.
I would like to live in the delusion of a BASIC category for the contest XD as I'm trying to get some stuff made! that or C. Oh well back to my dungeon.
geekboy1011 wrote:
Well if we are wanting to do a calcnet themed compo its going to take me about a month unless I get alot of help with the basic library.
Indeed, so I was thinking we could go with a different topic for now, and give us/you more leisure to work on the CALCnet library for Contest 10.
So what other ideas do we have bouncing about?
I know I'm not too active on Cemetech, though I'll offer a suggestion since I competed in the previous tournament.
Personally, I'd like to see a Windows/Linux section like the previous tournament. Last time we did get a few completed entries, and in my own case it gave me the motivation to actually complete a computer project for the first time. Even though there was ultimately no reward except a (very nice) userbar.
I'm in favor of AI's as the next contest theme. Not anything specific like over Calcnet or anything, just AI's in general. Judging could be based on complexity of AI, speed/efficiency of AI, etc.
I hear that, and I think it's a good point. One of my biggest problem is the people who come to us and say "I've never written an AI, so I don't know how to write one." I usually counter with (a) the fact that none of us knew how to write an AI when we first wrote it, and (b) all an AI really needs to do is play as well as a perfect player. Then you can work on making it fallible if needed. I think something that would help get into people's heads that AIs are not this crazy complex thing would be a positive force in the community.
TI-Concours ran an idea like that for the TI-BASIC second round—an AI subroutine to plug into a Light Cycles framework, where the score is based on the number of games won and lost after each AI is played against every other AI.
I think it'd be a great idea for a full contest!
EDIT: Somehow I ended up replying to a post on the first page. Ignore me if this isn't relevant :/
KermMartian wrote:
I hear that, and I think it's a good point. One of my biggest problem is the people who come to us and say "I've never written an AI, so I don't know how to write one." I usually counter with (a) the fact that none of us knew how to write an AI when we first wrote it, and (b) all an AI really needs to do is play as well as a perfect player. Then you can work on making it fallible if needed. I think something that would help get into people's heads that AIs are not this crazy complex thing would be a positive force in the community.
On the contrary note, it may be a huge step up for contestants to learn to use (and possibly test) their potential gCn program entries to a gCn-themed contest.
I vote we do a hardware contest.
pcb_master wrote:
I vote we do a hardware contest.
And how do you propose this would work? It could be interesting.
It sounds to me as if we're getting more rather than fewer ideas. I think we definitely need a hardware contest, but I think it shouldn't be this one. I think we should stick with something DCS-related, games, or modifying existing projects.
I'm personally liking the modifying an existing program.
I promise i wont enter cadan >.> <.<
I'm still in favor of a contest where you take a game, recreate it (using Axe, ASM, TI-BASIC, etc.) and then add your own spin to make it better.