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

User Tag List

Страница 4 из 155 ПерваяПервая 12345678 ... ПоследняяПоследняя
Показано с 31 по 40 из 1550

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

  1. #31
    Guru
    Регистрация
    08.10.2005
    Адрес
    Москва
    Сообщений
    13,550
    Спасибо Благодарностей отдано 
    1,213
    Спасибо Благодарностей получено 
    1,748
    Поблагодарили
    680 сообщений
    Mentioned
    67 Post(s)
    Tagged
    1 Thread(s)

    По умолчанию

    На счет программирования на асме под MACRO11.
    Есть ли в нем обозначение для представления шестнадцатиричных чисел? Для восмиричных нашел ^O перед числом, а для шестнадцатиричных не нашел. Radix не предлагать.

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

  3. #32
    Guru
    Регистрация
    11.09.2009
    Адрес
    Москва
    Сообщений
    4,777
    Спасибо Благодарностей отдано 
    2
    Спасибо Благодарностей получено 
    122
    Поблагодарили
    61 сообщений
    Mentioned
    16 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Titus Посмотреть сообщение
    На счет программирования на асме под MACRO11.
    Есть ли в нем обозначение для представления шестнадцатиричных чисел? Для восмиричных нашел ^O перед числом, а для шестнадцатиричных не нашел. Radix не предлагать.
    ^B - Binary
    ^C - Complement
    ^D - Decimal
    ^F - Floating
    ^O - Octal
    ^R - Radix50

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

    По умолчанию

    Цитата Сообщение от Patron Посмотреть сообщение
    Насчёт ассемблерных вставок - это вряд ли, а вот использование каких-то подпрограмм для доступа к ячейкам, типа PUT(adr,val) и GET(adr) - то почему бы и нет. Нужно только найти правильные имена в описании системной библиотеки фортрана ( SYSLIB ).
    Можно использовать подпрограммы/функции на ассемблере. Принцип такой: создается файл .MAC с нужными подпрограммами, имя подпрограммы совпадает с меткой ассемблера (должна быть объявлена глобальной). На входе R5 указывает на вектор в котором первое слово - количество переданных аргументов, а следующие слова - адреса передаваемых параметров или -1 (177777 восьм.) если параметр пропущен. Если это функция, возвращать параметры можно через R0 (R0:R1 для двухсловных значений). Все регистры можно менять. Дополнительно остановлюсь на том, что в фортране параметры подпрограмм всегда передаются ссылкой в отличие от C или паскаля, если делается скажем CALL XXX(1), а внутри подпрограммы SUBROUTINE XXX(I) делается присвоение вида I = 3, то при следующем попадании на этот же вызов, в качестве аргумента будет передано 3.

    Пример:

    Фортран:

    Код:
            J = IFUFL(1, 2, , 'TEXT', , I)
    Ассемблер:

    Код:
    IFUFL::
    ;
    ; В ЭТОМ МЕСТЕ:
    ;   (R5) - 6 (ЧИСЛО АРГУМЕНТОВ)
    ;  2(R5) - ССЫЛКА НА АРГУМЕНТ "1"
    ;  4(R5) - ССЫЛКА НА АРГУМЕНТ "2"
    ;  6(R5) - -1 (АРГУМЕНТ ПРОПУЩЕН)
    ; 10(R5) - ССЫЛКА НА ASCIZ СТРОКУ 'TEXT'
    ; 12(R5) - -1 (АРГУМЕНТ ПРОПУЩЕН)
    ; 14(R5) - ССЫЛКА НА АРГУМЕНТ "I"
    ;
    ...
            MOV     #123456,R0      ;ВОЗВРАЩАЕМОЕ ЗНАЧЕНИЕ
            RETURN                  ;ВОЗВРАТ ПО RTS PC
    Живой пример:

    Код:
    	PROGRAM TEST
    	CALL TXT('LALALA','XAXAXA',,'BUBUBU')
    	CALL EXIT
    	END
    
    
    
    	.TITLE	TXT -- ПЕЧАТЬ ТЕКСТОВЫХ СТРОК
    	.MCALL	.PRINT
    
    TXT::	MOV	(R5)+,R1	;ЧИСЛО АРГУМЕНТОВ
    	BEQ	30$		;EQ - НЕТ АРГУМЕНТОВ
    10$:	MOV	(R5)+,R0	;АДРЕС ОЧЕРЕДНОГО АРГУМЕНТА
    	CMP	#-1,R0		;ЕСЛИ -1 - АРГУМЕНТ ПРОПУЩЕН
    	BEQ	20$		;...ПРОПУСКАЕМ
    	.PRINT			;ПЕЧАТАЕМ СТРОКУ
    20$:	SOB	R1,10$		;ЦИКЛИМСЯ ПОКА ЕСТЬ АРГУМЕНТЫ
    30$:	RETURN			;ВОЗВРАЩАЕМ УПРАВЛЕНИЕ
    
    	.END
    
    
    .SET FOR F77
    
    .FORT F
    
    .MAC A
    
    .LIN F,A,SY:FORLIB/LIB
    
    .RUN F
    LALALA
    XAXAXA
    BUBUBU
    
    .
    Последний раз редактировалось form; 21.04.2011 в 10: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

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

    По умолчанию

    Еще пример - использование прерываний в фортрановской программе.
    Коментарии в ассемблерном коде.

    В данном примере прога тупо крутится в цикле, печатая всякую фигню, при нажатии CTRL/C выходит.
    Последний раз редактировалось form; 07.06.2014 в 18: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

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

    По умолчанию

    Цитата Сообщение от Titus Посмотреть сообщение
    На счет программирования на асме под MACRO11.
    Есть ли в нем обозначение для представления шестнадцатиричных чисел? Для восмиричных нашел ^O перед числом, а для шестнадцатиричных не нашел. Radix не предлагать.
    ^X

    ---------- Post added at 11:36 ---------- Previous post was at 11:07 ----------

    Цитата Сообщение от Voxel Посмотреть сообщение
    Может кто знает. Решил познакомится с Фортраном. Пролистал книгу по нему (именно по 77 версии). В общем то оказался тот же Бейсик, ни чего в нем сложного нет.
    Возникли такие вопросы:
    1. Толи я пропустил, то ли не уловил. Я так понимаю Фортран транслируемый язык. То есть готовую программу нельзя откомпилировать в запускаемый файл?

    2. Не нашел в книге, возможно это не реализовано. Может ли Фортран работать с портами и памятью? Можно ли делать вставки на ассемблере?
    Фортран только транслятор (или компилятор - в данном случае это одно и то же). Бейсики есть и трансляторы (для RT-11 не видел) и интерпретаторы.
    Процедура работы с фортрановской программой от исходника до готовой програмы такая (на примере того же RT-11): компиляция (команда FORTRAN), сборка (команда LINK). К примеру:
    Код:
    .FORT FORPRG !КОМПИЛЯЦИЯ ПРОГРАММЫ
    
    .LIN FORPRG/LINK:SY:FORLIB !СБОРКА ПРОГРАММЫ
    
    .!ИЛИ ОДНОЙ КОМАНДОЙ:
    
    .EXE FORPRG/LINK:SY:FORLIB !КОМПИЛЯЦИЯ, СБОРКА, ЗАПУСК
    
    .EXE FORPRG/NORU.... !АНАЛОГИЧНО НО БЕЗ ЗАПУСКА
    Здесь мы при сборке указываем библиотеку фортрановских подпрограмм.
    Библиотека обычно называется FORLIB, но для F77 может называться F77OTS (обычно используется если в системе одновмеренно есть и F77 и FIV).

    В RT-11 версий 5.6 и 5.7 компилятор фортрана для команды FORTRAN выбирается командой SET FORTRA F77 или SET FORTRA FORTRA.

    Сложного в фортране действительно ничего нет, но надо помнить о некоторых особенностях языка (некоторые из них описаны в прошлых письмах). Типичные ошибки тех, кто привык к C или паскалю:

    CALL SUBR(1) - Многие думают, что это вызов подпрограммы SUBR с аргументом 1. Для фортрана это верно только если подпрограмма SUBR не меняет переменную, используемую для передачи параметра. Если меняет - изменение будет действовать при следующем вызове из этого же места.

    2. FORMAT('TEXT') - данный формат не напечатает строчку "TEXT" - первый символ в строке используется для форматирования, к примеру:

    0 или пробел - печать с новой строки
    1 - печать с новой страницы (на терминале отрабатывает 8 переносов строки, на принтере пробрасывает бумагу до следующей страницы)
    + - печать с той же строки на которой стоим

    Также для программирования на фортране полнзно изучить описание подпрограмм системной библиотеки - там много нужного. В том числе есть подпрограммы для работы с памятью (насчет портов, на PDP-11 такого понятия отдельно нету).

    Документация на английском:

    RT-11 V5.6: System Subroutine Library Manual
    RT-11 V5.6: System Macro Library Manual
    RT-11 V5.6: System Internals Manual
    PDP-11 MACRO-11 Language Reference Manual (MACRO-11 Version 5)
    PDP-11 FORTRAN IV Language Reference Manual (FORTRAN IV Version 2.6)
    PDP-11 FORTRAN 77 Language Reference Manual (FORTRAN 77 Version 5.0)

    на русском:

    РАФОС-ПЛЮС: Системные таблицы и библиотеки. Руководство программиста.
    ФОДОС-2: Программирование периферийных устройств.
    ФОДОС-2: Ассемблер. Руководство программиста.
    ФОДОС-2: Системная макробиблиотека. Руководство программиста.
    ФОДОС-2:Монитор системы. Руководство программиста.


    ---------- Post added at 11:47 ---------- Previous post was at 11:42 ----------

    Бр-р-р! Тяжко в форуме редактировать написанное - еле управился
    Последний раз редактировалось form; 21.04.2011 в 10:20.
    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

  7. #36
    Master
    Регистрация
    22.07.2007
    Адрес
    St.Petersburg
    Сообщений
    593
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    3
    Поблагодарили
    3 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от form Посмотреть сообщение
    CALL SUBR(1) - Многие думают, что это вызов подпрограммы SUBR с аргументом 1. Для фортрана это верно только если подпрограмма SUBR не меняет переменную, используемую для передачи параметра. Если меняет - изменение будет действовать при следующем вызове из этого же места.
    Есть книжка на тему:

    http://www.kodges.ru/97371-oshibki-l...-fortrane.html

    После прочтения открываются БЕЗДНЫ ЗНАНИЯ. Начинаешь понимать, насколько глубокий и мощный язык Фортран. Но в книжке больше ориентация на ЕС-овский фортран, DEC-овская реализация может отличаться.

  8. Этот пользователь поблагодарил AlecV за это полезное сообщение:

    hobot (08.04.2021)

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

    По умолчанию

    Цитата Сообщение от AlecV Посмотреть сообщение
    Есть книжка на тему:

    http://www.kodges.ru/97371-oshibki-l...-fortrane.html

    После прочтения открываются БЕЗДНЫ ЗНАНИЯ. Начинаешь понимать, насколько глубокий и мощный язык Фортран. Но в книжке больше ориентация на ЕС-овский фортран, DEC-овская реализация может отличаться.
    Да, отличная книжка.

    Я изучал по какой-то старой толстой книге и когда пришел на DEC, оказалось, что там все также, причем в книге упоминались даже TYPE/PRINT/PUNCH

    Вот GNU F77 как-то посмотрел - там ни тебе с аргументами разобраться ни фортрановский (!) format character не поддерживается
    Про TYPE/PRINT/PUNCH говорить даже не стану - и так ясно
    Хорошо хоть WRITE(*) работает

    --
    GOD is REAL, unless declared INTEGER (правило фортрана)

    ---------- Post added at 15:08 ---------- Previous post was at 14:37 ----------

    И раз пошла такая пьянка - пример для современного gcc на обычных i386 машинах

    Код:
    #include <stdio.h>
    
    int
    main(void)
    {
            char c = 128;
    
            if (c != 128)
                    printf("Shit happens!\n");
    
            return (0);
    }
    Как можно догадаться, программа напечатает
    "Shit happens!"
    Последний раз редактировалось form; 21.04.2011 в 11:41.
    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. #38
    Guru
    Регистрация
    08.10.2005
    Адрес
    Москва
    Сообщений
    13,550
    Спасибо Благодарностей отдано 
    1,213
    Спасибо Благодарностей получено 
    1,748
    Поблагодарили
    680 сообщений
    Mentioned
    67 Post(s)
    Tagged
    1 Thread(s)

    По умолчанию

    По какому принципу происходит прерывание программы по Ctrl-C?
    Есть ли возможность при этом выполнить какую-то собственную процедурку, допустим, восстановление векторов прерываний или еще что-то, а уже потом выйти?
    И еще, в MACRO-11 очень короткая длина меток, всего 6 символов. Есть ли возможность ее увеличить?

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

    По умолчанию

    Цитата Сообщение от Titus Посмотреть сообщение
    По какому принципу происходит прерывание программы по Ctrl-C?
    Есть ли возможность при этом выполнить какую-то собственную процедурку, допустим, восстановление векторов прерываний или еще что-то, а уже потом выйти?
    И еще, в MACRO-11 очень короткая длина меток, всего 6 символов. Есть ли возможность ее увеличить?
    Там же все описано в коментариях.
    Из фортрана делается

    EXTERNAL SUB
    CALL ATTACH(SUB)

    ...

    SUBROUTINE SUB(KEY)
    ...
    END

    когда нажимается клавиша, вызывается SUB
    и получает параметром код нажатой клавиши

    Это собственно просто пример который показывает как передать адрес подпрограммы для последующего использования в ассемблер.

    В этом примере подпрограмма просто проверяет код клавиши и если CTRL/C устанавливает переменную которую проверяет основная программа, но в принципе можно было бы прямо из нее вызывать CALL DETACH и CALL EXIT.

    Увеличить больше 6 нельзя. Равно как и в фортране имена переменных/подпрограмм/общих блоков итд сделать больше 6 символов.
    То есть написать можно и больше 6, но при обработке будут использоваться только 6 из них.
    Причем символы годятся не всякие...
    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

  12. #40
    Guru
    Регистрация
    08.10.2005
    Адрес
    Москва
    Сообщений
    13,550
    Спасибо Благодарностей отдано 
    1,213
    Спасибо Благодарностей получено 
    1,748
    Поблагодарили
    680 сообщений
    Mentioned
    67 Post(s)
    Tagged
    1 Thread(s)

    По умолчанию

    Вообще-то я про асм) Я на фортране не программирую)

    ---------- Post added at 15:00 ---------- Previous post was at 14:56 ----------

    Цитата Сообщение от form Посмотреть сообщение
    ^X
    К сожалению не прокатило. MACRO на нее ругается.
    Последний раз редактировалось Titus; 21.04.2011 в 15:02.

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

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

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

Эту тему просматривают: 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

Ваши права

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