[ros-diffs] [evb] 45420: - Fix text output - Allow for more than just one parameter on the bootROM command line (sepearate with commas). - Rdoffset is not hardcoded anymore, but passed on cmdline. Allows using images with different partition offsets.

evb at svn.reactos.org evb at svn.reactos.org
Thu Feb 4 16:59:22 CET 2010


Author: evb
Date: Thu Feb  4 16:59:22 2010
New Revision: 45420

URL: http://svn.reactos.org/svn/reactos?rev=45420&view=rev
Log:
- Fix text output
- Allow for more than just one parameter on the bootROM command line (sepearate with commas).
- Rdoffset is not hardcoded anymore, but passed on cmdline. Allows using images with different partition offsets.

Modified:
    trunk/reactos/boot/armllb/envir.c
    trunk/reactos/boot/armllb/hw/versatile/hwinit.c
    trunk/reactos/boot/armllb/hw/video.c

Modified: trunk/reactos/boot/armllb/envir.c
URL: http://svn.reactos.org/svn/reactos/trunk/reactos/boot/armllb/envir.c?rev=45420&r1=45419&r2=45420&view=diff
==============================================================================
--- trunk/reactos/boot/armllb/envir.c [iso-8859-1] (original)
+++ trunk/reactos/boot/armllb/envir.c [iso-8859-1] Thu Feb  4 16:59:22 2010
@@ -14,7 +14,8 @@
 ULONG LlbEnvRamDiskStart;
 ULONG LlbEnvRamDiskSize;
 CHAR LlbEnvCmdLine[256];
-
+CHAR LlbValueData[32];
+    
 VOID
 NTAPI
 LlbEnvParseArguments(IN PATAG Arguments)
@@ -105,14 +106,35 @@
 NTAPI
 LlbEnvRead(IN PCHAR ValueName)
 {
-    PCHAR ValueData;
+    PCHAR ValuePointer;
+    ULONG Length = 0;
     
     /* Search for the value name */
-    ValueData = strstr(LlbEnvCmdLine, ValueName);
-    if (ValueData) ValueData += strlen(ValueName) + 1;
+    ValuePointer = strstr(LlbEnvCmdLine, ValueName);
+    if (ValuePointer)
+    {
+        /* Get the value data and its length */
+        ValuePointer += strlen(ValueName) + 1;
+        if (strchr(ValuePointer, ','))
+        {
+            /* Stop before next parameter */
+            Length = strchr(ValuePointer, ',') - ValuePointer;
+        }
+        else
+        {
+            /* Stop before the string ends */
+            Length = strlen(ValuePointer);
+        }
+        
+        /* Copy it */
+        strncpy(LlbValueData, ValuePointer, Length);
+    }
+    
+    /* Terminate the data */
+    LlbValueData[Length] = ANSI_NULL;
 
     /* Return the data */
-    return ValueData;
+    return LlbValueData;
 }
 
 /* EOF */

Modified: trunk/reactos/boot/armllb/hw/versatile/hwinit.c
URL: http://svn.reactos.org/svn/reactos/trunk/reactos/boot/armllb/hw/versatile/hwinit.c?rev=45420&r1=45419&r2=45420&view=diff
==============================================================================
--- trunk/reactos/boot/armllb/hw/versatile/hwinit.c [iso-8859-1] (original)
+++ trunk/reactos/boot/armllb/hw/versatile/hwinit.c [iso-8859-1] Thu Feb  4 16:59:22 2010
@@ -30,6 +30,7 @@
 LlbHwLoadOsLoaderFromRam(VOID)
 {
     ULONG Base, RootFs, Size;
+    PCHAR Offset;
     CHAR CommandLine[64];
     
     /* On versatile, the NAND image is loaded as the RAMDISK */
@@ -40,9 +41,12 @@
     
     /* The OS loader is next, followed by the root file system */
     RootFs = Base + 0x80000; // 512 KB (see nandflash)
-        
+    
+    /* Read image offset */
+    Offset = LlbEnvRead("rdoffset");
+    
     /* Set parameters for the OS loader */
-    sprintf(CommandLine, "rdbase=0x%x rdsize=0x%x rdoffset=%d", RootFs, Size, 32256);
+    sprintf(CommandLine, "rdbase=0x%x rdsize=0x%x rdoffset=%s", RootFs, Size, Offset);
     LlbSetCommandLine(CommandLine);
     
     /* Return the OS loader base address */

Modified: trunk/reactos/boot/armllb/hw/video.c
URL: http://svn.reactos.org/svn/reactos/trunk/reactos/boot/armllb/hw/video.c?rev=45420&r1=45419&r2=45420&view=diff
==============================================================================
--- trunk/reactos/boot/armllb/hw/video.c [iso-8859-1] (original)
+++ trunk/reactos/boot/armllb/hw/video.c [iso-8859-1] Thu Feb  4 16:59:22 2010
@@ -351,7 +351,7 @@
     
     /* Amount of characters in a line */
     ScreenWidth = LlbHwGetScreenWidth();
-    CharsPerLine = ScreenWidth / FONT_HEIGHT;
+    CharsPerLine = ScreenWidth / 8;
 
     /* Handle new line and scrolling */
     if (c == '\n')




More information about the Ros-diffs mailing list