]> git.sur5r.net Git - cc65/blob - asminc/mouse-kernel.inc
Added search paths similar to that of the linker and compiler.
[cc65] / asminc / mouse-kernel.inc
1 ;/*****************************************************************************/
2 ;/*                                                                           */
3 ;/*                            mouse-kernel.inc                               */
4 ;/*                                                                           */
5 ;/*                                Mouse API                                  */
6 ;/*                                                                           */
7 ;/*                                                                           */
8 ;/*                                                                           */
9 ;/* (C) 2003-2006 Ullrich von Bassewitz                                       */
10 ;/*               Römerstraße 52                                              */
11 ;/*               D-70794 Filderstadt                                         */
12 ;/* EMail:        uz@cc65.org                                                 */
13 ;/*                                                                           */
14 ;/*                                                                           */
15 ;/*                                                                           */
16 ;/*                                                                           */
17 ;/* This software is provided 'as-is', without any expressed or implied       */
18 ;/* warranty.  In no event will the authors be held liable for any damages    */
19 ;/* arising from the use of this software.                                    */
20 ;/*                                                                           */
21 ;/* Permission is granted to anyone to use this software for any purpose,     */
22 ;/* including commercial applications, and to alter it and redistribute it    */
23 ;/* freely, subject to the following restrictions:                            */
24 ;/*                                                                           */
25 ;/* 1. The origin of this software must not be misrepresented; you must not   */
26 ;/*    claim that you wrote the original software. If you use this software   */
27 ;/*    in a product, an acknowledgment in the product documentation would be  */
28 ;/*    appreciated but is not required.                                       */
29 ;/* 2. Altered source versions must be plainly marked as such, and must not   */
30 ;/*    be misrepresented as being the original software.                      */
31 ;/* 3. This notice may not be removed or altered from any source              */
32 ;/*    distribution.                                                          */
33 ;/*                                                                           */
34 ;/*****************************************************************************/
35
36
37
38
39 ;------------------------------------------------------------------------------
40 ; Error codes
41
42 .enum
43         MOUSE_ERR_OK                    ; No error
44         MOUSE_ERR_NO_DRIVER             ; No driver available
45         MOUSE_ERR_CANNOT_LOAD           ; Error loading driver
46         MOUSE_ERR_INV_DRIVER            ; Invalid driver
47         MOUSE_ERR_NO_DEVICE             ; Mouse hardware not found
48         MOUSE_ERR_INV_IOCTL             ; Invalid ioctl code
49
50         MOUSE_ERR_COUNT                 ; Special: Number of error codes
51 .endenum
52
53 ;------------------------------------------------------------------------------
54 ; The driver header
55
56 .struct MOUSE_HDR
57         ID              .byte   3       ; Contains 0x6D, 0x6F, 0x75 ("mou")
58         VERSION         .byte   1       ; Interface version
59         JUMPTAB         .struct
60             INSTALL     .addr
61             UNINSTALL   .addr
62             HIDE        .addr
63             SHOW        .addr
64             BOX         .addr
65             MOVE        .addr
66             BUTTONS     .addr
67             POS         .addr
68             INFO        .addr
69             IOCTL       .addr
70             IRQ         .addr
71         .endstruct
72         FLAGS           .byte           ; Mouse driver flags
73         CALLBACKS .struct               ; Jump instructions
74                         .byte           ; JMP opcode
75             CHIDE       .addr           ; Jump address
76                         .byte
77             CSHOW       .addr
78                         .byte
79             CMOVEX      .addr
80                         .byte
81             CMOVEY      .addr
82         .endstruct
83 .endstruct
84
85 ;------------------------------------------------------------------------------
86 ; The mouse callback structure
87
88 .struct MOUSE_CALLBACKS
89         HIDE    .addr                   ; Hide the mouse cursor
90         SHOW    .addr                   ; Show the mouse cursor
91         MOVEX   .addr                   ; Move the mouse cursor
92         MOVEY   .addr                   ; Dito for Y
93 .endstruct
94
95 ;------------------------------------------------------------------------------
96 ; The mouse API version, stored in MOUSE_HDR::VERSION
97
98 MOUSE_API_VERSION       = $01
99
100 ;------------------------------------------------------------------------------
101 ; Bitmapped mouse driver flags, stored in MOUSE_HDR::FLAGS.
102 ; Note: If neither of MOUSE_FLAG_XXX_IRQ is set, no interrupts are supplied
103 ; to the driver. If one of the bits is set, the interrupt vector MUST be
104 ; valid.
105 ; Beware: Some of the bits are tested using the BIT instruction, so do not
106 ; change the values without checking the code!
107
108 MOUSE_FLAG_EARLY_IRQ    = $40           ; Enable IRQ *before* calling INSTALL
109 MOUSE_FLAG_LATE_IRQ     = $80           ; Enable IRQ *after* calling INSTALL
110
111 ;------------------------------------------------------------------------------
112 ; Mouse button definitions
113
114 MOUSE_BTN_LEFT          = $10
115 MOUSE_BTN_RIGHT         = $01
116
117 ;------------------------------------------------------------------------------
118 ; Structures used to return data from the mouse driver
119
120 .struct MOUSE_POS
121         XCOORD  .word
122         YCOORD  .word
123 .endstruct
124
125 .struct MOUSE_INFO
126         POS     .tag    MOUSE_POS
127         BUTTONS .byte
128 .endstruct
129
130
131 ;------------------------------------------------------------------------------
132 ; Variables
133
134         .global _mouse_drv              ; Pointer to driver
135         .global _mouse_hidden           ; Counter, 0 = mouse is visible
136
137 ;------------------------------------------------------------------------------
138 ; C callable functions
139
140         .global _mouse_load_driver
141         .global _mouse_unload
142         .global _mouse_install
143         .global _mouse_uninstall
144         .global _mouse_geterrormsg
145         .global _mouse_hide
146         .global _mouse_show
147         .global _mouse_box
148         .global _mouse_move
149         .global _mouse_buttons
150         .global _mouse_pos
151         .global _mouse_info
152         .global _mouse_ioctl
153
154         .global _mouse_clear_ptr
155
156 ;------------------------------------------------------------------------------
157 ; Driver entry points (asm callable)
158
159         .global mouse_install
160         .global mouse_uninstall
161         .global mouse_hide
162         .global mouse_show
163         .global mouse_box
164         .global mouse_move
165         .global mouse_buttons
166         .global mouse_pos
167         .global mouse_info
168         .global mouse_ioctl
169
170