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

User Tag List

Страница 6 из 8 ПерваяПервая ... 2345678 ПоследняяПоследняя
Показано с 51 по 60 из 78

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

  1. #51
    Guru Аватар для Lethargeek
    Регистрация
    08.09.2005
    Адрес
    Воронеж
    Сообщений
    4,552
    Записей в дневнике
    3
    Спасибо Благодарностей отдано 
    272
    Спасибо Благодарностей получено 
    229
    Поблагодарили
    181 сообщений
    Mentioned
    11 Post(s)
    Tagged
    0 Thread(s)

    Exclamation

    Цитата Сообщение от jerri Посмотреть сообщение
    ты Элиту на Акорне видел?
    это в которой всё мерцает и мигает? а у тебя еще и проц дохлей примерно в два раза

    Цитата Сообщение от jerri Посмотреть сообщение
    все рисуется на экран - экран большой буферизовать не куда
    но ты же не на весь экран рисуешь... или на весь??

    Цитата Сообщение от jerri Посмотреть сообщение
    ну ты код то пиши
    я бы сделал как-нибудь вот так:
    Код:
    ; основной цикл для "горизонтальных" отрезков
    
    ; "прямая" подветка
    _hh0:
     or (hl)
     ld (hl),a
     dec CTR
     ret z
    _hh1:
     ld a,ERR
     sub DY
     ld ERR,a
     jp c,_hd2
    _hh2:
     ld a,MASK
     rrca
     ld MASK,a
     jp nc,_hh0
     inc h
     or (hl)
     ld (hl),a
     dec CTR
     jp nz,_hh1
     ret
    
    ; "диагональная" подветка
    _hd0:
     or (hl)
     ld (hl),a
     dec CTR
     ret z
    _hd1:
     ld a,ERR
     sub (DY-DX)
     ld ERR,a
     jp nc,_hh2
    _hd2:
     inc l
     ld a,MASK
     rrca
     ld MASK,a
     jp nc,_hd0
     inc h
     or (hl)
     ld (hl),a
     dec CTR
     jp nz,_hd1
     ret
    основной цикл для "вертикальных" - аналогично
    CTR, MASK, ERR - распихиваешь в любые из регистров b c d e
    в оставшийся свободный можно поместить одно из значений DY или (DY-DX)
    второе придётся вписывать прямо в код
    Прихожу без разрешения, сею смерть и разрушение...

  2. #52
    Guru Аватар для jerri
    Регистрация
    01.03.2005
    Адрес
    Samara
    Сообщений
    4,752
    Спасибо Благодарностей отдано 
    265
    Спасибо Благодарностей получено 
    283
    Поблагодарили
    211 сообщений
    Mentioned
    12 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Lethargeek Посмотреть сообщение
    это в которой всё мерцает и мигает? а у тебя еще и проц дохлей примерно в два раза
    ну во первых они вычисляют каждую точку
    чтото похожее на первый вариант брошенный сюда


    но ты же не на весь экран рисуешь... или на весь??
    в оригинале кусок экрана 192*256


    много лишних телодвижений
    я бы сделал как-нибудь вот так:
    Код:
    ; основной цикл для "горизонтальных" отрезков
    
    ; "прямая" подветка
    _hh0:
     xor (hl)
     ld (hl),a
     dec CTR
     ret z
     ld a,MASK
     rrca
     ld MASK,a
     jp nc,_hh0
     inc h
     jp _hh0
    ; "диагональная" подветка
    _hd0:
     or (hl)
     ld (hl),a
     dec CTR
     ret z
     inc l
     ld a,MASK
     rrca
     ld MASK,a
     jp nc,_hd0
     inc h
     jp _hd0
    основной цикл для "вертикальных" - аналогично
    CTR, MASK, ERR - распихиваешь в любые из регистров b c d e
    в оставшийся свободный можно поместить одно из значений DY или (DY-DX)
    второе придётся вписывать прямо в код
    короче ты предлагаешь добавить еще по 3 варианта линий
    и да - линии рисуются по XOR
    Последний раз редактировалось jerri; 16.02.2019 в 22:20.
    С уважением,
    Jerri / Red Triangle.

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

    По умолчанию

    jerri, для горизонтальных линий |dx|>|dy| цикл можно разделить на 3 части: две рисуют хвосты не кратные 8 точкам, а средняя часть разворачивается для 8 точек и рисует без сдвига маски. Тогда dx, dx-dy, err и cnt помещаются в регистрах, исчезает сдвиг маски и счётчик проверяется один раз на 8 точек. Но требуются варианты на увеличение и уменьшение Y, (или правка 8 инструкций в основной части и 2 в хвостах для диагональной подветки).

  4. #54
    Guru Аватар для Lethargeek
    Регистрация
    08.09.2005
    Адрес
    Воронеж
    Сообщений
    4,552
    Записей в дневнике
    3
    Спасибо Благодарностей отдано 
    272
    Спасибо Благодарностей получено 
    229
    Поблагодарили
    181 сообщений
    Mentioned
    11 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от jerri Посмотреть сообщение
    ну во первых они вычисляют каждую точку
    чтото похожее на первый вариант брошенный сюда
    всё равно без буфера получится эпилепсия

    Цитата Сообщение от jerri Посмотреть сообщение
    в оригинале кусок экрана 192*256
    так это только 6 кб! а еще бока экрана можно использовать под нераздражающий нужный "мусор"

    Цитата Сообщение от jerri Посмотреть сообщение
    много лишних телодвижений
    "лишние телодвижения" - это лишние потраченные такты
    у тебя сейчас (по последнему вложению) в цикле получается 88-102 такта на пиксель (кстати, ora перед rrca - лишнее)
    у меня в примере 76-87 тактов на пиксель, причём в среднем (с учётом вероятности переходов) должно быть ближе к 77

    Цитата Сообщение от jerri Посмотреть сообщение
    короче ты предлагаешь добавить еще по 3 варианта линий
    короче, не тупи! это был кусок для dx>dy, еще нужен лишь один похожий для dy>dx

    еще можно для "сильногоризонтальных" добавить ветку, как только что предложил blackmirror
    но, возможно, эффект слишком незначительный по сравнению с z80 получится, и для немногих

    Цитата Сообщение от jerri Посмотреть сообщение
    и да - линии рисуются по XOR
    да хоть как на спектруме команды динамически заменяй
    Прихожу без разрешения, сею смерть и разрушение...

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

    По умолчанию

    Цитата Сообщение от Lethargeek Посмотреть сообщение
    еще можно для "сильногоризонтальных" добавить ветку, как только что предложил blackmirror
    но, возможно, эффект слишком незначительный по сравнению с z80 получится, и для немногих
    Там эффект будет и для 254/255 тоже, в развернутом цикле будет ld/xor/ld для модификации точки, ld/sub/ld для изменения ошибки, jc для перехода в другую ветку, плюс inc/dec y в диагональной ветке. А счётчк и x будут модифицироваться один раз на 8 точек.

  6. #56
    Guru Аватар для HardWareMan
    Регистрация
    26.02.2011
    Адрес
    г. Павлодар, Казахстан
    Сообщений
    4,405
    Спасибо Благодарностей отдано 
    320
    Спасибо Благодарностей получено 
    598
    Поблагодарили
    444 сообщений
    Mentioned
    10 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    jerri, опять - двадцать пять. Достаточно было упомянуть SJAsm, что дескать это он не понимает язык оригинала, но нет, надо обязательно впихнуть своё мнение что "дичь", что тяжело запомнить и не логично. Ну да, я слышал, что современная молодежь имеет проблемы с памятью, но ты то вроде не из этих.

    А, понятно, если бы ты упомянул только SJAsm, я бы естественно порекомендовал другой, который может. В общем, секта как есть, в действии. Вот поэтому "Илиты" никогда не будет на i8080, потому как она будет на недо-Z80.

  7. #57
    Guru
    Регистрация
    07.08.2008
    Адрес
    г. Уфа
    Сообщений
    7,843
    Спасибо Благодарностей отдано 
    654
    Спасибо Благодарностей получено 
    1,818
    Поблагодарили
    1,044 сообщений
    Mentioned
    22 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    HardWareMan, если программисту удобнее мнемоники z80, если привычный инструментарий для них, если больше вероятность отклика и содействия других программистов (понимающих мнемоники z80 на форуме побольше, чем помнящих/понимающих 8080), то лучше их и использовать. Если результат будет приемлемо работать на 8080, то на чем исходная программа - совершенно без разницы, хоть с включением фрагментов C, бейсика и чего угодно. Задача и так сложная и объемная, зачем еще ставить дополнительные барьеры и проверять на прочность мотивацию.

  8. #58
    Master
    Регистрация
    24.05.2005
    Адрес
    г. Запорожье, Украина
    Сообщений
    992
    Спасибо Благодарностей отдано 
    571
    Спасибо Благодарностей получено 
    364
    Поблагодарили
    239 сообщений
    Mentioned
    2 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Я подозреваю гдето в мире уже ктото сделал набор регулярных выражений которые из одной мнемоники делают другую.

  9. #59
    Guru
    Регистрация
    07.08.2008
    Адрес
    г. Уфа
    Сообщений
    7,843
    Спасибо Благодарностей отдано 
    654
    Спасибо Благодарностей получено 
    1,818
    Поблагодарили
    1,044 сообщений
    Mentioned
    22 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от shurik-ua Посмотреть сообщение
    гдето в мире уже ктото сделал набор регулярных выражений которые из одной мнемоники делают другую.
    Подобных трансляторов даже несколько, на форуме эта тема поднималась (может и не раз), но у всех есть ограничения и неудобства. А удобный и простой в использовании транслятор был бы полезен программисту работающему с мнемониками z80 с прицелом на 8080 - как минимум для быстрой и точной проверки наличия у 8080 команд использованных в исходнике для z80.

  10. #60
    Guru Аватар для jerri
    Регистрация
    01.03.2005
    Адрес
    Samara
    Сообщений
    4,752
    Спасибо Благодарностей отдано 
    265
    Спасибо Благодарностей получено 
    283
    Поблагодарили
    211 сообщений
    Mentioned
    12 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Lethargeek Посмотреть сообщение
    всё равно без буфера получится эпилепсия

    так это только 6 кб! а еще бока экрана можно использовать под нераздражающий нужный "мусор"
    мне пока нечего туда пихать


    "лишние телодвижения" - это лишние потраченные такты
    у тебя сейчас (по последнему вложению) в цикле получается 88-102 такта на пиксель (кстати, ora перед rrca - лишнее)
    у меня в примере 76-87 тактов на пиксель, причём в среднем (с учётом вероятности переходов) должно быть ближе к 77
    ora рудимент от rra

    ну для горизонтальных и вертикальных линий и диагональных линий я и твое слегка ускорил
    только я боюсь экономия будет около 0.1% по факту изза малого количества таких линий



    короче, не тупи! это был кусок для dx>dy, еще нужен лишь один похожий для dy>dx
    у меня и так используются 4 подпрограммы - угол 0-45 45-90 слева направо и столько же справа налево

    еще можно для "сильногоризонтальных" добавить ветку, как только что предложил blackmirror
    но, возможно, эффект слишком незначительный по сравнению с z80 получится, и для немногих
    расчеты сожрут всю выгоду от скорости.
    эт я еще до кругов не дошел.

    - - - Добавлено - - -

    Цитата Сообщение от HardWareMan Посмотреть сообщение
    jerri, опять - двадцать пять. Достаточно было упомянуть SJAsm, что дескать это он не понимает язык оригинала, но нет, надо обязательно впихнуть своё мнение что "дичь", что тяжело запомнить и не логично. Ну да, я слышал, что современная молодежь имеет проблемы с памятью, но ты то вроде не из этих.
    мое мнение про дичь это мое мнение
    ты отрицаешь что мнемоники z80 более логичны и удобны?

    А, понятно, если бы ты упомянул только SJAsm, я бы естественно порекомендовал другой, который может. В общем, секта как есть, в действии. Вот поэтому "Илиты" никогда не будет на i8080, потому как она будет на недо-Z80.
    ага это будет некошерная Илита потому что скомпилирована на некошерном компиляторе и написана некошерными мнемониками? так чтоли?

    - - - Добавлено - - -

    текущая версия линии
    дополнения, предложения есть?

    Код:
    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
    
    	or	b
    	jp	nz,line_rlh	
    	inc	c	
    line_rlh	
    ;right left horizontal
    	call	de_coo
    	ld	a,b
    	ld	(line_rlhb0),a
    	ld	d,c
    	ld	a,e
    line_rlh0	
    	xor	(hl)
    	ld	(hl),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
    
    	ld	a,e
    	rlca
    	ld	e,a
    	jp	nc,line_rlhb
    	dec	h
    line_rlhb
    	dec	d
    	jp	nz,line_rlh0	
    	ret
    line_rlv
    ;right left vertical
    	or	b
    	jp	nz,line_rlv2	
    	inc	b	
    line_rlv2
    	call	de_coo
    	ld	a,c
    	ld	(line_rlvb0),a
    	ld	d,b
    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
    	rlca
    	ld	e,a
    	jp	nc,line_rlv1
    	dec	h
    line_rlv1
    	dec	d
    	jp	nz,line_rlv0	
    	ret
    
    line_lr
    	ld	c,a	
    	cp	b
    ;c?b
    	jp	c,line_lrv
    ;c>b
    	or	b
    	jp	nz,line_lrh
    	inc	c	
    line_lrh	
    
    ;left right horizontal
    	call	de_coo
    	ld	a,b
    	ld	(line_lrhb0),a
    	ld	d,c
    	ld	a,e
    line_lrh0	
    	xor	(hl)
    	ld	(hl),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
    
    	ld	a,e
    	rrca
    	ld	e,a
    	jp	nc,line_lrhb
    	inc	h
    line_lrhb
    	dec	d
    	jp	nz,line_lrh0	
    	ret
    line_lrv
    
    	or	b
    	jp	nz,line_lrv2
    	inc	b
    line_lrv2
    ;left right vertical
    	call	de_coo
    	ld	a,c
    	ld	(line_lrvb0),a
    	ld	d,b
    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
    	rrca
    	ld	e,a
    	jp	nc,line_lrv1
    	inc	h
    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; 17.02.2019 в 14:58.
    С уважением,
    Jerri / Red Triangle.

Страница 6 из 8 ПерваяПервая ... 2345678 ПоследняяПоследняя

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

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

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

Похожие темы

  1. PS/2 адаптер клавиатуры для Специалиста
    от fifan в разделе Специалист
    Ответов: 230
    Последнее: 27.07.2023, 10:03
  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

Ваши права

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