Qwertycode

Qwertycode is an esoteric programming language created by nullbyte00, that has a command and operation for every character on a standard QWERTY keyboard, hence its name. However, the only characters that do not have a command associated with them are whitespace and 0-9, which for obvious reasons can not be used. Qwertycode is similar to brainfuck in that it makes use of a tape, but has many more commands and supports subroutines, looping, conditionals, and gotos.

Commands
Qwertycode has over 50 commands and operators represented by a single character. They are: Although all commands are listed in uppercase, Qwertycode is case-insensitive so lowercase is alright. Whitespace is also ignored, but preferred for readability.

How To
This section will explain how to do simple tasks, such as declaring subroutines.

Assign a value to a byte
When assigning a value to a byte, you simply list the byte you want to assign the value to, followed by an A or C (if you want it constant), then the int value in a group. Here are three examples:

This assigns 65 to the current byte: BA(65) This assigns 5 to the 8th byte: B[7]A(5) This assigns a random value to the current byte: BA(R)

Output the value of a byte
To output the value of a byte, you simple list the byte who's value you want outputted, then either a . or a ` (dpending on whether you want the int value or the ASCII value outputted). Here are two examples:

This assigns 65 to the current byte, and outputs its ASCII value (which is A): BA(65) B. This assigns 66 to the 2nd byte, and outputs its int value (which is 66): B[1]A(66) B[1]`

Use subroutines
To declare a subroutine, you use the ~ followed by a group of numbers which is the name of the subroutine.

This declares a subroutine called 2: ~(2) To then put code inside the subroutine, the group is followed by an opening curly, your code, then a closing curly. Example: ~(2){ UB. } Finally, to make a call to a subroutine, you use the $, followed by a group containing the name of your subroutine. Example: ~(2){ UB. } $(2)

Create a loop
To create a loop, every command you want looped goes between two #s, then a group saying how many times it should loop.

This will output A 10 times: BA(65)
 * 1) B.#(10)

Use gotos
To use a goto, you must first create a label by using the @ character, followed by a group of numbers, which is the name.

This will create a label named 1: @(1) To jump, or goto, that label, use the : character followed by a group containing the name of the label. Example: @(1)'some code goes here':(1) This would of course create an infinite loop however.

Use conditionals
To use conditionals, you use the ? character followed by a condition surrounded in "s. Example: ?"B=(10)" To then execute code if the condition is true, you use a pair of curly brackets. Example: ?"B=(10)"{UB.} There are a limited amount of functions you can perform in a condition. You can check for equality, inequality, etc. See the list of commands for everything you can use.

Examples
Below are a few examples of Qwertycode programs.

Hello World!
BA(72)B. BA(101)B. BA(108)#B.#(2) BA(111)B. BA(32)B. BA(87)B. BA(111)B. BA(114)B. BA(108)B. BA(100)B. BA(33)B.

99 Bottles of Beer
BA(99)> ~(1){ BA(32) B. BA(98) B. BA(111) B. BA(116) B. BA(116) B. BA(108) B. BA(101) B. BA(115) B. BA(32) B. BA(111) B. BA(102) B. BA(32) B. BA(98) B. BA(101) B. BA(101) B. BA(114) B. BA(32) B. BA(111) B. BA(110) B. BA(32) B. BA(116) B. BA(104) B. BA(101) B. BA(32) B. BA(119) B. BA(97) B. BA(108) B. BA(108) B. BA(44) B. BA(32) B. } ~(2){ BA(32) B. BA(98) B. BA(111) B. BA(116) B. BA(116) B. BA(108) B. BA(101) B. BA(115) B. BA(32) B. BA(111) B. BA(102) B. BA(32) B. BA(98) B. BA(101) B. BA(101) B. BA(114) B. BA(33) B. BA(32) B. BA(84) B. BA(97) B. BA(107) B. BA(101) B. BA(32) B. BA(111) B. BA(110) B. BA(101) B. BA(32) B. BA(100) B. BA(111) B. BA(119) B. BA(110) B. BA(44) B. BA(32) B. BA(112) B. BA(97) B. BA(115) B. BA(115) B. BA(32) B. BA(105) B. BA(116) B. BA(32) B. BA(97) B. BA(114) B. BA(111) B. BA(117) B. BA(110) B. BA(100) B. BA(44) B. BA(32) B. } ~(3){ BA(32) B. BA(98) B. BA(111) B. BA(116) B. BA(116) B. BA(108) B. BA(101) B. BA(115) B. BA(32) B. BA(111) B. BA(102) B. BA(32) B. BA(98) B. BA(101) B. BA(101) B. BA(114) B. BA(32) B. BA(111) B. BA(110) B. BA(32) B. BA(116) B. BA(104) B. BA(101) B. BA(32) B. BA(119) B. BA(97) B. BA(108) B. BA(108) B. BA(33) B. }
 * 1) < B`>$(1)< B`>$(2)< B- B`>$(3)_ #(99)

CAT Program
@(1)B,B.:(1)

Alphabet
B[1]A(32) B[2]A(91) B[3]A(93) B[4]A(65) B[5]A(83) B[6]A(67) B[7]A(73) B[8]A(60) B[9]A(62) B[10]A(84) B[11]A(66) B[12]A(76) B[13]A(69) B[14]A(82) B[15]A(68) B[16]A(47) B[17]A(32) B[18]A(72) B[19]A(67) B[20]A(79) B[21]A(34) B[22]A(61) B[23]A(49) B[0]A(65) B[8]. B[10]. B[4]. B[11]. B[12]. B[13]. B[17]. B[11]. B[20]. B[14]. B[15]. B[13]. B[14]. B[22]. B[21]. B[23]. B[21]. B[9]. B[8]. B[10]. B[14]. B[9]. B[8]. B[10]. B[15]. B[9]. B[8]. B[11]. B[9]. B[19]. B[18]. B[4]. B[14]. B[8]. B[11]. B[17]. B[16]. B[9]. B[8]. B[10]. B[15]. B[17]. B[16]. B[9]. B[8]. B[10]. B[15]. B[9]. B[8]. B[11]. B[9]. B[4]. B[5]. B[6]. B[8]. B[11]. B[17]. B[16]. B[9]. B[8]. B[10]. B[15]. B[17]. B[16]. B[9]. # B[8]. B[10]. B[14]. B[9]. B[8]. B[10]. B[15]. B[9]. B[0]. B[8]. B[10]. B[15]. B[17]. B[16]. B[9]. B[8]. B[10]. B[15]. B[9]. B[0]` B[8]. B[10]. B[15]. B[17]. B[16]. B[9]. B[8]. B[10]. B[14]. B[17]. B[16]. B[9]. B[0]+ # (26) B[8]. B[10]. B[4]. B[11]. B[12]. B[13]. B[17]. B[16]. B[9].
 * 1) B[7].#(2)

External resources

 * Qwertycode web-based interpreter