diff --git a/VersionASM b/VersionASM
index f080fd1071eccfc05d2dfe5ea3398bddc938a58a..7f1aaa150f0a8481e9c1e1f02b182d31f61efd0d 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.166"
-Module_Date             SETS    "21 Sep 2012"
-Module_ApplicationDate  SETS    "21-Sep-12"
+Module_MinorVersion     SETS    "4.79.2.167"
+Module_Date             SETS    "30 Sep 2012"
+Module_ApplicationDate  SETS    "30-Sep-12"
 Module_ComponentName    SETS    "Kernel"
 Module_ComponentPath    SETS    "castle/RiscOS/Sources/Kernel"
-Module_FullVersion      SETS    "5.35 (4.79.2.166)"
-Module_HelpVersion      SETS    "5.35 (21 Sep 2012) 4.79.2.166"
+Module_FullVersion      SETS    "5.35 (4.79.2.167)"
+Module_HelpVersion      SETS    "5.35 (30 Sep 2012) 4.79.2.167"
                         END
diff --git a/VersionNum b/VersionNum
index 3fde493cb82a0a330af6de52af91d5f0869a48e0..0b290327c155871947e31c64e51fe8db39a80ed3 100644
--- a/VersionNum
+++ b/VersionNum
@@ -5,19 +5,19 @@
  *
  */
 #define Module_MajorVersion_CMHG        5.35
-#define Module_MinorVersion_CMHG        4.79.2.166
-#define Module_Date_CMHG                21 Sep 2012
+#define Module_MinorVersion_CMHG        4.79.2.167
+#define Module_Date_CMHG                30 Sep 2012
 
 #define Module_MajorVersion             "5.35"
 #define Module_Version                  535
-#define Module_MinorVersion             "4.79.2.166"
-#define Module_Date                     "21 Sep 2012"
+#define Module_MinorVersion             "4.79.2.167"
+#define Module_Date                     "30 Sep 2012"
 
-#define Module_ApplicationDate          "21-Sep-12"
+#define Module_ApplicationDate          "30-Sep-12"
 
 #define Module_ComponentName            "Kernel"
 #define Module_ComponentPath            "castle/RiscOS/Sources/Kernel"
 
-#define Module_FullVersion              "5.35 (4.79.2.166)"
-#define Module_HelpVersion              "5.35 (21 Sep 2012) 4.79.2.166"
+#define Module_FullVersion              "5.35 (4.79.2.167)"
+#define Module_HelpVersion              "5.35 (30 Sep 2012) 4.79.2.167"
 #define Module_LibraryVersionInfo       "5:35"
diff --git a/s/Arthur3 b/s/Arthur3
index 55aae05db311d7daf3076afb1b02057f240d0ead..8cc7eeb8dd8d9f1fddf9697bd45c7a413fdf47fe 100644
--- a/s/Arthur3
+++ b/s/Arthur3
@@ -1236,6 +1236,10 @@ AlternateNoCaps
 ExpandShCaps
         Config_NoParm   ShCaps,         3, 2, StartCMOS, 1
 EndListCapsFrig
+AlternateNum
+        Config_NoParm   Num,            7, 0, StartCMOS, 0
+AlternateNoNum
+        Config_NoParm   NoNum,          7, 0, StartCMOS, 1
         Config_Field    Data,           5, 2, DBTBCMOS
         Config_Field    Delay,          0, 7, KeyDelCMOS
         Config_Field    DumpFormat,     0, 4, PrintSoundCMOS
