Вот моя процедура зеркалирования окна. Если вы видите как её оптимизнуть (не для демостроя, без таблиц), то милости прошу. У нас техническая тема, так что по возможности без эмоций, ладно?

Код:
void Laser2_MIRV (unsigned char col, unsigned char row, unsigned char len, unsigned char hgt) __z88dk_callee
{
  __asm
                  POP   DE
                  POP   BC              ; C = col; B = row
                  CALL  __Laser2_XYtoScr
                  POP   BC              ; C = len; B = hgt
                  PUSH  DE
                  LD    A, C
                  LD    (MIRV_WIDTH$+1), A
                  INC   A
                  SRL   A
                  LD    (MIRV_WIDTH_DIV2$+1), A
MIRV_HLINE$:      PUSH  BC              ; Begin of loop on charlines
                  LD    A, #8
MIRV_LINE8$:      EX    AF, AF
                  LD    (MIRV_SCR_ADR$+1), HL
                  LD    A, L
MIRV_WIDTH$:      ADD   #0
                  LD    E, A
                  LD    D, H
MIRV_WIDTH_DIV2$: LD    B, #0

MIRV_COL_MIRROR$: DEC   E
                  LD    A, (DE)
                  LD    C, (HL)

                  ; ------------------
                  ; 2 bytes mirroring
                  ; ------------------
                  RLA
                  RR    C
                  RLA
                  RR    C
                  RLA
                  RR    C
                  RLA
                  RR    C
                  RLA
                  RR    C
                  RLA
                  RR    C
                  RLA
                  RR    C
                  RLA
                  RR    C
                  ; ------------------

                  RLA
                  LD    (DE), A
                  LD    (HL), C
                  INC   L
                  DJNZ  MIRV_COL_MIRROR$
MIRV_SCR_ADR$:    LD    HL, #0
                  INC   H
                  EX    AF, AF
                  DEC   A
                  JR    NZ, MIRV_LINE8$
                  LD    A, L
                  ADD   #0x20           ; Next charline
                  LD    L, A            ; If carry then jump to next third of screen
                  JR    C, MIRV_CONT_1_3$
                  LD    A, H
                  SUB   #8              ; HL := HL - 0x0800
                  LD    H, A
MIRV_CONT_1_3$:   POP   BC
                  DJNZ  MIRV_HLINE$     ; End of loop on charlines (the same third)
  __endasm;
} //Laser2_MIRV