annotate level2/modules/keydrv.asm @ 162:3310d08dd353

Analysis of format. They are different due to differences in hardware
author roug
date Tue, 09 Jul 2002 21:05:30 +0000
parents 6641a883d6b0
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
0
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
1 ********************************************************************
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
2 * KeyDrv - Keyboard Driver for CoCo 3
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
3 *
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
4 * $Id$
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
5 *
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
6 * Ed. Comments Who YY/MM/DD
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
7 * ------------------------------------------------------------------
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
8 * 4 L2 Upgrade distribution version
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
9 * Annotations by Robert Gault RG 98/10/10
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
10
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
11 nam KeyDrv
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
12 ttl Keyboard Driver for CoCo 3
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
13
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
14 * Disassembled 98/09/09 09:02:10 by Disasm v1.6 (C) 1988 by RML
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
15
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
16 ifp1
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
17 use defsfile
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
18 endc
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
19
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
20 tylg set Systm+Objct
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
21 atrv set ReEnt+rev
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
22 rev set $01
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
23 edition equ 4
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
24
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
25 mod eom,name,tylg,atrv,start,size
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
26 size equ .
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
27
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
28 name fcs /KeyDrv/
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
29 fcb edition
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
30
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
31 start lbra Init init/term; CLRB RTS
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
32 lbra Term
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
33 lbra FuncKeys test for keys F1, F2
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
34
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
35 ReadKys ldu <D.CCMem CC3IO global memory $1000
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
36 ldx #PIA0Base base address of PIA#1
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
37 clrb
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
38 comb
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
39 stb $02,x clear all strobe lines
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
40 ldb ,x read PIA#1
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
41 comb bit values 0=off 1=on
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
42 andb #%00001111 keep only buttons
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
43 bne L0059 branch if button pushed; error routine
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
44 clr $02,x enable all strobe lines
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
45 lda ,x read PIA#1
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
46 coma
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
47 anda #%01111111 mask only the joystick conparator
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
48 beq L0042 branch if no keys pressed
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
49 pshs dp
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
50 tfr u,d
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
51 tfr a,dp set DP to the address in regU
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
52 bsr L005C evaluate the found key matrix
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
53 puls dp return to system DP
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
54 bpl L005B valid key
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
55 L0042 clra regA would have been the found key
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
56 ldb <G.CapLok,u CapsLock/SysRq key down flag
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
57 bne L0056
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
58 clr <G.KTblLC,u Key table entry# last checked (1-3)
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
59 coma
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
60 comb
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
61 sta <G.LKeyCd,u last keyboard code
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
62 sta <G.2Key1,u 2nd key table storage; $FF=none
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
63 std <G.2Key2,u format (Row/Column)
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
64 L0056 clr <G.CapLok,u see above
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
65 L0059 ldb #$FF
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
66 L005B rts
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
67
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
68 L005C ldx #PIA0Base base value of PIA#1
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
69 clra
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
70 clrb
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
71 std <G.ShftDn shift/CTRL flag; 0=NO $FF=YES
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
72 std <G.KeyFlg PIA bits/ALT flag
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
73 * %00000111-Column # (Output, 0-7)
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
74 * %00111000-Row # (Input, 0-6)
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
75 coma
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
76 comb set primary key table
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
77 std <G.Key1 key 1&2 flags $FF=none
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
78 sta <G.Key3 key 3 ²
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
79 deca ie. lda #%11111110
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
80 sta $02,x strobe one column
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
81 L006E lda ,x read PIA#1
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
82 coma
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
83 anda #$7F keep only keys, bit 0=off 1=on
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
84 beq L0082
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
85 ldb #$FF preset counter to -1
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
86 L0077 incb
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
87 lsra bit test regA
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
88 bcc L007E no key so branch
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
89 lbsr L010E convert column/row to matrix value and store it
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
90 L007E cmpb #$06 max counter
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
91 bcs L0077 loop if more bits to test
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
92 L0082 inc <G.KeyFlg counter; used here for column
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
93 orcc #Carry bit marker; disable strobe
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
94 rol $02,x shift to next column
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
95 bcs L006E not finished with columns so loop
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
96 lbsr L0166 simultaneous check; recover key matrix value
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
97 bmi L00F5 invalid so go
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
98 cmpa <G.LKeyCd last keyboard code
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
99 bne L0095
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
100 inc <G.KySame same key flag ?counter?
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
101 L0095 sta <G.LKeyCd setup for last key pressed
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
102 beq L00B5
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
103 suba #$1A the key value (matrix) of Z
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
104 bhi L00B5 not a letter so go
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
105 adda #$1A restore regA
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
106 ldb <G.CntlDn CTRL flag
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
107 bne L00E0 CTRL is down so go
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
108 adda #$40 convert to ASCII value; all caps
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
109 ldb <G.ShftDn shift key flag
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
110 ldy <G.CurDev get current device static memory pointer
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
111 eorb <$21,y caps lock and keyboard mouse flags
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
112 andb #$01 test caps flag
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
113 bne L00E0 not shifted so go
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
114 adda #$20 convert to ASCII lower case
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
115 bra L00E0
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
116 * key is not a letter; this routine is not based on some underlining principle of
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
117 * the keyboard hardware. It is also a function of the decode table at $1DC,pcr.
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
118 L00B5 ldb #$03
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
119 mul regB = (key#-26) times 3
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
120 lda <G.ShftDn shift key flag
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
121 beq L00BF not shifted so go
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
122 incb
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
123 bra L00C5
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
124 L00BF lda <G.CntlDn CTRL flag
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
125 beq L00C5
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
126 addb #$02
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
127 L00C5 ldx <G.CurDev point regX to device’s static memory
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
128 lda <$22,x key sense flag
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
129 beq L00D0 not set so go
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
130 cmpb #$11 spacebar
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
131 ble L00F3 must be an arrow so go
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
132 L00D0 cmpb #$4C SHIFTed ALT key
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
133 blt L00D8 not ALT, CTRL, F1, F2, or SHIFT so go
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
134 inc <G.AltDwn flag special keys (ALT,CTRL)
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
135 subb #$06
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
136 L00D8 leax >L01DC,pcr decode table
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
137 lda b,x
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
138 bmi L00F6 if regA = $81 - $84
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
139 * several entries to this routine from any key press; regA is already ASCII
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
140 L00E0 ldb <G.AltDwn was ALT flagged?
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
141 beq L00F0 no so go
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
142 cmpa #$3F ?
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
143 bls L00EE # or code
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
144 cmpa #$5B [
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
145 bcc L00EE capital letter so go
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
146 ora #$20 convert to lower case
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
147 L00EE ora #$80 set for ALT characters
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
148 L00F0 andcc #^Negative not negative
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
149 rts
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
150 L00F3 orcc #Negative set negative
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
151 L00F5 rts
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
152 L00F6 inc <G.CapLok caps lock/SysRq
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
153 inc <G.Clear one shot caps lock/SysRq
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
154 bra L00F0
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
155 L00FC pshs b,a convert column into power of 2
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
156 clrb
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
157 orcc #Carry
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
158 inca
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
159 L0102 rolb
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
160 deca
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
161 bne L0102
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
162 bra L0108 WHY IS THIS HERE??
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
163 L0108 orb <G.KySns previous value of column
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
164 stb <G.KySns
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
165 puls pc,b,a
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
166 L010E pshs b,a
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
167 cmpb #$03 is it row 3?
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
168 bne L011C
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
169 lda <G.KeyFlg get column #
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
170 cmpa #$03 is it column 3?; ie up arrow
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
171 blt L011C if lt must be a letter
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
172 bsr L00FC its a non letter so bsr
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
173 L011C lslb B*8 8 keys per row
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
174 lslb
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
175 lslb
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
176 addb <G.KeyFlg add in the column #
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
177 cmpb #$33 ALT
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
178 bne L012B
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
179 inc <G.AltDwn ALT down flag
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
180 ldb #$04
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
181 bra L0108
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
182 L012B cmpb #$34 CTRL
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
183 bne L0135
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
184 inc <G.CntlDn CTRL down flag
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
185 ldb #$02
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
186 bra L0108
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
187 L0135 cmpb #$37 shift key
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
188 bne L013F
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
189 com <G.ShftDn shift down flag
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
190 ldb #$01
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
191 bra L0108
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
192 * check how many key (1-3) are currently being pressed
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
193 L013F pshs x
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
194 leax <$2D,u 1st key table
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
195 bsr L014A
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
196 puls x
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
197 puls pc,b,a
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
198 L014A pshs a
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
199 lda ,x
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
200 bpl L0156
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
201 stb ,x
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
202 ldb #$01
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
203 puls pc,a
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
204 L0156 lda $01,x
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
205 bpl L0160
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
206 stb $01,x
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
207 ldb #$02
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
208 puls pc,a
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
209 L0160 stb $02,x
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
210 ldb #$03
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
211 puls pc,a
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
212 * simlutaneous key test
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
213 L0166 pshs y,x,b
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
214 ldb <G.KTblLC key table entry#
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
215 beq L019D
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
216 leax <$2A,u point to 2nd key table
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
217 pshs b
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
218 L0171 leay <$2D,u 1st key table
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
219 ldb #$03
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
220 lda ,x get key#1
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
221 bmi L018F go if invalid? (no key)
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
222 L017A cmpa ,y is it a match?
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
223 bne L0184 go if not a matched key
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
224 clr ,y
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
225 com ,y set value to $FF
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
226 bra L018F
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
227 L0184 leay $01,y
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
228 decb
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
229 bne L017A
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
230 lda #$FF
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
231 sta ,x
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
232 dec <G.KTblLC key table entry#
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
233 L018F leax $01,x
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
234 dec ,s column counter
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
235 bne L0171
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
236 leas $01,s
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
237 ldb <G.KTblLC key table entry (can test for 3 simul keys)
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
238 beq L019D
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
239 bsr L01C4
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
240 L019D leax <$2D,u 1st key table
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
241 lda #$03
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
242 L01A2 ldb ,x+
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
243 bpl L01B5
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
244 deca
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
245 bne L01A2
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
246 ldb <G.KTblLc key table entry (can test for 3 simul keys)
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
247 beq L01C0
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
248 decb
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
249 leax <$2A,u 2nd key table
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
250 lda b,x
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
251 bra L01BE
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
252 L01B5 tfr b,a
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
253 leax <$2A,u 2nd key table
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
254 bsr L014A
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
255 stb <G.KTblLC
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
256 L01BE puls pc,y,x,b
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
257 L01C0 orcc #Negative flag negative
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
258 puls pc,y,x,b
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
259 L01C4 leax <$2A,u
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
260 bsr L01CF
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
261 leax $01,x
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
262 bsr L01CF
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
263 leax -$01,x
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
264 L01CF lda ,x
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
265 bpl L01DB
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
266 ldb $01,x
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
267 bmi L01DB
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
268 sta $01,x
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
269 stb ,x
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
270 L01DB rts
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
271 * These seem to be special key combination values; 3 per key in ASCII
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
272 *L01DC fcb @,shift@,nul
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
273 * fcb up,shifted,CTRL
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
274 * fcb down, shifted, CTRLed
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
275 * fcb left, shifted, CTRLed
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
276 * fcb right, shifted, CTRLed
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
277 * fcb spacebar, spacebar, spacebar
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
278 * fcb ’0,’0,$81 signal shiftlock change
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
279 * fcb ’1,’!,’|
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
280 * fcb ’2,’”,null
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
281 * fcb ’3,’#,’~
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
282 * fcb ’4,’$,null
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
283 * fcb ’5,’%,null
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
284 * fcb ’6,’&,null
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
285 * fcb ’7,’’,’^
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
286 * fcb ’8,’(,’[
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
287 * fcb ’9,’),’]
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
288 * fcb ’:,’*,null
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
289 * fcb ’;,’+,DEL
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
290 * fcb ’,,’<,’{
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
291 * fcb ’-,’=,’_
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
292 * fcb ’.,’>,’}
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
293 * fcb ’/,’?,’\
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
294 * fcb ENTER,ENTER,ENTER
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
295 * I think these are for ALT
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
296 * fcb $82,$83,$84
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
297 * fcb ENQ,BREAK,ESC
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
298 * the next I think are for the F1 and F2 keys
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
299 * fcb ’1,’3,’5
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
300 * fcb ’2,’4,’6
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
301 L01DC fdb $4060,$000c,$1c13,$0a1a,$1208,$1810,$0919,$1120
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
302 fdb $2020,$3030,$8131,$217c,$3222,$0033,$237e,$3424
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
303 fdb $0035,$2500,$3626,$0037,$275e,$3828,$5b39,$295d
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
304 fdb $3a2a,$003b,$2b7f,$2c3c,$7b2d,$3d5f,$2e3e,$7d2f
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
305 fdb $3f5c,$0d0d,$0d82,$8384,$0503,$1b31,$3335,$3234
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
306 fcb $36
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
307
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
308 Init
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
309 Term clrb
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
310 rts
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
311
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
312 FuncKeys ldu <D.CCMem
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
313 ldx #PIA0Base
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
314 clra
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
315 ldb #%11011111 strob column #6 PIA#1
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
316 stb $02,x
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
317 ldb ,x read PIA#1
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
318 bitb #%01000000 test for F1 function key
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
319 bne L0240
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
320 inca flag F1
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
321 L0240 ldb #%10111111 strobe column #7 PIA#1
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
322 stb $02,x
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
323 ldb ,x read PIA#1
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
324 bitb #%01000000 test for F2 function key
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
325 bne L024C
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
326 ora #$04 flag F2
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
327 L024C rts
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
328
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
329 emod
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
330 eom equ *
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
331 end
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
332
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
333