notaz.gp2x.de
/
megadrive.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
hexed: add jump cmd, refactor transfer
[megadrive.git]
/
hexed
/
transfer.S
diff --git
a/hexed/transfer.S
b/hexed/transfer.S
index
e4d5a2b
..
4ab3aff
100644
(file)
--- a/
hexed/transfer.S
+++ b/
hexed/transfer.S
@@
-88,6
+88,7
@@
.endm
recv_byte:
.endm
recv_byte:
+ moveq.l #0,d0
recv_one_byte 1
rts
recv_one_byte 1
rts
@@
-118,14
+119,23
@@
do_transfer:
bne return
bsr recv_byte
bne return
bsr recv_byte
- cmp.b #CMD_MD_SEND,d0 /* sent to us */
- beq transfer_recv
- cmp.b #CMD_MD_RECV,d0 /* recv from us */
- beq transfer_send
- bra return
-
-
-transfer_recv:
+ cmp.b #CMD_FIRST,d0
+ bcs return
+ cmp.b #CMD_LAST+1,d0
+ bcc return
+ sub.b #CMD_FIRST,d0
+
+ lsl.w #2,d0
+ lea (jumptab,pc,d0),a0
+ jmp (a0)
+jumptab:
+ bra pcc_transfer_recv /* sent to us */
+ bra pcc_transfer_send /* recv from us */
+ bra pcc_jump
+ bra pcc_test_code
+
+
+pcc_transfer_recv:
bsr recv_ad
move.l d0,a0
bsr recv_ad
bsr recv_ad
move.l d0,a0
bsr recv_ad
@@
-135,10
+145,11
@@
tr_recv_loop:
recv_one_byte
move.b d0,(a0)+
subq.l #1,d3
recv_one_byte
move.b d0,(a0)+
subq.l #1,d3
- b
ne
tr_recv_loop
+ b
gt
tr_recv_loop
bra return
bra return
-transfer_send:
+
+pcc_transfer_send:
bsr recv_ad
move.l d0,a0
bsr recv_ad
bsr recv_ad
move.l d0,a0
bsr recv_ad
@@
-156,7
+167,17
@@
tr_send_loop:
move.b (a0)+,d0
send_one_byte
subq.l #1,d3
move.b (a0)+,d0
send_one_byte
subq.l #1,d3
- bne tr_send_loop
+ bgt tr_send_loop
+ bra return
+
+
+pcc_jump:
+ bsr recv_ad
+ move.l d0,a0
+ jmp (a0)
+
+
+pcc_test_code:
bra return
bra return