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