PC-01 Lviv

It is currently 29 Mar 2024, 15:25

Forum Games WEB Tape Loader Twitter RSS

All times are UTC+03:00




Post new topic  Reply to topic  [ 78 posts ]  Go to page Previous 1 2 3 4 5 6 Next
Author Message
PostPosted: 05 May 2020, 17:04 
Offline

Joined: 24 Feb 2016, 11:03
Posts: 14
Quote:
Для правильной работы бекйсик-программы в ПК-01 нужно грузить токены в память, как они есть.
Спасибо большое!
Я вчера пока рассаматривал крякозябры, получающиеся простым переводом байтиков в одну из кодировок, понял, что скорее всего операторы и команды шифруются отдельным байтом или, возможно, серией байтов. Из чего понял, что это, наверное, имелось под токенизацией. Да и смутно всплыли такие вещи, что об этом я, по-моему, догадывался ещё в 90-ые годы, когда просто на слух определил, что короткие программки кодируются на ленте чисто командами. А если в конце проги идут уже не чисто операторы, а что-то своё, например даже небольшой текст, то он дольше "пищит" чем множество голых операторов.

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


Top
   
 Post subject: Re: Re:
PostPosted: 05 May 2020, 17:12 
Offline

Joined: 24 Feb 2016, 11:03
Posts: 14
Очень сложно меня называть спецом в Си, потому что я всё-таки пишу на C# а не на Си (а это совершенно разные языки), и я далеко не спец)
Но Делфи, да, возможно пойму. Но тут загвоздка в том что сейчас мне интересно как работать с форматами CLOAD и CSAVE, а не с BLOAD-BSAVE. Но в любом случае спасибо за информацию. Я её сохраню, возможно пригодится
Quote:

В SASemulator есть такая штука как перехват Bload/Bsave. Читает и записывает в LVT-формат (см. Readme в В SASemulator). В том моменте я поленился делать через буфер (масив), а сделал через длинную строку string;
Ну раз ты спец в СИ то думаю в коде Дельфи разберёшся. :-)
Надеюсь данные вырезки з кода тебе чем-то помогут!
Выглядит это так


Top
   
PostPosted: 05 May 2020, 17:29 
Offline
Site Admin
User avatar

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


Top
   
 Post subject: Re: Re:
PostPosted: 05 May 2020, 18:06 
Offline

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

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

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


Top
   
PostPosted: 05 May 2020, 18:13 
Offline

Joined: 24 Feb 2016, 11:03
Posts: 14
Всё, теперь всё стало понятно!
То есть поэтому я и не нашёл расшифровки, потому что обработчик брался из слепка ПЗУ Львова, который монтируется в эмуляторы.

Так-то там кое-что проглядывается в коде файлов LVT, возможно получится у меня вручную это дело расшифровать...
Quote:
Так, по порядку.
1. LVT - это формат образа данных на кассете. Условно говоря, такой себе iso для CD. И какая именно программа (или даже не программа) там записана - это уже вопрос номер два.


Top
   
PostPosted: 05 May 2020, 19:19 
Offline

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

Это ж тебе не текст ASC-в-ANSI "перегнать", - тут бы я не спорил. Даже не сложно RTF текстовый формат изучить хоть более менее, чтобы его создавать RTF можно было из того, что тебе известно! Не HTML-генерировать что куча инфы всякой вокруг...
Ну я не знаю... как тебе объяснить что это безнадёжно! Пусть другие учасники попробуют!
Единственный вариант который я лично вижу возможным это создать емуль ("крутилку") ПК-01 и пусть эта "крутилка" и прокручивает!


Top
   
PostPosted: 05 May 2020, 21:11 
Offline
Site Admin
User avatar

Joined: 24 Jul 2008, 12:05
Posts: 1070
Quote:
Единственный вариант который я лично вижу возможным это создать емуль ("крутилку") ПК-01 и пусть эта "крутилка" и прокручивает!
Достаточно вычитать и распознать нужные функции из ПЗУ


Top
   
 Post subject: Re: Re:
PostPosted: 06 May 2020, 01:39 
Offline
User avatar

Joined: 13 Feb 2012, 15:32
Posts: 341
Location: Россия
Quote:
В самом файле идет просто код. - Просто код? Вчера я прикинул и понял, что там скорее всего один байт может означать целую команду или оператор, что и есть скорее всего токенизация.
у меня сохранилась программа by Hard Wisdom 'LVOV Files Viewer' , она как раз из LVT файла переводит в текст бейсик программы
работает только на 32-разрядных машинах
может чем поможет, если поковырять :wink:


