-
Notifications
You must be signed in to change notification settings - Fork 6
/
Copy pathFNKEYS.asm
188 lines (177 loc) · 2.99 KB
/
FNKEYS.asm
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
10 ORG 100H
20 JP MAIN
30RPTCHR EQU 0BFEEH
40GPF EQU 0BFD0H
50AOUT EQU 0BD09H
60PUTSTR EQU 0BFF1H
70WAITK EQU 0BFCDH
80LDPSTR EQU 0BD00H
100MAIN: CALL CLS
110 LD DE, 0008H
120 LD (POSXY), DE
130 LD HL, LBLMN
140 CALL STRLN
150 LD A,B
160 LD (LNSTR),A
170 CALL DSPLBL
180 LD DE,0500H
190 LD (POSXY), DE
200 LD HL,FN0
210 CALL STRLN
220 LD A,B
230 LD (LNSTR),A
240 CALL DSPLBL
250 LD DE,0504H
260 LD (POSXY), DE
270 LD HL,FN1
280 CALL STRLN
290 CALL DSPLBL
300 LD DE,0508H
310 LD (POSXY), DE
320 LD HL,FN2
330 CALL STRLN
340 CALL DSPLBL
350 LD DE,050CH
360 LD (POSXY), DE
370 LD HL,FN3
380 CALL STRLN
390 CALL DSPLBL
400 LD DE,0510H
410 LD (POSXY), DE
420 LD HL,FN4
430 CALL STRLN
440 CALL DSPLBL
450 LD DE,0514H
460 LD (POSXY), DE
470 LD HL,FN5
480 CALL STRLN
490 CALL DSPLBL
500WAIT0: CALL WAIT
510 CALL MX2KEY
520 CP 'Q' ; quit
530 JP Z, THEEND
540 LD HL,KEY0
550 CP (HL)
560 JP Z,NUMBER
570 LD HL,KEY1
580 CP (HL)
590 JP Z,NUMBER
600 LD HL,KEY2
610 CP (HL)
620 JP Z,NUMBER
630 LD HL,KEY3
640 CP (HL)
650 JP Z,NUMBER
660 LD HL,KEY4
670 CP (HL)
680 JP NZ,WAIT0
690NUMBER: LD HL,SLCT0
700 LD (HL),A
710 LD HL,SLCT
720 CALL STRLN
730 LD DE,0200H
740 CALL PUTSTR
750 JP WAIT0
760THEEND: CALL CLS
770 LD HL, ZOIGIN
780 CALL STRLN
790 LD HL, ZOIGIN
800 LD DE, 0
810 CALL PUTSTR
820 RET
880LBLMN: DB ' menu ',0
890MAXTAB: DB 3
900MYTAB: DB 0
910SLCT: DB 'You pressed key '
920SLCT0: DB 0,0
930FN0: DB ' z ',0
940FN1: DB ' x ',0
950FN2: DB ' c ',0
960FN3: DB ' v ',0
970FN4: DB ' b ',0
980FN5: DB ' q ',0
990KEY0: DB 'Z'
1000KEY1: DB 'X'
1010KEY2: DB 'C'
1020KEY3: DB 'V'
1030KEY4: DB 'B'
1040LNSTR: DB 0
1050POSXY: DB 0,0
1060WIDTH: DB 0
1070BUFFER: DEFS 144
1080DSPLBL: LD A,(LNSTR)
1090 LD B,A
1100 LD DE,(POSXY)
1110 CALL PUTSTR
1120 LD A,(LNSTR)
1130 ADD A,A ; B*2
1140 LD C,A
1150 ADD A,A ; B*4
1160 ADD A,C ; B*6
1170 LD (WIDTH),A
1180 LD B,A
1190 LD DE,(POSXY)
1200 LD HL,BUFFER
1210 INC HL
1220 INC HL
1230 CALL LDPSTR
1240 LD HL,BUFFER
1250 LD (HL),0FFH
1260 INC HL
1270 LD (HL),0FFH
1280 INC HL
1290 LD A,(WIDTH)
1300 LD B,A
1310LBL0: LD A,(HL)
1320 XOR 7EH
1330 OR 81H
1340 LD (HL),A
1350 INC HL
1360 DJNZ LBL0
1370 LD (HL),0FFH
1380 INC HL
1390 LD (HL),0FFH
1400 LD HL,BUFFER
1410 LD A,(WIDTH)
1420 ADD A,4
1430 LD B,A
1440 LD DE,(POSXY)
1450 CALL GPF
1460 RET
1600WAIT: CALL WAITK
1610 CP 0
1620 JP Z,WAIT
1630 RET
2000CLS: LD B, 144
2010 LD DE, 0
2020CLS0: LD A, 32
2030 CALL RPTCHR
2040 RET
2050CLLN: LD B,24
2060 LD E,0
2070 JP CLS0
3190STRLN: LD B,0
3200 PUSH HL
3210STRLN0: LD A,(HL)
3220 CP 0
3230 JP Z,STRLN1
3240 INC HL
3250 INC B
3260 JP STRLN0
3270STRLN1: POP HL
3280 RET
3530MX2KEY: LD B,0 ; Key coe to char
3540 LD C,A ; A IS KEY INDEX
3550 LD HL, MATRIX
3560 ADD HL, BC
3570 LD A,(HL)
3580 RET
5070ZOIGIN: DB 'Bye...',13,10,0
5080MATRIX: DB 0,0FFH
5090 DB 'QWERTYUASDFGHJKZXCVBNM,'
5100 DB 0FFH,0FFH,0FFH,0FFH,9,32,10,11,14,15 ; LEFT RIGHT UP DOWN
5110 DB 0FFH, '0.=+',13,'L;',0FFH,'123-'
5120 DB 0FFH,'IO',0FFH,'456*',0FFH,'P',8,0FFH,'789/)'
5130 DB 0FFH,0FFH,0FFH,0FFH,'(',0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH
5140 DB 0,12,0FFH