User Tag List

Страница 6 из 30 ПерваяПервая ... 2345678910 ... ПоследняяПоследняя
Показано с 51 по 60 из 361

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

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

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

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

    По умолчанию

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

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

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

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

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

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

  3. #2

    Регистрация
    05.04.2013
    Адрес
    Починки, Нижегородская обл.
    Сообщений
    1,371
    Спасибо Благодарностей отдано 
    401
    Спасибо Благодарностей получено 
    647
    Поблагодарили
    255 сообщений
    Mentioned
    26 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от jerri Посмотреть сообщение
    мне надо отслеживать нажатие нескольких клавиш одновременно
    это реально?
    Вроде бы два одновременных нажатия можно отследить всегда. Если больше, то нужно смотртеть на матрицу - не появятся ли ложные нажатия.

  4. #3

    Регистрация
    26.04.2016
    Адрес
    г. Полоцк, Беларусь
    Сообщений
    48
    Записей в дневнике
    4
    Спасибо Благодарностей отдано 
    18
    Спасибо Благодарностей получено 
    7
    Поблагодарили
    4 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Строки от столбцов в клавиатуре РК разделены диодами. В такой конфигурации можно отслеживать хоть все нажатые кнопки.

  5. #4

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

    По умолчанию

    Цитата Сообщение от Pyk
    два одновременных нажатия можно отследить всегда
    Собственной подпрограммой можно. Нельзя только стандартной п/п-мой из ПЗУ F800.

    Можно ли, имея КСИ, ССИ и бордюр аппаратными, заставить РК86 выводить на VGA?
    Частота строк сейчас 15.625, для VGA надо 31.50 КГЦ. Даже не меняя такт ВГ75, сократив разрешение вдвое до 32*24, мы удвоим частоту строк, а частоту кадров программно поднимем до 70 Гц. Тогда сигнал будет пригоден для VGA монитора.

    Получается, что заменив такт 8 МГЦ на ВГ75 на 16 МГЦ, т.е лишь убрав один каскад деления в счётчике ИЕ4 на плате РК86, можно получить сигнал для монитора VGA. Расход деталей: два TTL-корпуса на формирование ССИ и КСИ.

    Получается, что РК86 это единственный самодельный компьютер пригодный для VGA монитора. Это ценное открытие для тех, у кого РК86 доработан до цвета. Так как у многих фанатов РК86 нет цветного CGA, только монохром. Зато у всех есть цветной VGA.
    Последний раз редактировалось barsik; 12.03.2017 в 21:51.

  6. #5

    Регистрация
    12.11.2009
    Адрес
    Москва
    Сообщений
    403
    Спасибо Благодарностей отдано 
    50
    Спасибо Благодарностей получено 
    90
    Поблагодарили
    66 сообщений
    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.

  7. #6

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

    По умолчанию

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

  8. #7

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

    По умолчанию

    Цитата Сообщение от SegaBoy Посмотреть сообщение
    Опросить клавиатуру через порты достаточно легко. Записывая поочерёдно 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
    - - - Добавлено - - -



    Если порт А клавиатуры перепрограммировать на ввод, то с него будут читаться нули, если клавиши не нажаты. При нажатии на клавишу появятся единица в каком-то разряде, но программно можно будет определить только в каком ряду эта клавиша. И, в принципе, больше ничего страшного не случится.
    Хуже будет если порт В перепрограммировать на вывод.

    А кнопка рус/лат где тут?
    С уважением,
    Jerri / Red Triangle.

  9. #8

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

    По умолчанию

    Спец клавиши СС, УС, РУСЛАТ стоят в порту C по битам D5, D6, D7. Посмотрите начало листига РК-ТЕСТА в моём последнем посте. Бит магнитофона (куда можно завести КСИ с выхода VRTC) - бит D4. Светодид - бит D3 (это уже на вывод). Журнал РАДИО 06.1986 стр 27.
    Последний раз редактировалось barsik; 12.03.2017 в 10:39.

  10. #9

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

    По умолчанию

    barsik, я спросил где она в этой табличке.

    кстати почему так?
    Код:
    AF825:	LD	A,(0)		; ждём команды с клавиатуры
    	LD	(0),A
    
    	LD	A,(PPA_KL+2)	; проверим нажали ли на спец.клавишу
    	LD	B,A
    	AND	80H
    	JP	Z,KEY_RL	; если нажата РУСЛАТ
    	LD	A,B
    	AND	40H
    	JP	Z,AF8F6		; если нажата УС
    	LD	A,B
    	AND	20H
    	JP	Z,AFA9F		; если нажата СС
    	JP	AF825
    чем отличается
    .xcall PAUSHL
    от
    CALL PAUSHL
    Последний раз редактировалось jerri; 12.03.2017 в 10:34.
    С уважением,
    Jerri / Red Triangle.

  11. #10

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

    По умолчанию

    Цитата Сообщение от jerri
    я спросил где она в этой табличке
    В таблице приведены коды клавиш матрицы 8*8, а спец клавиши стоят вне основного поля. УС и СС это модификаторы кодов нажатых клавиш. А именно, клавиша УС (Control на вражеском языке) сбрасывает бит 40H, а СС (на вражеском языке SHIFT) устанавливает бит 20H (точнее делает XOR 20H). А клавиша РУСЛАТ по F81B выдаёт код FE, а в F803 просто меняет байт RUSLAT (кажется 7606). Клавиша РУСЛАТ в 8-ми битовой кодировке (т.е при КОИ-8) должна называться CAPS LOCK (так она и используется на ОРИОНЕ в CP/M драйверах)

    Код:
    .
    	LD	A,(0)
    	LD	(0),A
    Думаю, что это для отладки. Чтобы радиолюбитель мог осцилографом проконтролировать формирование сигналов /RAS /CAS для РУ3-тьих.

    Цитата Сообщение от jerri
    чем отличается .xcall от CALL
    Это надо спрашивать у авторов РК86: Попова, Горшкова и Зелёнко. Макрокоманда .xcall - это цепочка команд заменяет CALL тогда, когда нет ОЗУ (отчего нельзя использовать стек). Точка в макрокомандах в M80 не обязательна, а мнемоники пишу большими буквами, чтобы не портить зрение, а все служебные слова пишу маленькими буквами для отличия. Некоторые делают наоборот, но это глупо (т.к зрение одно и большие буквы различаются лучше, - например, легко перепутать l и 1).

    Но это не лучшая идея получения подпрограмм в программах без ОЗУ. Я в своих тестах СПЕЦИАЛИСТА и ОРИОНА делал так. Тестирую микросхему ППА, которая стоит в области памяти, и если исправна, ставлю стек на её адрес. Таким образом я получаю стек глубиной в 1 и ещё одну служебную ячейку. А с помощью всего одной служебной ячейки тоже можно делать тесты ОЗУ с подпрограммами. И даже совсем без ячеек ОЗУ можно. Тогда составляется таблица адресов возвратов и в одном из регистров подпрограмме передаётся вектор. Все подпрограммы после отработки уходят на п/п-мму @RET, где по вектору из таблицы извлекается адрес возврата. Итого имеем 256 вызовов подпрограмм не имея стека.

    А вообще-то в РК86 применена лобовая идиотическая идея сканирования матрицы. Так делают только тупые профессионалы, всё делающие по учебникам. А любители делают лучше. Вот в СПЕЦИАЛИСТЕ клавиатуру делал любитель. Там нет никаких идиотических диодов. Выкидываем 0 по горизонтали, читаем по вертикали. Затем перепрограммируем ППА и выкидываем 0 по вертикали, а читаем по горизонтали. Из двух байтов получаем адрес в таблице размещения клавиш. Это в 10 раз быстрее и, т.к таблица, легко перемещать и менять коды клавиш, как угодно.

    Цитата Сообщение от jerri
    Читая, что "при изготовлении РАДИО-РК86 мы все сделали просто-просто в 29 корпусов", возникает вопрос "Вы серьезно?" ...определение одновременного нажатия всего одной из всего богатства в 64 кнопки. Назвать РК86 игровым компом это очень громкое и смелое решение. Но блин, бытовой комп должен быть хоть немного игровым. А тут - световое перо (нафиг не нужное), принтер (дома?). А джойстик где? Мышь где?
    Есть доп.ППА. Через него можно подключить любое устройство, не только принтер. Контактный джойстик подключается параллельно курсорным клавишам. Мышь от БК-010 цеплялась к ОРИОНУ через ППА, так что и к РК86 её можно применить (мышь от БК даёт готовый байт сигналов, а не передаёт их по последовательному интефейсу). Мышь от PC подключить в 100 раз сложнее, но ведь её подключили к ОРИОНУ, так что можно заимствовать, Только зачем Вам мышь, если экран текстовый? А световое перо существенно облегчает рисование лабиринтов псевдографикой 128*60.

    Насчёт 29-ти микросхем, это конечно глупость. Надо было 30 микросхем. Во-первых, круглая цифра. А во-вторых 30-я микросхема позволила бы иметь ССИ аппаратно, избавившись от необходимости делать бордюр слева и справа программно. Что позволило бы произвольно менять формат экрана по горизонтали. Например, сделать экран 32*24 и адаптировать программы от ZX80, а также тогда не надо было бы в графическом режиме переносить разбухший экран ниже 7500.

    А если бы микросхем поставили 31-у, то были бы ССИ, КСИ и бордюр - аппаратными, отчего экран бы сократился на треть, увеличилось бы разрешение псевдографики по вертикали, а быстродействие возросло бы на 10%. Можно было бы запрограммировать ВГ75 в любые режимы, с любой матрицей экрана. Хотя число строк сильно сокращать нельзя, иначе нарушится регенерация ОЗУ.

    Интересно, можно ли, имея КСИ, ССИ и бордюр аппаратными, заставить РК86 выводить на VGA?

    Частота строк сейчас 15.625, для VGA надо 31.50 КГЦ. Даже не меняя такт ВГ75, сократив разрешение вдвое до 32*24, мы удвоим частоту строк, а частоту кадров программно поднимем до 70 Гц. Тогда сигнал будет пригоден для VGA монитора.

    Получается, что заменив такт 8 МГЦ на ВГ75 на 16 МГЦ, т.е лишь убрав один каскад деления в счётчике ИЕ4 на плате РК86, можно получить сигнал для монитора VGA. Расход деталей: два TTL-корпуса на формирование ССИ и КСИ.

    Получается, что РК86 это единственный самодельный компьютер пригодный для VGA монитора. Это ценное открытие для тех, у кого РК86 доработан до цвета. Так как у многих фанатов РК86 нет цветного CGA, только монохром. Зато у всех есть цветной VGA.
    Последний раз редактировалось barsik; 12.03.2017 в 21:51.

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

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

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

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

Ваши права

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