User Tag List

Страница 3 из 122 ПерваяПервая 1234567 ... ПоследняяПоследняя
Показано с 21 по 30 из 1564

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

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

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

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

    По умолчанию

    Цитата Сообщение от Titus Посмотреть сообщение
    Подскажите, как правильно по системному запретить передачу кодов клавиш от клавиатуры на терминал, но при этом самому эти коды получать?
    Приведу пример: я вывожу какую-то информацию на экран, после чего спрашиваю "Continue?". Тут человек должен нажать любую клавишу, и программа продолжится. Если делать опрос клавиш через EMT 340, то коды клавиш отображаются на экране, а мне этого не надо. Если же делать через чтение данных напрямую из канала 0 (канал клавиатуры), то символы все равно отправляются в монитор и потом печатаются. Т.е. какая-то должна быть системная функция, запрещающая выводить на терминал коды приходящих клавиш, но я ее не знаю.
    Для этого надо установить бит TTSPC$ (12й) в $JSW (44).

    к примеру:

    Код:
            .MCALL  .TTYIN,.PRINT,.EXIT
    
    $JSW    =       44
    TTSPC$  =       10000
    
    TEST:   BIS     #TTSPC$,@#$JSW
            .PRINT  #PROMPT
            .TTYIN
            .EXIT
    
    PROMPT: .ASCII  /--->/<200>
    печатает подсказку, ждет нажатия клавиши, выходит

    ---------- Post added at 17:46 ---------- Previous post was at 17:44 ----------

    Другой вариант - запретить прерывания от клавиатуры и работать напрямую с регистрами, но этот вариант несовместим с виртуальными программами и не будет работать в системах с поддержкой многотерминальности.

    ---------- Post added at 17:57 ---------- Previous post was at 17:46 ----------

    Еще дополнение - иногда полезен бит TCBIT$ (6й) - при его установке .TTINR (EMT 340) не останавливается в ожидании символа, а проходит дальше с установленным битом C если ничего не нажато.
    Последний раз редактировалось form; 13.04.2011 в 15:00.
    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. #1
    С любовью к вам, Yandex.Direct
    Размещение рекламы на форуме способствует его дальнейшему развитию

  3. #2

    Регистрация
    08.10.2005
    Адрес
    Москва
    Сообщений
    14,374
    Спасибо Благодарностей отдано 
    1,695
    Спасибо Благодарностей получено 
    2,214
    Поблагодарили
    868 сообщений
    Mentioned
    69 Post(s)
    Tagged
    1 Thread(s)

    По умолчанию

    Цитата Сообщение от form Посмотреть сообщение
    Для этого надо установить бит TTSPC$ (12й) в $JSW (44).
    Спасибо! Буду сейчас пробовать.
    А есть документация по этим битам?

    ---------- Post added at 15:49 ---------- Previous post was at 15:20 ----------

    Сделал вот так:

    Код:
    		.Print	#NextPage		;Печатаем сообщение "Next page?"
    
    		.Print	#KeyON			;Включить клавиатуру
    
      		 BIS     #TTSPC$,@#$JSW		;Запрет отображения символов на экране
      		 .TTYIN				;Ожидание нажатия клавиши
      		 CMP	R0,#13			;Если код = 13 (Возврат каретки),
      		 BNE	6$			;то ожидаем еще один код = 10 (перевод строки)
      		 .TTYIN				;	 
    6$:			 
    		.Print	#KeyOFF			;Отключить клавиатуру
    		
    		.Print	#NextLine		;Переходим на следующую строку
    
    ...
    
    NextPage:	.ASCII	"Next page?"<128>
    NextLine:	.ASCII	<13><10><128>
    KeyOFF:		.ASCII	<27><91><50><104><128>
    KeyON:		.ASCII	<27><91><50><108><128>
    Отключение клавиатуры ESCAPE-последовательностью делаю для того, чтобы во время работы основной программы не пришло прерывание от канала клавиатуры и не сбило мне измерения.
    Последний раз редактировалось Titus; 13.04.2011 в 16:12.

  4. #3

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

    По умолчанию

    Цитата Сообщение от Titus Посмотреть сообщение
    Спасибо! Буду сейчас пробовать.
    А есть документация по этим битам?

    ---------- Post added at 15:49 ---------- Previous post was at 15:20 ----------

    Сделал вот так:

    Код:
    		.Print	#NextPage		;Печатаем сообщение "Next page?"
    
    		.Print	#KeyON			;Включить клавиатуру
    
      		 BIS     #TTSPC$,@#$JSW		;Запрет отображения символов на экране
      		 .TTYIN				;Ожидание нажатия клавиши
      		 CMP	R0,#13			;Если код = 13 (Возврат каретки),
      		 BNE	6$			;то ожидаем еще один код = 10 (перевод строки)
      		 .TTYIN				;	 
    6$:			 
    		.Print	#KeyOFF			;Отключить клавиатуру
    		
    		.Print	#NextLine		;Переходим на следующую строку
    
    ...
    
    NextPage:	.ASCII	"Next page?"<128>
    NextLine:	.ASCII	<13><10><128>
    KeyOFF:		.ASCII	<27><91><50><104><128>
    KeyON:		.ASCII	<27><91><50><108><128>
    Отключение клавиатуры ESCAPE-последовательностью делаю для того, чтобы во время работы основной программы не пришло прерывание от канала клавиатуры и не сбило мне измерения.
    Документация есть на pdp-11.nsk.ru кажется System Internals называется для RT-11 V5.6 PDFы настоящие - не сканы.

    Замечу, что 27 это не ESC (равно как и 13 - не CR), а 128 - вообще ошибка - по умолчанию циферки восьмеричные если в конце нет точки. Если хочется по умолчанию десятичные сделать - нужно добавить в начале директиву .RADIX 10, но лучше все-таки исходить из стандартных умолчаний

    Также код клавиши лучше сравнивать байтово - на всякий случай
    Последний раз редактировалось form; 13.04.2011 в 16:30.
    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. #4

    Регистрация
    08.10.2005
    Адрес
    Москва
    Сообщений
    14,374
    Спасибо Благодарностей отдано 
    1,695
    Спасибо Благодарностей получено 
    2,214
    Поблагодарили
    868 сообщений
    Mentioned
    69 Post(s)
    Tagged
    1 Thread(s)

    По умолчанию

    Цитата Сообщение от form Посмотреть сообщение
    Замечу, что 27 это не ESC (равно как и 13 - не CR), а 128 - вообще ошибка - по умолчанию циферки восьмеричные если в конце нет точки. Если хочется по умолчанию десятичные сделать - нужно добавить в начале директиву .RADIX 10, но лучше все-таки исходить из стандартных умолчаний

    Также код клавиши лучше сравнивать байтово - на всякий случай
    У меня в начале исходника стоит .RADIX 10, т.к. восмеричная система - это не для меня. Она ближе PDP-шникам. А я привык к десятичной и шестнадцатиричной.
    А на счет байтов - согласен.

  6. #5

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

    По умолчанию

    form, Спасибо)
    УКНЦ+FDD+HDD; ZX-NEXT; Scorpion 256k; ZXM Phoenix+TurboSoundFM; Spectrum 48k; ZX Hobbit; Radio 86RK

  7. #6

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

    По умолчанию

    Всегда пожалуйста
    Собраться бы с силами да рассортировать все, что есть и каталогизировать...
    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. #7

    Регистрация
    05.03.2010
    Адрес
    Санкт-Петербург
    Сообщений
    781
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    3
    Поблагодарили
    3 сообщений
    Mentioned
    2 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Вот Си если еще нужен, диск загрузочный.
    Вложения Вложения

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

    hobot(08.04.2021)

  9. #8

    Регистрация
    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

  10. #9

    Регистрация
    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 ).

  11. #10

    Регистрация
    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

Страница 3 из 122 ПерваяПервая 1234567 ... ПоследняяПоследняя

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

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

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

Ваши права

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