Форматы файлов ПК-01 "Львов" для эмуляторов

Все об эмуляции ПК-01 "Львов" на современных платформах
hlorat
Posts: 14
Joined: 24 Feb 2016, 11:03

Re: Форматы файлов ПК-01 "Львов" для эмуляторов

Post by hlorat »

Zelya wrote: 05 May 2020, 10:52 Для правильной работы бекйсик-программы в ПК-01 нужно грузить токены в память, как они есть.
Спасибо большое!
Я вчера пока рассаматривал крякозябры, получающиеся простым переводом байтиков в одну из кодировок, понял, что скорее всего операторы и команды шифруются отдельным байтом или, возможно, серией байтов. Из чего понял, что это, наверное, имелось под токенизацией. Да и смутно всплыли такие вещи, что об этом я, по-моему, догадывался ещё в 90-ые годы, когда просто на слух определил, что короткие программки кодируются на ленте чисто командами. А если в конце проги идут уже не чисто операторы, а что-то своё, например даже небольшой текст, то он дольше "пищит" чем множество голых операторов.

То есть из всего написанного, я так понял, получается, что формат LVT в части записи программ basic повторяет структуру записи программы на магнитофонную ленту? И для того, чтобы записать в LVT формат обратно текст программы нужно также прописывать эти токены?
Только может я дико туплю, но я так и не понял из всей ветки: где брать кодировку этих токенов??? :o
hlorat
Posts: 14
Joined: 24 Feb 2016, 11:03

Re: Re:

Post by hlorat »

Очень сложно меня называть спецом в Си, потому что я всё-таки пишу на C# а не на Си (а это совершенно разные языки), и я далеко не спец)
Но Делфи, да, возможно пойму. Но тут загвоздка в том что сейчас мне интересно как работать с форматами CLOAD и CSAVE, а не с BLOAD-BSAVE. Но в любом случае спасибо за информацию. Я её сохраню, возможно пригодится
als wrote: 05 May 2020, 08:20
В SASemulator есть такая штука как перехват Bload/Bsave. Читает и записывает в LVT-формат (см. Readme в В SASemulator). В том моменте я поленился делать через буфер (масив), а сделал через длинную строку string;
Ну раз ты спец в СИ то думаю в коде Дельфи разберёшся. :-)
Надеюсь данные вырезки з кода тебе чем-то помогут!
Выглядит это так
User avatar
Zelya
Site Admin
Posts: 1071
Joined: 24 Jul 2008, 12:05

Re: Форматы файлов ПК-01 "Львов" для эмуляторов

Post by Zelya »

То есть из всего написанного, я так понял, получается, что формат LVT в части записи программ basic повторяет структуру записи программы на магнитофонную ленту? И для того, чтобы записать в LVT формат обратно текст программы нужно также прописывать эти токены?
Только может я дико туплю, но я так и не понял из всей ветки: где брать кодировку этих токенов???
Так, по порядку.
1. LVT - это формат образа данных на кассете. Условно говоря, такой себе iso для CD. И какая именно программа (или даже не программа) там записана - это уже вопрос номер два.
2. Программы в ПК-01 бывают двух типов. Нативные (ассемблерные, код и т.д.) соответсвенно байт-код инструкций процессора i8080. И бейсиковские. Те самые токены.
3. Восстановить из токенов текст программы умеет сам ПК-01. Точнее функции, прописанные у него в ПЗУ. Т.е. для него (как и для эмулятора) полностью достаточно иметь программу в виде токенов для работы. Если же Вы хотите конвертировать LVT в Бейсик программы, минуя эмулятор, то Вам придется делать это вручную.
4. Где брать кодировку - не знаю. Не задавался таким вопросом. Может сразу найдется в гугле, может надо будет постараться. Накрайняк, можно выдрать адгоритмы из ПЗУ.
als
Posts: 426
Joined: 18 May 2016, 19:55

Re: Re:

Post by als »

