Ну так и есть собственно :)
Вид для печати
Так и есть, сработало. То есть - я нигде и не утверждал что всю это регистровую
математику понимаю, если речь идёт об адресе нужно ставить "косвенно".
Вот я читал мат. часть честно, но на слове вектор всегда засыпаю )))
Косвенно-непосредственно наше всё !!! )))
Ну да я пробел нажал? Он самый удобный )Код:16 .TTYIN
17 2$: MOVB R0, @KEYCODE(SP)
18 */
19 1 2 1 END;
20
21 BEGIN
22 1 1 1 WRITELN(CHR(14),'navmite l`bu` klawi{u',CHR(15));
23 2 1 1 KEYPRESS(RP);
24 3 1 1 WRITELN('uh ty!!!');
25 4 1 1 KEYPRESS(RP);
26 5 1 1 WRITELN('BYE',RP);
27 6 1 1 END.
ERRORS DETECTED: 0
FREE MEMORY: 9615 WORDS
ERRORS DETECTED: 0
FREE MEMORY: 9615 WORDS
НАЖМИТЕ ЛЮБУЮ КЛАВИШУ
uh ty!!!
BYE 32
.
Получается как-то вот так:
@ - не понадобился, но в ассемблерном листингеКод:.@MTFQ
TFQQQ1 OMSI PASCAL-1 RT11 V1.1G 19- -82 Page 1
Univ. Tasmania, Info. Sciences, Physics Bldg, Hobart 7001, site #72-12
LINE STMT LEVEL NEST SOURCE STATEMENT
1 PROGRAM TFQQQ1;
2 /*$C .MCALL .TTYIN
3 */
4 VAR
5 RP: INTEGER;
6
7 FUNCTION KEYPRESS: INTEGER;
8 VAR KEYCODE: INTEGER;
9 BEGIN
10 /*$C BIS #^O10000,@#^O44
11 .TTYIN
12 CMPB R0,#27.
13 BNE 1$
14 .TTYIN
15 1$: CMPB R0,#13.
16 BNE 2$
17 .TTYIN
18 2$: MOVB R0, KEYCODE(SP)
19 */
20 1 2 1 KEYPRESS:=KEYCODE;
21 2 2 1 END;
22
23 BEGIN
24 1 1 1 WRITELN(CHR(14),'navmite l`bu` klawi{u',CHR(15));
25 2 1 1 RP:=KEYPRESS;
26 3 1 1 WRITELN('uh ty!!!');
27 4 1 1 RP:=KEYPRESS;
28 5 1 1 WRITELN('BYE',RP);
29 6 1 1 END.
ERRORS DETECTED: 0
FREE MEMORY: 9625 WORDS
ERRORS DETECTED: 0
FREE MEMORY: 9625 WORDS
НАЖМИТЕ ЛЮБУЮ КЛАВИШУ
uh ty!!!
BYE 32
.
"проблемная" команда выглядит так
??? - вопрос не программиста (озвучивать не надо я думаю)Код:.PASDWK TFQQQ1=TFQQQ1
ERRORS DETECTED: 0
FREE MEMORY: 10111 WORDS
.TY TFQQQ1.MAC
.MCALL .TTYIN
.GLOBL $RESR6,$RESR5,$KORE,$SAV10,$VER
.GLOBL $BEGIN,FILE,$TTY,$END
.RADIX 10
L0:
CLR -(6)
JSR %0,$B74
.GLOBL $B74
BIS #^O10000,@#^O44
.TTYIN
CMPB R0,#27.
BNE 1$
.TTYIN
1$: CMPB R0,#13.
BNE 2$
.TTYIN
2$: MOVB R0, 10(SP)
MOV 10(6),14(6)
JSR %0,$B76
.GLOBL $B76
ADD #2,%6
RTS %7
$VER=59.
$BEGIN:
ADD #2,$KORE
JSR %7,$B127
.GLOBL $B127
MOV #14,-(6)
CLR -(6)
JSR %7,$B20
.GLOBL $B20
MOV #L1,-(6)
MOV #21,-(6)
CLR -(6)
JSR %7,$B32
.GLOBL $B32
MOV #15,-(6)
CLR -(6)
JSR %7,$B20
JSR %7,$B36
.GLOBL $B36
CLR -(6)
JSR %7,L0
MOV (6)+,%0
MOV %0,@%5
MOV #L2,-(6)
MOV #8,-(6)
CLR -(6)
JSR %7,$B32
JSR %7,$B36
CLR -(6)
JSR %7,L0
MOV (6)+,%0
MOV %0,@%5
MOV #L3,-(6)
MOV #3,-(6)
CLR -(6)
JSR %7,$B32
MOV @%5,-(6)
CLR -(6)
JSR %7,$B24
.GLOBL $B24
JSR %7,$B36
JMP $END
L1: .WORD 24942
.WORD 28022
.WORD 29801
.WORD 8293
.WORD 24684
.WORD 30050
.WORD 8288
.WORD 27755
.WORD 30561
.WORD 31593
.WORD 117
L2: .WORD 26741
.WORD 29728
.WORD 8569
.WORD 8481
.WORD 0
L3: .WORD 22850
.WORD 69
.END
.
:redface:
А как же без MOV - откуда функция вдруг сама себе содержимое регистра присвоит?
---------- Post added at 17:17 ---------- Previous post was at 17:13 ----------
Нет содержимое R0 надо присваивать ручками )))
http://zx-pk.ru/showpost.php?p=763195&postcount=144
Иначе опять нули нули нули )))
---------- Post added at 17:19 ---------- Previous post was at 17:17 ----------
Вот почему там без @ сработало??? (в случае функции)
Ведь это математика - тут четкий закон работать должен, разве нет?
http://zx-pk.ru/showpost.php?p=763195&postcount=144
тут присваиваем ручками там есть и ассемблерный листинг
без MOV? тупо без MOV? я попробую конечно ))) Как то так?
Код:PROGRAM TFQQQ1;
/*$C .MCALL .TTYIN
*/
VAR
RP: INTEGER;
FUNCTION KEYPRESS: INTEGER;
BEGIN
/*$C BIS #^O10000,@#^O44
.TTYIN
CMPB R0,#27.
BNE 1$
.TTYIN
1$: CMPB R0,#13.
BNE 2$
.TTYIN
2$:
*/
END;
BEGIN
WRITELN(CHR(14),'navmite l`bu` klawi{u',CHR(15));
RP:=KEYPRESS;
Exit? Y
.PASDWK TFQQQ1=TFQQQ1
ERRORS DETECTED: 0
FREE MEMORY: 10111 WORDS
.MAC TFQQQ1
.LIN TFQQQ1,PASDWK
.TFQQQ1
НАЖМИТЕ ЛЮБУЮ КЛАВИШУ
uh ty!!!
BYE 0
.TY TFQQQ1.MAC
.MCALL .TTYIN
.GLOBL $RESR6,$RESR5,$KORE,$SAV10,$VER
.GLOBL $BEGIN,FILE,$TTY,$END
.RADIX 10
L0:
JSR %0,$B74
.GLOBL $B74
BIS #^O10000,@#^O44
.TTYIN
CMPB R0,#27.
BNE 1$
.TTYIN
1$: CMPB R0,#13.
BNE 2$
.TTYIN
2$:
JSR %0,$B76
.GLOBL $B76
RTS %7
$VER=59.
$BEGIN:
ADD #2,$KORE
JSR %7,$B127
.GLOBL $B127
MOV #14,-(6)
CLR -(6)
JSR %7,$B20
.GLOBL $B20
MOV #L1,-(6)
MOV #21,-(6)
CLR -(6)
JSR %7,$B32
.GLOBL $B32
MOV #15,-(6)
CLR -(6)
JSR %7,$B20
JSR %7,$B36
.GLOBL $B36
CLR -(6)
JSR %7,L0
MOV (6)+,%0
MOV %0,@%5
MOV #L2,-(6)
MOV #8,-(6)
CLR -(6)
JSR %7,$B32
JSR %7,$B36
CLR -(6)
JSR %7,L0
MOV (6)+,%0
MOV %0,@%5
MOV #L3,-(6)
MOV #3,-(6)
CLR -(6)
JSR %7,$B32
MOV @%5,-(6)
CLR -(6)
JSR %7,$B24
.GLOBL $B24
JSR %7,$B36
JMP $END
L1: .WORD 24942
.WORD 28022
.WORD 29801
.WORD 8293
.WORD 24684
.WORD 30050
.WORD 8288
.WORD 27755
.WORD 30561
.WORD 31593
.WORD 117
L2: .WORD 26741
.WORD 29728
.WORD 8569
.WORD 8481
.WORD 0
L3: .WORD 22850
.WORD 69
.END
.
---------- Post added at 18:01 ---------- Previous post was at 17:38 ----------
В любом случае имеем практически идеальную процедуру=функцию для опроса клавиатуры на паскале с ожиданием нажатия клавиши!!! Ура! (оба листинга смотрите выше!). И это только один из вариантов, который в теории должен работать под RT-11 везде(!), ещё вариант Patrona с третьей переменной и использование библиотеки фортрана никто не отменял )))
На глазок подогнал секунду = 30000 прогонам цикла i:=i-1;
Значение подобрано из исходников игры SUPRIS, под скорость эмуляции
ВМ2 в UKNCBTL. В новом эмуляторе ДВК задержку надо незначительно увеличивать.
Код:PROGRAM HWCODE;
VAR IT: INTEGER;
PROCEDURE AT(CURX,CURY:INTEGER);
BEGIN
WRITE(CHR(27),'Y',CHR(32+CURY),CHR(32+CURX));
END;
PROCEDURE SECUNDER(IT:INTEGER);
VAR KW:INTEGER;
BEGIN
IF IT>0 THEN BEGIN
FOR KW:=0 TO 30000 DO;
IT:=IT-1;
END;
END;
PROCEDURE CLS;
BEGIN
WRITE(CHR(27),'H',CHR(27),'J');
END;
BEGIN
IT:=10;
CLS;
REPEAT
AT(15,10);WRITE('Время до выхода в ОС: ',IT:2,' SEC.');
SECUNDER(1);
IT:=IT-1;
UNTIL IT=0;
END.
UKNCBTL
Эмулятор ДВК.
:smile:
Система GRAY с графическими процедурами для линий\окруж. и шрифтов
(строго для УК-НЦ), которую я тут вкратце описывал http://zx-pk.ru/showpost.php?p=721122&postcount=135 доступна на дискетах Сергея Фоменко и является его авторской разработкой (там и описание авторское есть к ней)
http://archive.pdp-11.org.ru/ukdwk_a...Pcorp_Fomenko/