0
|
1 * miscellaneous definitions
|
|
2 HResMaxX equ 639 high resolution X limit
|
|
3 HResMaxY equ 191 high resolution Y limit
|
|
4 MousData equ $0008 arbitrary choice for mouse data area ($0008-$000F)
|
2371
|
5 *PcktSize equ 5 wrong for M$, Logitek mice
|
|
6 PcktSize equ 4 number of bytes in mouse data packet, wrong. max 4, usually 3
|
|
7 *SyncData equ %10000000 initial mouse data byte pattern- wrong
|
|
8 SyncData equ %01000000 initial mouse data byte pattern, d7 is NOT used
|
|
9 *SyncMask equ %11111000 mask for initial mouse data byte pattern-wrong
|
|
10 SyncMask equ %01111000 mask for initial mouse data byte pattern
|
0
|
11 * 6551 register definitions
|
|
12 org 0
|
|
13 DataReg rmb 1 receive/transmit data
|
|
14 StatReg rmb 1 IRQ/DSR/DCD/error status (read only)
|
|
15 PRstReg equ StatReg programmed reset (write only)
|
|
16 CmdReg rmb 1 command (parity/echo/Tx IRQ/Rx IRQ/DTR)
|
|
17 CtrlReg rmb 1 control (stop bits/word length/Rx clock/baud rate)
|
|
18
|
|
19 * Status bit definitions
|
|
20 Stat.IRQ equ %10000000 IRQ occurred
|
|
21 Stat.DSR equ %01000000 current DSR input level (0=enabled, 1=disabled)
|
|
22 Stat.DCD equ %00100000 current DCD input level (0=enabled, 1=disabled)
|
|
23 Stat.TxE equ %00010000 Tx register empty
|
|
24 Stat.RxF equ %00001000 Rx register full
|
|
25 Stat.Ovn equ %00000100 overrun error
|
|
26 Stat.Frm equ %00000010 framing error
|
|
27 Stat.Par equ %00000001 parity error
|
|
28
|
|
29 Stat.Err equ Stat.Ovn!Stat.Frm!Stat.Par status error bits
|
|
30 Stat.Flp equ $00 all status bits active when set
|
|
31 Stat.Msk equ Stat.RxF!Stat.Ovn!Stat.Frm!Stat.Par active IRQ bits
|
|
32
|
|
33 * Command bit definitions
|
|
34 Cmd.Par equ %11100000 see parity table below
|
|
35 Cmd.Echo equ %00010000 Rx echo (0=disabled, 1=enabled)
|
|
36 Cmd.TxIC equ %00001100 see Tx IRQ control table below
|
|
37 Cmd.RxIE equ %00000010 Rx IRQ enable (0=enabled, 1=disabled)
|
|
38 Cmd.DTR equ %00000001 DTR output (0=disabled, 1=enabled)
|
|
39
|
|
40 * parity table
|
|
41 Par.None equ %00000000
|
|
42 Par.Odd equ %00100000
|
|
43 Par.Even equ %01100000
|
|
44 Par.Mark equ %10100000
|
|
45 Par.Spac equ %11100000
|
|
46
|
|
47 * Tx IRQ control table
|
|
48 TIC.Off equ %00000000 RTS disabled, Tx IRQ disabled
|
|
49 TIC.On equ %00000100 RTS enabled, Tx IRQ enabled
|
|
50 TIC.RTS equ %00001000 RTS enabled, Tx IRQ disabled
|
|
51 TIC.Brk equ %00001100 RTS enabled, Tx line break
|
|
52
|
|
53 * Control bit definitions
|
|
54 Ctl.Stop equ %10000000 stop bits (clear=1, set=2)
|
|
55 Ctl.DBit equ %01100000 see data bit table below
|
|
56 Ctl.RClk equ %00010000 Rx clock source (0=external, 1=internal)
|
|
57 Ctl.Baud equ %00001111 see baud rate table below
|
|
58
|
|
59 * data bit table
|
|
60 DB.5 equ %01100000 five data bits per character
|
|
61 DB.6 equ %01000000 six data bits per character
|
|
62 DB.7 equ %00100000 seven data bits per character
|
|
63 DB.8 equ %00000000 eight data bits per character
|
2371
|
64 * GH 28/06/2008 Note, data format is only 7 bits
|
|
65 * but most mice send 8 bits with the last bit,
|
|
66 * MSB set which=extra stop bit, so use DB.7
|
0
|
67 * baud rate table
|
|
68 org 0
|
|
69 BR.ExClk rmb 1 16x external clock
|
|
70 BR.00050 rmb 1 50 baud
|
|
71 BR.00075 rmb 1 75 baud
|
|
72 BR.00110 rmb 1 109.92 baud
|
|
73 BR.00135 rmb 1 134.58 baud
|
|
74 BR.00150 rmb 1 150 baud
|
|
75 BR.00300 rmb 1 300 baud
|
|
76 BR.00600 rmb 1 600 baud
|
|
77 BR.01200 rmb 1 1200 baud
|
|
78 BR.01800 rmb 1 1800 baud
|
|
79 BR.02400 rmb 1 2400 baud
|
|
80 BR.03600 rmb 1 3600 baud
|
|
81 BR.04800 rmb 1 4800 baud
|
|
82 BR.07200 rmb 1 7200 baud
|
|
83 BR.09600 rmb 1 9600 baud
|
|
84 BR.19200 rmb 1 19200 baud
|
|
85
|
|
86 * Btn.Cntr bit definitions
|
2371
|
87 BC.ButnL equ %00100000 button #1 (left, 1 = pressed=$20)
|
|
88 BC.ButnR equ %00010000 button #2 (right, 1 = pressed=$10)
|
|
89 BC.ButnC equ %00001000 button #3 (center, 1 = pressed=$08)
|
|
90 BC.RxCnt equ %00000111 Rx data byte count
|
|
91 BC.Butns equ BC.ButnL!BC.ButnR!BC.ButnC mask for all buttons
|
0
|
92
|
2371
|
93 * added 06/21/2008 GH some defines for button up
|
|
94 BU.ButnL equ %00011111 to clear button #1 left
|
|
95 BU.ButnR equ %00101111 to clear button #2 right
|
|
96 BU.ButnC equ %00110111 to clear button #3 center
|
0
|
97
|
2371
|
98 * Added 06/21/2008 GH more possibly handy defines
|
|
99 * here is a good place to define mouse buttons
|
|
100 * as the mouse output data delivers them to us
|
|
101 MD.Sync equ %01000000 never set unless sync byte
|
|
102 MD.ButnL equ %00100000 left, in first 'sync' byte of logitek mouse
|
|
103 MD.ButnR equ %00010000 right, in first 'sync' byte of logitek mouse
|
|
104 MD.ButnC equ %00100000 center, but in 4th byte only
|
|
105 MskYYXX equ %11000000 for use after shifted to msbits
|
0
|
106 * mouse static data area definitions
|
|
107 org 0
|
|
108 Btn.Cntr rmb 1 mouse button status and Rx data counter
|
|
109 Buffer rmb 3 Rx buffer for 1st 3 bytes of XY mouse data (must start at 1,u)
|
|
110 CrntXPos rmb 2 mouse X position (0 to HResMaxX)
|
|
111 CrntYPos rmb 2 mouse Y position (0 to HResMaxY*2)
|
|
112
|
2371
|
113 * added, may, may not be usefull, GH
|
|
114 * logitek mouse data defs, almost same as M$, bit D7 of any byte is don't care
|
|
115 * BECAUSE THE MOUSE IS A 7N1 MOUSE!
|
|
116 * Assume Btn.Cntr will be inc'd as last processing op of each byte rx'd here.
|
|
117 LkMsMask equ %01111111 d7 ignored
|
|
118 LkMsSync equ %01000000 only set for first byte of packet, set Btn.Cntr=0
|
|
119 LkMsLBtn equ %00100000 if left button pushed, in sync byte
|
|
120 LkMsRbtn equ %00010000 if right button pushed, in sync byte
|
|
121 * except this one in 4th byte
|
|
122 LgtkCBtn equ %00100000 if center button pushed, and Btn.Cntr=3
|
|
123 * sign bits
|
|
124 LkMsYSgn equ %00001000 direction of current move, in sync byte
|
|
125 LkMsXSgn equ %00000010 direction of current move, in sync byte
|
|
126 * direction since last packet bits
|
|
127 LkMsYMsb equ %00000100 MSB of current Y move, in sync byte
|
|
128 LkMsXMsb equ %00000001 MSB of current X move, in sync byte
|
|
129 LkMsXMov equ %00111111 the rest of an 7 bit value, when Btn.Cntr=1 (second byte)
|
|
130 LkMsYMov equ %00111111 the rest of an 7 bit value, when Btn.Cntr=2
|
|
131
|
|
132 * Microsoft sends the center button down as a no data packet
|
|
133 * sync bit only in first byte
|
|
134 * ANYTHING else is a center button up event.
|