User Tag List

Страница 314 из 458 ПерваяПервая ... 310311312313314315316317318 ... ПоследняяПоследняя
Показано с 3,131 по 3,140 из 4576

Тема: ДВК (и всё, что с ними связано)

  1. #3131

    Регистрация
    27.05.2009
    Адрес
    СССР, Новосибирск
    Сообщений
    5,850
    Спасибо Благодарностей отдано 
    9
    Спасибо Благодарностей получено 
    289
    Поблагодарили
    233 сообщений
    Mentioned
    30 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Alex_K Посмотреть сообщение
    А это часом не слишком большая дырка в системе? Таким образом любая задача получает режим KERNEL?
    XM/ZM и не планировались как защищенные системы. В сстемах где реально нужна защита никто не допустит программу до векторов или PSW.

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

    Цитата Сообщение от form Посмотреть сообщение
    XM/ZM и не планировались как защищенные системы.
    Впрочем виртуальные программы там более-менее защищены - прямого доступа к регистрам-векторам нет. Но непрямой опять таки есть. И также содержимое PSW в XM/ZM позволяет виртуальным программам выходить за рамки через MxPI/MxPD (кроме программ VBGEXE).
    Последний раз редактировалось form; 13.11.2016 в 16:57.
    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

  2. #3132

    Регистрация
    07.04.2015
    Адрес
    г. Комсомольск, Ивановская обл.
    Сообщений
    319
    Спасибо Благодарностей отдано 
    1
    Спасибо Благодарностей получено 
    1
    Поблагодарили
    1 сообщение
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    TPARK.MAC
    .TITLE PARK2016.MAC
    .MCALL .PRINT, .EXIT, .MTPS, .TRPSET ;используемые вызовы библиотеки

    STARTF:
    .TRPSET #AREA, #CNTRLRNOTFOUND ; переназначить 4 и 10 вектора на наш
    обработчик на случай отсутствия регистра 174000 на шине
    CMP @#174000, #401 ;сравнить содержимое регистра идентификации 174000 с
    кодом 401(восьмеричное)
    BNE CNTRLRNOTFOUND ;контроллер не обнаружен, выходим
    10$: BIT #100000, @#174020 ;проверка занятости
    BEQ 10$ ;занят, ждем
    BIS #8., @#174020 ;начальная установка с выводом головок на нулевой трек
    20$: BIT #100000, @#174020
    BEQ 20$ ;занят, ждем
    30$: BIT #1, @#174020
    BNE 30$ ;ждем, пока операция не будет завершена
    MOV LANDZONE, @#174012 ;поместить в регистр адреса цилиндра 174012
    номер цилиндра для парковки
    MOV #7, @#174006 ;сектор 7 (любой до 16)
    MOV #0, @#174014 ;поверхность 0 (любая из доступных, 0 и 1 точно есть у
    каждого диска)
    MOV #40, @#174016 ;команда чтения сектора
    .PRINT #SHUTDOWNMSG
    .MTPS #340
    BR .

    CNTRLRNOTFOUND:
    .PRINT #NOTFOUNDMSG
    .EXIT

    NOTFOUNDMSG: .ASCIZ /MFM CONTROLLER NOT FOUND/
    SHUTDOWNMSG: .ASCIZ /TURN THE POWER OFF/
    LANDZONE: .WORD 1230 ;664 цилиндр у моего HDD парковочный, на
    других хдд он другой
    AREA: .WORD 0, 0

    .END STARTF
    Так переназначать 4 и 10 вектора?
    Сомневаюсь в .TRPSET #AREA, #0 ;восстановить оригинальные обработчики 4 и 10 векторов.
    Последний раз редактировалось Korchagin; 13.11.2016 в 19:44. Причина: подправил ошибки

  3. #3133

    Регистрация
    27.05.2009
    Адрес
    СССР, Новосибирск
    Сообщений
    5,850
    Спасибо Благодарностей отдано 
    9
    Спасибо Благодарностей получено 
    289
    Поблагодарили
    233 сообщений
    Mentioned
    30 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Korchagin Посмотреть сообщение
    Сомневаюсь в .TRPSET #AREA, #0 ;восстановить оригинальные обработчики 4 и 10 векторов.
    Не требуется - установка делается для задачи и после выхода ее теряется.

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

    Цитата Сообщение от Korchagin Посмотреть сообщение
    CHECK1: BIT #100000, @#174020 ;проверка занятости
    BEQ CHECK1 ;занят, ждем
    TST @#174020
    BPL .-4

    Ну и в таких незначимых местах лучше ставить локальные метки 1$, 2$, 10$, 20$ итд

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

    Цитата Сообщение от Korchagin Посмотреть сообщение
    Так переназначать 4 и 10 вектора?
    Так. В данном случае не требуется особых разбирательств - все-равно единственная реакция - выход.
    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

  4. #3134

    Регистрация
    07.04.2015
    Адрес
    г. Комсомольск, Ивановская обл.
    Сообщений
    319
    Спасибо Благодарностей отдано 
    1
    Спасибо Благодарностей получено 
    1
    Поблагодарили
    1 сообщение
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    {здесь был ошибочный вариант}
    Последний раз редактировалось Korchagin; 13.11.2016 в 19:30.

  5. #3135

    Регистрация
    27.05.2009
    Адрес
    СССР, Новосибирск
    Сообщений
    5,850
    Спасибо Благодарностей отдано 
    9
    Спасибо Благодарностей получено 
    289
    Поблагодарили
    233 сообщений
    Mentioned
    30 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Korchagin Посмотреть сообщение
    MOV VECTORPART1, @#0 ;сохраняем нулевой вектор прерываний
    MOV VECTORPART2, @#2
    MOV #ZEROHANDLER, @#0 ; в книге Фрэнка так
    TRAP 0 ;вызываем нулевой вектор прерываний
    У команды TRAP (независимо от аргумента) вектор 34, а не 0
    И сохранять-восстанавливать ничего не нужно...

    А если в какой-то книге так - это печально... Ибо такой порядок аргументов (первые две команды) используется у интела, но не в MACRO-11
    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

  6. #3136

    Регистрация
    07.04.2015
    Адрес
    г. Комсомольск, Ивановская обл.
    Сообщений
    319
    Спасибо Благодарностей отдано 
    1
    Спасибо Благодарностей получено 
    1
    Поблагодарили
    1 сообщение
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    А как же хандлер к трапу 0 привязать?(((
    Системный обработчик Трапа 0 ведь уже содержит в себе HALT? Тогда и дергаться не надо ни с какими своими обработчиками.
    Последний раз редактировалось Korchagin; 13.11.2016 в 19:31.

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

  8. #3137

    Регистрация
    27.05.2009
    Адрес
    СССР, Новосибирск
    Сообщений
    5,850
    Спасибо Благодарностей отдано 
    9
    Спасибо Благодарностей получено 
    289
    Поблагодарили
    233 сообщений
    Mentioned
    30 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Korchagin Посмотреть сообщение
    А как же хандлер к трапу 0 привязать?(((
    TRAP имеет вектор 34. Независимо от аргумента. Аргумент является частью кода команды и может быть проанализирован обработчиком прерывания, и это все касаемо циферки. То есть будь то TRAP 0 или TRAP 377, а вектор всегда будет 34. Ну и инициализировать его лучше сразу на этапе сборки программы через .ASECT (пример как это делается писал выше).

    Цитата Сообщение от Korchagin Посмотреть сообщение
    Системный обработчик Трапа 0 ведь уже содержит в себе HALT?
    Система никак не обрабатывает команду TRAP. Если же речь идет об адресах 0-2, то там для обычных программ записана очистка R0 и .EXIT, а для виртуальных - очистка R0 и .ASTX, но это никак не относится к делу
    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

  9. #3138

    Регистрация
    07.04.2015
    Адрес
    г. Комсомольск, Ивановская обл.
    Сообщений
    319
    Спасибо Благодарностей отдано 
    1
    Спасибо Благодарностей получено 
    1
    Поблагодарили
    1 сообщение
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Буду разбираться тогда с ASECT
    Последний раз редактировалось Korchagin; 13.11.2016 в 19:27.

  10. #3139

    Регистрация
    27.05.2009
    Адрес
    СССР, Новосибирск
    Сообщений
    5,850
    Спасибо Благодарностей отдано 
    9
    Спасибо Благодарностей получено 
    289
    Поблагодарили
    233 сообщений
    Mentioned
    30 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Korchagin Посмотреть сообщение
    Буду разбираться тогда с ASECT
    Там все просто: после директивы .ASECT адресация абсолютна, все .=xxx (без этого будет 0) именно это и означают - после этого адрес будет именно xxx. В нашем случае интересен .=34... После того как все абсолютно-адресные действия выполнены пишем .PSECT и после этого как обычно пишем программу. Для данного конкретного случая этого достаточно
    В примере выше я также показывал как запретить запуск программы под VBGEXE (полезно для XM/ZM - ибо если прога будет выполняться под VBGEXE - она просто не сможет обратиться к регистрам устройств, а залезет в некую память вместо них).
    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

  11. #3140

    Регистрация
    07.04.2015
    Адрес
    г. Комсомольск, Ивановская обл.
    Сообщений
    319
    Спасибо Благодарностей отдано 
    1
    Спасибо Благодарностей получено 
    1
    Поблагодарили
    1 сообщение
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от form Посмотреть сообщение
    Там все просто: после директивы .ASECT адресация абсолютна, все .=xxx (без этого будет 0) именно это и означают - после этого адрес будет именно xxx. В нашем случае интересен .=34... После того как все абсолютно-адресные действия выполнены пишем .PSECT и после этого как обычно пишем программу. Для данного конкретного случая этого достаточно
    В примере выше я также показывал как запретить запуск программы под VBGEXE (полезно для XM/ZM - ибо если прога будет выполняться под VBGEXE - она просто не сможет обратиться к регистрам устройств, а залезет в некую память вместо них).
    Понял, разбираюсь.

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

    В процессе поиска дополнительной информации наткнулся на книжку "для самых маленьких" http://ideafix.name/wp-content/uploa...ff/book106.pdf. Теперь то я окончательно понял, почему PDP-11 была столь популярна в научных и промышленных кругах.

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

    TPARK.MAC
    .TITLE PARK2016.MAC
    .MCALL .PRINT, .EXIT, .MTPS, .TRPSET ;используемые вызовы библиотеки

    $JSX =: 4 ;EXTENDED JOB STATUS WORD
    NOVBG$ =: 100 ;DISABLE VBGEXE BIT
    $JSW =: 44 ;JOB STATUS WORD
    TTSPC$ =: 10000 ;SPECIAL MODE TERMINAL BIT
    TCBIT$ =: 100 ;INHIBIT TERMINAL WAIT BIT
    $SYPTR =: 54 ;POINTER TO RMON
    $CNFG1 =: 300 ;SYSTEM CONFIG WORD
    FJOB$ =: 200 ;FOREGROUND LOADED BIT
    $SYSGE =: 372 ;SYSGEN FEATURE WORD
    RTEM$ =: 10 ;RTEM-11 SYSTEM

    .ASECT
    .=$JSX
    .WORD NOVBG$ ;DISABLE VBGEXE
    .=$JSW
    .WORD TTSPC$!TCBIT$ ;SET TERMINAL MODE
    .=034
    .WORD TRAPZEROHANDLER ;адрес нового обработчика
    .WORD 340 ;уровень привилегий 7
    .PSECT

    STARTF:
    MOV @#$SYPTR,R0 ;R0 -> RMON
    BIT #RTEM$,$SYSGE(R0) ;RTEM-11?
    BNE 1$ ;YES, EXIT
    TSTB $CNFG1(R0) ;FOREGROUND LOADED?
    BPL 5$ ;IF PL NO, OK
    .PRINT #FLOAD ;FOREGROUND LOADED ERROR
    1$: .EXIT ;EXIT
    5$: .TRPSET #AREA, #CNTRLRNOTFOUND ; переназначить 4 и 10 вектора на наш
    обработчик на случай отсутствия регистра 174000 на шине
    CMP @#174000, #401 ;сравнить содержимое регистра идентификации 174000 с
    кодом 401(восьмеричное)
    BNE CNTRLRNOTFOUND ;контроллер не обнаружен, выходим
    10$: BIT #100000, @#174020 ;проверка занятости
    BEQ 10$ ;занят, ждем
    BIS #8., @#174020 ;начальная установка с выводом головок на нулевой трек
    20$: BIT #100000, @#174020
    BEQ 20$ ;занят, ждем
    30$: BIT #1, @#174020
    BNE 30$ ;ждем, пока операция не будет завершена
    MOV LANDZONE, @#174012 ;поместить в регистр адреса цилиндра 174012
    номер цилиндра для парковки
    MOV #7, @#174006 ;сектор 7 (любой до 16)
    MOV #0, @#174014 ;поверхность 0 (любая из доступных, 0 и 1 точно есть у
    каждого диска)
    MOV #40, @#174016 ;команда чтения сектора
    .PRINT #SHUTDOWNMSG ;сообщение об отключении питания
    INC @#PASSWORD ;введем пароль на разрешение останова
    TRAP 0 ;трапнем для перехода в режим ядра и исполнения HALT

    CNTRLRNOTFOUND:
    .PRINT #NOTFOUNDMSG ;сообщение об отсутствии контроллера на шине
    .EXIT

    TRAPZEROHANDLER: ;обработчик трапа 0 и всех других номеров трапов - прерывание
    перехвачено
    BIT #1, @#PASSWORD ;вызов из нашей программы?
    BNE 100$ ;нет, выходим
    HALT ;останов машины
    100$: RTI

    FLOAD: ASCIZ /FOREGROUND TASK LOADED, DO NOT OFF THE POWER/
    NOTFOUNDMSG: .ASCIZ /MFM CONTROLLER NOT FOUND/
    SHUTDOWNMSG: .ASCIZ /TURN THE POWER OFF/
    LANDZONE: .WORD 1230 ;664 цилиндр у моего HDD парковочный, на
    других хдд он другой
    AREA: .WORD 0, 0 ; или AREA: .BLKW 2 - параметры для EMT трапсета
    PASSWORD: .WORD 0 ;для проверки права на останов
    .END STARTF
    Будет ли работать такой Франкенштейн?
    Последний раз редактировалось Korchagin; 14.11.2016 в 10:39.

Страница 314 из 458 ПерваяПервая ... 310311312313314315316317318 ... ПоследняяПоследняя

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

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

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

Похожие темы

  1. Видеорежимы и работа с ними
    от icebear в разделе Программирование
    Ответов: 23
    Последнее: 26.07.2005, 12:55
  2. Видеорежимы и работа с ними
    от icebear в разделе Несортированное железо
    Ответов: 3
    Последнее: 21.07.2005, 11:49
  3. Ответов: 0
    Последнее: 25.06.2005, 23:14

Ваши права

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