summaryrefslogtreecommitdiff
path: root/src/winnt.c
blob: 30000aecd53f6a49f028477c0ff259102d322ab0 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
/* SP12: A serial programmer for working with Atmel AT90S uCs        */
/* Copyright (C) 1997-2003 Ken Huntington, Kevin Towers, Pitronics.  */

/* This program is free software; you can redistribute it and/or     */
/* modify it under the terms of the GNU General Public License       */
/* as published by the Free Software Foundation; either version 2    */
/* of the License, or (at your option) any later version.            */

/* This program is distributed in the hope that it will be useful,   */
/* but WITHOUT ANY WARRANTY; without even the implied warranty of    */
/* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the     */
/* GNU General Public License for more details.                      */

/* You should have received a copy of the GNU General Public License */
/* along with this program; if not, write to the Free Software       */
/* Foundation, Inc., 59 Temple Place - Suite 330, Boston,            */
/* MA  02111-1307, USA.                                              */

/* Pitronics can be reached by email: sbolt@xs4all.nl                */
/* Kevin Towers can be reached by email: ktowers@omnexcontrols.com   */
/* Ken Huntington can be reached by email: kenh@compmore.net         */

#ifdef WIN32

#include <windows.h>
#include <stdio.h>

/*
To install the device driver you need Dale Roberts' device driver giveio.sys
(http://www.ddj.com/ftp/1996/1996.05/directio.zip) and the program instdrv.exe
(instdrv.zip) from the device driver kit (DDK) for Windows NT.  
   Installation instructions

   * Copy the driver giveio.sys from the archive directio.zip into %SystemRoot%\system32\drivers. 
   * Use command line to install the driver using instdrv:
           instdrv giveio %SystemRoot%\system32\drivers\giveio.sys

   * In order to start this driver at every reboot automatically, change the start up behaviour to automatic:
       2000/XP: start regedit and change the value of the key "Start" in
                "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\giveio" to 2. 
       NT: Control Panel->Devices->giveio->Start Up->Automatic.

*/

void win_giveio(void)
    {
    HANDLE hDevice;

    if(INVALID_HANDLE_VALUE==(hDevice=CreateFile("\\\\.\\giveio",GENERIC_READ,0,NULL,OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL,NULL))){
        fprintf(stderr, "Couldn't access giveio device\n");
        exit(1);
        }
    CloseHandle(hDevice);
    }          


void delay(int mseconds)
    {
    Sleep((DWORD)mseconds);
    }

inline unsigned char inportb (const unsigned short port)
    {
    register unsigned char val;

    __asm __volatile ("inb %%dx,%%al" : "=a" (val) : "d" (port));
    return val;
    }

inline void outportb (unsigned short port, const unsigned char val)
    {
    __asm __volatile ("outb %%al,%%dx" :: "a" (val) , "d" (port));
    }
#endif