diff --git a/VersionASM b/VersionASM
index 44fcd7e312cbb13bbc94d1216b64e06ef672f1bb..dd778f4edc4c48b0ffa6c9ff744ee8a26a34c055 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.300"
-Module_Date             SETS    "01 Dec 2015"
-Module_ApplicationDate  SETS    "01-Dec-15"
+Module_MinorVersion     SETS    "4.79.2.301"
+Module_Date             SETS    "05 Jan 2016"
+Module_ApplicationDate  SETS    "05-Jan-16"
 Module_ComponentName    SETS    "Kernel"
 Module_ComponentPath    SETS    "castle/RiscOS/Sources/Kernel"
-Module_FullVersion      SETS    "5.35 (4.79.2.300)"
-Module_HelpVersion      SETS    "5.35 (01 Dec 2015) 4.79.2.300"
+Module_FullVersion      SETS    "5.35 (4.79.2.301)"
+Module_HelpVersion      SETS    "5.35 (05 Jan 2016) 4.79.2.301"
                         END
diff --git a/VersionNum b/VersionNum
index 574f2f5613648944da004e450481e1918e4a64d9..1521416a055841f1570fa4f89cd849ccb60ff750 100644
--- a/VersionNum
+++ b/VersionNum
@@ -5,19 +5,19 @@
  *
  */
 #define Module_MajorVersion_CMHG        5.35
-#define Module_MinorVersion_CMHG        4.79.2.300
-#define Module_Date_CMHG                01 Dec 2015
+#define Module_MinorVersion_CMHG        4.79.2.301
+#define Module_Date_CMHG                05 Jan 2016
 
 #define Module_MajorVersion             "5.35"
 #define Module_Version                  535
-#define Module_MinorVersion             "4.79.2.300"
-#define Module_Date                     "01 Dec 2015"
+#define Module_MinorVersion             "4.79.2.301"
+#define Module_Date                     "05 Jan 2016"
 
-#define Module_ApplicationDate          "01-Dec-15"
+#define Module_ApplicationDate          "05-Jan-16"
 
 #define Module_ComponentName            "Kernel"
 #define Module_ComponentPath            "castle/RiscOS/Sources/Kernel"
 
-#define Module_FullVersion              "5.35 (4.79.2.300)"
-#define Module_HelpVersion              "5.35 (01 Dec 2015) 4.79.2.300"
+#define Module_FullVersion              "5.35 (4.79.2.301)"
+#define Module_HelpVersion              "5.35 (05 Jan 2016) 4.79.2.301"
 #define Module_LibraryVersionInfo       "5:35"
diff --git a/hdr/HALDevice b/hdr/HALDevice
index 0c84ce3201372d3246697c69c0b3ce6805e9790e..ff58f8a035efaa84affcfa2a9de7c0f32dd3912a 100644
--- a/hdr/HALDevice
+++ b/hdr/HALDevice
@@ -75,6 +75,7 @@ HALDeviceType_ExpCtl    *       5 :SHL: 8
                         ^       1
 HALDeviceExpCtl_SDIO    #       1       ; SD/SDIO host controller
 HALDeviceExpCtl_AHCI    #       1       ; AHCI SATA bus interface
+HALDeviceExpCtl_IDE     #       1       ; IDE PATA bus interface
                                         ; things like USB, FireWire, SAS controllers might go here
 
 HALDeviceType_HID       *       6 :SHL: 8
@@ -229,6 +230,10 @@ HALDeviceID_Touchscreen_FT5406  #       1
 HALDeviceID_AHCI_IMX6           #       1
 HALDeviceID_AHCI_SynopsisDWC    #       1
 
+                                ^       0
+HALDeviceID_IDE_SMC37C66x       #       1  ; SMSC super IO '665/'669
+HALDeviceID_IDE_M5229           #       1  ; ALi super IO
+
                                 ^       0
 HALDeviceID_CacheC_PL310        #       1
 
diff --git a/hdr/HALEntries b/hdr/HALEntries
index c473b22ec586ef004119a52f0c392f1cd2116df8..18768ed5ac76ad2d9a97df8b17a42b58495cd6ab 100644
--- a/hdr/HALEntries
+++ b/hdr/HALEntries
@@ -74,21 +74,21 @@ EntryNo_HAL_IICDevice           #       1 ; 35
 EntryNo_HAL_IICTransfer         #       1 ; 36
 EntryNo_HAL_IICMonitorTransfer  #       1 ; 37
 
