Page 1 of 4

SPG Builder

PostPosted: Sun, 30.09.2012 18:21:15
by TS-Labs
В новом релизе WC Budder-а сделана запускалка для SPG файлов. Я запилил собиралку оных файлов.
Вместе с сорцами:
https://github.com/tslabs/zx-evo/tree/master/pentevo/tools/spgbld

UPDATE 10.11.2012
+ Добавил поддержку НЕХ-чисел с префиксами 0х, #, $
+ Добавил возможность вставлять строки каментов в .ini, начинающиеся с ;
+ Добавил печать дебажной инфы на этапе разгребания .ini

UPDATE 23.10.2014
+ Добавил автоматическую нарезку файлов, если они больше страницы, на которой должны лежать, на последующие страницы

UPDATE 10.01.2015
+ Добавил режим распаковки компилированных SPG в набор файлов плюс ini.

Re: SPG Builder

PostPosted: Sun, 30.09.2012 18:28:55
by TS-Labs
Краткая инструкция по сборке

1. Создаете папку с набором файлов, которые войдут в виде блоков в СПГ.
2. Туда же кладется инишник <file>.ini, в котором описана сборка. Пример здесь.
3. По пути %PATH% либо прямо в папку с сорцами кладете проги: spgbld.exe и mhmt.exe. (Утилита mhmt.exe написана LVD, credits to him.)
4. Запускаете spgbld.exe -b <input.ini> <output.spg> [-c <pack method>], где:
<input.ini> - имя инишника
<output.spg> - имя выходного файла
<pack method> - тип компрессии блоков:
0 - не упакованные
1 - мегалз
2 - хруст.
Если опция не указана, метод компрессии выбирается автоматически самой тулзой, т.е. каждый блок жмется методами 1 и 2 и выбирается тот метод, который эффективнее. Рекомендую юзать именно этот способ. Если размер чанка (чанк - блок SPG, размер которого кратен 512 байтам) при компрессии двумя методами вышел одинакового размера, предпочтение отдается мегалзу для более быстрой загрузки.


Распаковка компилированных SPG

1. Запускаете spgbld.exe -u <input.spg>, где:
<input.spg> - имя входного файла
2. На диске создается набор файлов, состоящий из:
<input.spg>.ini - сборочный инишник,
<input.spg>.<num> - распакованный блок данных (чанк), где <num> - порядковый номер.

Re: SPG Builder

PostPosted: Sun, 30.09.2012 18:40:02
by TS-Labs
Описание формата SPG тут.

Ini файл состоит из набора строк с параметрами. Порядок строк не имеет значения, могут идти как угодно в перемешку.
Формат строки инишника выглядит так:
<tag> = <parameter(s)>
Параметр(ы) могут быть либо текстовой строкой, либо ДЕСЯТИЧНЫМ числом и идут через запятые.

Теги:
Desc = Имя сборки, до 32 символов. Без кавычек.
Start = Адрес запуска
Stack = Адрес стека на момент запуска
Resident = Адрес, где хранится резидент для запуска (чото 32 байта или около того)
Page3 = Номер паги по адресу С000
Clock = Значение турбы при запуске. Для тсконфы это: 0 - 3,5МГц / 1 - 7МГц /2 - 14МГц / 3 - 14МГц оверклокед
INT = Прерывания: 0 -выкл / 1 - вкл
Pager = Адрес манагера страниц, 0 - нету манагера
Compression = алгоритм сжатия (-1 - авто, 0 - без сжатия, 1 - MLZ, 2 - Hrust). Действует на все последующие блоки. Может встречаться несколько раз.
Block = Адрес загрузки блока (49152-65024 с ШАГОМ 512 байт!), номер паги загрузки, имя файла, из которого подтянется дата (файл должон лежать в папке с ини). Размер файла может быть более 16384 байт. В этом случае, он автоматически нарезается на следующие по порядку страницы с адреса 49152 - удобно например складывать графику/звук. Старшие 2 бита адреса игнорируются (0 == 49152). Может задаваться в хексе: 0xC000.

Пример:
Code: Select all
Desc = Game
Start = 0xC000
Stack = 0x4000
Resident = 0x5B00
Page3 = 8
Clock = 2
INT = 0
Pager = 0
Compression = -1
Block = 0xC000,8,obj/code.c
Block = 0xC000,5,../lib/warning.scr
Compression = 0
Block = 0xC000,16,res/1.dxt

Re: SPG Builder

PostPosted: Sun, 30.09.2012 19:08:34
by Keeper
TS-Labs wrote:Описание формата SPG тут.

