Good day! This actually works now, at least as near as dos (6.22) debug.exe can tell. Regards, Lawson ChangeLog: * dlls/winedos/int21.c: Lawson Whitney <whitnl73@juno.com> Simplify INT21_bufferedInput diff -urN was/dlls/winedos/int21.c is/dlls/winedos/int21.c --- was/dlls/winedos/int21.c Sun Aug 24 09:58:05 2003 +++ is/dlls/winedos/int21.c Sun Aug 24 18:08:31 2003 @@ -734,32 +734,13 @@ */ static WORD INT21_BufferedInput( CONTEXT86 *context, BYTE *ptr, WORD capacity ) { - BYTE length = 0; - + DWORD count; /* * Return immediately if capacity is zero. */ if (capacity == 0) return 0; - while(TRUE) - { - BYTE ascii; - BYTE scan; - - DOSVM_Int16ReadChar( &ascii, &scan, context ); - TRACE("ascii %c scan %c", ascii, scan); - if (ascii == '\r' || ascii == '\n') - { - /* - * FIXME: What should be echoed here? - */ - DOSVM_PutChar( '\r' ); - DOSVM_PutChar( '\n' ); - ptr[length] = '\r'; - return length + 1; - } - /* * FIXME: This function is supposed to support * DOS editing keys... @@ -770,13 +751,11 @@ * capacity, DOS rejects all further characters up to, * but not including, the terminating carriage return. */ - if (ascii != 0 && length < capacity-1) - { - DOSVM_PutChar( ascii ); - ptr[length] = ascii; - length++; - } - } + + ReadFile( GetStdHandle(STD_INPUT_HANDLE), ptr, capacity, &count, NULL ); + ptr[count-1] = '\r'; + return count; + } ________________________________________________________________ The best thing to hit the internet in years - Juno SpeedBand! Surf the web up to FIVE TIMES FASTER! Only $14.95/ month - visit www.juno.com to sign up today!