emailler/ip65/udp_c.s

84 lines
1.2 KiB
ArmAsm

.include "../inc/common.inc"
.export _udp_add_listener
.export _udp_remove_listener
.export _udp_recv_buf
.export _udp_recv_len
.export _udp_recv_src
.export _udp_recv_src_port
.export _udp_send
.import udp_add_listener
.import udp_remove_listener
.import ip_inp
.import udp_inp
.import udp_send
.import udp_callback
.importzp ip_src
.importzp udp_src_port
.importzp udp_len
.importzp udp_data
.import udp_send_len
.import udp_send_dest
.import udp_send_dest_port
.import udp_send_src_port
.import popax, popeax
.importzp sreg
_udp_add_listener:
stax udp_callback
jsr popax
jsr udp_add_listener
ldx #$00
txa
rol
rts
_udp_remove_listener:
jsr udp_remove_listener
ldx #$00
txa
rol
rts
_udp_recv_buf := udp_inp+udp_data
_udp_recv_len:
lda udp_inp+udp_len+1
ldx udp_inp+udp_len
sec
sbc #udp_data
bcs :+
dex
: rts
_udp_recv_src:
ldax ip_inp+ip_src+2
stax sreg
ldax ip_inp+ip_src
rts
_udp_recv_src_port:
lda udp_inp+udp_src_port+1
ldx udp_inp+udp_src_port
rts
_udp_send:
stax udp_send_src_port
jsr popax
stax udp_send_dest_port
jsr popeax
stax udp_send_dest
ldax sreg
stax udp_send_dest+2
jsr popax
stax udp_send_len
jsr popax
jsr udp_send
ldx #$00
txa
rol
rts