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}