diff src/video/riscos/SDL_riscosASM.s @ 1035:974ba6ae0fa3

Date: Wed, 26 Jan 2005 13:37:09 GMT From: Peter Naulls Subject: RISC OS SDL Patches Sam, I've attached a diff of the latest changes to libSDL for RISC OS support. These changes are by Alan Buckley and myself. The most significant of these are: Optimised assembler blit rountines - I've attached the file src/video/riscos/SDL_riscosASM.s which is needed for this. Move to using /dev/dsp instead of its own audio implementation. This means that src/audio/riscos/SDL_drenderer.c should be removed Typo fixes. Mainly correct spelling of "RISC OS", but some from elsewhere too.
author Sam Lantinga <slouken@libsdl.org>
date Sat, 12 Feb 2005 18:01:31 +0000
parents
children 7eeb3324d37d
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/video/riscos/SDL_riscosASM.s	Sat Feb 12 18:01:31 2005 +0000
@@ -0,0 +1,121 @@
+Date: Wed, 26 Jan 2005 13:37:09 GMT
+From: Peter Naulls <peter@chocky.org>
+To: slouken@libsdl.org
+Subject: RISC OS SDL Patches
+
+;
+;    SDL - Simple DirectMedia Layer
+;    Copyright (C) 1997-2004 Sam Lantinga
+;
+;    This library is free software; you can redistribute it and/or
+;    modify it under the terms of the GNU Library General Public
+;    License as published by the Free Software Foundation; either
+;    version 2 of the License, or (at your option) any later version.
+;
+;    This library is distributed in the hope that it will be useful,
+;    but WITHOUT ANY WARRANTY; without even the implied warranty of
+;    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+;    Library General Public License for more details.
+;
+;    You should have received a copy of the GNU Library General Public
+;    License along with this library; if not, write to the Free
+;    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+;
+;    Sam Lantinga
+;    slouken@devolution.com
+;
+; Assembler routines for RISC OS display
+;
+
+	AREA |C$$CODE|
+
+	EXPORT |RISCOS_Put32|
+
+; Display 32bpp to 32bpp, 1:1
+;
+; Code provided by Adrain Lees
+;
+; entry a1 -> destination
+;       a2 =  dest width in pixels
+;       a3 =  dest line length in bytes
+;       a4 =  dest height in scanlines
+;       arg5 -> source
+;       arg6 =  byte offset from end of source line to start of next
+
+Arg5    *       10*4
+Arg6    *       Arg5+4
+
+RISCOS_Put32    ROUT
+                STMFD   sp!,{a2,v1-v6,sl,fp,lr}
+                LDR     ip,[sp,#Arg5]
+                MOV     lr,a1
+                B       ucp64lp
+
+00              ;tail strip of 1-15 pixels
+
+                LDR     v1,[ip],#4
+01              SUBS    a2,a2,#1
+                STR     v1,[lr],#4
+                LDRHI   v1,[ip],#4
+                BHI     %01
+                B       %02
+
+ucp64end        ADDS    a2,a2,#16
+                BNE     %00
+
+02              SUBS    a4,a4,#1                ;height--
+                LDRHI   v1,[sp,#Arg6]
+                LDRHI   a2,[sp]                 ;reload width
+                BLS     %03
+
+                ;move to start of next scanline
+
+                ADD     lr,a1,a3
+                ADD     a1,a1,a3
+                ADD     ip,ip,v1
+
+ucp64lp         SUBS    a2,a2,#16
+                BLO     ucp64end
+
+                PLD     [ip,#64]
+
+                LDR     v1,[ip],#4
+                LDR     v2,[ip],#4
+                LDR     v3,[ip],#4
+                LDR     v4,[ip],#4
+                LDR     v5,[ip],#4
+                LDR     v6,[ip],#4
+                LDR     sl,[ip],#4
+                LDR     fp,[ip],#4
+                STR     v1,[lr],#4
+                STR     v2,[lr],#4
+                STR     v3,[lr],#4
+                STR     v4,[lr],#4
+                STR     v5,[lr],#4
+                STR     v6,[lr],#4
+                STR     sl,[lr],#4
+                STR     fp,[lr],#4
+
+                PLD     [ip,#64]
+
+                LDR     v1,[ip],#4
+                LDR     v2,[ip],#4
+                LDR     v3,[ip],#4
+                LDR     v4,[ip],#4
+                LDR     v5,[ip],#4
+                LDR     v6,[ip],#4
+                LDR     sl,[ip],#4
+                LDR     fp,[ip],#4
+                STR     v1,[lr],#4
+                STR     v2,[lr],#4
+                STR     v3,[lr],#4
+                STR     v4,[lr],#4
+                STR     v5,[lr],#4
+                STR     v6,[lr],#4
+                STR     sl,[lr],#4
+                STR     fp,[lr],#4
+
+                B       ucp64lp
+
+03              LDMFD   sp!,{a2,v1-v6,sl,fp,pc}
+