User Tag List

Показано с 1 по 10 из 78

Тема: Элита для Специалиста

Комбинированный просмотр

Предыдущее сообщение Предыдущее сообщение   Следующее сообщение Следующее сообщение
  1. #1

    Регистрация
    25.11.2015
    Адрес
    г. Москва
    Сообщений
    192
    Спасибо Благодарностей отдано 
    12
    Спасибо Благодарностей получено 
    16
    Поблагодарили
    14 сообщений
    Mentioned
    2 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Не должно быть в цикле рисования линии push/pop af, лучше dx или dy встроить в код и править при вызове.

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

  3. #2

    Регистрация
    01.03.2005
    Адрес
    Samara
    Сообщений
    4,867
    Спасибо Благодарностей отдано 
    328
    Спасибо Благодарностей получено 
    311
    Поблагодарили
    235 сообщений
    Mentioned
    12 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    blackmirror, поясни
    С уважением,
    Jerri / Red Triangle.

  4. #3

    Регистрация
    25.11.2015
    Адрес
    г. Москва
    Сообщений
    192
    Спасибо Благодарностей отдано 
    12
    Спасибо Благодарностей получено 
    16
    Поблагодарили
    14 сообщений
    Mentioned
    2 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    jerri, сейчас ошибка лежит в A, а в BC лежит dx и dy, но чтобы поменять точку или маску приходится сохранять A в стеке, поскольку регистров не хватает. Можно одну из инструкций sub/add b/c поменять на инструкцию с константой, которая будет меняться на реальный dx или dy перед циклом. А ошибку переместить в освободившийся регистр, откуда её быстрее будет достать чем из стека.

  5. #4

    Регистрация
    01.03.2005
    Адрес
    Samara
    Сообщений
    4,867
    Спасибо Благодарностей отдано 
    328
    Спасибо Благодарностей получено 
    311
    Поблагодарили
    235 сообщений
    Mentioned
    12 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от blackmirror Посмотреть сообщение
    jerri, сейчас ошибка лежит в A, а в BC лежит dx и dy, но чтобы поменять точку или маску приходится сохранять A в стеке, поскольку регистров не хватает. Можно одну из инструкций sub/add b/c поменять на инструкцию с константой, которая будет меняться на реальный dx или dy перед циклом. А ошибку переместить в освободившийся регистр, откуда её быстрее будет достать чем из стека.
    вариант конечно.

    Код:
    bitstream	db	#80,#40,#20,#10,#08,#04,#02,#01
    
    
    
    
    ;в DE - yx начала
    ;в HL - yx конца
    line00
    	ld	a,h
    	sub	d
    ;h<d?
    	jp	nc,line1
    ;h>d
    	ex	de,hl
    	cpl	
    	inc	a
    line1
    	ld	b,a	
    ;b=vertical cntr DY
    
    	ld	a,l
    	sub	e
    ;a=DX
    ;e<l?		
    	jp	nc,line_lr
    ;e>l
    line_rl		
    	cpl
    	inc	a
    	ld	c,a
    ;c=horizontal cntr
    	cp	b
    ;c?b
    	jp	c,line_rlv
    ;c>b
    line_rlh	
    ;right left horizontal
    	call	de_coo
    	ld	a,b
    	ld	(line_rlhb0),a
    	ld	d,c
    	inc	d
    line_rlh0	
    	ld	a,(hl)
    	xor	e
    	ld	(hl),a
    
    	ld	a,e
    	or	a
    	rla
    	jp	nc,line_rlhb
    	ld	a,1
    	dec	h
    line_rlhb
    	ld	e,a
    	ld	a,b
    	sub	0	;b	
    line_rlhb0 equ	$-1
    	jp	nc,line_rlh1
    	add	a,c
    	inc	l
    line_rlh1
    	ld	b,a
    	dec	d
    	jp	nz,line_rlh0	
    	ret
    line_rlv
    ;right left vertical
    	call	de_coo
    	ld	a,c
    	ld	(line_rlvb0),a
    	ld	d,b
    	inc	d
    line_rlv0	
    	ld	a,(hl)
    	xor	e
    	ld	(hl),a
    	inc	l
    	ld	a,c
    	sub	0	;c
    line_rlvb0 equ	$-1	
    	ld	c,a
    	jp	nc,line_rlv1
    	add	a,b
    	ld	c,a
    	
    	ld	a,e
    	or	a
    	rla
    	jp	nc,line_rlvb
    	ld	a,1
    	dec	h
    line_rlvb
    	ld	e,a
    line_rlv1
    	dec	d
    	jp	nz,line_rlv0	
    	ret
    
    line_lr
    	ld	c,a	
    	cp	b
    ;c?b
    	jp	c,line_lrv
    ;c>b
    
    line_lrh	
    
    ;left right horizontal
    	call	de_coo
    	ld	a,b
    	ld	(line_lrhb0),a
    	ld	d,c
    	inc	d
    line_lrh0	
    	ld	a,(hl)
    	xor	e
    	ld	(hl),a
    
    	ld	a,e
    	or	a
    	rra
    	jp	nc,line_lrhb
    	ld	a,128
    	inc	h
    line_lrhb
    	ld	e,a
    	ld	a,b
    	sub	0	;b
    line_lrhb0 equ	$-1
    	jp	nc,line_lrh1
    	add	a,c
    	inc	l
    line_lrh1
    	ld	b,a
    	dec	d
    	jp	nz,line_lrh0	
    	ret
    line_lrv
    
    ;left right vertical
    	call	de_coo
    	ld	a,c
    	ld	(line_lrvb0),a
    	ld	d,b
    	inc	d
    line_lrv0	
    	ld	a,(hl)
    	xor	e
    	ld	(hl),a
    	inc	l
    	ld	a,c	
    	sub	0	;c	
    line_lrvb0 equ	$-1
    	ld	c,a	
    	jp	nc,line_lrv1
    	add	a,b
    	ld	c,a
    	ld	a,e
    	or	a
    	rra
    	jp	nc,line_lrvb
    	ld	a,128
    	inc	h
    line_lrvb
    	ld	e,a
    line_lrv1
    	dec	d
    	jp	nz,line_lrv0	
    	ret
    de_coo
    ;de=source	
    	ld	a,e
    	rra
    	rra
    	rra
    	and	#1f
    	add	a,#98
    	ld	h,a
    	ld	l,d
    	ld	a,e
    	ex	de,hl
    	and	#07
    	ld	hl,bitstream
    	add	a,l
    	ld	l,a
    	ld	l,(hl)
    	ex	de,hl
    ;hl=addr
    ;e=bitstream
    	ret
    Последний раз редактировалось jerri; 14.02.2019 в 23:34.
    С уважением,
    Jerri / Red Triangle.

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

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

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

Похожие темы

  1. PS/2 адаптер клавиатуры для Специалиста
    от fifan в разделе Специалист
    Ответов: 244
    Последнее: 02.12.2025, 11:10
  2. Ответов: 48
    Последнее: 12.01.2019, 19:46
  3. OriNET для Специалиста ?
    от SYR-ALEX в разделе Специалист
    Ответов: 22
    Последнее: 21.07.2017, 07:40
  4. Есть 3 кассеты для Специалиста...
    от Bolt в разделе Специалист
    Ответов: 60
    Последнее: 27.10.2013, 14:24
  5. Изучается спрос на плату для Специалиста
    от Павел Рябцов в разделе Барахолка (архив)
    Ответов: 109
    Последнее: 30.11.2010, 10:16

Ваши права

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