]> git.sur5r.net Git - cc65/commitdiff
Create supervision-stdjoy.s
authorStefan <stefan.haubenthal@gmail.com>
Tue, 21 Nov 2017 05:53:26 +0000 (06:53 +0100)
committerGitHub <noreply@github.com>
Tue, 21 Nov 2017 05:53:26 +0000 (06:53 +0100)
libsrc/supervision/joy/supervision-stdjoy.s [new file with mode: 0644]

diff --git a/libsrc/supervision/joy/supervision-stdjoy.s b/libsrc/supervision/joy/supervision-stdjoy.s
new file mode 100644 (file)
index 0000000..2d89aa6
--- /dev/null
@@ -0,0 +1,93 @@
+;
+; Standard joystick driver for the Supervision
+;
+
+        .include        "joy-kernel.inc"
+        .include        "joy-error.inc"
+        .include        "supervision.inc"
+
+        .macpack        module
+
+
+; ------------------------------------------------------------------------
+; Header. Includes jump table
+
+        module_header   _supervision_stdjoy_joy
+
+; Driver signature
+
+        .byte   $6A, $6F, $79           ; "joy"
+        .byte   JOY_API_VERSION         ; Driver API version number
+
+; Library reference
+
+        .addr   $0000
+
+; Button state masks (8 values)
+
+        .byte   $08                     ; JOY_UP
+        .byte   $04                     ; JOY_DOWN
+        .byte   $02                     ; JOY_LEFT
+        .byte   $01                     ; JOY_RIGHT
+        .byte   $20                     ; JOY_FIRE_A
+        .byte   $10                     ; JOY_FIRE_B
+        .byte   $40                     ; JOY_SELECT
+        .byte   $80                     ; JOY_START
+
+; Jump table.
+
+        .addr   INSTALL
+        .addr   UNINSTALL
+        .addr   COUNT
+        .addr   READJOY
+        .addr   0                       ; IRQ entry unused
+
+; ------------------------------------------------------------------------
+; Constants
+
+JOY_COUNT       = 1             ; Number of joysticks we support
+
+
+.code
+
+; ------------------------------------------------------------------------
+; INSTALL routine. Is called after the driver is loaded into memory. If
+; possible, check if the hardware is present and determine the amount of
+; memory available.
+; Must return an JOY_ERR_xx code in a/x.
+;
+
+INSTALL:
+        lda     #<JOY_ERR_OK
+        ldx     #>JOY_ERR_OK
+
+;        rts                     ; Run into UNINSTALL instead
+
+; ------------------------------------------------------------------------
+; DEINSTALL routine. Is called before the driver is removed from memory.
+; Can do cleanup or whatever. Must not return anything.
+;
+
+UNINSTALL:
+        rts
+
+
+; ------------------------------------------------------------------------
+; COUNT: Return the total number of available joysticks in a/x.
+;
+;unsigned char __fastcall__ joy_count (void);
+
+COUNT:
+        lda     #<JOY_COUNT
+        ldx     #>JOY_COUNT
+        rts
+
+; ------------------------------------------------------------------------
+; READ: Read a particular joystick passed in A.
+;
+;unsigned char __fastcall__ joy_read (unsigned char joystick);
+
+READJOY:
+        lda     sv_control
+        ldx     #0
+        rts