Премного благодарен! Вы с Budder`ом Koshi формат допиливать собираетесь али нет?

Re: SPG Builder

PostPosted: Sun, 30.09.2012 19:32:25
by TS-Labs
А куда его допиливать? Это вроде как релизный вариант.

Re: SPG Builder

PostPosted: Sun, 30.09.2012 20:53:11
by Keeper
TS-Labs wrote:А куда его допиливать? Это вроде как релизный вариант.

Это радует, буду вмонтирвовывать запускалку в ПЗУ

Re: SPG Builder

PostPosted: Fri, 12.10.2012 00:29:29
by TS-Labs
Keeper wrote:буду вмонтирвовывать запускалку в ПЗУ

Пгастите, а за какое ПЗУ вы гаварите?

Re: SPG Builder

PostPosted: Fri, 12.10.2012 02:47:09
by Keeper
Которое в фениксе

Re: SPG Builder

PostPosted: Fri, 12.10.2012 13:19:51
by TS-Labs
Keeper wrote:Которое в фениксе

Который гомнофорумный высер?

Re: SPG Builder

PostPosted: Fri, 12.10.2012 14:10:06
by lvd
TS-Labs wrote:Который гомнофорумный высер?

гомоблядкатовский высер.
главнопоятель пхеникса консультировался у блядката

Re: SPG Builder

PostPosted: Fri, 12.10.2012 14:26:55
by TS-Labs
Все круто, мне только интересно, почему мягкий теплый ламповый пхойникс сделан не на правильных транзисторах, а на мерзкой альтере?

Re: SPG Builder

PostPosted: Fri, 12.10.2012 18:35:48
by lvd
пхойникс сделан на тёплых ламповых к155ла3.
zxm_phoenix_0.JPG
zxm_phoenix_0.JPG (675.3 KiB) Viewed 21313 times

Re: SPG Builder

PostPosted: Fri, 12.10.2012 19:20:19
by TS-Labs
Совковый зетник, вгшка, АУ, пзу, а слева что? Не мерзкая ли отмега?

Re: SPG Builder

PostPosted: Fri, 12.10.2012 23:48:41
by Keeper
лол :1tooth: Все обатхертились? Ещё вопросы будут? :smoke:

Re: SPG Builder

PostPosted: Sat, 13.10.2012 01:10:08
by TS-Labs
И шо, это весь унылотроленх? Я то думал щас начнется...

Re: SPG Builder

PostPosted: Sat, 13.10.2012 09:11:13
by Keeper
TS-Labs wrote:И шо, это весь унылотроленх?

Да я и не собирался :) Но каменты хоть и предсказуемые, но доставили :)

Re: SPG Builder

PostPosted: Sat, 10.11.2012 06:17:49
by TS-Labs
Чото допилил ^^^

Re: SPG Builder

PostPosted: Sat, 10.11.2012 08:21:47
by nyuk
Keeper wrote:Это радует, буду вмонтирвовывать запускалку в ПЗУ

Значит мне пока погодить прошивать ПЗУ в своем фениксе? Правда я и так года два как годю...
А чем эта запускалка будет лучше WDC, прошитого в ПЗУ?

Re: SPG Builder

PostPosted: Sat, 10.11.2012 12:10:01
by Keeper
nyuk wrote:Значит мне пока погодить прошивать ПЗУ в своем фениксе? Правда я и так года два как годю...

Прошивай. Потом с ПЗУшкой порешаем как быть.
nyuk wrote:А чем эта запускалка будет лучше WDC, прошитого в ПЗУ?

Тем что я вижу эту прошивку как бут из которого можно быстро и без лишних телодвижений открыть SPG, хуйбетту или какой дисковод. WDC 1.6 в ПЗУ не влазит, разве что васик128 выпилить...

Re: SPG Builder

PostPosted: Sat, 10.11.2012 12:36:38
by nyuk
Keeper wrote:Прошивай. Потом с ПЗУшкой порешаем как быть.

Дак у меня дома нечем прошить, нужно к приятелю идти. Я лучше подожду, а то прошью, потом опять джва года прособираюсь чтоб перешить.
Keeper wrote:Тем что я вижу эту прошивку как бут из которого можно быстро и без лишних телодвижений открыть SPG, хуйбетту или какой дисковод. WDC 1.6 в ПЗУ не влазит, разве что васик128 выпилить...

Дак есть же прошивка с WDC 1.3, из него вполне удобно SPG запускать. Я не к тому что против, просто пытаюсь понять, зачем оно.

А про открытие хобеты я понимаю, что у меня на винте (флешке) записан бинарник, я на него жму, из заголовка берется адрес загрузки и запуска, загружается и запускается, так? Было бы клева.

Re: SPG Builder

PostPosted: Sat, 10.11.2012 13:39:23
by jerri
а зачем зашивать коммандер в ПЗУ?
в ПЗУ надо только запускалку boot файла

Re: SPG Builder

PostPosted: Sat, 10.11.2012 23:58:33
by Keeper
jerri wrote:в ПЗУ надо только запускалку boot файла

Запускалку с какого носителя?

Re: SPG Builder

PostPosted: Sun, 11.11.2012 00:46:49
by TS-Labs
Keeper wrote:Запускалку с какого носителя?

В моем биосе производится поиск хобеты с именем бут на указанном носителе, в результате: засунута СД карта, нажал ресет, 1секунда и ВЦ на экране. Зачем лохматить бабушку прошиванием командера в ПЗУ, который обновляется раз в неделю-две?

Re: SPG Builder

PostPosted: Mon, 27.05.2013 22:40:24
by Buyan
TS-Labs wrote:Чото допилил

А еще че нибудь допилить в планах нет случайно? ;)
Убрать ограничение 16Кб например. Было бы архиудобно, если бы тулза большие файлы сама резала на части и последовательно в страницы забивала.

Re: SPG Builder

PostPosted: Mon, 27.05.2013 23:49:13
by TS-Labs
ОК, подумаю.