Tedius

Tedius is an esoteric programming language designed to be as tedious as possible. In fact, even the creator of Tedius thinks Tedius is tedious!

Tedius was designed, written, compiled, re-written, and re-compiled by User:Pila, who had nothing better to do with his time. It is currently comprised of 9 commands, which can manipulate a bunch of bytes on a tape. brainfuck, which is Turing-complete, can be translated to Tedius, proving that Tedius is also Turing-complete. Its interpreter was written in Objective-C for Mac OS X, so those Windows users need to write their own interpreter.

Commands and syntax
In Tedius, everything is either a no-op or a command. A command looks like this:

[name] [argument];

Accordingly, every command ends with a semicolon The command is separated from the argument by whitespace. Comments are written like this:

~ This is an extremely simple comment in such a tedious language ;

Comments must therefore begin with a tilde and end in a semicolon. The nine commands are the following:

Note that the  and   commands have been deprecated in favor of the   and   commands in Tedius 1.1; this allows for control structures to be nested.

So, a sample program would look something like this:

LBL 1; INP; ~ get user input ; OUT; ~ output the input ; JMP 1;

You can put several commands on a line like this:

INC;INC;INC;INC;INC;MVR;INC;INC;SHF 2;INC;

which only adds to the tediousness.

Control structures
Control structures can be created using the  and   commands. creates a label and  jumps to it if the value of the current byte is not 0. It's possible to nest these control structures like this:

LBL 1; ~ blah ; LBL 2; ~ blah ; JMP 2; ~ blah ; JMP 1;

or to jump to the same label in two parts of the code:

LBL 1; ~ do stuff ; JMP 1; ~ do other stuff ; JMP 1;

Limitations
Tedius has many limitations that make it tedious to code with.

Implementing subtraction
There is no direct subtraction in Tedius, and there never will be unless somebody makes a derivative of Tedius. In order to subtract x, one must call INC, 256 - x times. This takes advantage of the fact that the value of the byte wraps once the value reaches 256. If one doesn't want to type ' ' over and over again, they can either 1) copy and paste it, or 2) use this implementation:

~ set the byte to some value ; MVR; INC; LBL 1; INC; MVL; INC; MVR; JMP 1; MVL;

Bitwise Shifts
One could, in theory, write Tedius code for a very long time without using the SHF command once, but who would want to increment a variable over and over? (Urban Müller) Instead, one could perform a combination of bitwise shifts and increments, so what once was

INC; INC; INC; INC; INC; INC; INC; INC; INC; INC; INC; INC; INC; INC; INC; INC; INC; INC; INC; INC; INC; INC; INC; INC; INC; INC; INC; INC; INC; INC; INC; INC; INC; INC; INC; INC; INC; INC; INC; INC; INC; INC; INC; INC; INC; INC; INC; INC; INC; INC; INC; INC; INC; INC; INC; INC; INC; INC; INC; INC; INC; INC; INC; INC; INC; INC; INC; INC; INC; INC; INC; INC; INC; INC; INC; INC; INC; INC; INC; INC; INC; INC; INC; INC; INC; INC; INC; INC; INC; INC; INC; INC; INC; INC; INC; INC; INC;

could become

INC; INC; INC; SHF 5; INC;

Translating brainfuck
brainfuck can be translated to Tedius like so:

Hello, world!
INC; SHF 3; INC; SHF 3; OUT 1; SHF 8; INC; SHF 1; INC; SHF 3; INC; SHF 2; INC; OUT 1; INC; INC; INC; INC; INC; INC; INC; OUT 2; INC; INC; INC; OUT 1; SHF 8; INC; SHF 2; INC; SHF 1; INC; SHF 2; OUT 1; SHF 8; INC; SHF 5; OUT 1; SHF 8; INC; SHF 2; INC; SHF 2; INC; SHF 1; INC; SHF 1; INC; OUT 1; SHF 8; INC; INC; INC; SHF 2; INC; SHF 1; INC; SHF 1; INC; SHF 1; INC; OUT 1; INC; INC; INC; OUT 1; SHF 8; INC; INC; INC; SHF 2; INC; SHF 1; INC; SHF 2; OUT 1; SHF 8; INC; INC; INC; SHF 3; INC; SHF 2; OUT 1; SHF 8; INC; SHF 5; INC; OUT 1; SHF 8; INC; INC; SHF 2; INC; INC; OUT 1; SHF 8;

Cat program
LBL 1; INP; OUT 1; JMP 1;

Interpreters
Tedius interpreters only accept files with the .tds extension.

Tedius 1.0 has been replaced with Tedius 1.1 which can be downloaded soon.