Дык это можно было еще давно прикрутить... С Ориона тупо портировать. Ну, ждемс :)
---------- Post added at 13:24 ---------- Previous post was at 13:22 ----------
Кзтате, "автор драйвера" учел, что у нас процессор не Z-80, а ВМ80? ;)
Вид для печати
Тогда чему там 5к? Это всё помещается в 500 байт (тем более у вас более простая низовая схема SPI с точки зрения программиста - не надо никаких сдвигов делать средствами ЦПУ).
ЕМНИП, Hardwareman как раз обещал, что в этих 5к кода будет нормальный драйвер FAT, и что будет сделано так, что грузиться всё будет с ФАТ-а, при этом не надо будет насиловать себя на предмет того, чтобы файлик с ROM лежал самым первым (как это сделано в большинстве прочих упрощенных решений).
Т.е. можно будет взять любую SD-карточку - даже уже хоть с файлами, хоть с партициями, тупо докинуть туда образ ПЗУ и втыркнуть ее в Спец.
Кстати, а исходники загрузчика есть? По ним все это можно уточнить.
Он же драйвер и написал. Исходника нет. Пока разбираюсь с "железом". Хотел на vhdl сам написать, ну что-то не получилось. Повторю его схемный ввод. Сейчас начальная заставка драйвера выходит. Это значит, что описанное адресное пространство мною ранее мне удалось сделать. Так же я в памяти плисины оставил Тест-М на всякий случай.
---------- Post added at 19:45 ---------- Previous post was at 19:40 ----------
Там находится некоторая операционка с отдельным знакогенератором с ускоренным выводом на экран символов, как сделано в Commander'е - был когда-то такой созданный неизвестным автором из Омска и расчитаный на МХ.
Ewgeny7, попробуй вот эту версию с SD интерфейсом. Что-то не очень то работает. На SD карту нужно записать Монитор 4 кБайта (файл BIOS.bin). Может глаз не замыленный найдёт ошибки. Повторяю что в начале при np=1 ПЗУ сидит 0000-7FFF, потом ОЗУ 8000-EFFF, SPI F000-F7FF (вернее первые два адреса всего юзаются), и наконец порты клавиатуры F800-FFFF. Затем после инициализации порта РУС (np=0) ОЗУ становится 0000-EFFF и BIOS.bin грузится с адреса С000. Управление передается в С000.
Не получается. Слишком много "неизвестных". Аффтар может немножко "подрихтовать" свой код под уже используемый на "Орионе" модуль? Судя по схематику, разница там невелика. Зато он стопудово работает и есть исходник драйвера как пример работы.
И сам модуль, и исходник на асме есть в паке Ориона. Исход называется "loader.asm".
Картинко модуля прилагается.
Мне это известно. Пытаюсь сам загрузчик написать. Из упомянутого loader.asm взял исходники. Не могу решить как переписать область из ОЗУ (12 кБ) в теневое ПЗУ, которое должно появится после инита ВВ55 и опрокидывания флага начального пуска из 1 в 0. Придётся дизассемблировать начало монитора на предмет рассмотрения кода инита ВВ55.
---------- Post added at 18:43 ---------- Previous post was at 18:25 ----------
Нашёл! Вот. Тупо установка границы ОЗУ и запись в РУС:
Код:.org 0000h
ModStart: jp LC003
L0003: ld SP, 07FFFh
ei
ld A, 082h
ld (LFF03), A
jp LC444
Лоадер в действии. Правда это не у меня а на реальном железе. :v2_dizzy_coder:На видео заснят процесс загрузки ПСПЗУ с адреса C000. Потом запуск. При записи видео было использовано 2 карты: первая ММС на 16 МБайт с FAT12, а вторая SD 512 МБайт с FAT16. На первой был записано стандартное специалистовское ПСПЗУ а на второй монитор MAGIC_WL для МХа. Обратите внимание, что на второй карте был MBR, который был корректно распознан.;)
Проблемы в проекте у меня такие. Главная - я юзаю Web версию Квартуса, а она постоянно глючит, сейчас качаю по ссылке данной Ewgeny7. Еще вроде самый начальный процесс у меня проходит, а именно грузится лоадер, выдает ошибку если карта не вставлена. Дальше хуже я немогу разделить время перехода от ПЗУ к теневому ПЗУ. Т.е. в начале (0000-7FFF) с ПЗУ грузится лоадер и он должен ложить данные в теневое ПЗУ + ОЗУ (0000-EFFF) с адреса С000. С адреса С000 должен записываться стандартный набор ПЗУ (Монитор, Загрузчик и др.) с файла на SD карте. :o
fifan, схема самого модуля, на основе которой лепили загрузчик - ткни носом пожалуйста.
Команда перехода - примерно так:
if (a_buff(15 downto 0)=X"C000" and rd_n='0') then .....
Т.е. попытка процессора прочитать содержимое кода команды из С000. В этот момент можно перещелкнуть триггер загрузки.
---------- Post added at 17:00 ---------- Previous post was at 16:58 ----------
Да, самое главное. Исходник лоадера? Сложно искать черную кошку в темной комнате... А с исходником можно хотябы ловушек понаставить и пошагово отладить модуль.
Схема - в схемном вводе, в проекте. Бинарник тоже там же в одном файле (нет у меня исходника). На SD карту нужно записать какой-нибудь монитор с набором ПЗУ до 12 кБайт с именем BIOS.BIN. Правильно грузится ли в память файл можно судить по квадратам возникающим в правой части экрана, т.к. используется несколько ячеек в видео ОЗУ. Ещё раз привожу маппер памяти:
1. ПЗУ 0000-7FFF (только чтение)
ОЗУ 8000- EFFF (чтение/запись)
SPI F000-F7FF, вернее юзаются две первые ячейки
ВВ55 F800-FFFF
np=1
2. ПЗУ 0000 - EFFF (чтение/запись) с С000 - загружаемый файл образа ПЗУ
SPI F000-F7FF, вернее юзаются две первые ячейки
ВВ55 F800-FFFF
np=1
3. ОЗУ 0000-EFFF (чтение/запись)
SPI F000-F7FF, вернее юзаются две первые ячейки
ВВ55 F800-FFFF
np=0
Действия:
1. Лоадер грузится с ПЗУ, инициализация SD карты, поиск образа ПЗУ
2. Загрузка образа ПЗУ с SD карты в ОЗУ
3. Запуск монитора с адреса С000, работа ПК вштатном режиме