Commit 10a86092 authored by Robert Sprowson's avatar Robert Sprowson
Browse files

Add a means to write NetStnCMOS in a HAL world

With ProtectStationID turned on there are no routes to writing the Econet station (or bottom octect of the IP address), a function previously fulfilled by the SetStation utility which pokes the hardware directly and doesn't fit into a HAL model.
Add a new subreason to OS_NVMemory to perform this role. This SWI appeared for RISC OS 5.00, and errors unsupported subreasons, so there's a means of run tim selecting its use by checking the platform class and trying the SWI. All RISC OS 5 based platforms can always be upgraded to this version, since they're all still being maintained.

hdr/Options: move the switch with the other options from osinit.s
i2cutils.c: new subreason

Ditch the 'ObsoleteNC1CMOS' switch, if it was obsolete for NC1, it's certainly obsolete now.
Ditch unmaintained messages files for Morris4/Omega/Ursula projects.
Tested on a Risc PC.

Version 5.35, 4.79.2.247. Tagged as 'Kernel-5_35-4_79_2_247'
parent f2c79188
BadNumb:Number not recognised
NoSuchSWI1:SWI &%0 not known
VarCantFind:System variable '%0' not found
BuffOverflow:Buffer overflow
Escape:Escape
Syntax:Syntax
OptErr:Syntax: *Opt [<x> [[,] <y>]]
NoHelp:No help found.
HelpFound:==> Help on keyword %0
Address:Address :
ASCII:ASCII data
Unp:Unplugged modules are:
NoUnp:No modules are unplugged
Podule:(Podule %0)
Extn:(Extn ROM %0)
Modules:No. Position Workspace Name
Number:(Number)
Macro:(Macro)
Result:Result is %0, value :
Integer:an integer
String:a string
ROMMTitle:No. Position|IModule Name|I|IVersion|IStatus|M|J
SYSROM:System ROM
EXTROM:Extn ROM
PODROM:Podule
Active:Active
Dormant:Dormant
Unplugged:Unplugged
Running:Running
Untitled:<Untitled>
Supervisor:Supervisor
ErrSub:E
YesNo:yn
Config:Configuration
Options:options:
Status:status:
Err: (Error number &%0)
Error:Error: %0 (Error number &%1)
UndefinedInstruction:Internal error: undefined instruction at &%0
InstructionAbort:Internal error: abort on instruction fetch at &%0
DataAbort:Internal error: abort on data transfer at &%0
AddressException:Internal error: address exception at &%0
BranchThrough0:Internal error: branch through zero
SDoesntExist:Sprite doesn't exist
ModuleTooOld:Module %0 too old
NaffRelease:Bad vector release
RMNotFound:Module %0 not found
NaffDevNo:Bad device number
BadDevVecRel:Bad device release
RedirectFail:Redirection fails
StackFull:Not enough memory on system stack
OscliLongLine:Too long
NoOscliSpecials:Special field not allowed in filing system prefix to OS_CLI
OscliTooHard:Expansion too complex
BadCommand:Command not recognised
BadParmString:Parameter expansion contains unrecognised characters
TooManyParms:Too many parameters
BadKey:Key number must be in the range 0-15
BadAddress:Address not recognised
OutsideFile:Outside file
NotABlock:Not a heap block
BadDesc:Bad heap descriptor
HeapBadReason:Bad reason code
HeapFailInit:Can't initialise heap
BadLink:Heap overwritten
HeapFailAlloc:Not enough memory (in heap)
BadExtend:Not enough memory (to extend heap)
ExcessiveShrink:Can't shrink heap any further
BadModuleReason:Unknown OS_Module call
CantKill:Module is currently active
MHNoRoom:The area of memory reserved for relocatable modules is full. Quit any unwanted applications or see the RISC OS User Guide for ways to maximise memory.
NoMoreModules:No more modules
NoMoreIncarnations:No more incarnations of that module
PostfixNeeded:Postfix not specified
IncarnationExists:Incarnation already exists
ChunkNotRM:Podule chunk is not a relocatable module
ModulePostfix:'%%' in module title
NotMod:This is not a relocatable module
BadRMHeaderField:Illegal header field in module
RMNot32bit:Module '%0' is not 32-bit compatible
IncarnationNotFound:Incarnation not found
RMNotFoundInROM:Module is not in ROM
NumbTooBig:Number too big
BadBase:Base not recognised
BadClaimNum:Bad vector number
SysHeapFull:The area of memory reserved for the system heap is full. Quit any unwanted applications or see the RISC OS User Guide for ways to maximise memory.
NotAllMoved:There is not enough memory to perform this operation. Quit any unwanted applications or see the RISC OS User Guide for ways to maximise memory. (Memory cannot be moved)
ChDynamCAO:Can't change memory area (application running)
AplWSpaceInUse:Application memory area in use
RAMFsUnchangeable:The size of the RAM filing system can only be changed when it is empty
BadDynamicArea:Unknown dynamic area
AreaAlreadyExists:Dynamic area already exists
AreaNotOnPageBdy:Base address not on page boundary
OverlappingAreas:Overlapping areas
CantAllocateArea:Unable to allocate logical address space
CantAllocateLevel2:Unable to allocate page tables for area
UnknownAreaHandler:Unknown dynamic area handler call
RCExc:Return code limit exceeded
RCNegative:Negative return code
BadString:String not recognised
BadVarType:Bad variable type
VarNoRoom:The area of memory reserved for the system variables is full. Use the Task Manager to make more space in the system heap/stack area.
BadMacVal:Bad macro value
BadVarNam:Variable name not recognised
VarTooLong:Variable value too long
BadParameters:Parameters not recognised
ArgRepeated:Argument repeated
BadBra:Mismatched brackets
StkOFlo:Expression stack overflow
MissOpn:Missing operand
MissOpr:Missing operator
BadInt:String is not convertible to integer
StrOFlo:String too long
NaffItm:Unknown operand
DivZero:Division by zero
NotNumeric:Numeric parameter needed
NoThen:There is no THEN
IsString:Expression is a string
ConParmTooBig:Configure parameter too big
BadConOpt:Configure option not recognised
BadStat:Status option not recognised
Config2manyparms:Too many parameters
NoSuchSWI2:SWI name not known
BadTime:Invalid time interval
BadEnvNumber:Bad Environment number
BadReadSysInfo:Unknown OS_ReadSysInfo call
BadMODE:Not enough memory to change to this screen mode
SNoWorkSpace:No memory is reserved for the system sprite area. Use the Task Manager to make some space for the system sprites.
SNoRoom:Not enough memory to create sprite
NoSprites:No sprites
NotGraphics:Not a graphics mode
SCantOpenFile:Can't open file
SNotEnoughRoom:Not enough memory in sprite area
SBadSpriteFile:Bad sprite file
SNoRoomToMerge:Not enough memory to add sprite
SBad2ndPtr:Bad 2nd ptr
InvalidRowOrCol:Invalid row or column
InvalidHeight:Invalid height
InvalidWidth:Invalid width
NoRoomToInsert:Not enough memory to insert row or column
SpriteAlreadyExists:Sprite already exists
InvalidSpriteMode:Invalid sprite mode
SBadReasonCode:Bad sprite reason code
CantInTeletext:Can't switch output in teletext mode
SInvalidSaveArea:Invalid save area
SpriteIsCurrentDest:Sprite is current destination
BadDPI:Illegal XDPI or YDPI in sprite
ModeNotAvailable:Screen mode not available
BadPixelDepth:Bad pixel depth
BadMSFlags:Illegal flags in mode selector
CDATStackOverflow:System stack overflow
NoSuchSWI:SWI not known
BadSav:Incorrect number of parameters for *Save
CmosRst:CMOS RAM reset, press ESCAPE to continue
MonType:Monitor type reconfigured
NoKbd:No keyboard present - autobooting
BreakPt:Stopped at break point at &%0
STail:|J|MUse *Configure to set the options.|J|M
CTail1:|J|MWhere:|J|MD is a decimal number, a hexadecimal number preceded by &,|J|Mor the base followed by underscore, followed|J|M
CTail2:by digits in the given base.|J|MItems within [ ] are optional.|J|MUse *Status to display the current settings.|J|M
Zonk:Unknown OS_ScreenMode reason code
SNoMask:Mask or Palette operations not supported in this display depth
BadVIDCDiv:Bad VIDC divider value
BadPlatReas:Unknown OS_PlatformFeatures reason code
UnConv:Unsupported conversion
600:ARM 600 Processor
610:ARM 610 Processor
700:ARM 700 Processor
710:ARM 710 Processor
7500:ARM 7500 Processor
7500FE:ARM 7500FE Processor
810:ARM 810 Processor
SA110:StrongARM Processor
Escape:Escape
Syntax:Syntax
OptErr:Syntax: *Opt [<x> [[,] <y>]]
NoHelp:No help found.
HelpFound:==> Help on keyword %0
Address:Address :
ASCII:ASCII data
Unp:Unplugged modules are:
NoUnp:No modules are unplugged
Podule:(Podule %0)
Extn:(Extn ROM %0)
Modules:No. Position Workspace Name
Number:(Number)
Macro:(Macro)
Result:Result is %0, value :
Integer:an integer
String:a string
ROMMTitle:No. Position|IModule Name|I|IVersion|IStatus|M|J
SYSROM:System ROM
EXTROM:Extn ROM
PODROM:Podule
Active:Active
Dormant:Dormant
Unplugged:Unplugged
Running:Running
Untitled:<Untitled>
Supervisor:Supervisor
ErrSub:E
YesNo:yn
Config:Configuration
Options:options:
Status:status:
Err: (Error number &%0)
Error:Error: %0 (Error number &%1)
UndefinedInstruction:The Network Computer has experienced a technical difficulty and needs to be rebooted (100:%0). Contact your service provider.
InstructionAbort:The Network Computer has experienced a technical difficulty and needs to be rebooted (101:%0). Contact your service provider.
DataAbort:The Network Computer has experienced a technical difficulty and needs to be rebooted (102:%0). Contact your service provider.
AddressException:The Network Computer has experienced a technical difficulty and needs to be rebooted (103:%0). Contact your service provider.
BranchThrough0:The Network Computer has experienced a technical difficulty and needs to be rebooted (105:%0). Contact your service provider.
NoSuchSWI1:The Network Computer has experienced a technical difficulty (1E8:%0). Please select Continue.
SDoesntExist:Sprite doesn't exist
VarCantFind:System variable '%0' not found
BuffOverflow:Buffer overflow
BadNumb:Number not recognised
ModuleTooOld:Module %0 too old
NaffRelease:Bad vector release
RMNotFound:Module %0 not found
NaffDevNo:Bad device number
BadDevVecRel:Bad device release
RedirectFail:Redirection fails
StackFull:Not enough memory on system stack
OscliLongLine:Too long
NoOscliSpecials:Special field not allowed in filing system prefix to OS_CLI
OscliTooHard:Expansion too complex
BadCommand:Command not recognised
BadParmString:Parameter expansion contains unrecognised characters
TooManyParms:Too many parameters
BadKey:Key number must be in the range 0-15
BadAddress:Address not recognised
OutsideFile:Outside file
NotABlock:Not a heap block
BadDesc:Bad heap descriptor
HeapBadReason:Bad reason code
HeapFailInit:Can't initialise heap
BadLink:Heap overwritten
HeapFailAlloc:Not enough memory (in heap)
BadExtend:Not enough memory (to extend heap)
ExcessiveShrink:Can't shrink heap any further
BadModuleReason:Unknown OS_Module call
CantKill:Module is currently active
MHNoRoom:The Network Computer has experienced a technical difficulty (101). Please select Continue.
NoMoreModules:No more modules
NoMoreIncarnations:No more incarnations of that module
PostfixNeeded:Postfix not specified
IncarnationExists:Incarnation already exists
ChunkNotRM:Podule chunk is not a relocatable module
ModulePostfix:'%%' in module title
NotMod:This is not a relocatable module
BadRMHeaderField:Illegal header field in module
RMNot32bit:Module '%0' is not 32-bit compatible
IncarnationNotFound:Incarnation not found
RMNotFoundInROM:Module is not in ROM
NumbTooBig:Number too big
BadBase:Base not recognised
BadClaimNum:Bad vector number
SysHeapFull:The Network Computer has experienced a technical difficulty (1E4). Please select Continue.
NotAllMoved:The Network Computer has experienced a technical difficulty (1C1). Please select Continue.
ChDynamCAO:Can't change memory area (application running)
AplWSpaceInUse:Application memory area in use
RAMFsUnchangeable:The size of the RAM filing system can only be changed when it is empty
BadDynamicArea:Unknown dynamic area
AreaAlreadyExists:Dynamic area already exists
AreaNotOnPageBdy:Base address not on page boundary
OverlappingAreas:Overlapping areas
CantAllocateArea:Unable to allocate logical address space
CantAllocateLevel2:Unable to allocate page tables for area
UnknownAreaHandler:Unknown dynamic area handler call
RCExc:Return code limit exceeded
RCNegative:Negative return code
BadString:String not recognised
BadVarType:Bad variable type
VarNoRoom:The area of memory reserved for the system variables is full. Use the Task Manager to make more space in the system heap/stack area.
BadMacVal:Bad macro value
BadVarNam:Variable name not recognised
VarTooLong:Variable value too long
BadParameters:Parameters not recognised
ArgRepeated:Argument repeated
BadBra:Mismatched brackets
StkOFlo:Expression stack overflow
MissOpn:Missing operand
MissOpr:Missing operator
BadInt:String is not convertible to integer
StrOFlo:String too long
NaffItm:Unknown operand
DivZero:Division by zero
NotNumeric:Numeric parameter needed
NoThen:There is no THEN
IsString:Expression is a string
ConParmTooBig:Configure parameter too big
BadConOpt:Configure option not recognised
BadStat:Status option not recognised
Config2manyparms:Too many parameters
NoSuchSWI2:SWI name not known
BadTime:Invalid time interval
BadEnvNumber:Bad Environment number
BadReadSysInfo:Unknown OS_ReadSysInfo call
BadMODE:Not enough memory to change to this screen mode
SNoWorkSpace:No memory is reserved for the system sprite area. Use the Task Manager to make some space for the system sprites.
SNoRoom:Not enough memory to create sprite
NoSprites:No sprites
NotGraphics:Not a graphics mode
SCantOpenFile:Can't open file
SNotEnoughRoom:Not enough memory in sprite area
SBadSpriteFile:Bad sprite file
SNoRoomToMerge:Not enough memory to add sprite
SBad2ndPtr:Bad 2nd ptr
InvalidRowOrCol:Invalid row or column
InvalidHeight:Invalid height
InvalidWidth:Invalid width
NoRoomToInsert:Not enough memory to insert row or column
SpriteAlreadyExists:Sprite already exists
InvalidSpriteMode:Invalid sprite mode
SBadReasonCode:Bad sprite reason code
CantInTeletext:Can't switch output in teletext mode
SInvalidSaveArea:Invalid save area
SpriteIsCurrentDest:Sprite is current destination
BadDPI:Illegal XDPI or YDPI in sprite
ModeNotAvailable:Screen mode not available
BadPixelDepth:Bad pixel depth
BadMSFlags:Illegal flags in mode selector
CDATStackOverflow:System stack overflow
NoSuchSWI:SWI not known
BadSav:Incorrect number of parameters for *Save
CmosRst:CMOS RAM reset, press ESCAPE to continue
MonType:Monitor type reconfigured
NoKbd:No keyboard present - autobooting
BreakPt:Stopped at break point at &%0
STail:|J|MUse *Configure to set the options.|J|M
CTail1:|J|MWhere:|J|MD is a decimal number, a hexadecimal number preceded by &,|J|Mor the base followed by underscore, followed|J|M
CTail2:by digits in the given base.|J|MItems within [ ] are optional.|J|MUse *Status to display the current settings.|J|M
Zonk:Unknown OS_ScreenMode reason code
SNoMask:Mask or Palette operations not supported in this display depth
BadVIDCDiv:Bad VIDC divider value
BadPlatReas:Unknown OS_PlatformFeatures reason code
UnConv:Unsupported conversion
600:ARM 600 Processor
610:ARM 610 Processor
700:ARM 700 Processor
710:ARM 710 Processor
7500:ARM 7500 Processor
7500FE:ARM 7500FE Processor
810:ARM 810 Processor
SA110:StrongARM Processor
BadNumb:Number not recognised
NoSuchSWI1:SWI &%0 not known
VarCantFind:System variable '%0' not found
BuffOverflow:Buffer overflow
Escape:Escape
Syntax:Syntax
OptErr:Syntax: *Opt [<x> [[,] <y>]]
NoHelp:No help found.
HelpFound:==> Help on keyword %0
Address:Address :
ASCII:ASCII data
Unp:Unplugged modules are:
NoUnp:No modules are unplugged
Podule:(Podule %0)
Extn:(Extn ROM %0)
Modules:No. Position Workspace Name
Number:(Number)
Macro:(Macro)
Result:Result is %0, value :
Integer:an integer
String:a string
ROMMTitle:No. Position|IModule Name|I|IVersion|IStatus|M|J
SYSROM:System ROM
EXTROM:Extn ROM
PODROM:Podule
Active:Active
Dormant:Dormant
Unplugged:Unplugged
Running:Running
Untitled:<Untitled>
Supervisor:Supervisor
ErrSub:E
YesNo:yn
Config:Configuration
Options:options:
Status:status:
Err: (Error number &%0)
Error:Error: %0 (Error number &%1)
UndefinedInstruction:Internal error: undefined instruction at &%0
InstructionAbort:Internal error: abort on instruction fetch at &%0
DataAbort:Internal error: abort on data transfer at &%0
AddressException:Internal error: address exception at &%0
BranchThrough0:Internal error: branch through zero
SDoesntExist:Sprite doesn't exist
ModuleTooOld:Module %0 too old
NaffRelease:Bad vector release
RMNotFound:Module %0 not found
NaffDevNo:Bad device number
BadDevVecRel:Bad device release
RedirectFail:Redirection fails
StackFull:Not enough memory on system stack
OscliLongLine:Too long
NoOscliSpecials:Special field not allowed in filing system prefix to OS_CLI
OscliTooHard:Expansion too complex
BadCommand:Command not recognised
BadParmString:Parameter expansion contains unrecognised characters
TooManyParms:Too many parameters
BadKey:Key number must be in the range 0-15
BadAddress:Address not recognised
OutsideFile:Outside file
NotABlock:Not a heap block
BadDesc:Bad heap descriptor
HeapBadReason:Bad reason code
HeapFailInit:Can't initialise heap
BadLink:Heap overwritten
HeapFailAlloc:Not enough memory (in heap)
BadExtend:Not enough memory (to extend heap)
ExcessiveShrink:Can't shrink heap any further
BadModuleReason:Unknown OS_Module call
CantKill:Module is currently active
MHNoRoom:The area of memory reserved for relocatable modules is full. Quit any unwanted applications or see the RISC OS User Guide for ways to maximise memory.
NoMoreModules:No more modules
NoMoreIncarnations:No more incarnations of that module
PostfixNeeded:Postfix not specified
IncarnationExists:Incarnation already exists
ChunkNotRM:Podule chunk is not a relocatable module
ModulePostfix:'%%' in module title
NotMod:This is not a relocatable module
BadRMHeaderField:Illegal header field in module
RMNot32bit:Module '%0' is not 32-bit compatible
IncarnationNotFound:Incarnation not found
RMNotFoundInROM:Module is not in ROM
NumbTooBig:Number too big
BadBase:Base not recognised
BadClaimNum:Bad vector number
SysHeapFull:The area of memory reserved for the system heap is full. Quit any unwanted applications or see the RISC OS User Guide for ways to maximise memory.
NotAllMoved:There is not enough memory to perform this operation. Quit any unwanted applications or see the RISC OS User Guide for ways to maximise memory. (Memory cannot be moved)
ChDynamCAO:Can't change memory area (application running)
AplWSpaceInUse:Application memory area in use
RAMFsUnchangeable:The size of the RAM filing system can only be changed when it is empty
BadDynamicArea:Unknown dynamic area
AreaAlreadyExists:Dynamic area already exists
AreaNotOnPageBdy:Base address not on page boundary
OverlappingAreas:Overlapping areas
CantAllocateArea:Unable to allocate logical address space
CantAllocateLevel2:Unable to allocate page tables for area
UnknownAreaHandler:Unknown dynamic area handler call
RCExc:Return code limit exceeded
RCNegative:Negative return code
BadString:String not recognised
BadVarType:Bad variable type
VarNoRoom:The area of memory reserved for the system variables is full. Use the Task Manager to make more space in the system heap/stack area.
BadMacVal:Bad macro value
BadVarNam:Variable name not recognised
VarTooLong:Variable value too long
BadParameters:Parameters not recognised
ArgRepeated:Argument repeated
BadBra:Mismatched brackets
StkOFlo:Expression stack overflow
MissOpn:Missing operand
MissOpr:Missing operator
BadInt:String is not convertible to integer
StrOFlo:String too long
NaffItm:Unknown operand
DivZero:Division by zero
NotNumeric:Numeric parameter needed
NoThen:There is no THEN
IsString:Expression is a string
ConParmTooBig:Configure parameter too big
BadConOpt:Configure option not recognised
BadStat:Status option not recognised
Config2manyparms:Too many parameters
NoSuchSWI2:SWI name not known
BadTime:Invalid time interval
BadEnvNumber:Bad Environment number
BadReadSysInfo:Unknown OS_ReadSysInfo call
BadMODE:Not enough memory to change to this screen mode
SNoWorkSpace:No memory is reserved for the system sprite area. Use the Task Manager to make some space for the system sprites.
SNoRoom:Not enough memory to create sprite
NoSprites:No sprites
NotGraphics:Not a graphics mode
SCantOpenFile:Can't open file
SNotEnoughRoom:Not enough memory in sprite area
SBadSpriteFile:Bad sprite file
SNoRoomToMerge:Not enough memory to add sprite
SBad2ndPtr:Bad 2nd ptr
InvalidRowOrCol:Invalid row or column
InvalidHeight:Invalid height
InvalidWidth:Invalid width
NoRoomToInsert:Not enough memory to insert row or column
SpriteAlreadyExists:Sprite already exists
InvalidSpriteMode:Invalid sprite mode
SBadReasonCode:Bad sprite reason code
CantInTeletext:Can't switch output in teletext mode
SInvalidSaveArea:Invalid save area
SpriteIsCurrentDest:Sprite is current destination
BadDPI:Illegal XDPI or YDPI in sprite
ModeNotAvailable:Screen mode not available
BadPixelDepth:Bad pixel depth
BadMSFlags:Illegal flags in mode selector
CDATStackOverflow:System stack overflow
NoSuchSWI:SWI not known
BadSav:Incorrect number of parameters for *Save
CmosRst:CMOS RAM reset, press ESCAPE to continue
MonType:Monitor type reconfigured
NoKbd:No keyboard present - autobooting
BreakPt:Stopped at break point at &%0
STail:|J|MUse *Configure to set the options.|J|M
CTail1:|J|MWhere:|J|MD is a decimal number, a hexadecimal number preceded by &,|J|Mor the base followed by underscore, followed|J|M
CTail2:by digits in the given base.|J|MItems within [ ] are optional.|J|MUse *Status to display the current settings.|J|M
Zonk:Unknown OS_ScreenMode reason code
SNoMask:Mask or Palette operations not supported in this display depth
BadVIDCDiv:Bad VIDC divider value
BadPlatReas:Unknown OS_PlatformFeatures reason code
UnConv:Unsupported conversion
600:ARM 600 Processor
610:ARM 610 Processor
700:ARM 700 Processor
710:ARM 710 Processor
7500:ARM 7500 Processor
7500FE:ARM 7500FE Processor
810:ARM 810 Processor
SA110:StrongARM Processor
......@@ -13,11 +13,11 @@
GBLS Module_ComponentPath
Module_MajorVersion SETS "5.35"
Module_Version SETA 535
Module_MinorVersion SETS "4.79.2.246"
Module_Date SETS "07 Nov 2014"
Module_ApplicationDate SETS "07-Nov-14"
Module_MinorVersion SETS "4.79.2.247"
Module_Date SETS "13 Nov 2014"
Module_ApplicationDate SETS "13-Nov-14"
Module_ComponentName SETS "Kernel"
Module_ComponentPath SETS "castle/RiscOS/Sources/Kernel"
Module_FullVersion SETS "5.35 (4.79.2.246)"
Module_HelpVersion SETS "5.35 (07 Nov 2014) 4.79.2.246"
Module_FullVersion SETS "5.35 (4.79.2.247)"
Module_HelpVersion SETS "5.35 (13 Nov 2014) 4.79.2.247"
END
......@@ -5,19 +5,19 @@
*
*/
#define Module_MajorVersion_CMHG 5.35
#define Module_MinorVersion_CMHG 4.79.2.246
#define Module_Date_CMHG 07 Nov 2014
#define Module_MinorVersion_CMHG 4.79.2.247
#define Module_Date_CMHG 13 Nov 2014
#define Module_MajorVersion "5.35"
#define Module_Version 535
#define Module_MinorVersion "4.79.2.246"
#define Module_Date "07 Nov 2014"
#define Module_MinorVersion "4.79.2.247"
#define Module_Date "13 Nov 2014"
#define Module_ApplicationDate "07-Nov-14"
#define Module_ApplicationDate "13-Nov-14"
#define Module_ComponentName "Kernel"
#define Module_ComponentPath "castle/RiscOS/Sources/Kernel"
#define Module_FullVersion "5.35 (4.79.2.246)"
#define Module_HelpVersion "5.35 (07 Nov 2014) 4.79.2.246"
#define Module_FullVersion "5.35 (4.79.2.247)"
#define Module_HelpVersion "5.35 (13 Nov 2014) 4.79.2.247"
#define Module_LibraryVersionInfo "5:35"
......@@ -129,6 +129,9 @@ AlwaysClearRAM SETL {TRUE}
GBLL CacheCMOSRAM ; Whether to keep a RAM copy of CMOS RAM for faster access
CacheCMOSRAM SETL {TRUE}
GBLL ProtectStationID ; Disallow writes to NetStnCMOS (via OS_Byte & OS_NVMemory)
ProtectStationID SETL :LNOT:Embedded_UI
GBLL CheckProtectionLink ; if true, disallow CMOS RAM changes if link in protected position
CheckProtectionLink SETL {TRUE} ; NB affects Delete/Copy/R/T and 0-9/.
......
......@@ -1470,7 +1470,7 @@ NVMemorySWI Entry
ExitSWIHandler
NVMemorySub
CMP R0, #6
CMP R0, #7
ADDLS PC, PC, R0, LSL #2
B NVMemory_Unknown
B NVMemory_Size
......@@ -1480,6 +1480,7 @@ NVMemorySub
B NVMemory_WriteBlock
B NVMemory_Unknown ; Reserved for Kernel-5_41 divergence
B NVMemory_ResetValue
B NVMemory_SetStation
NVMemory_Unknown
ADRL R0, ErrorBlock_HeapBadReason
......@@ -1639,10 +1640,6 @@ NVMemory_ResetValue ROUT
BEQ %FT41 ; code driven
TEQ R1, #TimeZoneCMOS
BEQ %FT42 ; code driven
[ :DEF: ObsoleteNC1CMOS
TEQ R1, #MiscellaneousNCCMOS
BEQ %FT43 ; code driven
]
]
ADR R3, DefaultCMOSTable
10
......@@ -1735,11 +1732,6 @@ NVMemory_ResetValue ROUT
MOV R2, #0 ; PAL = 0 from UTC (GMT)
MOV R3, #&E0 ; NTSC = -8 hours from UTC (USA Pacific)
B %FT44
[ :DEF: ObsoleteNC1CMOS
43
MOV R2, #0 ; PAL = A4 paper size
MOV R3, #1 ; NTSC = US letter paper size
]
44
MOV R14, #IOMD_Base
LDRB R14, [R14, #IOMD_CLINES]
......@@ -1748,6 +1740,43 @@ NVMemory_ResetValue ROUT
EXIT
]
; -----------------------------------------------------------------------------
; OS_NVMemory 7 - set station
;
; in: R0 = 7
; R1 = pointer to pass phrase
; R2 = value
;
NVMemory_SetStation ROUT
Entry "R1-R4"
MRS R4, CPSR
BIC R0, R4, #I32_bit
MSR CPSR_c, R0 ; enable interrupts - this may take some time
[ ProtectStationID
MOV R2, R1
10
LDRB R0, [R2], #1
CMP R0, #' '
BCS %BT10
MOV R3, #1
SUB R2, R2, #1
MOV R0, #0
SWI XOS_CRC
EOR R0, R0, #&009D
EORS R0, R0, #&2300
MOVNE R0, #-1 ; duff address to cause 'not writable' error
ASSERT NetStnCMOS = 0
LDR R1, [SP, #Proc_RegOffset + 4]
|
MOV R0, #NetStnCMOS
MOV R1, R2
]
BL WriteWithError
MOVVC R0, #7 ; must preserve R0
ORRVS R4, R4, #V_bit
MSR CPSR_cf, R4 ; restore interrupt state
EXIT
[ ValidateCMOS :LAND: STB
DefaultCMOSTable
; Minimalist table
......
......@@ -1150,20 +1150,8 @@ OsbyteA2
CLRPSR I_bit, R0 ; this may take some time
MOVS R0, R1
[ ProtectStationID
ASSERT NetStnCMOS = 0
MyOsbyte EQ
]
[ STB :LAND: :DEF: ObsoleteNC1CMOS
; Protect machine address CMOS (if not corrupt)
ASSERT EtherCheckCMOS = EtherAddrCMOS+6
CMP r0, #EtherAddrCMOS
BLT %FT10
CMP r0, #EtherCheckCMOS
BGT %FT10
Push "r0,r1"
BL GetMachineAddressCMOS
Pull "r0,r1"
MyOsbyte EQ ; don't allow write if address is valid
10
]
MOV R1, R2
BL Write
......
......@@ -14,9 +14,6 @@
;
; > $.Source.PMF.osinit
GBLL ProtectStationID ; if TRUE, disallow OSBYTE &A2,0,n
ProtectStationID SETL {TRUE}:LAND::LNOT:Embedded_UI
; *****************************************************************************
ExecuteInit ROUT
......
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