blob: 1040ef0c509727ea7cb3a333069851aa45eb8d7a [file]
.program dbi_raw
.side_set 1 opt
; raw serial, nothing special
.wrap_target
out pins, 1 side 0
nop side 1
.wrap
; pixel doubling, "borrowed" from PicoSystem
.program dbi_pixel_double
.side_set 1 opt
.wrap_target
pull ; 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)
p1:
out pins, 1 side 0 ; output bit, clear clock
jmp !osre p1 side 1 ; if still bits in osr then jump back to start of loop and clock in data
; duplicate first pixel
mov osr, x ; move pixel data back into osr from register x
out null, 16 ; discard second pixel
p1d:
out pins, 1 side 0 ; output bit, clear clock
jmp !osre p1d side 1 ; if still bits in osr then jump back to start of loop and clock in data
; write second pixel
mov osr, y ; move pixel data back into osr from register y
out null, 16 ; discard the 16-bits of dummy data from the mov
p2:
out pins, 1 side 0 ; output bit, clear clock
jmp !osre p2 side 1 ; if still bits in osr then jump back to start of loop and clock in data
; duplicate second pixel
mov osr, y ; move pixel data back into osr from register y
out null, 16 ; discard as above..
p2d:
out pins, 1 side 0 ; output bit, clear clock
jmp !osre p2d side 1 ; if still bits in osr then jump back to start of loop and clock in data
.wrap