Hi,
--- Boaz Harrosh <boaz(a)hishome.net> wrote:
> How is ReactOS's current (future) system?
I think ReactOS's registry is binary compatible with NT4. It and the windows 2000 format was
documented/reversed for samba and the linux ntchpwd bootdisk projects. If I remeber right Eirc
Kohl offered to release some of his work to Wine for the binary format so you might want to ping
him about the implementation details.
Thanks
Steven
__________________________________
Do you Yahoo!?
Yahoo! Small Business - Try our new resources site!
http://smallbusiness.yahoo.com/resources/
Hi Emanuele,
--- ea <ea(a)iol.it> wrote:
> I tested twice fresh builds before committing and the 3rd time right now
> with local repository at revision 14248. For me it compiles, installs
> and boots correctly (qemu 0.6.1). Can you tell me more about the lock? I
> can't rollback right now because I am going out to work in a few
> seconds. Feel free to restore subsys/csrss and subsys/smss to 14243 if
> you feel this is a blocking bug for you.
Sorry, its not your problem. I rm -fr'd my reactos tree and did a clean CVS checkout and things
are cool now. I guess the current build system left some crap around that caused problems. Nice
work btw on the smss stuff. How much trouble do you think it would be possible to make a native
mode console application in smss like the Windows recovery console? I have been thinking about
doing this for the boot CD for a while but would like to make it more powerful than the Windows
recovery console.
Thanks
Steven
__________________________________
Do you Yahoo!?
Yahoo! Small Business - Try our new resources site!
http://smallbusiness.yahoo.com/resources/
James Hawkins wrote:
>>Nobody's working on it, so it won't be supported until someone cares
>>enough to do it. I encouraged a few people to start working on it but
>>nobody did, so taking out the existing support is a way to provide
>>more encouragement. If that's not enough then the feature simply won't
>>be supported anymore.
>>
>>
I started toying around the current and old code, Gathering knowledge
and ideas. What I think of doing is:
keep the boot registry as is (more less). Put in on wine/wine/config a
key system that enables a "plugin" system of registry loaders/savers.
Builtin plugins are current format and Windows binary format. Other
formats could be easily implemented; candidates could be XML, MySQL etc...
The system I thought of would also save the hives and sub trees, to the
files/plugins it was loaded from. Each plugin could also implement a
write behind so Data don't get lost in case of a crash or power lost.
Good point with the on demand-loading/cache of keys. It should be done
this way. So in summary:
1. Implement a Memory registry with plugin drivers and mount semantics.
This driver goes here, that driver mounts there.
2. Implement 2 basic drivers: Wine builtin format, Windows binary format.
3. Enable dynamic load of external drivers.
The Initial registry system is always loaded from system.reg builtin
format which is also the "fstab" file of the registry. At minimum every
thing is exactly like now one (two) files builtin format, and that's it.
At the maximum it can be highly object oriented with per user, per
application, per group management.
Please tell me what you think.
Any libraries I should look into?
How is ReactOS's current (future) system?
Free Life
Boaz
Hi,
--- ea(a)svn.reactos.com wrote:
> trunk/reactos/subsys/smss/initss.c
"Debug Windows" fails to be registered causing it to not boot the Win32 subsystem and hard lock.
Thanks
Steven
__________________________________
Do you Yahoo!?
Yahoo! Mail - 250MB free storage. Do more. Manage less.
http://info.mail.yahoo.com/mail_250
Hi,
I just finished uploading the RC1 to sf.net
The last build worked quite well, but improvements to the branch are
welcome. If no major issues occour, we may perhaps advance to Release as
next step, already.
BTW: RosApps is from 2003, still.
They are already in the installation, aren't they?
So should they be hidden?
Hi,
I am running clean on the trunk and I am getting this error.
[CC] pnp_c.c
pnp_c.c: In function `PNP_GetVersion':
pnp_c.c:72: error: syntax error before '%' token
pnp_c.c:83: warning: use of cast expressions as lvalues is deprecated
make: *** [pnp_c.o] Error 1
My gcc is a cross-compiler 3.3.4
My pnp_c.c has the following at line 72
NdrGetBuffer(
(PMIDL_STUB_MESSAGE)&_StubMsg,
_StubMsg.BufferLength,
%_Handle);
Thanks
Steven
__________________________________
Do you Yahoo!?
Yahoo! Small Business - Try our new resources site!
http://smallbusiness.yahoo.com/resources/
Hi,
is there a requirement for the serial port IRQ detection? This was also
part of my old sources but currently I simply don't know how to do it
inside the ReactOS serial driver.
BTW: How does the "serenum" stuff works?
Regards,
Mark
--- art yerkes <ayerkes(a)speakeasy.net> wrote:
> We need a convenient way to report a different version on a per application
> basis. I think there's some code to do this but I could not determine
> whether it works (despite several people telling me how to do it). While
> we're at it, can we verify that this code works and post a howto about
> reporting a specific windows version to an application?
I don't know much about it but it is supposed to be possible. There is a app compatiblity shell
extention that Thomas wrote that is supposed to do it under Windows. Anyone know if this really
works under ReactOS?
Thanks
Steven
__________________________________
Do you Yahoo!?
Make Yahoo! your home page
http://www.yahoo.com/r/hs
Hi,
I found some old sources from me where I detect the IRQ and the type
(8250, 16450, 16550, 16550A) of a COM port. I converted the type
detection sources to C.
The detection if there is a COM port at all is made by inverting all
bits of the LCR twice. All chips > 8250 have a scratch pad and all
16550A+ have a usable FIFO.
I attached the diff for reactos/drivers/dd/serial/legacy.c.
BTW: I'm sorry about it but my editor always changes TABs to spaces ...
Regards,
Mark
Index: drivers/dd/serial/legacy.c
===================================================================
--- drivers/dd/serial/legacy.c (revision 14202)
+++ drivers/dd/serial/legacy.c (working copy)
@@ -1,72 +1,101 @@
/* $Id:
*
* COPYRIGHT: See COPYING in the top level directory
* PROJECT: ReactOS kernel
* FILE: drivers/bus/serial/legacy.c
* PURPOSE: Legacy serial port enumeration
*
* PROGRAMMERS: Hervé Poussineau (poussine(a)freesurf.fr)
*/
#define NDEBUG
#include "serial.h"
+#define SER_TYPE_NONE 0
+#define SER_TYPE_8250 1
+#define SER_TYPE_16450 2
+#define SER_TYPE_16550 3
+#define SER_TYPE_16550A 4
+
+static BYTE
+DetectPortType(PUCHAR BaseAddress)
+{
+ BYTE Lcr, TestLcr;
+ BYTE OldScr, Scr5A, ScrA5;
+ BOOLEAN FifoEnabled;
+ BYTE NewFifoStatus;
+
+ Lcr = READ_PORT_UCHAR(SER_LCR(BaseAddress));
+ WRITE_PORT_UCHAR(BaseAddress, (BYTE) (Lcr ^ 0xFF));
+ TestLcr = (BYTE) (READ_PORT_UCHAR(SER_LCR(BaseAddress)) ^ 0xFF);
+ WRITE_PORT_UCHAR(BaseAddress, Lcr);
+
+ /* Accessing the LCR must work for a usable serial port */
+ if (TestLcr!=Lcr)
+ return SER_TYPE_NONE;
+
+ /* Ensure that all following accesses are done as required */
+ READ_PORT_UCHAR(SER_RBR(BaseAddress));
+ READ_PORT_UCHAR(SER_IER(BaseAddress));
+ READ_PORT_UCHAR(SER_IIR(BaseAddress));
+ READ_PORT_UCHAR(SER_LCR(BaseAddress));
+ READ_PORT_UCHAR(SER_MCR(BaseAddress));
+ READ_PORT_UCHAR(SER_LSR(BaseAddress));
+ READ_PORT_UCHAR(SER_MSR(BaseAddress));
+ READ_PORT_UCHAR(SER_SCR(BaseAddress));
+
+ /* Test scratch pad */
+ OldScr = READ_PORT_UCHAR(SER_SCR(BaseAddress));
+ WRITE_PORT_UCHAR(SER_SCR(BaseAddress), 0x5A);
+ Scr5A = READ_PORT_UCHAR(SER_SCR(BaseAddress));
+ WRITE_PORT_UCHAR(SER_SCR(BaseAddress), 0xA5);
+ ScrA5 = READ_PORT_UCHAR(SER_SCR(BaseAddress));
+ WRITE_PORT_UCHAR(SER_SCR(BaseAddress), OldScr);
+
+ /* When non-functional, we have a 8250 */
+ if (Scr5A!=0x5A || ScrA5!=0xA5)
+ return SER_TYPE_8250;
+
+ /* Test FIFO type */
+ FifoEnabled = (READ_PORT_UCHAR(SER_IIR(BaseAddress)) & 0x80)!=0;
+ WRITE_PORT_UCHAR(SER_FCR(BaseAddress), SR_FCR_ENABLE_FIFO);
+ NewFifoStatus = READ_PORT_UCHAR(SER_IIR(BaseAddress)) & 0xC0;
+ if (!FifoEnabled)
+ WRITE_PORT_UCHAR(SER_FCR(BaseAddress), 0);
+ switch (NewFifoStatus) {
+ case 0x00:
+ return SER_TYPE_16450;
+ case 0x80:
+ return SER_TYPE_16550;
+ }
+
+ /* FIFO is only functional for 16550A+ */
+ return SER_TYPE_16550A;
+}
+
static BOOLEAN
SerialDoesPortExist(PUCHAR BaseAddress)
{
- BOOLEAN Found;
- BYTE Mcr;
- BYTE Msr;
-
- Found = FALSE;
-
- /* save Modem Control Register (MCR) */
- Mcr = READ_PORT_UCHAR(SER_MCR(BaseAddress));
-
- /* enable loop mode (set Bit 4 of the MCR) */
- WRITE_PORT_UCHAR(SER_MCR(BaseAddress), 0x10);
-
- /* clear all modem output bits */
- WRITE_PORT_UCHAR(SER_MCR(BaseAddress), 0x10);
-
- /* read the Modem Status Register */
- Msr = READ_PORT_UCHAR(SER_MSR(BaseAddress));
-
- /*
- * the upper nibble of the MSR (modem output bits) must be
- * equal to the lower nibble of the MCR (modem input bits)
- */
- if ((Msr & 0xf0) == 0x00)
- {
- /* set all modem output bits */
- WRITE_PORT_UCHAR(SER_MCR(BaseAddress), 0x1f);
-
- /* read the Modem Status Register */
- Msr = READ_PORT_UCHAR(SER_MSR(BaseAddress));
-
- /*
- * the upper nibble of the MSR (modem output bits) must be
- * equal to the lower nibble of the MCR (modem input bits)
- */
- if ((Msr & 0xf0) == 0xf0)
- {
- /*
- * setup a resonable state for the port:
- * enable fifo and clear recieve/transmit buffers
- */
- WRITE_PORT_UCHAR(SER_FCR(BaseAddress),
- (SR_FCR_ENABLE_FIFO | SR_FCR_CLEAR_RCVR | SR_FCR_CLEAR_XMIT));
- WRITE_PORT_UCHAR(SER_FCR(BaseAddress), 0);
- READ_PORT_UCHAR(SER_RBR(BaseAddress));
- WRITE_PORT_UCHAR(SER_IER(BaseAddress), 0);
- Found = TRUE;
- }
- }
-
- /* restore MCR */
- WRITE_PORT_UCHAR(SER_MCR(BaseAddress), Mcr);
-
- return Found;
+ BYTE Type;
+
+ Type = DetectPortType(BaseAddress);
+ if (Type==SER_TYPE_NONE)
+ return FALSE;
+
+ if (Type==SER_TYPE_16550A) {
+ /*
+ * setup a resonable state for the port:
+ * enable fifo and clear recieve/transmit buffers
+ */
+ WRITE_PORT_UCHAR(SER_FCR(BaseAddress),
+ (SR_FCR_ENABLE_FIFO | SR_FCR_CLEAR_RCVR | SR_FCR_CLEAR_XMIT));
+ WRITE_PORT_UCHAR(SER_FCR(BaseAddress), 0);
+ }
+
+ READ_PORT_UCHAR(SER_RBR(BaseAddress));
+ WRITE_PORT_UCHAR(SER_IER(BaseAddress), 0);
+
+ return TRUE;
}
NTSTATUS