PR#3 PREFIX /A2OSX.SRC NEW INC 1 AUTO 6 .LIST OFF *-------------------------------------- IP.IN ldy #S.IP.PROTOCOL lda (ZPFrameBase1),y cmp #S.IP.PROTOCOL.ICMP bne .2 jmp ICMP.IN .2 cmp #S.IP.PROTOCOL.UDP bne .3 jsr UDP.IN bcs .9 jmp DNS.POLL .3 cmp #S.IP.PROTOCOL.TCP bne .9 jmp TCP.IN .9 sec rts *-------------------------------------- * In: * PULLW = Start Offset * PULLW = End Offset * Out: * Y,A = CheckSum *-------------------------------------- IP.ComputeChecksum >PULLA clc adc ZPFrameBase1 sta ZPTmpPtr1 >PULLA adc ZPFrameBase1+1 sta ZPTmpPtr1+1 >PULLA clc adc ZPFrameBase1 sta TmpOffset >PULLA adc ZPFrameBase1+1 sta TmpOffset+1 stz IP.CHECKSUM stz IP.CHECKSUM+1 stz IP.CHECKSUM+2 stz IP.CHECKSUM+3 ldy #2 .1 clc iny lda (ZPTmpPtr1),y adc IP.CHECKSUM sta IP.CHECKSUM dey lda (ZPTmpPtr1),y adc IP.CHECKSUM+1 sta IP.CHECKSUM+1 bcc .3 inc IP.CHECKSUM+2 bne .3 inc IP.CHECKSUM+3 .3 lda ZPTmpPtr1 clc adc #2 sta ZPTmpPtr1 bcc .4 inc ZPTmpPtr1+1 .4 cmp TmpOffset bne .1 lda ZPTmpPtr1+1 cmp TmpOffset+1 bne .1 lda IP.CHECKSUM clc adc IP.CHECKSUM+2 eor #$FF tay lda IP.CHECKSUM+1 adc IP.CHECKSUM+3 eor #$FF rts *-------------------------------------- IP.SetDestMAC ldy #S.IP.DST lda (ZPFrameBase1),y iny .1 and (ZPFrameBase1),y iny cpy #S.IP.DST+4 bne .1 cmp #$FF bne .3 not a broadcast.... ldy #S.ETH.DSTMAC .2 sta (ZPFrameBase1),y iny cpy #S.ETH.DSTMAC+6 bne .2 clc rts .3 ldy #S.IP.DST+3 ldx #3 .4 lda (ZPFrameBase1),y eor IPCFG+S.IPCFG.IP,x and IPCFG+S.IPCFG.MASK,x bne .6 dey dex bpl .4 ldy #S.IP.DST+3 Same network, query ARP for dest IP ldx #3 .5 lda (ZPFrameBase1),y sta ARP.TmpCache+S.ARPCACHE.IP,x dey dex bpl .5 bra .8 .6 ldx #3 Not Same network, query ARP for GW .7 lda IPCFG+S.IPCFG.GW,x sta ARP.TmpCache+S.ARPCACHE.IP,x dex bpl .7 .8 jsr ARP.QUERY.I bcs .99 ldx #5 ldy #S.ETH.DSTMAC+5 .11 lda ARP.TmpCache+S.ARPCACHE.MAC,x sta (ZPFrameBase1),y dey dex bpl .11 clc .99 rts *-------------------------------------- MAN SAVE LIB/LIBTCPIP.S.IP LOAD LIB/LIBTCPIP.S ASM