Если имелось в виду
and #fe - достаточно одной команды
res 0,l вместо трех.
Код:
ld a,high(sqrbase)
add a,h
ld h,a
ld a,l
and $fe ;sets C=0
ld l,a
ld a,(hl)
Здесь аналогично. Флаг переноса и так будет сброшен после команды
add a, h - ведь там, полагаю, переполнения не происходит никогда, раз устанавливается смещение к таблице, а значение регистра h перед этим сбрасывается, если превысило 8. Если правильно понял этот момент - можно упростить ещё одну проверку:
Код:
push hl ;r0 += r3
ld a,h
cp 8
jr nc,loc2
Если значение h не должно превышать восемь - достаточно команды
bit 3,h ну и переход по jr nz вместо jr nc.
Это не вникая в тонкости алгоритма, просто по конкретным кускам кода.