nodeus

down hl / up hl

Aug 3rd, 2012
94
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. Расчет адреса следующей/предыдущей пиксельной строки экрана, DOWN HL, UP HL — широко используемые при программировании графики процедуры для перехода к следующей и предыдущей пиксельной строке экрана с учётом нелинейной раскладки видеопамяти, то есть с переходом между строками знакомест и третями экрана.
  2. Из названия процедуры следует, что адрес находится в регистровой паре HL. Также используются варианты этой процедуры для других регистровых пар. Существует несколько версий процедуры, отличающихся размером и быстродействием, а также оформлением в виде подпрограммы или макроса. Время выполнения процедуры зависит от адреса текущей пиксельной строки. В случае реализации функционала в виде отдельной процедуры, условные переходы необходимо заменить на условный возврат (JR Z,EXIT -> RET Z).
  3.  
  4. ;В этом варианте процедуры также используется флаг переноса.
  5. ;Он установлен, если был переход к следующей строке знакомест.
  6.  
  7. ;Время выполнения этой версии кода в тактах:
  8. ; 27 переход в пределах строки знакомест
  9. ; 49 переход в следующую строку знакомест
  10. ; 59 переход в следующую треть экрана
  11.  
  12. DOWN_HL:
  13.      INC H
  14.      LD A,H
  15.      AND 7
  16.      JR NZ,EXIT ;CY=0
  17.      LD A,L
  18.      ADD A,32
  19.      LD L,A
  20.      JR C,EXIT  ;CY=1
  21.      LD A,H
  22.      ADD A,-8
  23.      LD H,A     ;CY=1
  24. EXIT:
  25.  
  26. UP_HL:
  27.      LD A,H
  28.      DEC H
  29.      AND 7
  30.      JR NZ,EXIT
  31.      LD A,L
  32.      SUB 32
  33.      LD L,A
  34.      JR C,EXIT
  35.      LD A,H
  36.      ADD A,8
  37.      LD H,A
  38. EXIT:
Advertisement
Add Comment
Please, Sign In to add comment