hlorat wrote: 05 May 2020, 17:12 Очень сложно меня называть спецом в Си, потому что я всё-таки пишу на C# а не на Си (а это совершенно разные языки), и я далеко не спец)
Ну я лично без малейшего понятия об одном и другом и чем они отличаются :-)
так что уж извини :-)
hlorat wrote: 05 May 2020, 17:12 Но Делфи, да, возможно пойму.
Это очень хорошо!
Меня бы удивило если бы кто-то понимающий Си и/или C# не понял бы (не понимал бы) дельфи :-)
hlorat wrote: 05 May 2020, 17:12 Но тут загвоздка в том что сейчас мне интересно как работать с форматами CLOAD и CSAVE
Не очень-то понятна фраза "как работать"....
Т.е. если ты хочешь написать программу которая из текстового-файла-с-бейсик-программой будет кодировать в ЛВТ-формат, то считаю это безнадёжной затеей. Во-первых вряд ли ты найдёшь документацию по этим... как там их... токенам
а вручную "вычислять" как бейсик команды "переводяться" в токены считаю это очень не надёжным! К тому же есть команды которые работают с различными типами например та же PRINT, команда то одна но она выводит как числа так и символьную информацию и скорее всего для разных случаев разные токены будут, но я с этим не разбирался конечно.

