Moved the 'mousesprite' files from 'geos-cbm' to 'geos-common' which are believed to work as-is on Apple GEOS too.
git-svn-id: svn://svn.cc65.org/cc65/trunk@5443 b7a2c559-68d2-44c3-8de9-860c34a00d81
This commit is contained in:
@@ -33,7 +33,8 @@ DIRS = dlgbox \
|
||||
file \
|
||||
graph \
|
||||
memory \
|
||||
menuicon
|
||||
menuicon \
|
||||
mousesprite
|
||||
|
||||
#--------------------------------------------------------------------------
|
||||
# Directives
|
||||
|
||||
21
libsrc/geos-common/mousesprite/Makefile
Normal file
21
libsrc/geos-common/mousesprite/Makefile
Normal file
@@ -0,0 +1,21 @@
|
||||
#
|
||||
# makefile for CC65 runtime library
|
||||
#
|
||||
|
||||
#--------------------------------------------------------------------------
|
||||
# Object files
|
||||
|
||||
S_OBJS += startmousemode.o \
|
||||
clearmousemode.o \
|
||||
mouseup.o \
|
||||
mouseoff.o \
|
||||
drawsprite.o \
|
||||
possprite.o \
|
||||
enablsprite.o \
|
||||
disablsprite.o \
|
||||
ismseinregion.o \
|
||||
inittextprompt.o \
|
||||
promptoff.o \
|
||||
prompton.o \
|
||||
getnextchar.o \
|
||||
mouse.o
|
||||
13
libsrc/geos-common/mousesprite/clearmousemode.s
Normal file
13
libsrc/geos-common/mousesprite/clearmousemode.s
Normal file
@@ -0,0 +1,13 @@
|
||||
|
||||
;
|
||||
; Maciej 'YTM/Alliance' Witkowiak
|
||||
;
|
||||
; 30.10.99
|
||||
|
||||
; void ClearMouseMode (void);
|
||||
|
||||
.export _ClearMouseMode
|
||||
|
||||
.include "jumptab.inc"
|
||||
|
||||
_ClearMouseMode = ClearMouseMode
|
||||
16
libsrc/geos-common/mousesprite/disablsprite.s
Normal file
16
libsrc/geos-common/mousesprite/disablsprite.s
Normal file
@@ -0,0 +1,16 @@
|
||||
|
||||
;
|
||||
; Maciej 'YTM/Alliance' Witkowiak
|
||||
;
|
||||
; 30.10.99
|
||||
|
||||
; void DisablSprite (char spritenum);
|
||||
|
||||
.export _DisablSprite
|
||||
|
||||
.include "jumptab.inc"
|
||||
.include "geossym.inc"
|
||||
|
||||
_DisablSprite:
|
||||
sta r3L
|
||||
jmp DisablSprite
|
||||
23
libsrc/geos-common/mousesprite/drawsprite.s
Normal file
23
libsrc/geos-common/mousesprite/drawsprite.s
Normal file
@@ -0,0 +1,23 @@
|
||||
|
||||
;
|
||||
; Maciej 'YTM/Alliance' Witkowiak
|
||||
;
|
||||
; 30.10.99
|
||||
|
||||
;
|
||||
; void DrawSprite (char spritenum, char *tab63 );
|
||||
;
|
||||
|
||||
.import popa
|
||||
.export _DrawSprite
|
||||
|
||||
.include "jumptab.inc"
|
||||
.include "geossym.inc"
|
||||
|
||||
_DrawSprite:
|
||||
|
||||
sta r4L
|
||||
stx r4H
|
||||
jsr popa
|
||||
sta r3L
|
||||
jmp DrawSprite
|
||||
16
libsrc/geos-common/mousesprite/enablsprite.s
Normal file
16
libsrc/geos-common/mousesprite/enablsprite.s
Normal file
@@ -0,0 +1,16 @@
|
||||
|
||||
;
|
||||
; Maciej 'YTM/Alliance' Witkowiak
|
||||
;
|
||||
; 30.10.99
|
||||
|
||||
; void EnablSprite (char spritenum);
|
||||
|
||||
.export _EnablSprite
|
||||
|
||||
.include "jumptab.inc"
|
||||
.include "geossym.inc"
|
||||
|
||||
_EnablSprite:
|
||||
sta r3L
|
||||
jmp EnablSprite
|
||||
18
libsrc/geos-common/mousesprite/getnextchar.s
Normal file
18
libsrc/geos-common/mousesprite/getnextchar.s
Normal file
@@ -0,0 +1,18 @@
|
||||
|
||||
;
|
||||
; Maciej 'YTM/Elysium' Witkowiak
|
||||
;
|
||||
; 21.12.1999, 2.1.2003
|
||||
|
||||
; char GetNextChar (void);
|
||||
; note that if it returns 0 (FALSE) then no characters are available
|
||||
|
||||
.export _GetNextChar
|
||||
|
||||
.include "jumptab.inc"
|
||||
|
||||
_GetNextChar:
|
||||
jsr GetNextChar
|
||||
ldx #0
|
||||
tay ; preserve Z flag
|
||||
rts
|
||||
13
libsrc/geos-common/mousesprite/inittextprompt.s
Normal file
13
libsrc/geos-common/mousesprite/inittextprompt.s
Normal file
@@ -0,0 +1,13 @@
|
||||
|
||||
;
|
||||
; Maciej 'YTM/Alliance' Witkowiak
|
||||
;
|
||||
; 21.12.99
|
||||
|
||||
; void InitTextPrompt (char height);
|
||||
|
||||
.export _InitTextPrompt
|
||||
|
||||
.include "jumptab.inc"
|
||||
|
||||
_InitTextPrompt = InitTextPrompt
|
||||
19
libsrc/geos-common/mousesprite/ismseinregion.s
Normal file
19
libsrc/geos-common/mousesprite/ismseinregion.s
Normal file
@@ -0,0 +1,19 @@
|
||||
|
||||
;
|
||||
; Maciej 'YTM/Elysium' Witkowiak
|
||||
;
|
||||
; 21.12.1999, 2.1.2003
|
||||
|
||||
; char IsMseInRegion (struct window *mywindow);
|
||||
|
||||
.import _InitDrawWindow
|
||||
|
||||
.export _IsMseInRegion
|
||||
|
||||
.include "jumptab.inc"
|
||||
|
||||
_IsMseInRegion:
|
||||
jsr _InitDrawWindow
|
||||
jsr IsMseInRegion
|
||||
ldx #0
|
||||
rts
|
||||
194
libsrc/geos-common/mousesprite/mouse.s
Normal file
194
libsrc/geos-common/mousesprite/mouse.s
Normal file
@@ -0,0 +1,194 @@
|
||||
;
|
||||
; Maciej 'YTM/Elysium' Witkowiak
|
||||
;
|
||||
; 2.7.2001
|
||||
;
|
||||
; Wrapper for GEOS standard input device interface
|
||||
;
|
||||
|
||||
.export _mouse_init, _mouse_done
|
||||
.export _mouse_hide, _mouse_show
|
||||
.export _mouse_box
|
||||
.export _mouse_pos, _mouse_info
|
||||
.export _mouse_move, _mouse_buttons
|
||||
|
||||
.import popsreg, addysp1
|
||||
.importzp sp, sreg, ptr1
|
||||
|
||||
.include "const.inc"
|
||||
.include "jumptab.inc"
|
||||
.include "geossym.inc"
|
||||
|
||||
|
||||
.code
|
||||
|
||||
; --------------------------------------------------------------------------
|
||||
;
|
||||
; unsigned char __fastcall__ mouse_init (unsigned char type);
|
||||
;
|
||||
|
||||
_mouse_init:
|
||||
jsr StartMouseMode
|
||||
jsr MouseOff
|
||||
|
||||
lda #0
|
||||
sta mouseTop
|
||||
sta mouseLeft
|
||||
sta mouseLeft+1
|
||||
.ifdef __GEOS_CBM__
|
||||
lda #199
|
||||
sta mouseBottom
|
||||
lda graphMode
|
||||
bpl _mse_screen320
|
||||
|
||||
lda #<639 ; 80 columns on C128
|
||||
ldx #>639
|
||||
bne _mse_storex
|
||||
_mse_screen320:
|
||||
lda #<319 ; 40 columns on C64/C128
|
||||
ldx #>319
|
||||
_mse_storex:
|
||||
.else
|
||||
lda #191
|
||||
sta mouseBottom
|
||||
lda #<559
|
||||
ldx #>559
|
||||
.endif
|
||||
sta mouseRight
|
||||
stx mouseRight+1
|
||||
_mse_initend:
|
||||
lda #0
|
||||
tax
|
||||
; --------------------------------------------------------------------------
|
||||
;
|
||||
; void mouse_done (void);
|
||||
;
|
||||
_mouse_done:
|
||||
rts
|
||||
|
||||
; --------------------------------------------------------------------------
|
||||
;
|
||||
; void mouse_hide (void);
|
||||
;
|
||||
|
||||
_mouse_hide = MouseOff
|
||||
|
||||
; --------------------------------------------------------------------------
|
||||
;
|
||||
; void mouse_show (void);
|
||||
;
|
||||
|
||||
_mouse_show = MouseUp
|
||||
|
||||
; --------------------------------------------------------------------------
|
||||
;
|
||||
; void __fastcall__ mouse_box (int minx, int miny, int maxx, int maxy);
|
||||
;
|
||||
|
||||
_mouse_box:
|
||||
ldy #0 ; Stack offset
|
||||
|
||||
sta mouseBottom
|
||||
|
||||
lda (sp),y
|
||||
sta mouseRight
|
||||
iny
|
||||
lda (sp),y
|
||||
sta mouseRight+1 ; maxx
|
||||
|
||||
iny
|
||||
lda (sp),y
|
||||
sta mouseTop
|
||||
iny ; Skip high byte
|
||||
|
||||
iny
|
||||
lda (sp),y
|
||||
sta mouseLeft
|
||||
iny
|
||||
lda (sp),y
|
||||
sta mouseLeft+1 ; minx
|
||||
|
||||
jmp addysp1 ; Drop params, return
|
||||
|
||||
; --------------------------------------------------------------------------
|
||||
;
|
||||
; void __fastcall__ mouse_pos (struct mouse_pos* pos);
|
||||
; /* Return the current mouse position */
|
||||
;
|
||||
|
||||
_mouse_pos:
|
||||
sta ptr1
|
||||
stx ptr1+1 ; Remember the argument pointer
|
||||
|
||||
ldy #0 ; Structure offset
|
||||
|
||||
php
|
||||
sei ; Disable interrupts
|
||||
|
||||
lda mouseXPos ; Transfer the position
|
||||
sta (ptr1),y
|
||||
lda mouseXPos+1
|
||||
iny
|
||||
sta (ptr1),y
|
||||
lda mouseYPos
|
||||
iny
|
||||
sta (ptr1),y
|
||||
lda #$00
|
||||
iny
|
||||
sta (ptr1),y
|
||||
|
||||
plp ; Reenable interrupts
|
||||
rts ; Done
|
||||
|
||||
; --------------------------------------------------------------------------
|
||||
;
|
||||
; void __fastcall__ mouse_info (struct mouse_info* info);
|
||||
; /* Return the state of the mouse buttons and the position of the mouse */
|
||||
;
|
||||
|
||||
_mouse_info:
|
||||
|
||||
; We're cheating here to keep the code smaller: The first fields of the
|
||||
; mouse_info struct are identical to the mouse_pos struct, so we will just
|
||||
; call _mouse_pos to initialize the struct pointer and fill the position
|
||||
; fields.
|
||||
|
||||
jsr _mouse_pos
|
||||
|
||||
; Fill in the button state
|
||||
|
||||
jsr _mouse_buttons ; Will not touch ptr1
|
||||
iny
|
||||
sta (ptr1),y
|
||||
|
||||
rts
|
||||
|
||||
; --------------------------------------------------------------------------
|
||||
;
|
||||
; void __fastcall__ mouse_move (int x, int y);
|
||||
;
|
||||
|
||||
_mouse_move:
|
||||
jsr popsreg ; Get X
|
||||
php
|
||||
sei ; Disable interrupts
|
||||
sta mouseYPos
|
||||
lda sreg
|
||||
ldx sreg+1
|
||||
sta mouseXPos
|
||||
stx mouseXPos+1
|
||||
plp ; Enable interrupts
|
||||
rts
|
||||
|
||||
; --------------------------------------------------------------------------
|
||||
;
|
||||
; unsigned char mouse_buttons (void);
|
||||
;
|
||||
|
||||
_mouse_buttons:
|
||||
ldx #0
|
||||
lda pressFlag
|
||||
and #SET_MOUSE
|
||||
lsr
|
||||
rts
|
||||
|
||||
13
libsrc/geos-common/mousesprite/mouseoff.s
Normal file
13
libsrc/geos-common/mousesprite/mouseoff.s
Normal file
@@ -0,0 +1,13 @@
|
||||
|
||||
;
|
||||
; Maciej 'YTM/Alliance' Witkowiak
|
||||
;
|
||||
; 30.10.99
|
||||
|
||||
; void MouseOff (void);
|
||||
|
||||
.export _MouseOff
|
||||
|
||||
.include "jumptab.inc"
|
||||
|
||||
_MouseOff = MouseOff
|
||||
13
libsrc/geos-common/mousesprite/mouseup.s
Normal file
13
libsrc/geos-common/mousesprite/mouseup.s
Normal file
@@ -0,0 +1,13 @@
|
||||
|
||||
;
|
||||
; Maciej 'YTM/Alliance' Witkowiak
|
||||
;
|
||||
; 30.10.99
|
||||
|
||||
; void MouseUp (void);
|
||||
|
||||
.export _MouseUp
|
||||
|
||||
.include "jumptab.inc"
|
||||
|
||||
_MouseUp = MouseUp
|
||||
32
libsrc/geos-common/mousesprite/possprite.s
Normal file
32
libsrc/geos-common/mousesprite/possprite.s
Normal file
@@ -0,0 +1,32 @@
|
||||
|
||||
;
|
||||
; Maciej 'YTM/Alliance' Witkowiak
|
||||
;
|
||||
; 30.10.99
|
||||
|
||||
;
|
||||
; void PosSprite (char spritenum, struct pixel *position );
|
||||
;
|
||||
|
||||
.importzp ptr4
|
||||
.import popa
|
||||
.export _PosSprite
|
||||
|
||||
.include "jumptab.inc"
|
||||
.include "geossym.inc"
|
||||
|
||||
_PosSprite:
|
||||
sta ptr4
|
||||
stx ptr4+1
|
||||
ldy #0
|
||||
lda (ptr4),y
|
||||
sta r4L
|
||||
iny
|
||||
lda (ptr4),y
|
||||
sta r4H
|
||||
iny
|
||||
lda (ptr4),y
|
||||
sta r5L
|
||||
jsr popa
|
||||
sta r3L
|
||||
jmp PosSprite
|
||||
13
libsrc/geos-common/mousesprite/promptoff.s
Normal file
13
libsrc/geos-common/mousesprite/promptoff.s
Normal file
@@ -0,0 +1,13 @@
|
||||
|
||||
;
|
||||
; Maciej 'YTM/Alliance' Witkowiak
|
||||
;
|
||||
; 21.12.99
|
||||
|
||||
; void PromptOff (void);
|
||||
|
||||
.export _PromptOff
|
||||
|
||||
.include "jumptab.inc"
|
||||
|
||||
_PromptOff = PromptOff
|
||||
24
libsrc/geos-common/mousesprite/prompton.s
Normal file
24
libsrc/geos-common/mousesprite/prompton.s
Normal file
@@ -0,0 +1,24 @@
|
||||
|
||||
;
|
||||
; Maciej 'YTM/Alliance' Witkowiak
|
||||
;
|
||||
; 21.12.99
|
||||
|
||||
; void PromptOn (struct pixel *);
|
||||
|
||||
.importzp ptr4
|
||||
.export _PromptOn
|
||||
|
||||
.include "jumptab.inc"
|
||||
.include "geossym.inc"
|
||||
|
||||
_PromptOn:
|
||||
sta ptr4
|
||||
stx ptr4+1
|
||||
ldy #0
|
||||
promptLp: lda (ptr4),y
|
||||
sta stringX,y
|
||||
iny
|
||||
cpy #3
|
||||
bne promptLp
|
||||
jmp PromptOn
|
||||
15
libsrc/geos-common/mousesprite/startmousemode.s
Normal file
15
libsrc/geos-common/mousesprite/startmousemode.s
Normal file
@@ -0,0 +1,15 @@
|
||||
|
||||
;
|
||||
; Maciej 'YTM/Alliance' Witkowiak
|
||||
;
|
||||
; 30.10.99
|
||||
|
||||
; void StartMouseMode (void);
|
||||
|
||||
.export _StartMouseMode
|
||||
|
||||
.include "jumptab.inc"
|
||||
|
||||
_StartMouseMode:
|
||||
clc
|
||||
jmp StartMouseMode
|
||||
Reference in New Issue
Block a user