mirror of
https://github.com/dschmenk/apple2pi.git
synced 2024-11-28 09:49:27 +00:00
209 lines
5.5 KiB
ArmAsm
209 lines
5.5 KiB
ArmAsm
|
1 COUT EQU $FDED
|
||
|
2 WAIT EQU $FCA8
|
||
|
3 KEYBD EQU $C000
|
||
|
4 KBCLR EQU $C010
|
||
|
5 PTR EQU $06
|
||
|
6 PTRL EQU $06
|
||
|
7 PTRH EQU $07
|
||
|
8 MOUROM EQU $300
|
||
|
9 SSCROM EQU $301
|
||
|
10 MOUSLOT EQU $302
|
||
|
11 SSCSLOT EQU $303
|
||
|
12 MOUINDEX EQU $304
|
||
|
13 ORG $1000
|
||
|
14 ENTRY LDA #$C1
|
||
|
15 STA PTRH
|
||
|
16 LDA #$00
|
||
|
17 STA PTRL
|
||
|
18 STA MOUROM
|
||
|
19 STA SSCROM
|
||
|
20 STA MOUSLOT
|
||
|
21 STA SSCSLOT
|
||
|
22 STA MOUINDEX
|
||
|
23 *
|
||
|
24 * SEARCH SLOTS FOR MOUSE AND SUPERSERIAL CARDS
|
||
|
25 *
|
||
|
26 IDCARD LDY #$05
|
||
|
27 LDA (PTR),Y
|
||
|
28 CMP #$38 ; PASCAL ID BYTE
|
||
|
29 BNE NEXTCARD
|
||
|
30 LDY #$07
|
||
|
31 LDA (PTR),Y
|
||
|
32 CMP #$18
|
||
|
33 BNE NEXTCARD ; PASCAL ID BYTE
|
||
|
34 ISMOU LDY #$0C
|
||
|
35 LDA (PTR),Y
|
||
|
36 CMP #$20
|
||
|
37 BNE ISSSC
|
||
|
38 LDY #$FB
|
||
|
39 LDA (PTR),Y
|
||
|
40 CMP #$D6
|
||
|
41 BNE ISSSC
|
||
|
42 LDA PTRH
|
||
|
43 STA MOUROM
|
||
|
44 AND #$07
|
||
|
45 STA MOUINDEX
|
||
|
46 ASL
|
||
|
47 ASL
|
||
|
48 ASL
|
||
|
49 ASL
|
||
|
50 STA MOUSLOT
|
||
|
51 BNE NEXTCARD
|
||
|
52 ISSSC LDY #$0C
|
||
|
53 LDA (PTR),Y
|
||
|
54 CMP #$31
|
||
|
55 BNE NEXTCARD
|
||
|
56 LDA PTRH
|
||
|
57 STA SSCROM
|
||
|
58 ASL
|
||
|
59 ASL
|
||
|
60 ASL
|
||
|
61 ASL
|
||
|
62 STA SSCSLOT
|
||
|
63 NEXTCARD INC PTRH
|
||
|
64 LDA PTRH
|
||
|
65 CMP #$C8
|
||
|
66 BNE IDCARD
|
||
|
67 *
|
||
|
68 * INIT MOUSE
|
||
|
69 *
|
||
|
70 INITMOU LDY MOUINDEX
|
||
|
71 BEQ INITSSC
|
||
|
72 LDY #$19 ; INIT MOUSE
|
||
|
73 JSR CALLMOU
|
||
|
74 LDY #$12 ; SET MOUSE
|
||
|
75 LDA #$01 ; TRANSPARENT MODE
|
||
|
76 JSR CALLMOU
|
||
|
77 LDA #$00
|
||
|
78 STA $478
|
||
|
79 STA $4F8
|
||
|
80 LDA #$C0
|
||
|
81 STA $578
|
||
|
82 LDA #$3F
|
||
|
83 STA $5F8
|
||
|
84 LDY #$17 ; CLAMP MOUSE
|
||
|
85 LDA #$00 ; X AXIS
|
||
|
86 JSR CALLMOU
|
||
|
87 LDY #$17 ; CLAMP MOUSE
|
||
|
88 LDA #$01 ; YAXIS
|
||
|
89 JSR CALLMOU
|
||
|
90 *
|
||
|
91 * INIT SSC CARD FOR 115K BAUD
|
||
|
92 *
|
||
|
93 INITSSC LDY SSCSLOT
|
||
|
94 BNE SETSSC
|
||
|
95 JMP EXIT
|
||
|
96 SETSSC LDA #$0B
|
||
|
97 STA $C08A,Y
|
||
|
98 LDA #$10
|
||
|
99 STA $C08B,Y ; 115K
|
||
|
100 *
|
||
|
101 * SYNCHRONIZE WITH PI
|
||
|
102 *
|
||
|
103 SYNC LDA #$80
|
||
|
104 STA $C088,Y
|
||
|
105 ORA #'.'
|
||
|
106 JSR COUT
|
||
|
107 LDA #$FF
|
||
|
108 JSR WAIT
|
||
|
109 LDA KEYBD
|
||
|
110 BMI EXIT
|
||
|
111 LDY SSCSLOT
|
||
|
112 LDA $C089,Y
|
||
|
113 AND #$08
|
||
|
114 BEQ SYNC
|
||
|
115 LDA $C088,Y
|
||
|
116 CMP #$81
|
||
|
117 BNE SYNC
|
||
|
118 *
|
||
|
119 * CHECK INPUT STATE FOR CHANGE
|
||
|
120 *
|
||
|
121 EVENTLP LDX KEYBD
|
||
|
122 BMI SENDKEY
|
||
|
123 DEC WAITMOU
|
||
|
124 BNE EVENTLP
|
||
|
125 CHKMOU LDY #$14 ; READ MOUSE
|
||
|
126 JSR CALLMOU
|
||
|
127 BCS EVENTLP
|
||
|
128 LDY MOUINDEX
|
||
|
129 LDA $478,Y
|
||
|
130 STA MOUXSTAT
|
||
|
131 LDA $4F8,Y
|
||
|
132 STA MOUYSTAT
|
||
|
133 LDY #$15 ; CLEAR MOUSE
|
||
|
134 JSR CALLMOU
|
||
|
135 LDA MOUXSTAT
|
||
|
136 ORA MOUYSTAT
|
||
|
137 BNE SENDMOU
|
||
|
138 CHKBTTN LDY MOUINDEX
|
||
|
139 LDA $778,Y
|
||
|
140 AND #$80
|
||
|
141 CMP BTTNSTAT
|
||
|
142 BEQ EVENTLP
|
||
|
143 JMP SENDBTTN
|
||
|
144 SENDKEY STX KBCLR
|
||
|
145 LDY SSCSLOT
|
||
|
146 LDA #$82 ; KBEVENT CODE
|
||
|
147 JSR SENDACC
|
||
|
148 JSR SENDMOD
|
||
|
149 TXA
|
||
|
150 JSR SENDACC
|
||
|
151 CPX #$9B ; ESC KEY
|
||
|
152 BNE EVENTLP
|
||
|
153 LDA $C062
|
||
|
154 BPL EVENTLP
|
||
|
155 EXIT LDA KBCLR
|
||
|
156 LDY #$12 ; SET MOUSE
|
||
|
157 LDA #$00 ; DISABLE MOUSE
|
||
|
158 JMP CALLMOU
|
||
|
159 SENDMOU LDY SSCSLOT
|
||
|
160 LDA #$84
|
||
|
161 JSR SENDACC
|
||
|
162 LDA MOUXSTAT
|
||
|
163 JSR SENDACC
|
||
|
164 LDA MOUYSTAT
|
||
|
165 JSR SENDACC
|
||
|
166 JMP CHKBTTN
|
||
|
167 SENDBTTN STA BTTNSTAT
|
||
|
168 LDY SSCSLOT
|
||
|
169 LDA #$86
|
||
|
170 JSR SENDACC
|
||
|
171 JSR SENDMOD
|
||
|
172 LDA BTTNSTAT
|
||
|
173 JSR SENDACC
|
||
|
174 JMP EVENTLP
|
||
|
175 SENDMOD LDA $C062
|
||
|
176 ASL
|
||
|
177 LDA $C061
|
||
|
178 ROR
|
||
|
179 AND #$C0
|
||
|
180 SENDACC STA $C088,Y
|
||
|
181 SENDWT LDA #$10
|
||
|
182 AND $C089,Y
|
||
|
183 BEQ SENDWT
|
||
|
184 RTS
|
||
|
185 CALLMOU LDX MOUROM
|
||
|
186 BEQ EXITMOU
|
||
|
187 STX PTRH
|
||
|
188 PHA
|
||
|
189 LDA #$00
|
||
|
190 STA PTRL
|
||
|
191 LDA (PTR),Y
|
||
|
192 STA PTRL
|
||
|
193 LDX MOUROM
|
||
|
194 LDY MOUSLOT
|
||
|
195 PLA
|
||
|
196 PHP
|
||
|
197 SEI
|
||
|
198 JSR IJMP
|
||
|
199 PLP
|
||
|
200 CLC
|
||
|
201 RTS
|
||
|
202 EXITMOU SEC
|
||
|
203 RTS
|
||
|
204 IJMP JMP (PTR)
|
||
|
205 MOUXSTAT DB 0
|
||
|
206 MOUYSTAT DB 0
|
||
|
207 BTTNSTAT DB 0
|
||
|
208 WAITMOU DB 0
|