#include <stdio.h>
#include <stdlib.h>
//
// Fl Flexowriter code to ASCII
// The documentation says that numerics are part of the lower case set, which doesn't
// seem to match how tapes are punched
// "pi" "sqr" and "omega" are currently ignored
//
//                 pi   sqr
//            00   01   02   03   04   05   06   07   10   11   12   13   14   15   16   17
char uc[] = { 0,   0,   0,  'L', '[', 'N', 'O', '&', '*', 'R',  0,   0,   0,   0,   0,   0,

//                                          ohm
//            20   21   22   23   24   25   26   27   30   31   32   33   34   35   36   37
             ' ', 'J', 'K', '=', 'M', ']',  0,  'P', 'Q', '(',  0, '"',  0 ,  0 , '?', '_',

//            40   41   42   43   44   45   46   47   50   51   52   53   54   55   56   57
             ')', 'A', 'B', 'T', 'D', 'V', 'W', 'G', 'H', 'Z',  0 , '.',  0 ,  0, '\n',  0,

//            60   61   62   63   64   65   66   67   70   71   72   73   74   75   76   77
             ':',  92, 'S', 'C', 'U', 'E', 'F', 'X', 'Y', 'I',  0 , ',',  0 ,  0, '\t',  0
	};

//            00   01   02   03   04   05   06   07   10   11   12   13   14   15   16   17
char lc[] = { 0,  '1', '2', 'l', '4', 'n', 'o', '7', '8', 'r',  0,   0,   0,   0,   0,   0,

//            20   21   22   23   24   25   26   27   30   31   32   33   34   35   36   37
             ' ', 'j', 'k', '3', 'm', '5', '6', 'p', 'q', '9',  0 ,'\'',  0 ,  0 , '+', '-',

//            40   41   42   43   44   45   46   47   50   51   52   53   54   55   56   57
             '0', 'a', 'b', 't', 'd', 'v', 'w', 'g', 'h', 'z',  0 , '.',  0 ,  0, '\n',  0,

//            60   61   62   63   64   65   66   67   70   71   72   73   74   75   76   77
             ';', '$', 's', 'c', 'u', 'e', 'f', 'x', 'y', 'i',  0 , ',',  0 ,  0, '\t',  0
	};

int main(){
unsigned char in, c, out;
int caseflag = 0; //default is LC 
 while(1){
  c = getchar();
  if(feof(stdin)){putchar('\n'); exit(0);}

  if(c == 072){ caseflag = 1;   continue;}
  if(c == 074){ caseflag = 0;   continue;}
  if(caseflag) c = uc[c]; else c = lc[c];
  if(c == 0) continue;
  putchar(c);
 }
}
