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

User Tag List

Страница 1 из 18 12345 ... ПоследняяПоследняя
Показано с 1 по 10 из 171

Тема: Универсальный контроллер PS/2 клавиатуры для компьютеров с матричными клавиатурами.

  1. #1
    Master
    Регистрация
    12.04.2017
    Адрес
    г. Тольятти
    Сообщений
    741
    Спасибо Благодарностей отдано 
    137
    Спасибо Благодарностей получено 
    92
    Поблагодарили
    43 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию Универсальный контроллер PS/2 клавиатуры для компьютеров с матричными клавиатурами.

    Предлагается простая схема и программное обеспечение для универсального безвейтового контроллера PS/2 клавиатуры, подходящего для большинства "древних" бытовых компьютеров типа Спектрум, Орион, Корвет и других, в конструкции которых использовалась матричная клавиатура размером до 8*16. Разведены два варианта печатных плат.

    Нажмите на изображение для увеличения. 

Название:	IMG_20210417_223848.jpg 
Просмотров:	478 
Размер:	39.5 Кб 
ID:	75243Нажмите на изображение для увеличения. 

Название:	IMG_20210417_223839.jpg 
Просмотров:	416 
Размер:	51.1 Кб 
ID:	75244Нажмите на изображение для увеличения. 

Название:	IMG_20210427_205902.jpg 
Просмотров:	1244 
Размер:	56.3 Кб 
ID:	75312Нажмите на изображение для увеличения. 

Название:	IMG_20210427_205958.jpg 
Просмотров:	1195 
Размер:	53.9 Кб 
ID:	75313Нажмите на изображение для увеличения. 

Название:	IMG_20210427_210006.jpg 
Просмотров:	1203 
Размер:	51.0 Кб 
ID:	75314Нажмите на изображение для увеличения. 

Название:	IMG_20210620_193225.jpg 
Просмотров:	1077 
Размер:	36.8 Кб 
ID:	75654Нажмите на изображение для увеличения. 

