diff --git a/Docs/GraphicsV b/Docs/GraphicsV
index da0e663df552fb57a41a5009f6f8dce34c5389d4..c1963a221fe01923a367c0c400002e0a312c416c 100644
--- a/Docs/GraphicsV
+++ b/Docs/GraphicsV
@@ -1,7 +1,6 @@
 GraphicsV
 ---------
-R4 = reason code
-
+R4 = reason code .. Bits 31..24 = display number, default 0
 
 
 VSync interrupt occured (Driver -> Kernel)
@@ -67,6 +66,7 @@ out:
 		  (bit 1 => hardware pointer)
 		  (bit 2 => interlace with progressive framestore)
 		  (bit 3 => separate framestore)
+		  (bit 4 => no VSyncs generated)
   R1 = pixel formats (bits 0-5 => 2^n bpp supported)
   R2 = buffer alignment requirement in bytes (power of 2)
 
diff --git a/VersionASM b/VersionASM
index ad50aa41752ec738f313f3aace11369d7cf49dd0..3f3cb607b6239140cfe648d38e2dc5ac88481669 100644
--- a/VersionASM
+++ b/VersionASM
@@ -13,11 +13,11 @@
                         GBLS    Module_ComponentPath
 Module_MajorVersion     SETS    "5.35"
 Module_Version          SETA    535
-Module_MinorVersion     SETS    "4.79.2.80"
-Module_Date             SETS    "29 Oct 2004"
-Module_ApplicationDate  SETS    "29-Oct-04"
+Module_MinorVersion     SETS    "4.79.2.81"
+Module_Date             SETS    "02 Nov 2004"
+Module_ApplicationDate  SETS    "02-Nov-04"
 Module_ComponentName    SETS    "Kernel"
 Module_ComponentPath    SETS    "RiscOS/Sources/Kernel"
-Module_FullVersion      SETS    "5.35 (4.79.2.80)"
-Module_HelpVersion      SETS    "5.35 (29 Oct 2004) 4.79.2.80"
+Module_FullVersion      SETS    "5.35 (4.79.2.81)"
+Module_HelpVersion      SETS    "5.35 (02 Nov 2004) 4.79.2.81"
                         END
diff --git a/VersionNum b/VersionNum
index ce91b039f07e7abf103e2f51fd6c0a4fd123ddb6..8e485a40a73aeed13ac98d77fd2d09561f2be393 100644
--- a/VersionNum
+++ b/VersionNum
@@ -5,19 +5,19 @@
  *
  */
 #define Module_MajorVersion_CMHG        5.35
-#define Module_MinorVersion_CMHG        4.79.2.80
-#define Module_Date_CMHG                29 Oct 2004
+#define Module_MinorVersion_CMHG        4.79.2.81
+#define Module_Date_CMHG                02 Nov 2004
 
 #define Module_MajorVersion             "5.35"
 #define Module_Version                  535
-#define Module_MinorVersion             "4.79.2.80"
-#define Module_Date                     "29 Oct 2004"
+#define Module_MinorVersion             "4.79.2.81"
+#define Module_Date                     "02 Nov 2004"
 
-#define Module_ApplicationDate          "29-Oct-04"
+#define Module_ApplicationDate          "02-Nov-04"
 
 #define Module_ComponentName            "Kernel"
 #define Module_ComponentPath            "RiscOS/Sources/Kernel"
 
-#define Module_FullVersion              "5.35 (4.79.2.80)"
-#define Module_HelpVersion              "5.35 (29 Oct 2004) 4.79.2.80"
+#define Module_FullVersion              "5.35 (4.79.2.81)"
+#define Module_HelpVersion              "5.35 (02 Nov 2004) 4.79.2.81"
 #define Module_LibraryVersionInfo       "5:35"
diff --git a/s/NewIRQs b/s/NewIRQs
index d4664b69bc8831e41e9c08b45f57eb2c608dec54..25e2d9196ecab1e74aa0c9f81c6bfd6b14fa3601 100644
--- a/s/NewIRQs
+++ b/s/NewIRQs
@@ -798,7 +798,14 @@ FillInDefaultIRQ1VDevices
         ADDNE   a1, a1, a1, LSL #1
         ADDNE   a1, v1, a1, LSL #2
         STMNEIB a1, {a2, a3}
