MOV count, #40 ' bytes per line wvloop RDBYTE pixels, ptr ' read byte TEST pixels, #$80 wc ' c = MSB if_c XOR pixels, H_280 ' move MSB to LSB of D ADD wveven, pixels ' add pixel & palette offsets MOV wveven, weven0 ' reset for next loop (pipeline abuse) wveven WAITVID paleven+0, plut+0 ADD ptr, #1 RDBYTE pixels, ptr ' read byte TEST pixels, #$80 wc ' c = MSB if_c XOR pixels, H_280 ' move MSB to LSB of D ADD wvodd, pixels ' add pixel & palette offsets MOV wvodd, wodd0 ' reset for next loop (pipeline abuse) wvodd WAITVID palodd+0, plut+0 ADD ptr, #1 DJNZ count, #wvloop wveven0 WAITVID paleven, plut wvodd0 WAITVID palodd, plut paleven LONG %%3330_3130_0310_0000 ' palette tables LSB = even column, MSB = 0 LONG %%3330_0230_3110_0000 ' LSB = even column, MSB = 1 palodd LONG %%3330_0310_3130_0000 ' LSB = odd column, MSB = 0 LONG %%3330_3110_0230_0000 ' LSB = even column, MSB = 1 plut LONG %%0000000 ' pixel lookup table, maps 1bpp to 2bpp LONG %%0000002 ' handles odd/even pixel to color LONG %%0000010 ' and adjacent pixels to white LONG %%0000033 ' does not handle adjacent pixel between bytes LONG %%0000200 LONG %%0000202 LONG %%0000330 LONG %%0000333 LONG %%0001000 LONG %%0001002 LONG %%0001010 LONG %%0001033 LONG %%0003300 LONG %%0003302 LONG %%0003330 LONG %%0003333 LONG %%0020000 LONG %%0020002 LONG %%0020010 LONG %%0020033 LONG %%0020200 LONG %%0020202 LONG %%0020330 LONG %%0020333 LONG %%0033000 LONG %%0033002 LONG %%0033010 LONG %%0033033 LONG %%0033300 LONG %%0033302 LONG %%0033330 LONG %%0033333 LONG %%0100000 LONG %%0100002 LONG %%0100010 LONG %%0100033 LONG %%0100200 LONG %%0100202 LONG %%0100330 LONG %%0100333 LONG %%0101000 LONG %%0101002 LONG %%0101010 LONG %%0101033 LONG %%0103300 LONG %%0103302 LONG %%0103330 LONG %%0103333 LONG %%0330000 LONG %%0330002 LONG %%0330010 LONG %%0330033 LONG %%0330200 LONG %%0330202 LONG %%0330330 LONG %%0330333 LONG %%0333000 LONG %%0333002 LONG %%0333010 LONG %%0333033 LONG %%0333300 LONG %%0333302 LONG %%0333330 LONG %%0333333 LONG %%2000000 LONG %%2000002 LONG %%2000010 LONG %%2000033 LONG %%2000200 LONG %%2000202 LONG %%2000330 LONG %%2000333 LONG %%2001000 LONG %%2001002 LONG %%2001010 LONG %%2001033 LONG %%2003300 LONG %%2003302 LONG %%2003330 LONG %%2003333 LONG %%2020000 LONG %%2020002 LONG %%2020010 LONG %%2020033 LONG %%2020200 LONG %%2020202 LONG %%2020330 LONG %%2020333 LONG %%2033000 LONG %%2033002 LONG %%2033010 LONG %%2033033 LONG %%2033300 LONG %%2033302 LONG %%2033330 LONG %%2033333 LONG %%3300000 LONG %%3300002 LONG %%3300010 LONG %%3300033 LONG %%3300200 LONG %%3300202 LONG %%3300330 LONG %%3300333 LONG %%3301000 LONG %%3301002 LONG %%3301010 LONG %%3301033 LONG %%3303300 LONG %%3303302 LONG %%3303330 LONG %%3303333 LONG %%3330000 LONG %%3330002 LONG %%3330010 LONG %%3330033 LONG %%3330200 LONG %%3330202 LONG %%3330330 LONG %%3330333 LONG %%3333000 LONG %%3333002 LONG %%3333010 LONG %%3333033 LONG %%3333300 LONG %%3333302 LONG %%3333330 LONG %%3333333