X-Git-Url: http://gitweb.hachti.de/?a=blobdiff_plain;f=pc-tools%2Fldc2%2Fsrc%2Fsilent_code.cpp;fp=pc-tools%2Fldc2%2Fsrc%2Fsilent_code.cpp;h=0c00a322fcce869b96718bcf1af1d88d4ae76fca;hb=97b26985c0190e2fded0f098819a23e892b381f0;hp=0000000000000000000000000000000000000000;hpb=70896a91a15781c49bce37b0101466c83c51dd24;p=h316.git diff --git a/pc-tools/ldc2/src/silent_code.cpp b/pc-tools/ldc2/src/silent_code.cpp new file mode 100644 index 0000000..0c00a32 --- /dev/null +++ b/pc-tools/ldc2/src/silent_code.cpp @@ -0,0 +1,57 @@ +#include "silent_code.hh" + +//#include + +unsigned char silent_demangle (unsigned char in) +{ + if (in & 64) + switch (in) { + case 0174: + return 05; + break; + case 0374: + return 045; + break; + case 0175: + return 012; + break; + case 0375: + return 052; + break; + case 0176: + return 021; + break; + case 0376: + return 061; + break; + case 0177: + return 023; + break; + case 0377: + return 063; + break; + default: // Illegal branch + return 0; + break; + } else { + if (in & 128) + in |= 32; + return in; + } + return 0; // Never executed +} + +unsigned short combine466 (unsigned char *raw) { + unsigned short r1, r2, r3; + unsigned short result=0; + r1 = silent_demangle ((raw)[0]) & 017; + r2 = silent_demangle ((raw)[1]) & 077; + r3 = silent_demangle ((raw)[2]) & 077; + + result=r3; + result|=r2<<6; + result|=r1<<12; + // printf ("data: %02x %02x %02x %04x \n",r1,r2,r3,result); + return result; +} +