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

User Tag List

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

Тема: Использование overlay

  1. #1
    Guru Аватар для bigral
    Регистрация
    12.07.2006
    Адрес
    г. Киев, Украина
    Сообщений
    2,147
    Спасибо Благодарностей отдано 
    25
    Спасибо Благодарностей получено 
    95
    Поблагодарили
    82 сообщений
    Mentioned
    2 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию Использование overlay

    как я понимаю для pdp11 систем оверлеи это чтото совсем обыденное если прога длинной и сложностью примерно как редактор vi

    ктото может наглядно показать как это использовать?

    на скоко я понимаю есть всегда невыгружаемая часть в которой код переключения оверлеев и буфер обмена данными между функциями в оверлеях, ну и сами оверлеи в которых функции и приватные данные с которыми эти функции работают

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

  3. #2
    Guru
    Регистрация
    02.03.2015
    Адрес
    г. Караганда, Казахстан
    Сообщений
    2,321
    Спасибо Благодарностей отдано 
    35
    Спасибо Благодарностей получено 
    225
    Поблагодарили
    177 сообщений
    Mentioned
    17 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от bigral Посмотреть сообщение
    на скоко я понимаю есть всегда невыгружаемая часть в которой код переключения оверлеев и буфер обмена данными между функциями в оверлеях, ну и сами оверлеи в которых функции и приватные данные с которыми эти функции работают
    Где-то так и есть,причем все это организует LINK в процессе сборки, при программировании надо просто учитывать, что не вся программа будет в памяти. Допустим, не пихать в короткий цикл последовательность команд, требующих перезагрузки оверлеев...

    Еще в ХМ-версии есть т.наз. оверлеи в верхней памяти, когда оверлейная программа грузится целиком (в верхнюю память), а переключение оверлеев делается через диспетчер памяти.

    А вот с примером хуже - когда-то я делал такой пример, но где он - понятия не имею...
    Кто мешает тебе выдумать порох непромокаемый? (К.Прутков, мысль № 133)

  4. #3
    Master
    Регистрация
    13.07.2018
    Адрес
    г. Переславль-Залесский
    Сообщений
    691
    Спасибо Благодарностей отдано 
    9
    Спасибо Благодарностей получено 
    44
    Поблагодарили
    40 сообщений
    Mentioned
    2 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Оверлеи в верхней памяти для пользователя делаются почти прозрачно заменой ключа при компоновке с /O: на /V:
    Имеется правда несколько тонкостей
    Всё работает с фортраном в RT11XM во всяком случае. За счёт расположения в памяти модулей программы работает быстрее и меньше нагрузка на диск.
    Буфер обмена данными делаешь сам. Либо как аргументы функций или(и) подпрограмм(классика) либо через блоки COMMON в нижележащих оверлейных модулях. Возможны ещё варианты разумеется С другими языками программирования не пробовал, так как нужды не было...

  5. #4
    Member
    Регистрация
    16.07.2021
    Адрес
    г. Черкесск
    Сообщений
    89
    Спасибо Благодарностей отдано 
    35
    Спасибо Благодарностей получено 
    10
    Поблагодарили
    8 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Именно так, как написал Alex: общие блоки в Фортране и Макро, раскидываешь подпрограммы по непересекающимся группам, link и все работает. Старые распечатки практически стерты, примера, увы, не приведу.

  6. #5
    Guru Аватар для form
    Регистрация
    27.05.2009
    Адрес
    СССР, Новосибирск
    Сообщений
    5,823
    Спасибо Благодарностей отдано 
    8
    Спасибо Благодарностей получено 
    281
    Поблагодарили
    227 сообщений
    Mentioned
    29 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Все просто.
    На примере RT-11, каждый оверлей выделяется в одельный модуль, а при линковке указывается какие модули к какому сегменту относятся:
    Код:
    R LINK
    PROG=PROG//
    MOD1/O:1
    MOD2/O:1
    MOD3/O:2
    MOD4/O:2
    //
    Аргумент /O обозначает номер сегмента, модули с одинаковым сегментом будут перекрываться.
    Для виртуальных модулей в расширенной памяти вместо /O нужно использовать /V (при этом надо учитывать что адреса сегментов будут выравниваться на границу 20000).
    В самой программе специально ничего делать не нужно (кроме понимания механизма работы).
    Вызовы подпрограмм из оверлейных сегментов будут заменены на вызовы подпрограмм переадресации.
    PDP-11/83, Электроника МС0511 (УК-НЦ), DECserver 90M
    Q-Bus: H9278-A, DLV11-J, DZQ11, DHV11, DELQA-M, LPV11, CQD-420/TM, DRV11
    PMI: KDJ11-BF, MSV11-JE
    VT220, CM7209

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

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

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

Похожие темы

  1. Использование JiffyDOS
    от alexeilm в разделе Commodore 16/64/128
    Ответов: 20
    Последнее: 08.01.2014, 16:14
  2. Использование USB FDD
    от Максагор в разделе Внешние накопители
    Ответов: 45
    Последнее: 06.05.2013, 22:30
  3. Использование дискет
    от Big bear в разделе Для начинающих
    Ответов: 25
    Последнее: 18.12.2010, 10:05
  4. Использование Hrust 2.1
    от GM BIT в разделе Программирование
    Ответов: 3
    Последнее: 29.11.2010, 20:42
  5. Использование музыки
    от GM BIT в разделе Музыка
    Ответов: 23
    Последнее: 21.06.2009, 12:27

Ваши права

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