Обычно я не копаюсь в чужих исходниках. Долгое время отгонял от себя мысль посмотреть на Emu80, так сказать, изнутри. Но тут чёрт меня дёрнул и я залез на гитхаб, просто хотелось собрать проект из исходников. Однако посмотрев на код, несколько удивился, насколько они простые и понятные. Тут же возникла мысль, а что если добавить туда Башкирию-2М? Кто, если не я? Вряд-ли Виктор станет разбираться с таким мало распространённым компом.
На первый взгляд это была работа на пару часов. На деле оказалось несколько сложнее, к примеру, чтобы реализовать прерывания от таймера, пришлось изобретать костыль. В остальном, просто надёргал куски кода их разных подходящих компьютеров и переделал для Башкирии. Дольше всего кодил клавиатуруТочнее её раскладку.
Несмотря на то, что делал всё по аналогии, Башкирия не завелась. Пришлось искать причину. Оказалось, есть неточности в эмуляции контроллера прерываний, в частности регистра запросов. А ещё есть ошибка, из-за которой после окончания прерываний выполнялся переход несуществующему вектору 8 (хотя он может быть только от 0 до 7). Видимо, сначала уровень, соответствующий отсутствию прерываний был -1, а потом Виктор переделал на 8, а в одном месте забыл исправить. Ну и так, по мелочи, например при загрузке счётчика таймера еденицей нужно устанавливать out в еденицу (на самом деле не сразу, а в следующем такте, но это не принципиально, и я сделал сразу).
Проблема с прерываниями от таймера всё ещё имеется, особенно если работает в паре с прерываниями от vrtc (например, реверси виснет). В остальном вроде всё работает.
Залил на гитхаб https://github.com/bashkiria-2m/emu80v4, если надо, могу отправить pull request.




Точнее её раскладку.
Ответить с цитированием