X-Git-Url: https://git.zerfleddert.de/cgi-bin/gitweb.cgi/32620_extract/blobdiff_plain/0263d8ee5413ee00e518d6c222bc7edd4bd7893d..948342d1e4a54233400226fbafd1e7584a5affa4:/extract.c diff --git a/extract.c b/extract.c index 79fd423..0e8699c 100644 --- a/extract.c +++ b/extract.c @@ -34,7 +34,7 @@ int main(int argc, char **argv) { uint8_t header[64]; uint32_t adrs[(64/3)+1] = { 0 }; - uint8_t last_cs = 0; + uint8_t cs2 = 0; int fd; int r; int i; @@ -74,23 +74,22 @@ int main(int argc, char **argv) uint32_t adr; lo = header[i]; - if ((header[i+2] & 0xf8) & 0x40) { + hi = header[i+1] & 0x1f; + + //!EOF ?! + if ((header[i+2] & 0xf8) != 0xf8) + cs2 = header[i+2] & 0xf8; + + if (cs2 & 0x40) { cs = ((header[i+1] & 0xe0) >> 5) - 2; } else { cs = (((header[i+1] & 0xe0) >> 5) | (1 << 3)) - 4; } - //EOF?! - if ((header[i+2] & 0xf8) == 0xf8) - cs = last_cs; - else - last_cs = cs; - - hi = header[i+1] & 0x1f; amp = header[i+2] & 0x3; adr = ((hi << 8) | lo) + (cs * 8192); - if (cs == 0) + if (adr == 0) adr += sizeof(header); printf("%02d. hi: 0x%02x, lo: 0x%02x, cs: 0x%02x -> adr: 0x%04x; amp: 0x%02x\n",