<snapdata remixID="12291432"><project name="1 bit cpu" app="Snap! 7, https://snap.berkeley.edu" version="2"><notes></notes><thumbnail>data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAKAAAAB4CAYAAAB1ovlvAAAAAXNSR0IArs4c6QAAHI5JREFUeF7tXQd4FMUXfykkEAIkQXo1UqVJR3oXCCU06U0UBWmhhS69h44gVYoUkSq9iQgiBKSTEEKAAKIgHQIEEv7fb/KfZXdv73YvubKc+76Pj9zt7szbN797M/PauL158+YNGWRIwEkScDMA6CTJG90yCRgANIDgVAkYAHSq+I3O31kA7tmzhy5cuEBubm6EZawj/8+SJQs1btyY0qZNayAohRJQBOCaNWuoUqVKDh9YDqQjR45QmzZtzL7a9evXGeA48ecc/fny5ctUq1atFA7Bf/txEwDOnj2b/bqVNApENWzYMBo3bhy7vmnTJmratKkAVDkA5JrJmutbt26l3r17m4zO9u3bqUiRIibfizfzct6vXr1K5cqVo3///ZeyZs1Kt2/fFt7vxIkTVKdOHXrw4IEAat5WQEAApU+fnq5duyaRh7jzvHnz/rcRlMK3NwHgn3/+Sf7+/qzZwMBAWrFiBb3//vsMeLVr1yYM5pUrV+jgwYP00Ucf0XvvvUepUqWiv/76iwYMGEAdOnRgA5ZSAiBKlSpl0kxMTIwAFPwQZsyYQVu2bGF85smTh+Lj4+nLL7+kKlWq0L59++iDDz6ghw8fsneBxsLf+M7X15cyZcpE69atYyCrWLEivXjxgnbv3s1+VKlTp6bnz5/TzZs3KX/+/IRZoVmzZgT55MiRQ+ALstETnT17lp48eUK5c+fWE1sUGRnJfuhyMgEgBphTt27dCBqxaNGiBI104MABNoAYKIAOg9OqVSv69ddfKU2aNPTJJ5+wz2gjMTExxQIAaOQE8IsJYHr8+DFbjwF8AC6Ag+/v3LnDbk2XLh3jD89mz56dDZD4O/Rz9+5dgsbz8PCgV69eUUJCAnsG2hB/4zu8M66LZYR+9EJnzpwhPz8/h66HrV1/y38YJgCMjo42K08IWw4Aewo/X758Js1b4s+evJhrW4lHZ/CBPn/77Tem+bAEqVevHlWtWpX92PC5a9euNH36dKbpCxYsSM2bN6dffvmFwsLC2D0AEmYRkLkNHX+vlFzHrARehLbkhmhMU5xO7NtET7dNJQ8Px4i0ybJIun//vtAZpj45RUVFCV9N6FiLplRMcuRsTt+MnmV436a//qdPn1LJF6eobNwx1kea0RFs/SimAgUKOEY4GnoRL30wewFUmImgOBYuXEirVq1i30GJ4IcDAFavXp1peixHsISxN/3xxx/UunVr8wC8dOmScPFQ/0rUpogP7Q7sSWXqtbIbb3u/n0at47aQ7+RYEvePX6qcxNePDKxEwYUz0JMeB4Tb/P38KCbyggZe3cg/a3Y2QO7u7hbvv3h4B1U5O9GEPzykxKOGzu1yS3LX3g0aNGBr27///tsufIkbPXr0qMTCYTIFY4AFc8jASnSn7NfUukMXoY01wUWoQQ4vVUZhJMmxIpot/PHrev36NXl7ewvP4WW5KQX9Zd7SnQInnmIA5P0rDW5ERITQxtHQKhTQcBCVqNNS+C7is48oXzptKjvHmht07tw5gT8vL/PvFbmkP9Uft5HE/aPTwoULq8rCUTdgg8hlly1bVoq6cNZRXZvt559bNyhfsdICX7///ju1a9fOvAaEgPlLYICrzThGJ0+eZGsKLNT/7VGa/L2lGiPnmI10c2QzEyayrLzKBowD0NPTU5gisaHBLjouLo4wrd69eY2Gjh7P7uf9Kw2unL/qM4/T3r17qW3btmzTIecv77yj9DwynP6ZY2rSscSffJ2zcuVKGjVqlIQ/8Pnhhx86fZA5A2IALu5Qkj5bftIpvEG5YKxB+Y+Op4R2S4S1qCoAL168KADgj8FVqer0P1hDmTNnZgN87+syUgC6uRED4IimJi+beUUM235zAGIHyQkAhJnl2bNnTOth9xoaGkri/pUGF94PTseGVKMqYUfZR3gn/vnnH7rfs6yEPw7AdJWDKbqV1DTB+fv4448Zn5am4g0bNtDgwYOZ90VMSjZJp4w6kWSD+GtIeaY8nEEZMmRgvDDF4H6EUndewiwTIEzB7du3N68Bz58/LwDw+NDqVHna7+xm2LvwC3vQq5ypBhy7SRGAmZZfYeDiABR7LwDA0qVLMw0IrQYADhkyhMT9w/wjJyX+xJ4QJf7MDYI5/pQ8Kxs3bjThD+0q8eiMQUefYguFHIAwn8G2iX9dunRhss+VKxc1adLELLvLli1j91pLMAXBfAfMVL61lny6LNUOQKyJOIUPq0GVph6RuOQe961Afl6WF+38+fQLLzKjNH4RIACQT20wZJcpU4ZpQGg9AHDo0KFsTcapWLFiJu8OQyunE8Nr0seTf5Pck/VuFN2dpkFo7p7kNvUIxcbGCs/DRmiOoAGHDx9O4v5xb/Hixa0dH7vdDxMV//Ec6ldB0IBz585lfWKzUbduXfZ33759mewx6ygRAAtP1/jx49llGOxh9wX179+fLJnDAHLcCw3Y2u0wpZFpQDgrOJlsQmDM5HRyRC2qMOmQhL+cObNTTOTbjYAlaXr5ZjC7ywQAv/76a2bkXbBgAd27d49GjBhB4v5LlChh0rwaf2E9O1Khh+r8ebp7UNDqExKjsiXvAQAo5w/MKfFoN4SpNGwOgI7mB7MblAdcn4XOzGUAxEwH5YMp2CIAT58+LfD758jaVH7irxL+r/esqHmXmXXVNabd+BSMnTAnALB8+fLsV4hpFQAcOXIkifvHJkVOp06dEr469U0dKjfhII0ZM4YaNWpEJUuWpKcDKlOARg2dcdllyS4d3g5zBAB+8803JO4f96JPvZDYRnp4QEWnrQEBQE417mwg746LhCkYdsCOHTua14CwB3E6PaoulRl3gPlRsQPEg88HVpWsAX2KV6WAliGKa8CApVFMVXMAvnz5Umj70KFDDID4ZWBaAwDRh7h/JV+wEn9oFGtNmG3k/OVbF0uJcU8opotpAIMl/uSgAgBHjx4t4Q/3KPHoLEAmF4AJIWVtxrLHjHDmsk02AGFyAUFdAoClx+5nu7/vv/+eGSpfDKqmeRPiv+QSWxjzXSZ8yJzgP4ZbCBoQ0yrUNTSZuH+lwUX0CqezY+pRqTH7mBZCW/PmzaOXodUl/AUuu0DuPulMdsBog/OHSBnYK/lOTWk0AMCxY8eSuH/ch3WsXkhuw9W6C3YEADHOwBQ0YKdOncxrQAiYL2QxwCVH75XIN35wDRMAmhsAv8WRbI3FNSC0HSdoQIAG32HahY0R0S3i/pUG15b8yXfBYv6UNKCcP8ipbFnbaY+UAlkNgIcPH2bBGPIgDy0AxEwiN2Mp8WtOA2oGYHh4uADAc2PrU4lvdgsaEQLP+zSW7oW9dSabFZq7J70cu19w7wD9PMwLz8BxjqBXaB1oPWhA7LjE/SsN7vHjxwX+zo9rQMVH7pLwlzNnThbzp0bw88L2x4nvzs19hhlmwoQJJO4f90J76oXkXiIlDQiF4GgApmr/HVM0oGPHjlHnzp3Na0DcwDXghfFBVGzETol854d2p8Iad5nVFh4UQqLQSMaMGYW2AEC+yYAGhJF70qRJjEHeP9aIclLjz15gwBQs5w98VqhQwV5dWt2uFgAqNapFA2plRkkDigGIKVhsWzQxw+AGThcnNKSiw3cwwSNEHtESiSPrat5luoUdY5sLPgU/evRI8h4AIQjBoxjgyZMnszUCJ6XBxTaeU8TERlRk2HaHpA5AA06ZMoWZEcSE9a1eSO7F0roGtDX/8k2IZ7sFEg1oEYDw1XGKnNSYPhy6jQWgwlGPacp9VH3JGtDSLvPN1KPMwMwBiFArc7FkGOCpU6eSuH+sEeUk56/wkJ8V5SefUuU3WXsdP5Bp06ZJ+EObSjzaekC1tpdcANpbAwKA4jXgZ599JrySiQZEQhCnS5ObUKHBW2nx4sUs2hmuG4/RDTTvMhOn/M4iqPkuE9rQHGGAERwp7h9rRDlhIc0pakowFQzdonV8UnQf+ENAp7h/NFi5cuUUtWvLh2FP5QQ3qlwDInXhxo0b1LNnT0m3WgBYYOt9imocoMqu0hTs0XY+AyAIa2iLAOTTIm6+PLUpFRi0WZJ0lGpsQ827YDCD3S3XgPgbxNd4mHpB2BFDAyK/Q9w/vy5+a0v8WRserna/Gn/gS4lH1VGy0w1qAES3cMtZC8D0NVrR63u3Ke6s1Cum9BpqAMQa3mJENMDAKXpaM8o/cJNkjcWvpSQsG23InwcAZ86cycDICSHlcoL9kNOVsOb0Qf8N7CPCpcQuHluOcbVq1ahP7940a/Zslv8iJlzTC8GPzn9U8OPLNSBPH5D7ce2tAd3bfCtoQADw888/F0RmMgXDRcYpZnoLCuz3Ey1ZsoR5KZD11qdPH5vKG2mNML/AgT1nzhyWbccJ4eJyUuIP0zx8j0hWF8cQIv8AmXxygkcGmlR8bdCgQdSrVy+2zBATeEBkR/TlyzRbxh/uU+LRpgKyojE1AJprSgsAtbKhpAEBQJi9oHRUAYg8Aa6hAMD3Q9azRBdoGCy4kRnGf2VY9EKd79+/nyVoY/eD6ArE5iFKBHYzZMkhPwHeivXr17MUR/48wnUAPkTBYP2H6UHcv9Lg4jp//uqMlpS374/MkI0IDaRU8kBIvAP4QyolPC3gDy8PgML+h2uIN0Q2Hd8cwSaJ/AhONWvWZFoZkSObQ+pQ8Iy9jD/x1I179ELyQA2tu2B7A9Ct9TwGQBDWgF988YV5DQgQcQFfm/kp+bcYT3mLlWO5t4h9Q6wXJwwk5nMMGvKC4arj4VfQPkjY4RoFgZwQECKXQTCGTpw4kcXY4f/cHg9pxIL1DMS8f6XBlfMXX7oDZS9Zg22Sli5dygAu5g/J7VhbtmzZkqVi4j641Dh/AC2mBOSsIqCBJ8MDsLNmzWIaH/9ni9lGrWbvk/AHPvVUGcElAIiB4YGj12e1Is88pelIfF7CFPXtt9+y0HxLhHgzTAXy7DHxMwAfbIvwMfP/syyswZJ+oE1BGFyl6RNalOe+xs5uTU0Kpadj1efSokWLqHv37qrKCEBDnJolwj1c8/H/nw3Ow/iDfMQBq0o8qjJhpxvkkUxyDYgZBlHj+AGKSU0DIuDEM2M2evzLOlXOlaZgajVXogExI3IyWQMCZFyL3JjThj4t7EMbnhUi3zLB5JvN9knYV47upNZxW8nL7TUbYA4OBAf06NHD5IURQxgcHMy+5/zh75mPK1BsQpJ2Nre75Y1Zc712mqsUlCYpFTQ+9LQQLIHP0Pj22viojrTCDQAgfzeE0ilNwZjJ5FHQagBM6S4YAOT5yZiCLQIQ74XFPKhUYBZKvahRcmSRrGduf76fhf2DeOSuUkMIi4KXBJo0v0LyerI6V3no/oP7FB7+NhIHJiUsJ9RSOu3Bi7k25aFqelkDJracLdGAX331lXkNyK8g/EpsFHaUILHR0ZKHgF+6M0mc3+JMPsR9uxQA9SJUgw/tEuCxlHjizOhPNEdEq03B2jkgUloDQgNiCgZhChav1d/ZApXWCOW/ci8AyNeAegMgCkhh1tAEQKhyeCTUXFW2vg6XXf369VmVKoOslwBiKTkhllO+BoTBHvVhHO2Ke918pqABwaN4c2miAWFn4y4bpfxYR1QmhT0LNjmDrJOAGgDRWnJ8wSk1w2gGIMLdUXCSk+BXDA+nGjVqsBxaGJcRvaxV+/G2UBAS64CgoCDasWMH+1rehljcRuVR68DH11f8KUSL62UX/KrZDIkGhCmNk0QDIt4NdeNAcEvB8wFvBCqOYn2BrDgEZCLBGVVCYQdD+DuAi/wNJCDBM4JIZxhw+bMALNxucJehPAcM1TBf4DqCUPmzYpHrrfKo9XBw/BPydAWtALQ1p/KAVACQrwGhpc0CEBG/HIBgilcZ5XVh8D8agl8PwMP/KG8LNxySXQBAuLug6fAs7GTibHzeDgIP8Bzagj1NqfClniqP2nqA7NWePJpdKwDtvQuObzqdjTUIykq8BpVoQGgjMQDtJSgt7eqp8qgWfvVwjxoA4QVBcPHPP0ujyLUAMCUBqWIAQgMi6khxCkZQAAdgGi9PSgirSj6piMJ9ylPqVJ50Nn0Fm1Yg9XkYQ8GPNzJe0n0URDcq9BcY01PlUT2ASwsP8nwZuQZEaRFEKjl6F/wyOEzQgACg+PQDiQZE+BQH4MsnDyhw/ad0uPgwKlw5KQAB5pGYiKTqWWqUMVtOStRwHwPftzWZL/hWlyQXIEhPlUfV3lUv1wFAvrFDwpZSSD54tdYXjGdSogEBQCSkwYJiEYBIvOYAfPXsEd3aPIUKdQ0T5DtrSG/qEfc2Z8SS4LNP2UOXnrkJ4VuWfKZn9q6n2jHz6EanpBxfkJ4qj+oFYGp8yPN59LIGfNFkGgMgCGtAcVCzRAMiTKdFixbsV/Q67jFt+HknCyiFXxgO5FHd2tJwn7dFwj3fy0k+xSrT41/WmsgmoN8iuuabR0hGVztKK8uimhTbcacwxeup8qjawOvl+jsPQNRm4Row4fkT2rHvIPvMjZdju3eQANArd0Hy9MtKcWeleRIYEP+QhQyAML2g0KHauSHZltSm6x2S7IMgPVUe1QvA1PiQZwzqRQM+bzxVogERYc5JogGR9wENCEp88ZS27TkgfMZ343p0lADQkkD8+y6kq765hWoIqANoybOSfWkdutpumxAMq6fKo2oDr5frACCXMVJWlQJSkYIgjzZS2wWn1BOiGYCofyeYYeLjaOuufRKzjI+nB73sr60URbalFynq+i2WFwyyVH0U13Mtr0cxbd+aB/RUeVQvAFPjQ57RaKtNSEoDUp81nCxoQDg0QkJClDUgCkRyALq9ek5bdu6VANAvrQ+tCi5CooMqzcqk67ZIunLrb1aaA6R2dlnuFfXpSputQnt6qjyqNvB6ua4GQHN8qmlAa95PKRxLMwBRA5kD0CPhJW3avpsaNmzISpChiOTUkC9oWJq3B9lYYsyvz3d0xScnq64PslR7D9fzrgqiy602C03qqfKoNQPgzHvlOdN6WQMCgHwmhAbs16+fsgbEiZgcgJ6J8WwXjM/YHcNGOKZ7exrh8/YoL6jCAlvuKZZsyNBnAV1Jk5MZPkG8NIO5AQpc3YiiPt0kXNZT5VFngsqavgFAvgZE0r6eAMiPw7UIQKRIcgB60Wtav2U7y5lFohJqI4cN+FICQEu74PS9AcAcLMEJ/mHxEVtKQs23tglFtkiqcgDSU+VRa0DgzHvlOd16AeDToEmsSBUIsaawjHCS7IKRJsntgN5uCfTj5m2SNeCM0J40PLV6BXo0nmXiLjr/8JVQLJI7o80NUP51wRTR/CfBDqinyqPOBJU1fXMA4hkk7eulQOWTBhOFKdgiAJH7y80wqd0Tac2GLQIg8VKoOoASGOITj8wJCInoWPepVR7l1wv91JwuNP1RMMPoqfKoNSBw5r3iMCgUFZADEGX2EIkkJy2bkJSU6H1cf4JkDThw4EBlDYgLXAP6eBKt/mmzw6JjCm9oQeeD1wmA1VPlUWeCypq+1QBori0tANTKh9IuWDMAUXyIrwHTpnKjles2CIBUc6Wl9HrRza3oXJO3Lj09VR7VKnxn34eqDSCMBapaaF0D2ppv/kPABtTrxErKHDxEOAcaUzBmWsU1IBaHHIC+Xu60Yu1PkilYiVFrK43K2+DPF9vSms42XiNc1lPlUVsPkL3a4wBE+yhbohWAttaA6B9LMKReTCrxiK6UGyBsQrALFh8PJtmEwELNAZg+tSd9v/pHh03BJX5uS6cb/iCMjZ4qj9oLMLZuV1zzBmVL5ADE4OMMN3uHY2Gdicgq2JUvLupL/g1DJQDEZldRA8JJzAGYIU0qWrpqrd2mYETYoJoV6vTBdlVye3s6FbRKYExPlUdtDRR7tcdLqmBWUQIgjMEwq1l7TIM1rri0888J4AMIJxZ/SNFl+0vMMGY1ICJVOQD903rT4hWr2WfUR0ZwgD2CRJH9hpJupXd2pJP1Vwhjo6fKo/YCjK3bxUlRSGUAAG/ObevwGtFeeQrT5NfFmeYTa0C/oEFCDUacU2K2Ngxi9TkAA3xT06LlP9CtW7dY9XoQClxzQj1irRErsAFifYkSamLi1VFxhHuZXZ3oRL3lwmU9VR61NVDs2R7qHYJKf5DVoYWlzL2Te6Z89FuxpCNhUbJPfEgNvpOsAZEux80w76X3oZgfRtLya2lp8+bNrIIpAgR4YjoAiBBwBI7yyqKofo4UTESywPUG4MXHx7PjulAJFeFe/ERKpF3CvYfqqKiIVW5PFzped5lghtFT5VF7AsYebTursJSld0FJPeSEy0kCQJRM4ADMlCEtRawYTmtvpGPnY4B46TT8jV0Ogkxhutm2bRs7PwMgQ87vmjVrWPkFngOMCqPbt28Xyr7Jq6OWyulLHZ5vpGN1lgoA1FPlUXuAxGgzSQISAAJA/HiszH6+LClptX8H2nnsIouIUfPPwnYHDSc/UVIubFQ5FVdH9fuuDnm7J9DRWosFDaunyqMGWOwnAQkAUekAGgwUkC41FdzUjv29/XkB8qQ3tOt5oAAQfG9NpVGxoZq/Ti73BxSS4dj/P7rR0dqL2d/YraGms0GuLwGT4kTz588Xtully5ahAH/HVKq6HB3N1ooAH6opIILGINeXgNn6gFpyf+0hHj1WHrXHexptKqwBDaEYEnC0BIwKqY6WuNGfRAKKAMTRVDinDSeca60DaKv7UHELJxqJT1Q0xsx1JWACQBgxcUyqtdVR5wzpRsNzR6dIUt4ebnSnW9JBNQjhR0KUQa4tARMA4gy15NCCQR1pQpE7dDvvx1Qq8w56GpB0Npg5an+9PY2qMkq4nPBdM8ru9oBiZfVhjE1Jckbj3XnGBIDi456QGrl8+XLq1KkTS0pC+TaeUhcREcEy7GG8htlk6fCu1CsoH5XKtYOeej2l0IKhNPnvyWYlcTXLVUK1BE7o95PjIRQtyg3GwYhGiY53B0zJ4dQEgOJC16hmgBgzGIV9fHwI/l9EtMJLAZsdXGq4DpCsHP0VPehwiVblfUb0iCg0MJQoFVFn3870KvEV5fPLR2/c31DaE2kZn1EBUZJThlBWovnFERQhyoxDXBlyUAxyXQmYANCa05EQs4eyW0haXzuhF00s+i91L3U/CYQqND92PtUpVUe4K3zBAGrofpLOyKKijSlYTZLv9nUTAOL0yuQkBB1YNYsGZTzJpHGkZhsKDOyqKpldu3az0h2VH+2jCl6xcE3TifpJIVk41Vt8srZqY8YN76QEFM0wCMuCGQYVUW1lXtHaDgqcY5pHQKNBri8BwxDt+mOs6zc0AKjr4XF95gwAuv4Y6/oNDQDqenhcnzkDgK4/xrp+QwOAuh4e12fOAKDrj7Gu39AAoK6Hx/WZMwDo+mOs6zc0AKjr4XF95gwAuv4Y6/oNDQDqenhcnzmXASBPIzXCt94t0LoMACF2VPZCvRrkk+CARF5m5N0akv8Wty4FQGjBZs2amYwgijKibrGW6v7/reF3/tu6FAAhThyGHBuL4FZTQqzhggULWBFHg/QhAZcCIAor4cBFTjilPWPGjLRw4UJ9SNvgwkQCLgNATL9YA6JAJhKlvL29jeF+ByTgMgB8B2RtsKggAQOABiycKgEDgE4Vv9G5AUADA06VgAFAp4rf6NwAoIEBp0rAAKBTxW90bgDQwIBTJWAA0KniNzo3AGhgwKkSMADoVPEbnRsANDDgVAkYAHSq+I3ODQAaGHCqBAwAOlX8RucGAA0MOFUCBgCdKn6jcwOABgacKgEDgE4Vv9G5AUADA06VgAFAp4rf6NwAoIEBp0rgf4jHE8UkxnIUAAAAAElFTkSuQmCC</thumbnail><scenes select="1"><scene name="1 bit cpu"><notes></notes><palette><category name="CPU" color="0,116,143,1"/></palette><hidden></hidden><headers></headers><code></code><blocks><block-definition s="initialize state" type="command" category="CPU"><header></header><code></code><translations></translations><inputs></inputs><script><block s="doSetVar"><l>memory</l><block s="reportReshape"><block s="reportNewList"><list><l>0</l></list></block><list><block s="reportVariadicProduct"><list><block s="reportPower"><l>2</l><l>8</l></block><l>8</l></list></block></list></block></block><block s="doSetVar"><l>registers</l><block s="reportReshape"><block s="reportNewList"><list><l>0</l></list></block><list><l>3</l></list></block></block><block s="doSetVar"><l>address registers</l><block s="reportReshape"><block s="reportNewList"><list><l>0</l></list></block><list><l>2</l></list></block></block><block s="doIfElse"><block var="debug"/><script><block s="doShowVar"><l>registers</l></block><block s="doShowVar"><l>address registers</l></block><block s="doShowVar"><l>current instruction</l></block><block s="doShowVar"><l>memory</l></block><block s="doShowVar"><l>debug</l></block></script><script><block s="doHideVar"><l>registers</l></block><block s="doHideVar"><l>address registers</l></block><block s="doHideVar"><l>current instruction</l></block><block s="doHideVar"><l>memory</l></block><block s="doHideVar"><l>debug</l></block></script></block></script></block-definition><block-definition s="fetch" type="reporter" category="CPU"><header></header><code></code><translations></translations><inputs></inputs><script><block s="doDeclareVariables"><list><l>instruction</l></list></block><block s="doFor"><l>i</l><l>0</l><l>7</l><script><block s="doSetVar"><l>instruction</l><custom-block s="%n &lt;&lt; %n"><block var="instruction"/><l>1</l></custom-block></block><block s="doChangeVar"><l>instruction</l><custom-block s="read memory address %n"><block s="reportVariadicSum"><list><block s="reportVariadicProduct"><list><custom-block s="pc"></custom-block><l>8</l></list></block><block var="i"/></list></block></custom-block></block></script></block><block s="doReport"><block var="instruction"/></block></script></block-definition><block-definition s="¬ %&apos;a&apos;" type="reporter" category="operators"><header></header><code></code><translations></translations><inputs><input type="%n"></input></inputs><script><block s="doReport"><block s="reportApplyExtension"><l>bit_not(a)</l><list><block var="a"/></list></block></block></script></block-definition><block-definition s="%&apos;a&apos; ∧ %&apos;b&apos;" type="reporter" category="operators"><header></header><code></code><translations></translations><inputs><input type="%n"></input><input type="%n"></input></inputs><script><block s="doReport"><block s="reportApplyExtension"><l>bit_and(a, b)</l><list><block var="a"/><block var="b"/></list></block></block></script></block-definition><block-definition s="%&apos;a&apos; ∨ %&apos;b&apos;" type="reporter" category="operators"><header></header><code></code><translations></translations><inputs><input type="%n"></input><input type="%n"></input></inputs><script><block s="doReport"><block s="reportApplyExtension"><l>bit_or(a, b)</l><list><block var="a"/><block var="b"/></list></block></block></script></block-definition><block-definition s="%&apos;a&apos; ⊻ %&apos;b&apos;" type="reporter" category="operators"><header></header><code></code><translations></translations><inputs><input type="%n"></input><input type="%n"></input></inputs><script><block s="doReport"><block s="reportApplyExtension"><l>bit_xor(a, b)</l><list><block var="a"/><block var="b"/></list></block></block></script></block-definition><block-definition s="%&apos;a&apos; &lt;&lt; %&apos;b&apos;" type="reporter" category="operators"><header></header><code></code><translations></translations><inputs><input type="%n"></input><input type="%n"></input></inputs><script><block s="doReport"><block s="reportApplyExtension"><l>bit_left_shift(a, b)</l><list><block var="a"/><block var="b"/></list></block></block></script></block-definition><block-definition s="%&apos;a&apos; &gt;&gt; %&apos;b&apos;" type="reporter" category="operators"><header></header><code></code><translations></translations><inputs><input type="%n"></input><input type="%n"></input></inputs><script><block s="doReport"><block s="reportApplyExtension"><l>bit_right_shift(a, b)</l><list><block var="a"/><block var="b"/></list></block></block></script></block-definition><block-definition s="%&apos;a&apos; &gt;&gt;&gt; %&apos;b&apos;" type="reporter" category="operators"><header></header><code></code><translations></translations><inputs><input type="%n"></input><input type="%n"></input></inputs><script><block s="doReport"><block s="reportApplyExtension"><l>bit_unsigned_right_shift(a, b)</l><list><block var="a"/><block var="b"/></list></block></block></script></block-definition><block-definition s="decode %&apos;instruction&apos;" type="reporter" category="CPU"><header></header><code></code><translations></translations><inputs><input type="%s"></input></inputs><script><block s="doDeclareVariables"><list><l>opcode</l></list></block><block s="doSetVar"><l>opcode</l><custom-block s="%n ∧ %n"><block var="instruction"/><block s="reportDifference"><custom-block s="%n &lt;&lt; %n"><l>1</l><l>5</l></custom-block><l>1</l></block></custom-block></block><block s="doIf"><block s="reportEquals"><block var="opcode"/><l>0</l></block><script><block s="doReport"><block s="reportNewList"><list><l>lb</l><custom-block s="%n &gt;&gt; %n"><block var="instruction"/><l>5</l></custom-block></list></block></block></script></block><block s="doIf"><block s="reportEquals"><block var="opcode"/><l>1</l></block><script><block s="doReport"><block s="reportNewList"><list><l>sb</l><custom-block s="%n &gt;&gt; %n"><block var="instruction"/><l>5</l></custom-block></list></block></block></script></block><block s="doIf"><block s="reportEquals"><block var="opcode"/><l>2</l></block><script><block s="doReport"><block s="reportNewList"><list><l>not</l><custom-block s="%n &gt;&gt; %n"><block var="instruction"/><l>5</l></custom-block></list></block></block></script></block><block s="doIf"><block s="reportEquals"><block var="opcode"/><l>3</l></block><script><block s="doReport"><block s="reportNewList"><list><l>sz</l><custom-block s="%n &gt;&gt; %n"><block var="instruction"/><l>5</l></custom-block></list></block></block></script></block><block s="doIf"><block s="reportEquals"><block var="opcode"/><l>4</l></block><script><block s="doReport"><block s="reportNewList"><list><l>jmp</l></list></block></block></script></block><block s="doIf"><block s="reportEquals"><block var="opcode"/><l>5</l></block><script><block s="doReport"><block s="reportNewList"><list><l>cmp</l></list></block></block></script></block><block s="doIf"><block s="reportEquals"><block var="opcode"/><l>6</l></block><script><block s="doReport"><block s="reportNewList"><list><l>inc</l><custom-block s="%n &gt;&gt; %n"><block var="instruction"/><l>5</l></custom-block></list></block></block></script></block></script></block-definition><block-definition s="execute %&apos;decoded&apos;" type="command" category="CPU"><header></header><code></code><translations></translations><inputs><input type="%l"></input></inputs><script><block s="doDeclareVariables"><list><l>type</l><l>register</l></list></block><block s="doSetVar"><l>type</l><block s="reportListItem"><l>1</l><block var="decoded"/></block></block><block s="doSetVar"><l>register</l><block s="reportListItem"><l>2</l><block var="decoded"/></block></block><block s="doSetVar"><l>current instruction</l><block var="decoded"/></block><block s="doIf"><block var="debug"/><script><block s="doAsk"><block s="reportJoinWords"><list><l>Stepping enabled, pc=</l><custom-block s="register %n"><custom-block s="register format %n address register? %b"><l>1</l><l><bool>true</bool></l></custom-block></custom-block><l>, press enter to run current instruction and continue to next instruction</l></list></block></block></script></block><block s="doIf"><block s="reportEquals"><block var="type"/><l>lb</l></block><script><custom-block s="set register %n to %n"><block var="register"/><custom-block s="read memory address %n"><custom-block s="ar"></custom-block></custom-block></custom-block></script></block><block s="doIf"><block s="reportEquals"><block var="type"/><l>sb</l></block><script><custom-block s="write %n at memory address %n"><custom-block s="register %n"><block var="register"/></custom-block><custom-block s="ar"></custom-block></custom-block></script></block><block s="doIf"><block s="reportEquals"><block var="type"/><l>not</l></block><script><custom-block s="not register %n"><block var="register"/></custom-block></script></block><block s="doIf"><block s="reportEquals"><block var="type"/><l>sz</l></block><script><custom-block s="set register %n to %n"><block var="register"/><l>0</l></custom-block></script></block><block s="doIf"><block s="reportEquals"><block var="type"/><l>jmp</l></block><script><custom-block s="set register %n to %n"><custom-block s="register format %n address register? %b"><l>1</l><l><bool>true</bool></l></custom-block><custom-block s="register %n"><custom-block s="register format %n address register? %b"><l>0</l><l><bool>true</bool></l></custom-block></custom-block></custom-block></script></block><block s="doIf"><block s="reportEquals"><block var="type"/><l>cmp</l></block><script><custom-block s="set register %n to %n"><custom-block s="register %n"><custom-block s="register format %n address register? %b"><l>2</l><l><bool>false</bool></l></custom-block></custom-block><block s="reportVariadicSum"><list><block s="reportLessThan"><custom-block s="register %n"><custom-block s="register format %n address register? %b"><l>0</l><l><bool>false</bool></l></custom-block></custom-block><custom-block s="register %n"><custom-block s="register format %n address register? %b"><l>1</l><l><bool>false</bool></l></custom-block></custom-block></block><l>0</l></list></block></custom-block></script></block><block s="doIf"><block s="reportEquals"><block var="type"/><l>inc</l></block><script><custom-block s="set register %n to %n"><block var="register"/><block s="reportVariadicSum"><list><custom-block s="register %n"><block var="register"/></custom-block><l>1</l></list></block></custom-block></script></block></script></block-definition><block-definition s="register %&apos;x&apos;" type="reporter" category="CPU"><header></header><code></code><translations></translations><inputs><input type="%n"></input></inputs><script><block s="doIfElse"><custom-block s="%n &gt;&gt; %n"><block var="x"/><l>2</l></custom-block><script><block s="doReport"><block s="reportListItem"><block s="reportVariadicSum"><list><custom-block s="%n ∧ %n"><block var="x"/><l>3</l></custom-block><l>1</l></list></block><block var="address registers"/></block></block></script><script><block s="doReport"><block s="reportListItem"><block s="reportVariadicSum"><list><custom-block s="%n ∧ %n"><block var="x"/><l>3</l></custom-block><l>1</l></list></block><block var="registers"/></block></block></script></block></script></block-definition><block-definition s="ar" type="reporter" category="CPU"><header></header><code></code><translations></translations><inputs></inputs><script><block s="doReport"><custom-block s="register %n"><custom-block s="register format %n address register? %b"><l>0</l><l><bool>true</bool></l></custom-block></custom-block></block></script></block-definition><block-definition s="pc" type="reporter" category="CPU"><header></header><code></code><translations></translations><inputs></inputs><script><block s="doReport"><custom-block s="register %n"><custom-block s="register format %n address register? %b"><l>1</l><l><bool>true</bool></l></custom-block></custom-block></block></script></block-definition><block-definition s="cr" type="reporter" category="CPU"><header></header><code></code><translations></translations><inputs></inputs><script><block s="doReport"><custom-block s="register %n"><custom-block s="register format %n address register? %b"><l>2</l><l><bool>false</bool></l></custom-block></custom-block></block></script></block-definition><block-definition s="set register %&apos;x&apos; to %&apos;y&apos;" type="command" category="CPU"><header></header><code></code><translations></translations><inputs><input type="%n"></input><input type="%n"></input></inputs><script><block s="doIfElse"><custom-block s="%n &gt;&gt; %n"><block var="x"/><l>2</l></custom-block><script><block s="doReplaceInList"><block s="reportVariadicSum"><list><custom-block s="%n ∧ %n"><block var="x"/><l>3</l></custom-block><l>1</l></list></block><block var="address registers"/><block var="y"/></block></script><script><block s="doReplaceInList"><block s="reportVariadicSum"><list><custom-block s="%n ∧ %n"><block var="x"/><l>3</l></custom-block><l>1</l></list></block><block var="registers"/><block var="y"/></block></script></block></script></block-definition><block-definition s="write %&apos;x&apos; at memory address %&apos;address&apos;" type="command" category="CPU"><header></header><code></code><translations></translations><inputs><input type="%n"></input><input type="%n"></input></inputs><script><block s="doIf"><block s="reportGreaterThan"><block s="reportVariadicSum"><list><block var="address"/><l>1</l></list></block><block s="reportListAttribute"><l><option>length</option></l><block var="memory"/></block></block><script><custom-block s="error %txt"><l>Past memory bounds</l></custom-block></script></block><block s="doReplaceInList"><block s="reportVariadicSum"><list><block var="address"/><l>1</l></list></block><block var="memory"/><block var="x"/></block></script></block-definition><block-definition s="read memory address %&apos;address&apos;" type="reporter" category="CPU"><header></header><code></code><translations></translations><inputs><input type="%n"></input></inputs><script><block s="doIf"><block s="reportGreaterThan"><block s="reportVariadicSum"><list><block var="address"/><l>1</l></list></block><block s="reportListAttribute"><l><option>length</option></l><block var="memory"/></block></block><script><custom-block s="error %txt"><l>Past memory bounds</l></custom-block></script></block><block s="doReport"><block s="reportListItem"><block s="reportVariadicSum"><list><block var="address"/><l>1</l></list></block><block var="memory"/></block></block></script></block-definition><block-definition s="register format %&apos;x&apos; address register? %&apos;is address register&apos;" type="reporter" category="CPU"><header></header><code></code><translations></translations><inputs><input type="%n"></input><input type="%b"></input></inputs><script><block s="doReport"><block s="reportVariadicSum"><list><custom-block s="%n &lt;&lt; %n"><block var="is address register"/><l>2</l></custom-block><block var="x"/></list></block></block></script></block-definition><block-definition s="CPU step" type="command" category="CPU"><header></header><code></code><translations></translations><inputs></inputs><script><custom-block s="execute %l"><custom-block s="decode %s"><custom-block s="fetch"></custom-block></custom-block></custom-block><custom-block s="set register %n to %n"><custom-block s="register format %n address register? %b"><l>1</l><l><bool>true</bool></l></custom-block><block s="reportVariadicSum"><list><custom-block s="pc"></custom-block><l>1</l></list></block></custom-block></script></block-definition><block-definition s="write list %&apos;list&apos; to memory address %&apos;address&apos;" type="command" category="CPU"><header></header><code></code><translations></translations><inputs><input type="%l"></input><input type="%n"></input></inputs><script><block s="doFor"><l>i</l><l>0</l><block s="reportDifference"><block s="reportListAttribute"><l><option>length</option></l><block var="list"/></block><l>1</l></block><script><custom-block s="write %n at memory address %n"><block s="reportListItem"><block s="reportVariadicSum"><list><block var="i"/><l>1</l></list></block><block var="list"/></block><block s="reportVariadicSum"><list><block var="address"/><block var="i"/></list></block></custom-block></script></block></script></block-definition><block-definition s="not register %&apos;x&apos;" type="command" category="CPU"><header></header><code></code><translations></translations><inputs><input type="%n"></input></inputs><script><block s="doIfElse"><custom-block s="%n &gt;&gt; %n"><block var="x"/><l>2</l></custom-block><script><block s="doDeclareVariables"><list><l>address</l></list></block><block s="doSetVar"><l>address</l><custom-block s="register %n"><block var="x"/></custom-block></block><custom-block s="set register %n to %n"><block var="x"/><l>0</l></custom-block><block s="doFor"><l>i</l><l>15</l><l>0</l><script><custom-block s="set register %n to %n"><block var="x"/><custom-block s="%n &lt;&lt; %n"><custom-block s="register %n"><block var="x"/></custom-block><l>1</l></custom-block></custom-block><custom-block s="set register %n to %n"><block var="x"/><block s="reportVariadicSum"><list><custom-block s="register %n"><block var="x"/></custom-block><block s="reportVariadicSum"><list><block s="reportNot"><custom-block s="%n ∧ %n"><custom-block s="%n &gt;&gt; %n"><block var="address"/><block var="i"/></custom-block><l>1</l></custom-block></block><l>0</l></list></block></list></block></custom-block></script></block></script><script><custom-block s="set register %n to %n"><block var="x"/><block s="reportVariadicSum"><list><block s="reportNot"><block s="reportEquals"><custom-block s="register %n"><block var="x"/></custom-block><l>1</l></block></block><l>0</l></list></block></custom-block></script></block></script></block-definition><block-definition s="safely try %&apos;action&apos; then if %&apos;error&apos; %&apos;handler&apos;" type="command" category="control"><comment x="0" y="0" w="276" collapsed="false">Catch errors.&#xD;&#xD;Runs the first script.  If it succeeds, nothing else happens.&#xD;But if it has an error (something that would otherwise result&#xD;in a red halo around the block), then the second script is run,&#xD;with the text of the error message that would have been shown in the variable ERROR.</comment><header></header><code></code><translations>pt:tenta executar _ e, em caso de erro _ , executa _&#xD;ca:prova de forma segura _ i si _ _&#xD;</translations><inputs><input type="%cs"></input><input type="%upvar"></input><input type="%cs"></input></inputs><script><block s="doApplyExtension"><l>err_try(cmd, catch, err)</l><list><block var="action"/><block var="handler"/><block var="error"/></list></block><block s="doApplyExtension"><l>err_reset</l><list></list></block></script></block-definition><block-definition s="error %&apos;msg&apos;" type="command" category="control"><comment x="0" y="0" w="268.6666666666667" collapsed="false">Throw an error.&#xD;&#xD;Makes a red halo appear around the script that runs it,&#xD;with the input text shown in a speech balloon next to&#xD;the script, just like any Snap! error.&#xD;&#xD;This is useful to put in the second script of SAFELY TRY&#xD;after some other instructions to undo the partial work of&#xD;the first script.</comment><header></header><code></code><translations>pt:lança o erro _&#xD;</translations><inputs><input type="%txt"></input></inputs><script><block s="doApplyExtension"><l>err_error(msg)</l><list><block var="msg"/></list></block></script></block-definition><block-definition s="safely try reporting %&apos;this&apos; then if %&apos;error&apos; report %&apos;that&apos;" type="reporter" category="control"><comment x="0" y="0" w="316.6666666666667" collapsed="false">Catch errors in a reporter.&#xD;&#xD;Evaluates its first input.  If that expression successfully reports a value, this block reports that value.  If the expression causes a Snap! error,&#xD;then the final input slot is evaluated with the text of what would have&#xD;been the error message in variable ERROR.  SAFELY TRY then reports the value of that final expression.&#xD;&#xD;Sometimes you&apos;ll want to throw an error in the final expression.  You&#xD;can put an ERROR block inside a CALL block to do that.</comment><header></header><code></code><translations>ca:prova de forma segura reportant _ i si _ reportant _&#xD;</translations><inputs><input type="%anyUE"></input><input type="%upvar"></input><input type="%anyUE"></input></inputs><script><block s="doDeclareVariables"><list><l>value</l></list></block><custom-block s="safely try %cs then if %upvar %cs"><script><block s="doSetVar"><l>value</l><block s="evaluate"><block var="this"/><list></list></block></block></script><l>err</l><script><block s="doSetVar"><l>error</l><block var="err"/></block><block s="doSetVar"><l>value</l><block s="evaluate"><block var="that"/><list></list></block></block></script></custom-block><block s="doReport"><block var="value"/></block></script></block-definition></blocks><stage name="Stage" width="480" height="360" costume="0" color="255,255,255,1" tempo="60" threadsafe="false" penlog="false" volume="100" pan="0" lines="round" ternary="false" hyperops="true" codify="false" inheritance="true" sublistIDs="false" id="806"><pentrails>data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAeAAAAFoCAYAAACPNyggAAAAAXNSR0IArs4c6QAADoVJREFUeF7t1cEJAAAIxDDdf2m3sJ+4wEEQuuMIECBAgACBd4F9XzRIgAABAgQIjAB7AgIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECByxcQFpoRMBzwAAAABJRU5ErkJggg==</pentrails><costumes><list struct="atomic" id="807"></list></costumes><sounds><list struct="atomic" id="808"></list></sounds><variables></variables><blocks></blocks><scripts></scripts><sprites select="1"><watcher var="address registers" style="normal" x="10" y="115.00000999999997" color="243,118,29" extX="80" extY="70"/><watcher var="current instruction" style="normal" x="132" y="13.00001199999997" color="243,118,29" extX="80" extY="70"/><watcher var="registers" style="normal" x="12" y="14.000001999999995" color="243,118,29" extX="80" extY="70"/><watcher var="memory" style="normal" x="345" y="21" color="243,118,29" extX="100.24609375" extY="150"/><sprite name="Sprite" idx="1" x="-59" y="-106" heading="90" scale="1" volume="100" pan="0" rotation="1" draggable="true" costume="0" color="80,80,80,1" pen="tip" id="817"><costumes><list struct="atomic" id="818"></list></costumes><sounds><list struct="atomic" id="819"></list></sounds><blocks></blocks><variables></variables><scripts><script x="204" y="94.33333333333334"><block s="receiveGo"></block><block s="doSetVar"><l>debug</l><block s="reportBoolean"><l><bool>true</bool></l></block></block><custom-block s="initialize state"></custom-block><custom-block s="write list %l to memory address %n"><block s="reportConcatenatedLists"><list><block s="reportNewList"><list><l>0</l><l>0</l><l>0</l><l>0</l><l>0</l><l>0</l><l>1</l><l>0</l></list></block><block s="reportNewList"><list><l>0</l><l>0</l><l>0</l><l>0</l><l>0</l><l>0</l><l>0</l><l>1</l></list></block><block s="reportNewList"><list><l>0</l><l>0</l><l>1</l><l>0</l><l>0</l><l>0</l><l>0</l><l>0</l></list></block></list></block><l>0</l></custom-block><block s="doForever"><script><custom-block s="CPU step"></custom-block></script></block></script><comment x="896" y="182" w="90" collapsed="false">Open the memory in a dialog for a better view!</comment><comment x="392" y="514" w="318" collapsed="false">little endian&#xD;address register is 16 bit&#xD;r0, r1: general purpose (1 bit)&#xD;ar = address register (16 bit, ar0)&#xD;cr = compare register (1 bit, r2)&#xD;pc = program counter (16 bit, ar1)&#xD;Instructions:&#xD;lb reg (load bit from address register) 000&#xD;sb reg (store bit from address register) 001&#xD;not reg (not bit in reg) 010&#xD;sz reg (set register to 0) 011&#xD;jmp (jump to address [offset] in address register) 100&#xD;cmp (if r0 &lt; r1 set cr to 1, else set to 0) 101&#xD;inc reg (reg = reg + 1) 110&#xD;register encoding:&#xD;abc where a,b,c are bits&#xD;if a=0 it&apos;s 1 bit&#xD;bc determines register&#xD;if a=1 it&apos;s 16 bit&#xD;bc determines register&#xD;instructions are 1 nibble (4 bits)&#xD;opcode [5:0]&#xD;register [8:6]</comment></scripts></sprite><watcher var="debug" style="normal" x="11" y="216.00001199999997" color="243,118,29"/></sprites></stage><variables><variable name="memory"><list struct="atomic" id="878">1,0,0,0,0,0,1,0,0,0,0,0,0,0,0,1,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0</list></variable><variable name="registers"><list struct="atomic" id="879">1,1,0</list></variable><variable name="address registers"><list struct="atomic" id="880">0,5</list></variable><variable name="current instruction"><list struct="atomic" id="881">lb,0</list></variable><variable name="debug"><bool>true</bool></variable></variables></scene></scenes></project><media name="1 bit cpu" app="Snap! 7, https://snap.berkeley.edu" version="2"></media></snapdata>