User Tag List

Страница 82 из 113 ПерваяПервая ... 787980818283848586 ... ПоследняяПоследняя
Показано с 811 по 820 из 1128

Тема: ЭТЮДЫ

  1. #811

    Регистрация
    14.01.2008
    Адрес
    Эстония, Таллинн
    Сообщений
    177
    Спасибо Благодарностей отдано 
    16
    Спасибо Благодарностей получено 
    24
    Поблагодарили
    14 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Писал на скорую руку, лень было искать ссылки, просто взял бумажную Родионова, и там глянул...

    Есть кстати ещё одна процедурка из журнала какого-то, но она не имеет 65535 она странная на фибоначчи похожая, толком её не понял даже

    Код:
    RND        LD      BC,#5A05
            LD      A,B
            LD      (RND+1),A
    R2      LD      A,#25
            LD      (RND+2),A
            ADD     B
            ADD     C
            RLCA
            LD      (R2+1),A
    (точнее я понял как работает, но не понял почему оно сносно работает...)


    ЗЫ, - 8b это жесть... Додуматься же...

    Мой минимум увы поменьше (но за то основная идея была задумана в 1989-м, правда тогда реализовывалась на бейсике)

    Код:
    	ORG	#8000
    ;	Если запускать с адреса кратного 256, то в С и так будет 0
    ;	XOR	A
    ;	LD	C,A
    
    
    	LD	E,C
    	LD	H,#18
    
    START
    
    	LD	D,#40
    	LD	B,H
    	LD	H,E
    	LD	A,(HL)
    	RLA
    	LD	L,A
    	LDIR
    
    	JR	START
    Последний раз редактировалось Vladson; 20.03.2019 в 05:02.
    Разрабатываю новый сетевой протокол
    Variable Length Advanced Data Sending Over Network
    Что он будет делать и зачем нужен не знаю, разработал пока только название.

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

  3. #812

    Регистрация
    02.05.2015
    Адрес
    г. Таллин, Эстония
    Сообщений
    1,691
    Спасибо Благодарностей отдано 
    302
    Спасибо Благодарностей получено 
    223
    Поблагодарили
    159 сообщений
    Mentioned
    11 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Vladson Посмотреть сообщение
    Есть кстати ещё одна процедурка из журнала какого-то, но она не имеет 65535 она странная на фибоначчи похожая, толком её не понял даже

  4. #813

    Регистрация
    19.01.2017
    Адрес
    г. Арзамас
    Сообщений
    2,450
    Записей в дневнике
    42
    Спасибо Благодарностей отдано 
    8
    Спасибо Благодарностей получено 
    162
    Поблагодарили
    119 сообщений
    Mentioned
    7 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Пора расчехлить пыльную папочку. Числа Фиббоначи - мой вариант и на BrainFuck. Только у BF нолик печатается

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

    Цитата Сообщение от Vladson Посмотреть сообщение
    LD A,(HL)
    RLA
    LD L,A
    ld l,(hl)/rl l
    Вложения Вложения
    • Тип файла: zip fib.zip (16.9 Кб, Просмотров: 150)

  5. #814

    Регистрация
    14.01.2008
    Адрес
    Эстония, Таллинн
    Сообщений
    177
    Спасибо Благодарностей отдано 
    16
    Спасибо Благодарностей получено 
    24
    Поблагодарили
    14 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Блин и правда, забыл уже что так можно было... (Хотя уверен что кто-то уже наверняка подобное делал и я просто изобретал все эти годы велосипед)
    Разрабатываю новый сетевой протокол
    Variable Length Advanced Data Sending Over Network
    Что он будет делать и зачем нужен не знаю, разработал пока только название.

  6. #815

    Регистрация
    26.03.2008
    Адрес
    Питкяранта
    Сообщений
    1,821
    Спасибо Благодарностей отдано 
    273
    Спасибо Благодарностей получено 
    122
    Поблагодарили
    95 сообщений
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Процедура выделения отрицательного фронта бита:
    Код:
    ; выделение отрицательного фронта клавиши, port,bit=проверяемая клавиша, NZ=фронт был, Z=не было
    	MACRO FN_KEY port, bit
    .FP		LD A,0
    		LD (.KEY+1),A
    		LD A,port
    		IN A,(#FE)
    		CPL
    		LD (.FP+1),A
    		CPL
    .KEY		AND 0
    		BIT bit,A
    	ENDM
    WAI FN_KEY #7F, 2: JR Z,WAI

    Будет крутится до тех пор пока клавиша не сменит состоянии с нажатой на отжатую

    А вот наоборот (положительный фронт) не получается.
    Точней можно модернезировать, но среагирует просто на нажатие не взирая на то была-ли на предыдущем проходе отжата (а надо).
    Не могу сообразить как сделать. Или вообще загнался и можно проще? Есть идеи?
    P.S. И кстати просто клик (отжата-нажата-отжата) не могу сообразить...
    Последний раз редактировалось Destr; 05.06.2019 в 21:05.

  7. #816

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

    По умолчанию

    Destr,

    подумай так

    Код:
    ;А опрошенные кнопки (8 штук) 1 нажата 0 не нажата
    
    	ld	c,a
    	ld	a,(key_holded) ;удерживаемые кнопки
    	xor	c
    	and	c
    	ld	(key_presed),a ;свеженажатые кнопки
    	ld	a,c
    	ld	(key_holded),a
    	ret
    второй вариант ждет нажатия двух кнопок
    после чего включает/выключает музыку

    Код:
    	ld	a,(kb_buf+1)
    	and	#08
    	ld	h,a
    	ld	a,(kb_buf+6)
    	and	#10
    	or	h	
    	cp	0
    musprs	equ	$-1
    	ld	(musprs),a
    	jr	z,musprs0
    	or	a
    	jr	nz,musprs0
    	
    	ld	a,(musoff)
    	cpl
    	ld	(musoff),a
    	or	a
    	jr	z,musprs0
    	jp	MUTE ;глушим музыку
    musprs0
    	 ld	a,0
    musoff	equ	$-1
    	or	a
    	jp	nz,ays_play
    ;иначе стартуем музыку
    Последний раз редактировалось jerri; 05.06.2019 в 21:26.
    С уважением,
    Jerri / Red Triangle.

  8. #817

    Регистрация
    26.03.2008
    Адрес
    Питкяранта
    Сообщений
    1,821
    Спасибо Благодарностей отдано 
    273
    Спасибо Благодарностей получено 
    122
    Поблагодарили
    95 сообщений
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от jerri Посмотреть сообщение
    подумай так
    Ну вообще смысл чтоб минимум длины и без использования регистров (ну кроме А, на крайняк A`)

  9. #818

    Регистрация
    26.11.2013
    Адрес
    г. Новосибирск
    Сообщений
    1,101
    Спасибо Благодарностей отдано 
    1,335
    Спасибо Благодарностей получено 
    322
    Поблагодарили
    151 сообщений
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Destr, Попробуй убрать первый CPL. Это инвертер того что считалось с порта. А значит задний фронт и передний фронт поменяются местами.
    Помни, что макрос будет работать несколько по разному, если использовать_макрос для одной и той-же клавиши много раз, в отличии от: запихнуть макрос для данной кнопки в подпрограмму, и вызывать её. Каждый вызов макроса создаст свои переменные, помнящие состояние клавы, и они будут помнить состояние независимо. А если будет один вызов макроса в специально сделанной для этого процедурке, то помнить предыдущее состояние она будет централизовано.
    Помни, что есть разные другие способы опроса клавиатуры: Ещё более централизованные, для групп клавиш. Для всей клавиатуры в прерываниях разом.

  10. #819

    Регистрация
    26.03.2008
    Адрес
    Питкяранта
    Сообщений
    1,821
    Спасибо Благодарностей отдано 
    273
    Спасибо Благодарностей получено 
    122
    Поблагодарили
    95 сообщений
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    [quote="Reobne;1015623"]Destr, Попробуй убрать первый CPL.../quote]
    Ну вот версия 2 - как-бы оптимизированней
    Код:
    	MACRO FN_KEY key	; выделение отрицательного фронта клавиши, port,bit=проверяемая клавиша, NZ=1 - фронт был
    .prev		LD A,#FF
    		CPL
    		AND low key
    		LD (.mask+1),A
    		LD A,high key
    		IN A,(#FE)
    		LD (.prev+1),A
    .mask		AND 0
    	ENDM
    Крутится хорошо
    Код:
    WAIT        FN_KEY #7F04:JR Z,WAIT
    И самое главное - если при вызове УЖЕ нажата нужная клавиша - всё равно работает (в отличии от процедуры которая передний фронт ловит (да она-же, но CPL по-другому) - передний если клавиша УЖЕ зажата - сработает будто был фронт (хоть и пробовал всяко с начальными значениями)

    Цитата Сообщение от Reobne Посмотреть сообщение
    Помни, что есть разные другие способы опроса клавиатур
    Да это знаю, клавиши взял пока просто для удобства, а вообще нужен контроль ЛЮБОГО сигнала (бита), откуда-бы его не впихнули...

    Железячников ведь у нас куча, хоть бы подсказали как это в железе делается, роюсь счаз в гуглях, есть там много всяких этих триггеров, но пока не сумел перевести хотя-бы в псевдокод, не говоря уж о спек-асме...

  11. #820

    Регистрация
    26.11.2013
    Адрес
    г. Новосибирск
    Сообщений
    1,101
    Спасибо Благодарностей отдано 
    1,335
    Спасибо Благодарностей получено 
    322
    Поблагодарили
    151 сообщений
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Destr Посмотреть сообщение
    вообще нужен контроль ЛЮБОГО сигнала (бита), откуда-бы его не впихнули
    Если банально теоретически, то квантованный по времени сигнал, это последовательность логических значений x[i].
    Вот если x[i], это принятое сейчас значение, x[i-1] - принятое предыдущее значения, то
    y[i]=x[i] XOR x[i-1] ; есть ли изменение:
    y_up[i]=x[i] AND NOT x[i-1]
    y_down[i]=NOT x[i] AND x[i-1]

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

    Цитата Сообщение от Destr Посмотреть сообщение
    И самое главное - если при вызове УЖЕ нажата нужная клавиша - всё равно работает (в отличии от процедуры которая передний фронт ловит (да она-же, но CPL по-другому) - передний если клавиша УЖЕ зажата - сработает будто был фронт (хоть и пробовал всяко с начальными значениями)
    Начальные значения, это константы в LD A,#FF и AND 0 ?
    Другое решение:
    Заключи вызов макроса как процедуру, прибавив вначале метку а в конце RET.
    Перед началом цикла опроса сделай один лишний разок CALL, только как инициализацию, не глядя на Z.
    А в цикле вызывай CALL и смотри флаг Z.

Страница 82 из 113 ПерваяПервая ... 787980818283848586 ... ПоследняяПоследняя

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

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

Эту тему просматривают: 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

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

Ваши права

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