482
|
1 ********************************************************************
|
|
2 * GFX - CoCo 2 graphics subroutine module
|
|
3 *
|
|
4 * $Id$
|
|
5 *
|
1326
|
6 * Edt/Rev YYYY/MM/DD Modified by
|
|
7 * Comment
|
482
|
8 * ------------------------------------------------------------------
|
1326
|
9 * 1 ????/??/??
|
|
10 * From Tandy OS-9 Level One VR 02.00.00.
|
482
|
11
|
|
12 nam GFX
|
|
13 ttl CoCo 2 graphics subroutine module
|
|
14
|
|
15 * Disassembled 98/09/25 21:47:16 by Disasm v1.6 (C) 1988 by RML
|
|
16
|
|
17 ifp1
|
|
18 use defsfile
|
|
19 endc
|
|
20
|
|
21 tylg set Sbrtn+Objct
|
|
22 atrv set ReEnt+rev
|
1326
|
23 rev set $00
|
482
|
24 edition set 1
|
|
25
|
|
26 mod eom,name,tylg,atrv,start,size
|
|
27 u0000 rmb 0
|
|
28 size equ .
|
|
29
|
|
30 name fcs /GFX/
|
|
31 fcb edition
|
|
32
|
|
33 FuncTbl fdb Alpha-FuncTbl
|
|
34 fcc "Alpha"
|
|
35 fcb $FF
|
|
36 fdb Circle-FuncTbl
|
|
37 fcc "Circle"
|
|
38 fcb $FF
|
|
39 fdb Clear-FuncTbl
|
|
40 fcc "Clear"
|
|
41 fcb $FF
|
|
42 fdb CColor-FuncTbl
|
|
43 fcc "Color"
|
|
44 fcb $FF
|
|
45 fdb GColr-FuncTbl
|
|
46 fcc "GColr"
|
|
47 fcb $FF
|
|
48 fdb GLoc-FuncTbl
|
|
49 fcc "GLoc"
|
|
50 fcb $FF
|
|
51 fdb JoyStk-FuncTbl
|
|
52 fcc "JoyStk"
|
|
53 fcb $FF
|
|
54 fdb Line-FuncTbl
|
|
55 fcc "Line"
|
|
56 fcb $FF
|
|
57 fdb Mode-FuncTbl
|
|
58 fcc "Mode"
|
|
59 fcb $FF
|
|
60 fdb Move-FuncTbl
|
|
61 fcc "Move"
|
|
62 fcb $FF
|
|
63 fdb Point-FuncTbl
|
|
64 fcc "Point"
|
|
65 fcb $FF
|
|
66 fdb Quit-FuncTbl
|
|
67 fcc "Quit"
|
|
68 fcb $FF
|
|
69 fdb $0000
|
|
70
|
|
71 stkdepth set 9
|
|
72
|
|
73 start leas -stkdepth,s
|
|
74 ldd 2+stkdepth,s get parameter count
|
|
75 beq BadFunc
|
|
76 tsta param count greater than 255?
|
|
77 bne BadFunc yep, branch to error
|
|
78 leau >FuncTbl,pcr point to function pointer table
|
|
79 L007D ldy ,u++ get pointer to function
|
|
80 beq NoFunc
|
|
81
|
|
82 * Compare passed function name to our list
|
|
83 ldx 4+stkdepth,s
|
|
84 L0084 lda ,x+ get passed param char
|
|
85 eora ,u+ XOR it with compared param char
|
|
86 anda #$DF make case same
|
|
87 beq L0094 branch if equal
|
|
88 leau -1,u back up one
|
|
89 L008E tst ,u+
|
|
90 bpl L008E
|
|
91 bra L007D
|
|
92 L0094 tst -1,u
|
|
93 bpl L0084
|
|
94 tfr y,d put funcion pointer in D
|
|
95 leay >FuncTbl,pcr point Y to table
|
|
96 leay d,y get function address
|
|
97 leax ,s
|
|
98 leau <$11,s
|
|
99 ldd stkdepth+2,s put parameter count in D
|
|
100 jmp ,y
|
|
101
|
|
102 NoFunc ldb #E$NoRout
|
|
103 bra L00AF
|
|
104 BadFunc ldb #E$ParmEr $38
|
|
105 L00AF coma
|
|
106 leas stkdepth,s
|
|
107 rts
|
|
108
|
|
109 * Each subroutine enters with the following parameters
|
|
110 * B = parameter count
|
|
111 * X = temporary stack
|
|
112 * U = pointer to size of first parameter
|
|
113
|
|
114 Mode lda #$0F
|
|
115 bra L00B9
|
|
116
|
|
117 Move lda #$15
|
|
118 L00B9 cmpb #$03 correct number of params?
|
|
119 bne BadFunc
|
|
120 bra L010B
|
|
121
|
|
122 CColor lda #$11
|
|
123 bra L00DE
|
|
124
|
|
125 Point cmpb #$03 correct number of params?
|
|
126 beq L00D4
|
|
127 cmpb #$04
|
|
128 bne BadFunc
|
|
129 leau <$19,s
|
|
130 lbsr L015E
|
|
131 leau <$11,s
|
|
132 L00D4 lda #$18
|
|
133 bra L010B
|
|
134
|
|
135 Clear cmpb #$01 correct number of params?
|
|
136 beq L00E4
|
|
137 lda #$10
|
|
138 L00DE cmpb #$02
|
|
139 bne BadFunc
|
|
140 bra L0136
|
|
141
|
|
142 L00E4 lda #$13
|
|
143 bra L0142
|
|
144
|
|
145 Line cmpb #$06 correct number of params?
|
|
146 bhi BadFunc
|
|
147 cmpb #$03
|
|
148 bcs L015B
|
|
149 bitb #$01
|
|
150 bne L0103
|
|
151 leau <$19,s
|
|
152 cmpb #$04
|
|
153 beq L00FE
|
|
154 leau <$21,s
|
|
155 L00FE bsr L015E
|
|
156 leau <$11,s
|
|
157 L0103 cmpb #$04
|
|
158 bls L0109
|
|
159 bsr L0164
|
|
160 L0109 lda #$16
|
|
161 L010B sta ,x+
|
|
162 bsr L016E
|
|
163 bsr L016E
|
|
164 bra L0144
|
|
165
|
|
166 Circle cmpb #$05 correct number of params?
|
|
167 bhi L015B
|
|
168 cmpb #$02
|
|
169 bcs L015B
|
|
170 bitb #$01
|
|
171 beq L012E
|
|
172 leau <$15,s
|
|
173 cmpb #$03
|
|
174 beq L0129
|
|
175 leau <$1D,s
|
|
176 L0129 bsr L015E
|
|
177 leau <$11,s
|
|
178 L012E cmpb #$03
|
|
179 bls L0134
|
|
180 bsr L0164
|
|
181 L0134 lda #$1A
|
|
182 L0136 sta ,x+
|
|
183 bsr L016E
|
|
184 bra L0144
|
|
185
|
|
186 Alpha lda #$0E
|
|
187 bra L0142
|
|
188
|
|
189 Quit lda #$12
|
|
190 L0142 sta ,x+
|
|
191 L0144 bsr L0149
|
|
192 leas stkdepth,s
|
|
193 rts
|
|
194
|
|
195 L0149 tfr x,d
|
|
196 leax 2,s
|
|
197 pshs x
|
|
198 subd ,s++
|
|
199 tfr d,y
|
|
200 lda #1
|
|
201 os9 I$Write
|
|
202 rts
|
|
203
|
|
204 L0159 leas $06,s
|
|
205 L015B lbra BadFunc
|
|
206 L015E lda #$11
|
|
207 sta ,x+
|
|
208 bra L016E
|
|
209 L0164 puls y
|
|
210 lda #$15
|
|
211 sta ,x+
|
|
212 bsr L016E
|
|
213 pshs y
|
|
214 L016E pshs y,b,a
|
|
215 ldd [,u++]
|
|
216 sta ,x+
|
|
217 pulu y
|
|
218 leay -$01,y
|
|
219 beq L0183
|
|
220 leay -$01,y
|
|
221 bne L0159
|
|
222 tsta
|
|
223 bne L0159
|
|
224 stb -$01,x
|
|
225 L0183 puls pc,y,b,a
|
|
226
|
|
227 GLoc cmpb #$02 correct number of params?
|
|
228 bne L015B
|
|
229 ldx <$13,s
|
|
230 leax -$02,x
|
|
231 bne L015B
|
|
232 lda #1 standard out
|
|
233 ldb #SS.DStat
|
|
234 os9 I$GetStt
|
|
235 bcs L019C
|
|
236 stx [<$11,s]
|
|
237 L019C leas stkdepth,s
|
|
238 rts
|
|
239
|
|
240 GColr cmpb #2 correct number of params?
|
|
241 beq L01AD
|
|
242 cmpb #$04
|
|
243 bne L015B
|
|
244 bsr L0164
|
|
245 bsr L0149
|
|
246 bcs L019C
|
|
247 L01AD lda #$01
|
|
248 ldb #$12
|
|
249 os9 I$GetStt
|
|
250 bcs L019C
|
|
251 tfr a,b
|
|
252 bra L01ED
|
|
253 L01BA leau $04,u
|
|
254 pshs u,x
|
|
255 ldx -$02,u
|
|
256 ldu -$04,u
|
|
257 leax -$01,x
|
|
258 beq L01CC
|
|
259 leax -$01,x
|
|
260 bne L0159
|
|
261 clr ,u+
|
|
262 L01CC stb ,u+
|
|
263 puls pc,u,x
|
|
264
|
|
265 JoyStk cmpb #5 correct number of params?
|
|
266 bne L015B
|
|
267 clr ,x+
|
|
268 bsr L016E
|
|
269 ldx -2,x
|
|
270 lda #1
|
|
271 ldb #SS.Joy
|
|
272 os9 I$GetStt
|
|
273 bcs L019C
|
|
274 tfr a,b
|
|
275 bsr L01BA
|
|
276 tfr x,d
|
|
277 bsr L01BA
|
|
278 tfr y,d
|
|
279 L01ED bsr L01BA
|
|
280 leas stkdepth,s
|
|
281 rts
|
|
282
|
|
283 emod
|
|
284 eom equ *
|
|
285 end
|