Чтобы программа запустилась из пзу, она должна быть размещена в области расширения биос, иметь корректный заголовок расширения биос и точку старта, как у расширения биос. Или, другой вариант, оформить ее как пзу бейсик.
Чтобы программа запустилась из пзу, она должна быть размещена в области расширения биос, иметь корректный заголовок расширения биос и точку старта, как у расширения биос. Или, другой вариант, оформить ее как пзу бейсик.
Пара-тройка игрушек для записи в ROM. Проверялась с ISA ROM Board на XT'шке и в эмуляторе PCem (модифицированный).
Метода следующая: найти игруху в .COM файле. Запаковать ее суперским архиватором LZ4_8088 by Trixter. Написать на ассемблере мелкий загрузчик + распаковщик. В простонародье - STUB. Начинаться он должен как все нормальные Option ROM с 0x55 0xAA, далее размер ROM в 512-байтных блоках, далее кодес. Кодес должен брать сжатые данные из ПЗУ и распаковывать их в ОЗУ. Например куда-нибудь в сегмент 1000h:0100h. Смещение 0100h - для обычных COM файлов, мало-ли какой игре взбредет в голову прочитать параметры командной строки из PSP. Еще неплохо написать заглушку для int 21h, потому что например, J-Bird пытается считывать свой файл с лучшими результатами, а так как DOS нет, и BIOS обычно плюет на прерывания выше int 15, то вектор прерывания int 21h указывает на 0000:0000, и как следствие - вис. Чтоб этого не было, достаточно просто IRET влепить туда и все. Дальше передаем управление распакованной проге по JMP FAR 1000h:0100h . В последнем байте бинаря не забыть поставить контрольную сумму.
UPD: Добавил IBM Basic C1.10. Постепенно еще может что добавлю...
Последний раз редактировалось Tronix; 06.06.2019 в 18:42.
Filin (05.11.2019)
вот еще бейсик
https://www.vogons.org/viewtopic.php?f=46&t=67340
а дос с поддержкой жесткого диска в rom варианте ?
или дискеты длинной
2.11 в танди rom был
Бейсик с вогона занимает 64Кб, тогда как оригинал занимает 32Кб и, после небольшой доработки, ставится во 2-ю панельку на основной плате. DOS в ROM варианте потребует не менее 128Кб. На плату расширения вроде столько не установить.
Утилитка COM2ROM для автоматизации вышеописанного процесса. Состоит из EXE-файла, рядом должен лежать загрузчик (stub.bin).
Процесс использования такой:
- Прежде всего нужно скачать архиватор LZ4, взять его можно здесь: http://www.oldskool.org/pc/lz4_8088/LZ4_8088.ZIP . Для винды заходим в папку Win32 и запускаем из командной строки "compress.bat <имя-файла-с-игрой.COM>". Получаем файл "имя-файла-с-игрой.LZ4". Это мы сжали .COM файл по методу LZ4.
- Запускаем из командной строки "COM2ROM <имя-файла-с-игрой.LZ4> <имя-файла-с-игрой.BIN> . Это мы склеили STUB.BIN + <имя-файла-с-игрой.LZ4> + добили 0xFF до 32 или 64Кб. Заодно прописали в STUB сегмент и смещение куда распаковывать данные. Ну и прописали в конец контрольную сумму.
- Прошиваем <имя-файла-с-игрой.BIN> в EEPROM или flash
У проги есть ключи: -s xxxx и -o xxxx, что означает сегмент и смещение, по которым будут распакованы данные и куда будет передано управление. По умолчанию - сегмент 1000h, смещение 0100h. Это обычная практика для COM-файлов. Но ситуации бывают разные -)
Написана на скорую руку Just For Fun, прошу строго не судить, за возможные негативные последствия использования этой программы не несу ответственности.
Сорцы STUB.ASM и самой тулзы приложены, находятся в папке /src .
Filin (05.11.2019)
а com2wav для первого Поиска есть , или мне приснилось ?
С любовью к вам, Yandex.Direct
Размещение рекламы на форуме способствует его дальнейшему развитию
Savoj, есть схема этого модуля ?
Только увидел.....
Ага есть, в понедельник отсканирую.
Радио-86РК +375292940812
https://drive.google.com/file/d/1zML...ew?usp=sharing
https://drive.google.com/file/d/1Yb3...ew?usp=sharing
https://drive.google.com/file/d/14sl...ew?usp=sharing
https://drive.google.com/file/d/1Lsv...ew?usp=sharing
https://drive.google.com/file/d/19Nt...ew?usp=sharing
https://drive.google.com/file/d/1e8J...ew?usp=sharing
Радио-86РК +375292940812
Daniil Chislov 86 (19.04.2020), Filin (11.11.2019), val_dp (11.11.2019)
Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)