
Сообщение от
doorsfan
Лас, как дела с копировщиком через функции ПЗУ?
В принципе почти всю непрерывную память можно выделить под буффер: оставить только несколько байт для вызова процедуры выгрузки и переклац на 7ю страницу для возврата в копировщик со своим модулем загрузки.
Копировщик обязательно будет. В июне намерен засесть писать. Заодно рассчитываю обновить PlayTZX до 1.4. Сейчас времени нет.
Советы и предложения, высказанные в этой теме, я собираю. Вот что собрал:
Код:
Лас:
P.S. Я тут вот что задумал. Давно хочу кассетный копировщик написать на досуге, не торопясь, для спектрума.
С поддержкой расширенной памяти, но чтобы использовались процедуры загрузки/записи из ПЗУ, для того,
чтобы различные эмуляторы без проблем писали/читали в tap/tzx
Пока прикидываю, что к чему, обдумываю.
вот некоторые рабочие наброски того, что планирую реализовать, писал для себя
- загрузка/запись только через процедуры в пзу (для перехвата эмуляторами)
- поддержка памяти от 128Кб до 1 Гб
- максимальная длина 1го файла около 49130 байт
а если с замещением пзу? будет ли работать перехват? проверить.
- использ 2й экран. (весь копировщик в 7 банке?)
- горячие клавиши обязательно и курсорные
- просмотр файлов любых(!) - как картинки ( с атрибутами и без)
- как насчет просмотра пакованных картинок?
- отличать заголовки для защиты (пилоттон идет за данными без паузы)
- редактирование заголовков отдельным способом
- редактирование данных (включая флаг и чексум, коррекция чексум)
- запись сбойных блоков
- просмотр файла hex+ascii
- индикация своб памяти атрибутами типа TF-Copy
Для чего он нужен?
Да читать (к примеру, в спектакуляторе) с помощью этого копировщика прямо со входа (микрофонного или линейного)
и сохранять сразу в tap-tzx программы целиком, или даже целые кассеты.
С помощью имеющихся сейчас копировщиков с поддержкой памяти более 48К - нереально нажатием пары кнопок
в эмуляторе сохранить считанное в tap.
------------------------------------------------
Форум:
Лас, супер тема! Но я думаю довольно сложная задача если делать компрессию по хаффману или чтобы можно было просматривать
пакованные картинки и редактировать загруженное. Нафиг это нужно если можно будет сохранить файл целиком в формате
tzx из эмуля и там уже редактировать любыми средствами. Инструменты анализа тоже полезно но не необходимо.
А вот запись ф-циями ROM, загрузка файлов в верхнюю память (что кстати позволит грузить хоть 65535 байт подряд),
загрузка ряда схем защит, редактирование crc - они нужны как воздух. Так и не создано ничего такого до сих пор
хотя сколько уже было копировщиков. А интерфейс вообще можно делать спартанский и
не заморачиваться - L - загрузка, S - запись и все. Индикация атрибутами - тема. В общем мне твоя идея ну очень нравицца!
-------------------------------------------------------
Лас:
Напоминаю Вам, что копировщик будет работать только с пзу-шными процедурами чтения/записи кассеты.
Это будет сделано для того, чтобы эмуляторы нормально перехватывали обращение к ним и обрабатывали файлы.
Это накладывает следующие ограничения:
1. Если делать компрессирующий копировщик - от процедур загрузки/записи в пзу - придется отказаться, а это означает,
что эмуляторы не будут так просто писать в tap/tzx.
2. Нормально считать/записать 65535 байт с помошью процедур загрузки/записи в пзу - не получится (хотя надо
еще подумать насчет подмены пзу озу по схеме кай-скорпион и что с этим можно сделать).
3. Ряд схем защит - тоже в топку. У нас ведь стандартные процедуры.
Просматривать пакованные картинки - не сложно реализовать.
Редактировать загруженное - не сложно реализовать.
------------------------------------
Форум:
А почему есть ограничение на процедуры загрузки только из ПЗУ? Можно же построить загрузку на
обрывках процедур LD-BYTES. Прочли пилотон, синхронизировались и далее читаем биты подряд.
Как кончилась память, меняем страницу и грузим дальше. Во время загрузки то процессор две
трети времени балду пинает так что смена страницы не повлияет на временные характеристики.
А вот писать точно надо как-то так, чтобы скажем Spectaculator мог перехватить и корректно записать в файл tzx.
--------------------------------
Лас:
Да вы правы, грузить файлы длиной 65535 байт можно, переключая страницы "на лету". Загрузку, в таком случае,
я могу полностью написать автономную, без использования кусков кода из пзу, но это теряет
всякий смысл, если я не смогу записать загруженное так, чтобы эмулятор нормально перехватил меня.
---------------------------------