2019-03-11 07:01:40 +00:00
|
|
|
|
NEW
|
|
|
|
|
PREFIX
|
|
|
|
|
AUTO 4,1
|
|
|
|
|
.LIST OFF
|
|
|
|
|
*/--------------------------------------
|
|
|
|
|
* # AARP.Clear
|
|
|
|
|
* Clear AARP Cache
|
|
|
|
|
* **In:**
|
|
|
|
|
* ## RETURN VALUE
|
|
|
|
|
*\--------------------------------------
|
|
|
|
|
AARP.Clear ldx #K.AARPCACHE.SIZE*S.AARPCACHE
|
|
|
|
|
|
|
|
|
|
.1 stz AARP.CACHE-1,x
|
|
|
|
|
dex
|
|
|
|
|
bne .1
|
|
|
|
|
clc
|
|
|
|
|
rts
|
|
|
|
|
*/--------------------------------------
|
|
|
|
|
* # AARP.Query
|
|
|
|
|
* Query AARP Cache and returns HW address
|
|
|
|
|
* **In:**
|
|
|
|
|
* PUSHW PTR to MAC (to fill)
|
|
|
|
|
* PUSHW PTR to ADDR
|
|
|
|
|
* ## RETURN VALUE
|
|
|
|
|
* CC: hit: MAC filled
|
|
|
|
|
* CS: missed
|
|
|
|
|
*\--------------------------------------
|
|
|
|
|
AARP.Query >PULLW ZPPtrADDR ADDR
|
|
|
|
|
>PULLW ZPPtrMAC MAC
|
|
|
|
|
|
|
|
|
|
ldy #3
|
|
|
|
|
.1 lda (ZPPtrADDR),y
|
|
|
|
|
sta AARP.TmpCache+S.AARPCACHE.ADDR,y
|
|
|
|
|
dey
|
|
|
|
|
bpl .1
|
|
|
|
|
jsr AARP.QUERY.I
|
|
|
|
|
bcs .9
|
|
|
|
|
|
|
|
|
|
ldy #5
|
|
|
|
|
.2 lda AARP.TmpCache+S.AARPCACHE.MAC,y
|
|
|
|
|
sta (ZPPtrMAC),y
|
|
|
|
|
dey
|
|
|
|
|
bpl .2
|
|
|
|
|
clc
|
|
|
|
|
.9 rts
|
|
|
|
|
*/--------------------------------------
|
|
|
|
|
* # AARP.Add
|
|
|
|
|
* Add a static AARP cache record
|
|
|
|
|
* **In:**
|
|
|
|
|
* PUSHW PTR to MAC
|
|
|
|
|
* PUSHW PTR to IP
|
|
|
|
|
*\--------------------------------------
|
|
|
|
|
AARP.Add >PULLW ZPPtrADDR ADDR
|
|
|
|
|
>PULLW ZPPtrMAC MAC
|
|
|
|
|
|
|
|
|
|
stz AARP.TmpCache+S.AARPCACHE.TTL
|
|
|
|
|
stz AARP.TmpCache+S.AARPCACHE.TTL+1
|
|
|
|
|
|
|
|
|
|
ldy #3
|
|
|
|
|
|
|
|
|
|
.1 lda (ZPPtrADDR),y
|
|
|
|
|
sta AARP.TmpCache+S.AARPCACHE.ADDR,y
|
|
|
|
|
dey
|
|
|
|
|
bpl .1
|
|
|
|
|
|
|
|
|
|
ldy #5
|
|
|
|
|
|
|
|
|
|
.2 lda (ZPPtrMAC),y
|
|
|
|
|
sta AARP.TmpCache+S.AARPCACHE.MAC,y
|
|
|
|
|
dey
|
|
|
|
|
bpl .2
|
|
|
|
|
|
|
|
|
|
lda #S.AARPCACHE.S.RESOLVED+S.AARPCACHE.S.STATIC
|
|
|
|
|
|
|
|
|
|
AARP.ADD.I sta AARP.TmpCache
|
|
|
|
|
|
|
|
|
|
jsr AARP.FIND.BY.ADDR
|
|
|
|
|
bcc .1
|
|
|
|
|
jsr AARP.FIND.FREE
|
|
|
|
|
|
|
|
|
|
.1 ldy #S.AARPCACHE-1
|
|
|
|
|
|
|
|
|
|
.2 lda AARP.TmpCache,y
|
|
|
|
|
sta (ZPCachePtr),y
|
|
|
|
|
dey
|
|
|
|
|
bpl .2
|
|
|
|
|
|
|
|
|
|
clc
|
|
|
|
|
rts
|
|
|
|
|
*/--------------------------------------
|
|
|
|
|
* # AARP.GetCache
|
|
|
|
|
* Return a Ptr to AARP Cache Table
|
|
|
|
|
* **In:**
|
|
|
|
|
* ## RETURN VALUE
|
|
|
|
|
* Y,A = PTR to AARP.CACHE
|
|
|
|
|
*\--------------------------------------
|
|
|
|
|
AARP.GetCache >LDYA L.AARP.CACHE
|
|
|
|
|
clc
|
|
|
|
|
rts
|
|
|
|
|
*--------------------------------------
|
|
|
|
|
* PRIVATE
|
|
|
|
|
*--------------------------------------
|
|
|
|
|
AARP.AddFromFrameInPtr
|
|
|
|
|
ldy #S.DDP2.SRC.NET
|
|
|
|
|
|
|
|
|
|
lda (ZPFrameInPtr),y
|
|
|
|
|
sta AARP.TmpCache+S.AARPCACHE.ADDR+1,x
|
|
|
|
|
iny
|
|
|
|
|
lda (ZPFrameInPtr),y
|
|
|
|
|
sta AARP.TmpCache+S.AARPCACHE.ADDR+2,x
|
|
|
|
|
iny
|
|
|
|
|
iny
|
|
|
|
|
lda (ZPFrameInPtr),y
|
|
|
|
|
sta AARP.TmpCache+S.AARPCACHE.ADDR+3,x
|
|
|
|
|
|
|
|
|
|
ldy #S.ETH.SRCMAC+5
|
|
|
|
|
ldx #5
|
|
|
|
|
|
|
|
|
|
.2 lda (ZPFrameInPtr),y
|
|
|
|
|
sta AARP.TmpCache+S.AARPCACHE.MAC,x
|
|
|
|
|
dey
|
|
|
|
|
dex
|
|
|
|
|
bpl .2
|
|
|
|
|
|
|
|
|
|
lda #K.AARP.TTL
|
|
|
|
|
sta AARP.TmpCache+S.AARPCACHE.TTL
|
|
|
|
|
lda /K.AARP.TTL
|
|
|
|
|
sta AARP.TmpCache+S.AARPCACHE.TTL+1
|
|
|
|
|
|
|
|
|
|
lda #S.AARPCACHE.S.RESOLVED
|
|
|
|
|
jmp AARP.ADD.I
|
|
|
|
|
*--------------------------------------
|
|
|
|
|
AARP.IN bra .10
|
|
|
|
|
|
|
|
|
|
ldy #S.AARP.TPA+3
|
|
|
|
|
ldx #3
|
|
|
|
|
|
|
|
|
|
.1 lda (ZPFrameInPtr),y
|
|
|
|
|
cmp ETKCFG+S.ETKCFG.ADDR,x
|
|
|
|
|
bne AARP.IN.EXIT
|
|
|
|
|
dey
|
|
|
|
|
dex
|
|
|
|
|
bpl .1
|
|
|
|
|
|
|
|
|
|
.10 ldy #S.AARP.OPERATION+1 HI byte
|
|
|
|
|
|
|
|
|
|
lda (ZPFrameInPtr),y
|
|
|
|
|
cmp #S.AARP.OPERATION.REQ
|
|
|
|
|
beq AARP.IN.REQ
|
|
|
|
|
|
|
|
|
|
cmp #S.AARP.OPERATION.REP
|
|
|
|
|
beq AARP.IN.REP
|
|
|
|
|
|
|
|
|
|
AARP.IN.EXIT lda hFrameIn
|
|
|
|
|
beq .8
|
|
|
|
|
stz hFrameIn
|
2019-05-05 17:15:37 +00:00
|
|
|
|
>SYSCALL2 FreeMem
|
2019-03-11 07:01:40 +00:00
|
|
|
|
.8 clc
|
|
|
|
|
rts
|
|
|
|
|
|
|
|
|
|
AARP.IN.REQ ldy #S.AARP.SPA+3
|
|
|
|
|
ldx #3
|
|
|
|
|
|
|
|
|
|
.1 lda (ZPFrameInPtr),y
|
|
|
|
|
sta AARP.REP.TPA,x
|
|
|
|
|
dey
|
|
|
|
|
dex
|
|
|
|
|
bpl .1
|
|
|
|
|
|
|
|
|
|
ldy #S.AARP.SHA+5
|
|
|
|
|
ldx #5
|
|
|
|
|
|
|
|
|
|
.2 lda (ZPFrameInPtr),y
|
|
|
|
|
sta AARP.REP.DSTMAC,x
|
|
|
|
|
sta AARP.REP.THA,x
|
|
|
|
|
dey
|
|
|
|
|
dex
|
|
|
|
|
bpl .2
|
|
|
|
|
|
|
|
|
|
>LDYA L.AARP.REP
|
|
|
|
|
jsr AARP.Send
|
|
|
|
|
|
|
|
|
|
bra AARP.IN.EXIT
|
|
|
|
|
|
|
|
|
|
AARP.IN.REP lda #K.AARP.TTL
|
|
|
|
|
sta AARP.TmpCache+S.AARPCACHE.TTL
|
|
|
|
|
lda /K.AARP.TTL
|
|
|
|
|
sta AARP.TmpCache+S.AARPCACHE.TTL+1
|
|
|
|
|
|
|
|
|
|
ldy #S.AARP.SPA+3
|
|
|
|
|
ldx #3
|
|
|
|
|
|
|
|
|
|
.1 lda (ZPFrameInPtr),y
|
|
|
|
|
sta AARP.TmpCache+S.AARPCACHE.ADDR,x
|
|
|
|
|
dey
|
|
|
|
|
dex
|
|
|
|
|
bpl .1
|
|
|
|
|
|
|
|
|
|
ldy #S.AARP.SHA+5
|
|
|
|
|
ldx #5
|
|
|
|
|
|
|
|
|
|
.2 lda (ZPFrameInPtr),y
|
|
|
|
|
sta AARP.TmpCache+S.AARPCACHE.MAC,x
|
|
|
|
|
dey
|
|
|
|
|
dex
|
|
|
|
|
bpl .2
|
|
|
|
|
|
|
|
|
|
lda #S.AARPCACHE.S.RESOLVED
|
|
|
|
|
|
|
|
|
|
jsr AARP.ADD.I
|
|
|
|
|
jmp AARP.IN.EXIT
|
|
|
|
|
*--------------------------------------
|
|
|
|
|
AARP.QUERY.I jsr AARP.FIND.BY.ADDR
|
|
|
|
|
bcs .3 send an AARP request
|
|
|
|
|
|
|
|
|
|
lda (ZPCachePtr) get status...
|
|
|
|
|
bpl .9 Pending...
|
|
|
|
|
|
|
|
|
|
ldy #S.AARPCACHE.MAC
|
|
|
|
|
|
|
|
|
|
.2 lda (ZPCachePtr),y
|
|
|
|
|
sta AARP.TmpCache,y
|
|
|
|
|
iny
|
|
|
|
|
cpy #S.AARPCACHE.MAC+6
|
|
|
|
|
bne .2
|
|
|
|
|
|
|
|
|
|
ldy #S.AARPCACHE.TTL
|
|
|
|
|
lda #K.AARP.TTL
|
|
|
|
|
sta (ZPCachePtr),y
|
|
|
|
|
iny
|
|
|
|
|
lda /K.AARP.TTL
|
|
|
|
|
sta (ZPCachePtr),y
|
|
|
|
|
|
|
|
|
|
clc
|
|
|
|
|
rts
|
|
|
|
|
|
|
|
|
|
.3 ldx #3
|
|
|
|
|
|
|
|
|
|
.4 lda AARP.TmpCache+S.AARPCACHE.ADDR,x
|
|
|
|
|
sta AARP.REQ.TPA,x
|
|
|
|
|
dex
|
|
|
|
|
bpl .4
|
|
|
|
|
|
|
|
|
|
>LDYA L.AARP.REQ
|
|
|
|
|
jsr AARP.Send
|
|
|
|
|
bcs .99
|
|
|
|
|
|
|
|
|
|
lda #K.AARP.PENDING.TTL
|
|
|
|
|
sta AARP.TmpCache+S.AARPCACHE.TTL
|
|
|
|
|
stz AARP.TmpCache+S.AARPCACHE.TTL+1
|
|
|
|
|
|
|
|
|
|
lda #S.AARPCACHE.S.PENDING
|
|
|
|
|
jsr AARP.ADD.I
|
|
|
|
|
|
|
|
|
|
.9 lda #ERR.AARP.PENDING
|
|
|
|
|
sec
|
|
|
|
|
.99 rts
|
|
|
|
|
*--------------------------------------
|
|
|
|
|
AARP.FIND.BY.ADDR
|
|
|
|
|
>LDYA L.AARP.CACHE
|
|
|
|
|
>STYA ZPCachePtr
|
|
|
|
|
|
|
|
|
|
lda #K.AARPCACHE.SIZE
|
|
|
|
|
sta TmpOffset
|
|
|
|
|
|
|
|
|
|
.1 lda (ZPCachePtr)
|
|
|
|
|
beq .3
|
|
|
|
|
|
|
|
|
|
ldx #3
|
|
|
|
|
ldy #S.AARPCACHE.ADDR+3
|
|
|
|
|
|
|
|
|
|
.2 lda AARP.TmpCache+S.AARPCACHE.ADDR,x
|
|
|
|
|
cmp (ZPCachePtr),y
|
|
|
|
|
bne .3
|
|
|
|
|
dey
|
|
|
|
|
dex
|
|
|
|
|
bpl .2
|
|
|
|
|
|
|
|
|
|
clc
|
|
|
|
|
rts
|
|
|
|
|
|
|
|
|
|
.3 lda ZPCachePtr
|
|
|
|
|
clc
|
|
|
|
|
adc #S.AARPCACHE
|
|
|
|
|
sta ZPCachePtr
|
|
|
|
|
bcc .8
|
|
|
|
|
inc ZPCachePtr+1
|
|
|
|
|
|
|
|
|
|
.8 dec TmpOffset
|
|
|
|
|
bne .1
|
|
|
|
|
sec
|
|
|
|
|
rts
|
|
|
|
|
*--------------------------------------
|
|
|
|
|
AARP.FIND.FREE >LDYA L.AARP.CACHE
|
|
|
|
|
>STYA ZPCachePtr
|
|
|
|
|
|
|
|
|
|
lda #$ff
|
|
|
|
|
sta TmpDWord
|
|
|
|
|
sta TmpDWord+1
|
|
|
|
|
|
|
|
|
|
ldx #K.AARPCACHE.SIZE
|
|
|
|
|
|
|
|
|
|
.1 lda (ZPCachePtr)
|
|
|
|
|
beq .8
|
|
|
|
|
bpl .6
|
|
|
|
|
|
|
|
|
|
ldy #S.AARPCACHE.TTL
|
|
|
|
|
lda (ZPCachePtr),y
|
|
|
|
|
sec
|
|
|
|
|
sbc TmpDWord
|
|
|
|
|
iny
|
|
|
|
|
lda (ZPCachePtr),y
|
|
|
|
|
sbc TmpDWord+1
|
|
|
|
|
bcc .6
|
|
|
|
|
|
|
|
|
|
lda (ZPCachePtr),y
|
|
|
|
|
sta TmpDWord+1
|
|
|
|
|
dey
|
|
|
|
|
lda (ZPCachePtr),y
|
|
|
|
|
sta TmpDWord
|
|
|
|
|
|
|
|
|
|
>LDYA ZPCachePtr
|
|
|
|
|
>STYA ZPTmpPtr1 save lowest TTL slot ...
|
|
|
|
|
|
|
|
|
|
.6 lda ZPCachePtr
|
|
|
|
|
clc
|
|
|
|
|
adc #S.AARPCACHE
|
|
|
|
|
sta ZPCachePtr
|
|
|
|
|
bcc .7
|
|
|
|
|
inc ZPCachePtr+1
|
|
|
|
|
|
|
|
|
|
.7 dex
|
|
|
|
|
bne .1
|
|
|
|
|
|
|
|
|
|
>LDYA ZPTmpPtr1
|
|
|
|
|
>STYA ZPCachePtr
|
|
|
|
|
lda #0
|
|
|
|
|
sta (ZPCachePtr)
|
|
|
|
|
|
|
|
|
|
.8 clc
|
|
|
|
|
rts
|
|
|
|
|
*--------------------------------------
|
|
|
|
|
AARP.EXPIRE >LDYA L.AARP.CACHE
|
|
|
|
|
>STYA ZPCachePtr
|
|
|
|
|
|
|
|
|
|
ldx #K.AARPCACHE.SIZE
|
|
|
|
|
|
|
|
|
|
.1 lda (ZPCachePtr)
|
|
|
|
|
beq .2
|
|
|
|
|
and #S.AARPCACHE.S.STATIC
|
|
|
|
|
bne .2
|
|
|
|
|
|
|
|
|
|
ldy #S.AARPCACHE.TTL
|
|
|
|
|
sec
|
|
|
|
|
lda (ZPCachePtr),y
|
|
|
|
|
sbc #1
|
|
|
|
|
sta (ZPCachePtr),y
|
|
|
|
|
iny
|
|
|
|
|
lda (ZPCachePtr),y
|
|
|
|
|
sbc #0
|
|
|
|
|
sta (ZPCachePtr),y
|
|
|
|
|
bcs .2
|
|
|
|
|
|
|
|
|
|
lda #0
|
|
|
|
|
sta (ZPCachePtr)
|
|
|
|
|
|
|
|
|
|
.2 lda ZPCachePtr
|
|
|
|
|
clc
|
|
|
|
|
adc #S.AARPCACHE
|
|
|
|
|
sta ZPCachePtr
|
|
|
|
|
bcc .3
|
|
|
|
|
inc ZPCachePtr+1
|
|
|
|
|
|
|
|
|
|
.3 dex
|
|
|
|
|
bne .1
|
|
|
|
|
rts
|
|
|
|
|
*--------------------------------------
|
|
|
|
|
AARP.Send >STYA IOCTL+S.IOCTL.BUFPTR
|
|
|
|
|
>LDYAI S.AARP
|
|
|
|
|
>STYA IOCTL+S.IOCTL.BYTECNT
|
|
|
|
|
jmp FRM.Send.IOCTL
|
|
|
|
|
*--------------------------------------
|
|
|
|
|
MAN
|
|
|
|
|
SAVE USR/SRC/LIB/LIBETALK.S.AARP
|
|
|
|
|
LOAD USR/SRC/LIB/LIBETALK.S
|
|
|
|
|
ASM
|