]> git.sur5r.net Git - cc65/blob - asminc/mouse-kernel.inc
Use "override" when appending to CFLAGS, so this works even when CFLAGS is
[cc65] / asminc / mouse-kernel.inc
1 ;/*****************************************************************************/
2 ;/*                                                                           */
3 ;/*                            mouse-kernel.inc                               */
4 ;/*                                                                           */
5 ;/*                                Mouse API                                  */
6 ;/*                                                                           */
7 ;/*                                                                           */
8 ;/*                                                                           */
9 ;/* (C) 2003-2009, Ullrich von Bassewitz                                      */
10 ;/*                Roemerstrasse 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             SETBOX      .addr
65             GETBOX      .addr
66             MOVE        .addr
67             BUTTONS     .addr
68             POS         .addr
69             INFO        .addr
70             IOCTL       .addr
71             IRQ         .addr
72         .endstruct
73         FLAGS           .byte           ; Mouse driver flags
74         CALLBACKS .struct               ; Jump instructions
75                         .byte           ; JMP opcode
76             CHIDE       .addr           ; Jump address
77                         .byte
78             CSHOW       .addr
79                         .byte
80             CMOVEX      .addr
81                         .byte
82             CMOVEY      .addr
83         .endstruct
84 .endstruct
85
86 ;------------------------------------------------------------------------------
87 ; The mouse callback structure
88
89 .struct MOUSE_CALLBACKS
90         HIDE    .addr                   ; Hide the mouse cursor
91         SHOW    .addr                   ; Show the mouse cursor
92         MOVEX   .addr                   ; Move the mouse cursor
93         MOVEY   .addr                   ; Dito for Y
94 .endstruct
95
96 ;------------------------------------------------------------------------------
97 ; The mouse API version, stored in MOUSE_HDR::VERSION
98
99 MOUSE_API_VERSION       = $02
100
101 ;------------------------------------------------------------------------------
102 ; Bitmapped mouse driver flags, stored in MOUSE_HDR::FLAGS.
103 ; Note: If neither of MOUSE_FLAG_XXX_IRQ is set, no interrupts are supplied
104 ; to the driver. If one of the bits is set, the interrupt vector MUST be
105 ; valid.
106 ; Beware: Some of the bits are tested using the BIT instruction, so do not
107 ; change the values without checking the code!
108
109 MOUSE_FLAG_EARLY_IRQ    = $40           ; Enable IRQ *before* calling INSTALL
110 MOUSE_FLAG_LATE_IRQ     = $80           ; Enable IRQ *after* calling INSTALL
111
112 ;------------------------------------------------------------------------------
113 ; Mouse button definitions
114
115 MOUSE_BTN_LEFT          = $10
116 MOUSE_BTN_RIGHT         = $01
117
118 ;------------------------------------------------------------------------------
119 ; Structures used to return data from the mouse driver
120
121 .struct MOUSE_POS
122         XCOORD  .word
123         YCOORD  .word
124 .endstruct
125
126 .struct MOUSE_INFO
127         POS     .tag    MOUSE_POS
128         BUTTONS .byte
129 .endstruct
130
131 .struct MOUSE_BOX
132         MINX    .word
133         MINY    .word
134         MAXX    .word
135         MAXY    .word
136 .endstruct
137
138 ;------------------------------------------------------------------------------
139 ; Variables
140
141         .global _mouse_drv              ; Pointer to driver
142         .global _mouse_hidden           ; Counter, 0 = mouse is visible
143
144 ;------------------------------------------------------------------------------
145 ; C callable functions
146
147         .global _mouse_load_driver
148         .global _mouse_unload
149         .global _mouse_install
150         .global _mouse_uninstall
151         .global _mouse_geterrormsg
152         .global _mouse_hide
153         .global _mouse_show
154         .global _mouse_setbox
155         .global _mouse_getbox
156         .global _mouse_move
157         .global _mouse_buttons
158         .global _mouse_pos
159         .global _mouse_info
160         .global _mouse_ioctl
161
162         .global _mouse_clear_ptr
163
164 ;------------------------------------------------------------------------------
165 ; Driver entry points (asm callable)
166
167         .global mouse_install
168         .global mouse_uninstall
169         .global mouse_hide
170         .global mouse_show
171         .global mouse_setbox                     
172         .global mouse_getbox
173         .global mouse_move
174         .global mouse_buttons
175         .global mouse_pos
176         .global mouse_info
177         .global mouse_ioctl
178
179