#include int main( int argc, char *argv[] ) { if ( argc != 2 ) { printf( "usage: %s TCODE filename\n", argv[0] ); return 1; } int tbit = 0; int i; int ctr; char unicode; FILE *tfile; tfile=fopen(argv[1],"rb"); if (!tfile) { printf("Can't open file!"); return 1; } unsigned char tact; unsigned char tnex; fread(&tact, 1, 1, tfile); fread(&tnex, 1, 1, tfile); while(!(feof(tfile)&&tact==0)) { if ((tact >> 7)==0) { tact=tact<<1; if ((tnex >> 7)&0x01==1) tact |= 1; if ((tnex >> 7)&0x01==0) tact &= ~(1); tnex=tnex<<1; tbit++; if (tbit>7) { fread(&tnex, 1, 1, tfile); tbit=0; } if (tact>>4==0b0000) printf(" "); if (tact>>4==0b0001) printf("a"); if (tact>>4==0b0010) printf("e"); if (tact>>4==0b0011) printf("i"); if (tact>>4==0b0100) printf("o"); if (tact>>4==0b0101) printf("u"); if (tact>>4==0b0110) printf("y"); if (tact>>4==0b0111) printf(","); if (tact>>4==0b1000) printf("."); if (tact>>4==0b1001) printf("A"); if (tact>>4==0b1010) printf("E"); if (tact>>4==0b1011) printf("I"); if (tact>>4==0b1100) printf("O"); if (tact>>4==0b1101) printf("U"); if (tact>>4==0b1110) printf("Y"); if (tact>>4==0b1111) printf("\n"); for(i=0;i<4;i++) { tact=tact<<1; if ((tnex >> 7)&0x01==1) tact |= 1; if ((tnex >> 7)&0x01==0) tact &= ~(1); tnex=tnex<<1; tbit++; if (tbit>7) { fread(&tnex, 1, 1, tfile); tbit=0; } } } else { tact=tact<<1; if ((tnex >> 7)&0x01==1) tact |= 1; if ((tnex >> 7)&0x01==0) tact &= ~(1); tnex=tnex<<1; tbit++; if (tbit>7) { fread(&tnex, 1, 1, tfile); tbit=0; } if (tact>>2==0b000000) printf("0"); if (tact>>2==0b000001) printf("1"); if (tact>>2==0b000010) printf("2"); if (tact>>2==0b000011) printf("3"); if (tact>>2==0b000100) printf("4"); if (tact>>2==0b000101) printf("5"); if (tact>>2==0b000110) printf("6"); if (tact>>2==0b000111) printf("7"); if (tact>>2==0b001000) printf("8"); if (tact>>2==0b001001) printf("9"); if (tact>>2==0b001010) printf("q"); if (tact>>2==0b001011) printf("w"); if (tact>>2==0b001100) printf("r"); if (tact>>2==0b001101) printf("t"); if (tact>>2==0b001110) printf("p"); if (tact>>2==0b001111) printf("s"); if (tact>>2==0b010000) printf("d"); if (tact>>2==0b010001) printf("f"); if (tact>>2==0b010010) printf("g"); if (tact>>2==0b010011) printf("h"); if (tact>>2==0b010100) printf("j"); if (tact>>2==0b010101) printf("k"); if (tact>>2==0b010110) printf("l"); if (tact>>2==0b010111) printf("z"); if (tact>>2==0b011000) printf("x"); if (tact>>2==0b011001) printf("c"); if (tact>>2==0b011010) printf("v"); if (tact>>2==0b011011) printf("b"); if (tact>>2==0b011100) printf("n"); if (tact>>2==0b011101) printf("m"); if (tact>>2==0b011110) printf("?"); if (tact>>2==0b011111) printf("!"); if (tact>>2==0b100000) printf("<"); if (tact>>2==0b100001) printf(">"); if (tact>>2==0b100010) printf("("); if (tact>>2==0b100011) printf("\""); if (tact>>2==0b100100) printf("'"); if (tact>>2==0b100101) printf(")"); if (tact>>2==0b100110) printf("*"); if (tact>>2==0b100111) printf("+"); if (tact>>2==0b101000) printf("-"); if (tact>>2==0b101001) printf("="); if (tact>>2==0b101010) printf("Q"); if (tact>>2==0b101011) printf("W"); if (tact>>2==0b101100) printf("R"); if (tact>>2==0b101101) printf("T"); if (tact>>2==0b101110) printf("P"); if (tact>>2==0b101111) printf("S"); if (tact>>2==0b110000) printf("D"); if (tact>>2==0b110001) printf("F"); if (tact>>2==0b110010) printf("G"); if (tact>>2==0b110011) printf("H"); if (tact>>2==0b110100) printf("J"); if (tact>>2==0b110101) printf("K"); if (tact>>2==0b110110) printf("L"); if (tact>>2==0b110111) printf("Z"); if (tact>>2==0b111000) printf("X"); if (tact>>2==0b111001) printf("C"); if (tact>>2==0b111010) printf("V"); if (tact>>2==0b111011) printf("B"); if (tact>>2==0b111100) printf("N"); if (tact>>2==0b111101) printf("M"); if (tact>>2==0b111110) ctr=1; if (tact>>2==0b111111) ctr=2; for(i=0;i<6;i++) { tact=tact<<1; if ((tnex >> 7)&0x01==1) tact |= 1; if ((tnex >> 7)&0x01==0) tact &= ~(1); tnex=tnex<<1; tbit++; if (tbit>7) { fread(&tnex, 1, 1, tfile); tbit=0; } } if (ctr==1) { ctr=0; if (tact>>4==0b0000) printf("/"); if (tact>>4==0b0001) printf("@"); if (tact>>4==0b0010) printf(":"); if (tact>>4==0b0011) printf(";"); if (tact>>4==0b0100) printf("["); if (tact>>4==0b0101) printf("]"); if (tact>>4==0b0110) printf("#"); if (tact>>4==0b0111) printf("^"); if (tact>>4==0b1000) printf("$"); if (tact>>4==0b1001) printf("%%"); if (tact>>4==0b1010) printf("&"); if (tact>>4==0b1011) printf("|"); if (tact>>4==0b1100) printf("_"); if (tact>>4==0b1101) printf("!"); if (tact>>4==0b1110) printf("{"); if (tact>>4==0b1111) printf("}"); for(i=0;i<4;i++) { tact=tact<<1; if ((tnex >> 7)&0x01==1) tact |= 1; if ((tnex >> 7)&0x01==0) tact &= ~(1); tnex=tnex<<1; tbit++; if (tbit>7) { fread(&tnex, 1, 1, tfile); tbit=0; } } } if (ctr==2) { ctr=0; unicode=0b11000; for(i=0;i<3;i++) { unicode=unicode<<1; if ((tact >> 7)&0x01==1) unicode |= 1; if ((tact >> 7)&0x01==0) unicode &= ~(1); tact=tact<<1; if ((tnex >> 7)&0x01==1) tact |= 1; if ((tnex >> 7)&0x01==0) tact &= ~(1); tnex=tnex<<1; tbit++; if (tbit>7) { fread(&tnex, 1, 1, tfile); tbit=0; } } printf("%c",unicode); printf("%c",tact); for(i=0;i<8;i++) { tact=tact<<1; if ((tnex >> 7)&0x01==1) tact |= 1; if ((tnex >> 7)&0x01==0) tact &= ~(1); tnex=tnex<<1; tbit++; if (tbit>7) { fread(&tnex, 1, 1, tfile); tbit=0; } } } } } fclose(tfile); printf("\n"); }