Commit 155897b8 authored by Jeffrey Lee's avatar Jeffrey Lee

Teletext fixes

  s/vdu/vdugrafl - Disable hardware scrolling if we're in a teletext mode with a border. Quick fix in lieu of adding some code to make sure the relevant border areas are cleared when scrolling.
  s/vdu/vduttx - Ignore VDU 23,18,<n> sequences when outside of teletext. Fixes a crash when screen update suspend/resume sequences are used.
  Tested on RiscPC

Version 5.94. Tagged as 'Kernel-5_94'
parent 7b7cb6d9
......@@ -11,13 +11,13 @@
GBLS Module_HelpVersion
GBLS Module_ComponentName
GBLS Module_ComponentPath
Module_MajorVersion SETS "5.93"
Module_Version SETA 593
Module_MajorVersion SETS "5.94"
Module_Version SETA 594
Module_MinorVersion SETS ""
Module_Date SETS "08 Dec 2017"
Module_ApplicationDate SETS "08-Dec-17"
Module_Date SETS "26 Jan 2018"
Module_ApplicationDate SETS "26-Jan-18"
Module_ComponentName SETS "Kernel"
Module_ComponentPath SETS "castle/RiscOS/Sources/Kernel"
Module_FullVersion SETS "5.93"
Module_HelpVersion SETS "5.93 (08 Dec 2017)"
Module_FullVersion SETS "5.94"
Module_HelpVersion SETS "5.94 (26 Jan 2018)"
/* (5.93)
/* (5.94)
* This file is automatically maintained by srccommit, do not edit manually.
* Last processed by srccommit version: 1.1.
#define Module_MajorVersion_CMHG 5.93
#define Module_MajorVersion_CMHG 5.94
#define Module_MinorVersion_CMHG
#define Module_Date_CMHG 08 Dec 2017
#define Module_Date_CMHG 26 Jan 2018
#define Module_MajorVersion "5.93"
#define Module_Version 593
#define Module_MajorVersion "5.94"
#define Module_Version 594
#define Module_MinorVersion ""
#define Module_Date "08 Dec 2017"
#define Module_Date "26 Jan 2018"
#define Module_ApplicationDate "08-Dec-17"
#define Module_ApplicationDate "26-Jan-18"
#define Module_ComponentName "Kernel"
#define Module_ComponentPath "castle/RiscOS/Sources/Kernel"
#define Module_FullVersion "5.93"
#define Module_HelpVersion "5.93 (08 Dec 2017)"
#define Module_LibraryVersionInfo "5:93"
#define Module_FullVersion "5.94"
#define Module_HelpVersion "5.94 (26 Jan 2018)"
#define Module_LibraryVersionInfo "5:94"
......@@ -373,7 +373,8 @@ SwitchOutputToMask ROUT
MUL R14, R7, R14 ; text window height, pixels
LDR R7, [WsPtr, #YWindLimit]
ADD R7, R7, #1
SUB R14, R7, R14 ; spare rows on screen
SUBS R14, R7, R14 ; spare rows on screen
ORRNE R6, R6, #ModeFlag_HardScrollDisabled ; Disable hard scroll if there's any gap (we don't clear the border when scrolling!)
MOV R14, R14, LSR #1
MUL R14, R8, R14 ; byte offset to start at correct row
; Now, X offset
......@@ -383,12 +384,14 @@ SwitchOutputToMask ROUT
MUL R8, R7, R8 ; text window width, pixels
LDR R7, [WsPtr, #XWindLimit]
ADD R7, R7, #1
SUB R8, R7, R8 ; spare columns on screen
SUBS R8, R7, R8 ; spare columns on screen
ORRNE R6, R6, #ModeFlag_HardScrollDisabled
MOV R8, R8, LSR #1
LDR R7, [WsPtr, #Log2BPP]
MOV R8, R8, LSL R7 ; spare bits on row
ADD R14, R14, R8, LSR #3 ; combine with vertical offset
BIC R14, R14, #3 ; TTX assumes word alignment
STR R6, [WsPtr, #DisplayModeFlags] ; Write back the potentially-updated flags to DisplayModeFlags, since we're going to use that to reload ModeFlags below (assuming we aren't attempting TTX in a sprite!)
STR R14, [WsPtr, #TextOffset]
......@@ -467,6 +470,7 @@ SwitchOutputToMask ROUT
BL Home
; If we've just switched back to the screen, make sure the greyscale palette flag is accurate. Easiest way is to copy DisplayModeFlags into ModeFlags.
; (n.b. see also code above which deliberately updates DisplayModeFlags if in TTX)
LDR R2, [WsPtr, #VduSprite]
TEQ R2, #0
LDREQ R2, [WsPtr, #DisplayModeFlags]
......@@ -267,8 +267,11 @@ TeletextFinalise ROUT
LDRB R2, [WsPtr, #QQ+1]
CMP R2, #(Vdu23_18_TabEnd - Vdu23_18_TabStart) / 4
B UnknownVdu23
BCS UnknownVdu23
LDR R0, [WsPtr, #CursorFlags]
TST R0, #TeletextMode
B Vdu23_18_0
B Vdu23_18_1
Markdown is supported
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment