From d6ece89ef4453481551c83d4a96bc79575bbf130 Mon Sep 17 00:00:00 2001
From: Kevin Bracey <kbracey@gitlab.riscosopen.org>
Date: Fri, 7 May 1999 12:30:42 +0000
Subject: [PATCH] Added OS_Module 21 (find end of ROM module chain).

Version 4.79. Tagged as 'Kernel-4_79'
---
 VersionASM  |  8 ++++----
 VersionNum  | 14 +++++++-------
 hdr/ModHand |  2 ++
 s/ModHand   | 28 ++++++++++++++++++++++++++++
 4 files changed, 41 insertions(+), 11 deletions(-)

diff --git a/VersionASM b/VersionASM
index 4d125dad..4182f3c4 100644
--- a/VersionASM
+++ b/VersionASM
@@ -6,9 +6,9 @@
 			GBLS	Module_MinorVersion
 			GBLS	Module_Date
 			GBLS	Module_FullVersion
-Module_MajorVersion	SETS    "4.78"
-Module_Version          SETA    478
+Module_MajorVersion	SETS    "4.79"
+Module_Version          SETA    479
 Module_MinorVersion	SETS	""
-Module_Date		SETS    "06 May 1999"
-Module_FullVersion      SETS    "4.78"
+Module_Date		SETS    "07 May 1999"
+Module_FullVersion      SETS    "4.79"
                         END
diff --git a/VersionNum b/VersionNum
index c3c02445..b4e55de9 100644
--- a/VersionNum
+++ b/VersionNum
@@ -1,15 +1,15 @@
-/* (4.78)
+/* (4.79)
  *
  * This file is automatically maintained by srccommit, do not edit manually.
  *
  */
-#define Module_MajorVersion_CMHG     	4.78
+#define Module_MajorVersion_CMHG     	4.79
 #define Module_MinorVersion_CMHG	
-#define Module_Date_CMHG      		06 May 1999
+#define Module_Date_CMHG      		07 May 1999
 
-#define Module_MajorVersion     	"4.78"
-#define Module_Version                  478
+#define Module_MajorVersion     	"4.79"
+#define Module_Version                  479
 #define Module_MinorVersion		""
-#define Module_Date      		"06 May 1999"
+#define Module_Date      		"07 May 1999"
 
-#define Module_FullVersion              "4.78"
+#define Module_FullVersion              "4.79"
diff --git a/hdr/ModHand b/hdr/ModHand
index 841754e8..79cf00fa 100644
--- a/hdr/ModHand
+++ b/hdr/ModHand
@@ -39,6 +39,7 @@ OldOpt SETA {OPT}
 ; 29-Jul-87  APT   LookupName
 ; 17-Aug-87  APT   EnumerateROM_Modules
 ; 23-Jan-91  TMD   EnumerateROM_ModulesWithInfo
+; 07-May-99  KJB   FindEndOfROM_ModuleChain
 
 ModHandReason_Run                          * 0
 ModHandReason_Load                         * 1
@@ -61,6 +62,7 @@ ModHandReason_AddPoduleModule              * 17
 ModHandReason_LookupName                   * 18
 ModHandReason_EnumerateROM_Modules         * 19
 ModHandReason_EnumerateROM_ModulesWithInfo * 20
+ModHandReason_FindEndOfROM_ModuleChain     * 21
 
 ; Real module offsets
 
diff --git a/s/ModHand b/s/ModHand
index f5917fff..f6cd122e 100644
--- a/s/ModHand
+++ b/s/ModHand
@@ -547,6 +547,7 @@ ModuleHandler ROUT
      ModuleDispatchEntry LookupName
      ModuleDispatchEntry EnumerateROM_Modules
      ModuleDispatchEntry EnumerateROM_ModulesWithInfo
+     ModuleDispatchEntry FindEndOfROM_ModuleChain
 
 NaffSWI                                     ; Set V and return
         ADR     R0, ErrorBlock_BadModuleReason
@@ -1598,6 +1599,33 @@ Module_EnumerateROM_ModulesWithInfo ROUT
         Pull    "r8, r9, lr"                            ; restore registers
         ExitSWIHandler                                  ; and exit
 
+;+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+; FindEndOfROM_ModuleChain
+;
+;  In :   R1 = -1    => ROM
+;            = other => reserved
+;
+;  Out:   R1 = preserved
+;         R2 -> first word after ROM module chain
+
+Module_FindEndOfROM_ModuleChain ROUT
+        CMP     r1, #-1                                 ; Only works for the system ROM at present
+        ADRNEL  r0, ErrorBlock_BadParameters
+      [ International
+        Push    "lr",NE
+        BLNE    TranslateError
+        Pull    "lr",EQ
+      ]
+        BNE     SLVK_SetV
+
+        ADRL    r2, SysModules_Info + 4                 ; Step through until the end of the module chain
+10      LDR     r11, [r2, #-4]
+        TEQ     r11, #0
+        ADDNE   r2, r2, r11
+        BNE     %BT10
+
+        ExitSWIHandler                                  ; and exit
+
 ;*************************************************************
 ; Support routines.
 ;
-- 
GitLab