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

User Tag List

Страница 23 из 24 ПерваяПервая ... 192021222324 ПоследняяПоследняя
Показано с 221 по 230 из 237

Тема: PASCAL + MACRO11 (УКНЦ-ДВК).

  1. #221
    Master
    Регистрация
    22.03.2018
    Адрес
    г. Усть-Каменогорск, Казахстан
    Сообщений
    900
    Спасибо Благодарностей отдано 
    46
    Спасибо Благодарностей получено 
    78
    Поблагодарили
    66 сообщений
    Mentioned
    14 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Oleg N. Cher Посмотреть сообщение
    Но если граф. редактор S_V_B умеет импортировать и экспортировать в octal, придётся в octal.
    На самом деле спрайты в HEX нагляднее, в восьмеричной сделал чтобы "староверы" не возмущались. Хотя тебе какая разница ты же не вручную спрайты правишь, можно в пять сек хоть в троичной сохранить Этож статичные данные, вставил и забыл.
    БK 0010-01, БК 11М, БК11М+,МС 0511 (УКНЦ)х2, Commodore 64, AMIGA 500, ZX EVO

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

    Oleg N. Cher (17.03.2020)

  3. #222
    Оператор ДВК Аватар для hobot
    Регистрация
    30.08.2011
    Адрес
    Зеленоград
    Сообщений
    5,905
    Спасибо Благодарностей отдано 
    1,202
    Спасибо Благодарностей получено 
    100
    Поблагодарили
    88 сообщений
    Mentioned
    5 Post(s)
    Tagged
    0 Thread(s)

    Question SCAN коды клавиатуры УК-НЦ для использования в программах на Паскале.

    SCAN коды клавиатуры УК-НЦ для использования в программах на Паскале.

    Да! Хочется повысить эффективность опроса клавиатуры и иметь возможность использовать
    в программах на Паскале системные "управляющие" кнопки. Есть вот такой исходник от
    Alex_K (С) Scan-code of keys, "Alphaprog", 1993, который на выходе сканкоды выдаёт на экран :

    Код:
    	.TITLE	SCAN
    	.IDENT	/V01.00/
    	.MCALL	.PRINT,.EXIT
    BLK:	.WORD	0,32,0,0,0
    BLK0:	.WORD	BLK,-1
    CHAN2:	MOV	#BLK0,R0
    	MOV	#5,R1
    	BR	2$
    1$:	MOVB	(R0)+,@#176676
    2$:	TSTB	@#176674
    	BPL	2$
    	SOB	R1,1$
    	RETURN
    START:	MOV	#777,AA
    	MOVB	#1,BLK+1
    	MOV	#<$END-$BEGIN>,BLK+6
    	CALL	CHAN2
    	TSTB	BLK
    	BEQ	1$
    	.PRINT	#WARN
    	.EXIT
    1$:	MOVB	#20,BLK+1
    	MOV	#$BEGIN,BLK+6
    	MOV	#<$END-$BEGIN>,BLK+10
    	CALL	CHAN2
    	MOVB	#30,BLK+1
    	CALL	CHAN2
    AA:	BR	.
    	MOVB	#2,BLK+1
    	CALL	CHAN2
    	.EXIT
    $BEGIN:	MOV	PC,R1
    	ADD	#HEAD-.,R1
    	EMT	46
    	MTPS	#200
    	CLR	@#177700
    	CALL	@#104054
    	MTPS	#0
    1$:	TSTB	@#177700
    	BPL	1$
    	MOV	@#177702,R0
    	MOV	R0,-(SP)
    	MOV	#3,R1
    	CLR	R2
    	MOV	PC,R3
    	ADD	#NUM-.,R3
    	BR	3$
    2$:	CLR	R2
    	ROLB	R0
    	ROLB	R2
    3$:	ROLB	R0
    	ROLB	R2
    	ROLB	R0
    	ROLB	R2
    	ADD	#60,R2
    	MOVB	R2,(R3)+
    	SOB	R1,2$
    	MOV	PC,R1
    	ADD	#NUM-.,R1
    	EMT	46
    	MOV	(SP)+,R0
    	CMPB	R0,#204
    	BNE	1$
    	MOV	PC,R1
    	ADD	#$END$-.,R1
    	EMT	46
    	BIS	#100,@#177700
    	MOV	#AA/2,@#177010
    	MOV	#NOP,@#177014
    	RETURN
    HEAD:	.BYTE	14,33,246,62,14
    	.ASCIZ	/Scan-code of keys, "Alphaprog", 1993/<15><12>
    NUM:	.ASCIZ	/000 /
    $END$:	.BYTE	33,246,61,15,12,0
    	.EVEN
    $END:
    WARN:	.ASCIZ	/?SCAN-F-No memory for load/
    	.END	START
    Вопрос к асм-программистам: возможно ли его переписать так, что бы сканкоды были
    значением внешней функции для Паскаля или значением входящей переменной
    внешней процедуры? И возможно ли в принципе?
    Если для решения задачи какую-то часть кода нужно исполнять в осн. исходнике
    - орг. вставку на асм. - главное, что бы заработало?
    ================================================== =====
    Архив программ для УК-НЦ, ДВК и БК.

    Ищу игру "СТРАНА МОНСТРОВ" [monstr.sav] для ДВК.

  4. #223
    Guru
    Регистрация
    08.10.2005
    Адрес
    Москва
    Сообщений
    11,393
    Спасибо Благодарностей отдано 
    260
    Спасибо Благодарностей получено 
    373
    Поблагодарили
    210 сообщений
    Mentioned
    21 Post(s)
    Tagged
    1 Thread(s)

    По умолчанию

    Цитата Сообщение от Oleg N. Cher Посмотреть сообщение
    Я с вас удивляюсь, господа. Восьмеричная система счисления вообще никак не зашита в проц PDP-11. Это вопрос привычки.
    Совершенно согласен.

    Я написал несколько эмуляторов PDP-11 - подобных машин (УКНЦ, Союз-Неон, 0515 и т.д.), но восьмеричной системой не пользуюсь и не думаю в ней. Только в шестнадцатиричной и десятичной.
    И все прекрасно)

  5. #224
    Veteran Аватар для nzeemin
    Регистрация
    20.12.2005
    Адрес
    Москва
    Сообщений
    1,310
    Спасибо Благодарностей отдано 
    204
    Спасибо Благодарностей получено 
    214
    Поблагодарили
    102 сообщений
    Mentioned
    4 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от hobot Посмотреть сообщение
    Вопрос к асм-программистам: возможно ли его переписать так, что бы сканкоды были
    значением внешней функции для Паскаля или значением входящей переменной
    внешней процедуры? И возможно ли в принципе?
    Если для решения задачи какую-то часть кода нужно исполнять в осн. исходнике
    - орг. вставку на асм. - главное, что бы заработало?
    Ответ, очевидно: "возможно. переписывайте."

    У себя пользуюсь вот этими двумя вызовами, думаю их вполне можно приспособить для вызова из Паскаля:
    (осторожно, используются 8-ричные значения 8-[ ]
    Код:
    ; Подпрограмма: Ожидание символа с клавиатуры: R1 = полученный символ
    WTKEY:	TSTB	@#177560
    	BPL	WTKEY
    	CLR	R1
    	MOVB	@#177562, R1	; символ в R1
    	CMPB	R1, #33
    	BNE	RETN
    ESCKEY:	TSTB	@#177560
    	BPL	ESCKEY
    	MOVB	@#177562, R1	; символ в R1
    	BIS	#15400,R1	; #33 в верхний байт
    RETN:	RETURN
    ; Подпрограмма: Получение символа с клавиатуры: флаг Z=0 = есть символ, R1 = полученный символ
    GETKEY:	TSTB	@#177560	; есть символ?
    	BPL	10$		; нет символа => выходим
    	MOVB	@#177562, R1	; символ в R1
    	CMPB	R1, #33		; Esc ?
    	BEQ	ESCKEY		
    	RETURN
    10$:	CLR	R1		; возвращаем пустой код клавиши
    	RETURN
    Последний раз редактировалось nzeemin; 26.03.2020 в 12:08.

  6. Эти 2 пользователя(ей) поблагодарили nzeemin за это полезное сообщение:

    hobot (27.03.2020), Oleg N. Cher (26.03.2020)

  7. #225
    Veteran Аватар для Oleg N. Cher
    Регистрация
    24.08.2007
    Адрес
    Днепропетровская обл.
    Сообщений
    1,065
    Спасибо Благодарностей отдано 
    304
    Спасибо Благодарностей получено 
    21
    Поблагодарили
    16 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    А можно спросить: зачем нужно делать CLR R1 перед MOVB @#177562, R1 ?

    Я не стебаюсь, если что. Пытаюсь разобраться в местном асме. Вот здесь такая чистка регистра не делается:

    Код:
    TSTB @#177560           ; готовность есть?
    BPL CY1                 ; символ не готов!
    INSYM: MOVB @#177562,R0 ; прочитать символ

  8. #226
    Veteran Аватар для nzeemin
    Регистрация
    20.12.2005
    Адрес
    Москва
    Сообщений
    1,310
    Спасибо Благодарностей отдано 
    204
    Спасибо Благодарностей получено 
    214
    Поблагодарили
    102 сообщений
    Mentioned
    4 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Oleg N. Cher, вероятно он действительно лишний, остаток какого-то копипаста.

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

  10. #227
    Veteran Аватар для Oleg N. Cher
    Регистрация
    24.08.2007
    Адрес
    Днепропетровская обл.
    Сообщений
    1,065
    Спасибо Благодарностей отдано 
    304
    Спасибо Благодарностей получено 
    21
    Поблагодарили
    16 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Если BIS #15400,R1 это действительно аналог операции OR на других процессорах и устанавливает только указанные биты, а прочие игнорирует, тогда CLR R1 всё-таки нужна - она обнуляет старший байт R1.

    Но тогда подобная же операция нужна и в подпрограмме GETKEY. Смотрите. В GETKEY после MOVB @#^O177562,R1 старший байт R1 неопределён, и если полученный код Esc, то BIS просто наложит на него маску ^O15400 с неопределённым результатом. А если полученный код не Esc, то будет просто возврат с неопределённым же старшим байтом. Я всё правильно описал? Т.е. если бы старший байт был незначащий, тогда ладно. Но он ведь может иметь значащий код ^O33.

  11. #228
    Veteran Аватар для nzeemin
    Регистрация
    20.12.2005
    Адрес
    Москва
    Сообщений
    1,310
    Спасибо Благодарностей отдано 
    204
    Спасибо Благодарностей получено 
    214
    Поблагодарили
    102 сообщений
    Mentioned
    4 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    MOVB не так работает. он возьмёт старший бит от байта из источника, и раскопирует его вверх. Т.е. в верхнем байте будет либо 0, либо 255.
    Может это как раз и осталось от времён когда я этого не понимал :-)

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

    Oleg N. Cher (26.03.2020)

  13. #229
    Veteran Аватар для Oleg N. Cher
    Регистрация
    24.08.2007
    Адрес
    Днепропетровская обл.
    Сообщений
    1,065
    Спасибо Благодарностей отдано 
    304
    Спасибо Благодарностей получено 
    21
    Поблагодарили
    16 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Нет ли идеи, почему вот такой код может зациклиться? И под отладчиком тоже.

    Код:
    WTKEY$: TSTB    @#^O177560         ; Ready?
            BPL     WTKEY$             ; No!
    Ведь он же не под ПП работает?



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

    Да, кнопки вовсю жму, эхо-печать работает. Но из самой функции WaitKey выхода нет:
    Код:
    FUNCTION WaitKey : INTEGER; EXTERNAL;
    
    VAR
      code: INTEGER;
    
    BEGIN
      WriteLn('Ready>');
      REPEAT
        code := WaitKey;
        WriteLn('"', CHR(code), '"', code)
      UNTIL code = 32
    END.

  14. #230
    Guru
    Регистрация
    07.10.2007
    Адрес
    п.Пудость Гатчинского р-на Лен.обл.
    Сообщений
    2,340
    Спасибо Благодарностей отдано 
    71
    Спасибо Благодарностей получено 
    141
    Поблагодарили
    90 сообщений
    Mentioned
    9 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Oleg N. Cher Посмотреть сообщение
    Нет ли идеи, почему вот такой код может зациклиться? И под отладчиком тоже.
    Если хотите работать с регистрами канала К0, то необходимо сбросить бит разрешения прерывания в регистре 177560. А так возникает прерывание раньше, чем вы узнаете об установке бита готовности. А прерывание обрабатывает операционная система, она же и выводит эхо-печать. Перед выходом из программы бит разрешения прерывания надо установить.
    Соответственно BIC #^O100,@#^O177560 - сброс бита разрешения прерываний, а BIS #^O100,@#^O177560 - установка бита разрешения прерываний.
    Но всё это хорошо работает в однотерминальном SJ-мониторе, в многотерминальной системе могут быть проблемы.

  15. Эти 2 пользователя(ей) поблагодарили Alex_K за это полезное сообщение:

    nzeemin (26.03.2020), Oleg N. Cher (26.03.2020)

Страница 23 из 24 ПерваяПервая ... 192021222324 ПоследняяПоследняя

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

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

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

Похожие темы

  1. "Исходники" Turbo Pascal нужны кому ?
    от esl в разделе Программирование
    Ответов: 2
    Последнее: 19.10.2018, 11:33
  2. Продам МС5310 блок дисководов к УКНЦ+КМД УКНЦ
    от Mad Killer/PG в разделе Барахолка (архив)
    Ответов: 7
    Последнее: 19.03.2012, 11:27
  3. в розыске дисковая версия Pascal.
    от goblinish в разделе Программирование
    Ответов: 18
    Последнее: 16.08.2011, 16:30
  4. Pascal
    от Andrew771 в разделе Программирование
    Ответов: 22
    Последнее: 24.05.2011, 21:20
  5. Скопировать/вставить из/в HiSoft Pascal в эмуляторе
    от kit в разделе Программирование
    Ответов: 1
    Последнее: 05.02.2010, 15:35

Метки этой темы

Ваши права

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