1;
2;    SDL - Simple DirectMedia Layer
3;    Copyright (C) 1997-2012 Sam Lantinga
4;
5;    This library is free software; you can redistribute it and/or
6;    modify it under the terms of the GNU Library General Public
7;    License as published by the Free Software Foundation; either
8;    version 2 of the License, or (at your option) any later version.
9;
10;    This library is distributed in the hope that it will be useful,
11;    but WITHOUT ANY WARRANTY; without even the implied warranty of
12;    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
13;    Library General Public License for more details.
14;
15;    You should have received a copy of the GNU Library General Public
16;    License along with this library; if not, write to the Free
17;    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
18;
19;    Sam Lantinga
20;    slouken@libsdl.org
21;
22; Assembler routines for RISC OS display
23;
24
25	AREA |C$$CODE|
26
27	EXPORT |RISCOS_Put32|
28
29; Display 32bpp to 32bpp, 1:1
30;
31; Code provided by Adrain Lees
32;
33; entry a1 -> destination
34;       a2 =  dest width in pixels
35;       a3 =  dest line length in bytes
36;       a4 =  dest height in scanlines
37;       arg5 -> source
38;       arg6 =  byte offset from end of source line to start of next
39
40Arg5    *       10*4
41Arg6    *       Arg5+4
42
43RISCOS_Put32    ROUT
44                STMFD   sp!,{a2,v1-v6,sl,fp,lr}
45                LDR     ip,[sp,#Arg5]
46                MOV     lr,a1
47                B       ucp64lp
48
4900              ;tail strip of 1-15 pixels
50
51                LDR     v1,[ip],#4
5201              SUBS    a2,a2,#1
53                STR     v1,[lr],#4
54                LDRHI   v1,[ip],#4
55                BHI     %01
56                B       %02
57
58ucp64end        ADDS    a2,a2,#16
59                BNE     %00
60
6102              SUBS    a4,a4,#1                ;height--
62                LDRHI   v1,[sp,#Arg6]
63                LDRHI   a2,[sp]                 ;reload width
64                BLS     %03
65
66                ;move to start of next scanline
67
68                ADD     lr,a1,a3
69                ADD     a1,a1,a3
70                ADD     ip,ip,v1
71
72ucp64lp         SUBS    a2,a2,#16
73                BLO     ucp64end
74
75                PLD     [ip,#64]
76
77                LDR     v1,[ip],#4
78                LDR     v2,[ip],#4
79                LDR     v3,[ip],#4
80                LDR     v4,[ip],#4
81                LDR     v5,[ip],#4
82                LDR     v6,[ip],#4
83                LDR     sl,[ip],#4
84                LDR     fp,[ip],#4
85                STR     v1,[lr],#4
86                STR     v2,[lr],#4
87                STR     v3,[lr],#4
88                STR     v4,[lr],#4
89                STR     v5,[lr],#4
90                STR     v6,[lr],#4
91                STR     sl,[lr],#4
92                STR     fp,[lr],#4
93
94                PLD     [ip,#64]
95
96                LDR     v1,[ip],#4
97                LDR     v2,[ip],#4
98                LDR     v3,[ip],#4
99                LDR     v4,[ip],#4
100                LDR     v5,[ip],#4
101                LDR     v6,[ip],#4
102                LDR     sl,[ip],#4
103                LDR     fp,[ip],#4
104                STR     v1,[lr],#4
105                STR     v2,[lr],#4
106                STR     v3,[lr],#4
107                STR     v4,[lr],#4
108                STR     v5,[lr],#4
109                STR     v6,[lr],#4
110                STR     sl,[lr],#4
111                STR     fp,[lr],#4
112
113                B       ucp64lp
114
11503              LDMFD   sp!,{a2,v1-v6,sl,fp,pc}
116
117