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

User Tag List

Страница 132 из 135 ПерваяПервая ... 128129130131132133134135 ПоследняяПоследняя
Показано с 1,311 по 1,320 из 1345

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

  1. #1311
    Guru Аватар для form
    Регистрация
    27.05.2009
    Адрес
    СССР, Новосибирск
    Сообщений
    5,501
    Спасибо Благодарностей отдано 
    2
    Спасибо Благодарностей получено 
    92
    Поблагодарили
    77 сообщений
    Mentioned
    13 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию Полезные фичи ULBLIB - прочие подпрограммы

    Некоторые подпрограммы в ULBLIB пересекаются с теми, что я портировал из RSX в RSXLIB.
    Для них описание уже есть.
    ULBLIB содержит следующие подпрограммы, присутствующие в RSXLIB:
    • подпрограммы сохранения регистров $SAVAL, $SAVRG, $SAVVR
    • подпрограммы преобразования $CBDSG, $CBDMG, $CBOSG, $CBOMG
    • подпрограммы арифметики $DIV, $MUL


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

    Другие подпрограммы преобразования (этих в RSXLIB нет).
    Код:
    ;CALL	$R50AS	- ПРЕОБРАЗОВАНИЯ RADIX-50 В ASCII
    ;		  КОД 034 (".") ПРЕОБРАЗУЕТСЯ В "%"
    ;		  КОД 035 ПРЕОБРАЗУЕТСЯ В "*"
    ;
    ;НА ВХОДЕ:
    ;	R0	- СЛОВО ДЛЯ ПРЕОБРАЗОВАНИЯ
    ;	R1	- АДРЕС БУФЕРА
    ;
    ;НА ВЫХОДЕ:
    ;	R1	- УКАЗЫВАЕТ НА СЛЕДУЮЩИЙ БАЙТ ЗА ПОЛУЧЕННОЙ СТРОКОЙ
    
    ;CALL	$ASCR5	- ПРЕОБРАЗОВАНИЕ ASCII В RADIX-50
    ;		  ПРОВЕРОК НЕ ПРОИСХОДИТ, ЕСЛИ СТРОКА СОДЕРЖИТ
    ;		  СИМВОЛЫ, НЕ ВХОДЯЩИЕ В RADIX-50 - ПОЛУЧИТСЯ КАША
    ;		  "%" ПРЕОБРАЗУЕТСЯ В КОД 034 (".")
    ;		  "*" ПРЕОБРАЗУЕТСЯ В КОД 035
    ;
    ;НА ВХОДЕ:
    ;	R1	- АДРЕС СТРОКИ
    ;
    ;НА ВЫХОДЕ:
    ;	R0	- РЕЗУЛЬТАТ В RADIX-50
    ;	R1	- НАЧАЛЬНЫЙ АДРЕС + 3
    
    ;CALL	$FNASC	- ПРЕОБРАЗОВАНИЯ ИМЕНИ ФАЙЛА В ASCII
    ;
    ;НА ВХОДЕ:
    ;	R0	- АДРЕС БЛОКА ИМЕНИ ФАЙЛА RT-11
    ;	R1	- АДРЕС БУФЕРА
    ;
    ;НА ВЫХОДЕ:
    ;	R1	- СДРЕС СЛЕДУЮЩЕГО БАЙТА ЗА ПОЛУЧЕННОЙ СТРОКОЙ
    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. Этот пользователь поблагодарил form за это полезное сообщение:

    Oleg N. Cher (16.05.2020)

  3. #1312
    Master Аватар для Manwe
    Регистрация
    06.12.2017
    Адрес
    г. Москва
    Сообщений
    788
    Спасибо Благодарностей отдано 
    60
    Спасибо Благодарностей получено 
    154
    Поблагодарили
    119 сообщений
    Mentioned
    4 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    form, позвольте вопрос к Вам, как к гуру RT-11.
    Я правильно распознал способ выделения памяти под переменные в программе для RT-11? Вот здесь описал: https://zx-pk.ru/threads/11381-napis...=1#post1064763
    Manwe/SandS

  4. #1313
    Guru
    Регистрация
    30.11.2015
    Адрес
    г. Самара
    Сообщений
    3,330
    Спасибо Благодарностей отдано 
    71
    Спасибо Благодарностей получено 
    134
    Поблагодарили
    112 сообщений
    Mentioned
    4 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Manwe Посмотреть сообщение
    Я правильно распознал способ выделения памяти под переменные в программе для RT-11?
    .SETTOP

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

    https://zx-pk.ru/threads/15587-progr...l=1#post923105

  5. #1314
    Guru Аватар для form
    Регистрация
    27.05.2009
    Адрес
    СССР, Новосибирск
    Сообщений
    5,501
    Спасибо Благодарностей отдано 
    2
    Спасибо Благодарностей получено 
    92
    Поблагодарили
    77 сообщений
    Mentioned
    13 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Manwe Посмотреть сообщение
    Я правильно распознал способ выделения памяти под переменные в программе для RT-11?
    В RT-11 используется .SETTOP для запроса верхнего адреса который нужен программе.
    Результатом выполнения будет установка максимально возможного для использования адреса (не выше запрошенного).
    Код:
    	.SETTOP	#20000		;ЗАПРАШИВАЕМ ВЕРХНИЙ АДРЕС 20000
    	.SETTOP	#-2		;ЗАПРАШИВАЕМ МАКСИМАЛЬНЫЙ ВОЗМОЖНЫЙ ВЕРХНИЙ АДРЕС
    После вызова R0 будет содержать самый верхний адрес, доступный программе.

    А вот нижний доступный свободный адрес (сразу после кода программы) как раз стоит брать из @#50 (прибавив к нему 2) или с помощью директивы .LIMIT (так же прибавив 2).

    Очень частая ошибка:
    Код:
    ...
    END:						;КОНЕЦ ПРОГРАММЫ
    	.END	START
    Это неправильный способ определения конца программы (если программа состоит из нескольких модулей или использует библиотеки, в этом мести может оказаться код следующего модуля).

    Если хочется динамически выделять блоки памати из свободного места после программы, лучше всего использовать готовые вызовы ULBLIB (выше есть описание подпрограмм).

    Есть там так же вариант с виртуальной памятью на диске, но я его еще не смотрел.

    Ну и перед выходом из программы стоит возвращать старый верхзний адрес макрокомандой .SETTOP (или вовсе сделать .SETTOP #0). Это поможет избежать лишней дисковой активности.
    Последний раз редактировалось form; 23.05.2020 в 14:06.
    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. #1315
    Master Аватар для Manwe
    Регистрация
    06.12.2017
    Адрес
    г. Москва
    Сообщений
    788
    Спасибо Благодарностей отдано 
    60
    Спасибо Благодарностей получено 
    154
    Поблагодарили
    119 сообщений
    Mentioned
    4 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Hunta Посмотреть сообщение
    .SETTOP
    в документации написано, что .SETTOP для изменения верхнего адреса программы, прочитанного при её загрузке. Мне менять на ходу не нужно, я хочу один раз указать в заголовке программы.
    Manwe/SandS

  7. #1316
    Guru Аватар для form
    Регистрация
    27.05.2009
    Адрес
    СССР, Новосибирск
    Сообщений
    5,501
    Спасибо Благодарностей отдано 
    2
    Спасибо Благодарностей получено 
    92
    Поблагодарили
    77 сообщений
    Mentioned
    13 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Manwe Посмотреть сообщение
    Мне менять на ходу не нужно, я хочу один раз указать в заголовке программы.
    Тогда нужно просто при сборке программы указать LINK/TOP:addr и не мучиться

    Можно конечно и с помощью .ASECT прописать явно - это тоже дозволяется.
    Это экономит дисковое место немного, но не факт что программа окажется совместимой со всеми вариантами системы.
    Последний раз редактировалось form; 23.05.2020 в 14:14.
    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

  8. #1317
    Guru
    Регистрация
    30.11.2015
    Адрес
    г. Самара
    Сообщений
    3,330
    Спасибо Благодарностей отдано 
    71
    Спасибо Благодарностей получено 
    134
    Поблагодарили
    112 сообщений
    Mentioned
    4 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от form Посмотреть сообщение
    LINK/TOP:addr
    У меня это приводило к тому, что увеличивался до соотвествующего размера .sav файл
    .SETTOP позволяет обойтись без этого

  9. #1318
    Guru Аватар для form
    Регистрация
    27.05.2009
    Адрес
    СССР, Новосибирск
    Сообщений
    5,501
    Спасибо Благодарностей отдано 
    2
    Спасибо Благодарностей получено 
    92
    Поблагодарили
    77 сообщений
    Mentioned
    13 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Hunta Посмотреть сообщение
    У меня это приводило к тому, что увеличивался до соотвествующего размера .sav файл
    .SETTOP позволяет обойтись без этого
    Да, это расширит файл.
    Если через .ASECT прописать - файл не расширится, но при загрузке верхний адрес будет проверяться на доступность для программы. Это этакий заранее сделанный .SETTOP получается. Но вот как оно будет работать в mapped системах, TSX и RSTS - черт его знает
    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

  10. #1319
    Master Аватар для Manwe
    Регистрация
    06.12.2017
    Адрес
    г. Москва
    Сообщений
    788
    Спасибо Благодарностей отдано 
    60
    Спасибо Благодарностей получено 
    154
    Поблагодарили
    119 сообщений
    Mentioned
    4 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от form Посмотреть сообщение
    нижний доступный свободный адрес (сразу после кода программы) как раз стоит брать из @#50 (прибавив к нему 2)
    Вот я и хочу с помощью 50-ой ячейки в заголовке sav-файла добавить к фактическому концу программы ещё немножко под переменные, чтобы это стало «нижним доступным свободным адресом». Можно, конечно, нулей записать в конец с помощью .BLKW, но это расточительно в смысле места на диске.

    Если хочется динамически выделять блоки памати из свободного места после программы
    Не-не, только статически один раз при загрузке программы.
    Исхожу из описания процесса загрузки sav-файла в докумендации DEC: «KMON sets $USRTO (location 50) to the top of the user program». То есть что я прописал в 50-ю ячейку sav-файла, то и будет. Если умещается в память, то начинается загрузка блоков из тела программы согласно битовой карте («The monitor uses this information when it loads the program»).

    Цитата Сообщение от form Посмотреть сообщение
    Если через .ASECT прописать - файл не расширится, но при загрузке верхний адрес будет проверяться на доступность для программы.
    Во, это круто. То, что надо Спасибо.
    Manwe/SandS

  11. #1320
    Guru
    Регистрация
    30.11.2015
    Адрес
    г. Самара
    Сообщений
    3,330
    Спасибо Благодарностей отдано 
    71
    Спасибо Благодарностей получено 
    134
    Поблагодарили
    112 сообщений
    Mentioned
    4 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от form Посмотреть сообщение
    Это этакий заранее сделанный .SETTOP получается. Но вот как оно будет работать в mapped системах
    Не проверял, но пошёл по пути, который точно работает, позволяет выделять место в конце программы для рабочих данных, не увеличивая размер .sav файла и при этом адреса определяются статически - то есть можно не заморачиваться на динамическое выделение памяти и хранение адреса блока где-либо.

Страница 132 из 135 ПерваяПервая ... 128129130131132133134135 ПоследняяПоследняя

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

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

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

Похожие темы

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

Ваши права

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