Rev 627 | Details | Compare with Previous | Last modification | View Log | RSS feed
Rev | Author | Line No. | Line |
---|---|---|---|
627 | savelij | 1 | |
1120 | savelij | 2 | ; LAST UPDATE: 18.10.2023 savelij |
3 | |||
627 | savelij | 4 | ;#INCLUDE "ALLVARS.ASH" |
5 | |||
6 | _KB_INT: RET |
||
7 | |||
8 | KB_INIT: JP _KB_INIT |
||
9 | KB_SCAN: JP _KB_SCAN |
||
10 | KB_ENCODE: JP _KB_ENCODE |
||
11 | KB_GET_SHIFTS: JP _KB_GET_SH |
||
12 | KB_SET_RUS: JP _KB_SET_RUS |
||
13 | |||
14 | ;#INCLUDE "KB_SH.INC" |
||
15 | |||
16 | KB_TIME EQU K_5CNT;#DEFINE KB_TIME K_5CNT |
||
17 | _KB_TIME EQU _K_5CNT;#DEFINE _KB_TIME _K_5CNT |
||
18 | |||
19 | ;#PRAGMA LOCAL |
||
20 | |||
21 | ;---------------------------------------- |
||
22 | ; LOCALS |
||
23 | _IN: EX AF,AF' |
||
24 | LD A,55H |
||
25 | IN A,(0FEH) |
||
26 | EX AF,AF' |
||
27 | IN A,(0FEH) |
||
28 | RET |
||
29 | |||
30 | _IN MACRO V |
||
31 | LD A,V |
||
32 | CALL _IN |
||
33 | ENDM |
||
34 | |||
35 | ;---------------------------------------- |
||
36 | ; INIT KEYBOARD (STANDARD ENTRY) |
||
37 | _KB_INIT: _IN 8 |
||
38 | LD A,8AH |
||
39 | IN A,(0FEH) |
||
40 | _IN 1 |
||
41 | CP 10H |
||
42 | JR NC,ABORT |
||
43 | XOR A |
||
44 | RET |
||
45 | ABORT: CALL PRN |
||
46 | DB 1BH,"M1VE31 not installed",0DH,0AH,0 |
||
47 | DI |
||
48 | HALT |
||
49 | ;---------------------------------------- |
||
50 | ; SCAN KEYBOARD |
||
51 | ; IN E&1 - WAIT FOR SYM, E&2 - WAIT FOR SHIFTS |
||
52 | ; |
||
53 | ; RET A-FF NO,0-KEY, 1-SHIFT |
||
54 | ; L-CHAR/0 |
||
55 | |||
56 | _KB_SCAN: |
||
57 | BIT _INTOF,(IX-_FLAG1) |
||
58 | JR Z,__NOCHECK |
||
59 | LD A,(IX-_TIME_C) |
||
60 | CP (IX-_KB_TIME) |
||
61 | LD (KB_TIME),A |
||
62 | JR Z,__NOALL |
||
63 | __NOCHECK: |
||
64 | |||
65 | LD BC,0FEH |
||
66 | IN A,(C) |
||
67 | LD B,40H |
||
68 | IN L,(C) |
||
69 | LD B,80H |
||
70 | IN H,(C) |
||
71 | PUSH DE |
||
72 | LD DE,(KS_ASH) |
||
73 | LD (KS_ASH),HL |
||
74 | OR A |
||
75 | SBC HL,DE |
||
76 | POP DE |
||
77 | JR NZ,__SHIFT |
||
78 | OR A |
||
79 | JR NZ,__SYM |
||
80 | __NOALL: INC E |
||
81 | DEC E |
||
82 | JR NZ,_KB_SCAN |
||
83 | LD A,-1 |
||
84 | __R1: LD L,0 |
||
85 | __RET: LD DE,(KS_ASH) |
||
86 | _RET1: EX AF,AF' |
||
87 | LD A,D |
||
88 | AND 15 |
||
89 | OR E |
||
90 | LD E,A |
||
91 | EX AF,AF' |
||
92 | RET |
||
93 | |||
94 | __SYM: LD L,A |
||
95 | LD A,0 |
||
96 | JR __RET |
||
97 | |||
98 | __SHIFT: OR A |
||
99 | JR NZ,__SYM |
||
100 | BIT 1,E |
||
101 | JR Z,_KB_SCAN |
||
102 | LD A,1 |
||
103 | JR __R1 |
||
104 | |||
105 | ;------------------------------- |
||
106 | |||
107 | _KB_GET_SH:_IN 9 |
||
108 | LD E,A |
||
109 | _IN 49H |
||
110 | LD D,A |
||
111 | LD (KS_ASH),DE |
||
112 | XOR A |
||
113 | JR _RET1 |
||
114 | |||
115 | |||
116 | ;--------------------------------------- |
||
117 | _KB_SET_RUS: |
||
118 | OR A |
||
119 | LD A,55H |
||
120 | IN A,(0FEH) |
||
121 | LD A,0BH |
||
122 | JR Z,KSR_1 |
||
123 | DEC A |
||
124 | KSR_1: IN A,(0FEH) |
||
125 | JP _KB_GET_SH |
||
126 | |||
127 | ;--------------------------------------- |
||
128 | _KB_ENCODE:LD HL,ENC_TABL |
||
129 | XOR A |
||
130 | RET |
||
131 | ENC_TABL |
||
132 | ENT_DEF ED_PROC,ED_CHAR,ED_CHAR,ED_CHAR |
||
133 | ENT_DEF ED_PROC,ED_PROC,ED_PROC,ED_PROC |
||
134 | ENT_DEF ED_PROC,ED_CHAR,ED_CHAR,ED_CHAR |
||
135 | ENT_DEF ED_CHAR,ED_CHAR,ED_PROC,ED_PROC |
||
136 | |||
137 | DB 0,0 |
||
138 | |||
139 | DW PALT ; HI BIT ENCODER |
||
140 | DW TRP ; RUS PUNCT |
||
141 | DW TRSP ; RUS+SHFT PUNCT |
||
142 | DW TRLET ; RUS LETTER |
||
143 | |||
144 | DW 0 ; RUS+SHFT LETTER |
||
145 | DW NRET ; OTHERS |
||
146 | DW NRET ; SHFT OTHERS |
||
147 | DW NRET ; RUS OTHERS |
||
148 | |||
149 | DW NRET ; RUS+SHFT OTHERS |
||
150 | DW TCCTRL ; CTRL CONTROLL |
||
151 | DW TSDIG ; SHFT DIGITS |
||
152 | DW TCDIG ; CTRL DIGITS |
||
153 | |||
154 | DW TRSDIG ; RUS+SHFT DIGITS |
||
155 | DW TSP ; SHFT PUNCT |
||
156 | DW PCP ; CTRL PUNCT |
||
157 | DW NRET ; CTRL OTHERS |
||
158 | |||
159 | |||
160 | PALT: LD L,-1 |
||
1120 | savelij | 161 | BIT B_KS_NUM,(IX-_KS_ASH) |
627 | savelij | 162 | RET NZ |
163 | CP "." |
||
164 | JR NZ,PALT_1 |
||
165 | LD A,"y" |
||
166 | RET |
||
167 | PALT_1: CP "0" |
||
168 | RET C |
||
169 | CP 0X39+1;'9'+1 |
||
170 | RET NC |
||
171 | LD HL,TALT-0X30;'0' |
||
172 | CALL ADD_HL_A |
||
173 | LD A,(HL) |
||
174 | SRET: LD L,-1 |
||
175 | RET |
||
176 | NRET: XOR A |
||
177 | CRET: LD L,0 |
||
178 | RET |
||
179 | TALT: DB "xwqur",0,"svpt" |
||
180 | |||
181 | PCP: CP "@" |
||
182 | JR C,NRET |
||
183 | AND 1FH |
||
184 | LD L,0 |
||
185 | RET |
||
186 | |||
187 | TRP: DB 0X88, "`;',.[]",0X5C,"(v|b`h",0X7F,0 |
||
188 | ;ED_tab "`;',.[]",0X5C <"(v|b`h", 127,0> 1 |
||
189 | TRSP: DB 0X8A, "`;',.[]=",0X5C,"/",")V",0X5C,"B@H_+",0,"?" |
||
1120 | savelij | 190 | ;ED_tab "`;',.[]=",0X5C,"/" <")V0x5CB@H_+",0,"?"> 1 |
627 | savelij | 191 | TRLET: DB 0, "fiswuapr{oldxt}zjkyegmc~nq" |
192 | ;ED_tab "fiswuapr{oldxt}zjkyegmc~nq" |
||
193 | TCCTRL: DB 0X81, 0X0D,0X0A |
||
194 | ;ED_tab 0dh 0ah 1 |
||
195 | TSDIG: DB 0, ")!@#$%^&*(" |
||
196 | ;ED_tab "")!@#$%^&*(" |
||
197 | TCDIG: DB 1, "6",0X1E |
||
198 | ;ED_tab "6" 1eh |
||
199 | TRSDIG: DB 0, "%!",0X22,"/$:,.;?" |
||
200 | ;ED_tab "%!",0X22,"/$:,.;?" |
||
201 | TSP: DB 0X0B, "`;',.[]-=",0X5C,"/","~:",0X22,"<>{}_+|?" |
||
202 | ;ED_tab "`;',.[]-=",0X5C,"/" "~:",0X22,"<>{}_+|?" |
||
203 |