@@ -1956,7 +1960,7 @@ ExitShow
         LDR     r2, [r0, #-4]!
         ADD     r2, r2, r0              ; translation table
         LDR     r0, [r2, r3, LSL #2]
-        B       %BT14                   ; go printit
+        B       %BT14                   ; go print it
 
 AlternateTab
         &       AlternateBoot - ExpandFrig-.
@@ -1969,6 +1973,10 @@ AlternateTab
         &       %FT92 -.
         &       ExpandShCaps - ExpandFrig-.
         &       %FT92 -.
+        &       AlternateNum - ExpandFrig-.
+        &       %FT93 -.
+        &       AlternateNoNum - ExpandFrig-.
+        &       %FT93 -.
         &       AlternateLoud - ExpandFrig-.
         &       %FT95 -.
         &       AlternateQuiet - ExpandFrig-.
@@ -1990,6 +1998,9 @@ AlternateTab
         &       AlternateCaps   -%BT92
         &       AlternateCaps   -%BT92
         &       AlternateCaps   -%BT92
+93
+        &       AlternateNum   -%BT93
+        &       AlternateNoNum -%BT93
 95
         &       AlternateQuiet -%BT95
         &       AlternateLoud  -%BT95
diff --git a/s/NewReset b/s/NewReset
index 195e14d020e4b23087a5d0a52da18682c3a30e1f..98378dd969d095217cb951488f8140b586b5d432 100644
--- a/s/NewReset
+++ b/s/NewReset
@@ -1034,7 +1034,7 @@ DefaultCMOSTable ; list of non-zero options wanted :
         =       KeyDelCMOS,             32
         =       KeyRepCMOS,             8
         =       MODETVCMOS,             &10                                     ; TV 0,1
-        =       StartCMOS,              (2:SHL:3)                               ; NOCAPS
+        =       StartCMOS,              (1:SHL:7):OR:(2:SHL:3)                  ; NONUM, NOCAPS
         =       DBTBCMOS,               (1:SHL:4)                               ; Boot
         =       YearCMOS,               02
         =       YearCMOS+1,             20
@@ -1081,10 +1081,9 @@ DefaultCMOSTable ; list of non-zero options wanted :
                               ; Boot (changed from NoBoot 01-Sept-93)
                               ;                Data 4
 
-        =       StartCMOS,     (4:SHL:0) :OR: (2:SHL:3) :OR: (1:SHL:6)
-                              ; Drive 4 (changed from Drive 0 01-Sept-93)
-                              ;                NOCAPS (changed from CAPS 02-May-91)
-                              ;                               NODIR
+        =       StartCMOS,     (4:SHL:0) :OR: (2:SHL:3) :OR: (1:SHL:6) :OR: (0:SHL:7)
+                              ; ^              ^              ^              ^
+                              ; ADFS DR.4      NOCAPS         NODIR (moot)   NUM
 
      [ NewClockChip                     ; only on A1's!
         =       NewADFSCMOS+1,  &FF     ; step 3 for each drive
diff --git a/s/PMF/osinit b/s/PMF/osinit
index 843d7deb5742554cd0ead5b1c0f1fb54a5ddd455..5b2c1bc349c87f08b92668d88e1edbbc3a91dc4b 100644
--- a/s/PMF/osinit
+++ b/s/PMF/osinit
@@ -14,22 +14,9 @@
 ;
 ; > $.Source.PMF.osinit
 
-        GBLL    ErrorsInR0
-ErrorsInR0 SETL Module                  ; if FALSE, use XOS_GenerateError for
-                                        ; RAM version
-                                        ; if TRUE, return error ptr in R0
-
         GBLL    ProtectStationID        ; if TRUE, disallow OSBYTE &A2,0,n
 ProtectStationID SETL {TRUE}:LAND::LNOT:Embedded_UI
 
- [ STB
-        ; STB and NC machines probably want Num lock off.
-KBStat_Default  *       KBStat_NoShiftLock :OR: KBStat_NoNumLock
- |
-        ; Desktop machines probably want Num lock on.
-KBStat_Default  *       KBStat_NoShiftLock
- ]
-
 ; *****************************************************************************
 
 ExecuteInit ROUT
@@ -263,11 +250,14 @@ ReadCMOSDefaults
 
         MOV     R0, #StartCMOS
         BL      Read
-        MOVS    R0, R0, LSL #(32-5)     ; bit 5 -> carry, bit 4 -> N bit
-        MOVPL   R0, #KBStat_Default + KBStat_ShiftEnable    ; SHCAPS
-        MOVMI   R0, #KBStat_Default + KBStat_NoCapsLock     ; NOCAPS
-        MOVCS   R0, #KBStat_Default                         ; CAPS
-        STRB    R0, KeyBdStatus
+        MOVS    R1, R0, LSL #(32-5)     ; bit 5 -> carry, bit 4 -> N bit
+        MOVPL   R1, #KBStat_NoShiftLock + KBStat_ShiftEnable ; SHCAPS
+        MOVMI   R1, #KBStat_NoShiftLock + KBStat_NoCapsLock  ; NOCAPS
+        MOVCS   R1, #KBStat_NoShiftLock                      ; CAPS
+        TST     R0, #1:SHL:7                                 ; [NO]NUM
+        ORRNE   R1, R1, #KBStat_NoNumLock
+        BICEQ   R1, R1, #KBStat_NoNumLock
+        STRB    R1, KeyBdStatus
 
  [ ModeSelectors
         BL      Read_Configd_MonitorType
@@ -454,7 +444,7 @@ ByteVarInitTable
   = &00                 ; ESCBREAK    # 1    ; &C8 (200)
                         ;
   = &00                 ; KeyBdDisable # 1   ; &C9
-  = KBStat_Default      ; KeyBdStatus  # 1   ; &CA
+  = &30                 ; KeyBdStatus  # 1   ; &CA
                         ;
   = &11                 ; RS423HandShake # 1 ; &CB
   = &00                 ; RS423InputSupr # 1 ; &CC
diff --git a/s/PMF/oswrch b/s/PMF/oswrch
index 706170317bf68125d084973171b5b7aafc82b903..35ae2b071d0cb8546cd49ddd6d67d3cd08b65ad7 100644
--- a/s/PMF/oswrch
+++ b/s/PMF/oswrch
@@ -88,7 +88,7 @@ PMFWrch ROUT
         CMP     R2, #0                  ; (set V=0 for if we drop thru)
         BLNE    SpoolVdu                ; yes, then go
 45
-        [ AssemblingArthur :LOR: ErrorsInR0
+        [ AssemblingArthur :LOR: Module
         Pull    "R0-$WrchLimReg, PC", VC
         ADD     R13, R13, #4
         Pull    "R1-$WrchLimReg, PC"