Мне нужна помощь, начал собирать РОМ-диск по М-К №1, 1997г., кто может сделать для него пару образов из нескольких программ, игрушек под 27с256 ?
https://i.ibb.co/NrwJs19/B13-A881-F-...ECFC4110-A.jpg
Вид для печати
Мне нужна помощь, начал собирать РОМ-диск по М-К №1, 1997г., кто может сделать для него пару образов из нескольких программ, игрушек под 27с256 ?
https://i.ibb.co/NrwJs19/B13-A881-F-...ECFC4110-A.jpg
В эмуляторе emu есть диск, но там формат файлов Специалиста МХ2. А вообще лучше собрать SD читалку, там можно на карту очень много фалов записать.
SD читалку тоже планирую собрать, но не на МГТФе, а на нормальной плате. Но платы пока нет, поэтому ROM-диск..
Файл Specialist/001.rom из архива или мой (см. атач).
Если нужна программа просмотра файлов, то скажите - выложу. Это EXTERNAL FLASH DISK V0.1 от HardWareMan'а.
в папке eureka тоже есть какой то romdisk..
ROM диски разные есть, в смысле ПО его обслуживающее. А подключение вроде стандарт - данные на порт А, адрес - на порты В и С ВВ55.
У меня проблема в том, как правильно сформировать каталог в ПЗУ РОМ-диска. Прочитал статью в "М-К", но до конца еще понял.
Допаяю, буду сам разбираться.
Бейсик, Крестики-нолики, Нарды, Fisher cat, Адскок, Lines
PVV, бейсики здесь правленные https://zx-pk.ru/threads/10345-spetsialist-bejsik.html
и еще игру Джет Сет, барсик принес, дай бог ему здоровья
https://zx-pk.ru/threads/27540-lenin...sta/page2.html
Не забываем, что ПЗУ на 32КБ, а программа должна быть меньше, тк нужно еще 16 байт на описатель заголовка. Джет-сет сам на 32КБ только...
Образ я то собрал тестовый, проблема в другом, а монитор то правильный под РОМдиск есть?! в журнале он приведен с ошибками:
https://i.ibb.co/2WXKKfZ/1997-01-djvu-Dj-View.png
никого не смущают одинокие 'С' ? Монитор с сайта fifan_а подставляет все C0, но это ошибка.
Надо в отладчике разбираться.
Надо еще посмотреть как ПЗУ к ВВ55 подключена, совпадают ли адреса с РК-86, а то я конфиг РОМдиска из РК взял, но не сверял.
------------
удалил вложение, ниже есть исправленное
PVV, небольшое увлекательное расследование с заглядыванием в коды Монитор-2, для которого и приведены эти коды обслуживания ROM диска легко восстанавливают изначальный вариант:
https://jpegshare.net/images/1e/da/1...1fd0c18c3a.png
Однако в ячейке 0C923H должен быть код 0C9H (RET), который кстати уже есть в теле Монитор-2. Видимо этот байт лишний в данной таблице. Если этот байт забить 00H (NOP), то после копирования строки директории программа вывалится в кишки монитора и дальнейшее поведение будет непредсказуемо.
- - - Добавлено - - -
PS В дампе первый байт 01H вместо 11H - это моя ошибка. Не обращайте внимание. В дизасме справа всё правильно.
Спасибо. Часть переходов я раскопал, а вот куда они ведут в мониторе не знал. Особенно CALL 0xCC0C что такое. Однако все еще не работает этот патч. Имя программы пишет, в монитор по М выходит, но на N и Y глючит. Я поправил описатель в образе РОМдиска (последние 4 байта образа FF 46 00 00) , и первую программу загрузил правильно, она запустилась, но надо разбираться дальше.
------------------
надо изменить на:
C8E2 E5 PUSH H
тогда работает N
А, вот куда 10Н девается. Теперь точно всё чётко: 01 => 11, F5 => E5 и контрольная сумма остаётся какой была. Что касается клавиш, там всё прикольнее и проще:
Сначала вводится символ, он попадает в [A]. Затем восстанавливается уровень стэка, компенсируя первый PUSH по адресу C8E2 а затем считанный код символа сравнивается с 4EH, а это ASCII 'N'. Если код символа равен - то идём на второй круг, если код ASCII меньше 4EH - выходим через RC (RET C). А в остальных случаях идем дальше, где значение в HL заносится как вершина стэка (должно указывать на параметры запускаемой программы), откуда идет прогрузка всех регистров и однократный вызов подпрограммы считывания данных с ROM диска, которая завершаясь через RET выйдет уже в загружаемую программу. Смысл кнопок в том, что по таблице ASCII 'M' < 'N' < 'Y'. Но будут работать все кнопки согласно весу ASCII относительно кода 'N'.Код:C8FC CD 03 C8 CALL 0C803H
C8FF D1 POP D
C900 FE 4E CPI 4EH
C902 CA D9 C8 JZ 0C8D9H
C905 D8 RC
C906 F9 SPHL
C907 C1 POP B
C908 D1 POP D
C909 E1 POP H
C90A 31 FD 7F LXI SP,7FFDH
C90D 00 NOP
C90E 00 NOP
- - - Добавлено - - -
https://jpegshare.net/images/8b/66/8...347f5846de.png
- - - Добавлено - - -
А не, автозапуска не происходит, ведь стэк обнуляется до стандартного мониторного адреса. Только загрузка кода в память. Статью надо читать внимательнее:
https://jpegshare.net/images/2f/cd/2...524dcc3c12.png
- - - Добавлено - - -
Нужно делать строго как описано в статье. Код вычисляет строку от 0000H, делая -0010H за каждый проход цикла вывода имени и свойств файла. Т.е. сначала 7FF0H, затем 7FE0H и так далее (старший бит игнорируется в адресации ROM диска), с каждым нажатием на 'N', но это перед выводом. А на момент запуска этот указатель в начале параметров, откуда уже через серию POP они и попадают в регистры. Это плата за простоту и компактность кода. Порядок же описываемых программ действительно не важен.
Предлагаю модераторам перенести сообщения 156-172 из темы Линевский Специалист сюда, дабы не оффтопить там. - СДЕЛАНО
- - - Добавлено - - -
Во вложении исправленный монитор, им fifan_у следует заменить тот файл, что выложен сейчас у него на сайте.
Еще во вложении продублирован конфиг, который не изменился от выложенного ранее и исправленный образ диска.
Касательно образа, я не вполне понял, для чего нужно старший бит адреса выставлять в 1 (я это не делаю, сейчас он в 0), по указанию в статье? или таким образом в этом цикле:
C90F 22 01 F0 SHLD 0xF001
C912 3E 0E MVI A,0x0E
C914 32 03 F0 STA 0xF003
C917 3A 00 F0 LDA 0xF000
C91A 02 STAX B
C91B 23 INX H
C91C 03 INX B
C91D CD 27 C4 CALL 0xC427 ; cmp HL == DE
C920 C2 0F C9 RNZ 0xC90F
планировалось старшим битом выключать по /OE ПЗУ? так здесь, похоже, ошибка, тк мы выключаем ПЗУ, а след командой ее читаем, и для древних, медленных, ПЗУ это похоже работать будет, то для современных и быстрых получим мусор... Плюс еще и 32КБ возможной адресации теряем. Предлагаю этот
C912 3E 0E MVI A,0x0E
C914 32 03 F0 STA 0xF003
кусок кода выбросить, и получим РОМдиск на 64КБ. Такая доработка еще на РК-86 делалась, когда /OE и /CS ПЗУ всегда в нуле.
PS в образе диска LRUNNER я странный зашил, он и в оригинале так работает, те не работает по факту, только экраны меняются...
PVV, схему посмотри и догадайся:
https://jpegshare.net/images/d6/04/d...ca544651fc.png
Перезаписал Монитор, исправил прошивку РОМ-диска.
https://i.ibb.co/N63hmtP/46-C3-E1-EB...-AEECC6-C1.jpg
При вводе директивы X комп виснет
- - - Добавлено - - -
Отличается схема подключения 27С256 и 28С256 ?
Ставил и одну и другую.
Pluto,
https://jpegshare.net/images/1f/d6/1...b895c30f02.png
https://jpegshare.net/images/aa/83/a...a5ff3d8f44.png
А ведь C90F вызывается не только для чтения самой программы но и элемента меню.
Переписал на С9.
Заработало!
https://i.ibb.co/gvNLpJp/E5031-A21-8...-BAAC3-AB8.jpg
https://i.ibb.co/BGZ3fxd/237-BB063-8...E421-E7-CE.jpg
Но грузится только первая программа
При попытке загрузки второй, на экран вываливается это:
https://i.ibb.co/LRT4wW3/FFA27-C98-F...-E3-E644-C.jpg
Если запускаю третью:
https://i.ibb.co/ZHzn2d4/38373-DD7-7...9-C6500-B4.jpg
Явно наблюдаются человечки из Lode Runner :)
При нажатии "Р" тоже появляется такой же мусор
а должно быть вот так
https://i.ibb.co/z6SYndF/rom1.png
я же выложил поправленный образ здесь.
Сложно 'это' назвать схемой, ну пусть так.
Вот более наглядная 'схема'
https://i.ibb.co/R7nZMwt/ROMD-sch.png
и на что смотреть?
инача говоря КС7 с 22й ножки перенести на 1ю, которая у 27с512 А15, а на 22ю, соответственно, подать 0В.Цитата:
кусок кода выбросить, и получим РОМдиск на 64КБ. Такая доработка еще на РК-86 делалась, когда /OE и /CS ПЗУ всегда в нуле.
- - - Добавлено - - -
Вот еще образ, два бейсика и игра диггер.
- - - Добавлено - - -
Только не напасешся ПЗУшек, надо использовать другой носитель.
to Pluto- нет желания такую идею подключения SD через РОМ диск сделать? SDOS будет из этого РОМ диска грузиться, а дальше работать уже с картой...?
Я собственно в первую редакцию сам это внес..
https://i.ibb.co/3ptXJDs/123.jpg
Еще что то нужно исправлять ?
- - - Добавлено - - -
Переписал. Работает.
- - - Добавлено - - -
https://i.ibb.co/gyNMdGZ/6953-B900-1...E228-F20-A.jpg
https://i.ibb.co/zfQb8H2/2-A386-B71-...-E96-A1-DA.jpg
Класс!
PVV, Спасибо!
- - - Добавлено - - -
Только Адскок теперь не грузится..
Правильно я понимаю, тут нет микроконтроллера и в этом отличие от схемы Alemorf ?
- - - Добавлено - - -
Есть разводка платы под ЛУТ?
Попробую наконец сам вытравить плату. Морально уже созрел :)
- - - Добавлено - - -
Спасибо!
Мне бы еще крестики-ноликии и кота-рыболова.. :)
В архиве Кот + Крестики..
Вложение 70226
Прошивка ПЗУ для SD читалки под Специалист есть?
Еще вопрос:
https://i.ibb.co/wJ46CkK/8-E7-F94-E4...EAC398-C61.jpg
Для такой платы SD согласование уровней сигналов не требуется?
прошивка есть.
https://zx-pk.ru/threads/29710-sd-ca...l=1#post985070
там исходники, надо поправить под нужную конфигурацию (комп, схема подключения) и пересобрать (собиралка там же). но схему подключения через ВВ55 я что-то сходу не нашел. Надеюсь автор подскажет.
насчет платы - стабилизатор на 3В - вижу, какие-то резисторы - тоже. сходу не скажешь, надо хотя бы фотку с другой стороны.
PVV, а как бы универсальную штуку, sdos которая понимает ROM диск, и интегрирована с монитором
такое чтото прекрасное
Кот большой, он один на весь образ, однако...см вложения.
собранной нет, надо сделать из исходников :)
Тут, правда есть нюансы как это сделать, из-за специфического РОМ-диска Специалиста - то, что каталог файлов в конце диска используется, а по моей задумке там FF должны быть...
скорее всего не нужно, все на борту, у меня есть аналогичная плата под microSD, но там для согласования уровней микросхемка стоит ~16 ног, а здесь только резисторы, но это будет как в схеме выложенной выше.Цитата:
Для того, что бы обойтись вообще без дополнительных микросхем в мультиплексировании выходной шины данных ПЗУ РОМдиска и выходной ножки данных SD карты на DR7 решил в качестве такого 'мультиплексора' использовать саму ПЗУ РОМдиска. ПЗУ РОМдиска собрал таким образом - повторяю два раза 16КБ с данными, в которых записана SDOS, затем 16КБ нулей(можно 7F) и, затем, 16КБ FF. В схеме же РОМдиска на старший адресный разряд(А15) подается 0 (РС7 с ВВ55) при работе с нижней половиной ПЗУ и 1 при работе с SD, а на предпоследний адресный разряд(А14) идут данные с SD карты.
Такой вариант схемы позволяет используя только штатные средства монитора РК загрузить из РОМдиска SDOS и начать работу с SD картой.
Сама SDOS в полном варианте занимает 2.2КБ, а в усеченном, без записи, меньше 2х.
Соответственно, можно эту схему реализовать на минимум 8КБ ПЗУ, где 2КБ(SDOS)+2КБ(SDOS)+2КБ(00)+2КБ(FF). В моем варианте я использую ПЗУ на 64КБ, и в 16КБ полезного объема можно поместить кроме SDOS еще что-то, или варианты сборки SDOS с другой раскладкой по размещению в памяти
- - - Добавлено - - -
Мы, кажется, этот вопрос уже поднимали, куда еще интегрироваться то? Чего не хватает для реальной жизни?
Или в SDOS добавить поддержку РОМдиска? а для чего, если можно выйти в монитор и достучаться до диска? или, вообще для чего нужен то еще этот диск, если есть SD, кроме как для хранения SDOS?
Размер диска слишком мал, как ни крути...
Я поддержку SD карты взял от автора, Vinxru. У него оболочка на карте, а загрузчик зашит в ПЗУ. Так сделано в Сябре.
PVV, дос прекрасная - из которой есть доступ ко всем блочным устройствам
нет?
скачал заново архив, подставил оттуда файл ROM1.bin в emu, все работает, более того, разобрался, что LRUNNER, оказывается, работает, надо было просто нажимать 1 или 2 или 3 для запуска...
- - - Добавлено - - -
Опишу, вообще, как делать образ для этого диска.
Я все делаю в linux в mc, но в win шаги будут аналогичные.
Из RKS файла удаляем первых 4 байта и последних 2 байта (вообще это совершенно не обязательно, если эти 6 байт на каждый файл не критичны к общему объему диска, только в алгоритме, описанном ниже, нужно будет эти 6 байт дополнительно учитывать). Это можно сделать простым редактированием RKS файла как текстовый файл. Дальше копируем все файлы в один ROM.bin файл, дописывая их в конец ( в win можно использовать copy f_in1+f_in2 f_out). Копировать нужно столько, что бы не превысить размер в 32768 байт. Файл ROM.bin до размера 32768 нужно добить в хвосте, к примеру, пробелами, опять таки, открыв его как текст. Дальше заполняем таблицу указателей на файл в HEX редакторе:
https://i.ibb.co/VHkXrNL/ROM1t.png
начинаем с нижней строки 7FF0
первый байт 0А, дальше имя файла 8 байт, затем 00 и самые интересные 6 байт,
возвращаемся к RKS файлам, смотрим первые 2 байта первого файла и вписываем их, смотрим 3 и 4 байты (назовем их 3_1 и 4_1) в RKS (это размер файла) и опять пишем их, и для этой, самой нижней строки еще 00 00 (это начало этого файла в ROM). Все, запись для первого файла готова, переходим на строчку выше 7FE0.
Повторяем первый байт 0А, дальше имя файла 8 байт, затем 00, смотрим первые 2 байта второго RKS файла и вписываем их, смотрим 3(3_2) и 4(4_2) байты в RKS второго файла, и! нужен HEX калькулятор! Меняем местами байты [4_1][3_1] размера первого(предыдущего) файла и складываем их с развернутыми байтами размера второго(текущего) файла, те [4_1][3_1]+[4_2][3_2]=[4_12][3_12] и пишем результат в обратном порядке [3_12][4_12]. И завершающие 2 байта это, байты [4_1][3_1]+1=[4_1п1][3_1п1], и пишем развернутый результат [3_1п1][4_1п1](это начало этого файла в ROM). Все!
Следующие строчки делаются аналогично.
Схема SD интерфейса слегка изменилась из-за использования ПЗУ на 32КБ. Плюс, для простоты адаптации, 22ю ножку ПЗУ, которая /CS РОМ диска нужно посадить на ноль, отрезав его от РС7.
Все работает :)
https://i.ibb.co/N2mjVJP/SPEC-ROMD-SD.png
PVV, супер
вот что спрашивал ! ) - чтобы на подсказку монитора ввел букву S и вывалился в SDOS
в SDOS буква диска A: - диск карточки
написал B: - диск с rom диском
Что то не работают нормально ROM-файлы, большая часть программ не запускается.
Каталог отображается, но при выборе программы комп виснет
странно и не понятно. Нужно больше информации.
Начнем с начала. Первый ром грузится? адскок, лодеранер, нарды? Адскок я проверил кроме emu еще и в Протеусе, все ок. С подключением РОМдиска все в порядке, ничего не коротнуло(оборвалось)?
Какие программы в каких ромах не работают?
В первом ROM-е запускаются Lode runner и Нарды.
Крестики и Budi при попытке запуска вылетают в Монитор
ROM с Fischer Cat не запускается.
Обрывов не заметил.