]> git.zerfleddert.de Git - 32620_extract/blobdiff - extract.c
skip header only if address is zero
[32620_extract] / extract.c
index 79fd4233036f07d1c2db4f4121671974474f6b06..0e8699c043fcfe83f3013d7a8ffe26ea5f7f04e0 100644 (file)
--- 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",
Impressum, Datenschutz