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

User Tag List

Страница 8 из 36 ПерваяПервая ... 456789101112 ... ПоследняяПоследняя
Показано с 71 по 80 из 353

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

  1. #71
    Guru Аватар для jerri
    Регистрация
    01.03.2005
    Адрес
    Samara
    Сообщений
    4,756
    Спасибо Благодарностей отдано 
    284
    Спасибо Благодарностей получено 
    292
    Поблагодарили
    219 сообщений
    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.

  2. #72
    Banned
    Регистрация
    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.

  3. #73
    Guru Аватар для jerri
    Регистрация
    01.03.2005
    Адрес
    Samara
    Сообщений
    4,756
    Спасибо Благодарностей отдано 
    284
    Спасибо Благодарностей получено 
    292
    Поблагодарили
    219 сообщений
    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.

  4. #74
    Banned
    Регистрация
    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.

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

    По умолчанию

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

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

    По умолчанию

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

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

  8. #77
    Banned
    Регистрация
    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.

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

    По умолчанию

    покопался в схеме
    конечно книжачка
    Домашний компьютер Г.В.Зеленко
    сильно помогла в восприятии

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

    а теперь вопросы

    В РК можно программно мигать светодиодом????

    так это просто шикарно!!!

    у ИК57 есть доступ ко всем портам и пзу о_О?????
    можно перекидывать содержимое портов и пзу на экран????


    у РК с 16К рамы
    в окне 4000-7FFF так понимаю не зеркалиться 0000-3FFF
    что будет читаться от туда FF? или 00?


    исходя из этого возникает вопрос
    КАКОГО!!!! мужского полового члена в 16к версии нельзя было кинуть проводок
    с 9 ноги DD10.3 на 4 ногу DD10.2 (ну или любая другая манипуляция(я не железятник))

    получить этим зеркало в окне 4000-7FFF

    и использовать ОДНО!!!!! ПЗУ(32К версию) для ОБОИХ КОМПОВ!!!!!????? о_О
    а при добавлении еще 16К проводок снимать

    я то думал адреса экрана и переменных
    как то заметно отличаются
    а нифига (кому там говоришь памятник ставить?)

    по моему дебилизм разработчиков не в отдавании 24К адресного пространства под порты
    а именно в использовании двух версий пзу

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

    Цитата Сообщение от 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
    исправляю на


    Код:
    af825:    ld a,($0000)        ; ждём команды с клавиатуры
        ld ($0000),a
    
        ld a,(ppa_kl+2)    ; проверим нажали ли на спец.клавишу
        ld a,a
        and $80
        jp z,key_rl    ; если нажата РУСЛАТ
        ld a,b
        and $40
        jp z,af8f6        ; если нажата УС
        ld a,b
        and $20
        jp z,afa9f        ; если нажата СС
        jp af825
    но сами шестнадцатеричные цифры я пишу большими
    Код:
    ld a,$FF
    и их сразу видно
    и они заметно отличаются от меток, переменных компилятора

    не помню чтоб у меня хоть раз возникало спутывание l и 1
    я чаще исправляю увиденную опечатку забывая сменить раскладку
    (не если бы она менялось с первого раза... и когда их у меня...)
    а потом не замечаю что там какое нибудь jз defи lв напечаталось...
    [свернуть]
    Последний раз редактировалось NEO SPECTRUMAN; 12.03.2017 в 16:00.

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

    По умолчанию

    Цитата Сообщение от A_AVL Посмотреть сообщение
    Строки от столбцов в клавиатуре РК разделены диодами. В такой конфигурации можно отслеживать хоть все нажатые кнопки.
    Да, это я со Специалистом путаю.

    Цитата Сообщение от NEO SPECTRUMAN Посмотреть сообщение
    у ИК57 есть доступ ко всем портам и пзу о_О?????
    можно перекидывать содержимое портов и пзу на экран????
    Можно-то можно, но это бессмысленно - скорее всего даже увидеть ничего не получится из-за наличия управляющих кодов F0-FF

    Цитата Сообщение от NEO SPECTRUMAN Посмотреть сообщение
    у РК с 16К рамы
    в окне 4000-7FFF так понимаю не зеркалиться 0000-3FFF
    что будет читаться от туда FF? или 00?
    82h скорее всего - слово состояния процессора, так как на РК не использовались шинные формирователи

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

    По умолчанию

    Цитата Сообщение от Pyk Посмотреть сообщение
    Можно-то можно, но это бессмысленно -
    ну это
    1. нужно эмулировать
    2. нужно эмулировать
    3. нужно эмулировать

    иначе эмулятор не truЪ

    а 4-е
    если бы вместо этого для DMA
    вместо 8000-FFFF было зеркало 0000-7FFF
    это можно было бы попытаться использовать для ускорения кода

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

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

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

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

Ваши права

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