TwimpLanguage is another EsotericProgrammingLanguage.
----
== TWIMP document ==
 
* All commands are converted to uppercase before being executed
* Forced constants (c) are always in Roman
* Command (x) you can put another command
* Stacks (s) are stacks that can have only 3 kinds of values inside: program-line-references, stack-haf-references, and duck-sos.
* You never need to use the shift key to write a program.
* Execute-counter is increased by 1 every line of program (even if it does nothing) 
* ABREV c x = Runs before the programs runs. It does for all .. 1 to c will change .. in x to that number and insert those commands in that order in the program
* RET s = Go to the program-line referenced by the top of the stack (does not remove items from the stack)
* PUSHL s = Push this line onto the stack
* PUSHLN s = Push the line after this line onto the stack
* OUT n = Output 1 byte (8 bits)
* POP s n = Pop n elements from s and discard them
* MOVE s s = Move 1 top element from first stack onto top of second stack
* COPY s n = Pop top element of the stack and push it n times. POP s 1 does the same things as COPY s 0.
* STOP = Stop the program
* ON s = Turn on the line of top element of stack
* OF s = Turn off the line of top element of stack. Lines is of is - at the beginning stop from execute (except ABREV and STEP)
* SWAP s = Swap this line with line indicated by top of stack
* NEW s = Make a new stack, blank
* MAKE s = Push this line onto stack if stack is empty
* FORGET = Reset execute-counter to zero
* DIVIDE n = Set divider to number (default 10)
* STEP c = Increase execute-counter by number
* \ z = Any text. Put on stderr
* DUCK s = Push duck-sos onto top of stack
* REF s = Push 2 haf-references to the stack on top of itself
* PULL s = Pop 2 haf-references off the stack, and move the top element of the reference stack onto this stack
* LINE z = Push this text made of any characters onto the waiting line
* DRINK n = Makes the program drunk
* NO = Does nothing

Expressions:

* n = Any number (positive or negative)
* [] = Take 1 nibble (4 bits) from input
* [n-n] = Subtract
* [n=n] = Binary numbers AND
* [\] = Take first character off of waiting line and insert into equation
* [n] = Look at top element of stack. If is empty stack or pointer to line is on, or to haf-reference it will be 1, if is line is of, it will be 2, if the top of the stack is duck-sos, the whole equation will be replaced with zero.
* [=] = The execute-counter divided by the divider rounded down
* [======] = How many equal signs you put after the first, will multiply by 2^number. Example: [==] change into [[=]--[=]] and [=====] change into [[====]--[====]] which will do again, again until stop
----
I also want to add a KNOT command to tie knots in the stack and in the program. Can you tell me how exactly would that work, please?

''(Please type more in here)''

I want you to make a new manual, something like the INTERCAL manual. I am no good at making manuals. Look at source-code and make manual.

''I've tried to correct spelling on this page, probably with less than 100% success. For example, what are "duck-sos" and "haf-reference"?'' (You will have to look at the source-code to figure that out. The document I wrote is not very clear.)

But it still isn't a full manual yet.

Now I added more commands and more stuff, you download it and look, and write a manual like INTERCAL manual.

Please, I need more suggestions! (PleaseComment)

I added more commands now, now you need to make some useful programs using this!

----
See also: http://zzo38computer.cjb.net/esoteric/twimp/ for downloads
----
CategoryProgrammingLanguage