Commit fe354937 authored by Robert Sprowson's avatar Robert Sprowson
Browse files

Sort out SetBorder

NewReset.s:
The one remaining use of SetBorder was to denote the user asked for and got a CMOS reset, which in the HAL case emitted a warning because setting the border is potentially complicated/slow.
To solve this, the reset is noted and replaces the normal RISC OS banner with a warning message. The behaviour and text for this comes from the BBC Master, though the escape key is used in place of break since a reset isn't actually needed.
Moved the unused cputable inside its corresponding switch.
Two occurrences of WriteS_Translated would have executed the message in the V=1 case.
KernelWS/Resources:
Flag added to workspace, translation added to messages files.
Heapman.s:
Commented out use of SetBorder removed.
Kernel.s:
SetBorder macro removed.
Middle.s:
Switched out use of SetBorder removed.
Super1.s:
Conditional WriteS_Translated would try to execute the message in the opposite condition case.


Version 5.35, 4.79.2.157. Tagged as 'Kernel-5_35-4_79_2_157'
parent 78392a1c
...@@ -151,7 +151,8 @@ BadMSFlags:Illegal flags in mode selector ...@@ -151,7 +151,8 @@ BadMSFlags:Illegal flags in mode selector
CDATStackOverflow:System stack overflow CDATStackOverflow:System stack overflow
NoSuchSWI:SWI not known NoSuchSWI:SWI not known
BadSav:Incorrect number of parameters for *Save BadSav:Incorrect number of parameters for *Save
MonType:Monitor type reconfigured. CmosRst:CMOS RAM reset, press ESCAPE to continue
MonType:Monitor type reconfigured
NoKbd:No keyboard present - autobooting NoKbd:No keyboard present - autobooting
BreakPt:Stopped at break point at &%0 BreakPt:Stopped at break point at &%0
STail:|J|MUse *Configure to set the options.|J|M STail:|J|MUse *Configure to set the options.|J|M
......
...@@ -151,7 +151,8 @@ BadMSFlags:Illegal flags in mode selector ...@@ -151,7 +151,8 @@ BadMSFlags:Illegal flags in mode selector
CDATStackOverflow:System stack overflow CDATStackOverflow:System stack overflow
NoSuchSWI:SWI not known NoSuchSWI:SWI not known
BadSav:Incorrect number of parameters for *Save BadSav:Incorrect number of parameters for *Save
MonType:Monitor type reconfigured. CmosRst:CMOS RAM reset, press ESCAPE to continue
MonType:Monitor type reconfigured
NoKbd:No keyboard present - autobooting NoKbd:No keyboard present - autobooting
BreakPt:Stopped at break point at &%0 BreakPt:Stopped at break point at &%0
STail:|J|MUse *Configure to set the options.|J|M STail:|J|MUse *Configure to set the options.|J|M
......
...@@ -151,7 +151,8 @@ BadMSFlags:Illegal flags in mode selector ...@@ -151,7 +151,8 @@ BadMSFlags:Illegal flags in mode selector
CDATStackOverflow:System stack overflow CDATStackOverflow:System stack overflow
NoSuchSWI:SWI not known NoSuchSWI:SWI not known
BadSav:Incorrect number of parameters for *Save BadSav:Incorrect number of parameters for *Save
MonType:Monitor type reconfigured. CmosRst:CMOS RAM reset, press ESCAPE to continue
MonType:Monitor type reconfigured
NoKbd:No keyboard present - autobooting NoKbd:No keyboard present - autobooting
BreakPt:Stopped at break point at &%0 BreakPt:Stopped at break point at &%0
STail:|J|MUse *Configure to set the options.|J|M STail:|J|MUse *Configure to set the options.|J|M
......
...@@ -151,7 +151,8 @@ BadMSFlags:Illegal flags in mode selector ...@@ -151,7 +151,8 @@ BadMSFlags:Illegal flags in mode selector
CDATStackOverflow:System stack overflow CDATStackOverflow:System stack overflow
NoSuchSWI:SWI not known NoSuchSWI:SWI not known
BadSav:Incorrect number of parameters for *Save BadSav:Incorrect number of parameters for *Save
MonType:Monitor type reconfigured. CmosRst:CMOS RAM reset, press ESCAPE to continue
MonType:Monitor type reconfigured
NoKbd:No keyboard present - autobooting NoKbd:No keyboard present - autobooting
BreakPt:Stopped at break point at &%0 BreakPt:Stopped at break point at &%0
STail:|J|MUse *Configure to set the options.|J|M STail:|J|MUse *Configure to set the options.|J|M
......
...@@ -13,11 +13,11 @@ ...@@ -13,11 +13,11 @@
GBLS Module_ComponentPath GBLS Module_ComponentPath
Module_MajorVersion SETS "5.35" Module_MajorVersion SETS "5.35"
Module_Version SETA 535 Module_Version SETA 535
Module_MinorVersion SETS "4.79.2.156" Module_MinorVersion SETS "4.79.2.157"
Module_Date SETS "27 Jun 2012" Module_Date SETS "01 Jul 2012"
Module_ApplicationDate SETS "27-Jun-12" Module_ApplicationDate SETS "01-Jul-12"
Module_ComponentName SETS "Kernel" Module_ComponentName SETS "Kernel"
Module_ComponentPath SETS "castle/RiscOS/Sources/Kernel" Module_ComponentPath SETS "castle/RiscOS/Sources/Kernel"
Module_FullVersion SETS "5.35 (4.79.2.156)" Module_FullVersion SETS "5.35 (4.79.2.157)"
Module_HelpVersion SETS "5.35 (27 Jun 2012) 4.79.2.156" Module_HelpVersion SETS "5.35 (01 Jul 2012) 4.79.2.157"
END END
...@@ -5,19 +5,19 @@ ...@@ -5,19 +5,19 @@
* *
*/ */
#define Module_MajorVersion_CMHG 5.35 #define Module_MajorVersion_CMHG 5.35
#define Module_MinorVersion_CMHG 4.79.2.156 #define Module_MinorVersion_CMHG 4.79.2.157
#define Module_Date_CMHG 27 Jun 2012 #define Module_Date_CMHG 01 Jul 2012
#define Module_MajorVersion "5.35" #define Module_MajorVersion "5.35"
#define Module_Version 535 #define Module_Version 535
#define Module_MinorVersion "4.79.2.156" #define Module_MinorVersion "4.79.2.157"
#define Module_Date "27 Jun 2012" #define Module_Date "01 Jul 2012"
#define Module_ApplicationDate "27-Jun-12" #define Module_ApplicationDate "01-Jul-12"
#define Module_ComponentName "Kernel" #define Module_ComponentName "Kernel"
#define Module_ComponentPath "castle/RiscOS/Sources/Kernel" #define Module_ComponentPath "castle/RiscOS/Sources/Kernel"
#define Module_FullVersion "5.35 (4.79.2.156)" #define Module_FullVersion "5.35 (4.79.2.157)"
#define Module_HelpVersion "5.35 (27 Jun 2012) 4.79.2.156" #define Module_HelpVersion "5.35 (01 Jul 2012) 4.79.2.157"
#define Module_LibraryVersionInfo "5:35" #define Module_LibraryVersionInfo "5:35"
...@@ -1478,7 +1478,8 @@ MOShasFIQ # 1 ...@@ -1478,7 +1478,8 @@ MOShasFIQ # 1
FIQclaim_interlock # 1 FIQclaim_interlock # 1
CallBack_Flag # 1 CallBack_Flag # 1
IRQ_CallBack_Flag * CallBack_Flag IRQ_CallBack_Flag * CallBack_Flag
MonitorLeadType # 1 ; some function of the monitor lead inputs, as yet undetermined MonitorLeadType # 1 ; some function of the monitor lead inputs, as yet undetermined
MentionCMOSReset # 1 ; non zero reports CMOS resets prior to the start banner
AlignSpace AlignSpace
......
...@@ -401,14 +401,6 @@ GoodHeapExit ; V cleared on entry to SWI dispatch ...@@ -401,14 +401,6 @@ GoodHeapExit ; V cleared on entry to SWI dispatch
ExitSWIHandler ; Like all good SWI handlers ExitSWIHandler ; Like all good SWI handlers
] ]
;HeapInUse
; $HeapBadAsModuleBRA
; SetBorder R10, R11, 15, 0, 0
; $HeapBadAsModuleKET
; ADR R0, ErrorBlock_HeapFail_HeapLocked
; B NaffHeapExit
; Errors ; Errors
MakeErrorBlock HeapBadReason MakeErrorBlock HeapBadReason
MakeErrorBlock HeapFail_Init MakeErrorBlock HeapFail_Init
......
...@@ -84,25 +84,6 @@ $label LDR $reg, =ZeroPage+VduDriverWorkSpace ...@@ -84,25 +84,6 @@ $label LDR $reg, =ZeroPage+VduDriverWorkSpace
GBLA Module_BaseAddr GBLA Module_BaseAddr
Module_BaseAddr SETA 0 Module_BaseAddr SETA 0
; Command $cmd, $max, $min - declared in hdr.macros.
; debug macro: set the border colour
MACRO
$l SetBorder $reg1, $reg2, $red, $green, $blue, $delay
! 0, "Setborder used"
$l LDR $reg1, =VIDC
; Note $reg, $green and $blue are 4 bit values
LDR $reg2, =&40000000+(($red)*&11)+(($green)*&1100)+(($blue)*&110000)
STR $reg2, [$reg1]
[ "$delay"<>""
MOV $reg1, #$delay
10
SUBS $reg1, $reg1, #1
BNE %BT10
]
MEND
; Fake a 26-bit pc, given a PSR currently in lr (or reg), and the 32-bit address on ; Fake a 26-bit pc, given a PSR currently in lr (or reg), and the 32-bit address on
; the stack. The stacked address is pulled, and the result is left in lr. ; the stack. The stacked address is pulled, and the result is left in lr.
......
...@@ -1129,21 +1129,6 @@ exit_AOS ...@@ -1129,21 +1129,6 @@ exit_AOS
] ]
MakeErrorBlock BadEnvNumber MakeErrorBlock BadEnvNumber
[ {FALSE}
testcallbackpending
CMP r1, #0 ; OK if only reading
CMPEQ r2, #0
CMPEQ r3, #0
LDRNEB r10, [r0, #CallBack_Flag-CallBackHandler]
TSTNE r10, #CBack_OldStyle
MOVEQ pc, r14
SetBorder r0, r14, 15, 0, 0
ADR r0, ErrorBlock_CallbackPending
B exit_AOS
MakeErrorBlock CallbackPending
]
AOS_Table AOS_Table
& ZeroPage+MemLimit ; MemoryLimit & ZeroPage+MemLimit ; MemoryLimit
& 0 & 0
......
...@@ -728,20 +728,6 @@ reset_loop ...@@ -728,20 +728,6 @@ reset_loop
TEQ R1, #SpriteSizeCMOS TEQ R1, #SpriteSizeCMOS
BHI reset_loop BHI reset_loop
[ {FALSE}
; Oh, just leave it be
MOV R0, #VduCMOS
BL Read
[ IOMD_C_MonitorType = 0 :LAND: IOMD_C_PALNTSCType = 0
; Force TV if we don't have a MonitorType auto-detect bit
TEQ R0, #(Sync_Separate :OR: MonitorType0)
|
; Force auto-detect of monitor stuff if we have a MonitorType auto-detect bit
TEQ R0, #(Sync_Auto :OR: MonitorTypeAuto)
]
BNE cmos_reset
]
; Year should be >=1995, <=2037 (when 32 bit signed Unix time breaks) ; Year should be >=1995, <=2037 (when 32 bit signed Unix time breaks)
MOV R0, #YearCMOS+1 MOV R0, #YearCMOS+1
BL Read BL Read
...@@ -766,6 +752,7 @@ checkboot ...@@ -766,6 +752,7 @@ checkboot
; IF power-on bit set AND R/T/Del/Copy pressed THEN reset CMOS RAM ; IF power-on bit set AND R/T/Del/Copy pressed THEN reset CMOS RAM
; note that memory cleared if POR, so key info has had plenty of time! ; note that memory cleared if POR, so key info has had plenty of time!
[ HAL [ HAL
LDR R0, =ZeroPage+HAL_StartFlags LDR R0, =ZeroPage+HAL_StartFlags
LDR R1, [R0] LDR R1, [R0]
...@@ -816,9 +803,12 @@ checkboot ...@@ -816,9 +803,12 @@ checkboot
LDR R7, [R0, #KbdFlags] LDR R7, [R0, #KbdFlags]
TST R7, #KbdFlag_R:OR:KbdFlag_T:OR:KbdFlag_Delete:OR:KbdFlag_Copy TST R7, #KbdFlag_R:OR:KbdFlag_T:OR:KbdFlag_Delete:OR:KbdFlag_Copy
| |
LDR R7, [R0, #R_Down_Flag] LDR R7, [R0, #R_Down_Flag] ; Picks up R/T/Del/Copy flags all in one
CMP R7, #0 CMP R7, #0
] ]
LDRNE R3, =ZeroPage
MOVNE R14, #1
STRNEB R14, [R3, #MentionCMOSReset]
BEQ no_cmos_reset ; power on bit checked again there BEQ no_cmos_reset ; power on bit checked again there
[ :LNOT: STB [ :LNOT: STB
...@@ -835,10 +825,8 @@ checkboot ...@@ -835,10 +825,8 @@ checkboot
; ************************************************************************** ; **************************************************************************
[ HAL [ HAL
! 0, "Sort out SetBorder for CMOS reset"
TST R7, #KbdFlag_Copy:OR:KbdFlag_Delete TST R7, #KbdFlag_Copy:OR:KbdFlag_Delete
| |
SetBorder R0, R1, 15, 0, 0 ; flash the border as warning!
ASSERT (Del_Down_Flag - R_Down_Flag) = 2 ASSERT (Del_Down_Flag - R_Down_Flag) = 2
ASSERT (Copy_Down_Flag - Del_Down_Flag) = 1 ASSERT (Copy_Down_Flag - Del_Down_Flag) = 1
MOVS R3, R7, LSR #16 ; full reset or just system? MOVS R3, R7, LSR #16 ; full reset or just system?
...@@ -2009,22 +1997,44 @@ SkipHardResetPart2 ; code executed on all types of reset ...@@ -2009,22 +1997,44 @@ SkipHardResetPart2 ; code executed on all types of reset
STRNEB r0, [r0, #ErrorSemaphore] ; then allow errors to be translated STRNEB r0, [r0, #ErrorSemaphore] ; then allow errors to be translated
] ]
[ DoInitialiseMode :LOR: :LNOT: Embedded_UI [ DoInitialiseMode :LOR: :LNOT: Embedded_UI
BL InitialiseMode BL InitialiseMode
[ :LNOT: Embedded_UI ]
[ :LNOT: Embedded_UI
LDR R0, =ZeroPage
LDRB R14, [R0, #MentionCMOSReset]
TEQ R14, #0
BEQ %FT12
[ International
SWI XOS_WriteI+10
BVS %FT09
BL WriteS_Translated
= "CmosRst:CMOS RAM reset, press ESCAPE to continue",0
ALIGN
09
|
SWI XOS_WriteS
= 10,"CMOS RAM reset, press ESCAPE to continue",0
ALIGN
]
10
SWI XOS_ReadEscapeState
BCC %BT10
MOV R0, #124
SWI XOS_Byte ; Clear the condition
SWI XOS_WriteI+12 ; Clear the screen
12
SWI XOS_WriteS SWI XOS_WriteS
= 10, "$SystemName ", 0 ; now RISC OS (no +) again = 10, "$SystemName ", 0 ; now RISC OS (no +) again
ALIGN ALIGN
LDR R0, =ZeroPage
LDR R0, [R0, #RAMLIMIT]
Push "R0"
MOV R0, #8 MOV R0, #8
ORR R0, R0, #&500 ORR R0, R0, #&500
SWI XOS_Memory ; returns amount of soft ROM (pages) in r1 SWI XOS_Memory ; returns amount of soft ROM (pages) in r1
MOVVS R1, #0 MOVVS R1, #0
Pull "R0"
LDR R0, =ZeroPage
LDR R0, [R0, #RAMLIMIT]
MLA R0, R1, R2, R0 ; convert pages to bytes and add in MLA R0, R1, R2, R0 ; convert pages to bytes and add in
MOV R0, R0, LSR #20 ; /(1024*1024) down to megabytes MOV R0, R0, LSR #20 ; /(1024*1024) down to megabytes
...@@ -2035,19 +2045,13 @@ SkipHardResetPart2 ; code executed on all types of reset ...@@ -2035,19 +2045,13 @@ SkipHardResetPart2 ; code executed on all types of reset
SWI XOS_WriteS SWI XOS_WriteS
= "MB", 10,13, 10, 0 ; title complete = "MB", 10,13, 10, 0 ; title complete
ALIGN ALIGN
]
]
[ StrongARM
[ Embedded_UI
! 0,"Printing of processor type disabled"
|
; IMPORT ARM_PrintProcessorType
BL ARM_PrintProcessorType BL ARM_PrintProcessorType
] |
] ! 0, "Banner & printing of processor type disabled"
]
01 MOV r0, #0 ; Set DomainId to 0 every reset MOV r0, #0 ; Set DomainId to 0 every reset
[ ZeroPage = 0 [ ZeroPage = 0
STR r0, [r0, #DomainId] ; before calling anyone STR r0, [r0, #DomainId] ; before calling anyone
| |
...@@ -2158,12 +2162,14 @@ HorologicalDelayLoop1 ...@@ -2158,12 +2162,14 @@ HorologicalDelayLoop1
[ International [ International
SWI XOS_WriteI+10 SWI XOS_WriteI+10
BLVC WriteS_Translated BVS %FT65
= "MonType:Monitor type reconfigured.",10,13,10,0 BL WriteS_Translated
= "MonType:Monitor type reconfigured",10,13,10,0
ALIGN ALIGN
65
| |
SWI XOS_WriteS SWI XOS_WriteS
= 10,"Monitor type reconfigured.",10,13,10,0 = 10,"Monitor type reconfigured",10,13,10,0
ALIGN ALIGN
] ]
] ]
...@@ -2191,6 +2197,12 @@ MonitorKeypadTable ; internal key number, CMOS bits ...@@ -2191,6 +2197,12 @@ MonitorKeypadTable ; internal key number, CMOS bits
= &FF = &FF
ALIGN 32 ALIGN 32
[ International
MessageFileName DCB "Resources:$.Resources.Kernel.Messages",0
ALIGN
]
[ StrongARM :LAND: :LNOT: HAL
cputable cputable
DCD &6000,0,0 DCD &6000,0,0
DCD &6100,1,0 DCD &6100,1,0
...@@ -2202,12 +2214,6 @@ cputable ...@@ -2202,12 +2214,6 @@ cputable
DCD &7501,7,0 DCD &7501,7,0
DCD -1 DCD -1
[ International
MessageFileName DCB "Resources:$.Resources.Kernel.Messages",0
ALIGN
]
[ StrongARM :LAND: :LNOT: HAL
Processor_Type Processor_Type
MOV r0,#IOMD_Base MOV r0,#IOMD_Base
LDRB r1,[r0,#IOMD_ID0] LDRB r1,[r0,#IOMD_ID0]
...@@ -2347,9 +2353,11 @@ AutoBootCosNoKbd ...@@ -2347,9 +2353,11 @@ AutoBootCosNoKbd
[ :LNOT: Embedded_UI [ :LNOT: Embedded_UI
[ International [ International
SWI XOS_WriteI+7 SWI XOS_WriteI+7
BLVC WriteS_Translated BVS %FT81
BL WriteS_Translated
= "NoKbd:No keyboard present - autobooting", 10,13,0 = "NoKbd:No keyboard present - autobooting", 10,13,0
ALIGN ALIGN
81
| |
SWI XOS_WriteS SWI XOS_WriteS
= 7, "No keyboard present - autobooting", 10,13,0 = 7, "No keyboard present - autobooting", 10,13,0
......
...@@ -87,9 +87,11 @@ ESCAPE MOV R0, #&7E ...@@ -87,9 +87,11 @@ ESCAPE MOV R0, #&7E
[ International [ International
SWI XOS_EnterOS ; GO into SVC mode to get some stack SWI XOS_EnterOS ; GO into SVC mode to get some stack
SWI OS_NewLine SWI OS_NewLine
BLVC WriteS_Translated BVS %FT01
BL WriteS_Translated
= "Escape:Escape",10,13,0 = "Escape:Escape",10,13,0
ALIGN ALIGN
01
WritePSRc 0, R0 ; Back to user mode. WritePSRc 0, R0 ; Back to user mode.
| |
SWI OS_WriteS SWI OS_WriteS
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment