Codon

Codon is an esolang created by User:Dtp09. It has about the same concept as RNA with a different syntax. Codon uses mRNA as programs that are read as codons and amino acids which function as opcodes.
==Protein Synthesis and RNA==
Protein synthesis is a biological process within cells that takes genes from DNA and synthesizes proteins with said genes. Proteins are comprised of many amino acids bound together via peptide bonds. DNA within the nucleus gets copied into single-stranded RNA that carries the information for which amino acids belong in the protein and in what order.
The basic process looks like this:
# RNA Polymerase transcribes a group of DNA into mRNA.
# mRNA exits the nucleus and enters into a ribosome.
# tRNA translates groups of three nucleotides in the mRNA (known as codons) into amino acids.
# The amino acids bind to each other as translation happens.
# Once there is a "Stop" codon, the protein stops being synthesized.
This idea of certain combinations of codons referring to certain amino acids is what the language is about. The genetic info you type in is read as codons, and the amino acids corresponding are treated as opcodes and operands in a program.
===Codon Chart===
You can also search one up if you don't like this one.
First Base	Second Base 	Second Base	Second Base 	Second Base	Third Base
First Base	U 	C 	A 	G 	Third Base
U 	Phenylalanine	Serine 	Tyrosine 	Cysteine 	U
U 	Phenylalanine	Serine 	Tyrosine 	Cysteine 	C
U 	Leucine 	Serine 	Stop 	Stop 	A
U 	Leucine 	Serine 	Stop 	Tryptophan 	G
C 	Leucine 	Proline 	Histidine 	Arginine 	U
C 	Leucine 	Proline 	Histidine 	Arginine 	C
C 	Leucine 	Proline 	Glutamine 	Arginine 	A
C 	Leucine 	Proline 	Glutamine 	Arginine 	G
A 	Isoleucine 	Threonine 	Asparagine 	Serine 	U
A 	Isoleucine 	Threonine 	Asparagine 	Serine 	C
A 	Isoleucine 	Threonine 	Lysine 	Arginine 	A
A 	Methionine 	Threonine 	Lysine 	Arginine 	G
G 	Valine 	Alanine 	Aspartic Acid	Glycine 	U
G 	Valine 	Alanine 	Aspartic Acid	Glycine 	C
G 	Valine 	Alanine 	Glutamic Acid	Glycine 	A
G 	Valine 	Alanine 	Glutamic Acid	Glycine 	G
==Language==
===Syntax===
* Whitespaces are ignored
* Line comments can be declared with #
* Base letters are case insensitive
* The only characters allowed outside of a comment are U, C, A, G and whitespaces.
* Anything not between the first Methionine codon and the first Stop codon will be ignored.
===Structure===
Codon is a cell-based language. The cells can hold any decimal number. Codon also has two special registers, A and B, and a comparison flag.
===Opcodes===
#	Amino Acid 	Description
0	Alanine 	Swap A and B
1	Arginine 	Clone A to B
2	Asparagine 	Clone cell pointed by A to A
3	Aspartic Acid	Clone A to cell pointed by B
4	Cysteine 	Flip comparison flag
5	Glutamine 	Load immediate value to A (2 codons, max value 399)
6	Glutamic Acid	Load immediate value to A (4 codons, max value 159999)
7	Glycine 	Jump to relative codon indicated by A if the comparison flag is set
8	Histidine 	Clone a value from user input to A
9	Isoleucine 	Clone the value in register A to output as a Unicode character
A	Leucine 	Store A + B to A
B	Lysine 	Store A - B to A
C	Methionine 	Terminate Program
D	Phenylalanine	Store A * B to A
E	Proline 	Store A / B to A
F	Serine 	Round A to the nearest integer
G	Threonine 	Negate the value in A
H	Tryptophan 	Set comparison flag if A > B
I	Tyrosine 	Set comparison flag if A < B
J	Valine 	Set comparison flag if A == B
===Immediate Values===
Glutamine and Glutamic Acid load values from the program directly into register A. Glutamine reads the following 2 codons, and Glutamic Acid reads 4. Immediate values are represented in base20, with the order of digits being the amino acids' names in alphabetical order. This means Alanine would be 0, and Valine would be 19. The Opcode chart also shows these numbers.
===Interpreter===
Interpreter written in JavaScript by User:Dtp09 here.
==Examples==
===Hello, World!===
 AUG
 CAA GAU AUG
 AUU #H
 CAA CAA CGU
 AUU #He
 CAA CAA CAU
 AUU AUU #Hell
 CAA CAA AAA
 AUU #Hello
 CAA AAU UGU
 AUU #Hello,
 CAA CGU AUG
 AUU #Hello,(0x20)
 CAA UGU GGU
 AUU #Hello, W
 CAA CAA AAA
 AUU #Hello, Wo
 CAA CAA CCU
 AUU #Hello, Wor
 CAA CAA CAU
 AUU #Hello, Worl
 CAA CAA GCU
 AUU #Hello, World
 CAA CGU UUU
 AUU #Hello, World!
 UAA
===Cat program===
 AUG
 CAU #input
 GCU #swap input to b
 CAA GCU GCU #0 to a
 GUU #input == 0
 UGU #input != 0
 CAA GCU AAU #load 2
 GGU #if input != 0 then skip
 AUG #exit if input is 0
 GCU #swap input to A
 AUU #output the input
 CAA GCU UAU #18
 ACU #-18
 GGU #loop back to start
 UAA
Category:Languages
Category:2023
Category:Implemented
Category:Cell-based
Category:Thematic