update for HEAD-2003050101
[reactos.git] / drivers / dd / blue / blue.c
index 058d819..6269a0c 100644 (file)
@@ -175,10 +175,12 @@ ScrWrite(PDEVICE_OBJECT DeviceObject,
     rows = DeviceExtension->Rows;
     columns = DeviceExtension->Columns;
 
+    __asm__ ("cli\n\t");
     WRITE_PORT_UCHAR (CRTC_COMMAND, CRTC_CURSORPOSHI);
     offset = READ_PORT_UCHAR (CRTC_DATA)<<8;
     WRITE_PORT_UCHAR (CRTC_COMMAND, CRTC_CURSORPOSLO);
     offset += READ_PORT_UCHAR (CRTC_DATA);
+    __asm__ ("sti\n\t");
 
     cursory = offset / columns;
     cursorx = offset % columns;
@@ -268,11 +270,13 @@ ScrWrite(PDEVICE_OBJECT DeviceObject,
        /* Set the cursor position */
        offset = (cursory * columns) + cursorx;
     }
+    __asm__ ("cli\n\t");
     WRITE_PORT_UCHAR (CRTC_COMMAND, CRTC_CURSORPOSLO);
     WRITE_PORT_UCHAR (CRTC_DATA, offset);
     WRITE_PORT_UCHAR (CRTC_COMMAND, CRTC_CURSORPOSHI);
     offset >>= 8;
     WRITE_PORT_UCHAR (CRTC_DATA, offset);
+    __asm__ ("sti\n\t");
 
     Status = STATUS_SUCCESS;
 
@@ -450,7 +454,7 @@ ScrIoControl(PDEVICE_OBJECT DeviceObject,
                 offset = (Buf->dwCoord.Y * DeviceExtension->Columns * 2) +
                          (Buf->dwCoord.X * 2) + 1;
 
-                for (dwCount = 0; dwCount < stk->Parameters.Write.Length; dwCount++, pAttr++)
+                for (dwCount = 0; dwCount < stk->Parameters.DeviceIoControl.OutputBufferLength; dwCount++, pAttr++)
                 {
                     (char) *pAttr = vidmem[offset + (dwCount * 2)];
                 }
@@ -474,7 +478,7 @@ ScrIoControl(PDEVICE_OBJECT DeviceObject,
                 offset = (pCoord->Y * DeviceExtension->Columns * 2) +
                          (pCoord->X * 2) + 1;
 
-                for (dwCount = 0; dwCount < (stk->Parameters.Write.Length - sizeof( COORD )); dwCount++, pAttr++)
+                for (dwCount = 0; dwCount < (stk->Parameters.DeviceIoControl.InputBufferLength - sizeof( COORD )); dwCount++, pAttr++)
                 {
                     vidmem[offset + (dwCount * 2)] = *pAttr;
                 }
@@ -527,7 +531,7 @@ ScrIoControl(PDEVICE_OBJECT DeviceObject,
                 offset = (Buf->dwCoord.Y * DeviceExtension->Columns * 2) +
                          (Buf->dwCoord.X * 2);
 
-                for (dwCount = 0; dwCount < stk->Parameters.Write.Length; dwCount++, pChar++)
+                for (dwCount = 0; dwCount < stk->Parameters.DeviceIoControl.OutputBufferLength; dwCount++, pChar++)
                 {
                     *pChar = vidmem[offset + (dwCount * 2)];
                 }
@@ -552,7 +556,7 @@ ScrIoControl(PDEVICE_OBJECT DeviceObject,
                 offset = (pCoord->Y * DeviceExtension->Columns * 2) +
                          (pCoord->X * 2);
 
-                for (dwCount = 0; dwCount < (stk->Parameters.Write.Length - sizeof( COORD )); dwCount++, pChar++)
+                for (dwCount = 0; dwCount < (stk->Parameters.DeviceIoControl.InputBufferLength - sizeof( COORD )); dwCount++, pChar++)
                 {
                     vidmem[offset + (dwCount * 2)] = *pChar;
                 }