mirror of
https://github.com/dschmenk/apple2pi.git
synced 2024-11-24 12:31:30 +00:00
209 lines
5.5 KiB
ArmAsm
Executable File
209 lines
5.5 KiB
ArmAsm
Executable File
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
|