home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
The Unsorted BBS Collection
/
thegreatunsorted.tar
/
thegreatunsorted
/
programming
/
misc_programming
/
int74.spc
< prev
next >
Wrap
Text File
|
1990-01-05
|
10KB
|
271 lines
Specification Pointing Device Hardware Interrupt (INT 74H)
----------------------------------------------------------
Description:
This routine is an interface between the pointing device and
pointing device driver. If an interrupt enters from the pointing
device, this routine will be invoked. After preparing the
data inputed from the pointing device, it will invoke the pointing
device driver (supported by the user).
function:
pointing device
input: none
output: none
reference extension BIOS data area:
022h device drive far call offset
024h device drive far call segment
026h poiting device flag
bit 7 -- command in progress
bit 6 -- resend
bit 5 -- acknowledge
bit 4 -- error
bit 3 -- reserved = 0
bit 2-0 -- index count of input data
027h pointing device flag
bit 7 -- device drive far call flag
bit 6 -- Pointer device interface initialization ok
bit 5-3 -- reserved
bit 2-0 -- package size
028h Pointing device buffer (1'st input data)
029h Pointing device buffer (2'nd input data)
02Ah Pointing device buffer (3'rd input data)
02Bh Pointing device buffer (4'th input data)
02Ch Pointing device buffer (5'th input data)
02Dh Pointing device buffer (6'th input data)
02Eh Pointing device buffer (7'th input data)
02Fh Pointing device buffer (8'th input data)
I/O port defined:
REGISTER DESCRIPTION
-----------------------------------------------------------------
60 (read) Input data port
64 (read) 8042 status byte
bit 7 -- Parity Error
bit 6 -- General Time out
bit 5 -- Auxiliary Output buffer full
bit 4 -- Inhibit Switch
bit 3 -- Command/Data
bit 2 -- System Flag
bit 1 -- Input Buffer full
bit 0 -- Output Buffer full
A0 Interrupt control register
Note:
1.The following conditions are set after POST.
. pointing device is disabled
. sample rate is set to 100 number of reports/second
. resolution is set to 4 count/mm.
. scaling is set to 1:1
2.No matter what the device drive far call flag is, this routine
always calls the user-defined function when index count = package
size.
3.Befor calling the user service routine, INT 74h prepares the
following data (standard one) for the user.
word 1 on stack
low byte - status
bit 0 - left button status
- 1 : pressed
bit 1 - right button status
- 1 : pressed
bit 2 - reserved (must be 0)
bit 3 - reserved (must be 1)
bit 4 - X data sign
- 1 negative
bit 5 - Y data sign
- 1 negative
bit 6 - X data overflow
- 1 overflow
bit 7 - Y data overflow
- 1 overflow
high byte = 0.
word 2 on stack
low byte - X data
bit 0 - least significant bit
bit 7 - most significant bit
word 3 on stack
low byte - Y data
bit 0 - least significant bit
bit 7 - most significant bit
word 4 on stack
low word = 0
high byte = 0
4.All of the data format (including the standard one) in stack
is described as follows :
(1) Package size = 2 byte
Format diagram
SS:SP+00H ── ┌───────────┐
│ 0 │
SP+01H ── ├───────────┤
│ 0 │
SP+02H ── ├───────────┤
│ 0 │
SP+03H ── ├───────────┤
│ 0 │
SP+04H ── ├───────────┤
│ 0 │
SP+05H ── ├───────────┤
│ 0 │
SP+06H ── ├───────────┤
│ EXT:0028 │
SP+07H ── ├───────────┤
│Last Input │
└───────────┘
(2) Package size = 4 byte
Format diagram
SS:SP+00H ── ┌───────────┐
│ 0 │
SP+01H ── ├───────────┤
│ 0 │
SP+02H ── ├───────────┤
│ 0 │
SP+03H ── ├───────────┤
│ Last Input│
SP+04H ── ├───────────┤
│ 0 │
SP+05H ── ├───────────┤
│ EXT:002A │
SP+06H ── ├───────────┤
│ EXT:0028 │
SP+07H ── ├───────────┤
│ EXT:0029 │
└───────────┘
(3) Package size = 6 byte
Format diagram
SS:SP+00H ── ┌───────────┐
│ 0 │
SP+01H ── ├───────────┤
│ 0 │
SP+02H ── ├───────────┤
│ EXT:002B │
SP+03H ── ├───────────┤
│ Last Input│
SP+04H ── ├───────────┤
│ EXT:002A │
SP+05H ── ├───────────┤
│ EXT:002C │
SP+06H ── ├───────────┤
│ EXT:0028 │
SP+07H ── ├───────────┤
│ EXT:0029 │
└───────────┘
(4) Package size = 8 byte
Format diagram
SS:SP+00H ── ┌───────────┐
│ EXT:002C │
SP+01H ── ├───────────┤
│ Last Input│
SP+02H ── ├───────────┤
│ EXT:002B │
SP+03H ── ├───────────┤
│ EXT:002E │
SP+04H ── ├───────────┤
│ EXT:002A │
SP+05H ── ├───────────┤
│ EXT:002D │
SP+06H ── ├───────────┤
│ EXT:0028 │
SP+07H ── ├───────────┤
│ EXT:0029 │
└───────────┘
(5) Package size = 1 byte
Format diagram
SS:SP+00H ── ┌───────────┐
│ 0 │
SP+01H ── ├───────────┤
│ 0 │
SP+02H ── ├───────────┤
│ 0 │
SP+03H ── ├───────────┤
│ 0 │
SP+04H ── ├───────────┤
│ 0 │
SP+05H ── ├───────────┤
│ 0 │
SP+06H ── ├───────────┤
│ Last Input│
SP+07H ── ├───────────┤
│ 0 │
└───────────┘
(6) Package size = 3 byte
Format diagram
SS:SP+00H ── ┌───────────┐
│ 0 │
SP+01H ── ├───────────┤
│ 0 │
SP+02H ── ├───────────┤
│ Last Input│
SP+03H ── ├───────────┤
│ 0 │
SP+04H ── ├───────────┤
│ EXT:0029 │
SP+05H ── ├───────────┤
│ 0 │
SP+06H ── ├───────────┤
│ EXT:0028 │
SP+07H ── ├───────────┤
│ 0 │
└───────────┘
(7) Package size = 5 byte
Format diagram
SS:SP+00H ── ┌───────────┐
│ 0 │
SP+01H ── ├───────────┤
│ 0 │
SP+02H ── ├───────────┤
│ Last Input│
SP+03H ── ├───────────┤
│ EXT:002A │
SP+04H ── ├───────────┤
│ EXT:0029 │
SP+05H ── ├───────────┤
│ EXT:002B │
SP+06H ── ├───────────┤
│ EXT:0028 │
SP+07H ── ├───────────┤
│ 0 │
└───────────┘
(8) Package size = 7 byte
Format diagram
SS:SP+00H ── ┌───────────┐
│ EXT:002B │
SP+01H ── ├───────────┤
│ Last Input│
SP+02H ── ├───────────┤
│ EXT:002A │
SP+03H ── ├───────────┤
│ EXT:002D │
SP+04H ── ├───────────┤
│ EXT:0029 │
SP+05H ── ├───────────┤
│ EXT:002C │
SP+06H ── ├───────────┤
│ EXT:0028 │
SP+07H ── ├───────────┤
│ 0 │
└───────────┘