User Tag List

Показано с 1 по 10 из 1564

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

Комбинированный просмотр

Предыдущее сообщение Предыдущее сообщение   Следующее сообщение Следующее сообщение
  1. #1

    Регистрация
    18.01.2005
    Адрес
    Тихвин
    Сообщений
    509
    Спасибо Благодарностей отдано 
    3
    Спасибо Благодарностей получено 
    15
    Поблагодарили
    8 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

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

    2. Не нашел в книге, возможно это не реализовано. Может ли Фортран работать с портами и памятью? Можно ли делать вставки на ассемблере?
    УКНЦ+FDD+HDD; ZX-NEXT; Scorpion 256k; ZXM Phoenix+TurboSoundFM; Spectrum 48k; ZX Hobbit; Radio 86RK

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

  3. #2

    Регистрация
    11.09.2009
    Адрес
    Москва
    Сообщений
    4,805
    Спасибо Благодарностей отдано 
    9
    Спасибо Благодарностей получено 
    147
    Поблагодарили
    78 сообщений
    Mentioned
    16 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Voxel Посмотреть сообщение
    Я так понимаю Фортран транслируемый язык. То есть готовую программу нельзя откомпилировать в запускаемый файл?
    Слово "транслируемый" чаще всего означает то же самое, что и "компилируемый". Компилятор фортрана производит объектный код ( файл .OBJ ), который затем компонуется с библиотекой и даёт в результате исполнимый файл ( .SAV ).

    Не нашел в книге, возможно это не реализовано. Может ли Фортран работать с портами и памятью? Можно ли делать вставки на ассемблере?
    Насчёт ассемблерных вставок - это вряд ли, а вот использование каких-то подпрограмм для доступа к ячейкам, типа PUT(adr,val) и GET(adr) - то почему бы и нет. Нужно только найти правильные имена в описании системной библиотеки фортрана ( SYSLIB ).

  4. #3

    Регистрация
    27.05.2009
    Адрес
    СССР, Новосибирск
    Сообщений
    5,850
    Спасибо Благодарностей отдано 
    9
    Спасибо Благодарностей получено 
    289
    Поблагодарили
    233 сообщений
    Mentioned
    30 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

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

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

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

Ваши права

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