Home | History | Annotate | Download | only in riscos
      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 
     40 Arg5    *       10*4
     41 Arg6    *       Arg5+4
     42 
     43 RISCOS_Put32    ROUT
     44                 STMFD   sp!,{a2,v1-v6,sl,fp,lr}
     45                 LDR     ip,[sp,#Arg5]
     46                 MOV     lr,a1
     47                 B       ucp64lp
     48 
     49 00              ;tail strip of 1-15 pixels
     50 
     51                 LDR     v1,[ip],#4
     52 01              SUBS    a2,a2,#1
     53                 STR     v1,[lr],#4
     54                 LDRHI   v1,[ip],#4
     55                 BHI     %01
     56                 B       %02
     57 
     58 ucp64end        ADDS    a2,a2,#16
     59                 BNE     %00
     60 
     61 02              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 
     72 ucp64lp         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 
    115 03              LDMFD   sp!,{a2,v1-v6,sl,fp,pc}
    116 
    117