Просмотр полной версии : Извлечение BASIC-программ для ZX Spectrum из файлов .sna
ZX Spectrum 48K - BASIC
Написал небольшую утилиту, которая позволяет открыть файл из эмулятора в формате .sna, извлечь из него программу на BASIC и сохранить ее в текстовый файл или скопировать в буфер обмена.
http://s009.radikal.ru/i307/1510/8e/06765f4aa258.png
Прилагаются и исходники программы, может кто ее усовершенствует.
Заодно схема для подсветки синтаксиса ZX Spectrum Basic в редакторе Nonepad++.
http://s017.radikal.ru/i401/1502/ba/5b55f7df1efc.png
Для установки запустите Notepad++, меню "Синтаксис" - "Задать свой язык...", нажать кнопку "Импорт" и выбрать файл zx_basic.xml
Все файлы с расширением .bas будут открываться с установленной подсветкой.
Небольшое замечание - скриншоты, приаттаченые к форуму автоматически уменьшаются в размере до нечитаемого состояния.
Alex Rider
06.02.2015, 13:09
Может, в "Утилиты" перетащить?
denpopov
06.02.2015, 13:20
Может, в "Утилиты" перетащить?
а разве zx-modules.de не справляются?
Может, в "Утилиты" перетащить?
В принципе можно и туда.
Написал небольшую утилиту, которая позволяет открыть файл из эмулятора в формате .sna, извлечь из него программу на BASIC и сохранить ее в текстовый файл или скопировать в буфер обмена.
сравни с этим конвертером ftp://ftp.worldofspectrum.org/pub/sinclair/tools/generic/SnapList.zip
сравни с этим конвертером
Судя по коду, почти что тоже самое.
P.S. Файл ascii.txt немного изменил, там была ошибка с символом (c), не на своем месте стоял. Можно перекачать из вложения.
Версия 0.2
Добавил строку состояния, на которой отображается количество строк кода (считается в момент открытия .sna файла), количество строк текста, позиция курсора и имя открытого файла.
Новую версию программы качаем из первого сообщения темы.
Black Cat / Era CG
29.10.2015, 21:08
А значения чисел берутся из символьной записи, или из 5-байтной?
И что там с контрольными кодами (paper, ink, at...)?
NEO SPECTRUMAN
30.10.2015, 01:02
И что там с контрольными кодами (paper, ink, at...)?
по моему важнее как оно конвертирует UDG символы
Black Cat / Era CG
30.10.2015, 09:26
по моему важнее как оно конвертирует UDG символы
Может и важнее. Однако, контр. коды и подмена значений чисел, очень активно использовались для защиты барсик-загрузчиков.
Числа берутся из символьной записи, атрибуты игнорируются, вместо пользовательской псевдографики подставляются строки вида [A] ... [U], вместо стандартной - квадратик.
Black Cat / Era CG
31.10.2015, 17:27
Числа берутся из символьной записи, атрибуты игнорируются, вместо пользовательской псевдографики подставляются строки вида [A] ... [U], вместо стандартной - квадратик.
В принципе, я так и предполагал. Для работы с собственными барсиками, имхо, это оптимальный вариант, т.к. нет "лишнего мусора", а вот для заглядывания в чужие загрузчики...
NEO SPECTRUMAN
01.11.2015, 00:30
[A]
а как отличить "[A]" набранный в виде 3-х символов от "[A]" udg? (я не проверял как оно сконвертит)
может заюзать для обозначения символ которого нет в спектрумовском шрифте
например гравис ` `A`
кнопка Ё ~ `
он вроде есть на английской клавиатуре
и на вид отличается от '
ну и контрольные коды и псевдографику можно было бы указать в таком виде
`ink 7`
`$80`
для отличия UDG от символов в книгах часто делалось подчёркивание знака A.
В принципе, я так и предполагал. Для работы с собственными барсиками, имхо, это оптимальный вариант, т.к. нет "лишнего мусора", а вот для заглядывания в чужие загрузчики...
Основное назначение утилиты не взламывать загрузчики, а извлечь BASIC-код, чтобы его, к примеру, вставить в сообщение на форуме, или просто читать на экране монитора в том же Notepad++ с подсветкой синтаксиса. При желании доработать программу можно под любые требования, тем более что исходники открыты.
Powered by vBulletin® Version 4.2.5 Copyright © 2025 vBulletin Solutions, Inc. All rights reserved. Перевод: zCarot