-EntryNo_HAL_VideoFlybackDevice        #  1 ; 38
-EntryNo_HAL_VideoSetMode              #  1 ; 39
-EntryNo_HAL_VideoWritePaletteEntry    #  1 ; 40
-EntryNo_HAL_VideoWritePaletteEntries  #  1 ; 41
-EntryNo_HAL_VideoReadPaletteEntry     #  1 ; 42
-EntryNo_HAL_VideoSetInterlace         #  1 ; 43
-EntryNo_HAL_VideoSetBlank             #  1 ; 44
-EntryNo_HAL_VideoSetPowerSave         #  1 ; 45
-EntryNo_HAL_VideoUpdatePointer        #  1 ; 46
-EntryNo_HAL_VideoSetDAG               #  1 ; 47
-EntryNo_HAL_VideoVetMode              #  1 ; 48
-EntryNo_HAL_VideoPixelFormats         #  1 ; 49
-EntryNo_HAL_VideoFeatures             #  1 ; 50
-EntryNo_HAL_VideoBufferAlignment      #  1 ; 51
-EntryNo_HAL_VideoOutputFormat         #  1 ; 52
+EntryNo_HAL_VideoFlybackDevice       #  1 ; 38
+EntryNo_HAL_VideoSetMode             #  1 ; 39
+EntryNo_HAL_VideoWritePaletteEntry   #  1 ; 40
+EntryNo_HAL_VideoWritePaletteEntries #  1 ; 41
+EntryNo_HAL_VideoReadPaletteEntry    #  1 ; 42
+EntryNo_HAL_VideoSetInterlace        #  1 ; 43
+EntryNo_HAL_VideoSetBlank            #  1 ; 44
+EntryNo_HAL_VideoSetPowerSave        #  1 ; 45
+EntryNo_HAL_VideoUpdatePointer       #  1 ; 46
+EntryNo_HAL_VideoSetDAG              #  1 ; 47
+EntryNo_HAL_VideoVetMode             #  1 ; 48
+EntryNo_HAL_VideoPixelFormats        #  1 ; 49
+EntryNo_HAL_VideoFeatures            #  1 ; 50
+EntryNo_HAL_VideoBufferAlignment     #  1 ; 51
+EntryNo_HAL_VideoOutputFormat        #  1 ; 52
 
 EntryNo_HAL_MatrixColumns       #       1 ; 53
 EntryNo_HAL_MatrixScan          #       1 ; 54
@@ -140,9 +140,9 @@ EntryNo_HAL_PCISpecialCycle     #       1 ; 94
 EntryNo_HAL_PCISlotTable        #       1 ; 95
 EntryNo_HAL_PCIAddresses        #       1 ; 96
 
-EntryNo_HAL_ATAControllerInfo   #       1 ; 97
-EntryNo_HAL_ATASetModes         #       1 ; 98
-EntryNo_HAL_ATACableID          #       1 ; 99
+EntryNo_HAL_PlatformName        #       1 ; 97, ReadSysInfo 9 subreason 7 (was HAL_ATAControllerInfo)
+                                #       1 ; 98 (was HAL_ATASetModes)
+                                #       1 ; 99 (was HAL_ATACableID)
 
 EntryNo_HAL_InitDevices         #       1 ; 100
 
diff --git a/s/Middle b/s/Middle
index 835d0ab1b0df60c11bf4a876fde537b25ca9e941..271886920959fd80700136c9c4d557030b9958ce 100644
--- a/s/Middle
+++ b/s/Middle
@@ -2000,20 +2000,34 @@ osri6_maxvalue * (.-4-osri6_table) :SHR: 2
 ;    3   = Dealer name
 ;    4   = User name
 ;    5   = User address
+;    6   = Printable OS description
+;    7   = Hardware platform
 
 90
         CMP     R1, #0
-        ADREQ   R0, RSI9_OSname     ; The OS name
+        CMPNE   R1, #6
+        ADREQ   R0, RSI9_OSname     ; The OS name or description
         BEQ     %FT95
         CMP     R1, #2              ; The build date (dynamically generated)
+        BEQ     %FT92
+        CMP     R1, #7              ; The hardware platform
         MOVNE   R0, #0              ; Other ones are unimplemented
         BNE     %FT95
+
+        Push    "r1-r3,r9,lr"
+        AddressHAL
+        MOV     a1,#0               ; Return NULL if HAL doesn't implement it
+        CallHAL HAL_PlatformName
+        Pull    "r1-r3,r9,lr"
+        B       %FT95
+92
         LDR     R0, =ROMBuildDate
         LDRB    R1, [R0]
         CMP     R1, #0
-        BNE     %FT94
+        MOVNE   R1, #2              ; Restore R1
+        BNE     %FT95
         ; Build date string hasn't been generated yet. Generate it.
-        Push    "r0,r2-r3,lr"
+        Push    "r0-r3,lr"
         MOV     R0, #0
         BL      ExtendedROMFooter_FindTag
         CMP     R0, #0              ; Found it?
@@ -2029,9 +2043,7 @@ osri6_maxvalue * (.-4-osri6_table) :SHR: 2
         MOVVS   R0, #0
         STRVS   R0, [R13]
 93
-        Pull    "r0,r2-r3,lr"
-94
-        MOV     R1, #2
+        Pull    "r0-r3,lr"
 95
         ExitSWIHandler