Важная информация

User Tag List

Страница 65 из 110 ПерваяПервая ... 616263646566676869 ... ПоследняяПоследняя
Показано с 641 по 650 из 1094

Тема: ЭТЮДЫ

  1. #641
    Master
    Регистрация
    31.01.2007
    Адрес
    Москва
    Сообщений
    716
    Спасибо Благодарностей отдано 
    7
    Спасибо Благодарностей получено 
    46
    Поблагодарили
    33 сообщений
    Mentioned
    7 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    если так принципиально
    Код:
    	ld a,(m1)
    	xor #01
    	jr z,.l1
    	inc l
    .l1	
    	ld (m1),a
    переменные к коде моветон
    Последний раз редактировалось krt17; 17.05.2016 в 23:51.

  2. #642
    Activist Аватар для AndTorp
    Регистрация
    03.03.2008
    Адрес
    Петербург
    Сообщений
    272
    Спасибо Благодарностей отдано 
    61
    Спасибо Благодарностей получено 
    21
    Поблагодарили
    15 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    denpopov, вариант подошел. Только пришлось поменять условия в паре мест. Спасибо.

    Цитата Сообщение от krt17 Посмотреть сообщение
    переменные к коде моветон
    А что делать, если мне надо увеличивать L через раз? Вот завел такой флажок.

  3. #643
    Master
    Регистрация
    31.01.2007
    Адрес
    Москва
    Сообщений
    716
    Спасибо Благодарностей отдано 
    7
    Спасибо Благодарностей получено 
    46
    Поблагодарили
    33 сообщений
    Mentioned
    7 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от AndTorp Посмотреть сообщение
    А что делать, если мне надо увеличивать L через раз?
    Да как обычно головой думать. Мой ответ был как бы сарказмом, тут проблемы просто нет.

  4. #644
    Activist Аватар для AndTorp
    Регистрация
    03.03.2008
    Адрес
    Петербург
    Сообщений
    272
    Спасибо Благодарностей отдано 
    61
    Спасибо Благодарностей получено 
    21
    Поблагодарили
    15 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Здравствуйте. Помогите модернизировать процедуру расчета адреса:
    Код:
    LD A,L
    AND 7
    RRCA
    RRCA
    RRCA
    OR H
    LD H,L
    LD L,A
    LD A,H
    AND #18
    OR #40
    LD H,A
    На входе:
    H = X-координата от 0 до 31;
    L = Y-координата от 0 до 47.
    Т.е. по вертикали в одно знакоместо 8x8 "укладываются" по два прямоугольника высотой 4 пикселя каждый.

    На выходе:
    HL = адрес в экранной области.

  5. #645
    Veteran Аватар для Destr
    Регистрация
    26.03.2008
    Адрес
    Питкяранта
    Сообщений
    1,804
    Спасибо Благодарностей отдано 
    253
    Спасибо Благодарностей получено 
    114
    Поблагодарили
    88 сообщений
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от AndTorp Посмотреть сообщение
    Здравствуйте. Помогите модернизировать процедуру расчета адреса:
    Ну самое простое - это учитывать младший бит Y-координаты:
    Код:
    SRL L
    EXA
    LD A,L
    AND 7
    RRCA
    RRCA
    RRCA
    OR H
    LD H,L
    LD L,A
    LD A,H
    AND #18
    OR #40
    LD H,A
    EXA
    RET NC
    SET 2,H
    RET
    А вообще исходя из строния спек-экрана разумней (на мой взгляд) хранить координаты наоборот (H=Y, L=X).
    Тогда расчёт такой:
    Код:
    ; Stolb-столбец
    ; Sg-сегмент
    ; Str-строка в сегменте
    ; P-старший бит пикселей в знакоместе по вертикали
    ; Формат координат:       H=00SgStrP L=000Stolb
    ; Формат адреса в экране: H=010SgPix L=StrStolb
    RRC H		; H=P00SgStr
    LD A,H		; A=P00SgStr
    RRCA		; A=rP00SgSt
    RRCA		; A=trP00SgS
    RRCA		; A=StrP00Sg
    XOR L
    AND #E0
    XOR L		; A=StrStolb
    LD L,A		; L сформирован
    LD A,H		; A=P00SgStr
    RLC H		; H=00SgStrP
    RLC H		; H=0SgStrP0
    RLC H		; H=SgStrP00
    XOR H
    AND %11100
    XOR H		; A=000SgP00
    OR #40		; A=010SgP00
    LD H,A		; H сформирован
    Можно сделать и быстрей.
    (XOR-AND-XOR тут сделано для защиты от переполнения, например если L вылезло за 31).
    В общем как-то так, оптимизаций наверняка море

  6. #646
    Banned
    Регистрация
    12.02.2014
    Адрес
    г. Арзамас
    Сообщений
    6,123
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    1
    Поблагодарили
    1 сообщение
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    а так не лучше, не?
    http://speccy.info/w/index.php?title...72&oldid=32289

    понадобится 1024 байта для построение точки.

  7. #646
    С любовью к вам, Yandex.Direct
    Размещение рекламы на форуме способствует его дальнейшему развитию

  8. #647
    Veteran Аватар для Bedazzle
    Регистрация
    02.05.2015
    Адрес
    г. Таллин, Эстония
    Сообщений
    1,490
    Спасибо Благодарностей отдано 
    226
    Спасибо Благодарностей получено 
    150
    Поблагодарили
    116 сообщений
    Mentioned
    9 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Destr Посмотреть сообщение
    XOR-AND-XOR тут сделано для защиты от переполнения
    Кстати, вопрос чутка в сторону - у меня в задворках памяти где-то сидит, что xor-and-xor как-то можно использовались для вывода спрайтов. Или я глючу?
    Последний раз редактировалось Bedazzle; 21.05.2016 в 11:40.

  9. #648
    Veteran Аватар для Destr
    Регистрация
    26.03.2008
    Адрес
    Питкяранта
    Сообщений
    1,804
    Спасибо Благодарностей отдано 
    253
    Спасибо Благодарностей получено 
    114
    Поблагодарили
    88 сообщений
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Bedazzle Посмотреть сообщение
    Кстати, вопрос чутка в сторону - у меня в задворках памяти где-то сидит, что xor-and-xor как-то можно использовались для вывода спрайтов. Или я глючу?
    Да можно, просто OR-XOR или AND-OR быстрей...

  10. #649
    Guru
    Регистрация
    01.03.2005
    Адрес
    Новосибирск
    Сообщений
    2,013
    Спасибо Благодарностей отдано 
    76
    Спасибо Благодарностей получено 
    298
    Поблагодарили
    110 сообщений
    Mentioned
    6 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    AndTorp,

    Код:
    	LD A,D
    	RRCA
    	RRCA
    	RRCA
    	RRCA
    	AND %11100000
    	OR E
    	LD E,A
    	LD A,D
    	RRA
    	AND %00011000
    	EX AF,AF'
    	LD A,D
    	RLCA
    	RLCA
    	AND %11111100
    	LD D,A
    	EX AF,AF'
    	XOR D
    	AND %11111000
    	XOR D
    	OR #40	
    	LD D,A
    либо

    Код:
    	SLA D
    	SLA D
    	LD A,D
    	AND #38
    	RLCA
    	RLCA
    	OR E
    	LD E,A
    	LD A,D
    	AND #C0
    	RRA	 
    	SCF	 
    	RRA	 
    	RRCA	 
    	XOR D
    	AND #F8
    	XOR D
    	LD D,A
    Как-то так...
    Последний раз редактировалось drbars; 29.05.2016 в 14:53.

  11. #650
    Banned
    Регистрация
    12.02.2014
    Адрес
    г. Арзамас
    Сообщений
    6,123
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    1
    Поблагодарили
    1 сообщение
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    копаюсь в одной демке, вот код HL=A*E
    Код:
    sub_80CB:
    		ld	hl, 0
    		bit	7, e
    		jr	z, loc_80D3
    		dec	hl
    loc_80D3:
    		ld	d, h
    loc_80D4:
    		srl	a;0->A->c
    		jr	nc, loc_80D9
    		add	hl, de
    loc_80D9:
    		sla	e;C<-E-<0
    		rl	d; thru C
    		or	a
    		jr	nz, loc_80D4
    		ld	a, h
    		ret
    Вроде и знак учитывается, а знак двух регистров - нет. Непонятно, как это работает?

Страница 65 из 110 ПерваяПервая ... 616263646566676869 ... ПоследняяПоследняя

Информация о теме

Пользователи, просматривающие эту тему

Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)

Похожие темы

  1. Этюды: как бы написать поизящнее.
    от AndTorp в разделе Программирование
    Ответов: 5
    Последнее: 17.03.2008, 00:43
  2. Ответов: 0
    Последнее: 18.08.2006, 22:40
  3. Этюды: печать шрифтом 5x5...
    от breeze в разделе Программирование
    Ответов: 12
    Последнее: 27.03.2005, 05:21

Метки этой темы

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •