Added the IRQ entry point
git-svn-id: svn://svn.cc65.org/cc65/trunk@3276 b7a2c559-68d2-44c3-8de9-860c34a00d81
This commit is contained in:
@@ -42,16 +42,17 @@ PREAD := $FB1E ; Read paddle in X, return AD conv. value in Y
|
|||||||
.byte $10
|
.byte $10
|
||||||
.byte $20
|
.byte $20
|
||||||
.byte $08
|
.byte $08
|
||||||
.byte $00 ; Future expansion
|
.byte $00 ; FIRE2 not available
|
||||||
.byte $00 ; Future expansion
|
.byte $00 ; Future expansion
|
||||||
.byte $00 ; Future expansion
|
.byte $00 ; Future expansion
|
||||||
|
|
||||||
; Jump table.
|
; Jump table.
|
||||||
|
|
||||||
.word INSTALL
|
.addr INSTALL
|
||||||
.word UNINSTALL
|
.addr UNINSTALL
|
||||||
.word COUNT
|
.addr COUNT
|
||||||
.word READJOY
|
.addr READJOY
|
||||||
|
.addr 0 ; IRQ not used
|
||||||
|
|
||||||
; ------------------------------------------------------------------------
|
; ------------------------------------------------------------------------
|
||||||
; Constants
|
; Constants
|
||||||
|
|||||||
@@ -29,6 +29,7 @@ joy_install: jmp $0000
|
|||||||
joy_uninstall: jmp $0000
|
joy_uninstall: jmp $0000
|
||||||
joy_count: jmp $0000
|
joy_count: jmp $0000
|
||||||
joy_read: jmp $0000
|
joy_read: jmp $0000
|
||||||
|
joy_irq: .byte $60, $00, $00 ; RTS plus two dummy bytes
|
||||||
|
|
||||||
; Driver header signature
|
; Driver header signature
|
||||||
.rodata
|
.rodata
|
||||||
@@ -75,7 +76,16 @@ _joy_install:
|
|||||||
cpy #(JOY_HDR::JUMPTAB + .sizeof(JOY_HDR::JUMPTAB))
|
cpy #(JOY_HDR::JUMPTAB + .sizeof(JOY_HDR::JUMPTAB))
|
||||||
bne @L2
|
bne @L2
|
||||||
|
|
||||||
jmp joy_install ; Call driver install routine
|
jsr joy_install ; Call driver install routine
|
||||||
|
|
||||||
|
; Install the IRQ vector if the driver needs it. A/X contains the error code
|
||||||
|
; from joy_install, so don't use it.
|
||||||
|
|
||||||
|
ldy joy_irq+2 ; Check high byte of IRQ vector
|
||||||
|
beq @L3 ; Jump if vector invalid
|
||||||
|
ldy #$4C ; JMP opcode
|
||||||
|
sty joy_irq ; Activate IRQ routine
|
||||||
|
@L3: rts
|
||||||
|
|
||||||
; Driver signature invalid
|
; Driver signature invalid
|
||||||
|
|
||||||
@@ -99,6 +109,9 @@ set: sta joy_vectors,x
|
|||||||
; */
|
; */
|
||||||
|
|
||||||
_joy_uninstall:
|
_joy_uninstall:
|
||||||
|
lda #$60 ; RTS opcode
|
||||||
|
sta joy_irq ; Disable IRQ entry point
|
||||||
|
|
||||||
jsr joy_uninstall ; Call the driver routine
|
jsr joy_uninstall ; Call the driver routine
|
||||||
|
|
||||||
joy_clear_ptr: ; External entry point
|
joy_clear_ptr: ; External entry point
|
||||||
|
|||||||
Reference in New Issue
Block a user