### Syntax mors (like chicken) has only one valid symbol - "mors". The number of morses within one line is the number of the opcode (number of the command) to execute. If command requires an additional argument, then the line below must contain the argument (in the number of morses), even if it's an empty line. ``` mors mors <- substraction opcode mors mors mors mors mors <- the argument is 5, so the whole command is to substract 5 from the current memory block ``` Conditional statements require a endif instruction after the conditional instructions. Also, mors only counts the number of morses in each line, so you can write pretty much everything and everywhere as a comment. ### Memory Memory in mors is represented as a cutdown version of the tape from brainfuck (it's infinite in only one direction). Imagine a movie reel, where you can see the beginning of the tape, but not really the end. So in mors you have that kind of tape, where you can move between every frame (from 0 to infinity and beyond) and input and/or manipulate it's value. There are two structures for selecting the "frame" or a range of those, on which you want to operate. The first is the cursor. The cursor is the main indicator. You add to the number under the cursor, you substract from the number under the cursor, you goto the line indicated by the cursor. There's also selection, but it's the less important piece of the puzzle. It's used as a secondary indicator (e.g substract from the number (under the cursor) the number selected) or in combination with cursor as a range indicator for commands like prnt. Positions for both can be set by respective commands. ### Commands | opcode | command | details | argument | |--------|---------|---------|----------| |0 |exit |Stops & exits the code.|None | |1 |add |Adds to the number under the cursor.|Number to add, or 0 to add the selection.| |2 |sub |Substracts the number under the cursor.|Number to substract, or 0 to substract the selection.| |3 |sel |Moves the selection.|Number of the field to which to move the selection.| |4 |mov |Moves the cursor.|Number of the field to which to move the cursor.| |5 |prnt |Prints a number (when cursor == selection) or ascii text (when cursor != selection).|None| |6 |get |Gets input from the user (command line arguments have priority over stdin) and saves it either as a number (when number is entered) or ascii text. Starts saving in and after the placement of the cursor.|None| |7 |goto |Changes the currently executed line. Lines are counted from 0.|Number of the line to which to move.| |8 |if |Checks if the value under the cursor is equal to the selected value.|Needs an endif at the end of the conditional instructions.| |9 |mif |Checks if the value under the cursor is greater to the selected value.|Needs an endif at the end of the conditional instructions.| |10 |lif |Checks if the value under the cursor is lesser to the selected value.|Needs an endif at the end of the conditional instructions.| |11 |eif |Completes/ends a conditional statement.|None| |12 |sh |Executes a command from the memory (ascii text between cursor and selection) in the system shell|None|