EXAPUNKS

EXAPUNKS

View Stats:
Maldito Aug 15, 2018 @ 6:46pm
3rd TEC EXA-BLASTER MODEM help
I'm having trouble with it. How am I supposed to sync the EXAs? Any instructions I use to count and sync them up end up adding to the math of how many cycles I have to wait. I'm having so much trouble organizing and doing the math

Is there a better way?
< >
Showing 1-13 of 13 comments
misterwishart Aug 15, 2018 @ 6:56pm 
Have a look at the description for TJMP and FJMP as it relates to the T register:

"TJMP: Jumps to the specified label if the T register equals 1 (or any value other than 0)"

"FJMP: Jumps to the specified label if the T register equals 0"


Think about how you could exploit this for a countdown without having to use TEST
Maldito Aug 15, 2018 @ 8:57pm 
Thanks for the tip, but I already do that
Pothocket Aug 15, 2018 @ 9:29pm 
try doing test runs just to debug them. Whatever method you're using to give them their countdown value, set it to 1000 for each one. Once you get a few of them into their wait cycle you'll see what the difference is and know what your delay should be. Even then there are other problems that will likely happen, like rounding issues. Good luck!
Host Aug 16, 2018 @ 7:21am 
The time it takes to dial a number, write the message and repeat needs to be constant. Then you just need to figure out how many cycles that is and then have each exa wait (that many cycles) × (8 − current iteration).
CrimsonTide Aug 16, 2018 @ 12:38pm 
Just when I thought I'm done with the previous modem puzzle, the third one strikes me again!

I know I have to use the idea of syncing the countdown (like what Pothocket and Omolog has pointed out). The problem is how could I execute it when the number of texts in each tests are different. It's gonna be messy to have two or more EXA keep track of cycles.
Schippi Aug 16, 2018 @ 1:16pm 
see the cyclecount when the first and 2nd exa go into their wait loop before pushing the #PAGE. suppose thats 100, then the waitloop itself needs to take a cycle amount that devides 100, like 10. that should let you solve 1 test-case after a bit of tinkering.

the messages can be different length(multiple predetermined ones), so you have to make sure that that is accounted for and the cyclecount between entering the wait-loops is still devisable by 10 (in this example)
Melbac Aug 16, 2018 @ 2:33pm 
I used two Exos
Nr. 1 does all the work: Dialing and enter the Meassage - then it waits for a go signal, cuts the line and repeats till eof.
Nr. 2 Does nothing but Count down.
Every (35 in my case) steps he gave the nr 1 a Go signal and replicacted itself. The replica links 800 and has the same countdown running. (taktes some noops)
the Moment the clock reachs 0 all replicas press the button and destroy themself.


misterwishart Aug 16, 2018 @ 7:18pm 
Originally posted by Maldito Sllypper:
Thanks for the tip, but I already do that

Fair enough. Doing that at least means each 'count' should only take 1 cycle per count making it easier to sync

What I did was first test them with large amount of cycles (say T= 1000) with 'NOOP' in place of where the adjustment subtraction (i.e how much EXA2 would need to be offset to be in sync with EXA1) would be. Ran the program. Then, once they were all in place, paused and checked the difference in T values between each of the 8 EXAs.

Using that info, I'd know both what the subtraction would have to be as well as the shortest initial count
Maldito Aug 16, 2018 @ 8:25pm 
Originally posted by misterwishart:

Fair enough. Doing that at least means each 'count' should only take 1 cycle per count making it easier to sync

Doesn't it use 2 per count? SUBI and TJMP?
CrimsonTide Aug 16, 2018 @ 9:30pm 
Originally posted by Melbac:
I used two Exos
Nr. 1 does all the work: Dialing and enter the Meassage - then it waits for a go signal, cuts the line and repeats till eof.
Nr. 2 Does nothing but Count down.
Every (35 in my case) steps he gave the nr 1 a Go signal and replicacted itself. The replica links 800 and has the same countdown running. (taktes some noops)
the Moment the clock reachs 0 all replicas press the button and destroy themself.

Aha! Just realized I don't need to have two EXAs to read and write the register, one is enough. Pass it with 907/61/27.
misterwishart Aug 17, 2018 @ 9:23am 
Originally posted by Maldito Sllypper:
Originally posted by misterwishart:

Fair enough. Doing that at least means each 'count' should only take 1 cycle per count making it easier to sync

Doesn't it use 2 per count? SUBI and TJMP?

Ahh, yes sorry: 2 per count. Still makes it easier to sync. Just need to make sure an even number of cycles occur between the creation of each new EXA
bkilian2000 Apr 5, 2019 @ 1:07pm 
I calculated how many cycles per word in the text, then appended the number of words to the end of the text file, and used that to calculate exactly how many cycles to sync. I've gotten a lot of use out of using the ends of data files as scratch data storage.
The math behind my delay makes absolutely no sense unless you include the calculation and checking delays. After connecting to each pager and loading the message, the controller goes through, connects to each pager again, and sends the delay. The delay is X*5 where X is the number of pagers left to do including the one currently getting its value. The target EXA then divides the number it gets by 5, and adds it to the value. Which is of course just X*6, but sending X*6 right from the start doesn't work.

It's, messy to say the least. Functional, but messy.
< >
Showing 1-13 of 13 comments
Per page: 1530 50