我建议从一个例程开始读取电路板的一行并生成两个新的行缓冲区 H 和 L 以便如果两个或多个 (bin n+1, bit n, bit n-1) 被设置在原始行中,如果在原始行中设置了奇数个 (bin n+1, bit n, bit n-1),则将设置 L 的 bit 'n'。
总共分配三对行缓冲区(称它们为 H0..H2 和 L0..L2)。获取源文件的每一行并计算一对缓冲区并将其存储在一个 HL 对中,保留它和前两个。检查所有六个缓冲区中的一个单词将揭示原始矩阵中的 32 个单元中的哪些应该是活的,当且仅当它们以前是活的,而无论以前的状态如何,哪些应该是活的。
For optimal performance in machine code, the three pairs of buffers may be interleaved; this may make it possible to achieve an execution speed of less than two cycles per pixel. Perhaps overkill at 52MHz (with only 12288 pixels, that would be a frame rate of ~4000fps) but speed is cool.