User Tag List

Страница 91 из 120 ПерваяПервая ... 878889909192939495 ... ПоследняяПоследняя
Показано с 901 по 910 из 1199

Тема: Орион-2010. Hard & Soft

  1. #901

    Регистрация
    14.08.2006
    Адрес
    Владимир
    Сообщений
    4,581
    Спасибо Благодарностей отдано 
    64
    Спасибо Благодарностей получено 
    112
    Поблагодарили
    97 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от pvlad Посмотреть сообщение
    Мне кажется, приделывание временных решений к новому изделию - это и есть "колхозить". Не в обиду!

    Как мне представляется решение этой проблемы?
    Во первых, в ПЛИС незачем держать два Монитора - достаточно одного М3. Он грузится в F800 и имеет контрольную сумму. Если при последующих Ресетах контрольная сумма подтверждается, то Монитор повторно не загружается из ПЛИС, а сохраняется неизменным содержимое в F800-FFFF. Это позволит вместо М3 загрузить свой Монитор со своей контрольной суммой. При этом он не будет перезаписываться М3 из ПЛИС при нажатии кнопки Reset. Чтобы восстановить М3, необходимо будет временно выключить питание-получить сбой по контрольной сумме.
    Так решим проблему приверженности к "своей" версии Монитора. Да и записанный в ПЛИС Монитор не должен быть панацеей на все случаи, а лишь стартовой ступенькой.

    На месте освободившихся 2К в ПЛИСС, необходимо сделать универсальный загрузчик. Такую мысль уже высказывал svofski в 212 топике.
    Алгоритм этого загрузчика следующий: после RESET (с Мониторами уже разобрались!) загрузчик проверяет наличие SD-карты. Если она есть - грузится ВООТ (не важно чей он - СРМ или еще что-то) и передается ему управление. Можно в буте иметь адрес его загрузки, и не обязательно грохать его в 0000Н. Мы же зачем-то делали "дырки" в памяти между портами?
    Если SD-карты нет, то проверяется наличия РОМ-диска. Критерий следующий: если первый байт "С3" - значит в ПЗУ ОРДОС (грузится по известным правилам), если "FF" - ПЗУ пустое - переход на выполнение далее. Если же любой другой байт, то он расценивается как наличие в ПЗУ новых параметров загрузки, где первые два байта - адрес загрузки, следующие два байта - количество загружаемых байт, и еще два байта - адрес передачи управления. Сама информация в ПЗУ находится с адреса 10Н.
    Если в первом байте ПЗУ "FF" (нет ПЗУ-флешки, или она не запрограммирована), то управление передается загрузчику по RS-232. Он в цикле опрашивает готовность RS-232 и статус клавиатуры. Висит до бесконечности, пока не получит байт по RS-232, или не будет нажата клавиша клавиатуры. Загрузка начинается с адреса 0000Н и заканчивается по команде "конец передачи" (?), при этом контролируется переполнение ОЗУ до адреса конца экрана. По окончанию загрузки, управление автоматически передается по адресу 0000Н.
    Если же была нажата клавиша клавиатуры, как во время ожидания приема так и в процессе приема (а также при отпускании RESET!), то загрузчик переходит в командный режим, где можно указать любой свой адрес загрузки, а затем передать управление на адрес по своему желанию. Здесь можно иметь еще три дополнительные команды: просмотр дампа памяти, модификация ячейки памяти и программатор флеша.
    Вот при таком алгоритме загрузки можно "угодить" всем. ERROR404 будет вставлять свою SD-шку и грузить СРМ, а не вставив ее, ортодоксальные ордошники получат свою ОРДОС или еще что-то по своему усмотрению. А если и флешка пустая (или не нужна!!!) - есть прямая загрузка по RS-232. Хочешь - выполняй загруженную программу, а хочешь - запиши во флешку - программатор под рукой.
    Ну, вот и вся постановка задачи - осталось только написать (2-3 вечера!). Это тянет где-то на полкило, так что в ПЛИС еще останется место для будущих задумок. И что главное, Сергей - нет никакой графики, как ты и хотел!
    Не то чтобы я против графики. Я против того чтобы прикручивать "графику ради графики" (вводить всего 2 параметра в графике - это этот самый случай), да еще с рисованием напрямую по экрану, как это было в старых орионовских программах. Сделано это было, как я понимаю, главным образом оттого, что во-первых, в КОИ-7 драйвере экрана Монитора-2 по понятным причинам не было псевдографики, а во-вторых даже с пользовательским знакогенератором Монитор-2 не умел рисовать знакоместа без пробельных строчек размером в 2 точки (матрица символа была 6х8). Вместо исправления Монитора (в питерском Мониторе-3 исправили матрицу символа до 6х10), в каждой программе принялись рисовать прямо по экрану только для того, чтобы нарисовать рамочки окна (для которых надо то, казалось бы, полдюжины псевдографических символов да простейшую подпрограмму). Так это и прижилось.

    Про универсальный загрузчик надо подумать, но не могу не заметить, что с таким загрузчиком для собственно Монитора в 2к тупо не остается места (нечем даже текст будет вывести [не забываем, что знакогенератор тоже надо хранить] и клавиатуру опросить). Полкило - это только один загрузчик с SD. В-общем, надо очень хорошо подумать.

    Также, тогда сначала нужно произвести доработку по доступу к ОЗУ под ПЗУ. В текущем варианте, ЕМНИП, при отключении ПЗУ (этот режим был рассчитан в-основном на адаптацию игр ZX, для которых эта область нужна как ОЗУ) нет доступа к портам клавиатуры, РомДиска, SD, RS232 (ewgeny7, напомни пожалуйста, порты по OUT, как я понимаю, пока еще не реализованы?). Плюс область 0F000h...0FFFFh перестает работать как некоммутируемая - не заработает ни одна орионовская программа, которая для доступа к страницам ОЗУ, отличных от текущей страницы, идет мимо подпрограмм Монитора.

    А таких программ было, т.к. соответствующая подпрограмма Монитора-2 всегда возвращала управление в страницу 0 вне зависимости от того из каких страниц была вызвана, и как следствие, была удобна только для программ работавших в 0-странице. Навороченые программы (да хоть та же CP/M, работающая либо в 1, либо во 2 странице), не заработают.

    В-общем, усилия проектировщика сначала нужно приложить в другом месте. Тем более, что они как раз и могут быть приложены за вечер-два, в отличии от программистики.
    Последний раз редактировалось Error404; 03.06.2010 в 21:49.
    Лучше сделать и жалеть, чем не сделать и жалеть.

    Некоторые из моих поделок тут: https://github.com/serge-404

  2. #901
    С любовью к вам, Yandex.Direct
    Размещение рекламы на форуме способствует его дальнейшему развитию

  3. #902

    Регистрация
    03.07.2005
    Адрес
    Санкт-Петербург
    Сообщений
    10,168
    Спасибо Благодарностей отдано 
    147
    Спасибо Благодарностей получено 
    84
    Поблагодарили
    55 сообщений
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Error404 Посмотреть сообщение
    как я понимаю, пока еще не реализованы?
    Истину глаголишь. Я делал Орион, а не ПЦ.
    ScorpEvo ZS 1024 turbo+ CF-HDD/FDD/Mouse/SMUC 3.1/ProfROMse/NeoGS/ZC
    Speccy-2007 128/AY/TR-DOS

    Сайт с документацией к "Scorpion ZS 256"

  4. #903

    Регистрация
    18.09.2009
    Адрес
    г.Ногинск, МО
    Сообщений
    246
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    2
    Поблагодарили
    2 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Error404 Посмотреть сообщение
    Про универсальный загрузчик надо подумать, но не могу не заметить, что с таким загрузчиком для собственно Монитора в 2к тупо не остается места (нечем даже текст будет вывести [не забываем, что знакогенератор тоже надо хранить] и клавиатуру опросить). Полкило - это только один загрузчик с SD. В-общем, надо очень хорошо подумать.
    Что-то не въезжаю! Давайте разбираться. Евгений, в одном из постов, сказал, что в ПЛИС (понятно, в конфиг.флеш) есть место для "мониторов" в 4Кбайта. 2Кб. мы отдаем "стандартному" Монитору, который грузится в область F8 самым первым. Далее, за ним грузится универсальный загрузчик в какую-то свою область памяти. Можно грузить "кусочками" в дырки между портами. Значит, в момент начала работы загрузчика, уже доступен Монитор со своими ресурсами, в том числе и знакогенератором. Значит в самом загрузчике не нужно иметь то, о чем Вы говорите (см.цитату).
    Тогда мне хочется спросить (я сам ассемблерист!), Вы считаете, что указанный универсальный загрузчик не поместится в оставшиеся 2Кб, даже если, допустим, Ваш загрузчик SD будет занимать 1Кб? Или Вы его будете писать на СИ?
    И последнее. Все блоки этого загрузчика уже Вами отработаны на эмуляторе, если судить по Вашим заявлениям на форуме. Осталось собрать все в кучку и обкатать. С Вашим профессионализмом - это, действительно, 2-3 дня между командировками, и десяток бутылок пива. Не прибедняйтесь. Если хотите, я лично буду Вам носить пиво, и буду счастлив от того, что обслуживал такого Мастера!
    Если ты чего-то не знаешь, то это не значит, что этого не может быть.

  5. #904

    Регистрация
    14.08.2006
    Адрес
    Владимир
    Сообщений
    4,581
    Спасибо Благодарностей отдано 
    64
    Спасибо Благодарностей получено 
    112
    Поблагодарили
    97 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от pvlad Посмотреть сообщение
    Что-то не въезжаю! Давайте разбираться. Евгений, в одном из постов, сказал, что в ПЛИС (понятно, в конфиг.флеш) есть место для "мониторов" в 4Кбайта. 2Кб. мы отдаем "стандартному" Монитору, который грузится в область F8 самым первым. Далее, за ним грузится универсальный загрузчик в какую-то свою область памяти. Можно грузить "кусочками" в дырки между портами. Значит, в момент начала работы загрузчика, уже доступен Монитор со своими ресурсами, в том числе и знакогенератором. Значит в самом загрузчике не нужно иметь то, о чем Вы говорите (см.цитату).
    Тогда мне хочется спросить (я сам ассемблерист!), Вы считаете, что указанный универсальный загрузчик не поместится в оставшиеся 2Кб, даже если, допустим, Ваш загрузчик SD будет занимать 1Кб? Или Вы его будете писать на СИ?
    Загрузчики то поместятся в оставшиеся 2к. Проблема в другом: на настоящий момент нет никакого механизма чтобы их оттуда программно достать. Поясняю. У нас сейчас как бы две 2к ПЗУ "бутербродом", /CE которых переключается тумблером (в нашем случае с клавиатуры, но сути это не меняет). Программный код такое переключение выполнить не в состоянии.

    Поэтому и пихаем всё в единственные одновременнодоступные 2к ПЗУ F800. Если бы такие механизмы были, то и дырки между портами не были бы нужны - какая разница куда положить загрузчик для работы, он по любому адресу отработает (работают же, к примеру, ордосовские загрузчики из 0-страницы). Дырки между портами нужны для другого - для буферов ОС в некоммутируемой области - их всегда не хватает.

    Цитата Сообщение от pvlad Посмотреть сообщение
    И последнее. Все блоки этого загрузчика уже Вами отработаны на эмуляторе, если судить по Вашим заявлениям на форуме. Осталось собрать все в кучку и обкатать. С Вашим профессионализмом - это, действительно, 2-3 дня между командировками, и десяток бутылок пива. Не прибедняйтесь. Если хотите, я лично буду Вам носить пиво, и буду счастлив от того, что обслуживал такого Мастера!
    Я не делал таких заявлений. Я говорил только о том, что всё то, что разработаю в процессе работы над CP/M, потом кто угодно сможет применить где угодно, т.к. исходники будут в общем доступе. И пиво носить не надо, достаточно не трепать нервы подобными шуточками.

    В-общем, по-любому возвращаемся к тому, с чего я начал в предыдущем посте - к доработке текущей аппаратной конфигурации до какой-то более продвинутой. А там уже будем посмотреть.
    Или оптимизация желаний. Надо ли заносить всё в общее ПЗУ? Загрузку Ордос я добавлю - оно много места не займет. Получится так: загрузка с RS-232 + загрузка Ordos поместится в первое 2к ПЗУ, загрузка c SD (по спецкнопке) - второе 2к ПЗУ. Тогда останемся в текущей конфигурации.
    Последний раз редактировалось Error404; 04.06.2010 в 15:21.
    Лучше сделать и жалеть, чем не сделать и жалеть.

    Некоторые из моих поделок тут: https://github.com/serge-404

  6. #905

    Регистрация
    18.09.2009
    Адрес
    г.Ногинск, МО
    Сообщений
    246
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    2
    Поблагодарили
    2 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Error404 Посмотреть сообщение

    ...тогда сначала нужно произвести доработку по доступу к ОЗУ под ПЗУ. В текущем варианте, ЕМНИП, при отключении ПЗУ (этот режим был рассчитан в-основном на адаптацию игр ZX, для которых эта область нужна как ОЗУ) нет доступа к портам клавиатуры, РомДиска, SD, RS232 (ewgeny7, напомни пожалуйста, порты по OUT, как я понимаю, пока еще не реализованы?). Плюс область 0F000h...0FFFFh перестает работать как не коммутируемая - не заработает ни одна орионовская программа, которая для доступа к страницам ОЗУ, отличных от текущей страницы, идет мимо подпрограмм Монитора.
    Я об этом еще когда говорил? http://zx.pk.ru/showpost.php?p=277035&postcount=878
    Error404 поддержал! http://zx.pk.ru/showpost.php?p=277168&postcount=881
    А что Евгений? http://zx.pk.ru/showpost.php?p=277093&postcount=879. Чудесно!
    И что оказывается в итоге? Смотри цитату!
    Если ты чего-то не знаешь, то это не значит, что этого не может быть.

  7. #906

    Регистрация
    14.08.2006
    Адрес
    Владимир
    Сообщений
    4,581
    Спасибо Благодарностей отдано 
    64
    Спасибо Благодарностей получено 
    112
    Поблагодарили
    97 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию От нечего делать

    Цитата Сообщение от Error404 Посмотреть сообщение
    Надо ли заносить всё в общее ПЗУ? Загрузку Ордос я добавлю - оно много места не займет. Получится так: загрузка с RS-232 + загрузка Ordos поместится в первое 2к ПЗУ, загрузка c SD (по спецкнопке) - второе 2к ПЗУ. Тогда останемся в текущей конфигурации.
    Сделал нечто похожее на "Т.З." от pvlad для текущей конфигурации за минусом загрузчика с SD (он сидит в Мониторе во второй половинке ПЗУ, которая включается аппаратно по спецкнопке).

    При включении питания с ПЗУ из вложения имеем пошагово:
    1. Проверяется нажатие любой кнопки, если нажато - переход в командный режим. В командном режиме действуют диррективы:
    Код:
    R<address> - загрузить по XMODEM файл на указанный адрес (от 0000 до EFFF)
    G<address> - передать уравление по указанному адресу 
    директивы без параметров по умолчанию работают с адресом 0
    Прочие директивы реализовывать считаю смысла нет, все они есть в стародавнем ленинградском Мониторе-Ext (см. во вложении, там же описание от Чистякова, датировано 1991 годом ). Кому надо - первым подгрузит Монитор-Ext по RS-232 и получит за счет "расширителя" множество "встроенных" директив (и даже лишку ).
    .
    2. Если кнопка не была нажата, то в ROM-диске проверяется наличие ORDOS: если первый байт "0С3h" - значит в ПЗУ ОРДОС V4.x (в ORDOS 2.x, кстати, первый байт - 0CDh, т.е. CALL): запускаем ORDOS. Если первый байт "FF" - ПЗУ пустое: переход на RS232-BOOT.
    Если в ПЗУ любой другой байт (не 0С3h и не 0FFh), то он расценивается как наличие в ПЗУ новых параметров загрузки, где:
    Код:
     {0..1} первые два байта - адрес передачи управления после загрузки из ROM
     {2..3} следующие два байта - адрес загрузки в ОЗУ
     {4..5} следующие еще два байта - количество загружаемых байт
     {16..XXXX} собственно исполняемый/загружаемый код (всегда с офсетом 10h от начала ROM-диска)
    Тут имею вопрос, а что будет если ПЗУ не вставлено и со входов читается мусор?
    .
    3. Если первый байт ПЗУ "FF" (ПЗУ пустое), то запускается загрузчик по RS-232, который ожидает начало передачи (тут ожидание можно прервать по любой символьной кнопке), затем загружает файл по XMODEM на 0B800 и выше (но не более чем до 0EFFFh) и передает управление на 0BFFD.

    Думаю, набрать в командном режиме R затем G (загрузка на 0 и старт на 0) проще, чем ковырять "RB800", "GBFFD" для Монитора-EXT и ORDOS. Том более, что Монитор-EXT и ORDOS уже есть, а ничего прочего под загрузку с RS-232 пока что нет. И, думаю, нет проблемы нечто вновь делаемое странслировать для работы с B800 (раз уж так оно на Орионе повелось и лень переходить в командный режим чтобы нажать 2 кнопки).

    О неприятном: несколько подрезался знакогенератор (в части русских букв). Что лично с моей колокольни не видится проблемой, ибо KOI7 все равно малопригоден для чего либо кроме начальной загрузки. Также, можно завести файлик в ОРДОС (в ROM-ДИСКе) с полным знакогенератором. Займет 768 байт, подгружать по необходимости - очень просто, одно нажатие в оболочке Ордос VC$.
    Вложения Вложения
    Последний раз редактировалось Error404; 14.06.2010 в 18:41.
    Лучше сделать и жалеть, чем не сделать и жалеть.

    Некоторые из моих поделок тут: https://github.com/serge-404

  8. #907

    Регистрация
    03.07.2005
    Адрес
    Санкт-Петербург
    Сообщений
    10,168
    Спасибо Благодарностей отдано 
    147
    Спасибо Благодарностей получено 
    84
    Поблагодарили
    55 сообщений
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Error404 Посмотреть сообщение
    Тут имею вопрос, а что будет если ПЗУ не вставлено и со входов читается мусор?
    Будет читаться FF по всему дапазону ПЗУ.

    Сергей, ты подключил Орион хоть куда-нибудь???
    ScorpEvo ZS 1024 turbo+ CF-HDD/FDD/Mouse/SMUC 3.1/ProfROMse/NeoGS/ZC
    Speccy-2007 128/AY/TR-DOS

    Сайт с документацией к "Scorpion ZS 256"

  9. #908

    Регистрация
    18.09.2009
    Адрес
    г.Ногинск, МО
    Сообщений
    246
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    2
    Поблагодарили
    2 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Error404 Посмотреть сообщение
    Сделал нечто похожее на "Т.З." от pvlad
    Спасибо Сергей, прекрасно! НО!
    .....
    Цитата Сообщение от Error404 Посмотреть сообщение
    3. Если первый байт ПЗУ "FF" (ПЗУ пустое), то запускается загрузчик по RS-232, который ожидает начало передачи (тут ожидание можно прервать по любой символьной кнопке), затем загружает файл по XMODEM на 0B800 и выше (но не более чем до 0EFFFh) и передает управление на 0BFFD.

    Думаю, набрать в командном режиме R затем G (загрузка на 0 и старт на 0) проще, чем ковырять "RB800", "GBFFD" для Монитора-EXT и ORDOS. Том более, что Монитор-EXT и ORDOS уже есть, а ничего прочего под загрузку с RS-232 пока что нет.
    В целом у меня нет возражений по подходу: по умолчанию загрузка для "ордошников", а через "спец.кнопку" для сипиэмщиков. Пусть будет так.
    Что касается загрузки с SD, то я не буду вмешиваться ни в структуру, ни в алгоритм. Это всецело твоя вотчина! А вот, что касается ORDOS (я не зря выделил п.3 в качестве цитаты!), то здесь мне хотелось бы, чтобы было сделано так, как я прошу, а не "нечто похожее".
    Я объяснюсь!
    Мне не понятно пристрастие по загрузке к адресу 0B800, тем более по умолчанию. На кой черт мне грузить Монитор-EXT и ORDOS по XMODEMу. Если я создам РОМ-диск, то и буду оттуда их грузить до посинения. А если уж приспичит один-два раза (к примеру, при отладке), то "наковыряю "RB800", "GBFFD" - рука не отсохнет. Тем более есть (для меня!) "М256", да и кому нужна, вообще, ORDOS без РОМ-диска.
    А теперь представим такие варианты:
    1. Монитор в F800 уже сидит. Мы ведем разработку (не связанную с ORDOS) кроссредствами на ПС. Проект имеет большой размер, и зачем, спрашивается, мне грузить его в 0B800 (а затем перекачивать?), когда я могу грузить его в 0000 (при этом доступна линейно вся память+экранное ОЗУ, если мало!) и тут же запускать на выполнение? Мне что необходимо десятки раз за вечер "ковырять" команды "R" и "G", обкатывая прект? Пусть даже и без адресов!
    2. То же самое и при отладке (и создании) через РОМ-диск. В начале загрузчик (программатор) во флеш РОМ-диска, за ним массив данных (программа, оверлеи, картинки, аудио-файлы и т.д.). Все влетает в память (на одном дыхании до 60 кило!) и автоматом записывается во флеш РОМ-диска! Зачем, при этом, ковыряться с адресами и командами?

    Когда я настаивал на введение USART для Ориона-2010, то преследовал именно эти цели - упростить процесс разработки и загрузки кода с помощью кроссредств, а не для загрузки Монитор-EXT и ORDOS по XMODEMу. Это очень мелкие частности.
    Если ты чего-то не знаешь, то это не значит, что этого не может быть.

  10. #909

    Регистрация
    14.08.2006
    Адрес
    Владимир
    Сообщений
    4,581
    Спасибо Благодарностей отдано 
    64
    Спасибо Благодарностей получено 
    112
    Поблагодарили
    97 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от pvlad Посмотреть сообщение
    Мне не понятно пристрастие по загрузке к адресу 0B800, тем более по умолчанию. На кой черт мне грузить Монитор-EXT и ORDOS по XMODEMу. Если я создам РОМ-диск, то и буду оттуда их грузить до посинения. А если уж приспичит один-два раза (к примеру, при отладке), то "наковыряю "RB800", "GBFFD" - рука не отсохнет.
    Как скажете, можно сделать и загрузку на адрес 0, доделаю.
    Просто казалось, что 64к (страницу ROM) для прошивки все равно целиком не загрузить в ОЗУ, т.е. сначала должен грузиться программатор, прошивающий ROM-диск "частями" и подкачивающий эти части по мере надобности. Такому программатору все равно где находиться и он вряд ли будет более 2к. Вот и оставил по умолчанию адрес загрузки на B800 чтобы еще и старое ПО работало.
    Ну и несколько байт съэкономил в коде.

    ---------- Post added at 08:52 ---------- Previous post was at 08:49 ----------

    Цитата Сообщение от ewgeny7 Посмотреть сообщение
    Сергей, ты подключил Орион хоть куда-нибудь???
    Пока некуда.
    Думаю варианты (попробую на работе купить БУ предварительно опробовав, но это надо появиться на работе - я пока из командировок не вылезаю) .
    У меня только 1 моник дома - Iiyama та что не понимает 51Гц, TV нет вообще (в т.ч. и с VGA).
    Надо думать в сторону увеличения кадровой хоть на сколько-то, т.к. проблема будет у народа воспроизводиться как и у меня. 100%.
    Лучше сделать и жалеть, чем не сделать и жалеть.

    Некоторые из моих поделок тут: https://github.com/serge-404

  11. #910

    Регистрация
    14.08.2006
    Адрес
    Владимир
    Сообщений
    4,581
    Спасибо Благодарностей отдано 
    64
    Спасибо Благодарностей получено 
    112
    Поблагодарили
    97 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию Итерация намбер 3

    Цитата Сообщение от Error404 Посмотреть сообщение
    Как скажете, можно сделать и загрузку на адрес 0, доделаю.
    Поправил. Измененое выделено коричневым.

    При включении питания с ПЗУ из вложения (М37ZRKR.BIN) имеем пошагово:

    1. Проверяется нажатие любой кнопки, если нажато - переход в командный режим.
    В командном режиме действуют диррективы:
    Код:
    R<address> - загрузить по XMODEM файл на указанный адрес (от 0000 до EFFF)
    G<address> - передать уравление по указанному адресу 
    директивы без параметров по умолчанию работают с адресом 0
    Прочие директивы реализованы в стародавнем ленинградском Мониторе-Ext (см. во вложении, там же описание от В.Чистякова, раритет, датировано 1991 годом ). Кому нужен расширенный режим директив Монитора, тот первым подгрузит Монитор-Ext по RS-232 и получит за счет "расширителя" множество "встроенных" директив (и даже лишку ).
    .
    2. Если кнопка не была нажата, то в ROM-диске проверяется наличие ORDOS или ROM-программы:
    2.1. Если первый байт "0С3h" - значит в ПЗУ ОРДОС V4.x : запускаем ORDOS.
    2.2. Если первый байт "FF" - ПЗУ пустое: переход на RS232-BOOT.
    2.3. Если в ПЗУ любой другой байт (не 0С3h и не 0FFh), то он расценивается как наличие в ПЗУ ROM-диска новых параметров загрузки (8-байтового описателя ROM-программы), где:
    Код:
     {0..1} 2 байта - адрес передачи управления после загрузки ROM-программы в ОЗУ
     {2..3} 2 байта - адрес начала ROM-программы в ПЗУ (параметр "откуда копировать")
     {4..5} 2 байта - адрес загрузки в ОЗУ (параметр "куда копировать")
     {6..7} 2 байта - количество загружаемых байт (параметр "сколько копировать")
     {с адреса (2..3) и далее} собственно исполняемый/загружаемый код
    .
    3. Если первый байт ПЗУ "FF" (ПЗУ пустое, п.2.2), то запускается загрузчик по RS-232 (протокол XMODEM), который ожидает начало передачи (тут ожидание можно прервать по любой символьной кнопке и выйти в командный режим Монитора - п.1), затем загружает файл по XMODEM на адрес 0 и выше (но не более чем до 0EFFFh) и передает управление на 0. Загрузка по нажатию кнопки не прерывается.
    .
    Если необходимо прогрузить файл или передать управление по отличающимся от 0 адресам, то нужно выйти в командный режим (п.1) и выполнить команды R и G Монитора.
    Пример: для загрузки Mонитора-расширителя (EXT-13.BIN во вложении) нужно выполнить команды "RB800", "GBFFD". Они выполнят загрузку файла на адрес 0B800h и передачу управления на адрес 0BFFDh.
    .
    Скорость порта в Мониторе всегда 9600 бод. Если нужно отличное от этого значение, то надо перекомпилировать Монитор, предварительно соответственно исправив константу UART_SPEED.
    .
    В Мониторе есть доп. точка входа: 0F834h - загрузка файла по XMODEM, входной параметр - начальный адрес загрузки в регистре HL. Подпрограмма не перепрограммирует порт управления RS-232, т.е. перед ее вызовом можно установить любую скорость порта.
    Примечание (может быть неудобством): подпрограмма рисует "прогрессбар" символами #.
    .
    Монитору присвоен индекс (версия) V3.7 (содержится в ячейках 0F842h..0F845h). Это нужно проверять перед вызовом подпрограммы 0F834h для того, чтобы отличать версии, содержащие по адресу 0F834h другие подпрограммы (например, чтение сектора с IDE/SD в мониторах V3.5, V3.6)
    .
    О неприятном: при добавлении функционала несколько подрезался знакогенератор (в части русских букв). Что не видится проблемой, ибо KOI7 все равно малопригоден для чего либо кроме начальной загрузки. Также, можно иметь в ОРДОС (например, из ROM-ДИСКа) файлик с полным знакогенератором. Он займет в ROM-ДИСКе всего 784 байт (см. во вложении koi7-fnt.ord), подгружать его по необходимости очень просто - одно нажатие Enter в оболочке Ордос VC$ или через механизм EXT$.

    PS. Гранд респект caro за идею использования и куски исходных текстов XMODEM.

    PPS. Прикольно, загружал в эмуляторе по старту Монитора игрушки от ZX аж по 60к размером, которые с 0 стартуют. Работают...
    Последний раз редактировалось Error404; 08.01.2015 в 14:46.
    Лучше сделать и жалеть, чем не сделать и жалеть.

    Некоторые из моих поделок тут: https://github.com/serge-404

Страница 91 из 120 ПерваяПервая ... 878889909192939495 ... ПоследняяПоследняя

Информация о теме

Пользователи, просматривающие эту тему

Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)

Похожие темы

  1. Ответов: 22
    Последнее: 06.10.2008, 14:17
  2. MAGIC-SOFT
    от White_Hunter в разделе Люди
    Ответов: 1
    Последнее: 22.08.2008, 08:56
  3. MAGIC-SOFT
    от White_Hunter в разделе Люди
    Ответов: 2
    Последнее: 21.08.2008, 13:31
  4. soft dt
    от roxx в разделе Софт
    Ответов: 4
    Последнее: 30.01.2008, 18:41

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •