|
Загрузка системы и работа с ROMDISK.
В это время на глаза попалась ссыка на "проект" ROMOS Его автор любезно предоставляет полный комплект - свои наработки, средства разработки и некоторый объем систематизированной информации по теме. Попытка повторить "в железе" разработку автора увенчалась частичным успехом и было принято решение на ее базе создать свое устройство с большим объемом памяти. Из-за необходимости ориентироваться на имеющиеся микросхемы были проведены некоторые изыскания. В результате выяснилось, что при использовании DOS3.3 для хранения загрузочных файлов и рабочих программ WEB-сервера достаточно 240КБ, в которые дополнительно вошел файл-менеджер SPARROW. Это позволило ориентироваться на имеющуюся 29F020 объемом 256КБ. Для отладки - загрузочные файлы DOS3.3 и SPARROW - хватало 29F010, также имеющихся у меня в некотором количестве. Идея схемы включения ПЗУ большого объема в адресное пространство х86 очевидна и не нова - организация страничного доступа. Сначала родилась схема, содержавшая две микросхемы ПЗУ - для BOOTROM и образа дискеты, но в дальнейшем она несколько видоизменилась, и все удалось вместить в одну микросхему памяти. Для упрощения монтажа и уменьшения количества микросхем в качестве дешифратора использована CPLD 16V8. Поскольку предполагалось изготовить устройство в единичном экземпляре на макетной плате - все использованные микросхемы в корпусе DIP. Собственно, вот что получилось в итоге: В компьютере после загрузки с этого устройство появляется "диск" A: - как оказалось, DOS3.3, в отличие от FreeDOS, не умеет загружаться с B:.Запись на этот "диск" не реализована, хотя потенциально возможна - использовано FLASHROM. Программа поддерживает до 1,44МБ - объем стандартной 3"5 дискеты, "железо" - больше, если, конечно, 29F020 заменить на микросхему соответствующего большего объема. Но, насколько я понял, уже 29F040 в DIP не производят. В ПЗУ старшие 16КБ отведены под BOOTROM, остальные - под посекторный образ дискеты. В БИОСе материнской платы дисковод A: должен быть выбран как 3"5 1.44, отключена его проверка при включении и, желательно, остановка при ошибках (актуально на некоторых материнских платах). Устройство проверялось на 286, 486 и P1-166MMX компьютерах, и я не вижу причин, почему оно не будет работать на любом PC-совместимом с ISA слотом. Если кто-то захочет повторить конструкцию и двигаться дальше - далее вся необходимая информация: схема На схеме не указаны блокировочные кондерсаторы - на фото платы они есть "исходник" и загружаемый код для PALCE16V8 А также для симуляции и еще чего-то. Компиляция и написание - в программе WinCupl, найденной на просторах Интернета. Если вам проще распаять несколько микросхем мелкой логики - можете "переложить" дешифратор на них. исходный текст программы с набором средств разработки Архив содержит образ моего загрузочного диска с WEB-сервером. Сразу замечу, что оптимизацией написанного кода я не занимался, и к профессиональным программистам себя не отношу. Программа для посекторного копирования дискет в файл в комплект не включена у каждого она своя, любимая :-) Разбирайтесь, двигайтесь дальше... Будут вопросы - попробую ответить...
|