ViewVC Help
View File | Revision Log | Show Annotations | Revision Graph | Root Listing
root/cebix/Frodo4/Src/ROlib.s
Revision: 1.4
Committed: 2005-06-27T19:55:48Z (17 years, 5 months ago) by cebix
Branch: MAIN
CVS Tags: VERSION_4_2, HEAD
Changes since 1.3: +1 -1 lines
Log Message:
updated copyright dates

File Contents

# Content
1 ;*
2 ;* ROlib.h
3 ;*
4 ;* Assembler interface to RISC OS
5 ;* (C) 1997 Andreas Dehmel
6 ;*
7 ;* Frodo (C) 1994-1997,2002-2005 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