mirror of
https://github.com/cc65/cc65.git
synced 2024-11-18 00:07:21 +00:00
Moved additional zero page locations into EXTZP segment so they are usable
inside modules. Removed readjoy.s and added a loadable joystick driver instead. git-svn-id: svn://svn.cc65.org/cc65/trunk@1989 b7a2c559-68d2-44c3-8de9-860c34a00d81
This commit is contained in:
parent
0c0e27fa02
commit
397c068cfb
@ -1,3 +1,4 @@
|
|||||||
*.emd
|
*.emd
|
||||||
|
*.joy
|
||||||
*.tgi
|
*.tgi
|
||||||
|
|
||||||
|
@ -14,10 +14,13 @@
|
|||||||
%.o: %.s
|
%.o: %.s
|
||||||
@$(AS) -g -o $@ $(AFLAGS) $<
|
@$(AS) -g -o $@ $(AFLAGS) $<
|
||||||
|
|
||||||
%.emd: %.o ../runtime/zeropage.o
|
%.emd: %.o ../runtime/zeropage.o cbm510zp.o
|
||||||
@$(LD) -t module -o $@ $^
|
@$(LD) -t module -o $@ $^
|
||||||
|
|
||||||
%.tgi: %.o ../runtime/zeropage.o
|
%.joy: %.o ../runtime/zeropage.o cbm510zp.o
|
||||||
|
@$(LD) -t module -o $@ $^
|
||||||
|
|
||||||
|
%.tgi: %.o ../runtime/zeropage.o cbm510zp.o
|
||||||
@$(LD) -t module -o $@ $^
|
@$(LD) -t module -o $@ $^
|
||||||
|
|
||||||
#--------------------------------------------------------------------------
|
#--------------------------------------------------------------------------
|
||||||
@ -39,6 +42,7 @@ OBJS = _scrsize.o \
|
|||||||
conio.o \
|
conio.o \
|
||||||
cputc.o \
|
cputc.o \
|
||||||
crt0.o \
|
crt0.o \
|
||||||
|
extzp.o \
|
||||||
kbhit.o \
|
kbhit.o \
|
||||||
kirq.o \
|
kirq.o \
|
||||||
kplot.o \
|
kplot.o \
|
||||||
@ -48,7 +52,6 @@ OBJS = _scrsize.o \
|
|||||||
peeksys.o \
|
peeksys.o \
|
||||||
pokesys.o \
|
pokesys.o \
|
||||||
randomize.o \
|
randomize.o \
|
||||||
readjoy.o \
|
|
||||||
revers.o \
|
revers.o \
|
||||||
rs232.o \
|
rs232.o \
|
||||||
tgi_mode_table.o
|
tgi_mode_table.o
|
||||||
@ -56,22 +59,24 @@ OBJS = _scrsize.o \
|
|||||||
#--------------------------------------------------------------------------
|
#--------------------------------------------------------------------------
|
||||||
# Drivers
|
# Drivers
|
||||||
|
|
||||||
TGIS =
|
|
||||||
|
|
||||||
EMDS = cbm510-ram.emd
|
EMDS = cbm510-ram.emd
|
||||||
|
|
||||||
|
JOYS = cbm510-stdjoy.joy
|
||||||
|
|
||||||
|
TGIS =
|
||||||
|
|
||||||
#--------------------------------------------------------------------------
|
#--------------------------------------------------------------------------
|
||||||
# Targets
|
# Targets
|
||||||
|
|
||||||
.PHONY: all clean zap
|
.PHONY: all clean zap
|
||||||
|
|
||||||
all: $(OBJS) $(EMDS) $(TGIS)
|
all: $(OBJS) $(EMDS) $(JOYS) $(TGIS)
|
||||||
|
|
||||||
../runtime/zeropage.o:
|
../runtime/zeropage.o:
|
||||||
$(MAKE) -C $(dir $@) $(notdir $@)
|
$(MAKE) -C $(dir $@) $(notdir $@)
|
||||||
|
|
||||||
clean:
|
clean:
|
||||||
@rm -f $(OBJS) $(EMDS:.emd=.o) $(TGIS:.tgi=.o)
|
@rm -f $(OBJS) $(EMDS:.emd=.o) $(JOYS:.joy=.o) $(TGIS:.tgi=.o)
|
||||||
|
|
||||||
zap: clean
|
zap: clean
|
||||||
@rm -f $(EMDS) $(JOYS) $(TGIS)
|
@rm -f $(EMDS) $(JOYS) $(TGIS)
|
||||||
|
140
libsrc/cbm510/cbm510-stdjoy.s
Normal file
140
libsrc/cbm510/cbm510-stdjoy.s
Normal file
@ -0,0 +1,140 @@
|
|||||||
|
;
|
||||||
|
; Standard joystick driver for the Commodore 510 (aka P500). May be used
|
||||||
|
; multiple times when linked to the statically application.
|
||||||
|
;
|
||||||
|
; Ullrich von Bassewitz, 2003-02-16
|
||||||
|
;
|
||||||
|
|
||||||
|
.include "zeropage.inc"
|
||||||
|
.include "extzp.inc"
|
||||||
|
|
||||||
|
.include "joy-kernel.inc"
|
||||||
|
.include "joy-error.inc"
|
||||||
|
.include "cbm510.inc"
|
||||||
|
|
||||||
|
.macpack generic
|
||||||
|
|
||||||
|
|
||||||
|
; ------------------------------------------------------------------------
|
||||||
|
; Header. Includes jump table
|
||||||
|
|
||||||
|
.segment "JUMPTABLE"
|
||||||
|
|
||||||
|
; Driver signature
|
||||||
|
|
||||||
|
.byte $6A, $6F, $79 ; "joy"
|
||||||
|
.byte $00 ; Driver API version number
|
||||||
|
|
||||||
|
; Button state masks (8 values)
|
||||||
|
|
||||||
|
.byte $01 ; JOY_UP
|
||||||
|
.byte $02 ; JOY_DOWN
|
||||||
|
.byte $04 ; JOY_LEFT
|
||||||
|
.byte $08 ; JOY_RIGHT
|
||||||
|
.byte $10 ; JOY_FIRE
|
||||||
|
.byte $00 ; Future expansion
|
||||||
|
.byte $00 ; Future expansion
|
||||||
|
.byte $00 ; Future expansion
|
||||||
|
|
||||||
|
; Jump table.
|
||||||
|
|
||||||
|
.word INSTALL
|
||||||
|
.word UNINSTALL
|
||||||
|
.word COUNT
|
||||||
|
.word READ
|
||||||
|
|
||||||
|
; ------------------------------------------------------------------------
|
||||||
|
; Constants
|
||||||
|
|
||||||
|
JOY_COUNT = 2 ; Number of joysticks we support
|
||||||
|
|
||||||
|
|
||||||
|
; ------------------------------------------------------------------------
|
||||||
|
; Data.
|
||||||
|
|
||||||
|
|
||||||
|
.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
|
||||||
|
|
||||||
|
; ------------------------------------------------------------------------
|
||||||
|
; UNINSTALL 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.
|
||||||
|
;
|
||||||
|
|
||||||
|
COUNT:
|
||||||
|
lda #<JOY_COUNT
|
||||||
|
ldx #>JOY_COUNT
|
||||||
|
rts
|
||||||
|
|
||||||
|
; ------------------------------------------------------------------------
|
||||||
|
; READ: Read a particular joystick passed in A.
|
||||||
|
;
|
||||||
|
|
||||||
|
READ: ldx #$0F ; Switch to the system bank
|
||||||
|
stx IndReg
|
||||||
|
tax ; Save joystick number
|
||||||
|
|
||||||
|
; Get the direction bits
|
||||||
|
|
||||||
|
ldy #CIA_PRB
|
||||||
|
lda (cia2),y ; Read joystick inputs
|
||||||
|
sta tmp1
|
||||||
|
|
||||||
|
; Get the fire bits
|
||||||
|
|
||||||
|
ldy #CIA_PRA
|
||||||
|
lda (cia2),y
|
||||||
|
|
||||||
|
; Make the result value
|
||||||
|
|
||||||
|
cpx #$00 ; Joystick 0?
|
||||||
|
bne @L1 ; Jump if no
|
||||||
|
|
||||||
|
; Joystick 1, fire is in bit 6, direction in bit 0-3
|
||||||
|
|
||||||
|
asl a
|
||||||
|
jmp @L2
|
||||||
|
|
||||||
|
; Joystick 2, fire is in bit 7, direction in bit 5-7
|
||||||
|
|
||||||
|
@L1: ldx #$00 ; High byte of return value
|
||||||
|
lsr tmp1
|
||||||
|
lsr tmp1
|
||||||
|
lsr tmp1
|
||||||
|
lsr tmp1
|
||||||
|
|
||||||
|
; Mask the relavant bits, get the fire bit
|
||||||
|
|
||||||
|
@L2: asl a ; Fire bit into carry
|
||||||
|
lda tmp1
|
||||||
|
and #$0F
|
||||||
|
bcc @L3
|
||||||
|
ora #$10
|
||||||
|
@L3: eor #$1F ; All bits are inverted
|
||||||
|
|
||||||
|
; Switch back to the execution bank and return the joystick mask in a/x
|
||||||
|
|
||||||
|
ldy ExecReg
|
||||||
|
sty IndReg
|
||||||
|
rts
|
||||||
|
|
@ -5,18 +5,18 @@
|
|||||||
;
|
;
|
||||||
|
|
||||||
.export _exit
|
.export _exit
|
||||||
.exportzp vic, sid, cia1, cia2, acia, tpi1, tpi2, ktab1
|
|
||||||
.exportzp ktab2, ktab3, ktab4, time, RecvBuf, SendBuf
|
|
||||||
|
|
||||||
.import _clrscr, initlib, donelib
|
.import _clrscr, initlib, donelib
|
||||||
.import push0, _main
|
.import push0, _main
|
||||||
.import __CHARRAM_START__, __CHARRAM_SIZE__, __VIDRAM_START__
|
.import __CHARRAM_START__, __CHARRAM_SIZE__, __VIDRAM_START__
|
||||||
|
.import __EXTZP_RUN__, __EXTZP_SIZE__
|
||||||
.import __BSS_RUN__, __BSS_SIZE__
|
.import __BSS_RUN__, __BSS_SIZE__
|
||||||
.import irq, nmi
|
.import irq, nmi
|
||||||
.import k_irq, k_nmi, PLOT, UDTIM, SCNKEY
|
.import k_irq, k_nmi, PLOT, UDTIM, SCNKEY
|
||||||
|
|
||||||
.include "zeropage.inc"
|
.include "zeropage.inc"
|
||||||
.include "cbm510.inc"
|
.include "extzp.inc"
|
||||||
|
.include "cbm510.inc"
|
||||||
|
|
||||||
|
|
||||||
; ------------------------------------------------------------------------
|
; ------------------------------------------------------------------------
|
||||||
@ -53,33 +53,12 @@
|
|||||||
; To make things more simple, make the code of this module absolute.
|
; To make things more simple, make the code of this module absolute.
|
||||||
|
|
||||||
.org $0001
|
.org $0001
|
||||||
Head: .byte $03,$00,$11,$00,$0a,$00,$81,$20,$49,$b2,$30,$20,$a4,$20,$34,$00
|
Head: .byte $03,$00,$11,$00,$0a,$00,$81,$20,$49,$b2,$30,$20,$a4,$20,$34,$00
|
||||||
.byte $19,$00,$14,$00,$87,$20,$4a,$00,$27,$00,$1e,$00,$97,$20,$32,$35
|
.byte $19,$00,$14,$00,$87,$20,$4a,$00,$27,$00,$1e,$00,$97,$20,$32,$35
|
||||||
.byte $36,$aa,$49,$2c,$4a,$00,$2f,$00,$28,$00,$82,$20,$49,$00,$39,$00
|
.byte $36,$aa,$49,$2c,$4a,$00,$2f,$00,$28,$00,$82,$20,$49,$00,$39,$00
|
||||||
.byte $32,$00,$9e,$20,$32,$35,$36,$00,$4f,$00,$3c,$00,$83,$20,$31,$32
|
.byte $32,$00,$9e,$20,$32,$35,$36,$00,$4f,$00,$3c,$00,$83,$20,$31,$32
|
||||||
.byte $30,$2c,$31,$36,$39,$2c,$30,$2c,$31,$33,$33,$2c,$30,$00,$00,$00
|
.byte $30,$2c,$31,$36,$39,$2c,$30,$2c,$31,$33,$33,$2c,$30,$00,$00,$00
|
||||||
|
|
||||||
; Since we need some vectors to access stuff in the system bank for our own,
|
|
||||||
; we will include them here, starting from $60:
|
|
||||||
|
|
||||||
.res $60-*
|
|
||||||
|
|
||||||
vic: .word $d800
|
|
||||||
sid: .word $da00
|
|
||||||
cia1: .word $db00
|
|
||||||
cia2: .word $dc00
|
|
||||||
acia: .word $dd00
|
|
||||||
tpi1: .word $de00
|
|
||||||
tpi2: .word $df00
|
|
||||||
ktab1: .word $eab1
|
|
||||||
ktab2: .word $eb11
|
|
||||||
ktab3: .word $eb71
|
|
||||||
ktab4: .word $ebd1
|
|
||||||
time: .dword $0000
|
|
||||||
RecvBuf: .word $0100 ; RS232 received buffer
|
|
||||||
SendBuf: .word $0200 ; RS232 send buffer
|
|
||||||
|
|
||||||
|
|
||||||
; The code in the target bank when switching back will be put at the bottom
|
; The code in the target bank when switching back will be put at the bottom
|
||||||
; of the stack. We will jump here to switch segments. The range $F2..$FF is
|
; of the stack. We will jump here to switch segments. The range $F2..$FF is
|
||||||
; not used by any kernal routine.
|
; not used by any kernal routine.
|
||||||
@ -111,10 +90,18 @@ Back: ldx spsave
|
|||||||
|
|
||||||
ldy #vectable_size
|
ldy #vectable_size
|
||||||
L0: lda vectable-1,y
|
L0: lda vectable-1,y
|
||||||
sta $FF80,y
|
sta $FF81-1,y
|
||||||
dey
|
dey
|
||||||
bne L0
|
bne L0
|
||||||
|
|
||||||
|
; Initialize the extended zero page variables
|
||||||
|
|
||||||
|
ldx #zptable_size
|
||||||
|
L1: lda zptable-1,x
|
||||||
|
sta <(__EXTZP_RUN__-1),x
|
||||||
|
dex
|
||||||
|
bne L1
|
||||||
|
|
||||||
; Switch the indirect segment to the system bank
|
; Switch the indirect segment to the system bank
|
||||||
|
|
||||||
lda #$0F
|
lda #$0F
|
||||||
@ -127,19 +114,19 @@ L0: lda vectable-1,y
|
|||||||
lda #$00
|
lda #$00
|
||||||
sta ptr1+1
|
sta ptr1+1
|
||||||
ldy #$62-1
|
ldy #$62-1
|
||||||
L1: lda (ptr1),y
|
L2: lda (ptr1),y
|
||||||
sta $90,y
|
sta $90,y
|
||||||
dey
|
dey
|
||||||
bpl L1
|
bpl L2
|
||||||
|
|
||||||
; Copy the page 3 vectors in place
|
; Copy the page 3 vectors in place
|
||||||
|
|
||||||
ldy #$00
|
ldy #$00
|
||||||
L2: lda p3vectable,y
|
L3: lda p3vectable,y
|
||||||
sta $300,y
|
sta $300,y
|
||||||
iny
|
iny
|
||||||
cpy #p3vectable_size
|
cpy #p3vectable_size
|
||||||
bne L2
|
bne L3
|
||||||
|
|
||||||
; Copy the rest of page 3 from the system bank
|
; Copy the rest of page 3 from the system bank
|
||||||
|
|
||||||
@ -147,15 +134,15 @@ L2: lda p3vectable,y
|
|||||||
sta ptr1
|
sta ptr1
|
||||||
lda #$03
|
lda #$03
|
||||||
sta ptr1+1
|
sta ptr1+1
|
||||||
L3: lda (ptr1),y
|
L4: lda (ptr1),y
|
||||||
sta $300,y
|
sta $300,y
|
||||||
iny
|
iny
|
||||||
bne L3
|
bne L4
|
||||||
|
|
||||||
; Set the indirect segment to bank we're executing in
|
; Set the indirect segment to bank we're executing in
|
||||||
|
|
||||||
lda ExecReg
|
lda ExecReg
|
||||||
sta IndReg
|
sta IndReg
|
||||||
|
|
||||||
; Zero the BSS segment. We will do that here instead calling the routine
|
; Zero the BSS segment. We will do that here instead calling the routine
|
||||||
; in the common library, since we have the memory anyway, and this way,
|
; in the common library, since we have the memory anyway, and this way,
|
||||||
@ -163,10 +150,10 @@ L3: lda (ptr1),y
|
|||||||
|
|
||||||
lda #<__BSS_RUN__
|
lda #<__BSS_RUN__
|
||||||
sta ptr1
|
sta ptr1
|
||||||
lda #>__BSS_RUN__
|
lda #>__BSS_RUN__
|
||||||
sta ptr1+1
|
sta ptr1+1
|
||||||
lda #0
|
lda #0
|
||||||
tay
|
tay
|
||||||
|
|
||||||
; Clear full pages
|
; Clear full pages
|
||||||
|
|
||||||
@ -199,7 +186,7 @@ Z4:
|
|||||||
; We expect to be in page 2 now
|
; We expect to be in page 2 now
|
||||||
|
|
||||||
.if (* < $1FD)
|
.if (* < $1FD)
|
||||||
jmp $200
|
jmp $200
|
||||||
.res $200-*
|
.res $200-*
|
||||||
.endif
|
.endif
|
||||||
.if (* < $200)
|
.if (* < $200)
|
||||||
@ -308,6 +295,23 @@ ccopy2: lda __VIDRAM_START__,y
|
|||||||
; Additional data that we need for initialization and that's overwritten
|
; Additional data that we need for initialization and that's overwritten
|
||||||
; later
|
; later
|
||||||
|
|
||||||
|
zptable:
|
||||||
|
.word $d800 ; vic
|
||||||
|
.word $da00 ; sid
|
||||||
|
.word $db00 ; cia1
|
||||||
|
.word $dc00 ; cia2
|
||||||
|
.word $dd00 ; acia
|
||||||
|
.word $de00 ; tpi1
|
||||||
|
.word $df00 ; tpi2
|
||||||
|
.word $eab1 ; ktab1
|
||||||
|
.word $eb11 ; ktab2
|
||||||
|
.word $eb71 ; ktab3
|
||||||
|
.word $ebd1 ; ktab4
|
||||||
|
.dword $0000 ; time
|
||||||
|
.word $0100 ; RecvBuf
|
||||||
|
.word $0200 ; SendBuf
|
||||||
|
zptable_size = * - zptable
|
||||||
|
|
||||||
vectable:
|
vectable:
|
||||||
jmp $0000 ; CINT
|
jmp $0000 ; CINT
|
||||||
jmp $0000 ; IOINIT
|
jmp $0000 ; IOINIT
|
||||||
@ -338,7 +342,7 @@ vectable:
|
|||||||
jmp $0000 ; BASIN
|
jmp $0000 ; BASIN
|
||||||
jmp $0000 ; BSOUT
|
jmp $0000 ; BSOUT
|
||||||
jmp $0000 ; LOAD
|
jmp $0000 ; LOAD
|
||||||
jmp $0000 ; SAVE
|
jmp $0000 ; SAVE
|
||||||
jmp SETTIM
|
jmp SETTIM
|
||||||
jmp RDTIM
|
jmp RDTIM
|
||||||
jmp $0000 ; STOP
|
jmp $0000 ; STOP
|
||||||
@ -439,8 +443,8 @@ reset_size = * - reset
|
|||||||
|
|
||||||
.export IOBASE
|
.export IOBASE
|
||||||
.proc IOBASE
|
.proc IOBASE
|
||||||
ldx cia2
|
ldx cia2
|
||||||
ldy cia2+1
|
ldy cia2+1
|
||||||
rts
|
rts
|
||||||
.endproc
|
.endproc
|
||||||
|
|
||||||
|
11
libsrc/cbm510/extzp.inc
Normal file
11
libsrc/cbm510/extzp.inc
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
;
|
||||||
|
; Ullrich von Bassewitz, 2003-02-16
|
||||||
|
;
|
||||||
|
; Additional zero page locations for the CBM510.
|
||||||
|
;
|
||||||
|
|
||||||
|
; ------------------------------------------------------------------------
|
||||||
|
|
||||||
|
.globalzp vic, sid, cia1, cia2, acia, tpi1, tpi2, ktab1
|
||||||
|
.globalzp ktab2, ktab3, ktab4, time, RecvBuf, SendBuf
|
||||||
|
|
30
libsrc/cbm510/extzp.s
Normal file
30
libsrc/cbm510/extzp.s
Normal file
@ -0,0 +1,30 @@
|
|||||||
|
;
|
||||||
|
; Ullrich von Bassewitz, 2003-02-16
|
||||||
|
;
|
||||||
|
; Additional zero page locations for the CBM510.
|
||||||
|
; NOTE: The zeropage locations contained in this file get initialized
|
||||||
|
; in the startup code, so if you change anything here, be sure to check
|
||||||
|
; not only the linker config, but also the startup file.
|
||||||
|
;
|
||||||
|
|
||||||
|
; ------------------------------------------------------------------------
|
||||||
|
|
||||||
|
.include "extzp.inc"
|
||||||
|
|
||||||
|
.segment "EXTZP", zeropage
|
||||||
|
|
||||||
|
vic: .res 2
|
||||||
|
sid: .res 2
|
||||||
|
cia1: .res 2
|
||||||
|
cia2: .res 2
|
||||||
|
acia: .res 2
|
||||||
|
tpi1: .res 2
|
||||||
|
tpi2: .res 2
|
||||||
|
ktab1: .res 2
|
||||||
|
ktab2: .res 2
|
||||||
|
ktab3: .res 2
|
||||||
|
ktab4: .res 2
|
||||||
|
time: .res 4
|
||||||
|
RecvBuf: .res 2 ; RS232 receive buffer
|
||||||
|
SendBuf: .res 2 ; RS232 transmit buffer
|
||||||
|
|
@ -1,62 +0,0 @@
|
|||||||
;
|
|
||||||
; Ullrich von Bassewitz, 23.09.1998
|
|
||||||
;
|
|
||||||
; unsigned readjoy (unsigned char joy);
|
|
||||||
;
|
|
||||||
|
|
||||||
.export _readjoy
|
|
||||||
.import sys_bank, restore_bank
|
|
||||||
.importzp cia2, tmp1
|
|
||||||
|
|
||||||
.include "cbm510.inc"
|
|
||||||
|
|
||||||
; ------------------------------------------------------------------------
|
|
||||||
; unsigned __fastcall__ readjoy (unsigned char joy);
|
|
||||||
|
|
||||||
|
|
||||||
.proc _readjoy
|
|
||||||
|
|
||||||
jsr sys_bank ; Switch to the system bank
|
|
||||||
tax ; Save joystick number
|
|
||||||
|
|
||||||
; Get the direction bits
|
|
||||||
|
|
||||||
ldy #CIA_PRB
|
|
||||||
lda (cia2),y ; Read joystick inputs
|
|
||||||
sta tmp1
|
|
||||||
|
|
||||||
; Get the fire bits
|
|
||||||
|
|
||||||
ldy #CIA_PRA
|
|
||||||
lda (cia2),y
|
|
||||||
|
|
||||||
; Make the result value
|
|
||||||
|
|
||||||
cpx #$00 ; Joystick 0?
|
|
||||||
bne @L1 ; Jump if no
|
|
||||||
|
|
||||||
; Joystick 1, fire is in bit 6, direction in bit 0-3
|
|
||||||
|
|
||||||
asl a
|
|
||||||
jmp @L2
|
|
||||||
|
|
||||||
; Joystick 2, fire is in bit 7, direction in bit 5-7
|
|
||||||
|
|
||||||
@L1: ldy #$00 ; High byte of return value
|
|
||||||
lsr tmp1
|
|
||||||
lsr tmp1
|
|
||||||
lsr tmp1
|
|
||||||
lsr tmp1
|
|
||||||
|
|
||||||
; Mask the relavant bits, get the fire bit
|
|
||||||
|
|
||||||
@L2: asl a ; Fire bit into carry
|
|
||||||
lda tmp1
|
|
||||||
and #$0F
|
|
||||||
bcc @L3
|
|
||||||
ora #$10
|
|
||||||
@L3: eor #$1F ; All bits are inverted
|
|
||||||
jmp restore_bank
|
|
||||||
|
|
||||||
.endproc
|
|
||||||
|
|
Loading…
Reference in New Issue
Block a user