Varicode is a self-synchronizing code for use in PSK31. It supports all ASCII characters, but the characters used most frequently in English have shorter codes. The space between characters is indicated by a 00 sequence, an implementation of Fibonacci coding. Originally created for speeding up real-time keyboard-to-keyboard exchanges over low bandwidth links, Varicode is freely available.

Limitations

  • Varicode provides somewhat weaker compression in languages other than English that use same characters as in English.

Varicode table

Control characters

{| class="wikitable" style="text-align: center"

|-

! Varicode !! Oct !! Dec !! Hex !! Abbr !! Description

|-

|1010101011 || 000 || 0 || 00 || NUL || Null character

|-

|1011011011 || 001 || 1 || 01 || SOH || Start of Header

|-

|1011101101 || 002 || 2 || 02 || STX || Start of Text

|-

|1101110111 || 003 || 3 || 03 || ETX || End of Text

|-

|1011101011 || 004 || 4 || 04 || EOT || End of Transmission

|-

|1101011111 || 005 || 5 || 05 || ENQ || Enquiry

|-

|1011101111 || 006 || 6 || 06 || ACK || Acknowledgment

|-

|1011111101 || 007 || 7 || 07 || BEL || Bell

|-

|1011111111 || 010 || 8 || 08 || BS || Backspace

|-

|11101111 || 011 || 9 || 09 || HT || Horizontal Tab

|-

|11101 || 012 || 10 || 0A || LF || Line feed

|-

|1101101111 || 013 || 11 || 0B || VT || Vertical Tab

|-

|1011011101 || 014 || 12 || 0C || FF || Form feed

|-

|11111 || 015 || 13 || 0D || CR || Carriage return

|-

|1101110101 || 016 || 14 || 0E || SO || Shift Out

|-

|1110101011 || 017 || 15 || 0F || SI || Shift In

|-

|1011110111 || 020 || 16 || 10 || DLE || Data Link Escape

|-

|1011110101 || 021 || 17 || 11 || DC1 || Device Control 1 (XON)

|-

|1110101101 || 022 || 18 || 12 || DC2 || Device Control 2

|-

|1110101111 || 023 || 19 || 13 || DC3 || Device Control 3 (XOFF)

|-

|1101011011 || 024 || 20 || 14 || DC4 || Device Control 4

|-

|1101101011 || 025 || 21 || 15 || NAK || Negative Acknowledgement

|-

|1101101101 || 026 || 22 || 16 || SYN || Synchronous Idle

|-

|1101010111 || 027 || 23 || 17 || ETB || End of Trans. Block

|-

|1101111011 || 030 || 24 || 18 || CAN || Cancel

|-

|1101111101 || 031 || 25 || 19 || EM || End of Medium

|-

|1110110111 || 032 || 26 || 1A || SUB || Substitute

|-

|1101010101 || 033 || 27 || 1B || ESC || Escape

|-

|1101011101 || 034 || 28 || 1C || FS || File Separator

|-

|1110111011 || 035 || 29 || 1D || GS || Group Separator

|-

|1011111011 || 036 || 30 || 1E || RS || Record Separator

|-

|1101111111 || 037 || 31 || 1F || US || Unit Separator

|-

|1110110101 || 177 || 127 || 7F || DEL || Delete

|}

Printable characters

