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