Название:	IMG_20211004_190416.jpg 
Просмотров:	610 
Размер:	59.8 Кб 
ID:	76182
    Schematic_KbCtrl_2021-04-17.pdf
    Gerber_PCB_KbCtrl_2021-03-06 (1).zip
    Gerber_PCB_2020-10-21_18-11-37_2020-10-21_20-02-12 (1).zip

    Код написан в среде Ардуино для ядра MiniCore, которое позволяет работать с Атмега8, 48, 168, 328 без кварца , но будет работать и на стандартном Ардуино Нано или Уно. Я использовал Атмегу168. Второй компонент системы - матрица аналоговых ключей MT8816. На Али их продают сотнями по бросовым ценам. Программа проста и написана в индийском стиле. Она содержит массив, который устанавливает соответствие между сканкодом и кодом активации соответствующего ключа матрицы.

    Рекомендации по сборке.

    Подключение к Спектруму.

    Как модифицировать прошивку.

    Как прошить:



    Исходник программы для клавиатуры Спектрума
    Код:
    #include <PS2KeyRaw.h>
    #define AX0 4
    #define AX1 5
    #define AX2 6
    #define AX3 7
    #define AY0 8
    #define AY1 9
    #define AY2 10
    #define RSTMT 14
    #define CSMT  15
    #define DATMT 16
    #define STBMT 17
    #define DATAPIN 2
    #define IRQPIN  3
    
    volatile boolean d = HIGH;
    uint8_t table[128] = {127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,0,127,127,32,48,127,127,127  ,
    1,17,16,33,49,127,127,3,2,18,34,51,50,127,127,112,4,19,36,35,52,127,127,115,116,100,20,84,68,127,127,127,114,99,83,67,66,
    127,127,127,98,82,81,64,65,127,127,127,127,97,127,80,127,127,127,127,127,127,127,127,127,127,127,113,96,127,127,127,127,127,127,127,127,127,127,127,
    127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127};
    
    PS2KeyRaw keyboard;
    void setup() {
      //Инициализация портов
      pinMode(AX0, OUTPUT);   //AX0
      pinMode(AX1, OUTPUT);   //AX1
      pinMode(AX2, OUTPUT);   //AX2
      pinMode(AX3, OUTPUT);   //AX3
      pinMode(AY0, OUTPUT);   //AY0
      pinMode(AY1, OUTPUT);   //AY1
      pinMode(AY2, OUTPUT);   //AY2
      pinMode(RSTMT, OUTPUT); //RES
      pinMode(CSMT, OUTPUT);  //CS
      pinMode(DATMT, OUTPUT); //DAT
      pinMode(STBMT, OUTPUT); //STB
      //Инициализация клавиатуры
      keyboard.begin( DATAPIN, IRQPIN );
      //Инициализация MT8816
      SetAddr(0);
      digitalWrite(RSTMT, LOW);
      digitalWrite(CSMT, LOW);
      digitalWrite(DATMT, LOW);
      digitalWrite(STBMT, LOW); //инициализация
      digitalWrite(CSMT, HIGH); //выбор чипа
      digitalWrite(RSTMT, HIGH);
      digitalWrite(RSTMT, LOW);  //сброс
      digitalWrite(CSMT, LOW);
    }
    void SetAddr(uint8_t addr) {
      digitalWrite(AX0,bitRead(addr,0));
      digitalWrite(AX1,bitRead(addr,1));
      digitalWrite(AX2,bitRead(addr,2));
      digitalWrite(AX3,bitRead(addr,3));
      digitalWrite(AY0,bitRead(addr,4));
      digitalWrite(AY1,bitRead(addr,5));
      digitalWrite(AY2,bitRead(addr,6));
    }
    void SetKey(boolean data){
       digitalWrite(CSMT, HIGH); //выбор чипа
       digitalWrite(STBMT, HIGH); //строб on
       digitalWrite(DATMT, data); //данные
       digitalWrite(STBMT, LOW); //строб off    
       digitalWrite(CSMT, LOW);   
    }
    void loop()
    {
      if( keyboard.available() ){
        int c = keyboard.read(); //чтение кода
        switch (c) {
          case 0xE0:              //если считался префикс 0xE0
            break;
          case 0xF0:              //если считался префикс 0xF0 (отпускание клавиши)
            d = LOW;
            break;
          default:  
            SetAddr(table[c]);
            SetKey(d);
            d = HIGH;
        }
      }
    }
    Исходник для клавиатуры Спектрум 128
    Код:
    #include <PS2KeyRaw.h>
    #define AX0 4
    #define AX1 5
    #define AX2 6
    #define AX3 7
    #define AY0 8
    #define AY1 9
    #define AY2 10
    #define RSTMT 14
    #define CSMT  15
    #define DATMT 16
    #define STBMT 17
    #define DATAPIN 2
    #define IRQPIN  3
    
    volatile boolean d = HIGH;
    
    uint8_t table[128] = {127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,0,127,127,32,48,127,127,127,1,17,16,33,49,127,
    127,3,2,18,34,51,50,127,127,112,4,19,36,35,52,127,127,115,116,100,20,84,68,127,127,127,114,99,83,67,66,127,
    127,127,98,82,81,64,65,127,127,127,127,97,127,80,127,127,127,127,127,127,127,127,127,127,127,113,96,127,127,127,127,127,
    127,127,127,127,127,127,64,127,127,127,127,52,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127};
    
    PS2KeyRaw keyboard;
    void setup() {
      //Инициализация портов
      pinMode(AX0, OUTPUT);   //AX0
      pinMode(AX1, OUTPUT);   //AX1
      pinMode(AX2, OUTPUT);   //AX2
      pinMode(AX3, OUTPUT);   //AX3
      pinMode(AY0, OUTPUT);   //AY0
      pinMode(AY1, OUTPUT);   //AY1
      pinMode(AY2, OUTPUT);   //AY2
      pinMode(RSTMT, OUTPUT); //RES
      pinMode(CSMT, OUTPUT);  //CS
      pinMode(DATMT, OUTPUT); //DAT
      pinMode(STBMT, OUTPUT); //STB
      //Инициализация клавиатуры
      keyboard.begin( DATAPIN, IRQPIN );
      //Инициализация MT8816
      SetAddr(0);
      digitalWrite(RSTMT, LOW);
      digitalWrite(CSMT, LOW);
      digitalWrite(DATMT, LOW);
      digitalWrite(STBMT, LOW); //инициализация
      digitalWrite(CSMT, HIGH); //выбор чипа
      digitalWrite(RSTMT, HIGH);
      digitalWrite(RSTMT, LOW);  //сброс
      digitalWrite(CSMT, LOW);
      
      SetAddr(table[0x12]);
      SetKey(LOW);
    }
    void SetAddr(uint8_t addr) {
      digitalWrite(AX0,bitRead(addr,0));
      digitalWrite(AX1,bitRead(addr,1));
      digitalWrite(AX2,bitRead(addr,2));
      digitalWrite(AX3,bitRead(addr,3));
      digitalWrite(AY0,bitRead(addr,4));
      digitalWrite(AY1,bitRead(addr,5));
      digitalWrite(AY2,bitRead(addr,6));
    }
    void SetKey(boolean data){
       digitalWrite(CSMT, HIGH); //выбор чипа
       digitalWrite(STBMT, HIGH); //строб on
       digitalWrite(DATMT, data); //данные
       digitalWrite(STBMT, LOW); //строб off    
       digitalWrite(CSMT, LOW);   
    }
    void loop()
    {
      if( keyboard.available() ){
        int c = keyboard.read(); //чтение кода
        switch (c) {
          case 0xE0:              //если считался префикс 0xE0
            break;
          case 0xF0:              //если считался префикс 0xF0 (отпускание клавиши)
            d = LOW;
            break;
          case 0x66:              //если считался код 0x66 [BS]
            SetAddr(table[0x12]);
            SetKey(d);
            SetAddr(table[0x45]);
            SetKey(d);
            d = HIGH;
            break;
          case 0x6B:              //если считался код 0x6B [Left]
            SetAddr(table[0x12]);
            SetKey(d);
            SetAddr(table[0x2E]);
            SetKey(d);
            d = HIGH;
            break;
          case 0x72:              //если считался код 0x72 [Down]
            SetAddr(table[0x12]);
            SetKey(d);
            SetAddr(table[0x36]);
            SetKey(d);
            d = HIGH;
            break;
          case 0x75:              //если считался код 0x75 [Up]
            SetAddr(table[0x12]);
            SetKey(d);
            SetAddr(table[0x3D]);
            SetKey(d);
            d = HIGH;
            break;
          case 0x74:              //если считался код 0x74 [Right]
            SetAddr(table[0x12]);
            SetKey(d);
            SetAddr(table[0x3E]);
            SetKey(d);
            d = HIGH;
            break;
          case 0x76:              //если считался код 0x76 [Edit]
            SetAddr(table[0x12]);
            SetKey(d);
            SetAddr(table[0x16]);
            SetKey(d);
            d = HIGH;
            break;
          case 0x58:              //если считался код 0x58 [Caps lock]
            SetAddr(table[0x12]);
            SetKey(d);
            SetAddr(table[0x1E]);
            SetKey(d);
            d = HIGH;
            break;
          case 0x0D:              //если считался код 0x0D [Ext mode]
            SetAddr(table[0x12]);
            SetKey(d);
            SetAddr(table[0x59]);
            SetKey(d);
            d = HIGH;
            break;
          case 0x41:              //если считался код 0x41 [,]
            SetAddr(table[0x59]);
            SetKey(d);
            SetAddr(table[0x31]);
            SetKey(d);
            d = HIGH;
            break;
          case 0x49:              //если считался код 0x49 [.]
            SetAddr(table[0x59]);
            SetKey(d);
            SetAddr(table[0x3A]);
            SetKey(d);
            d = HIGH;
            break;
          case 0x4C:              //если считался код 0x4C [;]
            SetAddr(table[0x59]);
            SetKey(d);
            SetAddr(table[0x44]);
            SetKey(d);
            d = HIGH;
            break;
          case 0x52:              //если считался код 0x52 ["]
            SetAddr(table[0x59]);
            SetKey(d);
            SetAddr(table[0x4D]);
            SetKey(d);
            d = HIGH;
            break;
          default:  
            SetAddr(table[c]);
            SetKey(d);
            d = HIGH;
        }
      }
    }
    Исходник программы для клавиатуры Корвета
    Код:
    #include <PS2KeyRaw.h>
    #define AX0 4
    #define AX1 5
    #define AX2 6
    #define AX3 7
    #define AY0 8
    #define AY1 9
    #define AY2 10
    #define RSTMT 14
    #define CSMT  15
    #define DATMT 16
    #define STBMT 17
    #define DATAPIN 2
    #define IRQPIN  3
    
    volatile boolean d = HIGH;
    uint8_t table[128] = {127,127,127,44,42,40,41,127,127,127,127,127,43,102,127,127,127,127,112,127,117,33,65,127,127,127,50,35,1,39,66,127,
    127,3,48,4,5,68,67,127,127,103,38,6,36,34,69,127,127,22,2,16,7,49,70,127,127,127,21,18,37,71,80,127,127,127,19,17,23,64,81,127,127,127,127,20,127,32,
    127,127,127,127,127,127,127,127,127,127,127,119,96,127,127,127,127,127,127,127,127,127,127,127,101,127,127,9,127,12,15,127,127,127,8,22,10,13,14,24,
    115,127,127,127,11,127,127,25,127,127};
    
    PS2KeyRaw keyboard;
    void setup() {
      //Инициализация портов
      pinMode(19, OUTPUT);
      pinMode(AX0, OUTPUT);   //AX0
      pinMode(AX1, OUTPUT);   //AX1
      pinMode(AX2, OUTPUT);   //AX2
      pinMode(AX3, OUTPUT);   //AX3
      pinMode(AY0, OUTPUT);   //AY0
      pinMode(AY1, OUTPUT);   //AY1
      pinMode(AY2, OUTPUT);   //AY2
      pinMode(RSTMT, OUTPUT); //RES
      pinMode(CSMT, OUTPUT);  //CS
      pinMode(DATMT, OUTPUT); //DAT
      pinMode(STBMT, OUTPUT); //STB
      //Инициализация клавиатуры
      keyboard.begin( DATAPIN, IRQPIN );
      //Инициализация MT8816
      SetAddr(0);
      digitalWrite(RSTMT, LOW);
      digitalWrite(CSMT, LOW);
      digitalWrite(DATMT, LOW);
      digitalWrite(STBMT, LOW); //инициализация
      digitalWrite(CSMT, HIGH); //выбор чипа
      digitalWrite(RSTMT, HIGH);
      digitalWrite(RSTMT, LOW);  //сброс
      digitalWrite(CSMT, LOW);
    }
    void SetAddr(uint8_t addr) {
      digitalWrite(AX0,bitRead(addr,0));
      digitalWrite(AX1,bitRead(addr,1));
      digitalWrite(AX2,bitRead(addr,2));
      digitalWrite(AX3,bitRead(addr,3));
      digitalWrite(AY0,bitRead(addr,4));
      digitalWrite(AY1,bitRead(addr,5));
      digitalWrite(AY2,bitRead(addr,6));
    }
    void SetKey(boolean data){
       digitalWrite(CSMT, HIGH); //выбор чипа
       digitalWrite(STBMT, HIGH); //строб on
       digitalWrite(DATMT, data); //данные
       digitalWrite(STBMT, LOW); //строб off    
       digitalWrite(CSMT, LOW);   
    }
    void loop()
    {
      if( keyboard.available() ){
        int c = keyboard.read(); //чтение кода
        switch (c) {
          case 0xE0:              //если считался префикс 0xE0
            break;
          case 0xF0:              //если считался префикс 0xF0 (отпускание клавиши)
            d = LOW;
            break;
          default:
            SetAddr(table[c]);
            SetKey(d);
            d = HIGH;
        }
      }
    }
    Вполне можно объединить поддержку нескольких клавиатур в одной прошивке и переключать их горячими клавишами.
    Если сия поделка кого-то заинтересует, могу рассказать о ней подробнее и ответить на вопросы. У меня осталось несколько пустых плат и даже компоненты для сборки, могу создать тему на барахолке.
    Продажа здесь.

    Идею данного контроллера подсказал andykarpov
    Последний раз редактировалось Xrust; 04.10.2021 в 22:51.

  2. Эти 26 пользователя(ей) поблагодарили Xrust за это полезное сообщение:

    Andrey_Ko (05.05.2021), andykarpov (17.04.2021), Anubis_OD (26.04.2021), Arkanoid (03.06.2021), CLR (18.04.2021), crackintosh (08.05.2021), Egal (13.01.2022), Error404 (04.05.2021), Ewgeny7 (09.11.2021), HardWareMan (18.04.2021), HighLander (19.09.2021), izzx (18.04.2021), KACTET (21.11.2021), Mikka_A (28.12.2021), MM (20.04.2021), murgatroid_79 (18.05.2021), OldFartGamer (26.07.2021), Rio444 (10.07.2021), Sergey (12.05.2021), Shofer (30.05.2021), ShSergey (26.05.2021), surinm (24.05.2021), TomaTLAB (19.04.2021), valerium (18.04.2021), wiktors75 (07.01.2022), xolod (18.04.2021)

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

  4. #2
    Читатель Аватар для IgorR76
    Регистрация
    25.12.2017
    Адрес
    г. Москва
    Сообщений
    619
    Спасибо Благодарностей отдано 
    115
    Спасибо Благодарностей получено 
    144
    Поблагодарили
    86 сообщений
    Mentioned
    3 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Оффтоп.
    Радует одно — что вместо того, чтобы повторить готовое из десятка вариантов, каждый нуждающийся сам себе разрабатывает устройство и пишет код. Это очень правильно в рамках хобби.
    Разрабатывайте, пишите код, делитесь наработками — это здорово!

  5. #3
    Guru Аватар для HardWareMan
    Регистрация
    26.02.2011
    Адрес
    Павлодар
    Сообщений
    4,057
    Спасибо Благодарностей отдано 
    175
    Спасибо Благодарностей получено 
    446
    Поблагодарили
    337 сообщений
    Mentioned
    9 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от IgorR76 Посмотреть сообщение
    Оффтоп.
    Радует одно — что вместо того, чтобы повторить готовое из десятка вариантов, каждый нуждающийся сам себе разрабатывает устройство и пишет код. Это очень правильно в рамках хобби.
    Разрабатывайте, пишите код, делитесь наработками — это здорово!
    Всё верно. А потом среди множества решений можно сделать наиболее оптимальное, в том числе как солянку из методов из разных проектов.

  6. Эти 2 пользователя(ей) поблагодарили HardWareMan за это полезное сообщение:

    IgorR76 (18.04.2021), Михаил Каа (18.04.2021)

  7. #4
    Member
    Регистрация
    17.07.2018
    Адрес
    г. Воронеж
    Сообщений
    127
    Спасибо Благодарностей отдано 
    4
    Спасибо Благодарностей получено 
    14
    Поблагодарили
    14 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    А оно как работает? Выставляет процессору wait на время установки ножек? Без этого о принципиально работать не будет, там что-то в районе 500нс есть но а это.
    А вижу, сделано через ключ/ защёлку. Достаточно интересно, они могут быстро выкатить на шину данные, главное успеть среагировать.. Нужно будет изучить схему.
    Последний раз редактировалось Kulich; 18.04.2021 в 09:41.

  8. #5
    Master Аватар для Serg6845
    Регистрация
    30.12.2018
    Адрес
    г. Москва
    Сообщений
    661
    Спасибо Благодарностей отдано 
    2
    Спасибо Благодарностей получено 
    157
    Поблагодарили
    149 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Kulich Посмотреть сообщение
    А оно как работает? Выставляет процессору wait на время установки ножек? Без этого о принципиально работать не будет, там что-то в районе 500нс есть но а это.
    А вижу, сделано через ключ/ защёлку. Достаточно интересно, они могут быстро выкатить на шину данные, главное успеть среагировать.. Нужно будет изучить схему.
    не нужно ничего успевать. в том и прикол. МТ8816 - матирица аналоговых ключей, она эмулирует нажатия кнопок. которые по определению асинхронны ко всем процессам, происходящим на шине.

    Зверинецъ

    Специалист "совсем стандарт" - 88-89
    Ленинград1 +256К +AY+BDI+VGA выход +Ethernet (Speccyboot) +Xmodem (115200)+divmmc
    Ленинград2 + CF карта
    Платформа 8085+Z80+CPLD (Специалист МХ2 +SD +FDD +PS/2kbd)
    [свернуть]

  9. #6
    Master
    Регистрация
    12.04.2017
    Адрес
    г. Тольятти
    Сообщений
    741
    Спасибо Благодарностей отдано 
    137
    Спасибо Благодарностей получено 
    92
    Поблагодарили
    43 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Kulich Посмотреть сообщение
    А оно как работает? Выставляет процессору wait на время установки ножек?
    Нет. Контроллер полностью безвейтовый. Тупо замыкает контакты. Весь секрет в микросхеме MT8816. Это управляемая матрица из 128 ключей. Любой можно замкнуть и разомкнуть. Поэтому контроллеру не требуется никаких сигналов от процессора. Только питание 5В. И он полностью универсальный. Можно настроить для работы с любым компьютером с матричной клавиатурой или даже с несколькими, переключая режимы "горячей" клавишей.

  10. #7
    Activist
    Регистрация
    23.04.2020
    Адрес
    г. Тотьма
    Сообщений
    393
    Спасибо Благодарностей отдано 
    122
    Спасибо Благодарностей получено 
    118
    Поблагодарили
    62 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Xrust Посмотреть сообщение
    Нет. Контроллер полностью безвейтовый. Тупо замыкает контакты.
    Вот это дело. Я как раз хотел спросить зачем на контроллерах клавиатуры используют сигнал wait. Надо же просто замкнуть кнопки.

    Скрытый текст

    Scorpion ZS-256 Turbo+/GMX 2MB/SMUC v1.3 Open port/CF-IDE 2GB/TS ARM/Covox #DD/FDD 5'25/FDD 3'5/AT Keyboard & Mouse Controller v2.5/Universal PS/2 Keyboard Controller
    Leningrad 1/Sega Joy Adapter
    DivGMX
    ZX Spectrum +2A

    TCK Computer 486DX2-66/512K Tridend 9000i/8MB SIMM72/CF-IDE 512MB/ESS 1869/CNet CN200/FDD 5'25/FDD 3'5
    [свернуть]

  11. #8
    Guru Аватар для HardWareMan
    Регистрация
    26.02.2011
    Адрес
    Павлодар
    Сообщений
    4,057
    Спасибо Благодарностей отдано 
    175
    Спасибо Благодарностей получено 
    446
    Поблагодарили
    337 сообщений
    Mentioned
    9 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от izzx Посмотреть сообщение
    Вот это дело. Я как раз хотел спросить зачем на контроллерах клавиатуры используют сигнал wait. Надо же просто замкнуть кнопки.
    Затем, что CPU слишком быстр и внешний контроллер не успевает среагировать. А смысл всего в том, чтобы не городить матрицу из изолированных "реле", которые могут проводить сигнал в обе стороны (актуально больше для компьютеров с клавиатурой на ВВ55). Наличие таких микросхем как МТ8816 сильно упрощает задачу - я так вообще хотел на К176КТ3 собирать. Но вовремя остановился, хотя мешочек этих КТшек прикупил (точнее, выкупил все, что были в магазе более 10 лет назад).

  12. Этот пользователь поблагодарил HardWareMan за это полезное сообщение:

    izzx (18.04.2021)

  13. #9
    Activist
    Регистрация
    23.04.2020
    Адрес
    г. Тотьма
    Сообщений
    393
    Спасибо Благодарностей отдано 
    122
    Спасибо Благодарностей получено 
    118
    Поблагодарили
    62 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    В прошивке для спектрума уже предусмотрены всякие сочетания клавиш, типа курсор, сброс, NMI?
    Сколько примерно стоит девайс?

    Скрытый текст

    Scorpion ZS-256 Turbo+/GMX 2MB/SMUC v1.3 Open port/CF-IDE 2GB/TS ARM/Covox #DD/FDD 5'25/FDD 3'5/AT Keyboard & Mouse Controller v2.5/Universal PS/2 Keyboard Controller
    Leningrad 1/Sega Joy Adapter
    DivGMX
    ZX Spectrum +2A

    TCK Computer 486DX2-66/512K Tridend 9000i/8MB SIMM72/CF-IDE 512MB/ESS 1869/CNet CN200/FDD 5'25/FDD 3'5
    [свернуть]

  14. #10
    Master
    Регистрация
    12.04.2017
    Адрес
    г. Тольятти
    Сообщений
    741
    Спасибо Благодарностей отдано 
    137
    Спасибо Благодарностей получено 
    92
    Поблагодарили
    43 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от izzx Посмотреть сообщение
    В прошивке для спектрума уже предусмотрены всякие сочетания клавиш, типа курсор, сброс, NMI?
    Нет, в существующей прошивке они не предусмотрены. Она рассчитана на обычную клавиатуру 40 клавиш.
    В новой прошивке дополнительные клавиши добавлены. Сброс и nmi к клавиатуре отношения не имеют.

    Сколько примерно стоит девайс?
    Комплект основных деталей (плата, микросхемы, разъем ps/2) тянет примерно на 400р
    Последний раз редактировалось Xrust; 03.06.2021 в 12:12.

Страница 1 из 18 12345 ... ПоследняяПоследняя

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

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

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

Похожие темы

  1. Ответов: 40
    Последнее: 27.06.2021, 15:41
  2. Ответов: 146
    Последнее: 31.05.2020, 19:00
  3. Ответов: 29
    Последнее: 24.03.2019, 18:11
  4. Ответов: 31
    Последнее: 23.11.2006, 09:23

Ваши права

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