Amiga 1200 #03: PS/2 контроллеры клавиатуры и мыши, прошивка FDD Gotek

Hardware
DIY
Amiga
Retro
PIC16
[ 28.10.2020 ]
Update: [ 02.11.2020 ]

Собираем PS/2 контроллеры клавиатуры и мыши на базе PIC16F628A для компьютеров Amiga. Дорабатываем и прошиваем аппаратный эмулятор FDD Gotek, который позволяет использовать USB флешки с образами дискет.

Контроллер для PS/2 мыши

За основу был взят проект с прошивкой Дениса Сотченко, дело его живёт. Схема контроллера на основе PIC16F628A в моём варианте вышла упрощённой для простой оптической мыши на стандартной макетной плате 20x80 мм. Так как последняя прошивка v1.5 не предполагала аппаратный сброс микроконтроллера по сигналу MCLR, то и 5V заводить на этот контакт не стал.

devstratum - Mouse scheme

На входе коннектора CN1 идут контакты от DIN6 Mini PS/2 мыши. Выход коннектора CN2 подключается к СN1A на материнской плате Amiga 1200 ревизии 1D.4 минуя разъём DB9P.

devstratum - Mouse pcb

Прошивка микроконтроллера PIC16F628A осуществлялась с помощью программатора MiniPro TL866 с требуемой конфигурацией. Файл прошивки предназначался только для Code Memory. Смотрим datasheet для PIC16F628A. Биты конфигурации расположены в памяти программ по адресу 2007H, они могут быть запрограммированы в «0» или оставленными в «1». При отметке в утилите программатора их состояние переводится в «0».

devstratum - Mouse TL866
  • BIT13 CP (защита памяти программ) 1 = OFF
  • BIT8 CPD (защита памяти данных) 1 = OFF
  • BIT7 LVP (разрешение низковольтного программирования) 0 = OFF
  • BIT6 BODEN (разрешение сброса по снижению напряжения питания) 1 = ON
  • BIT5 MCLRE (выбор режима работы вывода RA5/MCLR) 0 = OFF
  • BIT4 FOSC2 1 = ON
  • BIT3 PWRTE (разрешение работы таймера включения питания) 0 = ON
  • BIT2 WDTE (разрешение работы сторожевого таймера) 1 = ON
  • BIT1 FOSC1 0 = OFF
  • BIT0 FOSC0 0 = OFF

Бит MCLRE работает как цифровой порт ввода/вывода. Биты выбора режима тактового генератора FOSC2,  FOSC1, FOSC0 при настройке дают значение 100, что в итоге переводит режим генератора INTRC без CLKOUT. Получаем требуемый Config Word (2007H) 0x3F54.

Контроллер для PS/2 клавиатуры

Решение для контроллера клавиатуры на основе PIC16F628A было найдено на просторах ресурса English Amiga Board от пользователя Solo761. Для монтажа элементов снова использовалась стандартная макетная плата 20x80 мм. Но, есть дополнительный элемент с панелькой PLCC44, который надевается на чип U7 8520 материнской платы Amiga 1200.

devstratum - Keyboard scheme

На входе коннектора CN1 берём контакты от DIN6 Mini PS/2 клавиатуры. Выход коннектора CN2 подключается к СN3 PLCC44 для U7 8520. И тут следует обратить внимание. Нумерация контактов приведена именно для U7 на «Амиге» с видом сверху на контакты панельки PLCC44.

devstratum - Keyboard pcb

Для клавиатуры файл прошивки PIC16F628A охватывал сразу все области: Code Memory, Data Memory, Config Memory. Необходимая конфигурация загрузилась из файла.

devstratum - Keyboard TL866
  • BIT13 CP (защита памяти программ) 1 = OFF
  • BIT8 CPD (защита памяти данных) 1 = OFF
  • BIT7 LVP (разрешение низковольтного программирования) 0 = OFF
  • BIT6 BODEN (разрешение сброса по снижению напряжения питания) 0 = OFF
  • BIT5 MCLRE (выбор режима работы вывода RA5/MCLR) 0 = OFF
  • BIT4 FOSC2 1 = ON
  • BIT3 PWRTE (разрешение работы таймера включения питания) 0 = ON
  • BIT2 WDTE (разрешение работы сторожевого таймера) 0 = OFF
  • BIT1 FOSC1 0 = OFF
  • BIT0 FOSC0 0 = OFF

Бит MCLRE работает как цифровой порт ввода/вывода. Биты выбора режима тактового генератора FOSC2,  FOSC1, FOSC0 при настройке дают значение 100, что в итоге переводит режим генератора INTRC без CLKOUT. Получаем требуемый Config Word (2007H) 0x3F10.

devstratum - Helloworld

Доработка FDD Gotek

Для работы с образами дискет ADF на USB флешке под «Амигу» использовался программный эмулятор FDD Gotek, модель SFRC922D. Чтобы привод понимал разные форматы от всяких систем, его требовалось перепрошить. Использовалось решение FlashFloppy от разработчика Keir Fraser. В репозитории на GitHub имеется исчерпывающая информация и документация.

devstratum - Gotek firmware

Для прошивки использовался адаптер USB -» UART на FTDI FT232RL и утилита Flash Loader Demonstrator для STM32. После прошивки для привода был добавлен 2" OLED дисплей вместо штатного цифрового индикатора. Интеграцию энкодера для более удобного управления пока делать не стал.

devstratum - Gotek display