2 Bits, 1 Byte
2 Bits, 1 Byte is an assembly language for a 2-bit CPU, made by User:Gilbert189. With 1 byte of memory, this machine could store at least 2 instructions.
Operations
The following are instructions of 2 Bits, 1 Byte:
| Code | Name | Description | ||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 00 | DON | DO Nothing. Or in other words, NOP. | ||||||||||
| 01 | ACT | ACTion. Given value in memory, change the value according to the following table:
  | ||||||||||
| 10 | JMP | JuMP. Jump (unconditionally) to address specified. | ||||||||||
| 11 | END | END. Print the entire memory as character and end the program. | 
The instruction pointer can wrap around, thus allowing more "complicated" programs.
Programs
Since the memory is one byte, you can represent the entire program with just one character.
For example:
I
becomes:
01001001
which, when disassembled, becomes:
ACT 00b JMP 01b
Example codes
Endless loop
'
Disassembled:
DON JMP 01b END ; lol
Output 'm'
a
Disassembled:
ACT 10b DON ; becomes END
Alternative
]
Quine
Any digit outputs itself. For example:
7
Each ASCII digit starts with 0011 in binary, so the first two instructions are DON END.
Also, any character with ASCII value not less than 0xC0 is a quine, because the first instruction is END.
Another Quine
?
Output "|"
~
Output "{"
t
Truth-machine
nn 01 01 11
Where nn is replaced with the two-bit representation of the input: 00b or 01b. In line with truth-machines with limited IO, the memory location to monitor is the first two bits, and can be "read" every time the IP = 1. The final memory dump is not relevant under this convention. The zero input program is \x17 and the one input is W.
All examples
\x00 → Does not terminate
\x01 → Does not terminate
\x02 → Does not terminate
\x03 → \x03
\x04 → \xC4
\x05 → 5
\x06 → Does not terminate
\x07 → 5
\x08 → Does not terminate
\x09 → Does not terminate
\x0A → Does not terminate
\x0B → \x0B
\x0C → \x0C
\x0D → \x0D
\x0E → \x0E
\x0F → \x0F
\x10 → \xD0
\x11 → Does not terminate
\x12 → Does not terminate
\x13 → \xD3
\x14 → Does not terminate
\x15 → Does not terminate
\x16 → Does not terminate
\x17 → '
\x18 → \xD0
\x19 → m
\x1A → Does not terminate
\x1B → \x13
\x1C → \x1F
\x1D → \x1F
\x1E → \x1F
\x1F → Does not terminate
\x20 → Does not terminate
!    → Does not terminate
"    → Does not terminate
#    → Does not terminate
$    → Does not terminate
%    → Does not terminate
&    → Does not terminate
'    → Does not terminate
(    → Does not terminate
)    → Does not terminate
*    → Does not terminate
+    → +
,    → Does not terminate
-    → Does not terminate
.    → Does not terminate
/    → /
0    → 0
1    → 1
2    → 2
3    → 3
4    → 4
5    → 5
6    → 6
7    → 7
8    → 8
9    → 9
:    → :
;    → ;
<    → <
=    → =
>    → >
?    → ?
@    → Does not terminate
A    → \x8D
B    → Does not terminate
C    → \x83
D    → \xC4
E    → \xB9
F    → Does not terminate
G    → Does not terminate
H    → Does not terminate
I    → Does not terminate
J    → Does not terminate
K    → \x8B
L    → \x8C
M    → \x8D
N    → \x8E
O    → \x8F
P    → l
Q    → q
R    → n
S    → c
T    → Does not terminate
U    → \xB9
V    → n
W    → Does not terminate
X    → l
Y    → Does not terminate
Z    → Does not terminate
[    → k
\    → l
]    → m
^    → n
_    → o
`    → l
a    → m
b    → n
c    → o
d    → l
e    → Does not terminate
f    → Does not terminate
g    → k
h    → l
i    → q
j    → n
k    → c
l    → Does not terminate
m    → \xB9
n    → n
o    → Does not terminate
p    → s
q    → r
r    → s
s    → \x9E
t    → {
u    → {
v    → Does not terminate
w    → \xB9
x    → {
y    → Does not terminate
z    → {
{    → y
|    → \x7F
}    → ~
~    → |
\x7F → }
\x80 → Does not terminate
\x81 → Does not terminate
\x82 → Does not terminate
\x83 → Does not terminate
\x84 → Does not terminate
\x85 → Does not terminate
\x86 → Does not terminate
\x87 → Does not terminate
\x88 → Does not terminate
\x89 → Does not terminate
\x8A → Does not terminate
\x8B → Does not terminate
\x8C → Does not terminate
\x8D → Does not terminate
\x8E → Does not terminate
\x8F → Does not terminate
\x90 → \xD0
\x91 → m
\x92 → Does not terminate
\x93 → \x13
\x94 → Does not terminate
\x95 → Does not terminate
\x96 → Does not terminate
\x97 → \xA7
\x98 → \xD0
\x99 → \x9E
\x9A → Does not terminate
\x9B → \x93
\x9C → \x9F
\x9D → \x9E
\x9E → \x9F
\x9F → Does not terminate
\xA0 → Does not terminate
\xA1 → Does not terminate
\xA2 → Does not terminate
\xA3 → \xA3
\xA4 → Does not terminate
\xA5 → Does not terminate
\xA6 → Does not terminate
\xA7 → Does not terminate
\xA8 → Does not terminate
\xA9 → Does not terminate
\xAA → Does not terminate
\xAB → \xAB
\xAC → \xAC
\xAD → \xAD
\xAE → \xAE
\xAF → \xAF
\xB0 → Does not terminate
\xB1 → \xBD
\xB2 → Does not terminate
\xB3 → \xB3
\xB4 → Does not terminate
\xB5 → \xB9
\xB6 → Does not terminate
\xB7 → \xB7
\xB8 → Does not terminate
\xB9 → \xB1
\xBA → Does not terminate
\xBB → \xBB
\xBC → Does not terminate
\xBD → \xB5
\xBE → \xBE
\xBF → \xBF
\xC0 → \xC0
\xC1 → \xC1
\xC2 → \xC2
\xC3 → \xC3
\xC4 → \xC4
\xC5 → \xC5
\xC6 → \xC6
\xC7 → \xC7
\xC8 → \xC8
\xC9 → \xC9
\xCA → \xCA
\xCB → \xCB
\xCC → \xCC
\xCD → \xCD
\xCE → \xCE
\xCF → \xCF
\xD0 → \xD0
\xD1 → \xD1
\xD2 → \xD2
\xD3 → \xD3
\xD4 → \xD4
\xD5 → \xD5
\xD6 → \xD6
\xD7 → \xD7
\xD8 → \xD8
\xD9 → \xD9
\xDA → \xDA
\xDB → \xDB
\xDC → \xDC
\xDD → \xDD
\xDE → \xDE
\xDF → \xDF
\xE0 → \xE0
\xE1 → \xE1
\xE2 → \xE2
\xE3 → \xE3
\xE4 → \xE4
\xE5 → \xE5
\xE6 → \xE6
\xE7 → \xE7
\xE8 → \xE8
\xE9 → \xE9
\xEA → \xEA
\xEB → \xEB
\xEC → \xEC
\xED → \xED
\xEE → \xEE
\xEF → \xEF
\xF0 → \xF0
\xF1 → \xF1
\xF2 → \xF2
\xF3 → \xF3
\xF4 → \xF4
\xF5 → \xF5
\xF6 → \xF6
\xF7 → \xF7
\xF8 → \xF8
\xF9 → \xF9
\xFA → \xFA
\xFB → \xFB
\xFC → \xFC
\xFD → \xFD
\xFE → \xFE
\xFF → \xFF
Interpreters
- JavaScript interpreter by User:Hakerh400
 - x86 assembly interpreter by User:Bangyen
 - Interpreter in Snap!
 - C++ interpreter by User:None1
 - Haskell interpreter by User:Hakerh400
 - User:Tommyaweosme/2 bits 1 byte HTML interpreter by User:Tommyaweosme
 
See also
- 3 Bits, 3 Bytes
 - 4 bits, 8 bytes
 - 2 Bits and Bytes, a relative variant of this language
 - 2 poets, 1 poem
 - 2 Bits, 1 Byte but 01 and 10 are swapped