unsigned char __fastcall__ mouse_uninstall (void);
/* Uninstall the currently loaded driver. Returns an error code. */
+const char* __fastcall__ mouse_geterrormsg (unsigned char code);
+/* Get an error message describing the error in code. */
+
void __fastcall__ mouse_hide (void);
/* Hide the mouse. The function manages a counter and may be called more than
* once. For each call to mouse_hide there must be a call to mouse_show to make
C_OBJS = mouse_load.o
-S_OBJS = mouse-kernel.o \
- mouse_box.o \
- mouse_hide.o \
- mouse_info.o \
- mouse_ioctl.o \
- mouse_move.o \
- mouse_pos.o \
- mouse_show.o \
+S_OBJS = mouse-kernel.o \
+ mouse_box.o \
+ mouse_geterrormsg.o \
+ mouse_hide.o \
+ mouse_info.o \
+ mouse_ioctl.o \
+ mouse_move.o \
+ mouse_pos.o \
+ mouse_show.o \
mouse_unload.o
#--------------------------------------------------------------------------
--- /dev/null
+;
+; Ullrich von Bassewitz, 2004-11-07
+;
+; const char* __fastcall__ mouse_geterrormsg (unsigned char code);
+; /* Get an error message describing the error in code. */
+;
+
+ .include "mouse-kernel.inc"
+
+
+.proc _mouse_geterrormsg
+
+ cmp #MOUSE_ERR_COUNT
+ bcc L1
+ lda #MOUSE_ERR_COUNT ; "Unknown error"
+L1: tay
+ ldx #>msgtab
+ lda #<msgtab
+ clc
+ adc offs,y
+ bcc L2
+ inx
+L2: rts
+
+.endproc
+
+
+;----------------------------------------------------------------------------
+; Error messages. The messages are currently limited to 256 bytes total.
+
+.rodata
+
+offs: .byte <(msg0-msgtab)
+ .byte <(msg1-msgtab)
+ .byte <(msg2-msgtab)
+ .byte <(msg3-msgtab)
+ .byte <(msg4-msgtab)
+ .byte <(msg5-msgtab)
+ .byte <(msg6-msgtab)
+
+msgtab:
+msg0: .asciiz "No error"
+msg1: .asciiz "No driver available"
+msg2: .asciiz "Cannot load driver"
+msg3: .asciiz "Invalid driver"
+msg4: .asciiz "Mouse hardware not found"
+msg5: .asciiz "Invalid ioctl code"
+msg6: .asciiz "Unknown error"
+