The Perl INTERCAL compiler

... Character Sets

EBCDIC

Normally, the compiler requires the program source to be in EBCDIC, although there are compiler options to translate from ASCII or Baudot. Since there isn't such thing as a standard EBCDIC, we have designed our own non-standard one. The principle is simple: for each character, we selected a code which was used for that character by at least one IBM terminal. However, to guarantee incompatibility, our set differs in at least one character from any IBM hardware for which we have been able to find documentation.

Here's the character table:
+0123456789abcdef
00        BSPTABLF  CR  
10                
20                
30                
40SP         ¢.<(+!
50&         ]$*);¬
60-/   xor    |,%_>?
70          :#@'="
80 abcdefghi      
90 jklmnopqr  { [ 
a0 ~stuvwxyz     ®
b0^£  ©           
c0 ABCDEFGHI      
d0 JKLMNOPQR  }   
e0  STUVWXYZ      
f00123456789     DEL

Baudot

While the compiler and runtime accept ASCII and EBCDIC for input/output, internally everything is represented in extended Baudot. The "letters" and "figures" sets are identical to the standard Baudot, but we have a nonstandard convention that shifting to letters while already in letters causes a shift to lowercase letters, and shifting to figures while already in figures causes a shift to a set containing special characters. Thus to guarantee uppercase letters one woule first shift to figures and then to letters, for example. If this extended Baudot is sent to a teletype which understands standard Baudot, the result will be a text in ALL CAPS with some of the symbols it cannot print replaced with others it can.

Here's the character table:
CodeUppercaseLowercaseFiguresSymbols
00Invalid code
01Ee3¢
02Line Feed
03Aa-+
04Space
05SsBell\
06Ii8#
07Uu7=
08Carriage Return
09Dd$*
10Rr4{
11Jj'~
12Nn,xor
13Ff!|
14Cc:^
15Kk(<
16Tt5[
17Zz"}
18Ww)>
19Ll2]
20HhInvalidbackspace
21Yy6@
22Pp0Invalid
23Qq1£
24Oo9¬
25Bb?delete
26Gg&Invalid
27FiguresSymbols
28Mm.%
29Xx/_
30Vv;Invalid
31LowercaseUppercase


Back