1
|
{"NandGame:Levels:ASSEMBLER1":{"code":"# Assembler code \nA = 0x7fff\n*A = 1\n*A = *A + 1\nA = 0\nJMP\n"},"NandGame:Levels:STACK_PUSH_STATIC":{"code":"# save D\nA = SCRATCH1\n*A = D\n\nA = address\nD = *A\n\n# init SP address\nA = SP\n# set memory address\nA = *A\n#push value\n*A = D\n\n# increment pointer\nA = SP\n*A = *A + 1\n\n# restore D\nA = SCRATCH1\nD = *A","testCode":"init.stack\n# store 42 at address 16\nA = 42\nD = A\nA = 16\n*A = D\npush.static 16\n# top of stack should be 42\n"},"NandGame:Levels:HALFADD":{"nodes":[{"type":"AND","x":67.5,"y":134,"id":"0"},{"type":"XOR","x":203.5,"y":217,"id":"1"}],"connections":[{"source":{"nodeId":"input","connectorId":"0"},"target":{"nodeId":"0","connectorId":"0"}},{"source":{"nodeId":"input","connectorId":"1"},"target":{"nodeId":"0","connectorId":"1"}},{"source":{"nodeId":"input","connectorId":"0"},"target":{"nodeId":"1","connectorId":"0"}},{"source":{"nodeId":"input","connectorId":"1"},"target":{"nodeId":"1","connectorId":"1"}},{"source":{"nodeId":"0","connectorId":"0"},"target":{"nodeId":"output","connectorId":"0"}},{"source":{"nodeId":"1","connectorId":"0"},"target":{"nodeId":"output","connectorId":"1"}}]},"NandGame:Levels:IO2":{"nodes":[{"type":"BUTTON","x":31.63330078125,"y":227,"id":"0"},{"type":"LAMP","x":629.5,"y":210,"id":"1"},{"type":"BUNDLE16","x":119.5,"y":122,"id":"2"},{"type":"SPLIT16","x":84.5,"y":428,"id":"3"},{"type":"AND","x":637.5,"y":429.5,"id":"4"},{"type":"AND","x":532.5,"y":327.5,"id":"5"},{"type":"AND","x":683.5,"y":297.5,"id":"6"}],"connections":[{"source":{"nodeId":"5","connectorId":"0"},"target":{"nodeId":"1","connectorId":"0"}},{"source":{"nodeId":"6","connectorId":"0"},"target":{"nodeId":"1","connectorId":"1"}},{"source":{"nodeId":"0","connectorId":"0"},"target":{"nodeId":"2","connectorId":"0"}},{"source":{"nodeId":"3","connectorId":"1"},"target":{"nodeId":"2","connectorId":"1"}},{"source":{"nodeId":"3","connectorId":"2"},"target":{"nodeId":"2","connectorId":"2"}},{"source":{"nodeId":"3","connectorId":"3"},"target":{"nodeId":"2","connectorId":"3"}},{"source":{"nodeId":"3","connectorId":"4"},"target":{"nodeId":"2","connectorId":"4"}},{"source":{"nodeId":"3","connectorId":"5"},"target":{"nodeId":"2","connectorId":"5"}},{"source":{"nodeId":"3","connectorId":"6"},"target":{"nodeId":"2","connectorId":"6"}},{"source":{"nodeId":"3","connectorId":"7"},"target":{"nodeId":"2","connectorId":"7"}},{"source":{"nodeId":"3","connectorId":"8"},"target":{"nodeId":"2","connectorId":"8"}},{"source":{"nodeId":"3","connectorId":"9"},"target":{"nodeId":"2","connectorId":"9"}},{"source":{"nodeId":"3","connectorId":"10"},"target":{"nodeId":"2","connectorId":"10"}},{"source":{"nodeId":"3","connectorId":"11"},"target":{"nodeId":"2","connectorId":"11"}},{"source":{"nodeId":"3","connectorId":"12"},"target":{"nodeId":"2","connectorId":"12"}},{"source":{"nodeId":"3","connectorId":"13"},"target":{"nodeId":"2","connectorId":"13"}},{"source":{"nodeId":"3","connectorId":"14"},"target":{"nodeId":"2","connectorId":"14"}},{"source":{"nodeId":"3","connectorId":"15"},"target":{"nodeId":"2","connectorId":"15"}},{"source":{"nodeId":"input","connectorId":"1"},"target":{"nodeId":"3","connectorId":"0"}},{"source":{"nodeId":"input","connectorId":"0"},"target":{"nodeId":"4","connectorId":"0"}},{"source":{"nodeId":"input","connectorId":"2"},"target":{"nodeId":"4","connectorId":"1"}},{"source":{"nodeId":"3","connectorId":"14"},"target":{"nodeId":"5","connectorId":"0"}},{"source":{"nodeId":"4","connectorId":"0"},"target":{"nodeId":"5","connectorId":"1"}},{"source":{"nodeId":"3","connectorId":"15"},"target":{"nodeId":"6","connectorId":"0"}},{"source":{"nodeId":"4","connectorId":"0"},"target":{"nodeId":"6","connectorId":"1"}},{"source":{"nodeId":"2","connectorId":"0"},"target":{"nodeId":"output","connectorId":"0"}}]},"NandGame:Levels:CALL":{"code":"# Assembler code \n","testCode":""},"NandGame:Levels:ALU2":{"nodes":[{"type":"ARITHMETIC_UNIT","x":112,"y":187,"id":"0"},{"type":"LOGIC_UNIT","x":311.5,"y":179,"id":"1"},{"type":"SELECT16","x":212.76666259765625,"y":491,"id":"2"},{"type":"SELECT16","x":334.76666259765625,"y":354,"id":"3"},{"type":"NAND","x":350.5,"y":561,"id":"4"},{"type":"SELECT16","x":251.76666259765625,"y":81,"id":"5"},{"type":"SELECT16","x":45.76666259765625,"y":388,"id":"6"},{"type":"ZERO16","x":51.5,"y":610,"id":"7"}],"connections":[{"source":{"nodeId":"input","connectorId":"1"},"target":{"nodeId":"0","connectorId":"0"}},{"source":{"nodeId":"input","connectorId":"2"},"target":{"nodeId":"0","connectorId":"1"}},{"source":{"nodeId":"6","connectorId":"0"},"target":{"nodeId":"0","connectorId":"2"}},{"source":{"nodeId":"3","connectorId":"0"},"target":{"nodeId":"0","connectorId":"3"}},{"source":{"nodeId":"input","connectorId":"1"},"target":{"nodeId":"1","connectorId":"0"}},{"source":{"nodeId":"input","connectorId":"2"},"target":{"nodeId":"1","connectorId":"1"}},{"source":{"nodeId":"6","connectorId":"0"},"target":{"nodeId":"1","connectorId":"2"}},{"source":{"nodeId":"3","connectorId":"0"},"target":{"nodeId":"1","connectorId":"3"}},{"source":{"nodeId":"input","connectorId":"4"},"target":{"nodeId":"2","connectorId":"0"}},{"source":{"nodeId":"input","connectorId":"6"},"target":{"nodeId":"2","connectorId":"1"}},{"source":{"nodeId":"input","connectorId":"5"},"target":{"nodeId":"2","connectorId":"2"}},{"source":{"nodeId":"4","connectorId":"0"},"target":{"nodeId":"3","connectorId":"0"}},{"source":{"nodeId":"input","connectorId":"6"},"target":{"nodeId":"3","connectorId":"1"}},{"source":{"nodeId":"input","connectorId":"5"},"target":{"nodeId":"3","connectorId":"2"}},{"source":{"nodeId":"input","connectorId":"4"},"target":{"nodeId":"4","connectorId":"0"}},{"source":{"nodeId":"input","connectorId":"4"},"target":{"nodeId":"4","connectorId":"1"}},{"source":{"nodeId":"input","connectorId":"0"},"target":{"nodeId":"5","connectorId":"0"}},{"source":{"nodeId":"0","connectorId":"0"},"target":{"nodeId":"5","connectorId":"1"}},{"source":{"nodeId":"1","connectorId":"0"},"target":{"nodeId":"5","connectorId":"2"}},{"source":{"nodeId":"input","connectorId":"3"},"target":{"nodeId":"6","connectorId":"0"}},{"source":{"nodeId":"7","connectorId":"0"},"target":{"nodeId":"6","connectorId":"1"}},{"source":{"nodeId":"2","connectorId":"0"},"target":{"nodeId":"6","connectorId":"2"}},{"source":{"nodeId":"5","connectorId":"0"},"target":{"nodeId":"output","connectorId":"0"}}]},"NandGame:Levels:RAM":{"nodes":[{"type":"DFF16","x":100.5,"y":232,"id":"0"},{"type":"DFF16","x":539.5,"y":230,"id":"1"},{"type":"DEMUX","x":295.5,"y":431,"id":"2"},{"type":"SELECT16","x":290.76666259765625,"y":127,"id":"3"}],"connections":[{"source":{"nodeId":"2","connectorId":"0"},"target":{"nodeId":"0","connectorId":"0"}},{"source":{"nodeId":"input","connectorId":"2"},"target":{"nodeId":"0","connectorId":"1"},"points":[{"x":162,"y":564},{"x":320,"y":575}]},{"source":{"nodeId":"input","connectorId":"3"},"target":{"nodeId":"0","connectorId":"2"},"points":[{"x":193,"y":613}]},{"source":{"nodeId":"2","connectorId":"1"},"target":{"nodeId":"1","connectorId":"0"}},{"source":{"nodeId":"input","connectorId":"2"},"target":{"nodeId":"1","connectorId":"1"},"points":[{"x":614,"y":575},{"x":319,"y":576}]},{"source":{"nodeId":"input","connectorId":"3"},"target":{"nodeId":"1","connectorId":"2"},"points":[{"x":639,"y":620}]},{"source":{"nodeId":"input","connectorId":"0"},"target":{"nodeId":"2","connectorId":"0"}},{"source":{"nodeId":"input","connectorId":"1"},"target":{"nodeId":"2","connectorId":"1"}},{"source":{"nodeId":"input","connectorId":"0"},"target":{"nodeId":"3","connectorId":"0"}},{"source":{"nodeId":"0","connectorId":"0"},"target":{"nodeId":"3","connectorId":"1"}},{"source":{"nodeId":"1","connectorId":"0"},"target":{"nodeId":"3","connectorId":"2"}},{"source":{"nodeId":"3","connectorId":"0"},"target":{"nodeId":"output","connectorId":"0"}}]},"NandGame:Levels":["RELAY_NAND","INV","AND","OR","XOR","HALFADD","FULLADD","ADD2","INC","SUB","ISZERO","SIGN","MULTIPLEXER","DEMUX","ALU_LOGIC","ALU_ARITHMETIC","ALU2","CONDITION","SR_LATCH","LATCH","DFF","DFF2","COUNTER","RAM","CPU_STATE","ALU_INSTRUCTION","CONTROL_SELECTOR","CONTROL_UNIT","CPU3","IO2","PROGRAM1","OPCODES2","ASSEMBLER1","ASSEMBLER_NETWORK_RECEIVE","STACK_INIT","STACK_PUSH_D","STACK_POP_D","STACK_POP_A","STACK_PUSH_VALUE","STACK_PUSH_STATIC","STACK_POP_STATIC","STACK_PUSH_MEMORY","STACK_POP_MEMORY","STACK_GOTO","STACK_IF_GOTO","CALL","CMOS_NAND","CMOS_INV","CMOS_NOR"],"NandGame:Levels:COUNTER":{"nodes":[{"type":"DFF16","x":89.5,"y":275,"id":"0"},{"type":"SELECT16","x":286.76666259765625,"y":436,"id":"1"},{"type":"INV","x":32.5,"y":419,"id":"2"},{"type":"INC16","x":408.5,"y":302,"id":"3"}],"connections":[{"source":{"nodeId":"2","connectorId":"0"},"target":{"nodeId":"0","connectorId":"0"}},{"source":{"nodeId":"1","connectorId":"0"},"target":{"nodeId":"0","connectorId":"1"}},{"source":{"nodeId":"input","connectorId":"2"},"target":{"nodeId":"0","connectorId":"2"}},{"source":{"nodeId":"input","connectorId":"0"},"target":{"nodeId":"1","connectorId":"0"}},{"source":{"nodeId":"input","connectorId":"1"},"target":{"nodeId":"1","connectorId":"1"}},{"source":{"nodeId":"3","connectorId":"0"},"target":{"nodeId":"1","connectorId":"2"}},{"source":{"nodeId":"0","connectorId":"0"},"target":{"nodeId":"3","connectorId":"0"}},{"source":{"nodeId":"0","connectorId":"0"},"target":{"nodeId":"output","connectorId":"0"}}]},"NandGame:Levels:ALU_INSTRUCTION":{"nodes":[{"type":"ALU2","x":511.5,"y":211,"id":"0"},{"type":"SPLIT16","x":7.5,"y":576,"id":"1"},{"type":"SELECT16","x":653.7666015625,"y":393,"id":"2"},{"type":"CONDITION2","x":326.5,"y":216,"id":"3"}],"connections":[{"source":{"nodeId":"1","connectorId":"5"},"target":{"nodeId":"0","connectorId":"0"},"points":[{"x":145,"y":487}]},{"source":{"nodeId":"1","connectorId":"6"},"target":{"nodeId":"0","connectorId":"1"},"points":[{"x":170,"y":497}]},{"source":{"nodeId":"1","connectorId":"7"},"target":{"nodeId":"0","connectorId":"2"},"points":[{"x":190,"y":507}]},{"source":{"nodeId":"1","connectorId":"8"},"target":{"nodeId":"0","connectorId":"3"},"points":[{"x":215,"y":508}]},{"source":{"nodeId":"1","connectorId":"9"},"target":{"nodeId":"0","connectorId":"4"},"points":[{"x":239,"y":514}]},{"source":{"nodeId":"input","connectorId":"2"},"target":{"nodeId":"0","connectorId":"5"}},{"source":{"nodeId":"2","connectorId":"0"},"target":{"nodeId":"0","connectorId":"6"}},{"source":{"nodeId":"input","connectorId":"0"},"target":{"nodeId":"1","connectorId":"0"}},{"source":{"nodeId":"1","connectorId":"3"},"target":{"nodeId":"2","connectorId":"0"}},{"source":{"nodeId":"input","connectorId":"3"},"target":{"nodeId":"2","connectorId":"1"},"points":[{"x":700,"y":628}]},{"source":{"nodeId":"input","connectorId":"1"},"target":{"nodeId":"2","connectorId":"2"},"points":[{"x":726,"y":613}]},{"source":{"nodeId":"1","connectorId":"13"},"target":{"nodeId":"3","connectorId":"0"}},{"source":{"nodeId":"1","connectorId":"14"},"target":{"nodeId":"3","connectorId":"1"}},{"source":{"nodeId":"1","connectorId":"15"},"target":{"nodeId":"3","connectorId":"2"}},{"source":{"nodeId":"0","connectorId":"0"},"target":{"nodeId":"3","connectorId":"3"},"points":[{"x":471,"y":219}]},{"source":{"nodeId":"0","connectorId":"0"},"target":{"nodeId":"output","connectorId":"0"},"points":[{"x":168,"y":212}]},{"source":{"nodeId":"1","connectorId":"10"},"target":{"nodeId":"output","connectorId":"1"},"points":[{"x":261,"y":121}]},{"source":{"nodeId":"1","connectorId":"11"},"target":{"nodeId":"output","connectorId":"2"},"points":[{"x":295,"y":128}]},{"source":{"nodeId":"1","connectorId":"12"},"target":{"nodeId":"output","connectorId":"3"},"points":[{"x":324,"y":145}]},{"source":{"nodeId":"3","connectorId":"0"},"target":{"nodeId":"output","connectorId":"4"}}]},"NandGame:Levels:SIGN":{"nodes":[{"type":"SPLIT16","x":98.5,"y":227,"id":"0"}],"connections":[{"source":{"nodeId":"input","connectorId":"0"},"target":{"nodeId":"0","connectorId":"0"}},{"source":{"nodeId":"0","connectorId":"0"},"target":{"nodeId":"output","connectorId":"0"}}]},"NandGame:Levels:ALU_LOGIC":{"nodes":[{"type":"AND16","x":270.5,"y":353,"id":"0"},{"type":"OR16","x":406.5,"y":308,"id":"1"},{"type":"XOR16","x":544.5,"y":311,"id":"2"},{"type":"INV16","x":662.5,"y":313,"id":"3"},{"type":"SELECT16","x":159.76666259765625,"y":224,"id":"4"},{"type":"SELECT16","x":372.76666259765625,"y":192,"id":"5"},{"type":"SELECT16","x":189.76666259765625,"y":96,"id":"6"}],"connections":[{"source":{"nodeId":"input","connectorId":"2"},"target":{"nodeId":"0","connectorId":"0"}},{"source":{"nodeId":"input","connectorId":"3"},"target":{"nodeId":"0","connectorId":"1"}},{"source":{"nodeId":"input","connectorId":"2"},"target":{"nodeId":"1","connectorId":"0"}},{"source":{"nodeId":"input","connectorId":"3"},"target":{"nodeId":"1","connectorId":"1"}},{"source":{"nodeId":"input","connectorId":"2"},"target":{"nodeId":"2","connectorId":"0"}},{"source":{"nodeId":"input","connectorId":"3"},"target":{"nodeId":"2","connectorId":"1"}},{"source":{"nodeId":"input","connectorId":"2"},"target":{"nodeId":"3","connectorId":"0"}},{"source":{"nodeId":"input","connectorId":"1"},"target":{"nodeId":"4","connectorId":"0"}},{"source":{"nodeId":"1","connectorId":"0"},"target":{"nodeId":"4","connectorId":"1"}},{"source":{"nodeId":"0","connectorId":"0"},"target":{"nodeId":"4","connectorId":"2"}},{"source":{"nodeId":"input","connectorId":"1"},"target":{"nodeId":"5","connectorId":"0"}},{"source":{"nodeId":"3","connectorId":"0"},"target":{"nodeId":"5","connectorId":"1"}},{"source":{"nodeId":"2","connectorId":"0"},"target":{"nodeId":"5","connectorId":"2"}},{"source":{"nodeId":"input","connectorId":"0"},"target":{"nodeId":"6","connectorId":"0"}},{"source":{"nodeId":"5","connectorId":"0"},"target":{"nodeId":"6","connectorId":"1"}},{"source":{"nodeId":"4","connectorId":"0"},"target":{"nodeId":"6","connectorId":"2"}},{"source":{"nodeId":"6","connectorId":"0"},"target":{"nodeId":"output","connectorId":"0"}}]},"NandGame:Levels:CPU_STATE":{"nodes":[{"type":"RAM","x":475.5,"y":252,"id":"0"},{"type":"DFF16","x":47.5,"y":307,"id":"1"},{"type":"DFF16","x":236.5,"y":316,"id":"2"}],"connections":[{"source":{"nodeId":"input","connectorId":"2"},"target":{"nodeId":"0","connectorId":"0"}},{"source":{"nodeId":"input","connectorId":"3"},"target":{"nodeId":"0","connectorId":"1"},"points":[{"x":625,"y":611},{"x":381,"y":628}]},{"source":{"nodeId":"1","connectorId":"0"},"target":{"nodeId":"0","connectorId":"2"},"points":[{"x":770,"y":472},{"x":782,"y":220},{"x":81,"y":254}]},{"source":{"nodeId":"input","connectorId":"4"},"target":{"nodeId":"0","connectorId":"3"},"points":[{"x":671,"y":636}]},{"source":{"nodeId":"input","connectorId":"0"},"target":{"nodeId":"1","connectorId":"0"}},{"source":{"nodeId":"input","connectorId":"3"},"target":{"nodeId":"1","connectorId":"1"},"points":[{"x":47,"y":636},{"x":381,"y":625}]},{"source":{"nodeId":"input","connectorId":"4"},"target":{"nodeId":"1","connectorId":"2"},"points":[{"x":69,"y":660}]},{"source":{"nodeId":"input","connectorId":"1"},"target":{"nodeId":"2","connectorId":"0"}},{"source":{"nodeId":"input","connectorId":"3"},"target":{"nodeId":"2","connectorId":"1"},"points":[{"x":275,"y":628},{"x":381,"y":625}]},{"source":{"nodeId":"input","connectorId":"4"},"target":{"nodeId":"2","connectorId":"2"},"points":[{"x":296,"y":650}]},{"source":{"nodeId":"1","connectorId":"0"},"target":{"nodeId":"output","connectorId":"0"}},{"source":{"nodeId":"2","connectorId":"0"},"target":{"nodeId":"output","connectorId":"1"}},{"source":{"nodeId":"0","connectorId":"0"},"target":{"nodeId":"output","connectorId":"2"}}]},"NandGame:Levels:RELAY_NAND":{"nodes":[{"type":"RELAY-OFF","x":119.5,"y":311,"id":"0"},{"type":"RELAY-ON","x":158.5,"y":142,"id":"1"}],"connections":[{"source":{"nodeId":"input","connectorId":"0"},"target":{"nodeId":"0","connectorId":"0"}},{"source":{"nodeId":"input","connectorId":"1"},"target":{"nodeId":"0","connectorId":"1"}},{"source":{"nodeId":"0","connectorId":"0"},"target":{"nodeId":"1","connectorId":"0"}},{"source":{"nodeId":"input","connectorId":"2"},"target":{"nodeId":"1","connectorId":"1"}},{"source":{"nodeId":"1","connectorId":"0"},"target":{"nodeId":"output","connectorId":"0"}}]},"NandGame:Levels:AND":{"nodes":[{"type":"NAND","x":128.5,"y":332,"id":"0"},{"type":"INV","x":125.5,"y":192,"id":"1"}],"connections":[{"source":{"nodeId":"input","connectorId":"0"},"target":{"nodeId":"0","connectorId":"0"}},{"source":{"nodeId":"input","connectorId":"1"},"target":{"nodeId":"0","connectorId":"1"}},{"source":{"nodeId":"0","connectorId":"0"},"target":{"nodeId":"1","connectorId":"0"}},{"source":{"nodeId":"1","connectorId":"0"},"target":{"nodeId":"output","connectorId":"0"}}]},"NandGame:Levels:DFF":{"nodes":[{"type":"INV","x":292.5,"y":329,"id":"0"},{"type":"LATCH","x":161.5,"y":407,"id":"1"},{"type":"AND","x":116.5,"y":548,"id":"2"},{"type":"LATCH","x":184.5,"y":236,"id":"3"}],"connections":[{"source":{"nodeId":"input","connectorId":"2"},"target":{"nodeId":"0","connectorId":"0"}},{"source":{"nodeId":"2","connectorId":"0"},"target":{"nodeId":"1","connectorId":"0"}},{"source":{"nodeId":"input","connectorId":"1"},"target":{"nodeId":"1","connectorId":"1"}},{"source":{"nodeId":"input","connectorId":"0"},"target":{"nodeId":"2","connectorId":"0"}},{"source":{"nodeId":"input","connectorId":"2"},"target":{"nodeId":"2","connectorId":"1"}},{"source":{"nodeId":"0","connectorId":"0"},"target":{"nodeId":"3","connectorId":"0"}},{"source":{"nodeId":"1","connectorId":"0"},"target":{"nodeId":"3","connectorId":"1"}},{"source":{"nodeId":"3","connectorId":"0"},"target":{"nodeId":"output","connectorId":"0"}}]},"NandGame:Levels:ISZERO":{"nodes":[{"type":"OR","x":116.5,"y":434,"id":"0"},{"type":"OR","x":260.5,"y":437,"id":"1"},{"type":"INV","x":121.5,"y":325,"id":"2"},{"type":"INV","x":267.5,"y":312,"id":"3"},{"type":"AND","x":156.5,"y":197,"id":"4"}],"connections":[{"source":{"nodeId":"input","connectorId":"0"},"target":{"nodeId":"0","connectorId":"0"}},{"source":{"nodeId":"input","connectorId":"1"},"target":{"nodeId":"0","connectorId":"1"}},{"source":{"nodeId":"input","connectorId":"2"},"target":{"nodeId":"1","connectorId":"0"}},{"source":{"nodeId":"input","connectorId":"3"},"target":{"nodeId":"1","connectorId":"1"}},{"source":{"nodeId":"0","connectorId":"0"},"target":{"nodeId":"2","connectorId":"0"}},{"source":{"nodeId":"1","connectorId":"0"},"target":{"nodeId":"3","connectorId":"0"}},{"source":{"nodeId":"2","connectorId":"0"},"target":{"nodeId":"4","connectorId":"0"}},{"source":{"nodeId":"3","connectorId":"0"},"target":{"nodeId":"4","connectorId":"1"}},{"source":{"nodeId":"4","connectorId":"0"},"target":{"nodeId":"output","connectorId":"0"}}]},"NandGame:Levels:STACK_INIT":{"code":"# save D\nA = SCRATCH1\n*A = D\n\n# Assembler code \nA = SPINIT\nD = A\nA = SP\n*A = D\n\n# restore D\nA = SCRATCH1\nD = *A","testCode":"\ninit.stack\n"},"NandGame:Levels:STACK_PUSH_VALUE":{"code":"# save D\nA = SCRATCH1\n*A = D\nA = value\nD = A\n\n# init SP address\nA = SP\n# set memory address\nA = *A\n#push value\n*A = D\n\n# increment pointer\nA = SP\n*A = *A + 1\n\n# restore D\nA = SCRATCH1\nD = *A","testCode":"D = 1\ninit.stack\npush.value 0x7c89\n# Inspect stack: top should be 0x7c89\n"},"NandGame:Levels:STACK_PUSH_MEMORY":{"code":"pop.A\nD = *A\npush.D\n","testCode":"init.stack\n# store 42 at address 16\nA = 42\nD = A\nA = 16\n*A = D\n\npush.value 16\npush.memory\n# top of stack should have value 42\n"},"NandGame:Levels:STACK_POP_MEMORY":{"code":"pop.D\npop.A\n*A = D","testCode":"init.stack\npush.value 16\npush.value 42\npop.memory\n# address 16 should have value 42\n"},"NandGame:Levels:STACK_POP_A":{"code":"# init pSP\nA = SP\n*A A = *A - 1\nA = *A","testCode":"init.stack\nD = 1\npush.D\nA = 0x48\nD = A\npop.A\n# inspect A. Should be 1.\n# inspect D - should be 0x42\n"},"NandGame:Levels:PROGRAM1":{"code":[32912,2,34064,32775]},"NandGame:Levels:CMOS_NAND":{"nodes":[{"type":"NMOS","x":241.5,"y":345,"id":"0"},{"type":"PMOS","x":314.5,"y":202,"id":"1"},{"type":"NMOS","x":111.5,"y":200,"id":"2"},{"type":"TRINARY_LOGIC_WIRE_JUNCTION","x":173.5,"y":103,"id":"3"}],"connections":[{"source":{"nodeId":"input","connectorId":"0"},"target":{"nodeId":"0","connectorId":"0"}},{"source":{"nodeId":"input","connectorId":"1"},"target":{"nodeId":"0","connectorId":"1"}},{"source":{"nodeId":"0","connectorId":"0"},"target":{"nodeId":"1","connectorId":"0"}},{"source":{"nodeId":"input","connectorId":"2"},"target":{"nodeId":"1","connectorId":"1"}},{"source":{"nodeId":"0","connectorId":"0"},"target":{"nodeId":"2","connectorId":"0"}},{"source":{"nodeId":"input","connectorId":"3"},"target":{"nodeId":"2","connectorId":"1"}},{"source":{"nodeId":"2","connectorId":"0"},"target":{"nodeId":"3","connectorId":"0"}},{"source":{"nodeId":"1","connectorId":"0"},"target":{"nodeId":"3","connectorId":"1"}},{"source":{"nodeId":"3","connectorId":"0"},"target":{"nodeId":"output","connectorId":"0"}}]},"NandGame:Levels:XOR":{"nodes":[{"type":"INV","x":50.5,"y":332,"id":"0"},{"type":"INV","x":270.5,"y":334,"id":"1"},{"type":"AND","x":100.5,"y":208,"id":"2"},{"type":"AND","x":225.5,"y":214,"id":"3"},{"type":"OR","x":157.5,"y":118,"id":"4"}],"connections":[{"source":{"nodeId":"input","connectorId":"0"},"target":{"nodeId":"0","connectorId":"0"}},{"source":{"nodeId":"input","connectorId":"1"},"target":{"nodeId":"1","connectorId":"0"}},{"source":{"nodeId":"0","connectorId":"0"},"target":{"nodeId":"2","connectorId":"0"}},{"source":{"nodeId":"input","connectorId":"1"},"target":{"nodeId":"2","connectorId":"1"}},{"source":{"nodeId":"input","connectorId":"0"},"target":{"nodeId":"3","connectorId":"0"}},{"source":{"nodeId":"1","connectorId":"0"},"target":{"nodeId":"3","connectorId":"1"}},{"source":{"nodeId":"2","connectorId":"0"},"target":{"nodeId":"4","connectorId":"0"}},{"source":{"nodeId":"3","connectorId":"0"},"target":{"nodeId":"4","connectorId":"1"}},{"source":{"nodeId":"4","connectorId":"0"},"target":{"nodeId":"output","connectorId":"0"}}]},"NandGame:Levels:DFF2":{"nodes":[{"type":"DFF","x":91.5,"y":390,"id":"0"},{"type":"DFF","x":220.5,"y":389,"id":"1"}],"connections":[{"source":{"nodeId":"input","connectorId":"0"},"target":{"nodeId":"0","connectorId":"0"}},{"source":{"nodeId":"input","connectorId":"1"},"target":{"nodeId":"0","connectorId":"1"}},{"source":{"nodeId":"input","connectorId":"3"},"target":{"nodeId":"0","connectorId":"2"}},{"source":{"nodeId":"input","connectorId":"0"},"target":{"nodeId":"1","connectorId":"0"}},{"source":{"nodeId":"input","connectorId":"2"},"target":{"nodeId":"1","connectorId":"1"}},{"source":{"nodeId":"input","connectorId":"3"},"target":{"nodeId":"1","connectorId":"2"}},{"source":{"nodeId":"0","connectorId":"0"},"target":{"nodeId":"output","connectorId":"0"}},{"source":{"nodeId":"1","connectorId":"0"},"target":{"nodeId":"output","connectorId":"1"}}]},"NandGame:Levels:STACK_PUSH_D":{"code":"# init SP address\nA = SP\n# set memory address\nA = *A\n# set value\n*A = D\n# increment pointer\nA = SP\n*A = *A + 1\n","testCode":"init.stack\nD = 1\npush.d\n# inspect top of stack. Should be 1.\n"},"NandGame:Levels:CPU3":{"nodes":[{"type":"CONTROL_UNIT","x":283.5,"y":211,"id":"0"},{"type":"STATE","x":454.5,"y":136,"id":"1"},{"type":"ROM","x":43.5,"y":187.5,"id":"2","state":{"words":[1,2,3,4,5,6,7,8]}},{"type":"COUNTER","x":860.5,"y":125.5,"id":"3"},{"type":"CLOCK","x":808.5,"y":474.5,"id":"4"}],"connections":[{"source":{"nodeId":"2","connectorId":"0"},"target":{"nodeId":"0","connectorId":"0"}},{"source":{"nodeId":"1","connectorId":"0"},"target":{"nodeId":"0","connectorId":"1"}},{"source":{"nodeId":"1","connectorId":"1"},"target":{"nodeId":"0","connectorId":"2"}},{"source":{"nodeId":"1","connectorId":"2"},"target":{"nodeId":"0","connectorId":"3"}},{"source":{"nodeId":"0","connectorId":"1"},"target":{"nodeId":"1","connectorId":"0"}},{"source":{"nodeId":"0","connectorId":"2"},"target":{"nodeId":"1","connectorId":"1"}},{"source":{"nodeId":"0","connectorId":"3"},"target":{"nodeId":"1","connectorId":"2"}},{"source":{"nodeId":"0","connectorId":"0"},"target":{"nodeId":"1","connectorId":"3"}},{"source":{"nodeId":"4","connectorId":"0"},"target":{"nodeId":"1","connectorId":"4"}},{"source":{"nodeId":"3","connectorId":"0"},"target":{"nodeId":"2","connectorId":"0"}},{"source":{"nodeId":"0","connectorId":"4"},"target":{"nodeId":"3","connectorId":"0"}},{"source":{"nodeId":"1","connectorId":"0"},"target":{"nodeId":"3","connectorId":"1"}},{"source":{"nodeId":"4","connectorId":"0"},"target":{"nodeId":"3","connectorId":"2"}}]},"NandGame:Levels:STACK_POP_STATIC":{"code":"# save D\nA = SCRATCH1\n*A = D\n\nA = SP\n*A A = *A - 1\n\nD = *A\nA = address\n*A = D\n\n# restore D\nA = SCRATCH1\nD = *A","testCode":"init.stack\npush.value x42\npop.static x16\n# address 16 should have value 42\n"},"NandGame:Levels:INV":{"nodes":[{"type":"NAND","x":85.5,"y":335,"id":"0"}],"connections":[{"source":{"nodeId":"input","connectorId":"0"},"target":{"nodeId":"0","connectorId":"0"}},{"source":{"nodeId":"input","connectorId":"0"},"target":{"nodeId":"0","connectorId":"1"}},{"source":{"nodeId":"0","connectorId":"0"},"target":{"nodeId":"output","connectorId":"0"}}]},"NandGame:Levels:SUB":{"nodes":[{"type":"INV16","x":294.5,"y":364,"id":"0"},{"type":"INC16","x":285.5,"y":248,"id":"1"},{"type":"ADDC16","x":173.5,"y":119,"id":"2"}],"connections":[{"source":{"nodeId":"input","connectorId":"1"},"target":{"nodeId":"0","connectorId":"0"}},{"source":{"nodeId":"0","connectorId":"0"},"target":{"nodeId":"1","connectorId":"0"}},{"source":{"nodeId":"input","connectorId":"0"},"target":{"nodeId":"2","connectorId":"0"}},{"source":{"nodeId":"1","connectorId":"0"},"target":{"nodeId":"2","connectorId":"1"}},{"source":{"nodeId":"2","connectorId":"1"},"target":{"nodeId":"output","connectorId":"0"}}]},"NandGame:Levels:LATCH":{"nodes":[{"type":"SR_LATCH","x":221.5,"y":234,"id":"0"},{"type":"AND","x":132.5,"y":371,"id":"1"},{"type":"AND","x":252.5,"y":368,"id":"2"},{"type":"INV","x":268.5,"y":480,"id":"3"}],"connections":[{"source":{"nodeId":"1","connectorId":"0"},"target":{"nodeId":"0","connectorId":"0"}},{"source":{"nodeId":"2","connectorId":"0"},"target":{"nodeId":"0","connectorId":"1"}},{"source":{"nodeId":"input","connectorId":"0"},"target":{"nodeId":"1","connectorId":"0"}},{"source":{"nodeId":"input","connectorId":"1"},"target":{"nodeId":"1","connectorId":"1"}},{"source":{"nodeId":"input","connectorId":"0"},"target":{"nodeId":"2","connectorId":"0"}},{"source":{"nodeId":"3","connectorId":"0"},"target":{"nodeId":"2","connectorId":"1"}},{"source":{"nodeId":"input","connectorId":"1"},"target":{"nodeId":"3","connectorId":"0"}},{"source":{"nodeId":"0","connectorId":"0"},"target":{"nodeId":"output","connectorId":"0"}}]},"NandGame:Levels:ADD2":{"nodes":[{"type":"ADDC","x":191.5,"y":373,"id":"0"},{"type":"ADDC","x":105.5,"y":261,"id":"1"}],"connections":[{"source":{"nodeId":"input","connectorId":"1"},"target":{"nodeId":"0","connectorId":"0"}},{"source":{"nodeId":"input","connectorId":"3"},"target":{"nodeId":"0","connectorId":"1"}},{"source":{"nodeId":"input","connectorId":"4"},"target":{"nodeId":"0","connectorId":"2"}},{"source":{"nodeId":"input","connectorId":"0"},"target":{"nodeId":"1","connectorId":"0"}},{"source":{"nodeId":"input","connectorId":"2"},"target":{"nodeId":"1","connectorId":"1"}},{"source":{"nodeId":"0","connectorId":"0"},"target":{"nodeId":"1","connectorId":"2"}},{"source":{"nodeId":"1","connectorId":"0"},"target":{"nodeId":"output","connectorId":"0"}},{"source":{"nodeId":"1","connectorId":"1"},"target":{"nodeId":"output","connectorId":"1"}},{"source":{"nodeId":"0","connectorId":"1"},"target":{"nodeId":"output","connectorId":"2"}}]},"NandGame:Levels:SR_LATCH":{"nodes":[{"type":"NAND","x":62.5,"y":255,"id":"0"},{"type":"NAND","x":254.5,"y":258,"id":"1"}],"connections":[{"source":{"nodeId":"input","connectorId":"0"},"target":{"nodeId":"0","connectorId":"0"}},{"source":{"nodeId":"1","connectorId":"0"},"target":{"nodeId":"0","connectorId":"1"}},{"source":{"nodeId":"0","connectorId":"0"},"target":{"nodeId":"1","connectorId":"0"}},{"source":{"nodeId":"input","connectorId":"1"},"target":{"nodeId":"1","connectorId":"1"}},{"source":{"nodeId":"1","connectorId":"0"},"target":{"nodeId":"output","connectorId":"0"}}]},"NandGame:Levels:OR":{"nodes":[{"type":"INV","x":66.5,"y":388,"id":"0"},{"type":"INV","x":186.5,"y":374,"id":"1"},{"type":"NAND","x":139.5,"y":176,"id":"2"}],"connections":[{"source":{"nodeId":"input","connectorId":"0"},"target":{"nodeId":"0","connectorId":"0"}},{"source":{"nodeId":"input","connectorId":"1"},"target":{"nodeId":"1","connectorId":"0"}},{"source":{"nodeId":"0","connectorId":"0"},"target":{"nodeId":"2","connectorId":"0"}},{"source":{"nodeId":"1","connectorId":"0"},"target":{"nodeId":"2","connectorId":"1"}},{"source":{"nodeId":"2","connectorId":"0"},"target":{"nodeId":"output","connectorId":"0"}}]},"NandGame:Levels:DEMUX":{"nodes":[{"type":"AND","x":79.5,"y":199,"id":"0"},{"type":"AND","x":214.5,"y":203,"id":"1"},{"type":"INV","x":188.5,"y":319,"id":"2"}],"connections":[{"source":{"nodeId":"input","connectorId":"0"},"target":{"nodeId":"0","connectorId":"0"}},{"source":{"nodeId":"input","connectorId":"1"},"target":{"nodeId":"0","connectorId":"1"}},{"source":{"nodeId":"2","connectorId":"0"},"target":{"nodeId":"1","connectorId":"0"}},{"source":{"nodeId":"input","connectorId":"1"},"target":{"nodeId":"1","connectorId":"1"}},{"source":{"nodeId":"input","connectorId":"0"},"target":{"nodeId":"2","connectorId":"0"}},{"source":{"nodeId":"0","connectorId":"0"},"target":{"nodeId":"output","connectorId":"0"}},{"source":{"nodeId":"1","connectorId":"0"},"target":{"nodeId":"output","connectorId":"1"}}]},"NandGame:Levels:STACK_IF_GOTO":{"code":"pop.D\nA = label\nD;JNE","testCode":"init.stack\npush.value 0\nif.goto end\n# this line should be execued\npush.value 1\nif.goto end\n# this line should not be executed:\npush.value x17\nlabel end:\n"},"NandGame:Levels:MULTIPLEXER":{"nodes":[{"type":"INV","x":58.5,"y":423,"id":"0"},{"type":"AND","x":120.5,"y":246,"id":"1"},{"type":"AND","x":263.5,"y":248,"id":"2"},{"type":"OR","x":88.5,"y":102,"id":"3"}],"connections":[{"source":{"nodeId":"input","connectorId":"0"},"target":{"nodeId":"0","connectorId":"0"}},{"source":{"nodeId":"0","connectorId":"0"},"target":{"nodeId":"1","connectorId":"0"}},{"source":{"nodeId":"input","connectorId":"2"},"target":{"nodeId":"1","connectorId":"1"}},{"source":{"nodeId":"input","connectorId":"0"},"target":{"nodeId":"2","connectorId":"0"}},{"source":{"nodeId":"input","connectorId":"1"},"target":{"nodeId":"2","connectorId":"1"}},{"source":{"nodeId":"1","connectorId":"0"},"target":{"nodeId":"3","connectorId":"0"}},{"source":{"nodeId":"2","connectorId":"0"},"target":{"nodeId":"3","connectorId":"1"}},{"source":{"nodeId":"3","connectorId":"0"},"target":{"nodeId":"output","connectorId":"0"}}]},"NandGame:Levels:CONDITION":{"nodes":[{"type":"OR","x":52.5,"y":165,"id":"0"},{"type":"ISNEG","x":11.5,"y":426,"id":"1"},{"type":"AND","x":42.5,"y":267,"id":"2"},{"type":"AND","x":162.5,"y":267,"id":"3"},{"type":"ISZERO","x":192.5,"y":414,"id":"4"},{"type":"AND","x":280.5,"y":161,"id":"5"},{"type":"OR","x":139.5,"y":71,"id":"6"},{"type":"OR","x":371.5,"y":340,"id":"7"},{"type":"INV","x":386.5,"y":253,"id":"8"}],"connections":[{"source":{"nodeId":"2","connectorId":"0"},"target":{"nodeId":"0","connectorId":"0"}},{"source":{"nodeId":"3","connectorId":"0"},"target":{"nodeId":"0","connectorId":"1"}},{"source":{"nodeId":"input","connectorId":"3"},"target":{"nodeId":"1","connectorId":"0"}},{"source":{"nodeId":"1","connectorId":"0"},"target":{"nodeId":"2","connectorId":"0"}},{"source":{"nodeId":"input","connectorId":"0"},"target":{"nodeId":"2","connectorId":"1"}},{"source":{"nodeId":"input","connectorId":"1"},"target":{"nodeId":"3","connectorId":"0"}},{"source":{"nodeId":"4","connectorId":"0"},"target":{"nodeId":"3","connectorId":"1"}},{"source":{"nodeId":"input","connectorId":"3"},"target":{"nodeId":"4","connectorId":"0"}},{"source":{"nodeId":"input","connectorId":"2"},"target":{"nodeId":"5","connectorId":"0"}},{"source":{"nodeId":"8","connectorId":"0"},"target":{"nodeId":"5","connectorId":"1"}},{"source":{"nodeId":"0","connectorId":"0"},"target":{"nodeId":"6","connectorId":"0"}},{"source":{"nodeId":"5","connectorId":"0"},"target":{"nodeId":"6","connectorId":"1"}},{"source":{"nodeId":"1","connectorId":"0"},"target":{"nodeId":"7","connectorId":"0"}},{"source":{"nodeId":"4","connectorId":"0"},"target":{"nodeId":"7","connectorId":"1"}},{"source":{"nodeId":"7","connectorId":"0"},"target":{"nodeId":"8","connectorId":"0"}},{"source":{"nodeId":"6","connectorId":"0"},"target":{"nodeId":"output","connectorId":"0"}}]},"NandGame:Levels:CONTROL_UNIT":{"nodes":[{"type":"SPLIT16","x":23.5,"y":422,"id":"0"},{"type":"ALU_INSTRUCTION","x":676.5,"y":258,"id":"1"},{"type":"SELECT","x":237.5,"y":140,"id":"2"},{"type":"SELECT","x":343.5,"y":165,"id":"3"},{"type":"SELECT","x":461.5,"y":133,"id":"4"},{"type":"SELECT","x":585.5,"y":127,"id":"5"},{"type":"SELECT16","x":98.76666259765625,"y":159,"id":"6"},{"type":"INV","x":363.5,"y":323,"id":"7"}],"connections":[{"source":{"nodeId":"input","connectorId":"0"},"target":{"nodeId":"0","connectorId":"0"}},{"source":{"nodeId":"input","connectorId":"0"},"target":{"nodeId":"1","connectorId":"0"}},{"source":{"nodeId":"input","connectorId":"1"},"target":{"nodeId":"1","connectorId":"1"}},{"source":{"nodeId":"input","connectorId":"2"},"target":{"nodeId":"1","connectorId":"2"}},{"source":{"nodeId":"input","connectorId":"3"},"target":{"nodeId":"1","connectorId":"3"}},{"source":{"nodeId":"0","connectorId":"0"},"target":{"nodeId":"2","connectorId":"0"}},{"source":{"nodeId":"1","connectorId":"1"},"target":{"nodeId":"2","connectorId":"1"}},{"source":{"nodeId":"7","connectorId":"0"},"target":{"nodeId":"2","connectorId":"2"}},{"source":{"nodeId":"0","connectorId":"0"},"target":{"nodeId":"3","connectorId":"0"}},{"source":{"nodeId":"1","connectorId":"2"},"target":{"nodeId":"3","connectorId":"1"}},{"source":{"nodeId":"0","connectorId":"0"},"target":{"nodeId":"4","connectorId":"0"}},{"source":{"nodeId":"1","connectorId":"3"},"target":{"nodeId":"4","connectorId":"1"}},{"source":{"nodeId":"0","connectorId":"0"},"target":{"nodeId":"5","connectorId":"0"}},{"source":{"nodeId":"1","connectorId":"4"},"target":{"nodeId":"5","connectorId":"1"}},{"source":{"nodeId":"0","connectorId":"0"},"target":{"nodeId":"6","connectorId":"0"}},{"source":{"nodeId":"1","connectorId":"0"},"target":{"nodeId":"6","connectorId":"1"}},{"source":{"nodeId":"input","connectorId":"0"},"target":{"nodeId":"6","connectorId":"2"}},{"source":{"nodeId":"6","connectorId":"0"},"target":{"nodeId":"output","connectorId":"0"}},{"source":{"nodeId":"2","connectorId":"0"},"target":{"nodeId":"output","connectorId":"1"}},{"source":{"nodeId":"3","connectorId":"0"},"target":{"nodeId":"output","connectorId":"2"}},{"source":{"nodeId":"4","connectorId":"0"},"target":{"nodeId":"output","connectorId":"3"}},{"source":{"nodeId":"5","connectorId":"0"},"target":{"nodeId":"output","connectorId":"4"}}]},"NandGame:Levels:STACK_GOTO":{"code":"A = label\nJMP","testCode":"init.stack\npush.value x42\ngoto end\n# this line should not be executed:\npush.value x17\nlabel end:\n# top of stack should be x42\n"},"NandGame:Levels:FULLADD":{"nodes":[{"type":"HALFADD","x":112.5,"y":386,"id":"0"},{"type":"HALFADD","x":217.5,"y":279,"id":"1"},{"type":"HALFADD","x":123.5,"y":135,"id":"2"}],"connections":[{"source":{"nodeId":"input","connectorId":"0"},"target":{"nodeId":"0","connectorId":"0"}},{"source":{"nodeId":"input","connectorId":"1"},"target":{"nodeId":"0","connectorId":"1"}},{"source":{"nodeId":"0","connectorId":"1"},"target":{"nodeId":"1","connectorId":"0"}},{"source":{"nodeId":"input","connectorId":"2"},"target":{"nodeId":"1","connectorId":"1"}},{"source":{"nodeId":"0","connectorId":"0"},"target":{"nodeId":"2","connectorId":"0"}},{"source":{"nodeId":"1","connectorId":"0"},"target":{"nodeId":"2","connectorId":"1"}},{"source":{"nodeId":"2","connectorId":"1"},"target":{"nodeId":"output","connectorId":"0"}},{"source":{"nodeId":"1","connectorId":"1"},"target":{"nodeId":"output","connectorId":"1"}}]},"NandGame:Levels:SHARED_STACK_CONSTANTS":{"constants":[{"name":"SP","value":"00"},{"name":"SPINIT","value":"256"},{"name":"SCRATCH1","value":"1"}]},"NandGame:Levels:CONTROL_SELECTOR":{"nodes":[{"type":"SELECT16","x":117.76666259765625,"y":322,"id":"0"},{"type":"SELECT","x":245.5,"y":295,"id":"1"},{"type":"SELECT","x":376.5,"y":269,"id":"2"},{"type":"SELECT","x":511.5,"y":242,"id":"3"},{"type":"SELECT","x":643.5,"y":215,"id":"4"}],"connections":[{"source":{"nodeId":"input","connectorId":"0"},"target":{"nodeId":"0","connectorId":"0"}},{"source":{"nodeId":"input","connectorId":"1"},"target":{"nodeId":"0","connectorId":"1"}},{"source":{"nodeId":"input","connectorId":"6"},"target":{"nodeId":"0","connectorId":"2"}},{"source":{"nodeId":"input","connectorId":"0"},"target":{"nodeId":"1","connectorId":"0"}},{"source":{"nodeId":"input","connectorId":"2"},"target":{"nodeId":"1","connectorId":"1"}},{"source":{"nodeId":"input","connectorId":"7"},"target":{"nodeId":"1","connectorId":"2"}},{"source":{"nodeId":"input","connectorId":"0"},"target":{"nodeId":"2","connectorId":"0"}},{"source":{"nodeId":"input","connectorId":"3"},"target":{"nodeId":"2","connectorId":"1"}},{"source":{"nodeId":"input","connectorId":"8"},"target":{"nodeId":"2","connectorId":"2"}},{"source":{"nodeId":"input","connectorId":"0"},"target":{"nodeId":"3","connectorId":"0"}},{"source":{"nodeId":"input","connectorId":"4"},"target":{"nodeId":"3","connectorId":"1"}},{"source":{"nodeId":"input","connectorId":"9"},"target":{"nodeId":"3","connectorId":"2"}},{"source":{"nodeId":"input","connectorId":"0"},"target":{"nodeId":"4","connectorId":"0"}},{"source":{"nodeId":"input","connectorId":"5"},"target":{"nodeId":"4","connectorId":"1"}},{"source":{"nodeId":"input","connectorId":"10"},"target":{"nodeId":"4","connectorId":"2"}},{"source":{"nodeId":"0","connectorId":"0"},"target":{"nodeId":"output","connectorId":"0"}},{"source":{"nodeId":"1","connectorId":"0"},"target":{"nodeId":"output","connectorId":"1"}},{"source":{"nodeId":"2","connectorId":"0"},"target":{"nodeId":"output","connectorId":"2"}},{"source":{"nodeId":"3","connectorId":"0"},"target":{"nodeId":"output","connectorId":"3"}},{"source":{"nodeId":"4","connectorId":"0"},"target":{"nodeId":"output","connectorId":"4"}}]},"NandGame:Levels:INC":{"nodes":[{"type":"ADDC16","x":137.5,"y":338,"id":"0"},{"type":"ZERO","x":429.5,"y":484,"id":"1"},{"type":"INV","x":322.5,"y":430,"id":"2"}],"connections":[{"source":{"nodeId":"input","connectorId":"0"},"target":{"nodeId":"0","connectorId":"0"}},{"source":{"nodeId":"2","connectorId":"0"},"target":{"nodeId":"0","connectorId":"2"}},{"source":{"nodeId":"1","connectorId":"0"},"target":{"nodeId":"2","connectorId":"0"}},{"source":{"nodeId":"0","connectorId":"1"},"target":{"nodeId":"output","connectorId":"0"}}]},"NandGame:Levels:ALU_ARITHMETIC":{"nodes":[{"type":"ADD16","x":276.5,"y":298,"id":"0"},{"type":"SELECT16","x":403.76666259765625,"y":332,"id":"1"},{"type":"INV","x":590.5,"y":400,"id":"2"},{"type":"SELECT16","x":135.76666259765625,"y":116,"id":"3"},{"type":"SUB16","x":362.5,"y":151,"id":"4"}],"connections":[{"source":{"nodeId":"input","connectorId":"2"},"target":{"nodeId":"0","connectorId":"0"}},{"source":{"nodeId":"1","connectorId":"0"},"target":{"nodeId":"0","connectorId":"1"}},{"source":{"nodeId":"input","connectorId":"1"},"target":{"nodeId":"1","connectorId":"0"}},{"source":{"nodeId":"2","connectorId":"0"},"target":{"nodeId":"1","connectorId":"1"}},{"source":{"nodeId":"input","connectorId":"3"},"target":{"nodeId":"1","connectorId":"2"}},{"source":{"nodeId":"input","connectorId":"0"},"target":{"nodeId":"3","connectorId":"0"}},{"source":{"nodeId":"4","connectorId":"0"},"target":{"nodeId":"3","connectorId":"1"}},{"source":{"nodeId":"0","connectorId":"0"},"target":{"nodeId":"3","connectorId":"2"}},{"source":{"nodeId":"input","connectorId":"2"},"target":{"nodeId":"4","connectorId":"0"}},{"source":{"nodeId":"1","connectorId":"0"},"target":{"nodeId":"4","connectorId":"1"}},{"source":{"nodeId":"3","connectorId":"0"},"target":{"nodeId":"output","connectorId":"0"}}]},"NandGame:Levels:CMOS_NOR":{"nodes":[{"type":"PMOS","x":94.5,"y":369,"id":"0"},{"type":"PMOS","x":157.5,"y":266,"id":"1"},{"type":"PMOS","x":260.5,"y":175,"id":"2"},{"type":"TRINARY_LOGIC_WIRE_JUNCTION","x":196.5,"y":106,"id":"3"}],"connections":[{"source":{"nodeId":"input","connectorId":"0"},"target":{"nodeId":"0","connectorId":"0"}},{"source":{"nodeId":"input","connectorId":"2"},"target":{"nodeId":"0","connectorId":"1"}},{"source":{"nodeId":"input","connectorId":"1"},"target":{"nodeId":"1","connectorId":"0"}},{"source":{"nodeId":"0","connectorId":"0"},"target":{"nodeId":"1","connectorId":"1"}},{"source":{"nodeId":"1","connectorId":"0"},"target":{"nodeId":"2","connectorId":"0"}},{"source":{"nodeId":"input","connectorId":"3"},"target":{"nodeId":"2","connectorId":"1"}},{"source":{"nodeId":"1","connectorId":"0"},"target":{"nodeId":"3","connectorId":"0"}},{"source":{"nodeId":"2","connectorId":"0"},"target":{"nodeId":"3","connectorId":"1"}},{"source":{"nodeId":"3","connectorId":"0"},"target":{"nodeId":"output","connectorId":"0"}}]},"NandGame:Levels:CMOS_INV":{"nodes":[{"type":"PMOS","x":81.5,"y":299,"id":"0"},{"type":"NMOS","x":190.5,"y":296,"id":"1"},{"type":"TRINARY_LOGIC_WIRE_JUNCTION","x":142.5,"y":178,"id":"2"}],"connections":[{"source":{"nodeId":"input","connectorId":"0"},"target":{"nodeId":"0","connectorId":"0"}},{"source":{"nodeId":"input","connectorId":"1"},"target":{"nodeId":"0","connectorId":"1"}},{"source":{"nodeId":"input","connectorId":"0"},"target":{"nodeId":"1","connectorId":"0"}},{"source":{"nodeId":"input","connectorId":"2"},"target":{"nodeId":"1","connectorId":"1"}},{"source":{"nodeId":"0","connectorId":"0"},"target":{"nodeId":"2","connectorId":"0"}},{"source":{"nodeId":"1","connectorId":"0"},"target":{"nodeId":"2","connectorId":"1"}},{"source":{"nodeId":"2","connectorId":"0"},"target":{"nodeId":"output","connectorId":"0"}}]},"NandGame:Levels:STACK_POP_D":{"code":"A = SP\n*A A = *A - 1\nD = *A\n","testCode":"init.stack\nD = 1\npush.d\nA = 0x48\nD = A\npop.D\n# inspect D. Should be 1.\n"},"NandGame:Levels:OPCODES2":{"destinations":[{"key":"","value":[false,false,false]},{"key":"A =","value":[true,false,false]},{"key":"D =","value":[false,true,false]},{"key":"*A =","value":[false,false,true]},{"key":"A, D =","value":[true,true,false]},{"key":"D, *A =","value":[false,true,true]},{"key":"A, D, *A =","value":[true,true,true]}],"calculations":[{"key":"D+A","value":[true,false,false,false,false]},{"key":"D-A","value":[true,true,false,false,false]},{"key":"A-D","value":[true,true,false,false,true]},{"key":"D+1","value":[true,false,true,false,false]},{"key":"A+1","value":[true,false,true,false,true]},{"key":"D-1","value":[true,true,true,false,false]},{"key":"A-1","value":[true,true,true,false,true]},{"key":"-D","value":[true,true,false,true,true]},{"key":"-A","value":[true,true,false,true,false]},{"key":"-1","value":[true,true,true,true,false]},{"key":"1","value":[true,false,true,true,false]},{"key":"D","value":[true,false,false,true,true]},{"key":"A","value":[true,false,false,true,false]},{"key":"D&A","value":[false,false,false,false,false]},{"key":"D|A","value":[false,false,true,false,false]},{"key":"~D","value":[false,true,true,false,false]},{"key":"~A","value":[false,true,true,false,true]},{"key":"0","value":[false,false,false,true,false]}],"jumps":[{"key":"","value":[false,false,false]},{"key":"; JLT","value":[true,false,false]},{"key":"; JEQ","value":[false,true,false]},{"key":"; JGT","value":[false,false,true]},{"key":"; JLE","value":[true,true,false]},{"key":"; JGE","value":[false,true,true]},{"key":"; JMP","value":[true,true,true]}]}}
|