-
+;        BNE     %ft1
+;        ; here if no vsync handler .. fudge it from tickerv
+;        MOV     a1, #TickerV
+;        LDR     a2, =FalseVsyncIRQ
+;        LDR     a3, =OsbyteVars
+;        SWI     XOS_Claim
+
+1
  [ CDVPoduleIRQs
 ; Now Podule bits
         MOV     a1, #IRQDesp_Link_Unshared
@@ -1492,6 +1499,13 @@ TickOne ROUT
 ; ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 
         ALIGN 32
+FalseVsyncIRQ ROUT
+        MOV     R1, #0
+        LDR     R0, [R1, #MetroGnome]
+        TST     R0, #1
+        MOVEQ   pc, lr
+        Push    "lr"
+        B       VsyncIRQ_ExtEntry
 
 VsyncIRQ ROUT
 
diff --git a/s/PMF/osinit b/s/PMF/osinit
index ec8b74f5b983d6dd5583ca021c02b2e9709b6ce9..11d23b1166f0ba2248f39c5a2133e717c50b6aa1 100644
--- a/s/PMF/osinit
+++ b/s/PMF/osinit
@@ -144,16 +144,17 @@ BuffPtrInitLoop
         MOV     R0, #0
         CallHAL HAL_TimerDevice
         MOV     R4, R0
+        CallHAL HAL_IRQClear            ; clear timer 0 IRQ
+        MOV     R0, R4
+        CallHAL HAL_IRQEnable           ; enable timer 0 IRQ
+
         CallHAL HAL_VideoFlybackDevice
         CMP     R0, #-1
         MOVNE   R5, R0
         CallHAL HAL_IRQClear, NE        ; clear vsync IRQ
-        MOV     R0, R4
-        CallHAL HAL_IRQClear            ; clear timer 0 IRQ
-        MOV     R0, R5
-        CallHAL HAL_IRQEnable           ; enable vsync IRQ
-        MOV     R0, R4
-        CallHAL HAL_IRQEnable           ; enable timer 0 IRQ
+        CMP     R5, #-1
+        MOVNE   R0, R5
+        CallHAL HAL_IRQEnable, NE       ; enable vsync IRQ
         Pull    "r9,r12"
  |
         MOV     R1, #IOC
diff --git a/s/vdu/vdudriver b/s/vdu/vdudriver
index 9f42ae4aaa9789e1c36a77bba02d4329fb014cf1..ed82277809a59c8e694a6b2c7f488f0f4b403469 100644
--- a/s/vdu/vdudriver
+++ b/s/vdu/vdudriver
@@ -1290,8 +1290,20 @@ PushModeInfoCommonNoService
         Push    "r0-r2,r4"
         MOV     r4, #GraphicsV_DisplayFeatures
         BL      CallGraphicsV
-        TEQ     r4, #0
-        TSTEQ   r0, #1                          ; bit 0 is h/w scroll support
+  ; claim or release falsevsync vector if vsyncs supported/not supported
+        Push    "r0"
+        TST     r0, #1<<4                       ; NE = VSyncs not generated?
+        MOV     a1, #TickerV
+        LDR     a2, =FalseVsyncIRQ
+        LDR     a3, =OsbyteVars
+        BEQ     %ft2
+        SWI     XOS_Claim
+        B       %ft1
+2       SWI     XOS_Release
+1
+        Pull    "r0"
+
+        TST     r0, #1                          ; bit 0 is h/w scroll support
         Pull    "r0-r2,r4"
  |
         LDR     r14, [WsPtr, #HALVideoFeatures]
diff --git a/s/vdu/vdugrafv b/s/vdu/vdugrafv
index 13ba2e950559e3a70b4982e70b2587c0cd188eaf..a88a724d2734151061d0e886c8fc714b4b3ef9cb 100644
--- a/s/vdu/vdugrafv
+++ b/s/vdu/vdugrafv
@@ -38,9 +38,11 @@
         ASSERT  GraphicsV_Render = 13
         ASSERT  GraphicsV_IICOp = 14
 
+
 MOSGraphicsV ROUT
-        CMP     r4, #13
+        CMP     r4, #(MOSGraphicsV_TableEnd - MOSGraphicsV_Table) / 4
         ADDLS   pc, pc, r4, LSL #2
+MOSGraphicsV_Table
         MOV     pc, lr                  ; reason code not known, so pass it on
         MOV     pc, lr                  ; 0
         B       GV_VSync                ; 1
@@ -57,6 +59,7 @@ MOSGraphicsV ROUT
         MOV     pc, lr                  ; 12
         B       GV_Render               ; 13
         B       GV_IICOp                ; 14
+MOSGraphicsV_TableEnd
 
 GV_VSync        ROUT
  [ {FALSE}