Thinking in Binary: The Making of HoustonTracker 2
На недавнем Revision 2017 один из главных активистов однобитной музыки, utz (irrlichtproject), выступил с докладом об истории разработки им трекера HoustonTracker 2 для 8-битной (на Z80) линейки графических калькуляторов Texas Instruments — TI-82, TI-83 (TI-82STATS), TI-83+/84+/SE. Рассказ довольно мало касается собственно трекера, музыки, и однобитного синтеза звука, но даёт очень много интереснейших подробностей о самой платформе и сложностях, поджидающих новичков на пути её освоения.
Доступна видеозапись доклада на английском языке, без субтитров. Под катом выжимка основных положений.
Доступна видеозапись доклада на английском языке, без субтитров. Под катом выжимка основных положений.
- Закрытость платформы. Компания Texas Instruments никогда не предполагала запуск пользовательских приложений в машинном коде, он стал возможен только благодаря усилиям энтузиастов, обнаруживших уязвимости в коде ОС. По той же причине никогда не была доступна официальная документация на железо и ОС. Вся низкоуровневая информация собрана любителями, в силу специфики платформы довольно юными, зачастую она неполна, неточна и просто ошибочна. Требуется сопоставление множества описаний и проведение тестов на железе для выявления истины.
- Более полусотни разных моделей калькуляторов и их ревизий, часто содержащих значительные отличия в железе и софте, что вносит существенные проблемы в обеспечение совместимости. Для поддержки основного модельного ряда требуется создание нескольких различных версий, а также автоопределение некоторых их особенностей.
- Сырость средств разработки. Так, наиболее популярный на платформе Telemark Assembler, несмотря на своё коммерческое прошлое и четвёртую мажорную версию, довольно ограничен и нестабилен. Всего три эмулятора, каждый из которых имеет различные проблемы с корректностью и скоростью эмуляции, а также ограниченную поддержку моделей калькуляторов. Официальная программа для обмена данными с компьютером передаёт не все файлы, установка более совершенной сторонней имеет ряд сложностей.
- Ограниченный объём памяти при отсутствии средств сохранения и загрузки данных на внешнем носителе, за исключением связи с PC. Доступно только 25-27 килобайт ОЗУ с батарейным питанием, содержимое которого теряется при малейшем сбое. Flash-память, добавленная в поздних моделях, имеет очень небольшой ресурс, исчерпание которого приводит к потере работоспособности калькулятора.
- Значительный разброс тактовой частоты в разных моделях, от 5.6 до 7.2 МГц. При этом она нестабильна и зависит от уровня заряда батареи. Применительно к синтезу звука это не позволяет получить стандартный музыкальный строй.
- Крайне медленный контроллер дисплея, требующий больших (от 100 тактов) задержек при обращении к нему, причём более свежие модели требуют более длительных задержек. Дребезг клавиатуры, программное устранение которого требует задержек, отличающихся для разных моделей.
- Особенности реализации внешнего порта, используемого как для связи с PC, так и в качестве аудиовыхода, отличающиеся в разных моделях и приводящие к различным проблемам. Так, простое подключение наушников к внешнему порту калькулятора при работе ОС приводит к многократному замедлению его работы (ошибочное ожидание передачи данных). В более новых моделях одновременная работа порта вместе с новым USB портом периодически приводит к просадке по питанию и перезагрузке.
2 комментария
Ну и жесть! Упоролся же чувак! Особенно понравилось про изучение C++ для написания собственной тулзы. Вызывает уважение.