{|

|- valign="top"

|

{| class="wikitable" style="text-align: center"

|-

!Varicode !! Oct !! Dec !! Hex !! Glyph

|-

|1 || 040 || 32 || 20 || SP

|-

|111111111 || 041 || 33 || 21 || !

|-

|101011111 || 042 || 34 || 22 || "

|-

|111110101 || 043 || 35 || 23 || #

|-

|111011011 || 044 || 36 || 24 || $

|-

|1011010101 || 045 || 37 || 25 || %

|-

|1010111011 || 046 || 38 || 26 || &

|-

|101111111 || 047 || 39 || 27 || '

|-

|11111011 || 050 || 40 || 28 || (

|-

|11110111 || 051 || 41 || 29 || )

|-

|101101111 || 052 || 42 || 2A || *

|-

|111011111 || 053 || 43 || 2B || +

|-

|1110101 || 054 || 44 || 2C || ,

|-

|110101 || 055 || 45 || 2D || -

|-

|1010111 || 056 || 46 || 2E || .

|-

|110101111 || 057 || 47 || 2F || /

|-

|10110111 || 060 || 48 || 30 || 0

|-

|10111101 || 061 || 49 || 31 || 1

|-

|11101101 || 062 || 50 || 32 || 2

|-

|11111111 || 063 || 51 || 33 || 3

|-

|101110111 || 064 || 52 || 34 || 4

|-

|101011011 || 065 || 53 || 35 || 5

|-

|101101011 || 066 || 54 || 36 || 6

|-

|110101101 || 067 || 55 || 37 || 7

|-

|110101011 || 070 || 56 || 38 || 8

|-

|110110111 || 071 || 57 || 39 || 9

|-

|11110101 || 072 || 58 || 3A || :

|-

|110111101 || 073 || 59 || 3B || ;

|-

|111101101 || 074 || 60 || 3C || <

|-

|1010101 || 075 || 61 || 3D || =

|-

|111010111 || 076 || 62 || 3E || >

|-

|1010101111 || 077 || 63 || 3F || ?

|}

|&nbsp;

|

{| class="wikitable" style="text-align: center"

|- valign="bottom"

!Varicode !! Oct !! Dec !! Hex !! Glyph

|-

|1010111101 || 100 || 64 || 40 || @

|-

|1111101 || 101 || 65 || 41 || A

|-

|11101011 || 102 || 66 || 42 || B

|-

|10101101 || 103 || 67 || 43 || C

|-

|10110101 || 104 || 68 || 44 || D

|-

|1110111 || 105 || 69 || 45 || E

|-

|11011011 || 106 || 70 || 46 || F

|-

|11111101 || 107 || 71 || 47 || G

|-

|101010101 || 110 || 72 || 48 || H

|-

|1111111 || 111 || 73 || 49 || I

|-

|111111101 || 112 || 74 || 4A || J

|-

|101111101 || 113 || 75 || 4B || K

|-

|11010111 || 114 || 76 || 4C || L

|-

|10111011 || 115 || 77 || 4D || M

|-

|11011101 || 116 || 78 || 4E || N

|-

|10101011 || 117 || 79 || 4F || O

|-

|11010101 || 120 || 80 || 50 || P

|-

|111011101 || 121 || 81 || 51 || Q

|-

|10101111 || 122 || 82 || 52 || R

|-

|1101111 || 123 || 83 || 53 || S

|-

|1101101 || 124 || 84 || 54 || T

|-

|101010111 || 125 || 85 || 55 || U

|-

|110110101 || 126 || 86 || 56 || V

|-

|101011101 || 127 || 87 || 57 || W

|-

|101110101 || 130 || 88 || 58 || X

|-

|101111011 || 131 || 89 || 59 || Y

|-

|1010101101 || 132 || 90 || 5A || Z

|-

|111110111 || 133 || 91 || 5B || <nowiki>[</nowiki>

|-

|111101111 || 134 || 92 || 5C || \

|-

|111111011 || 135 || 93 || 5D || [[Bracket|<nowiki>]</nowiki>]]

|-

|1010111111 || 136 || 94 || 5E || ^

|-

|101101101 || 137 || 95 || 5F || _

|}

|&nbsp;

|

{| class="wikitable" style="text-align: center"

|- valign="bottom"

!Varicode !! Oct !! Dec !! Hex !! Glyph

|-

|1011011111 || 140 || 96 || 60 || '

|-

|1011 || 141 || 97 || 61 || a

|-

|1011111 || 142 || 98 || 62 || b

|-

|101111 || 143 || 99 || 63 || c

|-

|101101 || 144 || 100 || 64 || d

|-

|11 || 145 || 101 || 65 || e

|-

|111101 || 146 || 102 || 66 || f

|-

|1011011 || 147 || 103 || 67 || g

|-

|101011 || 150 || 104 || 68 || h

|-

|1101 || 151 || 105 || 69 || i

|-

|111101011 || 152 || 106 || 6A || j

|-

|10111111 || 153 || 107 || 6B || k

|-

|11011 || 154 || 108 || 6C || l

|-

|111011 || 155 || 109 || 6D || m

|-

|1111 || 156 || 110 || 6E || n

|-

|111 || 157 || 111 || 6F || o

|-

|111111 || 160 || 112 || 70 || p

|-

|110111111 || 161 || 113 || 71 || q

|-

|10101 || 162 || 114 || 72 || r

|-

|10111 || 163 || 115 || 73 || s

|-

|101 || 164 || 116 || 74 || t

|-

|110111 || 165 || 117 || 75 || u

|-

|1111011 || 166 || 118 || 76 || v

|-

|1101011 || 167 || 119 || 77 || w

|-

|11011111 || 170 || 120 || 78 || x

|-

|1011101 || 171 || 121 || 79 || y

|-

|111010101 || 172 || 122 || 7A || z

|-

|1010110111 || 173 || 123 || 7B || {

|-

|110111011 || 174 || 124 || 7C || Vertical bar|

|-

|1010110101 || 175 || 125 || 7D || }

|-

|1011010111 || 176 || 126 || 7E || ~

|}

|}

Character lengths

Beginning with the single-bit code "1", valid varicode values may be formed by prefixing a "1" or "10" to a shorter code. Thus, the number of codes of length n is equal to the Fibonacci number F<sub>n</sub>. Varicode uses the 88 values of lengths up to 9 bits, and 40 of the 55 codes of length 10.

As transmitted, the codes are two bits longer due to the trailing delimiter 00.

{| class="wikitable"

|+ASCII characters by varicode length

! Bits || Codes || Characters

|-

| 1 || 1 || SP

|-

| 2 || 1 || e

|-

| 3 || 2 || o t

|-

| 4 || 3 || a i n

|-

| 5 || 5 || LF CR l r s

|-

| 6 || 8 || - c d f h m p u

|-

| 7 || 13 ||, . = A E I S T b g v w y

|-

| 8 || 21 || HT ( ) 0 1 2 3 : B C D F G L M N O P R k x

|-

| 9 || 34 || ! " # $ ' * + / 4 5 6 7 8 9 ; &lt; &gt; H J K Q U V W X Y [ \ ] _ j q z

|-

| 10 || 40 || NUL SOH STX ETX EOT ENQ ACK BEL BS VT FF SO SI DLE DC1 DC2 DC3 DC4 NAK SYN ETB CAN EOM SUB ESC FS GS RS US % & ? @ Z ^ ` { } ~ DEL

|}

References