1 |
;* |
2 |
;* ROlib.h |
3 |
;* |
4 |
;* Assembler interface to RISC OS |
5 |
;* (C) 1997 Andreas Dehmel |
6 |
;* |
7 |
;* Frodo (C) 1994-1997,2002 Christian Bauer |
8 |
;* |
9 |
;* This program is free software; you can redistribute it and/or modify |
10 |
;* it under the terms of the GNU General Public License as published by |
11 |
;* the Free Software Foundation; either version 2 of the License, or |
12 |
;* (at your option) any later version. |
13 |
;* |
14 |
;* This program is distributed in the hope that it will be useful, |
15 |
;* but WITHOUT ANY WARRANTY; without even the implied warranty of |
16 |
;* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
17 |
;* GNU General Public License for more details. |
18 |
;* |
19 |
;* You should have received a copy of the GNU General Public License |
20 |
;* along with this program; if not, write to the Free Software |
21 |
;* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA |
22 |
|
23 |
|
24 |
a1 rn 0 |
25 |
a2 rn 1 |
26 |
a3 rn 2 |
27 |
a4 rn 3 |
28 |
v1 rn 4 |
29 |
v2 rn 5 |
30 |
v3 rn 6 |
31 |
v4 rn 7 |
32 |
v5 rn 8 |
33 |
v6 rn 9 |
34 |
sl rn 10 |
35 |
fp rn 11 |
36 |
ip rn 12 |
37 |
sp rn 13 |
38 |
lr rn 14 |
39 |
pc rn 15 |
40 |
|
41 |
|
42 |
idfn (C) 1997 by Andreas Dehmel |
43 |
|
44 |
; ************ WIMP STUFF **************** |
45 |
|
46 |
AREA CODE, READONLY |
47 |
align 4 |
48 |
export |Wimp_Initialise| |
49 |
= "Wimp_Initialise" |
50 |
align 4 |
51 |
|
52 |
|Wimp_Initialise|: |
53 |
swi 0x600c0 ;XWimp_Initialise |
54 |
movvs a1,#0 ;return 0 if error |
55 |
movvc a1,a2 |
56 |
movs pc,lr |
57 |
|
58 |
|
59 |
AREA CODE, READONLY |
60 |
align 4 |
61 |
export |Wimp_CloseDown| |
62 |
= "Wimp_CloseDown" |
63 |
align 4 |
64 |
|
65 |
|Wimp_CloseDown| |
66 |
swi 0x600dd ;XWimp_CloseDown |
67 |
movvc a1,#0 ;return pointer to error block |
68 |
movs pc,lr |
69 |
|
70 |
|
71 |
AREA CODE, READONLY |
72 |
align 4 |
73 |
export |Wimp_CreateWindow| |
74 |
= "Wimp_CreateWindow" |
75 |
align 4 |
76 |
|
77 |
|Wimp_CreateWindow|: |
78 |
mov a2,a1 |
79 |
swi 0x600c1 |
80 |
movvs a1,#0 |
81 |
movs pc,lr |
82 |
|
83 |
|
84 |
AREA CODE, READONLY |
85 |
align 4 |
86 |
export |Wimp_CreateIcon| |
87 |
= "Wimp_CreateIcon" |
88 |
align 4 |
89 |
|
90 |
|Wimp_CreateIcon|: |
91 |
swi 0x600c2 |
92 |
movvs a1,#0 |
93 |
movs pc,lr |
94 |
|
95 |
|
96 |
AREA CODE, READONLY |
97 |
align 4 |
98 |
export |Wimp_DeleteWindow| |
99 |
= "Wimp_DeleteWindow" |
100 |
align 4 |
101 |
|
102 |
|Wimp_DeleteWindow|: |
103 |
mov a2,a1 |
104 |
swi 0x600c3 |
105 |
movvc a1,#0 |
106 |
movs pc,lr |
107 |
|
108 |
|
109 |
AREA CODE, READONLY |
110 |
align 4 |
111 |
export |Wimp_DeleteIcon| |
112 |
= "Wimp_DeleteIcon" |
113 |
align 4 |
114 |
|
115 |
|Wimp_DeleteIcon|: |
116 |
mov a2,a1 |
117 |
swi 0x600c4 |
118 |
movvc a1,#0 |
119 |
movs pc,lr |
120 |
|
121 |
|
122 |
AREA CODE, READONLY |
123 |
align 4 |
124 |
export |Wimp_OpenWindow| |
125 |
= "Wimp_OpenWindow" |
126 |
align 4 |
127 |
|
128 |
|Wimp_OpenWindow|: |
129 |
mov a2,a1 |
130 |
swi 0x600c5 |
131 |
movvc a1,#0 |
132 |
movs pc,lr |
133 |
|
134 |
|
135 |
AREA CODE, READONLY |
136 |
align 4 |
137 |
export |Wimp_CloseWindow| |
138 |
= "Wimp_CloseWindow" |
139 |
align 4 |
140 |
|
141 |
|Wimp_CloseWindow|: |
142 |
mov a2,a1 |
143 |
swi 0x600c6 |
144 |
movvc a1,#0 |
145 |
movs pc,lr |
146 |
|
147 |
|
148 |
AREA CODE, READONLY |
149 |
align 4 |
150 |
export |Wimp_Poll| |
151 |
= "Wimp_Poll" |
152 |
align 4 |
153 |
|
154 |
|Wimp_Poll|: |
155 |
mov a4,a3 |
156 |
swi 0x600c7 |
157 |
mvnvs a1,#0 ;return -1 if error |
158 |
movs pc,lr |
159 |
|
160 |
|
161 |
AREA CODE, READONLY |
162 |
align 4 |
163 |
export |Wimp_RedrawWindow| |
164 |
= "Wimp_RedrawWindow" |
165 |
align 4 |
166 |
|
167 |
|Wimp_RedrawWindow|: |
168 |
mov a2,a1 |
169 |
swi 0x600c8 |
170 |
movvs a1,#0 |
171 |
movs pc,lr |
172 |
|
173 |
|
174 |
AREA CODE, READONLY |
175 |
align 4 |
176 |
export |Wimp_UpdateWindow| |
177 |
= "Wimp_UpdateWindow" |
178 |
align 4 |
179 |
|
180 |
|Wimp_UpdateWindow| |
181 |
mov a2,a1 |
182 |
swi 0x600c9 |
183 |
movvs a1,#0 |
184 |
movs pc,lr |
185 |
|
186 |
|
187 |
AREA CODE, READONLY |
188 |
align 4 |
189 |
export |Wimp_GetRectangle| |
190 |
= "Wimp_GetRectangle" |
191 |
align 4 |
192 |
|
193 |
|Wimp_GetRectangle|: |
194 |
mov a2,a1 |
195 |
swi 0x600ca |
196 |
movvs a1,#0 |
197 |
movs pc,lr |
198 |
|
199 |
|
200 |
AREA CODE, READONLY |
201 |
align 4 |
202 |
export |Wimp_GetWindowState| |
203 |
= "Wimp_GetWindowState" |
204 |
align 4 |
205 |
|
206 |
|Wimp_GetWindowState|: |
207 |
mov a2,a1 |
208 |
swi 0x600cb |
209 |
movvc a1,#0 |
210 |
movs pc,lr |
211 |
|
212 |
|
213 |
AREA CODE, READONLY |
214 |
align 4 |
215 |
export |Wimp_GetWindowInfo| |
216 |
= "Wimp_GetWindowInfo" |
217 |
align 4 |
218 |
|
219 |
|Wimp_GetWindowInfo|: |
220 |
mov a2,a1 |
221 |
swi 0x600cc |
222 |
movvc a1,#0 |
223 |
movs pc,lr |
224 |
|
225 |
|
226 |
AREA CODE, READONLY |
227 |
align 4 |
228 |
export |Wimp_SetIconState| |
229 |
= "Wimp_SetIconState" |
230 |
align 4 |
231 |
|
232 |
|Wimp_SetIconState|: |
233 |
mov a2,a1 |
234 |
swi 0x600cd |
235 |
movvc a1,#0 |
236 |
movs pc,lr |
237 |
|
238 |
|
239 |
AREA CODE, READONLY |
240 |
align 4 |
241 |
export |Wimp_GetIconState| |
242 |
= "Wimp_GetIconState" |
243 |
align 4 |
244 |
|
245 |
|Wimp_GetIconState|: |
246 |
mov a2,a1 |
247 |
swi 0x600ce |
248 |
movvc a1,#0 |
249 |
movs pc,lr |
250 |
|
251 |
|
252 |
AREA CODE, READONLY |
253 |
align 4 |
254 |
export |Wimp_GetPointerInfo| |
255 |
= "Wimp_GetPointerInfo" |
256 |
align 4 |
257 |
|
258 |
|Wimp_GetPointerInfo|: |
259 |
mov a2,a1 |
260 |
swi 0x600cf |
261 |
movvc a1,#0 |
262 |
movs pc,lr |
263 |
|
264 |
|
265 |
AREA CODE, READONLY |
266 |
align 4 |
267 |
export |Wimp_DragBox| |
268 |
= "Wimp_DragBox" |
269 |
align 4 |
270 |
|
271 |
|Wimp_DragBox|: |
272 |
mov a2,a1 |
273 |
swi 0x600d0 |
274 |
movvc a1,#0 |
275 |
movs pc,lr |
276 |
|
277 |
|
278 |
AREA CODE, READONLY |
279 |
align 4 |
280 |
export |Wimp_ForceRedraw| |
281 |
= "Wimp_ForceRedraw" |
282 |
align 4 |
283 |
|
284 |
|Wimp_ForceRedraw|: |
285 |
stmdb sp!,{v1} |
286 |
ldr v1,[sp,#4] |
287 |
swi 0x600d1 |
288 |
movvc a1,#0 |
289 |
ldmia sp!,{v1} |
290 |
movs pc,lr |
291 |
|
292 |
|
293 |
AREA CODE, READONLY |
294 |
align 4 |
295 |
export |Wimp_SetCaretPosition| |
296 |
= "Wimp_SetCaretPosition" |
297 |
align 4 |
298 |
|
299 |
|Wimp_SetCaretPosition|: |
300 |
stmdb sp!,{v1,v2} |
301 |
add v1,sp,#8 |
302 |
ldmia v1,{v1,v2} |
303 |
swi 0x600d2 |
304 |
movvc a1,#0 |
305 |
ldmia sp!,{v1,v2} |
306 |
movs pc,lr |
307 |
|
308 |
|
309 |
AREA CODE, READONLY |
310 |
align 4 |
311 |
export |Wimp_GetCaretPosition| |
312 |
= "Wimp_GetCaretPosition" |
313 |
align 4 |
314 |
|
315 |
|Wimp_GetCaretPosition|: |
316 |
mov a2,a1 |
317 |
swi 0x600d3 |
318 |
movvc a1,#0 |
319 |
movs pc,lr |
320 |
|
321 |
|
322 |
AREA CODE, READONLY |
323 |
align 4 |
324 |
export |Wimp_CreateMenu| |
325 |
= "Wimp_CreateMenu" |
326 |
align 4 |
327 |
|
328 |
|Wimp_CreateMenu|: |
329 |
mov a4,a3 |
330 |
mov a3,a2 |
331 |
mov a2,a1 |
332 |
swi 0x600d4 |
333 |
movvc a1,#0 |
334 |
movs pc,lr |
335 |
|
336 |
|
337 |
AREA CODE, READONLY |
338 |
align 4 |
339 |
export |Wimp_SetExtent| |
340 |
= "Wimp_SetExtent" |
341 |
align 4 |
342 |
|
343 |
|Wimp_SetExtent|: |
344 |
swi 0x600d7 |
345 |
movvc a1,#0 |
346 |
movs pc,lr |
347 |
|
348 |
|
349 |
AREA CODE, READONLY |
350 |
align 4 |
351 |
export |Wimp_OpenTemplate| |
352 |
= "Wimp_OpenTemplate" |
353 |
align 4 |
354 |
|
355 |
|Wimp_OpenTemplate|: |
356 |
mov a2,a1 |
357 |
swi 0x600d9 |
358 |
movvc a1,#0 |
359 |
movs pc,lr |
360 |
|
361 |
|
362 |
AREA CODE, READONLY |
363 |
align 4 |
364 |
export |Wimp_CloseTemplate| |
365 |
= "Wimp_CloseTemplate" |
366 |
align 4 |
367 |
|
368 |
|Wimp_CloseTemplate|: |
369 |
swi 0x600da |
370 |
movvc a1,#0 |
371 |
movs pc,lr |
372 |
|
373 |
|
374 |
AREA CODE, READONLY |
375 |
align 4 |
376 |
export |Wimp_LoadTemplate| |
377 |
= "Wimp_LoadTemplate" |
378 |
align 4 |
379 |
|
380 |
|Wimp_LoadTemplate|: |
381 |
stmdb sp!,{a1,a2,v1-v4,lr} ;7 registers |
382 |
mov v1,a4 ;Fonts |
383 |
mov a4,a3 ;IndirectLimit |
384 |
ldr a3,[a2] ;*Indirect |
385 |
ldr a2,[a1] ;*Template |
386 |
add v2,sp,#28 |
387 |
ldmia v2,{v2,v4} |
388 |
ldr v3,[v4] ;Position |
389 |
swi 0x600db |
390 |
addvs sp,sp,#8 |
391 |
bvs |WLTexit| |
392 |
str v3,[v4] ;store Position |
393 |
ldmia sp!,{v1,v2} |
394 |
str a2,[v1] |
395 |
str a3,[v2] |
396 |
mov a1,#0 |
397 |
|WLTexit|: |
398 |
ldmia sp!,{v1-v4,pc}^ |
399 |
|
400 |
|
401 |
AREA CODE, READONLY |
402 |
align 4 |
403 |
export |Wimp_ProcessKey| |
404 |
= "Wimp_ProcessKey" |
405 |
align 4 |
406 |
|
407 |
|Wimp_ProcessKey|: |
408 |
swi 0x600dc |
409 |
movvc a1,#0 |
410 |
movs pc,lr |
411 |
|
412 |
|
413 |
AREA CODE, READONLY |
414 |
align 4 |
415 |
export |Wimp_StartTask| |
416 |
= "Wimp_StartTask" |
417 |
align 4 |
418 |
|
419 |
|Wimp_StartTask|: |
420 |
swi 0x600de |
421 |
movs pc,lr |
422 |
|
423 |
|
424 |
AREA CODE, READONLY |
425 |
align 4 |
426 |
export |Wimp_ReportError| |
427 |
= "Wimp_ReportError" |
428 |
align 4 |
429 |
|
430 |
|Wimp_ReportError|: |
431 |
swi 0x600df |
432 |
movvs a1,#0 |
433 |
movvc a1,a2 |
434 |
movs pc,lr |
435 |
|
436 |
|
437 |
AREA CODE, READONLY |
438 |
align 4 |
439 |
export |Wimp_GetWindowOutline| |
440 |
= "Wimp_GetWindowOutline" |
441 |
align 4 |
442 |
|
443 |
|Wimp_GetWindowOutline|: |
444 |
mov a2,a1 |
445 |
swi 0x600e0 |
446 |
movvc a1,#0 |
447 |
movs pc,lr |
448 |
|
449 |
|
450 |
AREA CODE, READONLY |
451 |
align 4 |
452 |
export |Wimp_PollIdle| |
453 |
= "Wimp_PollIdle" |
454 |
align 4 |
455 |
|
456 |
|Wimp_PollIdle|: |
457 |
swi 0x600e1 |
458 |
movs pc,lr |
459 |
|
460 |
|
461 |
AREA CODE, READONLY |
462 |
align 4 |
463 |
export |Wimp_PlotIcon| |
464 |
= "Wimp_PlotIcon" |
465 |
align 4 |
466 |
|
467 |
|Wimp_PlotIcon|: |
468 |
mov a2,a1 |
469 |
swi 0x600e2 |
470 |
movvc a1,#0 |
471 |
movs pc,lr |
472 |
|
473 |
|
474 |
AREA CODE, READONLY |
475 |
align 4 |
476 |
export |Wimp_SendMessage| |
477 |
= "Wimp_SendMessage" |
478 |
align 4 |
479 |
|
480 |
|Wimp_SendMessage|: |
481 |
swi 0x600e7 |
482 |
movvc a1,#0 |
483 |
movs pc,lr |
484 |
|
485 |
|
486 |
AREA CODE, READONLY |
487 |
align 4 |
488 |
export |Wimp_CreateSubMenu| |
489 |
= "Wimp_CreateSubMenu" |
490 |
align 4 |
491 |
|
492 |
|Wimp_CreateSubMenu|: |
493 |
mov a4,a3 |
494 |
mov a3,a2 |
495 |
mov a2,a1 |
496 |
swi 0x600e8 |
497 |
movvc a1,#0 |
498 |
movs pc,lr |
499 |
|
500 |
|
501 |
AREA CODE, READONLY |
502 |
align 4 |
503 |
export |Wimp_SpriteOp| |
504 |
= "Wimp_SpriteOp" |
505 |
align 4 |
506 |
|
507 |
|Wimp_SpriteOp|: |
508 |
stmdb sp!,{v1-v4,lr} |
509 |
add v1,sp,#20 |
510 |
ldmia v1,{v1-v4} |
511 |
swi 0x600e9 |
512 |
movvc a1,#0 |
513 |
ldmia sp!,{v1-v4,pc}^ |
514 |
|
515 |
|
516 |
AREA CODE, READONLY |
517 |
align 4 |
518 |
export |Wimp_BaseOfSprites| |
519 |
= "Wimp_BaseOfSprites" |
520 |
align 4 |
521 |
|
522 |
|Wimp_BaseOfSprites|: |
523 |
mov a3,a1 |
524 |
mov a4,a2 |
525 |
swi 0x600ea |
526 |
strvc a1,[a3] |
527 |
strvc a2,[a4] |
528 |
movvc a1,#0 |
529 |
movs pc,lr |
530 |
|
531 |
|
532 |
AREA CODE, READONLY |
533 |
align 4 |
534 |
export |Wimp_CommandWindow| |
535 |
= "Wimp_CommandWindow" |
536 |
align 4 |
537 |
|
538 |
|Wimp_CommandWindow|: |
539 |
swi 0x600ef |
540 |
movvc a1,#0 |
541 |
movs pc,lr |
542 |
|
543 |
|
544 |
AREA CODE, READONLY |
545 |
align 4 |
546 |
export |Wimp_TransferBlock| |
547 |
= "Wimp_TransferBlock" |
548 |
align 4 |
549 |
|
550 |
|Wimp_TransferBlock|: |
551 |
str v1,[sp,#-4]! |
552 |
ldr v1,[sp,#4] |
553 |
swi 0x600f1 |
554 |
ldr v1,[sp],#4 |
555 |
movvc a1,#0 |
556 |
movs pc,lr |
557 |
|
558 |
|
559 |
AREA CODE, READONLY |
560 |
align 4 |
561 |
export |Wimp_SpriteInfo| |
562 |
= "Wimp_SpriteInfo" |
563 |
align 4 |
564 |
|
565 |
|Wimp_SpriteInfo|: |
566 |
stmdb sp!,{v1-v6,lr} |
567 |
mov v4,a2 |
568 |
mov v5,a3 |
569 |
mov v6,a4 |
570 |
mov a3,a1 |
571 |
mov a1,#40 |
572 |
movvc a1,#0 |
573 |
swi 0x600e9 ;Wimp_SpriteOp |
574 |
str a4,[v4] |
575 |
str v1,[v5] |
576 |
str v3,[v6] |
577 |
ldmia sp!,{v1-v6,pc}^ |
578 |
|
579 |
|
580 |
AREA CODE, READONLY |
581 |
align 4 |
582 |
export |DragASprite_Start| |
583 |
= "DragASprite_Start" |
584 |
align 4 |
585 |
|
586 |
|DragASprite_Start|: |
587 |
swi 0x62400 |
588 |
movvc a1,#0 |
589 |
movs pc,lr |
590 |
|
591 |
|
592 |
AREA CODE, READONLY |
593 |
align 4 |
594 |
export |DragASprite_Stop| |
595 |
= "DragASprite_Stop" |
596 |
align 4 |
597 |
|
598 |
|DragASprite_Stop|: |
599 |
swi 0x62401 |
600 |
movvc a1,#0 |
601 |
movs pc,lr |
602 |
|
603 |
|
604 |
AREA CODE, READONLY |
605 |
align 4 |
606 |
export |ColourTrans_SelectTable| |
607 |
= "ColourTrans_SelectTable" |
608 |
align 4 |
609 |
|
610 |
|ColourTrans_SelectTable|: |
611 |
stmdb sp!,{v1-v4,lr} |
612 |
add v1,sp,#20 |
613 |
ldmia v1,{v1-v4} |
614 |
ldr v1,[v1] |
615 |
swi 0x60740 |
616 |
addvs sp,sp,#4 |
617 |
bvs |CTSTexit| |
618 |
mov a1,v1 |
619 |
ldr v1,[sp],#4 |
620 |
str a1,[v1] |
621 |
mov a1,#0 |
622 |
|CTSTexit|: |
623 |
ldmia sp!,{v2-v4,pc}^ |
624 |
|
625 |
|
626 |
AREA CODE, READONLY |
627 |
align 4 |
628 |
export |ColourTrans_SetFontColours| |
629 |
= "ColourTrans_SetFontColours" |
630 |
align 4 |
631 |
|
632 |
|ColourTrans_SetFontColours|: |
633 |
swi 0x6074f |
634 |
movvc a1,#0 |
635 |
movs pc,lr |
636 |
|
637 |
|
638 |
AREA CODE, READONLY |
639 |
align 4 |
640 |
export |ColourTrans_SetColour| |
641 |
= "ColourTrans_SetColour" |
642 |
align 4 |
643 |
|
644 |
|ColourTrans_SetColour|: |
645 |
str v1,[sp,#-4]! |
646 |
mov v1,a3 |
647 |
mov a4,a2 |
648 |
swi 0x6075e |
649 |
movvc a1,#0 |
650 |
ldr v1,[sp],#4 |
651 |
movs pc,lr |
652 |
|
653 |
|
654 |
AREA CODE, READONLY |
655 |
align 4 |
656 |
export |ColourTrans_SetGCOL| |
657 |
= "ColourTrans_SetGCOL" |
658 |
align 4 |
659 |
|
660 |
|ColourTrans_SetGCOL|: |
661 |
str v1,[sp,#-4]! |
662 |
mov v1,a3 |
663 |
mov a4,a2 |
664 |
swi 0x60743 |
665 |
movvc a1,#0 |
666 |
ldr v1,[sp],#4 |
667 |
movs pc,lr |
668 |
|
669 |
|
670 |
|
671 |
|
672 |
|
673 |
; ************* OS STUFF *************** |
674 |
|
675 |
AREA CODE, READONLY |
676 |
align 4 |
677 |
export |OS_ReadModeVariable| |
678 |
= "OS_ReadModeVariable" |
679 |
align 4 |
680 |
|
681 |
|OS_ReadModeVariable|: |
682 |
swi 0x20035 |
683 |
mvncs a1,#0 |
684 |
movcc a1,a3 |
685 |
movs pc,lr |
686 |
|
687 |
|
688 |
AREA CODE, READONLY |
689 |
align 4 |
690 |
export |OS_ReadDynamicArea| |
691 |
= "OS_ReadDynamicArea" |
692 |
align 4 |
693 |
|
694 |
|OS_ReadDynamicArea|: |
695 |
swi 0x2005c |
696 |
movvs a1,#0 |
697 |
movs pc,lr |
698 |
|
699 |
|
700 |
AREA CODE, READONLY |
701 |
align 4 |
702 |
export |ModeColourNumber| |
703 |
= "ModeColourNumber" |
704 |
align 4 |
705 |
|
706 |
|ModeColourNumber|: |
707 |
swi 0x60744 ;XColourTrans_ReturnColourNumber |
708 |
mvnvs a1,#0 |
709 |
movs pc,lr |
710 |
|
711 |
|
712 |
AREA CODE, READONLY |
713 |
align 4 |
714 |
export |ScanKeys| |
715 |
= "ScanKeys" |
716 |
align 4 |
717 |
|
718 |
|ScanKeys|: |
719 |
mov a2,a1 |
720 |
mov a1,#121 |
721 |
swi 0x20006 ;XOS_Byte 121 |
722 |
mov a1,a2 |
723 |
movs pc,lr |
724 |
|
725 |
|
726 |
AREA CODE, READONLY |
727 |
align 4 |
728 |
export |ReadKeyboardStatus| |
729 |
= "ReadKeyboardStatus" |
730 |
align 4 |
731 |
|
732 |
|ReadKeyboardStatus|: |
733 |
mov a1,#202 |
734 |
mov a2,#0 |
735 |
mov a3,#255 |
736 |
swi 0x20006 |
737 |
mov a1,a2 |
738 |
movs pc,lr |
739 |
|
740 |
|
741 |
AREA CODE, READONLY |
742 |
align 4 |
743 |
export |ReadDragType| |
744 |
= "ReadDragType" |
745 |
align 4 |
746 |
|
747 |
|ReadDragType|: |
748 |
mov a1,#161 |
749 |
mov a2,#28 |
750 |
swi 0x20006 |
751 |
and a1,a3,#2 |
752 |
movs pc,lr |
753 |
|
754 |
|
755 |
AREA CODE, READONLY |
756 |
align 4 |
757 |
export |SetMousePointer| |
758 |
= "SetMousePointer" |
759 |
align 4 |
760 |
|
761 |
|SetMousePointer|: |
762 |
mov a2,a1 |
763 |
mov a1,#106 |
764 |
swi 0x20006 |
765 |
mov a1,a2 |
766 |
movs pc,lr |
767 |
|
768 |
|
769 |
AREA CODE, READONLY ;sprite ops (I have 52, 53 and 56 in mind) |
770 |
align 4 |
771 |
export |OS_SpriteOp| |
772 |
= "OS_SpriteOp" |
773 |
align 4 |
774 |
|
775 |
|OS_SpriteOp|: |
776 |
stmdb sp!,{v1-v4,lr} |
777 |
add v1,sp,#20 |
778 |
ldmia v1,{v1-v4} |
779 |
swi 0x2002e |
780 |
movvc a1,#0 |
781 |
ldmia sp!,{v1-v4,pc}^ |
782 |
|
783 |
|
784 |
AREA CODE, READONLY |
785 |
align 4 |
786 |
export |OS_Plot| |
787 |
= "OS_Plot" |
788 |
align 4 |
789 |
|
790 |
|OS_Plot|: |
791 |
swi 0x20045 |
792 |
movs pc,lr |
793 |
|
794 |
|
795 |
AREA CODE, READONLY |
796 |
align 4 |
797 |
export |MouseBoundingBox| |
798 |
= "MouseBoundingBox" |
799 |
align 4 |
800 |
|
801 |
|MouseBoundingBox|: |
802 |
mov a2,a1 |
803 |
mov a1,#21 |
804 |
swi 0x20007 ;OS_Word21,1 |
805 |
movvc a1,#0 |
806 |
movs pc,lr |
807 |
|
808 |
|
809 |
AREA CODE, READONLY |
810 |
align 4 |
811 |
export |OS_ReadMonotonicTime| |
812 |
= "OS_ReadMonotonicTime" |
813 |
align 4 |
814 |
|
815 |
|OS_ReadMonotonicTime|: |
816 |
swi 0x20042 |
817 |
movs pc,lr |
818 |
|
819 |
|
820 |
AREA CODE, READONLY |
821 |
align 4 |
822 |
export |OS_ReadC| |
823 |
= "OS_ReadC" |
824 |
align 4 |
825 |
|
826 |
|OS_ReadC|: |
827 |
mov a2,a1 |
828 |
swi 0x20004 |
829 |
strccb a1,[a2] |
830 |
movcc a1,#0 |
831 |
movs pc,lr |
832 |
|
833 |
|
834 |
AREA CODE, READONLY |
835 |
align 4 |
836 |
export |OS_ReadLine| |
837 |
= "OS_ReadLine" |
838 |
align 4 |
839 |
|
840 |
|OS_ReadLine|: |
841 |
stmdb sp!,{a1,v1,v2} |
842 |
stmdb sp!,{a1-a3} |
843 |
mov a1,#200 |
844 |
mov a2,#1 |
845 |
mvn a3,#1 |
846 |
swi 0x20006 |
847 |
mov v2,a2 |
848 |
ldmia sp!,{a1-a3} |
849 |
ldr v1,[sp,#8] |
850 |
swi 0x2000e |
851 |
mov v1,a2 |
852 |
mov a1,#200 |
853 |
mov a2,v2 |
854 |
mvn a3,#0 |
855 |
swi 0x20006 |
856 |
mov a2,v1 |
857 |
ldmia sp!,{a4,v1,v2} |
858 |
bic a4,a4,#0xc0000000 |
859 |
mov a1,#10 |
860 |
strb a1,[a4,a2] ;make compatible with fgets (terminated by 10, not 13) |
861 |
mov a1,a2 |
862 |
rsbcs a1,a1,#0 |
863 |
movs pc,lr |
864 |
|
865 |
|
866 |
AREA CODE, READONLY |
867 |
align 4 |
868 |
export |OS_ReadEscapeState| |
869 |
= "OS_ReadEscapeState" |
870 |
align 4 |
871 |
|
872 |
|OS_ReadEscapeState|: |
873 |
swi 0x2002c |
874 |
movcc a1,#0 |
875 |
movcs a1,#1 |
876 |
movs pc,lr |
877 |
|
878 |
|
879 |
AREA CODE, READONLY |
880 |
align 4 |
881 |
export |ReadCatalogueInfo| |
882 |
= "ReadCatalogueInfo" |
883 |
align 4 |
884 |
|
885 |
|ReadCatalogueInfo|: |
886 |
stmdb sp!,{v1-v3,lr} |
887 |
mov v3,a2 |
888 |
mov a2,a1 |
889 |
mov a1,#17 |
890 |
swi 0x20008 ;OS_File 17 |
891 |
stmia v3,{a3-v2} |
892 |
ldmia sp!,{v1-v3,pc}^ |
893 |
|
894 |
|
895 |
AREA CODE, READONLY |
896 |
align 4 |
897 |
export |ReadDirName| |
898 |
= "ReadDirName" |
899 |
align 4 |
900 |
|
901 |
|ReadDirName|: |
902 |
stmdb sp!,{v1-v4,lr} |
903 |
mov v4,a3 ;preserve dir_env * |
904 |
ldmia a3,{a4-v3} |
905 |
mov a3,a2 |
906 |
mov a2,a1 |
907 |
mov a1,#9 |
908 |
swi 0x2000c ;OS_GBPB 9 |
909 |
stmia v4,{a4,v1} |
910 |
movvc a1,#0 |
911 |
ldmia sp!,{v1-v4,pc}^ |
912 |
|
913 |
|
914 |
AREA CODE, READONLY |
915 |
align 4 |
916 |
export |ReadDirNameInfo| |
917 |
= "ReadDirNameInfo" |
918 |
align 4 |
919 |
|
920 |
|ReadDirNameInfo|: |
921 |
stmdb sp!,{v1-v4,lr} |
922 |
mov v4,a3 |
923 |
ldmia a3,{a4-v3} |
924 |
mov a3,a2 |
925 |
mov a2,a1 |
926 |
mov a1,#10 |
927 |
swi 0x2000c ;OS_GBPB 10 |
928 |
stmia v4,{a4,v1} |
929 |
movvc a1,#0 |
930 |
ldmia sp!,{v1-v4,pc}^ |
931 |
|
932 |
|
933 |
AREA CODE, READONLY |
934 |
align 4 |
935 |
export |DeleteFile| |
936 |
= "DeleteFile" |
937 |
align 4 |
938 |
|
939 |
|DeleteFile|: |
940 |
stmdb sp!,{v1,v2} |
941 |
mov a2,a1 |
942 |
mov a1,#6 |
943 |
swi 0x20008 ;OS_File 6 |
944 |
movvc a1,#0 |
945 |
ldmia sp!,{v1,v2} |
946 |
movs pc,lr |
947 |
|
948 |
|
949 |
AREA CODE, READONLY |
950 |
align 4 |
951 |
export |ConvertInteger1| |
952 |
= "ConvertInteger1" |
953 |
align 4 |
954 |
|
955 |
|ConvertInteger1|: |
956 |
swi 0x200d9 |
957 |
mov a1,a2 |
958 |
movs pc,lr |
959 |
|
960 |
|
961 |
AREA CODE, READONLY |
962 |
align 4 |
963 |
export |ConvertInteger2| |
964 |
= "ConvertInteger2" |
965 |
align 4 |
966 |
|
967 |
|ConvertInteger2|: |
968 |
swi 0x200da |
969 |
mov a1,a2 |
970 |
movs pc,lr |
971 |
|
972 |
|
973 |
AREA CODE, READONLY |
974 |
align 4 |
975 |
export |ConvertInteger3| |
976 |
= "ConvertInteger3" |
977 |
align 4 |
978 |
|
979 |
|ConvertInteger3|: |
980 |
swi 0x200db |
981 |
mov a1,a2 |
982 |
movs pc,lr |
983 |
|
984 |
|
985 |
AREA CODE, READONLY |
986 |
align 4 |
987 |
export |ConvertInteger4| |
988 |
= "ConvertInteger4" |
989 |
align 4 |
990 |
|
991 |
|ConvertInteger4|: |
992 |
swi 0x200dc |
993 |
mov a1,a2 |
994 |
movs pc,lr |
995 |
|
996 |
|
997 |
AREA CODE, READONLY |
998 |
align 4 |
999 |
export |OS_FlushBuffer| |
1000 |
= "OS_FlushBuffer" |
1001 |
align 4 |
1002 |
|
1003 |
|OS_FlushBuffer|: |
1004 |
mov a2,a1 |
1005 |
mov a1,#21 |
1006 |
swi 0x20006 |
1007 |
movvc a1,#0 |
1008 |
movs pc,lr |
1009 |
|
1010 |
|
1011 |
|
1012 |
|
1013 |
|
1014 |
|
1015 |
; ************ MISC STUFF *************** |
1016 |
|
1017 |
AREA CODE, READONLY |
1018 |
align 4 |
1019 |
export |Joystick_Read| |
1020 |
= "Joystick_Read" |
1021 |
align 4 |
1022 |
|
1023 |
|Joystick_Read|: |
1024 |
swi 0x63f40 ;XJoystick_Read (Acorn) |
1025 |
bvc |JRexit| |
1026 |
ldr a2,[a1] ;get error-number |
1027 |
eor a2,a2,#0xe6 |
1028 |
eors a2,a2,#0x100 |
1029 |
mvneq a1,#1 ;-2 ==> unknown SWI |
1030 |
mvnne a1,#0 ;-1 ==> error generated from joystick module |
1031 |
|JRexit|: |
1032 |
movs pc,lr |
1033 |
|
1034 |
|
1035 |
|
1036 |
|
1037 |
|
1038 |
; ************** SOUND SWIS ************* |
1039 |
|
1040 |
AREA CODE, READONLY |
1041 |
align 4 |
1042 |
export |Sound_Volume| |
1043 |
= "Sound_Volume" |
1044 |
align 4 |
1045 |
|
1046 |
|Sound_Volume|: |
1047 |
swi 0x60180 |
1048 |
mvnvs a1,#0 |
1049 |
movs pc,lr |
1050 |
|
1051 |
|
1052 |
; *********** DIGITAL RENDERER ********** |
1053 |
|
1054 |
DigiRendChunk equ 0x6F700 ;X flag set |
1055 |
|
1056 |
|
1057 |
AREA CODE, READONLY |
1058 |
align 4 |
1059 |
export |DigitalRenderer_Activate| |
1060 |
= "DigitalRenderer_Activate" |
1061 |
align 4 |
1062 |
|
1063 |
|DigitalRenderer_Activate|: |
1064 |
swi DigiRendChunk |
1065 |
movvc a1,#0 |
1066 |
movs pc,lr |
1067 |
|
1068 |
|
1069 |
AREA CODE, READONLY |
1070 |
align 4 |
1071 |
export |DigitalRenderer_Deactivate| |
1072 |
= "DigitalRenderer_Deactivate" |
1073 |
align 4 |
1074 |
|
1075 |
|DigitalRenderer_Deactivate|: |
1076 |
swi DigiRendChunk+1 |
1077 |
movvc a1,#0 |
1078 |
movs pc,lr |
1079 |
|
1080 |
|
1081 |
AREA CODE, READONLY |
1082 |
align 4 |
1083 |
export |DigitalRenderer_Pause| |
1084 |
= "DigitalRenderer_Pause" |
1085 |
align 4 |
1086 |
|
1087 |
|DigitalRenderer_Pause|: |
1088 |
swi DigiRendChunk+2 |
1089 |
movvc a1,#0 |
1090 |
movs pc,lr |
1091 |
|
1092 |
|
1093 |
AREA CODE, READONLY |
1094 |
align 4 |
1095 |
export |DigitalRenderer_Resume| |
1096 |
= "DigitalRenderer_Resume" |
1097 |
align 4 |
1098 |
|
1099 |
|DigitalRenderer_Resume|: |
1100 |
swi DigiRendChunk+3 |
1101 |
movvc a1,#0 |
1102 |
movs pc,lr |
1103 |
|
1104 |
|
1105 |
AREA CODE, READONLY |
1106 |
align 4 |
1107 |
export |DigitalRenderer_GetTables| |
1108 |
= "DigitalRenderer_GetTables" |
1109 |
align 4 |
1110 |
|
1111 |
|DigitalRenderer_GetTables|: |
1112 |
mov a3,a1 |
1113 |
mov a4,a2 |
1114 |
swi DigiRendChunk+4 |
1115 |
strvc a1,[a3] |
1116 |
strvc a2,[a4] |
1117 |
movvc a1,#0 |
1118 |
movs pc,lr |
1119 |
|
1120 |
|
1121 |
AREA CODE, READONLY |
1122 |
align 4 |
1123 |
export |DigitalRenderer_ReadState| |
1124 |
= "DigitalRenderer_ReadState" |
1125 |
align 4 |
1126 |
|
1127 |
|DigitalRenderer_ReadState|: |
1128 |
swi DigiRendChunk+5 |
1129 |
mvnvs a1,#0 ;returns -1 on error |
1130 |
movs pc,lr |
1131 |
|
1132 |
|
1133 |
AREA CODE, READONLY |
1134 |
align 4 |
1135 |
export |DigitalRenderer_NewSample| |
1136 |
= "DigitalRenderer_NewSample" |
1137 |
align 4 |
1138 |
|
1139 |
|DigitalRenderer_NewSample|: |
1140 |
swi DigiRendChunk+6 |
1141 |
movvc a1,#0 |
1142 |
movs pc,lr |
1143 |
|
1144 |
|
1145 |
; *********** PLOTTER ************** |
1146 |
|
1147 |
BPlotChunk equ 0x70100 ;X bit set |
1148 |
|
1149 |
AREA CODE, READONLY |
1150 |
align 4 |
1151 |
export |PlotZoom1| |
1152 |
= "PlotZoom1" |
1153 |
align 4 |
1154 |
|
1155 |
|PlotZoom1|: |
1156 |
swi BPlotChunk |
1157 |
movs pc,lr |
1158 |
|
1159 |
|
1160 |
AREA CODE, READONLY |
1161 |
align 4 |
1162 |
export |PlotZoom2| |
1163 |
= "PlotZoom2" |
1164 |
align 4 |
1165 |
|
1166 |
|PlotZoom2|: |
1167 |
swi BPlotChunk+1 |