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

User Tag List

Страница 80 из 155 ПерваяПервая ... 767778798081828384 ... ПоследняяПоследняя
Показано с 791 по 800 из 1550

Тема: Программирование на УКНЦ как?

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

    По умолчанию

    Цитата Сообщение от ilynxy Посмотреть сообщение
    Но живого примера я не нашёл. Ткните пожалуйста прям в ссылку и номер страницы.
    Что первым приходит в голову - сама RT-11, виднее всего это на примере KMON'а. А так - ничего не помню. Когда-то, когда я только изучал RT-11, я на пробу написал оверлейную программку, но увы, ничего не помню, кроме того, что особо сложного ничего не было.

    Помню только, что пользовался "зеленой" книжкой (РАФОС).
    Последний раз редактировалось AFZ; 26.07.2016 в 12:58.
    Кто мешает тебе выдумать порох непромокаемый? (К.Прутков, мысль № 133)

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

    По умолчанию

    Цитата Сообщение от ilynxy Посмотреть сообщение
    А покажите, пожалуйста, пример как писать оверлейные программы с помощью macro/link?
    В RT-11 все довольно примитивно. В линкере перечисляются модули с ключом /O:n (/V:n для XM оверлеев), где n указывает номер сегмента в который отображается код (номера писать в порядке возрастания). Вот вобщем-то и все.
    Для примера есть R.MAC - вызывает подпрограммы из оверлеев и печатает данные, переданные ими; и S(1,2,3,4).MAC которые эти данные передают...

    R:
    Код:
            .TITLE  ROOT - ROOT SEGMENT
            .MCALL  .EXIT,.PRINT            ;СИСТЕМНЫЕ ВЫЗОВЫ
    
    START:: CALL    SEG1                    ;ВЫЗОВ СЕГМЕНТА 1
            CALL    SEG2                    ;ВЫЗОВ СЕГМЕНТА 2
            CALL    SEG3                    ;ВЫЗОВ СЕГМЕНТА 3
            CALL    SEG4                    ;ВЫЗОВ СЕГМЕНТА 4
            .EXIT                           ;ВЫХОД
    
    PSTAT:: MOV     #BUFF,R0                ;АДРЕС БУФЕРА
            MOV     #FMTS,R1                ;СТРОКА ФОРМАТА
            MOV     #ARGS,R2                ;БЛОК АРГУМЕНТОВ
            MOV     (R5)+,@R2               ;СОХРАНЯЕМ НОМЕР СЕГМЕНТА
            MOV     (R5)+,2(R2)             ;СОХРАНЯЕМ СТАРТОВЫЙ АДРЕС СЕГМЕНТА
            CALL    $EDMSG                  ;ФОРМАТИРУЕМ
            CLRB    @R0                     ;ПРЕВРАЩАЕМ В ASCIZ
            .PRINT  #BUFF                   ;ПЕЧАТАЕМ
            RTS     R5                      ;ВОЗВРАЩАЕМСЯ
    
    BUFF:   .BLKB   80.                     ;БУФЕР
    ARGS:   .BLKW   2                       ;БЛОК АРГУМЕНТОВ
    
    FMTS:   .ASCIZ  /SEG %D, PC %P/
    
            .END    START
    S1-S4 (содержимое одинаковое, меняем только циферки):
    Код:
            .TITLE  SEG1
    
    SEG1::  JSR     R5,PSTAT                ;ПОДПРОГРАММА ПЕЧАТИ
            .WORD   1,SEG1                  ;НОМЕР СЕГМЕНТА, СТАРТОВЫЙ АДРЕС
            RETURN                          ;ВОЗВРАТ
    
            .END
    Компиляция:
    Код:
    .MAC R
    
    .MAC S1
    
    .MAC S2
    
    .MAC S3
    
    .MAC S4
    
    .
    Простая сборка:
    Код:
    .LIN/LINK:RSXLIB R,S1,S2,S3,S4
    
    .RU R
    SEG 1, PC 001224
    SEG 2, PC 001236
    SEG 3, PC 001250
    SEG 4, PC 001262
    
    .
    Оверлейная сборка (делаем два сегмента [кроме корневого]):
    Код:
    .LIN/LINK:RSXLIB R/PRO
    *S1/O:1
    *S2/O:1
    *S3/O:2
    *S4/O:2
    *//
    
    .RU R
    SEG 1, PC 003774
    SEG 2, PC 003774
    SEG 3, PC 004010
    SEG 4, PC 004010
    
    .
    Как-то так. Остальное легко понимается

    В первом случае в памяти будет примерно такая картина:
    Код:
    +--------+
    |   R    |
    +--------+
    |   S1   |
    +--------+
    |   S2   |
    +--------+
    |   S3   |
    +--------+
    |   S4   |
    +--------+
    | RSXLIB |
    +--------+
    Во втором - такая:
    Код:
    +--------+
    |   R    |
    +--------+
    | RSXLIB |
    +--------+
    |  S1/S2 |
    +--------+
    |  S3/S4 |
    +--------+
    Последний раз редактировалось form; 26.07.2016 в 16:34.
    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

  3. #793
    Junior
    Регистрация
    07.01.2016
    Адрес
    г. Москва
    Сообщений
    27
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    6
    Поблагодарили
    4 сообщений
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от form Посмотреть сообщение
    В RT-11 все довольно примитивно. В линкере перечисляются модули с ключом /O:n (/V:n для XM оверлеев), где n указывает номер сегмента в который отображается код (номера писать в порядке возрастания). Вот вобщем-то и все.
    Моя принципиальная ошибка в том, что я считал, что оверлей распространяется на именованную секцию. А это оказывается модуль. То есть, если я правильно понимаю, один оверлейный сегмент не может быть разбит на несколько объектных модулей? Или может? Это, конечно, не принципиально, просто интересно.

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

    По умолчанию

    Цитата Сообщение от ilynxy Посмотреть сообщение
    оверлей распространяется на именованную секцию
    В других системах так и есть. В RSX-11 к примеру у сборщика задач целый язык описания оверлеев есть и оперирует он секциями в том числе.

    - - - Добавлено - - -

    Цитата Сообщение от ilynxy Посмотреть сообщение
    Или может?
    Может. Для этого нужно /O писать последнему модулю в цепочке.
    На примере выше:
    Код:
    .LIN/LINK:RSXLIB R/PRO
    *S1,S2/O:1
    *S3,S4/O:2
    *//
    
    .RU R
    SEG 1, PC 003760
    SEG 2, PC 003772
    SEG 3, PC 004006
    SEG 4, PC 004020
    
    .
    Получили два сегмента, каждый из двух модулей. В данном случае правда смысл потерялся в виду того, что ничего не перекрывается, но как пример сойдет
    Вот более интересный пример - в один сегмент два оверлея по два модуля:
    Код:
    .LIN/LINK:RSXLIB R/PRO
    *S1,S2/O:1
    *S3,S4/O:1
    *//
    
    .RU R
    SEG 1, PC 003760
    SEG 2, PC 003772
    SEG 3, PC 003760
    SEG 4, PC 003772
    
    .
    Последний раз редактировалось form; 26.07.2016 в 23:12.
    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

  5. #795
    Veteran
    Регистрация
    22.11.2009
    Адрес
    Москва
    Сообщений
    1,587
    Спасибо Благодарностей отдано 
    67
    Спасибо Благодарностей получено 
    157
    Поблагодарили
    103 сообщений
    Mentioned
    12 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Alex_K Посмотреть сообщение
    Определить может только драйвер какого-то устройства. Например теоретически можно определить, что воткнута кассета ПЗУ, контроллер винча или ЭД от ЭР. При этом даже можно определить к каком слоте. А окно подставляет сам драйвер. Система умеет работать только с кассетой ПЗУ (соответственно контроллер винча тоже делает так, чтобы его ПЗУ подставлялась в окно).
    Про биты 1-3, а лучше 0-3. Они соответствуют сигналам на шине с CE0 по CE3. А уж аппаратура использует их по своему усмотрению. Единственно в УКНЦ используется сигнал CE0, по нему можно включать и отключать системное ПЗУ в "окне" 100000-117777. Сигнал CE3 поступает на один слот прямо, на другой через инвертор, благодаря этому устройство имеет свой адрес слота, а так бы пришлось вводить джампер на самом устройстве. Обычно CE3 используется для выбора устройства в слоте. А с помощью CE1 и CE2 в кассете ПЗУ (классической) выбирается какой банк подставлять в окно, комбинация 00 запрещает подстановку, а с помощью 01, 10 и 11 можно выбрать нужный банк.
    Чем дальше в лес, тем толще партизаны документация По соседним темам (и интернету) наскреб подробности про регистр 177704, назначение выводов разъемов XS1/XS2 (ВУ1/ВУ2), сигнал "РЕЖ2" (статья в «Персональный компьютер УКНЦ» №1 1995 год)...

  6. #796
    Guru
    Регистрация
    07.10.2007
    Адрес
    п.Пудость Гатчинского р-на Лен.обл.
    Сообщений
    3,208
    Спасибо Благодарностей отдано 
    346
    Спасибо Благодарностей получено 
    607
    Поблагодарили
    399 сообщений
    Mentioned
    46 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от shattered Посмотреть сообщение
    По соседним темам (и интернету) наскреб подробности про регистр 177704
    А в СЭМЗ-овской схемотехнике через этот регистр устанавливается скорость последовательного порта.

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

  8. #797
    Veteran
    Регистрация
    22.11.2009
    Адрес
    Москва
    Сообщений
    1,587
    Спасибо Благодарностей отдано 
    67
    Спасибо Благодарностей получено 
    157
    Поблагодарили
    103 сообщений
    Mentioned
    12 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Вопрос про бит 0 регистра 177054 -- он таки сбрасывается или устанавливается по включению питания и RESET?

  9. #798
    Guru
    Регистрация
    07.10.2007
    Адрес
    п.Пудость Гатчинского р-на Лен.обл.
    Сообщений
    3,208
    Спасибо Благодарностей отдано 
    346
    Спасибо Благодарностей получено 
    607
    Поблагодарили
    399 сообщений
    Mentioned
    46 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    При включении питания он установлен, в системном ПЗУ нет никаких команд работы с этим битом при инициализации после запуска. Весьма вероятно что он устанавливается по RESET, т.к БМК, где расположен регистр, не обрабатывает сигнал DCLO.

  10. #799
    Banned
    Регистрация
    05.07.2010
    Адрес
    Москва
    Сообщений
    1,058
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    1
    Поблагодарили
    1 сообщение
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Удаление в знак протеста против действий MM
    Последний раз редактировалось MacBuster; 27.01.2019 в 09:06. Причина: Удаление в знак протеста против действий MM

  11. #800
    Guru
    Регистрация
    08.10.2005
    Адрес
    Москва
    Сообщений
    13,560
    Спасибо Благодарностей отдано 
    1,223
    Спасибо Благодарностей получено 
    1,754
    Поблагодарили
    683 сообщений
    Mentioned
    67 Post(s)
    Tagged
    1 Thread(s)

    По умолчанию

    Цитата Сообщение от MacBuster Посмотреть сообщение
    Напомните, пожалуйста, как перехватить обратный ход луча (начало кадра) - есть где-нибудь пример?
    Прерывание от таймера 50Гц синхронно с кадровой разверткой.

Страница 80 из 155 ПерваяПервая ... 767778798081828384 ... ПоследняяПоследняя

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

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

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

Похожие темы

  1. Программирование на Эмуляторе. Возможно ли это?
    от Toxic в разделе Программирование
    Ответов: 10
    Последнее: 20.01.2008, 19:20
  2. Программирование Altera и JTAG
    от Mikka_A в разделе Несортированное железо
    Ответов: 7
    Последнее: 18.01.2008, 09:07
  3. Программирование и софтмейк на NES
    от Splinter в разделе Nintendo
    Ответов: 7
    Последнее: 30.06.2006, 04:31

Ваши права

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