Важная информация

User Tag List

Страница 10 из 16 ПерваяПервая ... 67891011121314 ... ПоследняяПоследняя
Показано с 91 по 100 из 154

Тема: Специалист_МХ2: новые программы для нового Специалиста.

  1. #91
    Guru Аватар для HardWareMan
    Регистрация
    26.02.2011
    Адрес
    г. Павлодар, Казахстан
    Сообщений
    4,405
    Спасибо Благодарностей отдано 
    320
    Спасибо Благодарностей получено 
    598
    Поблагодарили
    444 сообщений
    Mentioned
    10 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Про окружение для STD программ не забыл? Там надо загружать монитор и инициализировать кучу его переменных.

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

  3. #92
    Guru
    Регистрация
    24.01.2008
    Адрес
    Уфа
    Сообщений
    3,847
    Спасибо Благодарностей отдано 
    84
    Спасибо Благодарностей получено 
    229
    Поблагодарили
    167 сообщений
    Mentioned
    9 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от HardWareMan Посмотреть сообщение
    Про окружение для STD программ не забыл? Там надо загружать монитор и инициализировать кучу его переменных.

  4. #93
    Moderator Аватар для fifan
    Регистрация
    30.05.2007
    Адрес
    г. Лянтор, Сургутского р-на, ХМАО
    Сообщений
    4,165
    Спасибо Благодарностей отдано 
    106
    Спасибо Благодарностей получено 
    125
    Поблагодарили
    71 сообщений
    Mentioned
    4 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Вау! Как всё сложно-то.

  5. #94
    Guru Аватар для HardWareMan
    Регистрация
    26.02.2011
    Адрес
    г. Павлодар, Казахстан
    Сообщений
    4,405
    Спасибо Благодарностей отдано 
    320
    Спасибо Благодарностей получено 
    598
    Поблагодарили
    444 сообщений
    Mentioned
    10 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от fifan Посмотреть сообщение
    Вау! Как всё сложно-то.
    Да ничего подобного. Т.к. монитор у нас грузится в ОЗУ (с адреса C000h), то мы грузим стандартный монитор, правим переход на программу, грузим программу и только после этого прыгаем не на программу а на монитор, точнее на ПСПЗУ по адресу С000h. Сначала отработает загрузчик, затем он прыгнет в монитор, а после инициализации монитора прыгнет на нашу программку автоматически. Даже все проще, технически, нужно инициализировать только ПСПЗУ, а монитор должен только присутствовать. Объясняю почему: ПСПЗУ является неким БИОС, поэтому его надо инициализировать полностью, чтобы он проинитил оборудование, расставил стек, вектора ввода и вывод символа и всякие свои константы. Затем можно просто прыгнуть в целевую программу. А вот они то уже 100% зависят от ПСПЗУ, и большинство из них - от монитора. В общем, чуть попозже, я подготовлю ПСПЗУ и монитор специально для запуска STD окружения.

    Я думал такие очевидные вещи вы учли. Ведь даже в чистом МХ нужно грузить монитор Волкова, чтобы запускать старые программки. А сам переход между режимами, конечно, не сложный...

  6. #95
    Guru Аватар для HardWareMan
    Регистрация
    26.02.2011
    Адрес
    г. Павлодар, Казахстан
    Сообщений
    4,405
    Спасибо Благодарностей отдано 
    320
    Спасибо Благодарностей получено 
    598
    Поблагодарили
    444 сообщений
    Mentioned
    10 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Нет, в STD режиме он так же копируется в ОЗУ, но после перехода в МХ его сам RAMFOS уничтожает. В общем вот тебе бинарник (во вложении). Порядок запуска таков:
    1. Ты грузишь программу "по месту". Естественно, она должна быть рассчитана под STD и учитывать распределение памяти STD.
    2. Ты грузишь этот монитор.
    3. Ты заносишь адрес старта в ячейку C846h (через SHLD, младший байт в C846h, старший в C847h).
    4. Ты делаешь действия по переключению, которые ты тут уже описывал (настройка палитры и смена режима).
    5. Ты прыгаешь на С000h.

    Отличия данного монитора от стандартного такие:
    Код:
    C000 00             NOP
    C001 00             NOP
    C002 00             NOP
    ***
    C450 C3 00 C8  JMP  C800H // Этот джамп перенаправляет на монитор
    ***
    C845 C3 XX XX  JMP  XXXXH // Этот джамп перенаправляет на целевую программу
    В оригинальном ПСПЗУ, в первых ячейках стоит JMP C003, что в принципе нам не мешает, но если ты будешь копировать ПСПЗУ и монитор из внутреннего ПЗУ, то там стоит команда STA 7FFA, которая используется для отключения ПЗУ. Технически, ты можешь ее использовать, перед прыгом задав в [A] нужный режим. А в XXXXH заносишь адрес старта программы. Если будешь использовать копию монитора из ПЗУ, тогда твои действия будут такими:
    1. Загружаем программу по месту расположения.
    2. Втыкаем режим 3 (не забываем о шлюзе, т.к. карта поменяется).
    3. Включаем ПЗУ в режиме 3.
    4. Копируем ПСПЗУ и монитор с C000H.
    5. Патчим его согласно таблицы выше.
    6. прыгаем на C000H.
    Не забываем стереть экран перед этими действиями.

    Попробуешь, отпишись.

  7. #96
    Moderator Аватар для fifan
    Регистрация
    30.05.2007
    Адрес
    г. Лянтор, Сургутского р-на, ХМАО
    Сообщений
    4,165
    Спасибо Благодарностей отдано 
    106
    Спасибо Благодарностей получено 
    125
    Поблагодарили
    71 сообщений
    Mentioned
    4 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Что-то не выходит. Кстати ячейки для адреса в Мониторе-4 другие (#c849/a). Глянь не замыленным взглядом что не так?
    ld a, #00 ; ПЗУ включено
    ld (#f7f8), a
    ld a, #03
    ld (#ffff), a
    ld hl, #0100
    ld de, #c000
    LoopStd ld a, (hl)
    ld (de), a
    inc hl
    inc de
    ld a, h
    cp #14
    jp nz, LoopStd
    ld hl, (Start)
    ld a, l
    ld (#c849), a
    ld a, h
    ld (#c84a), a
    call ClearScr ; очистка экрана
    ld a, #03 ; ПЗУ включено, 8 цветов
    jp #c000


    ---------- Post added at 23:31 ---------- Previous post was at 23:06 ----------

    В Мониторе-4 вместо:
    C845 C3 XX XX JMP XXXXH // Этот джамп перенаправляет на целевую программу
    стоит:
    C845 CD 4B C8 CALL C84BH
    Последний раз редактировалось fifan; 02.08.2013 в 21:08.

  8. #97
    Guru Аватар для HardWareMan
    Регистрация
    26.02.2011
    Адрес
    г. Павлодар, Казахстан
    Сообщений
    4,405
    Спасибо Благодарностей отдано 
    320
    Спасибо Благодарностей получено 
    598
    Поблагодарили
    444 сообщений
    Mentioned
    10 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Ячейки правильные. CD (т.е. CALL), который ты там видишь, это вызов ввода буфера команды монитора. Нам он не нужен, поэтому я его заменил на JMP. Поэтому, делай правильно, + замени CD на C3. Я забыл это упомянуть, сорри. Кстати, в C450 тоже стоит CD на подпрограмму загрузки, надо заменить на C3 00 C8.

  9. #98
    Moderator Аватар для fifan
    Регистрация
    30.05.2007
    Адрес
    г. Лянтор, Сургутского р-на, ХМАО
    Сообщений
    4,165
    Спасибо Благодарностей отдано 
    106
    Спасибо Благодарностей получено 
    125
    Поблагодарили
    71 сообщений
    Mentioned
    4 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от HardWareMan Посмотреть сообщение
    Ячейки правильные. CD (т.е. CALL), который ты там видишь, это вызов ввода буфера команды монитора. Нам он не нужен, поэтому я его заменил на JMP. Поэтому, делай правильно, + замени CD на C3. Я забыл это упомянуть, сорри. Кстати, в C450 тоже стоит CD на подпрограмму загрузки, надо заменить на C3 00 C8.
    Уже делал - не работает. Правильно ли я включаю/выключаю ПЗУ, а то такое ощущение, что адрес вообще не записывается.

    ---------- Post added 03.08.2013 at 00:15 ---------- Previous post was 02.08.2013 at 23:46 ----------

    Смотрю отладчик. А с #0100 в #c000 ничего-то не копируется, почему-то разные области памяти в них - в чём дело? А вот коды c3 00 c8 и c3 XX XX пишутся, даже адрес XX XX верно записывается.

  10. #99
    Guru Аватар для HardWareMan
    Регистрация
    26.02.2011
    Адрес
    г. Павлодар, Казахстан
    Сообщений
    4,405
    Спасибо Благодарностей отдано 
    320
    Спасибо Благодарностей получено 
    598
    Поблагодарили
    444 сообщений
    Mentioned
    10 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Согласно схеме, лог.0 на разряде D0 включает ПЗУ, а лог.1 выключает. а ты туда 3 пишешь (8 цветов, выключенное ПЗУ). Это перед копированием. Выключать ПЗУ надо после копирования. Т.е., сначала 2 пишем, а потом 3. Ах да! Ты пишешь в F7F8h ДО переключения в режим 3, а в режиме 0, 1 и 2 данный порт по адресу FFF8.

  11. #100
    Moderator Аватар для fifan
    Регистрация
    30.05.2007
    Адрес
    г. Лянтор, Сургутского р-на, ХМАО
    Сообщений
    4,165
    Спасибо Благодарностей отдано 
    106
    Спасибо Благодарностей получено 
    125
    Поблагодарили
    71 сообщений
    Mentioned
    4 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Попробую, спасибо.

Страница 10 из 16 ПерваяПервая ... 67891011121314 ... ПоследняяПоследняя

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

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

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

Похожие темы

  1. Трекер нового поколоения
    от newart в разделе Музыка
    Ответов: 63
    Последнее: 02.02.2016, 09:55
  2. Изучается спрос на плату для Специалиста
    от Павел Рябцов в разделе Барахолка (архив)
    Ответов: 109
    Последнее: 30.11.2010, 10:16
  3. Продается Лик (клон Специалиста)
    от KALDYH в разделе Барахолка (архив)
    Ответов: 1
    Последнее: 20.02.2010, 14:29

Ваши права

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