dual tape is a "two" instruction tape machine. Every cell holds an instruction and a number.
About
| About
|
| Author
|
Charles McMarrow
|
| User
|
User:Ch44d
|
| Conceived
|
8/18/2021
|
| Birthday
|
10/29/2021
|
Instructions
| Name
|
Instruction
|
Description
|
Next
|
n
|
Increment to the next rule and increment to the next instruction.
|
Execute
|
x
|
Execute the current rule.
|
Rules
| Name
|
Description
|
Halt
|
Stop the program.
|
Out Number
|
Outputs the number from item_1.
|
Out Character
|
Outputs the number as a UTF-8 character from item_1.
|
In Number
|
Read number from console into item_1. Falls back to 0 if error.
|
In Character
|
Read UTF-8 character from console into item_1. Falls back to "\0" if error.
|
Add
|
item_1 = item_2 + item_1
|
Subtract
|
item_1 = item_2 - item_1
|
Jump
|
pc = current value in memory
|
Jump Dynamic
|
pc = value from memory address in item_1
|
Jump Zero
|
pc = item_1 if item_2 == 0
|
Jump Greater
|
pc = item_1 if item_2 >= 0
|
Read
|
item_2 = item_1; item_1 = current value in memory
|
Read Dynamic
|
item_2 = item_1; item_1 = value from memory address in item_1
|
Read Dynamic Instruction
|
item_2 = item_1; item_1 = value from memory instruction address in item_1
|
Write
|
current location in memory = item_1
|
Write Dynamic
|
value from memory address in item_1 = item_2
|
Write Dynamic Instruction
|
value from memory instruction address in item_1 = item_2 if item_2 is a valid instruction
|
Registers
| Register
|
Description
|
pc
|
Holds the current program counter. At program start pc is set to the label "@". If Label "@" is not present an error will be thrown.
|
item_1
|
Set to 0 at program start.
|
item_2
|
Set to 0 at program start.
|
rule
|
Set to Halt at program start. The Next instruction uses this register to cycle through all the rules in the order listed.
|
Memory
A single memory cell holds two items, instruction and data. The default instruction value is "n" and the default data value is 0. Memory range is negative infinity to infinity.
Syntax
| Syntax
|
| <CODE> ::= {(([LABEL] INSTRUCTION [LABEL | NUMBER | CHARACTER | COMMENT] [COMMENT]) | COMMENT | "") NEWLINE}
|
| <LABEL> ::= "@" {Any UTF-8 Character excluding white space}
|
| <INSTRUCTION> ::= "n" | "x"
|
| <COMMENT> ::= "#" {Any UTF-8 Character excluding NEWLINE}
|
| <NEWLINE> ::= "\n"
|
| <CHARACTER> ::= "c" (Normal UTF-8 Character)
|
| <NUMBER> ::= An Integer
|
Sister Language
dual_tape_ez
Programs
@ n # Truth Machine
n
n
x
n
n
n
n
n
n
n
n
x @zero
n
n
n
n
n
n
n
n
n
n
n
n
n
n
n
x
n
n
x 1
n
n
n
n
n
n
n
n
n
n
n
n
n
@one_loop n
n
n
n
n
n
n
n
n
n
n
x
n
n
n
n
n
n
x @one_loop
@zero n
n
x 0
n
n
n
n
n
n
n
x
n
n
n
n
n
n
n
n
n
n
n
n
n
n
n
n
x
Hello World
@ n # Hello World
n
n
n
n
n
n
n
n
n
n
x cH
n
n
n
n
n
n
n
n
x
n
n
n
n
n
n
n
n
n
n
n
n
n
n
n
n
n
n
n
n
n
n
n
n
n
n
x ce
n
n
n
n
n
n
n
n
x
n
n
n
n
n
n
n
n
n
n
n
n
n
n
n
n
n
n
n
n
n
n
n
n
n
n
x cl
n
n
n
n
n
n
n
n
x
n
n
n
n
n
n
n
n
n
n
n
n
n
n
n
n
n
n
n
n
n
n
n
n
n
n
x cl
n
n
n
n
n
n
n
n
x
n
n
n
n
n
n
n
n
n
n
n
n
n
n
n
n
n
n
n
n
n
n
n
n
n
n
x co
n
n
n
n
n
n
n
n
x
n
n
n
n
n
n
n
n
n
n
n
n
n
n
n
n
n
n
n
n
n
n
n
n
n
n
x 32
n
n
n
n
n
n
n
n
x
n
n
n
n
n
n
n
n
n
n
n
n
n
n
n
n
n
n
n
n
n
n
n
n
n
n
x cW
n
n
n
n
n
n
n
n
x
n
n
n
n
n
n
n
n
n
n
n
n
n
n
n
n
n
n
n
n
n
n
n
n
n
n
x co
n
n
n
n
n
n
n
n
x
n
n
n
n
n
n
n
n
n
n
n
n
n
n
n
n
n
n
n
n
n
n
n
n
n
n
x cr
n
n
n
n
n
n
n
n
x
n
n
n
n
n
n
n
n
n
n
n
n
n
n
n
n
n
n
n
n
n
n
n
n
n
n
x cl
n
n
n
n
n
n
n
n
x
n
n
n
n
n
n
n
n
n
n
n
n
n
n
n
n
n
n
n
n
n
n
n
n
n
n
x cd
n
n
n
n
n
n
n
n
x
n
n
n
n
n
n
n
n
n
n
n
n
n
n
n
n
n
n
n
n
n
n
n
n
n
n
x c!
n
n
n
n
n
n
n
n
x
n
n
n
n
n
n
n
n
n
n
n
n
n
n
n
n
n
n
n
n
n
n
n
n
n
n
x 10
n
n
n
n
n
n
n
n
x
n
n
n
n
n
n
n
n
n
n
n
n
n
n
n
x