Кое-что успел посмотреть.
Перехватываются подпрограммы ввода и вывода байта. Вместо них выполняется перенаправление в файл и имитируется команда RET. То есть оригинальная подпрограмма не выполняется вообще. Также перехватывается подпрограмма ввода с клавиатуры с ожиданием нажатия - если ждем нажатия клавиши, подразумевается, что все прочитали или записали, и файл можно закрывать. Практика показала, что вариант закрытия файла по таймауту менее универсальный. Вот эти 3 адреса перехвата и задаются в конфигурационном файле. Возможно не самое лучшее решение, но пока такое.
А для формата MSX кроме подпрограмм ввода/вывода байта нужно еще перехватывать чтение и запись заголовков. Я пока не смотрел, как это сделано в ленинградском Мониторе, но думаю, что найти их адреса для перехвата также можно.
Обнаружил у себя ошибку в загрузчике wav-файлов. После ее исправления загрузились все образцы wav-файлов как в формате по "I", так и по сбросу, кроме SP-COPY. Там какой-то свой формат записи - надо смотреть, почему не грузится.
Именно так наверное не получится, надо подумать на самом деле, как это лучше сделать. Могут быть разные варианты.
Если народ поддержит, можно и переименовать. А я могу в эмуляторе просто сделать поддержку загрузки rks или spt-файлв с именем из ком. строки или по Alt-F3/L.
Вообще не понял суть проблемы. Файлы из архива успешно грузятся по директиве I. Правда некоторые выдают ошибку из-за того, что в конце файла отсутствует один байт контрольной суммы, но тем не менее все равно грузятся.
Пока все, завтра посмотрю чуть подробнее.
Версию эмулятора с исправленной процедурой чтения wav планирую выложить в конце недели.
Скрытый текст
[свернуть]






Ответить с цитированием