| | Re: NQC 2.0 and some math questions
|
|
(...) You're right - I forgot the delay (that's what I get for typing code from memory). Yeah, 'test and set' is the best solution, but unfortunately the RCX doesn't have one. The bitflag stuff is a little ugly for my tastes, which is why NQC does (...) (25 years ago, 2-Oct-99, to lugnet.robotics.rcx.nqc)
|
|
| | Re: NQC 2.0 and some math questions
|
|
(...) Yes, |= is atomic. At the bytecode level you always OR from some source into a destination variable. Dave (25 years ago, 2-Oct-99, to lugnet.robotics.rcx.nqc)
|
|
| | Re: NQC 2.0 and some math questions
|
|
(...) This only works if |= is atomic, though. Is it? Cheers, Ben. -- (URL) grandfather once told me that there are two kinds of people: those who work and those who take the credit. He told me to try to be in the first group; there was less (...) (25 years ago, 2-Oct-99, to lugnet.robotics.rcx.nqc)
|
|
| | Re: NQC 2.0 and some math questions
|
|
Your proposed solution is susceptible to the "lockstep starvation" problem. Lockstep starvation happens when two tasks try to get the lock at the same time and execute the same code in lock step, like so: task 1: lock |= 2; task 2: lock |= 4; task (...) (25 years ago, 2-Oct-99, to lugnet.robotics.rcx.nqc)
|
|
| | Re: Download problem
|
|
(...) I forgot to say I cleared the memory before my attempts, and checked it was actually cleared using the Tools -> Memory Map option. The problem is still there. In lugnet.robotics.rcx.nqc, Dave Baum writes: (...) No problem with the source. Just (...) (25 years ago, 2-Oct-99, to lugnet.robotics.rcx.nqc)
|
|
| | Re: Download problem
|
|
(...) you don't want to send source, you can always compile it and send the binary... nqc -Ofoo.rcx foo.nqc Another alternative would be to download it in verbose mode and send me the log... nqc -v -d foo.nqc >log My email is dbaum@enteract.com Dave (...) (25 years ago, 2-Oct-99, to lugnet.robotics.rcx.nqc)
|
|
| | Re: NQC 2.0 and some math questions
|
|
(...) I'm going from memory here, so I may miss a detail... int lock; #define TASK_BIT(task_num) (1 << task_num) void acquire_lock(int task_num) { while(1) { // wait for lock to be clear while(lock); // try to own it lock |= TASK_BIT(task_num); // (...) (25 years ago, 2-Oct-99, to lugnet.robotics.rcx.nqc)
|
|
| | Re: Download problem
|
|
Hi Mario, I've encountered some weird problems like this too. I think I was able to fix things up by erasing the memory. In RcxCC, use the Tools -> Clear Memory option. Please let us know if that works. Jonathan (...) (25 years ago, 1-Oct-99, to lugnet.robotics.rcx.nqc)
|
|
| | Download problem
|
|
Hi Dave and everybody, I have a strange problem with an NQC program. It's something Marco Beri and I are preparing for the Mindfest. The program is rather large if compared to the average NQC programs: about 240 lines of code with large inline (...) (25 years ago, 1-Oct-99, to lugnet.robotics.rcx.nqc)
|
|
| | Re: NQC 2.0 and some math questions
|
|
(...) There is a way to do it even if you have no test and set, though I can't remember it off the top of my head, and it is slow. Don't see how using bitflags helps? Cheers, Ben. -- (URL) grandfather once told me that there are two kinds of people: (...) (25 years ago, 1-Oct-99, to lugnet.robotics.rcx.nqc)
|