.module SMC ; -- Write value C to (HL) B times. PlotHLCTimesB ld (hl),c inc hl djnz PlotHLCTimesB ret OrHLCTimesB ld a,c or (hl) ld (hl),a inc hl djnz OrHLCTimesB ret AndHLCTimesB ld a,c and (hl) ld (hl),a inc hl djnz AndHLCTimesB ret EorHLCTimesB ld a,c xor (hl) ld (hl),a inc hl djnz EorHLCTimesB ret InvertHLTimesB ld a,(hl) cpl ld (hl),a inc hl djnz InvertHLTimesB ret ; -- Write value (IX) to (HL) masked by D (where you can write) and C (where you can't write). PlotHLIXMaskCD ld a,(hl) and c ld (hl),a ld a,(ix) and d or (hl) ld (hl),a ret OrHLIXMaskCD ld a,(ix) and d or (hl) ld (hl),a ret AndHLIXMaskCD ld a,(ix) or c and (hl) ld (hl),a ret EorHLIXMaskCD ld a,(ix) and d xor (hl) ld (hl),a ret InvertHLMaskCD ld a,(hl) xor d ld (hl),a ret .endmodule