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
Вопрос к асм-программистам: возможно ли его переписать так, что бы сканкоды были
значением внешней функции для Паскаля или значением входящей переменной
внешней процедуры? И возможно ли в принципе?
Если для решения задачи какую-то часть кода нужно исполнять в осн. исходнике
- орг. вставку на асм. - главное, что бы заработало?
================================================== =====
неизвестный Паскаль - смотрим что там в архивах ???
Продолжаю изучать добытый @shattered софт.
Решил глянуть, что же там за
PAS1.LZS unknown pascal
Смотрим листинг
Код:
РАБОТАЕМ С АРХИВОМ: DK:PAS1.LZS [ 85] 13-26-88
ПОЛНЫЙ КАТАЛОГ АРХИВА
Метод 'LZS', версия V02.01, буфер сжатия: 4096, общий каталог: НЕТ
---------- ---------- -------- --------- ------- -------------------
Имя файла блоков дата <байтов> сжатие адрес в архиве
---------- ---------- -------- --------- ------- -------------------
PAS1.SAV [ 52] 01-11-81 18996 29% [ 0]+ 16
PAS1.OBJ [ 91] 28-09-85 24182 48% [ 37]+ 84
---------- ---------- -------- --------- ------- -------------------
2 143 43520 41 % 85
HD7>RU PAS1 TEST,TT:=TEST
TEST P A S C A L 13- -88 PAGE 1
ДВК "ЭЛЕКТРОНИКА НЦ 8020/2,3,4"
LINE STMT LEVEL NEST SOURCE STATEMENT
1 PROGRAM TEST;
2 BEGIN
3 1 1 1 WRITELN('Ok');
4 2 1 1 END.
ERRORS DETECTED: 0
FREE MEMORY: 9861 WORDS
ERRORS DETECTED: 0
FREE MEMORY: 9861 WORDS
HD7>MAC TEST
HD7>LIN TEST,PAS1
HD7>RU TEST
Ok
В шапке есть этот вариант и похоже именно его @form патчил на предмет правильного
заголовка и современного календаря.
Идём дальше, по описанию есть ещё один архив
PASCAL.LZS unknown pascal
И вот с ним не всё однозначно,
программа транслятор с таким заголовком так же есть в шапке темы и
в архиве, но тот же тест в самом конце отказался запускаться, наверное
я просто не в курсе какой то специфики???
Смотрим листинг:
Код:
РАБОТАЕМ С АРХИВОМ: DK:PASCAL.LZS [ 323] 13-26-88
ПОЛНЫЙ КАТАЛОГ АРХИВА
Метод 'LZS', версия V02.01, буфер сжатия: 4096, общий каталог: НЕТ
---------- ---------- -------- --------- ------- -------------------
Имя файла блоков дата <байтов> сжатие адрес в архиве
---------- ---------- -------- --------- ------- -------------------
PASFOR.SAV [ 40] 29-04-92 12675 38% [ 0]+ 16
PASIMP.SAV [ 36] 29-04-92 12612 32% [ 24]+ 420
PASIMP.PAS [ 42] 29-04-92 7643 65% [ 49]+ 248
STRING.PAS [ 6] 29-04-92 1134 64% [ 64]+ 228
ERROR.PAS [ 2] 29-04-92 0586 43% [ 66]+ 354
CSI.PAS [ 10] 29-04-92 2477 52% [ 67]+ 444
INTRPT.PAS [ 3] 29-04-92 0692 55% [ 72]+ 378
PASPRF.PAS [ 21] 29-04-92 3716 66% [ 74]+ 62
PCL.PAS [ 27] 29-04-92 5973 57% [ 81]+ 210
PDROMA.PAS [ 1] 29-04-92 0246 52% [ 93]+ 56
PDHANO.PAS [ 1] 29-04-92 0284 45% [ 93]+ 318
PDRAND.PAS [ 1] 29-04-92 0246 52% [ 94]+ 106
PDGRAF.PAS [ 1] 29-04-92 0284 45% [ 94]+ 368
PDBIOR.PAS [ 17] 29-04-92 2778 69% [ 95]+ 156
HYPHEN.PAS [ 7] 29-04-92 1468 59% [ 100]+ 390
VOC.PAS [ 24] 29-04-92 4334 65% [ 103]+ 338
PAS4.OBJ [ 5] 29-04-92 1520 41% [ 112]+ 80
VOCE.PAS [ 16] 29-04-92 3166 62% [ 115]+ 80
PAS7.OBJ [ 5] 29-04-92 1318 49% [ 121]+ 190
PAS9.OBJ [ 5] 29-04-92 1492 42% [ 123]+ 500
PASB.OBJ [ 7] 29-04-92 2336 35% [ 126]+ 472
PAS0.OBJ [ 5] 29-04-92 1398 46% [ 131]+ 264
PAS1.OBJ [ 4] 29-04-92 1200 42% [ 134]+ 142
PAS2.OBJ [ 7] 29-04-92 2073 43% [ 136]+ 334
PAS3.OBJ [ 5] 29-04-92 1668 35% [ 140]+ 376
PAS5.OBJ [ 6] 29-04-92 1930 37% [ 144]+ 12
PAS8.OBJ [ 4] 29-04-92 1108 46% [ 147]+ 422
PAS6.OBJ [ 5] 29-04-92 1546 40% [ 150]+ 10
PASA.OBJ [ 7] 29-04-92 2170 40% [ 153]+ 36
EXAM1.TXT [ 1] 29-04-92 0235 55% [ 157]+ 174
EXAM2.TXT [ 1] 29-04-92 0167 68% [ 157]+ 426
PASNHD.OBJ [ 84] 29-04-92 26163 40% [ 158]+ 98
PASFPP.OBJ [ 74] 29-04-92 22916 40% [ 209]+ 166
PASFPP.SAV [ 58] 29-04-92 20975 30% [ 254]+ 58
PASPRF.OBJ [ 9] 29-04-92 2897 37% [ 295]+ 58
PASFOR.PAS [ 75] 29-04-92 10929 72% [ 300]+ 412
---------- ---------- -------- --------- ------- -------------------
36 622 165376 48 % 323
HD7>RU PASFPP TEST,TT:=TEST
TEST P A S C A L/RAFOS 13- -88 9:25 V1-564 PAGE 1
SM-3/SM-4 MINICOMPUTERS
LINE STMT LEVEL NEST SOURCE STATEMENT
1 PROGRAM TEST;
2 BEGIN
3 1 1 1 WRITELN('Ok');
4 2 1 1 END.
ERRORS DETECTED: 0
FREE MEMORY: 8895 WORDS
ERRORS DETECTED: 0
FREE MEMORY: 8895 WORDS
HD7>MAC TEST
HD7>LIN TEST,PASFPP
HD7>RU TEST
?FATAL ERROR: RESERVED INSTRUCTION TRAP
PROGRAM COUNTER: 1476
HD7>