Attachments:
LV_VIEW.zip [7.73 KiB]
Downloaded 579 times
Top
   
PostPosted: 06 May 2020, 11:13 
Offline

Joined: 24 Feb 2016, 11:03
Posts: 14
Quote:
Достаточно вычитать и распознать нужные функции из ПЗУ
Как это можно сделать?


Top
   
PostPosted: 06 May 2020, 11:57 
Offline

Joined: 18 May 2016, 19:55
Posts: 425
Quote:
Достаточно вычитать и распознать нужные функции из ПЗУ
Да что вы говорите :-)
Всё так просто, что даже описания и документации никакой не нужно. :)
А вот hlorat не понимает. Да и я тоже.
И главное существует программа LV_VIEW.zip (я её еще не пробовал правда) а описания и документации никакой!

Подобная простота мне напомнила формат SAV который вроде простой как двери, да еще и описание вроде бы есть, но тем не менее мне пришлось его "ковырять", чтобы мой емуль создавал такие SAV, чтобы можно было их ЛЮБЫМИ СУЩЕСТВУЮЩИМИ на данный момент эмуляторами открывать. Четыре разновидности SAV получилось с одного описания. :-)
Quote:
Как это можно сделать?
И я о том же!


Top
   
PostPosted: 06 May 2020, 12:15 
Offline

Joined: 18 May 2016, 19:55
Posts: 425
смотрю LV_VIEW не большой по размеру -7889 байт
может кто знает как его дизкомпилировать по грамотному ?!
будет что рассматривать.
Гляди потом и документацию создадим.
Сам думаю не смогу так как никогда не занимался дизкомпиляцией 32-битных програм.


Top
   
PostPosted: 06 May 2020, 12:50 
Offline
Site Admin
User avatar

Joined: 24 Jul 2008, 12:05
Posts: 1070
Блин. Не проще дизассемблировать ПЗУ и посмотреть методы загрузки бексик-программы? Это то, про что я говорил.


Top
   
PostPosted: 06 May 2020, 15:11 
Offline

Joined: 18 May 2016, 19:55
Posts: 425
Quote:
Блин. Не проще дизассемблировать ПЗУ и посмотреть методы загрузки бексик-программы? Это то, про что я говорил.
Думаю не проще! Так как ПЗУ во первых размером больше чем программа, да и "отсеивать" надо будет, не нужное, а в программе скорее всего, - нет, "отсеевать" ничего не нужно будет!
Ко всему ж, чтобы что-то понять, я так понимаю в ОЗУ должна быть васик-программа, причём подходящая(!), со всеми образцами и командами(!) и только уж тогда дизасемблировать и то...
если это все представить... Zelya, ну это ж тебе не _само_ ПЗУ, что оно "стабильное"...
ну ты представь себе как оно всё...начиная з загрузки ПК-01, копирования васика, динамические адреса начала и конца васик-программы да еще и "в смеси" с данними... какая ячейка и как используется в данный момент... та и вообще позиция рег PC почему в данный момент тут и куда возвращаться будет... это чуть ли не на "Э3000" в пошаговом режиме рассматривать надо, я думаю простой "распечаткой" тут не отделаешься!


Top
   
PostPosted: 06 May 2020, 21:24 
Offline
Site Admin
User avatar

Joined: 24 Jul 2008, 12:05
Posts: 1070
Елки-палки....

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


ПС Здесь уже почти все сделано господином Калашниковым:
viewtopic.php?f=22&t=84


Top
   
PostPosted: 07 May 2020, 03:26 
Offline
User avatar

Joined: 13 Feb 2012, 15:32
Posts: 341
Location: Россия
LV_VIEW это что первое в голову пришло , как один из вариантов. Сжат upx.
думал может тут что есть, типа таблица токенов.
Quote:
ПС Здесь уже почти все сделано господином Калашниковым:
viewtopic.php?f=22&t=84
вот тут вообще вроде все понятно


Attachments:
Снимок555.JPG
Снимок555.JPG [ 202.74 KiB | Viewed 7374 times ]
Top
   
Display posts from previous:  Sort by  
Post new topic  Reply to topic  [ 78 posts ]  Go to page Previous 1 2 3 4 5 6 Next

Forum Games WEB Tape Loader Twitter RSS

All times are UTC+03:00


Who is online

Users browsing this forum: No registered users and 2 guests


You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot post attachments in this forum

Search for:
cron
Powered by phpBB® Forum Software © phpBB Limited