TRAVEL 33

TRAVEL 33 is an esolang invented by User:GDavid. It's capable of sending information in time, even backwards therefore it's uncomputable.
It got it's name from the fact that the Hello World example's first line was TRAVEL 33 (changed to GOTO 33).
==Commands and two Hello Worlds==
 GOTO 33
 
 COMMANDS
 SET VARIABLE VALUE
 ADD VARIABLE VALUE VALUE BECOMES VALUE % 3 UNLESS IT'S NOW OR LINE
 SUBTRACT VARIABLE VALUE VALUE BECOMES VALUE % 3 UNLESS IT'S NOW OR LINE
 SEND VARIABLE TIME
 GOTO LINE
 CAT VARIABLE TIME LENGTH COPY CURRENT VALUE TO OUTPUT LENGTH TIMES AT TIME STEPPING 1
 FOR EACH CHAR MAKING SURE IT RUNS UNTIL END IF NEEDED
 
 REGISTERS
 A B C D E F
 
 SPECIAL VALUES
 NOW THE CURRENT TIME
 LINE THE CURRENT LINE
 INPUT ONE CHARACTER READ FROM INPUT
 
 THE PROGRAM MUST RUN AS LONG AS THERE'S INPUT OR OUTPUT OTHERWISE IT'S END GETS CUTTED
 ERASING THE OUTPUT IS JUST MAKING SURE THE CAT DOESN'T GET EXECUTED AFTER IT HAS ALREADY
 OR AT LEAST NOT WITH THAT CONTENT
 THE END OF INPUT IS MINUS ONE
 EACH VALUE IS AN ARBITARY SIZE INTEGER
 THERE ARE NO COMMENTS
 OH WAIT THIS IS A COMMENT BUT HOW
 THE ENTIRE CODE IS INTERPRETED AND SYNTAX IS CHECKED JUST IN TIME SO IF WE JUMP OVER
 COMMENTS THEY DON'T PRODUCE A SYNTAX ERROR
 
 OH AND ENJOY THE OVERCOMPLICATED HELLO WORLD THINGY BELOW
 
 SET A 'H'
 SEND A B
 ADD B 1
 SET A 'e'
 SEND A B
 ADD B 1
 SET A 'l'
 SEND A B
 ADD B 1
 SEND A B
 ADD B 1
 SET A 'o'
 SEND A B
 ADD B 1
 SET A ' '
 SEND A B
 ADD B 1
 SET A 'W'
 SEND A B
 ADD B 1
 SET A 'o'
 SEND A B
 ADD B 1
 SET A 'r'
 SEND A B
 ADD B 1
 SET A 'l'
 SEND A B
 ADD B 1
 SET A 'd'
 SEND A B
 ADD B 1
 SET A '!'
 SEND A B
 ADD B 1
 SET B NOW
 ADD B 2
 ADD B 2
 ADD B 2
 SEND B 1
 SUBTRACT B NOW
 CAT A 0 B
 
 SET C LINE
 ADD C 2
 ADD C 2
 ADD C 2
 ADD C 2
 ADD C 2
 GOTO C
 
 AND HERE'S THE EASIEST HELLO WORLD
 
 SET A 'H'
 CAT A 0 12
 SET A 'e'
 SET A 'l'
 SET A 'l'
 SET A 'o'
 SET A ' '
 SET A 'W'
 SET A 'o'
 SET A 'r'
 SET A 'l'
 SET A 'd'
 SET A '!'
==Memory==
TRAVEL 33 programs have 6 registers, A, B, C, D, E and F. All of these are signed integers.
===Getting infinite memory===
Infinite memory can be achieved in the following way
* make a for loop that counts to A with F
** for every step, check if B equals F
*** if yes, send the value of C to time D
*** otherwise waste the time running the true branch would take - if it's more or less time it won't work
To change memory size, send a different A to time <memory loop start>.
To get a memory value, send the address as B to time <memory loop start>.
To set a memory value, send C to time <first step time> + <step time> * <cell>.
/!\ WARNING /!\
A program taking truly infinite memory would take infinite time to start and terminating it would cause a paradox as it already got the memory size that was sent back in time but if it's terminated, it couldn't have got that information from anywhere.
To avoid such weird stuff, every TRAVEL 33 program should be either impossible to terminate by external means or terminating it would mean sending back the values it got but not sent to the time it got them and then truly terminating it.
It would still be an interesting question where the value came from actually then.
==Turing completeness==
Infinite memory and conditional loops are possible, so one can write a BF interpreter in it.
Just don't run +[>+] with it or at least don't terminate it! (read the warning at infinite memory about why)
Category:LanguagesCategory:Uncomputable