Я бы к этому подошёл другим путём
вот к примеру в САСЕмуляторе, я реализовывал вот такое
* Добавлена возможность вставки из буфера обмена в эмулятор Tools\Paste from Clipboard (1) и Tools\Paste from Clipboard (2). Это две версии процедуры вставки работающие по разному принципу, но выполняющие одно и тоже. :-) Процедуры «не обкатаны» и поэтому возможны ошибки в результате их выполнении. При возникновении ошибки одной из процедур, рекомендую воспользоваться другой либо «разбить» текст на несколько частей (делать комбинированный ввод и вставки) и т.д.. Автор убедительно просит высылать ему (т. е. мне :-) ) строки которые вставлялись с ошибками.
и вот такое
* Добавлена возможность протоколирования (ведение лог-файла) происходящего на экране эмулятора в файл ..\Log\TTY.log. Для этого необходимо установить «галочку» на Tools\.log и все выводимое на экран (которое выводится через процедуру (2.2.4 Вывод символа на экран ( TTY )) будет «сбрасываться» в файл ..\Log\TTY.log. “Сбрасывание» происходит при нажатии паузы, при наполнении буффера и при закрытии программы. С помощью этой функции можно листинг Бейсик-програм выводить в файл. Папка «Log» может быть пустой, но обязательно должна существовать.
Т.е. если бы у меня стоял вопрос текстовик-бейсик-программы-в-ЛВТ и наоборот, то я бы прибегнул к тому, чтобы это всё обрабатывала виртуальная-машина-ПК-01 и преобразовывала так как надо, корректно.
Не сложно бы было склепать такую утилиту "вырезав" из САСЕмулятора сам процес преобразования и переделать её так чтобы она работала исключительно на преобразование BAStoLVT и наоборот. Но поскольку я в этом не видел какой-то нужды, я оставил все так как есть в емуляторе. Кому нужно будет вполне сможет "выцепить" ЛИСТ в лог-файл и вставить тот ЛИСТ бейсик программы опять у емулятор.

А вопрос можно:
А зачем это тебе ?
у меня когда-то была мысля написать компилятор васика в код КР580, ну оно бы выглядело скорее как компановщик блоков кода согласно васик-операторов, но я посчитал это большой фигнёй, потому что как ни крути, вряд ли найдётся хотя бы один человек который решит использовать васик для написания чего нибудь, будь то васик-пк-01 или васик-ямаха или любой другой васик.
hlorat
Posts: 14
Joined: 24 Feb 2016, 11:03

Re: Форматы файлов ПК-01 "Львов" для эмуляторов

Post by hlorat »

Всё, теперь всё стало понятно!
То есть поэтому я и не нашёл расшифровки, потому что обработчик брался из слепка ПЗУ Львова, который монтируется в эмуляторы.

Так-то там кое-что проглядывается в коде файлов LVT, возможно получится у меня вручную это дело расшифровать...
Zelya wrote: 05 May 2020, 17:29 Так, по порядку.
1. LVT - это формат образа данных на кассете. Условно говоря, такой себе iso для CD. И какая именно программа (или даже не программа) там записана - это уже вопрос номер два.
als
Posts: 426
Joined: 18 May 2016, 19:55

Re: Форматы файлов ПК-01 "Львов" для эмуляторов

Post by als »

hlorat wrote: 05 May 2020, 18:13 То есть поэтому я и не нашёл расшифровки, потому что обработчик брался из слепка ПЗУ
Ну да! Это (токены) обрабатывает _сам_ ПК-01 в "обе стороны" т.е. текст-токены и токены-текст
hlorat wrote: 05 May 2020, 18:13 Так-то там кое-что проглядывается в коде файлов LVT, возможно получится у меня вручную это дело расшифровать...
ну ты понимаешь, что если ты это и сделаешь, то оно не на всём работать будет, а только на том что ты учёл. Есть такое как недокументированные возможности. Вот например команда BAUD, в документации по ней (насколько мне известно) нет информации и если попадётся такая команда, - то "тупик", - твоя программы "выбъет" ошибку мол "неизвестный токент" или еще чего. У тебя ж нету полной документации по ВСЕМ (и документированным и недокументированным) командам и токенам. Ты даже не знаешь сколько их.
В такие дебри залезешь, что мама не горюй! И оно никогда в жизни не будет у тебя полностью готово и работоспособно хоть как-то более-менее надёжно!

Это ж тебе не текст ASC-в-ANSI "перегнать", - тут бы я не спорил. Даже не сложно RTF текстовый формат изучить хоть более менее, чтобы его создавать RTF можно было из того, что тебе известно! Не HTML-генерировать что куча инфы всякой вокруг...
Ну я не знаю... как тебе объяснить что это безнадёжно! Пусть другие учасники попробуют!
Единственный вариант который я лично вижу возможным это создать емуль ("крутилку") ПК-01 и пусть эта "крутилка" и прокручивает!
User avatar
Zelya
Site Admin
Posts: 1071
Joined: 24 Jul 2008, 12:05

Re: Форматы файлов ПК-01 "Львов" для эмуляторов

Post by Zelya »

Единственный вариант который я лично вижу возможным это создать емуль ("крутилку") ПК-01 и пусть эта "крутилка" и прокручивает!
Достаточно вычитать и распознать нужные функции из ПЗУ
User avatar
MARAT_BEST
Posts: 341
Joined: 13 Feb 2012, 15:32
Location: Россия

Re: Re:

Post by MARAT_BEST »

hlorat wrote: 05 May 2020, 16:49 В самом файле идет просто код. - Просто код? Вчера я прикинул и понял, что там скорее всего один байт может означать целую команду или оператор, что и есть скорее всего токенизация.
у меня сохранилась программа by Hard Wisdom 'LVOV Files Viewer' , она как раз из LVT файла переводит в текст бейсик программы
работает только на 32-разрядных машинах
может чем поможет, если поковырять :wink:
Attachments
LV_VIEW.zip
(7.73 KiB) Downloaded 1226 times
hlorat
Posts: 14
Joined: 24 Feb 2016, 11:03

Re: Форматы файлов ПК-01 "Львов" для эмуляторов

Post by hlorat »

Zelya wrote: 05 May 2020, 21:11 Достаточно вычитать и распознать нужные функции из ПЗУ
Как это можно сделать?
als
Posts: 426
Joined: 18 May 2016, 19:55

Re: Форматы файлов ПК-01 "Львов" для эмуляторов

Post by als »

Zelya wrote: 05 May 2020, 21:11Достаточно вычитать и распознать нужные функции из ПЗУ
Да что вы говорите :-)
Всё так просто, что даже описания и документации никакой не нужно. :)
А вот hlorat не понимает. Да и я тоже.
И главное существует программа LV_VIEW.zip (я её еще не пробовал правда) а описания и документации никакой!

