nodeus

scr in DE, n-pix in C to skip down. result in DE

Aug 3rd, 2012
75
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. Вычисление адреса в экране.
  2. Суть следующая:
  3. есть DE - адрес в экране
  4. C - количество пиксельных линий которые надо пропустить вниз
  5. Надо сделать п/п, которая получит в DE адрес новой пиксельной линии
  6.  
  7. Что получилось:
  8. Code:
  9. ld  a,d     4   берём уже имеющееся смещение по пикселям вниз
  10. and %00000111   7   маскируем
  11. add a,c     4   добавляем к смещению, т.к. можем перейти через треть или з/м
  12. ld  c,a     4   сохранили полученное значение
  13. and %00111000   7   выделили часть, отвечающую за положение внутри трети экрана
  14. rlca            4   смещаем её в старшие биты
  15. rlca            4  
  16. add a,e     4   добавляем к младшему адресу
  17. ld  e,a     4   сохраняем
  18. sbc a,a     4   если у нас появился CY, значит надо будет делать переход в другую треть
  19. and %01000000   7   заполнили флагом переноса шестой бит аккумулятора
  20. add a,c     4   добавили значения по третям из исходных данных
  21. and %11000000   7   выделили
  22. rrca            4   смещаем в 4-5 бит для адреса экрана
  23. rrca            4   обращаю внимание что полученные трети никуда не сохраняем!
  24. rrca            4
  25. xor c       4   нам надо ещё младшие 3 бита, адрес пиксельной линии
  26. and %11111000   7   по хитрому без промежуточного регистра выделяем её
  27. xor c       4   получили в аккумуляторе
  28. ld  b,a     4   спрятали
  29. ld  a,d     4   из регистра D забираем треть и сам адрес
  30. and %11111000   4   маскируем их
  31. add a,b     4   добавляем спрятанное значение, младшие 3 бита учтены вначале
  32. ld  d,a     4   готово!
Advertisement
Add Comment
Please, Sign In to add comment