User Tag List

Страница 7 из 8 ПерваяПервая ... 345678 ПоследняяПоследняя
Показано с 61 по 70 из 72

Тема: ZXeretic

  1. #61

    Регистрация
    07.02.2008
    Адрес
    г. Рязань
    Сообщений
    2,928
    Спасибо Благодарностей отдано 
    37
    Спасибо Благодарностей получено 
    124
    Поблагодарили
    44 сообщений
    Mentioned
    5 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Код:
    2BF KEYBOARD     CALL  028E,KEY-SCAN       Fetch a key value in the DE
                      RET   NZ                  register pair but return immedi-
                                                ately if the zero pair flag is reset.
    
    A double system of 'KSTATE system variables' (KSTATE0 - KSTATE 3 and KSTATE4 - KSTATE7) is used from now on.
    The two sets allow for the detection of a new key being pressed (using one set) whilst still within the 'repeat period' of the previous key to have been pressed (details in the other set).
    A set will only become free to handle a new key if the key is held down for about 1/10 th. of a second. i.e. Five calls to KEYBOARD.
    
                      LD    HL,KSTATE0          Start with KSTATE0.
    02C6 K-ST-LOOP    BIT   7,(HL)              Jump forward if a 'set is free';
                      JR    NZ,02D1,K-CH-SET    i.e. KSTATE0/4 holds +FF.
                      INC   HL                  However if the set is not free
                      DEC   (HL)                decrease its '5 call counter'
                      DEC   HL                  and when it reaches zero signal
                      JR    NZ,02D1,K-CH-SET    the set as free.
                      LD    (HL),+FF
    
    After considering the first set change the pointer and consider the second set.
    
    02D1 K-CH-SET     LD    A,L                 Fetch the low byte of the
                      LD    HL,KSTATE4          address and jump back if the
                      CP    L                   second set has still to be
                      JR    NZ,02C6,K-ST-LOOP   considered.
    
    Return now if the key value indicates 'no-key' or a shift key only.
    
                      CALL  031E,K-TEST         Make the necessary tests and
                      RET   NC                  return if needed. Also change
                                                the key value to a 'main code'.
    
    A key stroke that is being repeated (held down) is now separated from a new key stroke.
    
                      LD    HL,KSTATE0          Look first at KSTATE0.
                      CP    (HL)                Jump forward if the codes
                      JR    Z,0310,K-REPEAT     match - indicating a repeat.
                      EX    DE,HL               Save the address of KSTATE0.
                      LD    HL,KSTATE4          Now look at KSTATE4.
                      CP    (HL)                Jump forward if the codes
                      JR    Z,0310,K-REPEAT     match - indicating a repeat.
    
    But a new key will not be accepted unless one of the sets of KSTATE system variables is 'free'.
    
                      BIT   7,(HL)              Consider the second set.
                      JR    NZ,02F1,K-NEW       Jump forward if 'free'.
                      EX    DE,HL               Now consider the first set.
    
                      BIT   7,(HL)              Continue if the set is 'free' but
                      RET   Z                   exit from the KEYBOARD
                                                subroutine if not.
    
    The new key is to be accepted. But before the system variable LAST-K can be filled, the KSTATE system variables, of the set being used, have to be initialised to handle any repeats and the key's code has to be decoded.
    
    02F1 K-NEW        LD    E,A                 The code is passed to the
                      LD    (HL),A              E register and to KSTATE0/4.
                      INC   HL                  The '5 call counter' for this
                      LD    (HL),+05            set is reset to '5'.
                      INC   HL                  The third system variable of
                      LD    A,(REPDEL)          the set holds the REPDEL value
                      LD    (HL),A              (normally 0.7 secs.).
                      INC   HL                  Point to KSTATE3/7.
    
    The decoding of a 'main code' depends upon the present state of MODE, bit 3 of FLAGS and the 'shift byte'.
    
                      LD    C,(MODE)            Fetch MODE.
                      LD    D,(FLAGS)           Fetch FLAGS.
                      PUSH  HL                  Save the pointer whilst the
                      CALL  0333,K-DECODE       'main code' is decoded.
                      POP   HL
                      LD    (HL),A              The final code value is saved in
                                                KSTATE3/7; from where it is
                                                collected in case of a repeat.
    
    The next three instruction lines are common to the handling of both 'new keys' and 'repeat keys'.
    
    0308 K-END        LD    (LAST-K),A          Enter the final code value into
                      SET   5,(FLAGS)           LAST-K and signal 'a new key'.
                      RET                       Finally return.

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

  3. #62

    Регистрация
    28.12.2012
    Адрес
    Leesburg, VA, USA
    Сообщений
    974
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    1
    Поблагодарили
    1 сообщение
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Какая прэлесть...
    Практически это означает задержку в 100мс от момента нажатия до реакции на кнопку.

  4. #63

    Регистрация
    07.02.2008
    Адрес
    г. Рязань
    Сообщений
    2,928
    Спасибо Благодарностей отдано 
    37
    Спасибо Благодарностей получено 
    124
    Поблагодарили
    44 сообщений
    Mentioned
    5 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от TSL Посмотреть сообщение
    Практически это означает задержку в 100мс от момента нажатия до реакции на кнопку.
    Ога. Что вполне себе актуально для того списка, что я постил выше.

  5. #64

    Регистрация
    28.12.2012
    Адрес
    Leesburg, VA, USA
    Сообщений
    974
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    1
    Поблагодарили
    1 сообщение
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Ну вот этот LD (HL), 05 я раньше видел, но предположить ТАКОЕ...

    ---------- Post added at 13:58 ---------- Previous post was at 13:56 ----------

    Неужели ж у них были такие хреновые клавы?
    Я на всей механике спековской опрашивал с дребезгом 1 фрейм и было ок.

  6. #65

    Регистрация
    07.02.2008
    Адрес
    г. Рязань
    Сообщений
    2,928
    Спасибо Благодарностей отдано 
    37
    Спасибо Благодарностей получено 
    124
    Поблагодарили
    44 сообщений
    Mentioned
    5 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от TSL Посмотреть сообщение
    Неужели ж у них были такие хреновые клавы?
    Вроде бы как пленочные клавы с напыленными дорожками деградируют постепенно, где-то тут недавно тема по этому поводу пролетала.

    ---------- Post added at 16:02 ---------- Previous post was at 16:02 ----------

    О, вот тут про это говорили.

  7. #66

    Регистрация
    25.03.2013
    Адрес
    г. Лондон, Великобритания
    Сообщений
    948
    Спасибо Благодарностей отдано 
    9
    Спасибо Благодарностей получено 
    4
    Поблагодарили
    4 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от TSL Посмотреть сообщение
    Неужели ж у них были такие хреновые клавы?
    Я на всей механике спековской опрашивал с дребезгом 1 фрейм и было ок.
    На моей дельте-с дребезг в 1 фрейм явно был недостаточен. Хотя я боролся с этим куда проще: я читал клаву один раз за фрейм, если что-то читалось, фактически, отключал клаву фреймов на 5 перед следующим опросом.
    "introspec" читается как "интроспек". некоторые читают как "интроспец", но я никакой не спец. я спек.

  8. #67

    Регистрация
    25.01.2005
    Адрес
    Miass, Chelyabinsk region
    Сообщений
    4,094
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    2
    Поблагодарили
    2 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    т.е. вы хотите сказать, что если кнопка была нажата 2 фрейча (40 мс), то бейсик ее не засчитает?

  9. #68

    Регистрация
    02.04.2005
    Адрес
    Минск
    Сообщений
    378
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    1
    Поблагодарили
    1 сообщение
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    я читал клаву один раз за фрейм, если что-то читалось, фактически, отключал клаву фреймов на 5 перед следующим опросом.
    То есть мне в игре читать клаву раз в 5 фреймов?
    Сферический ламер в вакууме

  10. #69

    Регистрация
    07.02.2008
    Адрес
    г. Рязань
    Сообщений
    2,928
    Спасибо Благодарностей отдано 
    37
    Спасибо Благодарностей получено 
    124
    Поблагодарили
    44 сообщений
    Mentioned
    5 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от psb Посмотреть сообщение
    т.е. вы хотите сказать, что если кнопка была нажата 2 фрейча (40 мс), то бейсик ее не засчитает?
    Я всех обманул. Засчитает. Нажатия кнопок он видит в том же прерывании, в котором первый раз их прочитал нажатыми из порта. А вот для фиксации отпускания кнопка должна не считаться 5 раз подряд.

  11. #70

    Регистрация
    25.01.2005
    Адрес
    Miass, Chelyabinsk region
    Сообщений
    4,094
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    2
    Поблагодарили
    2 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    ну вот, другое дело

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

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

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

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

Ваши права

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