Titus,
Не прокатит, коды отжатия как выяснилось не уникальны :(
вверх, вниз - совпадают
пробел, вправо - совпадают.
И.т.д, что обламывает нас с отслеживанием не только одновременного нажатия но и перебора кнопок без отпускания.
Вид для печати
Не забываем, что палитра 128, с не 16 цветов)
С чего это они одинаковые? Код отжатия это код нажатия с установленным 7-м битом.
Я тоже так думал
- - - Добавлено - - -
написал:
не сработало, начал разбираться.. и увидел, что допустим код нажатия вверх=b1101100 отжатия = b10001100Код:KEYB:
MOV R0,-(SP)
MOV #PKEY/2,@#177010 ;ячейка PKEY в памяим ЦП для кода клавиши
MOVB @#177702,R0 ; поместить полученный скэн-код в R0
BPL 11$
BICB 128., R0
11$: CMP #91.,R0 ;вправо
BNE 1$
MOV #1,R0
BR 4$
1$: CMP #78.,R0 ;влево
BNE 2$
MOV #2,R0
BR 4$
2$: CMP #108.,R0 ;вверх
BNE 3$
MOV #4,R0
BR 4$
3$: CMP #92.,R0 ;вниз
BNE 4$
MOV #8.,R0
4$: XOR R0, @#177014
MOV (SP)+,R0
JMP @#175446
Это на реале?
Собственно начинать надо было с чтения технического описания. Там, в разделе 7.4.5 описаны регистры клавиатуры, где прямо сказано, что номер нажатой клавиши содержится в разрядах 0-6, а номер отжатой в разрядах 0-3, и что разряды 0-3 для нажатой и отжатой клавиши совпадают. Ещё выше в ТО есть таблица 2, в которой указано расположение клавиш в матрице клавиатуры по линиям X и Y. Так вот, разряды 0-3 это номер линии Y, а разряды 6-4 это номер линии X. Контроллер клавиатуры может обрабатывать до 16 одновременно нажатых клавиш, но при условии, если они расположены на разных линиях Y. Клавиши, расположенные на одной линии Y не обрабатываются. В качестве примера "стрелка вверх" (0154) и "стрелка вниз" (0134) расположены на одной линии Y12. При нажатии "стрелка вверх" получим код 0154, держа её нажатой нажимаем "стрелка вниз" и ничего не получаем. Отжимаем "стрелка вверх" и также ничего не получаем. И только при отжатии "стрелка вниз" получим код 0214. Таким образом при отжатии клавиши передается только номер линии Y.
Кстати эмулятор UKNCBTL поддерживает эту особенность. В образе sysimage.dsk есть программа SCAN.SAV, с помощью которой можно посмотреть скэн-коды клавиатуры.
я сам писал спрайтовую стратегию ТУРКИ 1.0 на своей РМПешке домашней, игра была как сильно упрощённый варлорд самый самый первый - нельзя было иметь больше 10-ти отрядов и на города-замки стоял строгий предел, карта была 100Х100, а бой происчходил на отдельном маленьком экранчике , всё рисовал сам с нуля в редакторе "Магнифайер" и работал со спрайтами на паскале через SPROUT.OBJ - весело было.
я ни разу нигде тут не упомянул о рил-тайме
он допустим в таких сценариях как тропа или звёздный патруль (полчаса на миссию)
переделать спрайты двух цветные контурные как у спектрума не такая сложная задача.
и сделать к ним инверсию
не цепляйтесь к конкретному граф стандарту ибо истинно глаголю УК-НЦ есть компьютер для серых градаций !!!
по поводу палитры - я просил о другом, в не просто о RGB > GRB переключении,
речь вот о чём : по памяти в файлах поздних разработок (исходниках)
не помню в каком конкретно CPL или PPL за палитру стартовую отвечали две
большущие переменные в которые при INI то ли посылались то ли какое то другое действие происходило
два длиннющих двоичных числа
я эксперементировал так,
писал в эту палитру 0, рисовал на экран
потом делал inc пока не набиралось значение этих длиннющих двоичных чисел и полуяалась эффект
повления скажем заставки из мглы )))
Спорное заявление.
В детстве у меня на тоже был ЧБ монитор, я даже его через RGB с резисторами подключил, чтобы градации лучше видно было. Попросили как-то товарищи нарисовать заставку для газеты, взялся с огромным энтузиазмом.. смешивал градации.. рисовал градиенты.. короче получилось изумительно... НО каков был мой ШОК когда мы посмотрели мой "шедевр" на ЦТВ "Юность".."Кислотный трип шизофреника"..
такого количества цветов и сразу БК еще не видела :)
Я к тому что сейчас вы наверное единственный кто пользует УКНЦ через монохром.. пожалейте психику окружающих :)
Рисовать нужно в цвете, а на ЧБ и так неплохо будет.
В цвете это будет "радуга" :)