Author: cgutman
Date: Sun Feb 12 21:16:34 2012
New Revision: 55570

URL: http://svn.reactos.org/svn/reactos?rev=55570&view=rev
Log:
[BLUE]
- Fix code designed to avoid touching the hardware if it is already owned
[KDIO]
- Take ownership of the display if we're debugging to screen
[TXTSETUP.SIF]
- Add an example entry of DbgOsLoadOptions for debugging 1st stage to screen
- 1st stage setup can now be debugged completely to screen with a modified 
txtsetup.sif (comment 1st DbgOsLoadOptions and uncomment 2nd)

Modified:
    trunk/reactos/boot/bootdata/txtsetup.sif
    trunk/reactos/drivers/setup/blue/blue.c
    trunk/reactos/ntoskrnl/kd/kdio.c

Modified: trunk/reactos/boot/bootdata/txtsetup.sif
URL: 
http://svn.reactos.org/svn/reactos/trunk/reactos/boot/bootdata/txtsetup.sif?rev=55570&r1=55569&r2=55570&view=diff
==============================================================================
--- trunk/reactos/boot/bootdata/txtsetup.sif [iso-8859-1] (original)
+++ trunk/reactos/boot/bootdata/txtsetup.sif [iso-8859-1] Sun Feb 12 21:16:34 
2012
@@ -115,8 +115,8 @@
 DefaultPath = \ReactOS
 OsLoadOptions = "/NOGUIBOOT /NODEBUG"
 DbgOsLoadOptions = "/NOGUIBOOT /DEBUGPORT=COM1 /FIRSTCHANCE"
-;OsLoadOptions = "/NOGUIBOOT /DEBUGPORT=SCREEN"
-;OsLoadOptions = "/NOGUIBOOT /DEBUGPORT=BOCHS"
+;DbgOsLoadOptions = "/SOS /DEBUGPORT=SCREEN"
+;DbgOsLoadOptions = "/NOGUIBOOT /DEBUGPORT=BOCHS"
 
 [NLS]
 AnsiCodepage     = c_1252.nls

