Библиотека PS2->KOI8-R

ZX evolution software and hardware

Postby SfS » 10 Nov 2013, 11:59

Предлагаю вниманию библиотеку для работы с клавиатурой PS2.
Рус-Лат - CTRL+SHIFT
CAPS - работает
ALT - временное переключение раскладки
Shift - работает

Всякие служебные клавиши, типа ESC F1-F12 и прочие курсорные стрелки - работают.

Код возвращается функцией Inkey в регистре HL.
H=0, L=KOI8-R
H=1, L=расширенный код (F1-F12, стрелки и проч.)

Для сборки необходим z80asm из z88dk
Attachments
z80asm_ps2kbd-10.11.2013.tar.bz2
(7.45 KB) Downloaded 98 times
ZX-Phoenix.
Pentevo ZX-Evoluton Rev. B (зелёная)
SfS
 
Posts: 202
Joined: 24 Jun 2010, 08:07
Group: Registered users

Postby DimkaM » 10 Nov 2013, 15:57

Что не понравилось.
Слишком долгий процесс определения нажата какая либо кнопка или нет.
Долшно быть по быстрому, опросил рег, исли ничё нету, то сразу возврат.
Чтение рега итак жрёт 300тактов(при 3.5мгц), а тут ещё добавляется овер дофига, чуть ли не целый инт.
И вообще не понятно, что за фигня у тебя в начале GetPS2, cmos_wr(0xff,2) у тебя уже был в инициализации.

У меня примерно так сделано:
Code: Select all
InKey:
   ld   bc,   $DFF7
   ld   a,   $FF
   out   (c),a
   ld   bc,   $BFF7
   in   a,(c)
   inc a
   jp z,ps2kbd_FF
   dec a
   jp nz,ps2_event
   ld hl,0
   ret
ps2_event:
   дальше делай уже чё хочешь


И ещё, тупой перебор таблиц, это тормоз.
ZX-Evo rev C, ZXNetUsb rev A
DimkaM
 
Posts: 1269
Joined: 24 Mar 2010, 13:42
Location: джунгли Амазонки
Group: Registered users

Postby SfS » 10 Nov 2013, 18:06

А да. Точно. лишнее с cmos_wr(0xff,2).

Оправдаюсь. Всё написал за сегодня с утра:)

Таблицы - из соображений универсальности. Сменил таблицу - сменил раскладку.

Скорости хватает с избытком для редактора, например. Библиотека нацелена на универсальность, а не на скорость.
ZX-Phoenix.
Pentevo ZX-Evoluton Rev. B (зелёная)
SfS
 
Posts: 202
Joined: 24 Jun 2010, 08:07
Group: Registered users

Postby SfS » 10 Nov 2013, 18:07

В принципе код ещё можно править долго и вылизывать. Но главное - оно работает и может кому будет полезно.
ZX-Phoenix.
Pentevo ZX-Evoluton Rev. B (зелёная)
SfS
 
Posts: 202
Joined: 24 Jun 2010, 08:07
Group: Registered users

Postby DimkaM » 10 Nov 2013, 19:01

Ну у меня тоже перебор по таблицам.
Код сам не писал, а за три минуты нагуглил и скомуниздил с аврки, тока добавил русский :confused: .
Я ваще любитель чёнить скомуниздить.

Предлагаю тебе всё же вылизать код.
Также вылизать вывод в текстмод.
Далее оформить как bios.
можно взять у Савелия драйвера дисков и запихать туда же.

Далее берём у ElmChan'а либы printf, scanf, fatfs и надстраиваем над биосом.
Вуаля недоОСь готова.
ZX-Evo rev C, ZXNetUsb rev A
DimkaM
 
Posts: 1269
Joined: 24 Mar 2010, 13:42
Location: джунгли Амазонки
Group: Registered users

Postby SfS » 10 Nov 2013, 20:31

Ты прямо мысли мои прочитал насчёт текстмода и фата :) Но я думаю так. Код вылизывать - дело бесконечное.
Пусть всё работает неоптимально, но работатет, чем будет потрачено неделя времени на экономию 10 байт и 20 тактов.

Там сам код обработчика клавиатуры занимает 418 байт. И таблица-раскладка 601. Таблицу не сократишь просто так. Ну а код.. ну байт 20-50 можно сократить. Игра по времени не стоит свеч.

Вывод на экран сейчас хочу сделать универсально - все режимы, чтобы были поддержаны.

И менеджер памяти надо адаптировать. Я для AVR писал, но там страничек нет. Хочется нормальный malloc.

Эх.. если бы всё что хотелось - моглось, в каком прекрасном мире мы бы жили! :)(:
ZX-Phoenix.
Pentevo ZX-Evoluton Rev. B (зелёная)
SfS
 
Posts: 202
Joined: 24 Jun 2010, 08:07
Group: Registered users


Return to Пентева - софт и железо

Who is online

Users browsing this forum: Google [Bot] and 2 guests

cron