Подобная простота мне напомнила формат SAV который вроде простой как двери, да еще и описание вроде бы есть, но тем не менее мне пришлось его "ковырять", чтобы мой емуль создавал такие SAV, чтобы можно было их ЛЮБЫМИ СУЩЕСТВУЮЩИМИ на данный момент эмуляторами открывать. Четыре разновидности SAV получилось с одного описания. :-)
hlorat wrote: 06 May 2020, 11:13 Как это можно сделать?
И я о том же!
als
Posts: 426
Joined: 18 May 2016, 19:55

Re: Форматы файлов ПК-01 "Львов" для эмуляторов

Post by als »

смотрю LV_VIEW не большой по размеру -7889 байт
может кто знает как его дизкомпилировать по грамотному ?!
будет что рассматривать.
Гляди потом и документацию создадим.
Сам думаю не смогу так как никогда не занимался дизкомпиляцией 32-битных програм.
User avatar
Zelya
Site Admin
Posts: 1071
Joined: 24 Jul 2008, 12:05

Re: Форматы файлов ПК-01 "Львов" для эмуляторов

Post by Zelya »

Блин. Не проще дизассемблировать ПЗУ и посмотреть методы загрузки бексик-программы? Это то, про что я говорил.
als
Posts: 426
Joined: 18 May 2016, 19:55

Re: Форматы файлов ПК-01 "Львов" для эмуляторов

Post by als »

Zelya wrote: 06 May 2020, 12:50 Блин. Не проще дизассемблировать ПЗУ и посмотреть методы загрузки бексик-программы? Это то, про что я говорил.
Думаю не проще! Так как ПЗУ во первых размером больше чем программа, да и "отсеивать" надо будет, не нужное, а в программе скорее всего, - нет, "отсеевать" ничего не нужно будет!
Ко всему ж, чтобы что-то понять, я так понимаю в ОЗУ должна быть васик-программа, причём подходящая(!), со всеми образцами и командами(!) и только уж тогда дизасемблировать и то...
если это все представить... Zelya, ну это ж тебе не _само_ ПЗУ, что оно "стабильное"...
ну ты представь себе как оно всё...начиная з загрузки ПК-01, копирования васика, динамические адреса начала и конца васик-программы да еще и "в смеси" с данними... какая ячейка и как используется в данный момент... та и вообще позиция рег PC почему в данный момент тут и куда возвращаться будет... это чуть ли не на "Э3000" в пошаговом режиме рассматривать надо, я думаю простой "распечаткой" тут не отделаешься!
User avatar
Zelya
Site Admin
Posts: 1071
Joined: 24 Jul 2008, 12:05

Re: Форматы файлов ПК-01 "Львов" для эмуляторов

Post by Zelya »

Елки-палки....

Александр, Вы всегда ищете самый сумбурный и бесперспективный метод. Дизассемблировать езеху, которая эмулирует работу ПЗУ...
Причем, при этом не доверять самому ПЗУ. И какая Васик программа в ОЗУ, какой Э3000? Зачем? Просто, начиная с CLOAD выкупить цепочку всех переходов, и переписать их логику в Си, или в дотНЕТ, или в Делфи. Во что угодно.


ПС Здесь уже почти все сделано господином Калашниковым:
viewtopic.php?f=22&t=84
User avatar
MARAT_BEST
Posts: 341
Joined: 13 Feb 2012, 15:32
Location: Россия

Re: Форматы файлов ПК-01 "Львов" для эмуляторов

Post by MARAT_BEST »

LV_VIEW это что первое в голову пришло , как один из вариантов. Сжат upx.
думал может тут что есть, типа таблица токенов.
Zelya wrote: ПС Здесь уже почти все сделано господином Калашниковым:
viewtopic.php?f=22&t=84
вот тут вообще вроде все понятно
Attachments
Снимок555.JPG
Post Reply

Who is online

Users browsing this forum: No registered users and 0 guests