| .program dbi_raw |
| .side_set 1 opt |
| |
| ; raw serial, nothing special |
| .wrap_target |
| out x, 8 side 1 |
| mov pins, x side 0 |
| .wrap |
| |
| ; pixel doubling, "borrowed" from PicoSystem |
| .program dbi_pixel_double |
| .side_set 1 opt |
| |
| .wrap_target |
| |
| pull side 1 ; fetch two pixels |
| mov x, osr ; both pixels in x register |
| out y, 16 ; second pixel in y register |
| |
| ; write first pixel (still in osr) |
| out pins, 8 side 0 |
| nop side 1 |
| out pins, 8 side 0 |
| |
| ; duplicate first pixel |
| |
| mov osr, x side 1 ; move pixel data back into osr from register x |
| out null, 16 ; discard second pixel |
| |
| out pins, 8 side 0 |
| nop side 1 |
| out pins, 8 side 0 |
| |
| ; write second pixel |
| |
| mov osr, y side 1 ; move pixel data back into osr from register y |
| out null, 16 ; discard the 16-bits of dummy data from the mov |
| |
| out pins, 8 side 0 |
| nop side 1 |
| out pins, 8 side 0 |
| |
| ; duplicate second pixel |
| |
| mov osr, y side 1 ; move pixel data back into osr from register y |
| out null, 16 ; discard as above.. |
| |
| out pins, 8 side 0 |
| nop side 1 |
| out pins, 8 side 0 |
| |
| .wrap |