PC-01 Lviv http://pc01.lviv.ua/forum/ |
|
Форматы файлов ПК-01 "Львов" для эмуляторов http://pc01.lviv.ua/forum/viewtopic.php?f=12&t=102 |
Page 1 of 6 |
Author: | liberation [ 05 Mar 2012, 11:16 ] |
Post subject: | Форматы файлов ПК-01 "Львов" для эмуляторов |
Кто-нибудь может написать инфу про форматы .LVT, .SAV и прочие, использующиеся в эмуляторах ПК-01? |
Author: | Zelya [ 05 Mar 2012, 15:27 ] |
Post subject: | |
Первые 16 символов - хедер. Сначала оперделям тип програмы: Если хедер начинается с "LVOV/DUMP/2.0/" - то это *.sav файл (дамп эмуля Калашникова). Иначе, хедер должен начинаться с "LVOV/2.0/" (LVT, LV0, ...). Тогда проверяем 9-й символ (начало нумерации с 0). Если он 0xD3, то это бейсик-программа, если 0xD0 - бинарная. Теперь лоадим прогу: Для бинарной, все просто: 16, 17 символы - адресс начала памяти для программы; 18, 19 - конец; 20, 21 - точка старта, все остальные байты просто пишутся в память с начального адресса. Потом, соответственно запуск со старта. Для бейсика схоже, только адресс начала программы берется не из файла, а используются системные переменные для бейсика (их ищем тут). В самом файле идет просто код. Не забываем установить адресс окончания бейсик-программы. После загрузки такого файла надо натайпать run. Для дампа так: После хедера 0x1000 символов - память. Следующие 0x4000 - видео Следующие 0x100 - порты Потом регистры в следующем порядке: b, c, d, e, h, l, a, f, sp (2 байта), pc (2 байта) Вот, вроде, и все.... UPD. Забыл сказать! LV0, LV1 и т.п. это те же самые *.LVT. Просто некоторые программы разбиты на файлы. Для них первым грузится LVT, а потом, на всякие LOADы догружаются следующие по номеру LV |
Author: | sadfsdfsdaf [ 07 Mar 2012, 21:40 ] |
Post subject: | |
формат я выбирал не мудрствуя лукаво - просто взял стандартный с ленты и выкинул пилот-сигналы, а повтор типа файла (D0, D3 и т.д. (кстати, есть ещё SLOAD и LOAD файлы, там эти коды будут другие)) оставил в одном экземпляре, ибо незачем (файл и так надёжен в отличие от ленты). с дампом получилось хуже, исходный замысел был, чтобы сигнатура составляла 16 байтов, тогда в hex-редакторе легко по зонам памяти "гулять", но промазал, один байт там лишний получился. Code: Смещение Размер Значение Описание BASIC .LVT/.LVR +0x00 9 "LVOV/2.0/" Первичная сигнатура .LVT-ленты +0x09 1 0xD3 Вторичная .LVT сигнатура (Basic) +0x0A 6 "......" Имя ленты в КОИ7 (выравнено пробелами) +0x10 upto EOF 0x??, ... Текст бейсик-программы во внутреннем формате: DW:0?, DW, DB(...), DB:0 - признак конца программы, номер строки, токенизированная строка, конец строки CODE .LVT +0x00 9 "LVOV/2.0/" Первичная сигнатура .LVT-ленты +0x09 1 0xD0 Вторичная .LVT сигнатура (Binary) +0x0A 6 "......" Имя ленты в КОИ7 (выравнено пробелами) +0x10 2 0x???? Адрес начала размещения программы +0x12 2 0x???? Адрес конца размещения программы +0x14 2 0x???? Адрес точки запуска программы +0x16 upto EOF 0x??, ... Тело программы |
Author: | liberation [ 07 Mar 2012, 23:21 ] |
Post subject: | |
Quote: с дампом получилось хуже, исходный замысел был, чтобы сигнатура составляла 16 байтов, тогда в hex-редакторе легко по зонам памяти "гулять"
Если не секрет, то как Вы так красиво форматируете вывод в code-блоке?А вообще - большое спасибо за инфу! Теперь мой хелловорлд как никогда близок к завершению. |
Author: | sadfsdfsdaf [ 09 Mar 2012, 18:12 ] |
Post subject: | |
Quote: Если не секрет, то как Вы так красиво форматируете вывод в code-блоке?
так ведь шрифт моноширинный....в FARe всё делаю... |
Author: | Tim0xA [ 11 Jun 2012, 09:04 ] |
Post subject: | Re: |
Quote: Для дампа так:
До конца файла остается еще 14 байтов. Они что означают?
После хедера 0x1000 символов - память. Следующие 0x4000 - видео Следующие 0x100 - порты Потом регистры в следующем порядке: b, c, d, e, h, l, a, f, sp (2 байта), pc (2 байта) |
Author: | Zelya [ 11 Jun 2012, 09:52 ] |
Post subject: | Re: Re: |
Quote:
До конца файла остается еще 14 байтов. Они что означают?
Не знаю, но кругом они одинаковые. Я в онлайн эмуле/студии их игнорю и все, тьфу-тьфу-тьфу, работает. Возможно, Владимир прояснит ситуацию?
|
Author: | sadfsdfsdaf [ 11 Jun 2012, 23:04 ] |
Post subject: | Re: Re: |
Quote: Quote:
До конца файла остается еще 14 байтов. Они что означают?
Не знаю, но кругом они одинаковые. Я в онлайн эмуле/студии их игнорю и все, тьфу-тьфу-тьфу, работает. Возможно, Владимир прояснит ситуацию?Code: #define DumpSign "LVOV/DUMP/2.0/H+" int LoadAll(char* s, unsigned int Speed) { .................................................................... fread(&BasicStack,sizeof(BasicStack),1,f); fread(&BasicHotEntry,sizeof(BasicHotEntry),1,f); fread(&BasicProgBegin,sizeof(BasicProgBegin),1,f); fread(&BasicProgEnd,sizeof(BasicProgEnd),1,f); fread(&LoadBinaryBpx,sizeof(LoadBinaryBpx),1,f); fread(&LoadBinaryEntry,sizeof(LoadBinaryEntry),1,f); fread(&LoadBinaryOfs,sizeof(LoadBinaryOfs),1,f); fclose(f); if (ferror(f)) return erIO; else { emControl(emcSetBpx,8,LoadBinaryBpx); return erOK; } } |
Author: | Tim0xA [ 12 Jun 2012, 01:38 ] |
Post subject: | Re: Re: |
Quote:
это привязка к биосу, т.е. точки входа и значения некоторых переменных
Значит эти данные можно игнорировать, т.к. они уже должны быть в дампе памяти.
|
Author: | Tim0xA [ 12 Jun 2012, 14:11 ] |
Post subject: | Re: Форматы файлов ПК-01 "Львов" для эмуляторов |
Оказывается в формате *.SAV значения регистров управляющего слова для ВВ55 по адресам 0x140D4 и 0140E4 обычно сохраняются без старшего бита, из-за чего у меня в эмуляторе в некоторых играх глючила клавиатура (например, в DRACULA не нажималась клавиша <ВК>), т.к. режим работы ВВ55 был запрограммирован неправильно. Учел это в эмуляторе, теперь SAV-файлы нормально запускаются. P.S. Кстати, только в "prisoner.sav" эти биты оказались почему-то установлены. |
Author: | liberation [ 12 Jun 2012, 14:58 ] |
Post subject: | Re: Форматы файлов ПК-01 "Львов" для эмуляторов |
Quote: P.S. Кстати, только в "prisoner.sav" эти биты оказались почему-то установлены.
В порядке пояснения: речь идет об игре "Узник".
|
Author: | sadfsdfsdaf [ 12 Jun 2012, 22:11 ] |
Post subject: | Re: Re: |
Quote: Quote:
это привязка к биосу, т.е. точки входа и значения некоторых переменных
Значит эти данные можно игнорировать, т.к. они уже должны быть в дампе памяти. |
Author: | sadfsdfsdaf [ 12 Jun 2012, 22:15 ] |
Post subject: | Re: Форматы файлов ПК-01 "Львов" для эмуляторов |
Quote: Оказывается в формате *.SAV значения регистров управляющего слова для ВВ55 по адресам 0x140D4 и 0140E4 обычно сохраняются без старшего бита, из-за чего у меня в эмуляторе в некоторых играх глючила клавиатура (например, в DRACULA не нажималась клавиша <ВК>), т.к. режим работы ВВ55 был запрограммирован неправильно. Учел это в эмуляторе, теперь SAV-файлы нормально запускаются.
странно. я этот контроллер вообще не эмулировал, ну т.е. у меня он "всегда в одном и том же режиме работает", а регистры просто пишутся/читаются "как есть". если контроллер самостоятельно сбрасывает/выставляет биты со своей стороны, то - да, сохранённые значения будут неверными, т.к. исходно что в порты программа писала, то там и останется.
|
Author: | Tim0xA [ 12 Jun 2012, 22:51 ] |
Post subject: | Re: Форматы файлов ПК-01 "Львов" для эмуляторов |
Quote: я этот контроллер вообще не эмулировал, ну т.е. у меня он "всегда в одном и том же режиме работает", а регистры просто пишутся/читаются "как есть"
Вот на "Векторе" такой подход не прокатывает. Есть несколько программ, которые используют различные режимы работы ВВ55 в своих целях, поэтому пришлось заэмулировать его по-настоящему. Соответственно и во "Львове" этот код тоже заюзан.
|
Author: | sadfsdfsdaf [ 13 Jun 2012, 00:15 ] |
Post subject: | Re: Форматы файлов ПК-01 "Львов" для эмуляторов |
Quote: Вот на "Векторе" такой подход не прокатывает. Есть несколько программ, которые используют различные режимы работы ВВ55 в своих целях, поэтому пришлось заэмулировать его по-настоящему. Соответственно и во "Львове" этот код тоже заюзан.
верю, на Радио-РК или Корвете железа вообще "до чёрта" (со всеми их ПДП, ВГ, и т.п.)(не было у меня тогда документации, программ тоже не было, которым бы был нужен контроллер) |
Page 1 of 6 | All times are UTC+03:00 |
Powered by phpBB® Forum Software © phpBB Limited https://www.phpbb.com/ |