Link to home
Start Free TrialLog in
Avatar of My name is Mud
My name is Mud

asked on

GiveIO & TotalIO (sys)

I'm trying to load a driver on Win2000, I don't care about GiveIO, since this is a specific call process, and I used PASCAL (yep that's right!), so I'm more intresting on TotalIO.sys driver, now I already loaded up, I can see it on Computer Management | System Information | Software Enviroment | Drivers. I see that the TotalIO.sys is on the list, but on the started mode there's a False comment, and on State there's a Stopped comment, I use Regedit to modify the Start Mode from Manual ($03) to System ($01) and the Error Control from Normal ($01) to Ignore ($00), and it is still the same... What the hell. How the hell do I start that Drive???

The Program in question loads some lines from a file which are converted to time format add all the lines to a double linked list, then gets hook to INT08, so every int08 checks if a second has passed, if so, check the time from the link with the time from the system, which is read directly from the CMOS chip (using port $70 & $71), If they are the same, then send a $01 to the address that was pooked from $40:$08 (LPT1 address) that is, It lights a Solid State Selenoid thru the bit1 of the parallel port, which is use to power up a 110v buzzer... then check for 5 seconds and lights down ($00) the bit1 of the port. Now this proggy is a TSR.

I made it work on Win98, I just simply put it on the Autoexec.bat, but I want to know if I can use it on W2000??? Or what do you think???


See the thing is that there are this guys who sold a new Time Check System, it cost arround 50,000 dollards, or so, but it doesn't come with a buzzer, we show the installer guy what we wanted the system to do, I symply show them the program at work, but on DOS. and they ask for the code... ??? WTF??? you're charging that much and you want me to give you some stupid-non-working-W2000-code??? they were clueless on what to do... so I want to see if any can help me out, If not, guess they have to install the system on W98, so that my proggy can work, and my boss ignore my effort, and give credit to some kiss-butt-@$$hole, and feel more stupid than i can imaging... oh well Life sucks...


I want a RAISE... damn it...
Avatar of GUEEN
GUEEN
Flag of United States of America image

Try using the AUTOEXEC.NT file for what you would have used the AUTOEXEC.BAT file in WIN98.  
I generally don't recommend modifying the registry to change service settings... though sometimes you have to.

First, change Error Control back to normal.  Then try these in this order (with a re-boot after each).

1.  Set the start up state to Automatic (use the Services control panel to do this).  Reboot and test.

2.  Uninstall and reinstall the service.  I recommend using the Windows 2000 Resource Kit tool "SRVINSTW" to do so.  Allow the service to interact with the desktop, set startup to Automatic, and reboot and test.

3. Use Services control panel to set the TOTALIO service to log on with a domain or machine user account that is a member of the local "administrators" group.  If that works, it's probably because the localsystem doesn't have a right the service needs (localsystem can't communicate over the network, for example).

4. Set the service back to using the localsystem account and set the service to interact with the desktop again.  Make the service dependant on the "Extended Base" group.  Do this by running REGEDT32 and put "Extended base" in a REG_MULTI_SZ value named "DependOnGroup" in the TOTALIO key.  You're doing this to allow the Parallel port drivers to completely load before TOTALIO starts.

If that doesn't get it, it may simply not work with Windows 2000.  It was designed originally for NT with the express intention of giving all port control over to any application -- something fundamentally against the principles of Windows NT & 2000.
Avatar of My name is Mud
My name is Mud

ASKER

Where can I find the SRVINSTW tool kit???
ASKER CERTIFIED SOLUTION
Avatar of gregcmcse
gregcmcse
Flag of United States of America image

Link to home
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
Start Free Trial
Well since the BIG GUYs couldn't make their BIG BUCKs program to work with the buzz problem, and kept asking for my code (which I didn't gave) I'm gonna set up my program in an independent machine running W98 (which my program works well in) and the the BIG BUCKs program and mine are gonna poll the time from the server so there will be no de-sincronysation...


But I will take in consideration what is state in here... thanks...
UPDATE!!! Like you would care...


Any how... I was just playing arround with a simple program which sends data depending on the arrow key pressed... here it is...
***********************************************************************************
Program Test_The_Parallel_Port;
USES
  CRT;
Const
{ This is the address of the LPT, well not necesarily,
  change to $3F8 or $3E8 or $3BC or $278 }
  PortAdd: Word = $378;
Type
  HWStr = String[4];
Var
  Key: Char;
  What: Byte;

{ This function converts a Word value in to a string of 4 chars. }
Function Wrd2Str(Wrd: Word): HWStr;
Const
  HC: Array [0..$F] Of Char = '0123456789ABCDEF';
Begin
  Wrd2Str:=HC[Hi(Wrd) Shr 4]+  { High nibble of the High byte of the World +}
           HC[Hi(Wrd) And $F]+ { Low nibble of the High byte of the World +}
           HC[Lo(Wrd) Shr 4]+  { High nibble of the Low byte of the World +}
           HC[Lo(Wrd) And $F]  { Low nibble of the Low byte of the World. }
End;

Begin
  ClrScr;
  PortAdd:=MemW[$40:$08];      { Get the Parallel Address Port }
  WriteLn('LPT Address @ $',Wrd2Str(PortAdd));
  Repeat
    If KeyPressed Then
      Begin
        Key:=ReadKey;          { Read the key }
        If Key = #0 then       { Check for incomming from special keys }
          Key:=ReadKey
      End;
    Case Key of                { Test the key }
      { If you were supose to move a car then }
      #72: What:=0;            { Up      00000000b }
      #80: What:=1;            { Down    00000001b }
      #75: What:=2;            { Left    00000010b }
      #77: What:=3;            { Right   00000011b }
      Else
           What:=0
    End;
    Port[PortAdd]:=What;       { Send it to the Port }
  Until Key = #27              { Exit the proggy until press <ESC> }
End.
***********************************************************************************

And guess what??? the damn program light up the LEDs... damn... WHAT THE HECK !!! I mean... if this little program could light the LEDs why my program could not??? so I check the drivers, you know the TOTALIO.SYS and GIVEIO.SYS, and they were the same, STOPPED... hmmm... so I took this little proggy and check it on another PC, and the same, light on!!!, so after playing arround with the damn program, I made it work... but fisrst using int $17 to send the data then sending the data directly to the LPT port... like
***********************************************************************************
Asm
    MOV            DX,PuertoP
    MOV            AX,Data
    OUT            DX,AL
    MOV            AX,Data
    MOV            DX,00
    INT            17H
End;
***********************************************************************************


And that's it...