ABCD

ABCD is an esoteric programming language made by user:Billlam. It's unusable for programming and it's totally Turing incomplete.

Every program has one and only one cell to do anything with.

Examples
For readability, the programs are padded to 64-character rows.

Cat program
There's no loop instruction here, to write a CAT program you must write something like this: CDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCD CDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCD CDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCD CDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCD ...

Output Example
It's too hard to write a program that outputs a loooooong string (The coding will drive you crazy.) so the example just output  to the console.

AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAADAAAAAAAAAAAAAAADBBBBBBBBBBBBBBBBBBDAAAAAAAAD

Hello, World!
Unless you know how to autogenerate programs, that is.

AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAAAAAAADDAAADBBBBBBBBBBBB BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBDBBBBBBBB BBBBDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAAA AAAAAAAAAAAAAAAAAAAAADAAADBBBBBBDBBBBBBBBDBBBBBBBBBBBBBBBBBBBBBB BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBDBBBBBBBBBBBBBBBBBB BBBBBD

Interpreter
Here is an interpreter written in C#. The program is the first line of input. If you pass the  parameter followed by a string, it will generate a program to output that string.

using System; using System.Linq; class ABCD {    static void Main(string[] args) {        char c = '\0'; if (args.Length > 1 && args[0] == "-g") {            string gen = String.Join(" ", args.Skip(1)); for (int i = 0; i < gen.Length; i++) {                if (gen[i] > c)                     Console.Write(new String('A', (int)(gen[i] - c))); else Console.Write(new String('B', (int)(c - gen[i]))); c = gen[i]; Console.Write('D'); }            return; }        string prog = Console.ReadLine; for (int i = 0; i < prog.Length; i++) switch (prog[i]) {                case 'A': c++; break; case 'B': c--; break; case 'C': c = (char)Console.Read; break; case 'D': Console.Write(c); break; }    } }