Вложений: 3
Микро-80: Монитор, совместимый с Радио-86РК
После пары вечеров шаманства запустил на своей Микро-80 Монитор, совместимый с Монитором Радио-86РК (см.Радио N11 1989 г.).
Теоретически, это должно дать возможность запускать программы, разработанные для Радио-86РК, но практически без адаптации не обойтись, т.к. большинство программ работают напрямую с видеопамятью. Тем не менее, появляются достаточно полезные функции, недоступные в оригинальном мониторе: управление верхней границей памяти, подсчет контрольной суммы, директива R чтения с внешнего ПЗУ.
Журнальный вариант Монитора у меня работать напрочь отказался, пришлось прибегнуть к реверсному инжинирингу и пультовой отладке. На удивление, при всей стройности и элегантности кода, я обнаружил довольно грубую ошибку - сразу после сброса и настройки указателя стека идет обращение к функции вывода строки на экран, которая использует ряд переменных, инициализация которых происходит несколько позже;) А так как среди этих переменных есть довольно важные, отвечающие за вызов внешних обработчиков, то поведение программы становиться непредсказуемым.
Легким движением меняем порядок блоков и получаем приглашение Монитора к вводу директив!
Поигравшись с оригинальным вариантом, обнаружил, что проблема проявляется в зависимости от типа ОЗУ по адресу $F000-$F800. Разные паттерны начального состояния микросхем ОЗУ после включения питания делают эту ошибку малозаметной на динамических РУ5 и повторяемо воспроизводимой на статике 537РУ10. Возможно, из-за этого авторы, отладившие программу на РУшках и не выявили данный огрех.
PS: В присоединенном архиве:
- M80_RK86-original.bin - оригинал РК86 монитора
- M80_RK86-modified.bin - подкорректированый мною (кроме исправления ошибки изменена высота экрана на 24 строки и изменены адреса дополнительной ВВ55 так, что ее выводы A0,A1 можно подключать к шине адреса без инверторов, см.схему в Радио N11 89г.)
- Monitor M80_RK86 Disassembled.asm - дизассемблированый мною монитор
- Modify original RK86 compatibe monitor v1.1.docx - инструкция по in-place корректировке оригинального бинарника в HEXредакторе
Вложений: 5
Микро-80: контроллер SD карт памяти
По совету друзей приобрел автомобиль Москвич новой модели! Адаптировал под свой Микро-80 отличную разработку Алексея vinxru "Контроллер SD-карты для компьютера Апогей БК01Ц (Радио 86РК)". Контроллер смонтировал привычной мне технологией МГТФ, дополнительный 580ВВ55 расположил на плате ввода-вывода.
Прошивку Atmega8 использовал без изменений, а вот в sdbios.rk, boot.rk, shell.rk нужно было внести изменения из-за отличий в видеоконтроллере и способе адресации портов в Микро-80. Моя версия работает с РК-86 совместимым Монитором, под ним сразу запустились несколько программ, в том числе даже игра Volcano.
Вложений: 4
Микро-80: контроллер накопителя на МЛ
Потихоньку реализовываю свою давнюю идею - интегрированый накопитель на магнитной ленте для компьютера Микро-80. После некоторых раздумий, решил остановиться на варианте с микрокассетой. С одной стороны - теплый ламповый звук истинно механический девайс, винтажный носитель информации, с другой - компактные размеры.
Лентопротяжку использовал от какого-то автоответчика, оказалась как раз подходящая для моих целей - вполне приличный бронзовый маховик тонвала, возможность полного логического управления, датчик для счетчика ленты. И уж совсем невероятное - настоящая стирающая головка, а не постоянный магнит, как принято во многих микрокассетных девайсах.
Логику управления и интерфейс с Микро-80 реализован на Atmegа8, это мой первый AVRовский проект. На данный момент реализовано управление ЛПМ в автономном режиме, сейчас работаю над интеграцией с компьютером - контроллер будет цепляться на шины данных и адресов и синхронизироваться сигналом готовности ГТ.
Также планирую реализовать индикатор уровня записи-воcпроизведения на линейном светодиодном индикаторе.