Код:
PROGRAM TEST;
PROCEDURE PER;
BEGIN
/*$C .RADIX 8
MOV #OUTPOS, R2
; BIS #10000, @#44
MOV #4, R1
1$: TSTB @#176674
BPL .-4
MOVB (R2)+, @#176676
SOB R1, 1$
MOV #OK, R0
EMT 351
MOV WYDEL+4, STAPP
MOV WYDEL+4, STAPP1
MOV #8., R1
2$: TSTB @#176674
BPL .-4
MOVB (R2)+, @#176676
SOB R1, 2$
JMP KPER
OK: .ASCIZ <1><2><3><4><5>
OUTPOS: .WORD WYDEL,-1,POSLAT,-1,ZAPUSK,-1
WYDEL: .BYTE ,1,32,0,-1
POSLAT: .BYTE ,20,32,
.EVEN
STAPP: .WORD ,PROG,SIZE
ZAPUSK: .BYTE ,30,32,
STAPP1: 0
PROG: MOV @#300, OLD300
MOV PC, R0
ADD #PRERK-., R0
MOV R0, @#300 ; - ВКЛЮЧЕНИЕ ДРАЙВЕРА КЛАВИАТУРЫ
MOV @#320, OLD320
MOV PC, R0
ADD #PRERT-., R0
MOV R0, @#320 ; - МУЗЫКА ВКЛ.ОТКЛ.
MOV PC, R0
ADD #TIM-., R0
MOV R0, @#100 ; - МИГАНИЕ КУРСОРА
RETURN
TIM: RTI
PRERT: MFPS -(SP)
MTPS #340
MOV R0,-(SP)
MOV R1,-(SP)
MOV R2,-(SP)
BIC #17600, @#177716
CLR R0
MOVB @#177060, R0
CMPB R0, #'9
BGT 5$
CMPB R0, #'0
BLT CANCEL
SUB #'/, R0
MOV #1, R1
1$: ASL R1
SOB R0, 1$
MOV R1, LENGTH
BR CANCEL
5$: MOV PC, R1
ADD #TAB-., R1
2$: CMPB (R1), R0
BEQ 3$
TSTB (R1)+
BEQ CANCEL
BR 2$
3$: MOV LENGTH, R2
4$: BIS #200, @#177716
MOVB 1(R1), R0
SOB R0,.
BIC #200, @#177716
SOB R0,.
SOB R0, 4$
CANCEL: MOV (SP)+, R2
MOV (SP)+, R1
MOV (SP)+, R0
MTPS (SP)+
RTI
LENGTH: 0
PRERK: MOV R0, OLDR0
MOVB @#177702, R0
BIT #200, R0
BNE 2$
BIC #200, R0
ADD PC, R0
ADD #KEYS-., R0
TSTB (R0)
BEQ 1$
MOVB (R0), @#177070
CMPB (R0), #'+
BNE 11$
INC PRESS4
11$: CMPB (R0), #',
BNE 1$
INC PRESS6
1$: MOV OLDR0, R0
RTI
2$: BIC #260, R0
CMPB R0, #11
BNE 3$
TSTB PRESS4
BEQ 1$
MOVB #173, @#177070
CLR PRESS4
BR 1$
3$: CMPB R0, #5
BNE 1$
TSTB PRESS6
BEQ 1$
MOVB #175, @#177070
CLR PRESS6
BR 1$
TAB: .BYTE 'F,177
.BYTE 'Y,161
.BYTE 'W,145
.BYTE 101,137
.BYTE 'P, 125
.BYTE 'R, 113
.BYTE 'O, 103
.BYTE 114, 77
.BYTE 'D, 70
.BYTE 'V, 62
.BYTE '\,57
.BYTE '.,52
.BYTE ' ,47
TABDIE: .BYTE 'C,170
.BYTE 'U,153
.BYTE 113,132
.BYTE 'E,120
.BYTE 'N,107
.BYTE 'G,74
.BYTE '[,65
.BYTE '],55
.BYTE 'Z,50
.BYTE ' ,47
.WORD 0
KEYS: .BYTE 2,2,2,2,2, ,,33,';,0,0,0,'$,0,0,'','(,0,0,0,0,0
.BYTE '-,11,112,'!,'",'#,'E,'%,'&,'[,'],0,0,0,0,0,0
.BYTE 0,'F,'C,'U,113,'P,'N,'G,114,'D,0,0,0,0,0,0,0
.BYTE 'Q,'Y,'W,101,111,'R,'O,'B,'@,0,0,0,0,0,0,0,0
.BYTE '^,'S,'M,' ,'T,'X,'D,'<,0,0,0,0,0,'7,'0,'1,'4,'+
.BYTE 177,'C,'B,'>,'\,'V,0,0,0,0,0,'8,'.,'2,'5,12,15,15,101
.BYTE '_,'H,'Z,0,0,0,0,0,'9,12,'3,'6,14,12,'/,':,'=,'0,'),33
.EVEN
PRESS4: 0
PRESS6: 0
OLDR0: 0
OLD300: 0
OLD320: 0
SIZE= 3000
KPER: .RADIX 10
*/
END;
BEGIN
PER;
END.
к блоку KEYS есть отдельные пометки для системных клавишь в распечатке с которой набивалось (типа вот это "СТОП", а вот это "УСТ"). Последний листинг прилепил к сообщению.