2003-12-28 21:26:11 +00:00
|
|
|
|
;/*****************************************************************************/
|
|
|
|
|
;/* */
|
|
|
|
|
;/* mouse-kernel.inc */
|
|
|
|
|
;/* */
|
|
|
|
|
;/* Mouse API */
|
|
|
|
|
;/* */
|
|
|
|
|
;/* */
|
|
|
|
|
;/* */
|
2004-03-21 22:12:06 +00:00
|
|
|
|
;/* (C) 2003-2004 Ullrich von Bassewitz */
|
2003-12-28 21:26:11 +00:00
|
|
|
|
;/* R<>merstra<72>e 52 */
|
|
|
|
|
;/* D-70794 Filderstadt */
|
|
|
|
|
;/* EMail: uz@cc65.org */
|
|
|
|
|
;/* */
|
|
|
|
|
;/* */
|
|
|
|
|
;/* */
|
|
|
|
|
;/* */
|
|
|
|
|
;/* This software is provided 'as-is', without any expressed or implied */
|
|
|
|
|
;/* warranty. In no event will the authors be held liable for any damages */
|
|
|
|
|
;/* arising from the use of this software. */
|
|
|
|
|
;/* */
|
|
|
|
|
;/* Permission is granted to anyone to use this software for any purpose, */
|
|
|
|
|
;/* including commercial applications, and to alter it and redistribute it */
|
|
|
|
|
;/* freely, subject to the following restrictions: */
|
|
|
|
|
;/* */
|
|
|
|
|
;/* 1. The origin of this software must not be misrepresented; you must not */
|
|
|
|
|
;/* claim that you wrote the original software. If you use this software */
|
|
|
|
|
;/* in a product, an acknowledgment in the product documentation would be */
|
|
|
|
|
;/* appreciated but is not required. */
|
|
|
|
|
;/* 2. Altered source versions must be plainly marked as such, and must not */
|
|
|
|
|
;/* be misrepresented as being the original software. */
|
|
|
|
|
;/* 3. This notice may not be removed or altered from any source */
|
|
|
|
|
;/* distribution. */
|
|
|
|
|
;/* */
|
|
|
|
|
;/*****************************************************************************/
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
;------------------------------------------------------------------------------
|
|
|
|
|
; Error codes
|
|
|
|
|
|
|
|
|
|
.enum
|
|
|
|
|
MOUSE_ERR_OK ; No error
|
|
|
|
|
MOUSE_ERR_NO_DRIVER ; No driver available
|
|
|
|
|
MOUSE_ERR_CANNOT_LOAD ; Error loading driver
|
|
|
|
|
MOUSE_ERR_INV_DRIVER ; Invalid driver
|
|
|
|
|
MOUSE_ERR_NO_DEVICE ; Mouse hardware not found
|
2003-12-30 08:18:40 +00:00
|
|
|
|
MOUSE_ERR_INV_IOCTL ; Invalid ioctl code
|
2003-12-28 21:26:11 +00:00
|
|
|
|
.endenum
|
|
|
|
|
|
|
|
|
|
;------------------------------------------------------------------------------
|
|
|
|
|
; The driver header
|
|
|
|
|
|
|
|
|
|
.struct MOUSE_HDR
|
2004-03-05 18:34:44 +00:00
|
|
|
|
ID .byte 3 ; Contains 0x6D, 0x6F, 0x75 ("mou")
|
|
|
|
|
VERSION .byte 1 ; Interface version
|
|
|
|
|
JUMPTAB .struct
|
|
|
|
|
INSTALL .addr
|
2003-12-28 21:26:11 +00:00
|
|
|
|
UNINSTALL .addr
|
|
|
|
|
HIDE .addr
|
|
|
|
|
SHOW .addr
|
|
|
|
|
BOX .addr
|
|
|
|
|
MOVE .addr
|
|
|
|
|
BUTTONS .addr
|
|
|
|
|
POS .addr
|
|
|
|
|
INFO .addr
|
2003-12-30 08:18:40 +00:00
|
|
|
|
IOCTL .addr
|
2004-03-05 18:34:44 +00:00
|
|
|
|
IRQ .addr
|
2003-12-28 21:26:11 +00:00
|
|
|
|
.endstruct
|
2004-03-05 18:34:44 +00:00
|
|
|
|
CALLBACKS .struct ; Jump instructions
|
|
|
|
|
.byte ; JMP opcode
|
|
|
|
|
CHIDE .addr ; Jump address
|
|
|
|
|
.byte
|
|
|
|
|
CSHOW .addr
|
|
|
|
|
.byte
|
2004-03-21 22:12:06 +00:00
|
|
|
|
CMOVEX .addr
|
|
|
|
|
.byte
|
|
|
|
|
CMOVEY .addr
|
2004-03-05 18:34:44 +00:00
|
|
|
|
.endstruct
|
2003-12-28 21:26:11 +00:00
|
|
|
|
.endstruct
|
|
|
|
|
|
2004-03-21 22:12:06 +00:00
|
|
|
|
;------------------------------------------------------------------------------
|
|
|
|
|
; The mouse callback structure
|
|
|
|
|
|
|
|
|
|
.struct MOUSE_CALLBACKS
|
|
|
|
|
HIDE .addr ; Hide the mouse cursor
|
|
|
|
|
SHOW .addr ; Show the mouse cursor
|
|
|
|
|
MOVEX .addr ; Move the mouse cursor
|
|
|
|
|
MOVEY .addr ; Dito for Y
|
|
|
|
|
.endstruct
|
|
|
|
|
|
2003-12-28 21:26:11 +00:00
|
|
|
|
;------------------------------------------------------------------------------
|
|
|
|
|
; The mouse API version, stored in MOUSE_HDR::VERSION
|
|
|
|
|
|
|
|
|
|
MOUSE_API_VERSION = $00
|
|
|
|
|
|
|
|
|
|
;------------------------------------------------------------------------------
|
|
|
|
|
; Mouse button definitions
|
|
|
|
|
|
|
|
|
|
MOUSE_BTN_LEFT = $10
|
|
|
|
|
MOUSE_BTN_RIGHT = $01
|
|
|
|
|
|
|
|
|
|
;------------------------------------------------------------------------------
|
|
|
|
|
; Structures used to return data from the mouse driver
|
|
|
|
|
|
|
|
|
|
.struct MOUSE_POS
|
|
|
|
|
XCOORD .word
|
|
|
|
|
YCOORD .word
|
|
|
|
|
.endstruct
|
|
|
|
|
|
|
|
|
|
.struct MOUSE_INFO
|
|
|
|
|
POS .tag MOUSE_POS
|
|
|
|
|
BUTTONS .byte
|
|
|
|
|
.endstruct
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
;------------------------------------------------------------------------------
|
|
|
|
|
; Variables
|
|
|
|
|
|
2004-03-05 18:34:44 +00:00
|
|
|
|
.global _mouse_drv ; Pointer to driver
|
|
|
|
|
.global _mouse_hidden ; Counter, 0 = mouse is visible
|
2003-12-28 21:26:11 +00:00
|
|
|
|
|
|
|
|
|
;------------------------------------------------------------------------------
|
|
|
|
|
; C callable functions
|
|
|
|
|
|
|
|
|
|
.global _mouse_load_driver
|
|
|
|
|
.global _mouse_unload
|
|
|
|
|
.global _mouse_install
|
|
|
|
|
.global _mouse_uninstall
|
|
|
|
|
.global _mouse_hide
|
|
|
|
|
.global _mouse_show
|
|
|
|
|
.global _mouse_box
|
|
|
|
|
.global _mouse_move
|
|
|
|
|
.global _mouse_buttons
|
|
|
|
|
.global _mouse_pos
|
2004-03-05 18:34:44 +00:00
|
|
|
|
.global _mouse_info
|
2003-12-30 08:18:40 +00:00
|
|
|
|
.global _mouse_ioctl
|
2003-12-28 21:26:11 +00:00
|
|
|
|
|
|
|
|
|
;------------------------------------------------------------------------------
|
|
|
|
|
; Driver entry points
|
|
|
|
|
|
|
|
|
|
.global mouse_install
|
|
|
|
|
.global mouse_uninstall
|
|
|
|
|
.global mouse_hide
|
|
|
|
|
.global mouse_show
|
|
|
|
|
.global mouse_box
|
|
|
|
|
.global mouse_move
|
|
|
|
|
.global mouse_buttons
|
|
|
|
|
.global mouse_pos
|
2004-03-05 18:34:44 +00:00
|
|
|
|
.global mouse_info
|
2003-12-30 08:18:40 +00:00
|
|
|
|
.global mouse_ioctl
|
2003-12-28 21:26:11 +00:00
|
|
|
|
|
|
|
|
|
|