diff --git a/VersionASM b/VersionASM
index 4954fd10496442c07fcbca05a57851eddbed886e..6d858eaf9853575f43327098ee13e544b541d7be 100644
--- a/VersionASM
+++ b/VersionASM
@@ -6,9 +6,9 @@
 			GBLS	Module_MinorVersion
 			GBLS	Module_Date
 			GBLS	Module_FullVersion
-Module_MajorVersion	SETS    "5.06"
-Module_Version          SETA    506
+Module_MajorVersion	SETS    "5.07"
+Module_Version          SETA    507
 Module_MinorVersion	SETS	""
-Module_Date		SETS    "01 Nov 1999"
-Module_FullVersion      SETS    "5.06"
+Module_Date		SETS    "02 Nov 1999"
+Module_FullVersion      SETS    "5.07"
                         END
diff --git a/VersionNum b/VersionNum
index d6be956d2146ce4b8a04c34b0640869aa0d1bc1b..b7aac6bcd1cddb991e020508500a4d9fedd1153f 100644
--- a/VersionNum
+++ b/VersionNum
@@ -1,15 +1,15 @@
-/* (5.06)
+/* (5.07)
  *
  * This file is automatically maintained by srccommit, do not edit manually.
  *
  */
-#define Module_MajorVersion_CMHG     	5.06
+#define Module_MajorVersion_CMHG     	5.07
 #define Module_MinorVersion_CMHG	
-#define Module_Date_CMHG      		01 Nov 1999
+#define Module_Date_CMHG      		02 Nov 1999
 
-#define Module_MajorVersion     	"5.06"
-#define Module_Version                  506
+#define Module_MajorVersion     	"5.07"
+#define Module_Version                  507
 #define Module_MinorVersion		""
-#define Module_Date      		"01 Nov 1999"
+#define Module_Date      		"02 Nov 1999"
 
-#define Module_FullVersion              "5.06"
+#define Module_FullVersion              "5.07"
diff --git a/s/Middle b/s/Middle
index 0aea7db27d39a5648edc7cff0b6cb3651dbb7006..7d3fede924b9b1777ca361f7b23a9457a5434b3c 100644
--- a/s/Middle
+++ b/s/Middle
@@ -1145,17 +1145,18 @@ ReadSysInfo_Code ROUT
 ;                               0 => absent
 ;                               1 => present (type 1) eg A4 portable
 ;                               2 => present (type 2) eg Stork portable
- [ MorrisSupport
 ;               bits 8-15 = IOMD variant
 ;                               0 => IOMD
 ;                               1 => IOMDL ie ARM7500 (Morris)
 ;               bits 16-23 = VIDC20 variant
 ;                               0 => VIDC20
 ;                               1 => VIDC2L ie ARM7500 (Morris)
-;               bits 24-31 reserved (set to 0)
- |
-;               bits 8-31 reserved (set to 0)
- ]
+;               bits 24-31 = miscellaneous flags
+;                      bit 24   0 => IIC bus slow (100kHz)
+;                               1 => IIC bus fast (400kHz)
+;                      bit 25   0 => keep I/O clocks running during idle
+;                               1 => stop I/O clocks during idle
+;                      bits 26-31 reserved (set to 0)
 ;       r3 = word 0 of unique machine ID, or 0 if unavailable
 ;       r4 = word 1 of unique machine ID, or 0 if unavailable
 
@@ -1191,6 +1192,16 @@ IOST_BATMAN     * 64    ;Stork keyboard/battery controller seems to be present
         TST     r0, #IOST_7500
         ORRNE   r2, r2, #&00000100              ;NE, Morris based machine with IOMDL
         ORRNE   r2, r2, #&00010000              ;NE, and VIDC2L
+ ]
+ [ ClockNVMemoryFast
+        MOV     r1, #0
+        LDRB    r1, [r1, #NVRamSpeed]
+        SUB     r1, r1, #1                      ; catch zero = slow (just in case)
+        CMP     r1, #3-1                        ; speed is 3 for 400kHz, 10 for 100kHz.
+        ORRLS   r2, r2, #&01000000              ; indicate fast speed
+ ]
+ [ StopClocksDuringIdle
+        ORR     r2, r2, #&02000000
  ]
         ANDS    r1, r0, #IOST_COMBOMASK
         MOVNE   r1, #1                          ; make r1 0 or 1
diff --git a/s/PMF/osbyte b/s/PMF/osbyte
index 8024d554d56a201aa181ef95356721f5f0071d5e..20da083629648b257c705d7dfa409082372a9321 100644
--- a/s/PMF/osbyte
+++ b/s/PMF/osbyte
@@ -657,7 +657,7 @@ Osbyte13 ROUT
 
         TEQ     R0, #0                  ; NE => blanked
         TSTNE   R1, #1                  ; NE => blanked and DPMS turned off HSyncs
-        BNE     %FT20                   ; if true exit immediately
+        MyOsbyte NE                     ; if true exit immediately
 
         LDRB    R2, CFStime
 10
@@ -665,13 +665,7 @@ Osbyte13 ROUT
 
    ;StrongARM core will not see interrupt unless disable is cleared for at least 5 cycles,
    ;in order to fill synchroniser pipe
- [ StorkPowerSave
-        NOP
-        MOV     R0, #0
-        LDRB    R0, [R0, #PortableFlags]
-        TST     R0, #PortableFeature_Idle
-        SWINE   XPortable_Idle
- |
+ [ StrongARM
         NOP
         NOP
         NOP
@@ -682,9 +676,19 @@ Osbyte13 ROUT
         TEQP    R3, #0                  ; SEI
         LDRB    R1, CFStime
         TEQ     R1, R2
-        BEQ     %BT10
-20
-        MyOsbyte
+        MyOsbyte NE
+
+ [ StorkPowerSave
+; It is actually better to call Idle with interrupts disabled as it stops us the interrupt
+; going off on the way through the SWI dispatch and accidentally waiting for the next
+; interrupt... The Idle will return when an interrupt is pending - it will be handled when
+; we branch back up and enable interrupts.
+        MOV     R0, #0
+        LDRB    R0, [R0, #PortableFlags]
+        TST     R0, #PortableFeature_Idle
+        SWINE   XPortable_Idle
+ ]
+        B       %BT10
 
 ; *****************************************************************************