Вход

Просмотр полной версии : Извлечение BASIC-программ для ZX Spectrum из файлов .sna



Arigato
05.02.2015, 23:01
ZX Spectrum 48K - BASIC

Написал небольшую утилиту, которая позволяет открыть файл из эмулятора в формате .sna, извлечь из него программу на BASIC и сохранить ее в текстовый файл или скопировать в буфер обмена.

http://s009.radikal.ru/i307/1510/8e/06765f4aa258.png

Прилагаются и исходники программы, может кто ее усовершенствует.

Arigato
05.02.2015, 23:39
Заодно схема для подсветки синтаксиса ZX Spectrum Basic в редакторе Nonepad++.

http://s017.radikal.ru/i401/1502/ba/5b55f7df1efc.png

Для установки запустите Notepad++, меню "Синтаксис" - "Задать свой язык...", нажать кнопку "Импорт" и выбрать файл zx_basic.xml

Все файлы с расширением .bas будут открываться с установленной подсветкой.

Titus
05.02.2015, 23:51
Небольшое замечание - скриншоты, приаттаченые к форуму автоматически уменьшаются в размере до нечитаемого состояния.

Arigato
06.02.2015, 00:40
Обновил скриншоты.

Alex Rider
06.02.2015, 13:09
Может, в "Утилиты" перетащить?

denpopov
06.02.2015, 13:20
Может, в "Утилиты" перетащить?

а разве zx-modules.de не справляются?

Arigato
06.02.2015, 15:08
Может, в "Утилиты" перетащить?
В принципе можно и туда.

goodboy
06.02.2015, 21:08
Написал небольшую утилиту, которая позволяет открыть файл из эмулятора в формате .sna, извлечь из него программу на BASIC и сохранить ее в текстовый файл или скопировать в буфер обмена.

сравни с этим конвертером ftp://ftp.worldofspectrum.org/pub/sinclair/tools/generic/SnapList.zip

baxter
06.02.2015, 21:45
goodboy, ГУЯ нету:(

Arigato
06.02.2015, 22:36
сравни с этим конвертером
Судя по коду, почти что тоже самое.

P.S. Файл ascii.txt немного изменил, там была ошибка с символом (c), не на своем месте стоял. Можно перекачать из вложения.

Arigato
24.10.2015, 20:36
Версия 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 символы
Может и важнее. Однако, контр. коды и подмена значений чисел, очень активно использовались для защиты барсик-загрузчиков.

Arigato
30.10.2015, 18:45
Числа берутся из символьной записи, атрибуты игнорируются, вместо пользовательской псевдографики подставляются строки вида [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`

Gutten
01.11.2015, 00:33
для отличия UDG от символов в книгах часто делалось подчёркивание знака A.

Arigato
01.11.2015, 00:41
В принципе, я так и предполагал. Для работы с собственными барсиками, имхо, это оптимальный вариант, т.к. нет "лишнего мусора", а вот для заглядывания в чужие загрузчики...
Основное назначение утилиты не взламывать загрузчики, а извлечь BASIC-код, чтобы его, к примеру, вставить в сообщение на форуме, или просто читать на экране монитора в том же Notepad++ с подсветкой синтаксиса. При желании доработать программу можно под любые требования, тем более что исходники открыты.