*
* 00000000 01000000 01000011 10110111 01001010 01000011 11000011 01011000
* ^^^^^^^^ ^^^^^^^^ ^^^^^^^^| |
- * LIIIIIII LIILIIII I????LII
- * I I I I +-- Amplification (Default: 3)
- * I I I +--------- Remaining chip select line? (but not quite?)
+ * LIIIIIII LIILIIII LIIIILII
+ * I I I | +-- Amplification (Default: 3)
+ * I I I +----- Chip/Module Select lines/EOF?
* I I +----------- Address (HI Byte)
* I +---------------- Chip Select lines A15, A14, A13
* +-------------------- Address (LO Byte)
//!EOF ?!
if ((header[i+2] & 0xf8) != 0xf8)
- cs2 = header[i+2] & 0xf8;
+ cs2 = (header[i+2] & 0xf8) >> 3;
- if (cs2 & 0x40) {
+ if (cs2 & 0x08) {
cs = ((header[i+1] & 0xe0) >> 5) - 2;
} else {
cs = (((header[i+1] & 0xe0) >> 5) | (1 << 3)) - 4;
if (adr == 0)
adr += sizeof(header);
- printf("%02d. hi: 0x%02x, lo: 0x%02x, cs: 0x%02x -> adr: 0x%04x; amp: 0x%02x\n",
- i/3, hi, lo, cs, adr, amp);
+ printf("%02d. hi: 0x%02x, lo: 0x%02x, cs: 0x%02x, cs2: 0x%02x -> adr: 0x%04x; amp: 0x%02x\n",
+ i/3, hi, lo, cs, ((header[i+2] & 0xf8) >> 3), adr, amp);
adrs[i/3] = adr;
if ((header[i+2] & 0xf8) == 0xf8)