On Wed, 19 Oct 2011 22:52:14 +0100 (GMT Daylight Time), Jeffrey Lee wrote:

> Getting QEMU sorted out took a bit longer than expected (it didn't help 
> that the Debian installer made the boot partition too small!), but I've 
> now got a half-decent way of testing the big endian version. ArcEm runs a 
> tad slow, but better than I was expecting.

Whenever I install Debian, something different decides not to work on
every attempt.  It seems to randomly decide not to install some
feature or some piece of hardware.

> The problem was a bug in the endian swapping code, but it would only 
> affect the last few bytes of the transfer. Any transfer which ended on a 
> word boundary would have been OK. The attached patch should fix the issue, 
> and I've updated the source archive with both mine and Chris's fixes.

Sadly the problem persists even with that patch.  To my untrained eye
it looks like the directory catalog is being passed to HostFS on the
RISC OS side and then being freed.  RISC OS is later looking up
filenames and getting a partially overwritten cached copy back. 

I've just had a thought that this sounds suspiciously related to this:
> * Added some new functions to arch/filecalls.h and a new file 
> arch/filecommon.c. [...]
> They know how to use the fastmap to access memory directly, and
> _there's some buffering code_ to avoid lots of calls to
> fread/fwrite, so with any luck they'll provide good performance on 
> all hosts.

I've added the UpdateFlags/FrameSkip stuff to the configuration (see
attached patch).  With AutoUpdateFlags it is flying - I'm tempted to
try compiling for 68k as it might even manage a usable speed there
now!

Chris
--- RAM Disk:platform.h 2011-10-16 20:56:56 
+++ Files:Projects/arcem-src/amiga/platform.h   2011-10-19 23:28:05 
@@ -34,4 +34,5 @@ extern void cleanup(void);
 extern void sound_exit(void);
 
 int force8bit;
+static int PDD_FrameSkip;
 #endif
--- RAM Disk:DispKbd.c  2011-10-16 20:56:56 
+++ Files:Projects/arcem-src/amiga/DispKbd.c    2011-10-19 23:17:44 
@@ -376,9 +376,6 @@ static int BorderPalEntry;
 #define MAX_DISPLAY_WIDTH 2048
 static ARMword RowBuffer[MAX_DISPLAY_WIDTH/4];
 
-/* TODO - Allow this to be configured */
-static int PDD_FrameSkip = 0;
-
 typedef struct {
        int x,y; /* Current coordinates in pixels */
        int width; /* Width of area being updated */
--- RAM Disk:wb.c       2011-10-16 20:56:56 
+++ Files:Projects/arcem-src/amiga/wb.c 2011-10-19 23:27:20 
@@ -10,6 +10,7 @@
 
 #include "ArcemConfig.h"
 #include "platform.h"
+#include "displaydev.h"
 
 void wblaunch(struct WBStartup *);
 void closewblibs(void);
@@ -134,6 +135,17 @@ void gettooltypes(struct WBArg *wbarg)
 
                if(IIcon->FindToolType(toolarray,"FORCE8BIT")) force8bit=1;
 
+               if(IIcon->FindToolType(toolarray, "USEUPDATEFLAGS"))
+                       DisplayDev_UseUpdateFlags = 1;
+
+               if(s = (char *)IIcon->FindToolType(toolarray, "FRAMESKIP"))
+                       PDD_FrameSkip = atoi(s);
+               else PDD_FrameSkip = 0;
+
+               if(IIcon->FindToolType(toolarray, "AUTOUPDATEFLAGS"))
+                       DisplayDev_AutoUpdateFlags = 1;
+
+
                /* This code implements ReadConfig.c via tooltypes - it 
searches for
                        ST506DISC, but it will only support 1 line atm.
                        It is literally a copy'n'paste of the other code with 
fscanf(fConf)
------------------------------------------------------------------------------
The demand for IT networking professionals continues to grow, and the
demand for specialized networking skills is growing even more rapidly.
Take a complimentary Learning@Ciosco Self-Assessment and learn 
about Cisco certifications, training, and career opportunities. 
http://p.sf.net/sfu/cisco-dev2dev
-- 
arcem-devel mailing list
arcem-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/arcem-devel

Reply via email to