A big patch touching many files... but modifications to each file can be accepted or rejected independently, they are not related. I'm lazy, I didn't want to send many small patches...
shift: better parameter loading, pop/push instead of ld hl,# add hl,sp ld r,(hl) inc hl ld...inc...ld...inc..., use of register a
memmove: pop/push avoids use of ix, add de,bc by ex de,hl add hl,bc ex, instead of using a.
mod,mul,mulchar,div: pop/push for parameters where it is faster, moved some ld r,#0 earlier, where we had an already null register.