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

User Tag List

Показано с 1 по 6 из 6

Тема: Резидент в ТR-DOS на ATM Turbo2+

  1. #1
    Member Аватар для artice
    Регистрация
    16.07.2010
    Адрес
    г. Ярославль
    Сообщений
    80
    Благодарностей: 25
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    Exclamation Резидент в ТR-DOS на ATM Turbo2+

    Уважаемые программисты, поделитесь как мне повесить резидентом boot (или, например, STS) в ТR-DOS на ATM Turbo2+, чтобы по reset выходил в него?
    АТМ Turbo 2 (ver. 6.40)/512kb RAM/AY/FDD 3.5/FDD 5.25/HDD 20gb/PAL coder-CHRV/kempston mouse(CARO)

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

  3. #2
    Veteran Аватар для John North
    Регистрация
    22.09.2006
    Адрес
    Ижевск
    Сообщений
    1,706
    Благодарностей: 400
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Quick Commander сам всё делает вроде.
    Хороший.. Плохой.. Главное - у кого ружьё !!

  4. #3
    Member Аватар для artice
    Регистрация
    16.07.2010
    Адрес
    г. Ярославль
    Сообщений
    80
    Благодарностей: 25
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от John North Посмотреть сообщение
    Quick Commander сам всё делает вроде.
    Мне интересен сам принцип размещения резидента в памяти.
    АТМ Turbo 2 (ver. 6.40)/512kb RAM/AY/FDD 3.5/FDD 5.25/HDD 20gb/PAL coder-CHRV/kempston mouse(CARO)

  5. #4
    Veteran Аватар для Максагор
    Регистрация
    16.01.2005
    Адрес
    Москва
    Сообщений
    1,448
    Благодарностей: 702
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от artice Посмотреть сообщение
    Мне интересен сам принцип размещения резидента в памяти.
    Все очень просто. В книжке - описании xBIOS (на сайте http://atmturbo.nedopc.com) есть исчерпывающее описание резидента. Привожу оттуда копипасту соответствующей главы:
    =======

    Работа с резидентом в xBIOS v1.32LE/1.33XT

    Понятие резидента

    В ПЗУ xBIOS реализована так называемая функция резидента. Суть ее заключается в программном перехвате нажатия кнопки RESET или обращения к адресу #0000 в ПЗУ TR-DOS и vTR-DOS и передаче управления специальной резидентной программе, сохраненной особым образом в верхней памяти, если таковая, естественно, там обнаружится. И только в случае отсутствия в памяти резидентной программы, ПЗУ будет выполнять стандартную процедуру запуска стартового меню (в случае нажатия RESET), или автозапуска файла boot <B> в случае рестарта TR-DOS или vTR-DOS. Функция резидента не является нововведением именно xBIOS. Она была реализована в ПЗУ еще на ПК ATM-turbo 1, и только потом была перенесена на ATM-turbo 2/2+, где успешно применялась в стандартных ПЗУ 1.07.1x.

    Самой известной программой, еще со времен ATM-1 использующей функцию резидента, по праву является файловая оболочка Honey Commander. При запуске какой-нибудь программы она сохраняет себя в качестве резидента в верхней памяти, а потом перезапускается автоматически по нажатию на RESET (что является очень удобным, учитывая тот факт, что большинство программ под ZX48/128 не имеют нормального выхода в систему), одновременно сохраняя копию экрана последнего момента перед сбросом.

    Однако, несмотря на давнее существование данной функции, более менее понятного описания ее использования с программной точки зрения так и не было создано. В результате желающие разобраться в ее работе с целью использования в своих программах, вынуждены были дизассемблировать ПЗУ и разбираться в процедурах обработчика резидента, что не всегда удобно, а для начинающих программистов слишком трудно. С выходом данной книги эта досадная историческая ошибка, наконец, исправлена.

    Итак, резидент хранится в странице ОЗУ #1F. Когда-то давно, на компьютерах ATM-turbo 1 (v4.xx) и ATM-turbo 2 (v6.xx), у которых было всего 512Кб ОЗУ, это была самая последняя страница памяти. Но с появлением ATM-turbo 2+ (v7.xx) память увеличилась до 1024Кб и последней страницей ОЗУ стала #3F. Но резидент для совместимости со старыми программами править не стали (тем более, что не всегда на ATM-turbo 2+ ставили все 1024Кб. Часто по различным причинам обходились только 512Кб). Так и располагается сейчас резидент посреди всего ОЗУ в странице #1F.

    Структура резидентной страницы

    Чтобы программа, помещенная в страницу #1F была распознана как резидент, она должна быть оформлена специальным образом. В соответствие с этим, страница имеет следующую структуру (далее указывается смещение от начала страницы):

    Байт #0000 – код #C3 (команда JP nnnn)
    Байты #0001-#0002 – адрес перехода для JP nnnn (рассчитывается по формуле: #C000+относительный адрес начало программы в странице).
    Байты #0003-#3FFC – свободное место непосредственно под программу.
    Байт #3FFDконтрольная сумма (КС) всей страницы(то есть, с #0000 до #3FFF)
    При создании резидента КС рассчитывается путем сложения без учета переноса (то есть, по команде ADD) одного за другим всех байтов страницы, а затем вычитания полученной суммы из нуля (по команде NEG процессора). При этом, так как в процессе расчета контрольной суммы, она еще не занесена в байт #3FFD, он перед началом подсчета КС должен быть равен #00(!). И этот момент обязательно должен быть учтен при возникновении необходимости пересчета КС.
    Байт #3FFE – всегда должен быть равен #55.
    Байт #3FFF – всегда должен быть равен #AA.

    Скомпонованная таким образом страница будет успешно распознана как резидентная и будет начата процедура запуска резидента, которая состоит из следующего:

    1) По адресу #C000 включается резидентная страница #1F.
    2) Передается управление резиденту на адрес #С000, где должна располагаться команда резидента JP nnnn.
    3) Перед передачей управления по адресу #8000 в обеих картах памяти (и при ROM2=0, и при ROM2=1) включается страница #02 ОЗУ.

    После передачи управления резиденту архитектура выглядит так:

    1) Расположение стека (значение SP) – не определено. Остается на усмотрение резидента.
    2) Карта памяти помимо адреса #8000 - #BFFF (и страницы #1F запущенным резидентом по адресу #С000) – не определена. Также остается на усмотрение резидента.
    3) Состояние палитры не определено. Также остается на усмотрение резидента.

    Прерывания находятся в режиме 2. Включены. Вектор прерывания равен #82FF (I=#82). Таким образом прерывания должны быть либо запрещены, либо, если работа с ними в короткий период работы резидента (пока он устанавливает основную программу) необходима, например, для установки палитры, то необходимо установить по адресу #82FF-#8300 адрес подпрограммы обработчика прерываний (в резиденте Honey Commander там стоит указатель на ближайший RET).

    Таким образом, программист при разработке резидента не связан никаким правилами и ограничениями, так как резидент не привязан ни к какой операционной системе и нее обязан учитывать ее особенности. Какова будет конфигурация компьютера после рестарта в резидент, определяется самим резидентом.

    Самое частое и перспективное применение резидента – сохранение с последующим восстановлением после рестарта различных ОС или оболочек. Однако в таких случаях объема одной страницы #1F может не хватить. Тогда для хранения избыточной информации используются соседние страницы. Например, Honey Commander использует под резидент страницы #1F, #1E, #1D и #1C. А в vTR-DOS под резидент на всякий случай зарезервированы 5 страниц (исключены из RAM-диска): #1F, #1E, #1D, #1C и #1B.
    Максагор, NedoPC group
    ПК ATM-turbo 2+ 1024Kb RAM, 1,7Gb HDD, CD-ROM, Turbo FM, GS-512
    [ZX rulezzz 4reva!!!]
    http://atmturbo.nedopc.com
    http://vk.com/atmturbo
    http://maksagor.livejournal.com
    http://moskprf.ru
    [СССР][Коммунизм][КПРФ] ну [ZX], естественно...

  6. Эти 3 пользователя(ей) поблагодарили Максагор за это полезное сообщение:
    artice (03.03.2011), Djoni (04.03.2011), John North (03.03.2011)

  7. #5
    Member Аватар для artice
    Регистрация
    16.07.2010
    Адрес
    г. Ярославль
    Сообщений
    80
    Благодарностей: 25
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Огромное спасибо за исчерпывающий ответ! Это описание у меня было, а я дурень его не прочитал! Ещё раз спасибо!
    АТМ Turbo 2 (ver. 6.40)/512kb RAM/AY/FDD 3.5/FDD 5.25/HDD 20gb/PAL coder-CHRV/kempston mouse(CARO)

  8. #6
    Veteran Аватар для Максагор
    Регистрация
    16.01.2005
    Адрес
    Москва
    Сообщений
    1,448
    Благодарностей: 702
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от artice Посмотреть сообщение
    Огромное спасибо за исчерпывающий ответ! Это описание у меня было, а я дурень его не прочитал! Ещё раз спасибо!
    Ну, дык, вот так всегда бывает - я в свое время это описание составлял-составлял, а его потом - никто не читает!
    Максагор, NedoPC group
    ПК ATM-turbo 2+ 1024Kb RAM, 1,7Gb HDD, CD-ROM, Turbo FM, GS-512
    [ZX rulezzz 4reva!!!]
    http://atmturbo.nedopc.com
    http://vk.com/atmturbo
    http://maksagor.livejournal.com
    http://moskprf.ru
    [СССР][Коммунизм][КПРФ] ну [ZX], естественно...

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

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

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

Похожие темы

  1. Covox в ATM-Turbo2
    от KALDYH в разделе Звук
    Ответов: 12
    Последнее: 14.03.2011, 02:18
  2. Перемычки на ATM-TURBO2+(v7.10)
    от AlexFantasy в разделе ATM
    Ответов: 6
    Последнее: 16.01.2009, 23:40
  3. Ищу ATM Turbo2+ или Pentagon1024!!!
    от klim в разделе Барахолка (архив)
    Ответов: 11
    Последнее: 17.09.2008, 18:24
  4. Turbo2 и память SIMM
    от KALDYH в разделе Память
    Ответов: 10
    Последнее: 30.08.2008, 05:46
  5. Turbo2 - глючит контроллер дисковода
    от KALDYH в разделе Внешние накопители
    Ответов: 13
    Последнее: 27.08.2008, 18:10

Ваши права

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