Modified: trunk/reactos/drivers/setup/blue/blue.c
URL: 
http://svn.reactos.org/svn/reactos/trunk/reactos/drivers/setup/blue/blue.c?rev=55570&r1=55569&r2=55570&view=diff
==============================================================================
--- trunk/reactos/drivers/setup/blue/blue.c [iso-8859-1] (original)
+++ trunk/reactos/drivers/setup/blue/blue.c [iso-8859-1] Sun Feb 12 21:16:34 
2012
@@ -224,7 +224,7 @@
 static DRIVER_DISPATCH ScrCreate;
 static NTSTATUS NTAPI
 ScrCreate(PDEVICE_OBJECT DeviceObject,
-         PIRP Irp)
+      PIRP Irp)
 {
     PDEVICE_EXTENSION DeviceExtension;
     PHYSICAL_ADDRESS BaseAddress;
@@ -232,12 +232,22 @@
 
     DeviceExtension = DeviceObject->DeviceExtension;
 
-    ScrAcquireOwnership(DeviceExtension);
-
-    /* get pointer to video memory */
-    BaseAddress.QuadPart = VIDMEM_BASE;
-    DeviceExtension->VideoMemory =
-        (PUCHAR)MmMapIoSpace (BaseAddress, DeviceExtension->Rows * 
DeviceExtension->Columns * 2, MmNonCached);
+    if (!InbvCheckDisplayOwnership())
+    {
+        ScrAcquireOwnership(DeviceExtension);
+
+        /* get pointer to video memory */
+        BaseAddress.QuadPart = VIDMEM_BASE;
+        DeviceExtension->VideoMemory =
+            (PUCHAR)MmMapIoSpace (BaseAddress, DeviceExtension->Rows * 
DeviceExtension->Columns * 2, MmNonCached);
+    }
+    else
+    {
+        /* store dummy values here */
+        DeviceExtension->Columns = 1;
+        DeviceExtension->Rows = 1;
+        DeviceExtension->ScanLines = 1;
+    }
 
     DeviceExtension->CursorSize    = 5; /* FIXME: value correct?? */
     DeviceExtension->CursorVisible = TRUE;
@@ -258,7 +268,7 @@
 static DRIVER_DISPATCH ScrWrite;
 static NTSTATUS NTAPI
 ScrWrite(PDEVICE_OBJECT DeviceObject,
-        PIRP Irp)
+     PIRP Irp)
 {
     PIO_STACK_LOCATION stk = IoGetCurrentIrpStackLocation (Irp);
     PDEVICE_EXTENSION DeviceExtension = DeviceObject->DeviceExtension;
@@ -271,16 +281,16 @@
     int rows, columns;
     int processed = DeviceExtension->Mode & ENABLE_PROCESSED_OUTPUT;
 
-    if (0 && InbvCheckDisplayOwnership())
-       {
-         /* Display is in graphics mode, we're not allowed to touch it */
-         Status = STATUS_SUCCESS;
-
-         Irp->IoStatus.Status = Status;
-         IoCompleteRequest (Irp, IO_NO_INCREMENT);
-
-         return Status;
-       }
+    if (InbvCheckDisplayOwnership())
+    {
+        /* Display is in graphics mode, we're not allowed to touch it */
+        Status = STATUS_SUCCESS;
+
+        Irp->IoStatus.Status = Status;
+        IoCompleteRequest (Irp, IO_NO_INCREMENT);
+
+        return Status;
+    }
 
     vidmem  = DeviceExtension->VideoMemory;
     rows = DeviceExtension->Rows;
@@ -297,86 +307,86 @@
     cursorx = offset % columns;
     if( processed == 0 )
        {
-         /* raw output mode */
-         memcpy( &vidmem[(cursorx * 2) + (cursory * columns * 2)], pch, 
stk->Parameters.Write.Length );
-         offset += (stk->Parameters.Write.Length / 2);
+      /* raw output mode */
+      memcpy( &vidmem[(cursorx * 2) + (cursory * columns * 2)], pch, 
stk->Parameters.Write.Length );
+      offset += (stk->Parameters.Write.Length / 2);
        }
     else {
        for (i = 0; i < stk->Parameters.Write.Length; i++, pch++)
-         {
-            switch (*pch)
-               {
-               case '\b':
-                  if (cursorx > 0)
-                     {
-                        cursorx--;
-                     }
-                  else if (cursory > 0)
-                     {
-                        cursorx = columns - 1;
-                        cursory--;
-                     }
-                  vidmem[(cursorx * 2) + (cursory * columns * 2)] = ' ';
-                  vidmem[(cursorx * 2) + (cursory * columns * 2) + 1] = (char) 
DeviceExtension->CharAttribute;
-                  break;
-
-               case '\n':
-                  cursory++;
-                  cursorx = 0;
-                  break;
-
-               case '\r':
-                  cursorx = 0;
-                  break;
-
-               case '\t':
-                  offset = TAB_WIDTH - (cursorx % TAB_WIDTH);
-                  for (j = 0; j < offset; j++)
-                     {
-                        vidmem[(cursorx * 2) + (cursory * columns * 2)] = ' ';
-                        cursorx++;
-
-                        if (cursorx >= columns)
-                           {
-                              cursory++;
-                              cursorx = 0;
-                           }
-                     }
-                  break;
-
-               default:
-                  vidmem[(cursorx * 2) + (cursory * columns * 2)] = *pch;
-                  vidmem[(cursorx * 2) + (cursory * columns * 2) + 1] = (char) 
DeviceExtension->CharAttribute;
-                  cursorx++;
-                  if (cursorx >= columns)
-                     {
-                        cursory++;
-                        cursorx = 0;
-                     }
-                  break;
-               }
-            if (cursory >= rows)
-               {
-                  unsigned short *LinePtr;
-
-                  memcpy (vidmem,
-                          &vidmem[columns * 2],
-                          columns * (rows - 1) * 2);
-
-                  LinePtr = (unsigned short *) &vidmem[columns * (rows - 1) * 
2];
-
-                  for (j = 0; j < columns; j++)
-                     {
-                        LinePtr[j] = DeviceExtension->CharAttribute << 8;
-                     }
-                  cursory = rows - 1;
-                  for (j = 0; j < columns; j++)
-                     {
-                        vidmem[(j * 2) + (cursory * columns * 2)] = ' ';
-                        vidmem[(j * 2) + (cursory * columns * 2) + 1] = 
(char)DeviceExtension->CharAttribute;
-                     }
-               }
-         }
+      {
+         switch (*pch)
+        {
+        case '\b':
+           if (cursorx > 0)
+              {
+             cursorx--;
+              }
+           else if (cursory > 0)
+              {
+             cursorx = columns - 1;
+             cursory--;
+              }
+           vidmem[(cursorx * 2) + (cursory * columns * 2)] = ' ';
+           vidmem[(cursorx * 2) + (cursory * columns * 2) + 1] = (char) 
DeviceExtension->CharAttribute;
+           break;
+
+        case '\n':
+           cursory++;
+           cursorx = 0;
+           break;
+
+        case '\r':
+           cursorx = 0;
+           break;
+
+        case '\t':
+           offset = TAB_WIDTH - (cursorx % TAB_WIDTH);
+           for (j = 0; j < offset; j++)
+              {
+             vidmem[(cursorx * 2) + (cursory * columns * 2)] = ' ';
+             cursorx++;
+
+             if (cursorx >= columns)
+                {
+                   cursory++;
+                   cursorx = 0;
+                }
+              }
+           break;
+
+        default:
+           vidmem[(cursorx * 2) + (cursory * columns * 2)] = *pch;
+           vidmem[(cursorx * 2) + (cursory * columns * 2) + 1] = (char) 
DeviceExtension->CharAttribute;
+           cursorx++;
+           if (cursorx >= columns)
+              {
+             cursory++;
+             cursorx = 0;
+              }
+           break;
+        }
+         if (cursory >= rows)
+        {
+           unsigned short *LinePtr;
+
+           memcpy (vidmem,
+               &vidmem[columns * 2],
+               columns * (rows - 1) * 2);
+
+           LinePtr = (unsigned short *) &vidmem[columns * (rows - 1) * 2];
+
+           for (j = 0; j < columns; j++)
+              {
+             LinePtr[j] = DeviceExtension->CharAttribute << 8;
+              }
+           cursory = rows - 1;
+           for (j = 0; j < columns; j++)
+              {
+             vidmem[(j * 2) + (cursory * columns * 2)] = ' ';
+             vidmem[(j * 2) + (cursory * columns * 2) + 1] = 
(char)DeviceExtension->CharAttribute;
+              }
+        }
+      }
 
        /* Set the cursor position */
        offset = (cursory * columns) + cursorx;
@@ -400,7 +410,7 @@
 static DRIVER_DISPATCH ScrIoControl;
 static NTSTATUS NTAPI
 ScrIoControl(PDEVICE_OBJECT DeviceObject,
-            PIRP Irp)
+         PIRP Irp)
 {
   PIO_STACK_LOCATION stk = IoGetCurrentIrpStackLocation (Irp);
   PDEVICE_EXTENSION DeviceExtension;
@@ -416,13 +426,20 @@
           int columns = DeviceExtension->Columns;
           unsigned int offset;
 
-          /* read cursor position from crtc */
-          _disable();
-          WRITE_PORT_UCHAR (CRTC_COMMAND, CRTC_CURSORPOSLO);
-          offset = READ_PORT_UCHAR (CRTC_DATA);
-          WRITE_PORT_UCHAR (CRTC_COMMAND, CRTC_CURSORPOSHI);
-          offset += (READ_PORT_UCHAR (CRTC_DATA) << 8);
-          _enable();
+          if (!InbvCheckDisplayOwnership())
+          {
+            /* read cursor position from crtc */
+            _disable();
+            WRITE_PORT_UCHAR (CRTC_COMMAND, CRTC_CURSORPOSLO);
+            offset = READ_PORT_UCHAR (CRTC_DATA);
+            WRITE_PORT_UCHAR (CRTC_COMMAND, CRTC_CURSORPOSHI);
+            offset += (READ_PORT_UCHAR (CRTC_DATA) << 8);
+            _enable();
+          }
+          else
+          {
+            offset = 0;
+          }
 
           pcsbi->dwSize.X = columns;
           pcsbi->dwSize.Y = rows;
@@ -454,12 +471,15 @@
           offset = (pcsbi->dwCursorPosition.Y * DeviceExtension->Columns) +
                     pcsbi->dwCursorPosition.X;
 
-          _disable();
-          WRITE_PORT_UCHAR (CRTC_COMMAND, CRTC_CURSORPOSLO);
-          WRITE_PORT_UCHAR (CRTC_DATA, offset);
-          WRITE_PORT_UCHAR (CRTC_COMMAND, CRTC_CURSORPOSHI);
-          WRITE_PORT_UCHAR (CRTC_DATA, offset>>8);
-          _enable();
+          if (!InbvCheckDisplayOwnership())
+          {
+            _disable();
+            WRITE_PORT_UCHAR (CRTC_COMMAND, CRTC_CURSORPOSLO);
+            WRITE_PORT_UCHAR (CRTC_DATA, offset);
+            WRITE_PORT_UCHAR (CRTC_COMMAND, CRTC_CURSORPOSHI);
+            WRITE_PORT_UCHAR (CRTC_DATA, offset>>8);
+            _enable();
+          }
 
           Irp->IoStatus.Information = 0;
           Status = STATUS_SUCCESS;
@@ -486,25 +506,29 @@
 
           DeviceExtension->CursorSize = pcci->dwSize;
           DeviceExtension->CursorVisible = pcci->bVisible;
-          height = DeviceExtension->ScanLines;
-          data = (pcci->bVisible) ? 0x00 : 0x20;
-
-          size = (pcci->dwSize * height) / 100;
-          if (size < 1)
+
+          if (!InbvCheckDisplayOwnership())
+          {
+            height = DeviceExtension->ScanLines;
+            data = (pcci->bVisible) ? 0x00 : 0x20;
+
+            size = (pcci->dwSize * height) / 100;
+            if (size < 1)
             {
               size = 1;
             }
 
-          data |= (UCHAR)(height - size);
-
-          _disable();
-          WRITE_PORT_UCHAR (CRTC_COMMAND, CRTC_CURSORSTART);
-          WRITE_PORT_UCHAR (CRTC_DATA, data);
-          WRITE_PORT_UCHAR (CRTC_COMMAND, CRTC_CURSOREND);
-          value = READ_PORT_UCHAR (CRTC_DATA) & 0xE0;
-          WRITE_PORT_UCHAR (CRTC_DATA, value | (height - 1));
-
-          _enable();
+            data |= (UCHAR)(height - size);
+
+            _disable();
+            WRITE_PORT_UCHAR (CRTC_COMMAND, CRTC_CURSORSTART);
+            WRITE_PORT_UCHAR (CRTC_DATA, data);
+            WRITE_PORT_UCHAR (CRTC_COMMAND, CRTC_CURSOREND);
+            value = READ_PORT_UCHAR (CRTC_DATA) & 0xE0;
+            WRITE_PORT_UCHAR (CRTC_DATA, value | (height - 1));
+
+            _enable();
+          }
 
           Irp->IoStatus.Information = 0;
           Status = STATUS_SUCCESS;
@@ -540,14 +564,17 @@
           int offset;
           ULONG dwCount;
 
-          vidmem = DeviceExtension->VideoMemory;
-          offset = (Buf->dwCoord.Y * DeviceExtension->Columns * 2) +
-                    (Buf->dwCoord.X * 2) + 1;
-
-          for (dwCount = 0; dwCount < Buf->nLength; dwCount++)
+          if (!InbvCheckDisplayOwnership())
+          {
+            vidmem = DeviceExtension->VideoMemory;
+            offset = (Buf->dwCoord.Y * DeviceExtension->Columns * 2) +
+                        (Buf->dwCoord.X * 2) + 1;
+
+            for (dwCount = 0; dwCount < Buf->nLength; dwCount++)
             {
               vidmem[offset + (dwCount * 2)] = (char) Buf->wAttribute;
             }
+          }
 
           Buf->dwTransfered = Buf->nLength;
 
@@ -564,16 +591,23 @@
           int offset;
           ULONG dwCount;
 
-          vidmem = DeviceExtension->VideoMemory;
-          offset = (Buf->dwCoord.Y * DeviceExtension->Columns * 2) +
-                   (Buf->dwCoord.X * 2) + 1;
-
-          for (dwCount = 0; dwCount < 
stk->Parameters.DeviceIoControl.OutputBufferLength; dwCount++, pAttr++)
+          if (!InbvCheckDisplayOwnership())
+          {
+            vidmem = DeviceExtension->VideoMemory;
+            offset = (Buf->dwCoord.Y * DeviceExtension->Columns * 2) +
+                     (Buf->dwCoord.X * 2) + 1;
+
+            for (dwCount = 0; dwCount < 
stk->Parameters.DeviceIoControl.OutputBufferLength; dwCount++, pAttr++)
             {
               *((char *) pAttr) = vidmem[offset + (dwCount * 2)];
             }
 
-          Buf->dwTransfered = dwCount;
+            Buf->dwTransfered = dwCount;
+          }
+          else
+          {
+            Buf->dwTransfered = 0;
+          }
 
           Irp->IoStatus.Information = sizeof(OUTPUT_ATTRIBUTE);
           Status = STATUS_SUCCESS;
@@ -588,14 +622,18 @@
           int offset;
           ULONG dwCount;
 
-          vidmem = DeviceExtension->VideoMemory;
-          offset = (pCoord->Y * DeviceExtension->Columns * 2) +
-                   (pCoord->X * 2) + 1;
-
-          for (dwCount = 0; dwCount < 
(stk->Parameters.DeviceIoControl.OutputBufferLength - sizeof( COORD )); 
dwCount++, pAttr++)
+          if (!InbvCheckDisplayOwnership())
+          {
+            vidmem = DeviceExtension->VideoMemory;
+            offset = (pCoord->Y * DeviceExtension->Columns * 2) +
+                    (pCoord->X * 2) + 1;
+
+            for (dwCount = 0; dwCount < 
(stk->Parameters.DeviceIoControl.OutputBufferLength - sizeof( COORD )); 
dwCount++, pAttr++)
             {
               vidmem[offset + (dwCount * 2)] = *pAttr;
             }
+          }
+
           Irp->IoStatus.Information = 0;
           Status = STATUS_SUCCESS;
         }
@@ -614,15 +652,18 @@
           int offset;
           ULONG dwCount;
 
-          vidmem = DeviceExtension->VideoMemory;
-          offset = (Buf->dwCoord.Y * DeviceExtension->Columns * 2) +
-                   (Buf->dwCoord.X * 2);
-
-
-          for (dwCount = 0; dwCount < Buf->nLength; dwCount++)
+          if (!InbvCheckDisplayOwnership())
+          {
+            vidmem = DeviceExtension->VideoMemory;
+            offset = (Buf->dwCoord.Y * DeviceExtension->Columns * 2) +
+                    (Buf->dwCoord.X * 2);
+
+
+            for (dwCount = 0; dwCount < Buf->nLength; dwCount++)
             {
               vidmem[offset + (dwCount * 2)] = (char) Buf->cCharacter;
             }
+          }
 
           Buf->dwTransfered = Buf->nLength;
 
@@ -639,16 +680,23 @@
           int offset;
           ULONG dwCount;
 
-          vidmem = DeviceExtension->VideoMemory;
-          offset = (Buf->dwCoord.Y * DeviceExtension->Columns * 2) +
-                   (Buf->dwCoord.X * 2);
-
-          for (dwCount = 0; dwCount < 
stk->Parameters.DeviceIoControl.OutputBufferLength; dwCount++, pChar++)
+          if (!InbvCheckDisplayOwnership())
+          {
+            vidmem = DeviceExtension->VideoMemory;
+            offset = (Buf->dwCoord.Y * DeviceExtension->Columns * 2) +
+                    (Buf->dwCoord.X * 2);
+
+            for (dwCount = 0; dwCount < 
stk->Parameters.DeviceIoControl.OutputBufferLength; dwCount++, pChar++)
             {
               *pChar = vidmem[offset + (dwCount * 2)];
             }
 
-          Buf->dwTransfered = dwCount;
+            Buf->dwTransfered = dwCount;
+          }
+          else
+          {
+            Buf->dwTransfered = 0;
+          }
 
           Irp->IoStatus.Information = sizeof(OUTPUT_ATTRIBUTE);
           Status = STATUS_SUCCESS;
@@ -663,16 +711,19 @@
           int offset;
           ULONG dwCount;
 
-          pCoord = (COORD *)MmGetSystemAddressForMdl(Irp->MdlAddress);
-          pChar = (CHAR *)(pCoord + 1);
-          vidmem = DeviceExtension->VideoMemory;
-          offset = (pCoord->Y * DeviceExtension->Columns * 2) +
-                   (pCoord->X * 2);
-
-          for (dwCount = 0; dwCount < 
(stk->Parameters.DeviceIoControl.OutputBufferLength - sizeof( COORD )); 
dwCount++, pChar++)
+          if (!InbvCheckDisplayOwnership())
+          {
+            pCoord = (COORD *)MmGetSystemAddressForMdl(Irp->MdlAddress);
+            pChar = (CHAR *)(pCoord + 1);
+            vidmem = DeviceExtension->VideoMemory;
+            offset = (pCoord->Y * DeviceExtension->Columns * 2) +
+                    (pCoord->X * 2);
+
+            for (dwCount = 0; dwCount < 
(stk->Parameters.DeviceIoControl.OutputBufferLength - sizeof( COORD )); 
dwCount++, pChar++)
             {
               vidmem[offset + (dwCount * 2)] = *pChar;
             }
+          }
 
           Irp->IoStatus.Information = 0;
           Status = STATUS_SUCCESS;
@@ -685,29 +736,32 @@
           PUCHAR Src, Dest;
           UINT32 SrcDelta, DestDelta, i, Offset;
 
-          ConsoleDraw = (PCONSOLE_DRAW) 
MmGetSystemAddressForMdl(Irp->MdlAddress);
-          Src = (PUCHAR) (ConsoleDraw + 1);
-          SrcDelta = ConsoleDraw->SizeX * 2;
-          Dest = DeviceExtension->VideoMemory +
-                 (ConsoleDraw->Y * DeviceExtension->Columns + ConsoleDraw->X) 
* 2;
-          DestDelta = DeviceExtension->Columns * 2;
-
-          for (i = 0; i < ConsoleDraw->SizeY; i++)
+          if (!InbvCheckDisplayOwnership())
+          {
+            ConsoleDraw = (PCONSOLE_DRAW) 
MmGetSystemAddressForMdl(Irp->MdlAddress);
+            Src = (PUCHAR) (ConsoleDraw + 1);
+            SrcDelta = ConsoleDraw->SizeX * 2;
+            Dest = DeviceExtension->VideoMemory +
+                    (ConsoleDraw->Y * DeviceExtension->Columns + 
ConsoleDraw->X) * 2;
+            DestDelta = DeviceExtension->Columns * 2;
+
+            for (i = 0; i < ConsoleDraw->SizeY; i++)
             {
               RtlCopyMemory(Dest, Src, SrcDelta);
               Src += SrcDelta;
               Dest += DestDelta;
             }
 
-          Offset = (ConsoleDraw->CursorY * DeviceExtension->Columns) +
-                   ConsoleDraw->CursorX;
-
-          _disable();
-          WRITE_PORT_UCHAR (CRTC_COMMAND, CRTC_CURSORPOSLO);
-          WRITE_PORT_UCHAR (CRTC_DATA, Offset);
-          WRITE_PORT_UCHAR (CRTC_COMMAND, CRTC_CURSORPOSHI);
-          WRITE_PORT_UCHAR (CRTC_DATA, Offset >> 8);
-          _enable();
+            Offset = (ConsoleDraw->CursorY * DeviceExtension->Columns) +
+                    ConsoleDraw->CursorX;
+
+            _disable();
+            WRITE_PORT_UCHAR (CRTC_COMMAND, CRTC_CURSORPOSLO);
+            WRITE_PORT_UCHAR (CRTC_DATA, Offset);
+            WRITE_PORT_UCHAR (CRTC_COMMAND, CRTC_CURSORPOSHI);
+            WRITE_PORT_UCHAR (CRTC_DATA, Offset >> 8);
+            _enable();
+          }
 
           Irp->IoStatus.Information = 0;
           Status = STATUS_SUCCESS;
@@ -718,8 +772,11 @@
           {
               UINT32 CodePage = 
(UINT32)*(PULONG)Irp->AssociatedIrp.SystemBuffer;
 
-              // Upload a font for the codepage if needed
-              ScrLoadFontTable(CodePage);
+              if (!InbvCheckDisplayOwnership())
+              {
+                // Upload a font for the codepage if needed
+                ScrLoadFontTable(CodePage);
+              }
 
               Irp->IoStatus.Information = 0;
               Status = STATUS_SUCCESS;
@@ -739,7 +796,7 @@
 static DRIVER_DISPATCH ScrDispatch;
 static NTSTATUS NTAPI
 ScrDispatch(PDEVICE_OBJECT DeviceObject,
-           PIRP Irp)
+        PIRP Irp)
 {
     PIO_STACK_LOCATION stk = IoGetCurrentIrpStackLocation(Irp);
     NTSTATUS Status;

Modified: trunk/reactos/ntoskrnl/kd/kdio.c
URL: 
http://svn.reactos.org/svn/reactos/trunk/reactos/ntoskrnl/kd/kdio.c?rev=55570&r1=55569&r2=55570&view=diff
==============================================================================
--- trunk/reactos/ntoskrnl/kd/kdio.c [iso-8859-1] (original)
+++ trunk/reactos/ntoskrnl/kd/kdio.c [iso-8859-1] Sun Feb 12 21:16:34 2012
@@ -485,6 +485,15 @@
       KdpDmesgFreeBytes = KdpDmesgBufferSize;
       KdbDmesgTotalWritten = 0;
 
+      /* Take control of the display */
+      InbvAcquireDisplayOwnership();
+      InbvResetDisplay();
+      InbvSolidColorFill(0, 0, 639, 479, 6);
+      InbvSetTextColor(15);
+      InbvSetScrollRegion(0, 0, 639, 479);
+      InbvInstallDisplayStringFilter(NULL);
+      InbvEnableDisplayString(TRUE);
+
       /* Initialize spinlock */
       KeInitializeSpinLock(&KdpDmesgLogSpinLock);
 


Reply via email to