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

User Tag List

Страница 7 из 36 ПерваяПервая ... 34567891011 ... ПоследняяПоследняя
Показано с 61 по 70 из 353

Тема: Секреты и трюки программирования (в том числе и игр) для РК-86

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

    По умолчанию

    Пришлось посмотреть даташит на i8275 http://www.jbox.dk/rc702/hardware/intel-8275.pdf так как за 6 страниц тут толком никто ничего не объяснил.
    С синхрой все не так плохо, есть так называемые флаги статуса среди которых есть IR, выставляется на последней строке, не прерывание конечно но хоть что то. Клава по всей видимости примитивная, вроде как на ВВ55, какие адреса у нее не нашел, опрашивать энцать кнопок я думаю не проблема.
    Что там за мониторы, точки входа, че собственно делает G не ясно.
    Как вейтит i8257 тоже не ясно. Почитал много букв типа http://www.danbigras.ru/RK86/CPU/CPU.html полезной инфы 0
    Внезапно обнаружил что символы 6x8 а не 8х8.
    Не удивительно что даже те кому комп интересен не в состоянии найти минимальную информацию для программирования.

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

  3. #62
    Guru Аватар для jerri
    Регистрация
    01.03.2005
    Адрес
    Samara
    Сообщений
    4,751
    Спасибо Благодарностей отдано 
    256
    Спасибо Благодарностей получено 
    266
    Поблагодарили
    200 сообщений
    Mentioned
    12 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    krt17, по опросу кнопок не все так просто
    может ты поймешь

    адрес вроде #80xx


    Код:
    ROM:FE72 kbd_scan2:                              ; CODE XREF: j_kbd_scan2j
    ROM:FE72                                         ; sub_F9A4p ...
    ROM:FE72                 ld      a, (byte_8002)
    ROM:FE75                 and     80h ; 'А'
    ROM:FE77                 jp      nz, loc_FE7D
    ROM:FE7A                 ld      a, 0FEh ; '¦'
    ROM:FE7C                 ret
    ROM:FE7D ; ---------------------------------------------------------------------------
    ROM:FE7D
    ROM:FE7D loc_FE7D:                               ; CODE XREF: kbd_scan2+5j
    ROM:FE7D                 xor     a
    ROM:FE7E                 ld      (byte_8000), a
    ROM:FE81                 ld      (byte_8002), a
    ROM:FE84                 ld      a, (byte_7606)
    ROM:FE87                 and     1
    ROM:FE89                 or      6
    ROM:FE8B                 ld      (byte_8003), a
    ROM:FE8E                 ld      a, (byte_8001)
    ROM:FE91                 inc     a
    ROM:FE92                 jp      nz, loc_FE97
    ROM:FE95                 dec     a
    ROM:FE96                 ret
    ROM:FE97 ; ---------------------------------------------------------------------------
    ROM:FE97
    ROM:FE97 loc_FE97:                               ; CODE XREF: kbd_scan2+20j
    ROM:FE97                 push    hl
    ROM:FE98                 ld      l, 1
    ROM:FE9A                 ld      h, 7
    ROM:FE9C
    ROM:FE9C loc_FE9C:                               ; CODE XREF: kbd_scan2+3Aj
    ROM:FE9C                 ld      a, l
    ROM:FE9D                 rrca
    ROM:FE9E                 ld      l, a
    ROM:FE9F                 cpl
    ROM:FEA0                 ld      (byte_8000), a
    ROM:FEA3                 ld      a, (byte_8001)
    ROM:FEA6                 cpl
    ROM:FEA7                 or      a
    ROM:FEA8                 jp      nz, loc_FEB3
    ROM:FEAB                 dec     h
    ROM:FEAC                 jp      p, loc_FE9C
    ROM:FEAF
    ROM:FEAF loc_FEAF:                               ; CODE XREF: kbd_scan2+48j
    ROM:FEAF                 ld      a, 0FFh
    ROM:FEB1                 pop     hl
    ROM:FEB2                 ret
    ROM:FEB3 ; ---------------------------------------------------------------------------
    ROM:FEB3
    ROM:FEB3 loc_FEB3:                               ; CODE XREF: kbd_scan2+36j
    ROM:FEB3                 ld      l, 20h ; ' '
    ROM:FEB5
    ROM:FEB5 loc_FEB5:                               ; CODE XREF: kbd_scan2+4Cj
    ROM:FEB5                 ld      a, (byte_8001)
    ROM:FEB8                 cpl
    ROM:FEB9                 or      a
    ROM:FEBA                 jp      z, loc_FEAF
    ROM:FEBD                 dec     l
    ROM:FEBE                 jp      nz, loc_FEB5
    ROM:FEC1                 ld      l, 8
    ROM:FEC3
    ROM:FEC3 loc_FEC3:                               ; CODE XREF: kbd_scan2+53j
    ROM:FEC3                 dec     l
    ROM:FEC4                 rlca
    ROM:FEC5                 jp      nc, loc_FEC3
    ROM:FEC8                 ld      a, h
    ROM:FEC9                 ld      h, l
    ROM:FECA                 ld      l, a
    ROM:FECB                 cp      1
    ROM:FECD                 jp      z, loc_FEFA
    ROM:FED0                 jp      c, loc_FEF3
    ROM:FED3                 rlca
    ROM:FED4                 rlca
    ROM:FED5                 rlca
    ROM:FED6                 add     a, 20h ; ' '
    ROM:FED8                 or      h
    ROM:FED9                 cp      5Fh ; '_'
    ROM:FEDB                 jp      nz, loc_FF06
    ROM:FEDE                 ld      a, 20h ; ' '
    ROM:FEE0                 pop     hl
    ROM:FEE1                 ret
    ROM:FEE1 ; ---------------------------------------------------------------------------
    ROM:FEE2 unk_FEE2:       db    9                 ; DATA XREF: kbd_scan2+89o
    ROM:FEE3                 db  0Ah
    ROM:FEE4                 db  0Dh
    ROM:FEE5                 db  7Fh ; 
    ROM:FEE6                 db    8
    ROM:FEE7                 db  19h
    ROM:FEE8                 db  18h
    ROM:FEE9                 db  1Ah
    ROM:FEEA unk_FEEA:       db  0Ch                 ; DATA XREF: kbd_scan2+82o
    ROM:FEEB                 db  1Fh
    ROM:FEEC                 db  1Bh
    ROM:FEED                 db    0
    ROM:FEEE                 db    1
    ROM:FEEF                 db    2
    ROM:FEF0                 db    3
    ROM:FEF1                 db    4
    ROM:FEF2                 db    5
    ROM:FEF3 ; ---------------------------------------------------------------------------
    ROM:FEF3
    ROM:FEF3 loc_FEF3:                               ; CODE XREF: kbd_scan2+5Ej
    ROM:FEF3                 ld      a, h
    ROM:FEF4                 ld      hl, unk_FEEA
    ROM:FEF7                 jp      loc_FEFE
    ROM:FEFA ; ---------------------------------------------------------------------------
    ROM:FEFA
    ROM:FEFA loc_FEFA:                               ; CODE XREF: kbd_scan2+5Bj
    ROM:FEFA                 ld      a, h
    ROM:FEFB                 ld      hl, unk_FEE2
    ROM:FEFE
    ROM:FEFE loc_FEFE:                               ; CODE XREF: kbd_scan2+85j
    ROM:FEFE                 add     a, l
    ROM:FEFF                 ld      l, a
    ROM:FF00                 ld      a, (hl)
    ROM:FF01                 cp      40h ; '@'
    ROM:FF03                 pop     hl
    ROM:FF04                 ret     c
    ROM:FF05                 push    hl
    ROM:FF06
    ROM:FF06 loc_FF06:                               ; CODE XREF: kbd_scan2+69j
    ROM:FF06                 ld      l, a
    ROM:FF07                 ld      a, (byte_8002)
    ROM:FF0A                 ld      h, a
    ROM:FF0B                 and     40h ; '@'
    ROM:FF0D                 jp      nz, loc_FF1A
    ROM:FF10                 ld      a, l
    ROM:FF11                 cp      40h ; '@'
    ROM:FF13                 jp      m, loc_FF3F
    ROM:FF16                 and     1Fh
    ROM:FF18                 pop     hl
    ROM:FF19                 ret
    ROM:FF1A ; ---------------------------------------------------------------------------
    ROM:FF1A
    ROM:FF1A loc_FF1A:                               ; CODE XREF: kbd_scan2+9Bj
    ROM:FF1A                 ld      a, (byte_7606)
    ROM:FF1D                 or      a
    ROM:FF1E                 jp      z, loc_FF2A
    ROM:FF21                 ld      a, l
    ROM:FF22                 cp      40h ; '@'
    ROM:FF24                 jp      m, loc_FF2A
    ROM:FF27                 or      20h ; ' '
    ROM:FF29                 ld      l, a
    ROM:FF2A
    ROM:FF2A loc_FF2A:                               ; CODE XREF: kbd_scan2+ACj
    ROM:FF2A                                         ; kbd_scan2+B2j
    ROM:FF2A                 ld      a, h
    ROM:FF2B                 and     20h ; ' '
    ROM:FF2D                 jp      nz, loc_FF3F
    ROM:FF30                 ld      a, l
    ROM:FF31                 cp      40h ; '@'
    ROM:FF33                 jp      m, loc_FF3B
    ROM:FF36                 ld      a, l
    ROM:FF37                 xor     20h ; ' '
    ROM:FF39                 pop     hl
    ROM:FF3A                 ret
    ROM:FF3B ; ---------------------------------------------------------------------------
    ROM:FF3B
    ROM:FF3B loc_FF3B:                               ; CODE XREF: kbd_scan2+C1j
    ROM:FF3B                 ld      a, l
    ROM:FF3C                 and     2Fh ; '/'
    ROM:FF3E                 ld      l, a
    ROM:FF3F
    ROM:FF3F loc_FF3F:                               ; CODE XREF: kbd_scan2+A1j
    ROM:FF3F                                         ; kbd_scan2+BBj
    ROM:FF3F                 ld      a, l
    ROM:FF40                 cp      40h ; '@'
    ROM:FF42                 pop     hl
    ROM:FF43                 ret     p
    ROM:FF44                 push    hl
    ROM:FF45                 ld      l, a
    ROM:FF46                 and     0Fh
    ROM:FF48                 cp      0Ch
    ROM:FF4A                 ld      a, l
    ROM:FF4B                 jp      m, loc_FF50
    ROM:FF4E                 xor     10h
    ROM:FF50
    ROM:FF50 loc_FF50:                               ; CODE XREF: kbd_scan2+D9j
    ROM:FF50                 pop     hl
    ROM:FF51                 ret
    ROM:FF51 ; End of function kbd_scan2
    собственно вот тут я её дербаню
    https://www.dropbox.com/s/ri4rxu6xu2...ba91r.idb?dl=0

    http://www.emuverse.ru/wiki/%D0%A0%D...83%D1%80%D0%B0
    Последний раз редактировалось jerri; 11.03.2017 в 22:06.
    С уважением,
    Jerri / Red Triangle.

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

    По умолчанию

    Да вроде все просто, ряды пишуться в #8000, кнопари читаются из #8001. Сделан программный антидребезг, ну как и предполагалось, далее по табличкам ищут код клавиши. По схеме http://www.danbigras.ru/RK86/CPU/KeybrdP4.jpg можно составить карту, но это для сазорадистов, возможно они уже это сделали, ждем инфу от знатоков. Код конечно, хм.

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

    Че там в #8002 и #8003 не ясно, что то полезное наверное.

  5. #64
    Banned
    Регистрация
    05.10.2016
    Адрес
    г. Санкт-Петербург
    Сообщений
    1,080
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    5
    Поблагодарили
    5 сообщений
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Чтобы понять надо изучать исходники с комментариями. Исходники монитора и исходник теста.
    В мониторе за счёт более эффективного программирования освобождено место для подпрограмм чтения/записи байта из доп.ОЗУ до 8 мб. Тест дизассемблировал 25 лет назад, чтобы доработать. Скоро переделаю и его. Но уже и так транслируется для тестирование не только 16К, а всех 32-х кб.
    Вложения Вложения
    Последний раз редактировалось barsik; 11.03.2017 в 22:57.

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

    По умолчанию

    А точно у ВВ55 же есть управляющий регистр, он #8003, ну тогда все ясно. #8002 на всякий случай в 0 ставят.

  7. #66
    Veteran Аватар для Pyk
    Регистрация
    05.04.2013
    Адрес
    с. Починки, Нижегородская обл.
    Сообщений
    1,178
    Спасибо Благодарностей отдано 
    263
    Спасибо Благодарностей получено 
    456
    Поблагодарили
    182 сообщений
    Mentioned
    7 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    По поводу клавиатуры: на самом деле на РК обычно не опрашивают напрямую клавиатуру через порты, а пользуются достаточно удобным системным вызовом F81B - ввод кода нажатой клавиши без ожидания нажатия. Возвращает в аккумуляторе код нажатой клавиши либо FF, если ничего не нажато. Неприменимо, если нужно отслеживать одновременные нажатия, зато универсально: на РК применялись два основных типа клавиатуры: оригинальная РК и менее распространенная МС7007.

  8. #67
    Banned
    Регистрация
    22.05.2011
    Адрес
    г. Дзержинск, Украина
    Сообщений
    6,841
    Спасибо Благодарностей отдано 
    483
    Спасибо Благодарностей получено 
    657
    Поблагодарили
    511 сообщений
    Mentioned
    10 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Pyk Посмотреть сообщение
    По поводу клавиатуры: на самом деле на РК обычно не опрашивают напрямую клавиатуру через порты
    ну конечно все через монитор...
    а потом во всем софте тупое дубовое управление...

    полез за схемой РК-шки короче...


    Цитата Сообщение от krt17 Посмотреть сообщение
    А точно у ВВ55 же есть управляющий регист
    мне вот интересно
    что если перепрограммировать на ввод то что хардварно сделано на вывод
    вопрос к железятникам
    что я буду от туда читать????

  9. #68
    Guru Аватар для jerri
    Регистрация
    01.03.2005
    Адрес
    Samara
    Сообщений
    4,751
    Спасибо Благодарностей отдано 
    256
    Спасибо Благодарностей получено 
    266
    Поблагодарили
    200 сообщений
    Mentioned
    12 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

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

    я помню на микроше в игре змей горыныч я задавал левый пробел для поворота налево а правый пробел для поворота направо.
    это было круто тогда а сейчас у меня вопрос "Как и нафига?"

    и до сих пор рассматривая опрос клавиатуры спектрума
    и читая что "при изготовлении Радио РК86 мы все делали ваще просто-просто в 2.9 корпусов"
    возникает вопрос "Вы серьезно?"

    нажатие любого сочетания из 40 кнопок и опрос всего одной из всего богатства в 64 кнопки.

    я знаю что назвать РК86 игровым компом это очень громкое и смелое решение.
    но блин бытовой комп должен быть немного игровым.
    А тут - световое перо (нафиг не нужное) принтер (дома?)
    джойстик где? Мышь где?
    С уважением,
    Jerri / Red Triangle.

  10. #69
    Activist Аватар для SegaBoy
    Регистрация
    12.11.2009
    Адрес
    Москва
    Сообщений
    389
    Спасибо Благодарностей отдано 
    36
    Спасибо Благодарностей получено 
    79
    Поблагодарили
    58 сообщений
    Mentioned
    2 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Опросить клавиатуру через порты достаточно легко. Записывая поочерёдно 0 в один из разрядов порта А контроллера ВВ55, из порта В можно читать состояние одного ряда клавиш.
    Если ничего не нажато, то возвращаются единицы. Если нажато, то на этих битах будут нули.
    Например записав 0xFE по адресу 0x8000 опрашиваться будет ряд номер ноль. Прочитав байт из адреса 0x8001 получим состояние всех клавиш в этом ряду. В принципе, на Спектруме опрос происходит так же, только там порты не в памяти.
    Записав в порт А 0x00 можно опросить сразу все линии и узнать нажата ли хоть какая-то клавиша.

    Код:
                           порт А вход									
    0x7F    0xBF    0xDF    0xEF    0xF7    0xFB    0xFD    0xFE
    7	6	5	4	3	2	1	0		
    
    SPACE	ВW	ОO	ГG	?/	7'	DOWN		7	
    
    Ч^	ЖV	НN	ФF	.>	6&	RIGHT	F4	6	
    
    Щ]	УU	МM	ЕE	-=	5%	UP	F3	5	
    
    Э\	ТT	ЛL	ДD	,<	4$	LEFT	F2	4	порт В выход
    
    Ш[	СS	КK	ЦC	;+	3#	ЗБ	F1	3	
    
    ЗZ	РR	ЙJ	БB	:*	2"	ВК	АР2	2	
    
    ЫY	ЯQ	ИI	АA	9)	1/	ПС	СТР	1	
    
    ЬX	ПP	ХH	Ю@	8(	0	ТАБ	\	0
    - - - Добавлено - - -

    Цитата Сообщение от NEO SPECTRUMAN Посмотреть сообщение
    ...
    мне вот интересно
    что если перепрограммировать на ввод то что хардварно сделано на вывод
    вопрос к железятникам
    что я буду от туда читать????
    Если порт А клавиатуры перепрограммировать на ввод, то с него будут читаться нули, если клавиши не нажаты. При нажатии на клавишу появятся единица в каком-то разряде, но программно можно будет определить только в каком ряду эта клавиша. И, в принципе, больше ничего страшного не случится.
    Хуже будет если порт В перепрограммировать на вывод.
    Последний раз редактировалось SegaBoy; 12.03.2017 в 02:29.

  11. #70
    Activist
    Регистрация
    14.05.2013
    Адрес
    г. Москва
    Сообщений
    254
    Спасибо Благодарностей отдано 
    1
    Спасибо Благодарностей получено 
    6
    Поблагодарили
    2 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от SegaBoy Посмотреть сообщение
    Хуже будет если порт В перепрограммировать на вывод.
    Почему? Там же вроде диоды стоят.

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

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

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

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

Похожие темы

  1. Ответов: 210
    Последнее: 26.07.2019, 11:45
  2. Ответов: 6
    Последнее: 07.02.2016, 11:55
  3. Трюки с контроллером FDD 82077
    от Titus в разделе Утилиты
    Ответов: 4
    Последнее: 10.06.2011, 19:17

Ваши права

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