2017-12-22 21:24:30 +00:00
|
|
|
|
NEW
|
2017-03-29 15:48:15 +00:00
|
|
|
|
PREFIX /A2OSX.BUILD
|
2017-12-22 21:24:30 +00:00
|
|
|
|
AUTO 4,1
|
2015-03-14 21:48:35 +00:00
|
|
|
|
.LIST OFF
|
2017-02-15 16:14:41 +00:00
|
|
|
|
*/--------------------------------------
|
2017-03-30 16:11:31 +00:00
|
|
|
|
* # DNS.Clear
|
2017-02-15 16:14:41 +00:00
|
|
|
|
* Clear DNS Cache
|
2018-06-18 08:44:02 +00:00
|
|
|
|
* **In:**
|
2018-10-11 15:23:06 +00:00
|
|
|
|
* ## RETURN VALUE
|
2017-02-15 16:14:41 +00:00
|
|
|
|
*\--------------------------------------
|
|
|
|
|
DNS.Clear ldx #K.DNSCACHE.SIZE*S.DNSCACHE
|
2015-03-14 21:48:35 +00:00
|
|
|
|
.1 stz DNS.CACHE-1,x
|
|
|
|
|
dex
|
|
|
|
|
bne .1
|
|
|
|
|
clc
|
|
|
|
|
rts
|
2017-02-15 16:14:41 +00:00
|
|
|
|
*/--------------------------------------
|
2017-03-30 16:11:31 +00:00
|
|
|
|
* # DNS.Query
|
2017-02-15 16:14:41 +00:00
|
|
|
|
* Query DNS for specified host
|
2018-06-14 15:31:36 +00:00
|
|
|
|
* **In:**
|
2017-02-15 16:14:41 +00:00
|
|
|
|
* PUSHW = PTR to IP to fill with cached data
|
|
|
|
|
* PUSHW = hostname PTR to PSTR
|
2018-10-11 15:23:06 +00:00
|
|
|
|
* ## RETURN VALUE
|
2015-03-14 21:48:35 +00:00
|
|
|
|
* CC: hit: IP filled with address
|
|
|
|
|
* CS: missed
|
2017-02-15 16:14:41 +00:00
|
|
|
|
*\--------------------------------------
|
|
|
|
|
DNS.Query >PULLW ZPPtrDNS Get host string
|
2016-01-09 22:36:24 +00:00
|
|
|
|
>PULLW ZPPtrIP Get IP address to fill
|
2015-03-14 21:48:35 +00:00
|
|
|
|
|
2017-02-15 16:14:41 +00:00
|
|
|
|
DNS.Query.I jsr DNS.FIND.BY.NAME
|
2016-03-15 17:16:14 +00:00
|
|
|
|
bcs DNS.REQUEST
|
2015-10-19 20:35:00 +00:00
|
|
|
|
|
2016-03-15 17:16:14 +00:00
|
|
|
|
lda (ZPCachePtr) get status...
|
|
|
|
|
bpl .9 Pending...
|
2015-03-14 21:48:35 +00:00
|
|
|
|
|
2016-03-15 17:16:14 +00:00
|
|
|
|
lda ZPCachePtr
|
|
|
|
|
clc
|
2016-03-27 21:06:56 +00:00
|
|
|
|
adc #S.DNSCACHE.IP
|
2016-03-15 17:16:14 +00:00
|
|
|
|
sta ZPCachePtr
|
|
|
|
|
bcc .1
|
|
|
|
|
inc ZPCachePtr+1
|
2015-03-14 21:48:35 +00:00
|
|
|
|
|
2016-03-15 17:16:14 +00:00
|
|
|
|
.1 ldy #3
|
2016-03-27 21:06:56 +00:00
|
|
|
|
|
2016-03-15 17:16:14 +00:00
|
|
|
|
.2 lda (ZPCachePtr),y
|
2016-01-09 22:36:24 +00:00
|
|
|
|
sta (ZPPtrIP),y
|
2016-03-15 17:16:14 +00:00
|
|
|
|
dey
|
|
|
|
|
bpl .2
|
2015-03-14 21:48:35 +00:00
|
|
|
|
clc
|
|
|
|
|
rts
|
|
|
|
|
|
2016-03-20 22:16:01 +00:00
|
|
|
|
.9 lda #ERR.DNS.PENDING
|
2016-03-15 17:16:14 +00:00
|
|
|
|
sec
|
2015-03-14 21:48:35 +00:00
|
|
|
|
rts
|
2016-03-13 22:09:00 +00:00
|
|
|
|
*--------------------------------------
|
2018-10-08 15:41:00 +00:00
|
|
|
|
DNS.REQUEST lda hDNSSocket
|
2018-09-10 15:07:26 +00:00
|
|
|
|
beq .99
|
2016-03-27 21:06:56 +00:00
|
|
|
|
|
2018-09-10 15:07:26 +00:00
|
|
|
|
jsr DNS.CSTR2DNS Y=DNS string len+0
|
|
|
|
|
bcs .99
|
2015-03-14 21:48:35 +00:00
|
|
|
|
|
|
|
|
|
iny
|
|
|
|
|
lda /S.DNS.QTYPE.A
|
2016-03-13 22:09:00 +00:00
|
|
|
|
sta DNS.MSG,y
|
2015-03-14 21:48:35 +00:00
|
|
|
|
iny
|
|
|
|
|
lda #S.DNS.QTYPE.A
|
2016-03-13 22:09:00 +00:00
|
|
|
|
sta DNS.MSG,y
|
2015-03-14 21:48:35 +00:00
|
|
|
|
|
|
|
|
|
iny
|
|
|
|
|
lda /S.DNS.QCLASS.IN
|
2016-03-13 22:09:00 +00:00
|
|
|
|
sta DNS.MSG,y
|
2015-03-14 21:48:35 +00:00
|
|
|
|
iny
|
|
|
|
|
lda #S.DNS.QCLASS.IN
|
2016-03-13 22:09:00 +00:00
|
|
|
|
sta DNS.MSG,y
|
2015-03-14 21:48:35 +00:00
|
|
|
|
|
|
|
|
|
iny
|
2016-03-13 22:09:00 +00:00
|
|
|
|
tya
|
|
|
|
|
sta DNS.MSG.LEN
|
|
|
|
|
lda #0
|
|
|
|
|
sta DNS.MSG.LEN+1
|
2015-03-14 21:48:35 +00:00
|
|
|
|
|
2016-03-13 22:09:00 +00:00
|
|
|
|
>LDYA A2osX.RANDOM16
|
2016-03-15 17:16:14 +00:00
|
|
|
|
>STYA DNS.MSG.ID
|
|
|
|
|
|
|
|
|
|
>STYA DNS.TmpCache+S.DNSCACHE.ID
|
2016-03-16 16:37:02 +00:00
|
|
|
|
|
2016-03-27 21:06:56 +00:00
|
|
|
|
lda #K.DNS.PENDING.TTL
|
2016-03-15 17:16:14 +00:00
|
|
|
|
sta DNS.TmpCache+S.DNSCACHE.TTL
|
2016-03-16 16:37:02 +00:00
|
|
|
|
stz DNS.TmpCache+S.DNSCACHE.TTL+1
|
|
|
|
|
stz DNS.TmpCache+S.DNSCACHE.TTL+2
|
|
|
|
|
stz DNS.TmpCache+S.DNSCACHE.TTL+3
|
2016-03-15 17:16:14 +00:00
|
|
|
|
|
|
|
|
|
lda #S.DNSCACHE.STATUS.PENDING
|
|
|
|
|
jsr DNS.ADD.I
|
|
|
|
|
bcs .9
|
|
|
|
|
|
2018-09-10 15:07:26 +00:00
|
|
|
|
jsr DNS.REQUEST.SEND
|
|
|
|
|
bcs .99
|
2018-10-08 15:41:00 +00:00
|
|
|
|
|
|
|
|
|
lda #ERR.DNS.PENDING
|
|
|
|
|
sec
|
|
|
|
|
rts
|
2018-09-10 15:07:26 +00:00
|
|
|
|
|
|
|
|
|
.99 lda #ERR.DNS.ERROR
|
|
|
|
|
.9 sec
|
|
|
|
|
rts
|
|
|
|
|
*--------------------------------------
|
|
|
|
|
DNS.REQUEST.SEND
|
2018-11-06 19:26:45 +00:00
|
|
|
|
>LDYAI UDP.PORT.DNS
|
|
|
|
|
>STYA SA.REMOTE+S.SOCKADDR.PORT
|
|
|
|
|
|
2018-11-01 08:53:47 +00:00
|
|
|
|
ldy #3
|
2018-11-06 19:26:45 +00:00
|
|
|
|
|
|
|
|
|
.1 lda IPCFG+S.IPCFG.DNS1,y
|
2018-11-01 08:53:47 +00:00
|
|
|
|
sta SA.REMOTE+S.SOCKADDR.ADDR,y
|
|
|
|
|
dey
|
|
|
|
|
bpl .1
|
2018-11-06 19:26:45 +00:00
|
|
|
|
jsr .4
|
2018-11-01 08:53:47 +00:00
|
|
|
|
|
2018-11-06 19:26:45 +00:00
|
|
|
|
ldy #3
|
|
|
|
|
|
|
|
|
|
.2 lda IPCFG+S.IPCFG.DNS2,y
|
|
|
|
|
beq .8
|
|
|
|
|
sta SA.REMOTE+S.SOCKADDR.ADDR,y
|
|
|
|
|
dey
|
|
|
|
|
bpl .2
|
2018-11-01 08:53:47 +00:00
|
|
|
|
|
2018-11-06 19:26:45 +00:00
|
|
|
|
.4 >PUSHW L.SA.REMOTE
|
2018-10-08 15:41:00 +00:00
|
|
|
|
|
2017-02-15 21:46:21 +00:00
|
|
|
|
>PUSHW DNS.MSG.LEN
|
2018-09-17 15:42:38 +00:00
|
|
|
|
>PUSHW L.DNS.MSG
|
2018-10-08 15:41:00 +00:00
|
|
|
|
lda hDNSSocket
|
|
|
|
|
jmp SKT.SendTo
|
2018-11-06 19:26:45 +00:00
|
|
|
|
|
|
|
|
|
.8 clc
|
|
|
|
|
rts
|
2018-09-10 15:07:26 +00:00
|
|
|
|
*--------------------------------------
|
|
|
|
|
DNS.CSTR2DNS lda (ZPPtrDNS)
|
|
|
|
|
beq .9
|
2015-03-14 21:48:35 +00:00
|
|
|
|
|
2018-09-10 15:07:26 +00:00
|
|
|
|
>LDYA ZPPtrDNS
|
|
|
|
|
>SYSCALL strlen
|
|
|
|
|
|
|
|
|
|
tax
|
|
|
|
|
bne .9
|
|
|
|
|
|
|
|
|
|
cpy #K.DNS.MAXLEN-1
|
|
|
|
|
bcs .9
|
|
|
|
|
|
|
|
|
|
lda #0 Ending 0
|
|
|
|
|
sta DNS.MSG.NAME+1,y
|
|
|
|
|
|
|
|
|
|
phy save len for later
|
|
|
|
|
|
|
|
|
|
ldx #0
|
|
|
|
|
dey
|
|
|
|
|
|
|
|
|
|
.1 lda (ZPPtrDNS),y
|
|
|
|
|
and #$7f
|
|
|
|
|
cmp #'.'
|
|
|
|
|
beq .2
|
|
|
|
|
|
|
|
|
|
cmp #'A'
|
|
|
|
|
bcc .10
|
|
|
|
|
cmp #'Z'+1
|
|
|
|
|
bcs .10
|
|
|
|
|
adc #$20
|
|
|
|
|
|
|
|
|
|
.10 inx
|
|
|
|
|
bra .3
|
|
|
|
|
|
|
|
|
|
.2 txa
|
|
|
|
|
ldx #0
|
|
|
|
|
|
|
|
|
|
.3 sta DNS.MSG.NAME+1,y
|
|
|
|
|
dey
|
|
|
|
|
bpl .1
|
|
|
|
|
|
|
|
|
|
stx DNS.MSG.NAME
|
|
|
|
|
|
2018-09-10 20:42:21 +00:00
|
|
|
|
pla Get back Len
|
|
|
|
|
sec +1
|
|
|
|
|
adc #S.DNS-S.UDP compute offset next to NAME
|
|
|
|
|
tay
|
|
|
|
|
* clc
|
2015-03-14 21:48:35 +00:00
|
|
|
|
rts
|
2018-09-10 15:07:26 +00:00
|
|
|
|
|
|
|
|
|
.9 sec
|
|
|
|
|
rts
|
2017-02-15 16:14:41 +00:00
|
|
|
|
*/--------------------------------------
|
2017-03-30 16:11:31 +00:00
|
|
|
|
* # DNS.Add
|
2017-02-15 16:14:41 +00:00
|
|
|
|
* Add a static DNS record
|
2018-06-14 15:31:36 +00:00
|
|
|
|
* **In:**
|
2017-02-15 16:14:41 +00:00
|
|
|
|
* PUSHW = PTR to IP
|
2018-05-23 15:27:37 +00:00
|
|
|
|
* PUSHW = hostname CSTR to Add
|
2017-02-15 16:14:41 +00:00
|
|
|
|
*\--------------------------------------
|
|
|
|
|
DNS.Add >PULLW ZPPtrDNS Get host string
|
2016-01-09 22:36:24 +00:00
|
|
|
|
>PULLW ZPPtrIP Get host IP address
|
2018-08-08 15:13:37 +00:00
|
|
|
|
|
2016-03-16 16:37:02 +00:00
|
|
|
|
ldy #3
|
|
|
|
|
|
|
|
|
|
.1 lda (ZPPtrIP),y
|
|
|
|
|
sta DNS.TmpCache+S.DNSCACHE.IP,y
|
|
|
|
|
dey
|
|
|
|
|
bpl .1
|
|
|
|
|
|
|
|
|
|
stz DNS.TmpCache+S.DNSCACHE.TTL
|
|
|
|
|
stz DNS.TmpCache+S.DNSCACHE.TTL+1
|
|
|
|
|
stz DNS.TmpCache+S.DNSCACHE.TTL+2
|
|
|
|
|
stz DNS.TmpCache+S.DNSCACHE.TTL+3
|
|
|
|
|
|
2016-03-15 17:16:14 +00:00
|
|
|
|
lda #S.DNSCACHE.STATUS.RESOLVED+S.DNSCACHE.STATUS.STATIC
|
|
|
|
|
|
|
|
|
|
DNS.ADD.I sta DNS.TmpCache
|
|
|
|
|
|
|
|
|
|
jsr DNS.FIND.BY.NAME
|
2016-03-27 21:06:56 +00:00
|
|
|
|
bcc .2 Found, go update...
|
2016-03-16 16:37:02 +00:00
|
|
|
|
|
2016-03-27 21:06:56 +00:00
|
|
|
|
jsr DNS.FIND.FREE
|
2016-03-13 22:09:00 +00:00
|
|
|
|
|
2016-03-27 21:06:56 +00:00
|
|
|
|
>LDYA ZPPtrDNS
|
2018-07-23 06:28:47 +00:00
|
|
|
|
>SYSCALL newstr
|
2016-03-15 17:16:14 +00:00
|
|
|
|
bcs .9
|
2016-10-26 21:46:01 +00:00
|
|
|
|
txa
|
2016-03-27 21:06:56 +00:00
|
|
|
|
ldy #S.DNSCACHE.hNAME
|
|
|
|
|
sta (ZPCachePtr),y
|
|
|
|
|
|
|
|
|
|
.2 lda DNS.TmpCache
|
|
|
|
|
sta (ZPCachePtr)
|
2015-03-14 21:48:35 +00:00
|
|
|
|
|
2016-03-27 21:06:56 +00:00
|
|
|
|
ldy #S.DNSCACHE.ID
|
2018-05-24 15:21:38 +00:00
|
|
|
|
|
2016-03-16 16:37:02 +00:00
|
|
|
|
.3 lda DNS.TmpCache,y
|
2016-03-15 17:16:14 +00:00
|
|
|
|
sta (ZPCachePtr),y
|
2016-03-27 21:06:56 +00:00
|
|
|
|
iny
|
|
|
|
|
cpy #S.DNSCACHE
|
|
|
|
|
bne .3
|
2015-03-14 21:48:35 +00:00
|
|
|
|
|
2016-03-15 17:16:14 +00:00
|
|
|
|
clc
|
2016-03-27 21:06:56 +00:00
|
|
|
|
.9 rts
|
2017-02-15 16:14:41 +00:00
|
|
|
|
*/--------------------------------------
|
2017-10-06 15:25:14 +00:00
|
|
|
|
* # DNS.GetCAche
|
2017-02-15 16:14:41 +00:00
|
|
|
|
* Return a Ptr to DNS Cache Table
|
2018-06-14 15:31:36 +00:00
|
|
|
|
* **In:**
|
2018-10-11 15:23:06 +00:00
|
|
|
|
* ## RETURN VALUE
|
2017-02-15 16:14:41 +00:00
|
|
|
|
* Y,A = PTR to DNS.CACHE
|
|
|
|
|
*\--------------------------------------
|
2017-10-06 15:25:14 +00:00
|
|
|
|
DNS.GetCAche >LDYA L.DNS.CACHE
|
2016-03-15 17:16:14 +00:00
|
|
|
|
clc
|
|
|
|
|
rts
|
|
|
|
|
*--------------------------------------
|
|
|
|
|
DNS.FIND.BY.NAME
|
|
|
|
|
>LDYA L.DNS.CACHE
|
|
|
|
|
>STYA ZPCachePtr
|
2015-10-19 20:35:00 +00:00
|
|
|
|
|
2016-03-15 17:16:14 +00:00
|
|
|
|
lda #K.DNSCACHE.SIZE
|
|
|
|
|
sta TmpOffset
|
2015-03-14 21:48:35 +00:00
|
|
|
|
|
2016-03-15 17:16:14 +00:00
|
|
|
|
.1 lda (ZPCachePtr)
|
|
|
|
|
beq .6 empty DNS cache entry?
|
2015-10-19 20:35:00 +00:00
|
|
|
|
|
2018-09-06 12:27:37 +00:00
|
|
|
|
>PUSHW ZPPtrDNS
|
2016-03-15 17:16:14 +00:00
|
|
|
|
ldy #S.DNSCACHE.hNAME
|
|
|
|
|
lda (ZPCachePtr),y
|
2018-07-18 15:30:42 +00:00
|
|
|
|
>SYSCALL GetMemPtr
|
2018-01-19 07:14:38 +00:00
|
|
|
|
|
2018-09-06 12:27:37 +00:00
|
|
|
|
>SYSCALL StrCaseCmp
|
2018-01-15 16:51:44 +00:00
|
|
|
|
bcc .8
|
2016-03-15 17:16:14 +00:00
|
|
|
|
|
|
|
|
|
.6 lda ZPCachePtr
|
2015-03-14 21:48:35 +00:00
|
|
|
|
clc
|
|
|
|
|
adc #S.DNSCACHE
|
2016-03-15 17:16:14 +00:00
|
|
|
|
sta ZPCachePtr
|
|
|
|
|
bcc .7
|
|
|
|
|
inc ZPCachePtr+1
|
|
|
|
|
|
|
|
|
|
.7 dec TmpOffset
|
2015-10-19 20:35:00 +00:00
|
|
|
|
bne .1
|
2016-03-15 17:16:14 +00:00
|
|
|
|
sec
|
2018-01-15 16:51:44 +00:00
|
|
|
|
.8 rts
|
2016-03-15 17:16:14 +00:00
|
|
|
|
*--------------------------------------
|
2016-03-17 07:31:11 +00:00
|
|
|
|
DNS.UPDATE.BY.ID
|
|
|
|
|
>LDYA L.DNS.CACHE
|
|
|
|
|
>STYA ZPCachePtr
|
2018-08-08 15:13:37 +00:00
|
|
|
|
|
2016-03-17 07:31:11 +00:00
|
|
|
|
ldx #K.DNSCACHE.SIZE
|
|
|
|
|
|
|
|
|
|
.1 lda (ZPCachePtr)
|
|
|
|
|
beq .6 empty DNS cache entry?
|
2016-03-27 21:06:56 +00:00
|
|
|
|
bmi .6 resolved ?
|
2018-08-08 15:13:37 +00:00
|
|
|
|
|
2016-03-17 07:31:11 +00:00
|
|
|
|
ldy #S.DNSCACHE.ID
|
|
|
|
|
lda (ZPCachePtr),y
|
|
|
|
|
cmp DNS.TmpCache+S.DNSCACHE.ID
|
|
|
|
|
bne .6
|
|
|
|
|
iny
|
|
|
|
|
lda (ZPCachePtr),y
|
|
|
|
|
cmp DNS.TmpCache+S.DNSCACHE.ID+1
|
|
|
|
|
bne .6
|
|
|
|
|
|
2016-03-27 21:06:56 +00:00
|
|
|
|
lda #S.DNSCACHE.STATUS.RESOLVED
|
|
|
|
|
sta (ZPCachePtr)
|
|
|
|
|
|
|
|
|
|
ldy #S.DNSCACHE.TTL
|
2016-03-17 07:31:11 +00:00
|
|
|
|
.2 lda DNS.TmpCache,y
|
|
|
|
|
sta (ZPCachePtr),y
|
2016-03-27 21:06:56 +00:00
|
|
|
|
iny
|
|
|
|
|
cpy #S.DNSCACHE
|
2016-03-17 07:31:11 +00:00
|
|
|
|
bne .2
|
|
|
|
|
|
|
|
|
|
clc
|
|
|
|
|
rts
|
|
|
|
|
|
|
|
|
|
.6 lda ZPCachePtr
|
|
|
|
|
clc
|
|
|
|
|
adc #S.DNSCACHE
|
|
|
|
|
sta ZPCachePtr
|
|
|
|
|
bcc .7
|
|
|
|
|
inc ZPCachePtr+1
|
|
|
|
|
|
|
|
|
|
.7 dex
|
|
|
|
|
bne .1
|
|
|
|
|
sec
|
|
|
|
|
rts
|
|
|
|
|
*--------------------------------------
|
2016-03-15 17:16:14 +00:00
|
|
|
|
DNS.FIND.FREE >LDYA L.DNS.CACHE
|
|
|
|
|
>STYA ZPCachePtr
|
|
|
|
|
|
|
|
|
|
lda #K.DNSCACHE.SIZE
|
|
|
|
|
sta TmpOffset
|
2018-08-08 15:13:37 +00:00
|
|
|
|
|
2016-03-15 17:16:14 +00:00
|
|
|
|
lda #$ff
|
|
|
|
|
sta TmpDWord
|
|
|
|
|
sta TmpDWord+1
|
|
|
|
|
sta TmpDWord+2
|
|
|
|
|
sta TmpDWord+3
|
|
|
|
|
|
|
|
|
|
.1 lda (ZPCachePtr)
|
|
|
|
|
beq .8 empty DNS cache entry?
|
2018-05-24 15:21:38 +00:00
|
|
|
|
bit #S.DNSCACHE.STATUS.STATIC+S.DNSCACHE.STATUS.PENDING
|
|
|
|
|
bne .6 Static/Pending.....skip
|
2016-03-15 17:16:14 +00:00
|
|
|
|
|
|
|
|
|
ldy #S.DNSCACHE.TTL
|
2016-03-16 16:37:02 +00:00
|
|
|
|
ldx #3
|
2016-03-15 17:16:14 +00:00
|
|
|
|
sec
|
2016-03-27 21:06:56 +00:00
|
|
|
|
.2 lda TmpDWord,x is saved TTL greater then actual TTL?
|
2016-03-15 17:16:14 +00:00
|
|
|
|
sbc (ZPCachePtr),y
|
|
|
|
|
iny
|
2016-03-16 16:37:02 +00:00
|
|
|
|
dex
|
|
|
|
|
bpl .2
|
2016-03-15 17:16:14 +00:00
|
|
|
|
bcc .6 no,
|
2015-10-19 20:35:00 +00:00
|
|
|
|
|
2016-03-15 17:16:14 +00:00
|
|
|
|
ldy #S.DNSCACHE.TTL
|
2016-03-16 16:37:02 +00:00
|
|
|
|
ldx #3
|
2016-03-15 17:16:14 +00:00
|
|
|
|
.3 lda (ZPCachePtr),y Save new lowest TTL
|
|
|
|
|
sta TmpDWord,x
|
|
|
|
|
iny
|
2016-03-16 16:37:02 +00:00
|
|
|
|
dex
|
|
|
|
|
bpl .3
|
2015-03-14 21:48:35 +00:00
|
|
|
|
|
2016-03-15 17:16:14 +00:00
|
|
|
|
>LDYA ZPCachePtr
|
|
|
|
|
>STYA ZPTmpPtr1 save lowest TTL slot ...
|
2015-10-19 20:35:00 +00:00
|
|
|
|
|
2016-03-15 17:16:14 +00:00
|
|
|
|
.6 lda ZPCachePtr
|
|
|
|
|
clc
|
|
|
|
|
adc #S.DNSCACHE
|
|
|
|
|
sta ZPCachePtr
|
|
|
|
|
bcc .7
|
|
|
|
|
inc ZPCachePtr+1
|
|
|
|
|
|
|
|
|
|
.7 dec TmpOffset
|
|
|
|
|
bne .1 no empty slot found, discard lowest TTL
|
2015-03-14 21:48:35 +00:00
|
|
|
|
|
2016-03-15 17:16:14 +00:00
|
|
|
|
>LDYA ZPTmpPtr1
|
|
|
|
|
>STYA ZPCachePtr
|
2016-03-16 16:37:02 +00:00
|
|
|
|
jsr DNS.FREE
|
2015-10-19 20:35:00 +00:00
|
|
|
|
|
2016-03-15 17:16:14 +00:00
|
|
|
|
.8 clc
|
2015-03-14 21:48:35 +00:00
|
|
|
|
rts
|
2016-03-15 17:16:14 +00:00
|
|
|
|
*--------------------------------------
|
|
|
|
|
DNS.EXPIRE >LDYA L.DNS.CACHE
|
|
|
|
|
>STYA ZPCachePtr
|
2015-03-14 21:48:35 +00:00
|
|
|
|
|
2016-03-15 17:16:14 +00:00
|
|
|
|
lda #K.DNSCACHE.SIZE
|
|
|
|
|
sta TmpOffset
|
2015-10-19 20:35:00 +00:00
|
|
|
|
|
2016-03-15 17:16:14 +00:00
|
|
|
|
.1 lda (ZPCachePtr)
|
|
|
|
|
beq .7 empty DNS cache entry?
|
2018-05-24 15:21:38 +00:00
|
|
|
|
bit #S.DNSCACHE.STATUS.STATIC
|
|
|
|
|
bne .7
|
2016-03-15 17:16:14 +00:00
|
|
|
|
|
|
|
|
|
ldy #S.DNSCACHE.TTL
|
|
|
|
|
ldx #4
|
|
|
|
|
clc
|
|
|
|
|
.2 lda (ZPCachePtr),y
|
|
|
|
|
sbc #0
|
|
|
|
|
sta (ZPCachePtr),y
|
2015-03-14 21:48:35 +00:00
|
|
|
|
iny
|
2016-03-15 17:16:14 +00:00
|
|
|
|
dex
|
2015-03-14 21:48:35 +00:00
|
|
|
|
bne .2
|
2016-03-15 17:16:14 +00:00
|
|
|
|
bcs .7
|
|
|
|
|
jsr DNS.FREE
|
2015-03-14 21:48:35 +00:00
|
|
|
|
|
2016-03-15 17:16:14 +00:00
|
|
|
|
.7 lda ZPCachePtr
|
|
|
|
|
clc
|
|
|
|
|
adc #S.DNSCACHE
|
|
|
|
|
sta ZPCachePtr
|
|
|
|
|
bcc .8
|
|
|
|
|
inc ZPCachePtr+1
|
|
|
|
|
|
|
|
|
|
.8 dec TmpOffset
|
|
|
|
|
bne .1
|
2015-03-14 21:48:35 +00:00
|
|
|
|
clc
|
|
|
|
|
rts
|
|
|
|
|
*--------------------------------------
|
2016-03-15 17:16:14 +00:00
|
|
|
|
DNS.FREE ldy #S.DNSCACHE.hNAME
|
|
|
|
|
lda (ZPCachePtr),y
|
2016-03-20 22:16:01 +00:00
|
|
|
|
beq .1
|
2017-03-19 21:47:54 +00:00
|
|
|
|
|
2018-07-18 15:30:42 +00:00
|
|
|
|
>SYSCALL FreeMem
|
2016-03-20 22:16:01 +00:00
|
|
|
|
.1 lda #0
|
2016-03-15 17:16:14 +00:00
|
|
|
|
sta (ZPCachePtr)
|
2015-03-14 21:48:35 +00:00
|
|
|
|
rts
|
|
|
|
|
*--------------------------------------
|
2018-10-08 15:41:00 +00:00
|
|
|
|
DNS.POLL lda hDNSSocket
|
2016-03-13 22:09:00 +00:00
|
|
|
|
beq .8
|
2018-10-08 15:41:00 +00:00
|
|
|
|
jsr SKT.Recv
|
2016-03-16 16:37:02 +00:00
|
|
|
|
bcs .8
|
2018-08-08 15:13:37 +00:00
|
|
|
|
|
2016-03-16 16:37:02 +00:00
|
|
|
|
jsr DNS.DecodeMsg
|
2018-10-08 15:41:00 +00:00
|
|
|
|
|
2016-03-13 22:09:00 +00:00
|
|
|
|
.8 clc
|
|
|
|
|
rts
|
|
|
|
|
*--------------------------------------
|
2017-01-29 21:47:19 +00:00
|
|
|
|
DNS.DecodeMsg sta hFrameIn
|
2018-07-18 15:30:42 +00:00
|
|
|
|
>SYSCALL GetMemPtr
|
2017-01-31 16:40:37 +00:00
|
|
|
|
>STYA ZPFrameInPtr
|
2018-08-08 15:13:37 +00:00
|
|
|
|
|
2018-11-01 08:53:47 +00:00
|
|
|
|
ldy #S.DNS.F
|
2017-01-31 16:40:37 +00:00
|
|
|
|
lda (ZPFrameInPtr),y
|
2016-03-13 22:09:00 +00:00
|
|
|
|
and /S.DNS.F.QR
|
|
|
|
|
beq .9
|
|
|
|
|
|
2016-03-17 07:31:11 +00:00
|
|
|
|
ldy #S.DNS.ID
|
2017-01-31 16:40:37 +00:00
|
|
|
|
lda (ZPFrameInPtr),y
|
2016-03-27 21:06:56 +00:00
|
|
|
|
sta DNS.TmpCache+S.DNSCACHE.ID
|
2016-03-17 07:31:11 +00:00
|
|
|
|
iny
|
2017-01-31 16:40:37 +00:00
|
|
|
|
lda (ZPFrameInPtr),y
|
2016-03-27 21:06:56 +00:00
|
|
|
|
sta DNS.TmpCache+S.DNSCACHE.ID+1
|
2016-03-17 07:31:11 +00:00
|
|
|
|
|
2016-03-13 22:09:00 +00:00
|
|
|
|
ldy #S.DNS.ANCOUNT+1
|
2017-01-31 16:40:37 +00:00
|
|
|
|
lda (ZPFrameInPtr),y
|
2016-03-13 22:09:00 +00:00
|
|
|
|
beq .9
|
2016-03-20 22:16:01 +00:00
|
|
|
|
pha save Answer count...
|
2016-03-13 22:09:00 +00:00
|
|
|
|
|
|
|
|
|
ldy #S.DNS.QDCOUNT+1
|
2017-01-31 16:40:37 +00:00
|
|
|
|
lda (ZPFrameInPtr),y
|
2016-03-20 22:16:01 +00:00
|
|
|
|
|
|
|
|
|
ldy #S.DNS Point to DATA
|
|
|
|
|
|
2016-03-13 22:09:00 +00:00
|
|
|
|
tax
|
|
|
|
|
beq .3 no QUERY to skip
|
|
|
|
|
|
2017-01-31 16:40:37 +00:00
|
|
|
|
.1 lda (ZPFrameInPtr),y
|
2016-03-13 22:09:00 +00:00
|
|
|
|
beq .2
|
2016-03-20 22:16:01 +00:00
|
|
|
|
bpl .11 Pointer ?
|
|
|
|
|
iny yes, skip 2 bytes
|
2016-03-13 22:09:00 +00:00
|
|
|
|
iny
|
2016-03-20 22:16:01 +00:00
|
|
|
|
bra .2
|
|
|
|
|
|
|
|
|
|
.11 tya
|
|
|
|
|
sec
|
2017-01-31 16:40:37 +00:00
|
|
|
|
adc (ZPFrameInPtr),y Skip LEN+1 bytes
|
2016-03-13 22:09:00 +00:00
|
|
|
|
tay
|
2016-03-20 22:16:01 +00:00
|
|
|
|
bra .1
|
|
|
|
|
|
|
|
|
|
.2 iny
|
|
|
|
|
iny
|
|
|
|
|
iny Skip QTYPE & QCLASS
|
|
|
|
|
iny
|
|
|
|
|
|
2016-03-27 21:06:56 +00:00
|
|
|
|
iny next pos
|
|
|
|
|
|
2016-03-20 22:16:01 +00:00
|
|
|
|
.21 dex skip another QUERY ?
|
2016-03-13 22:09:00 +00:00
|
|
|
|
bne .1
|
|
|
|
|
|
2016-03-20 22:16:01 +00:00
|
|
|
|
plx get back answer count
|
2016-03-17 07:31:11 +00:00
|
|
|
|
|
2017-01-31 16:40:37 +00:00
|
|
|
|
.3 lda (ZPFrameInPtr),y
|
2016-03-20 22:16:01 +00:00
|
|
|
|
beq .32
|
|
|
|
|
bpl .31 Pointer ?
|
|
|
|
|
iny yes, skip 2 bytes
|
2016-03-17 07:31:11 +00:00
|
|
|
|
iny
|
2016-03-20 22:16:01 +00:00
|
|
|
|
bra .32
|
|
|
|
|
|
|
|
|
|
.31 tya
|
|
|
|
|
sec
|
2017-01-31 16:40:37 +00:00
|
|
|
|
adc (ZPFrameInPtr),y Skip LEN+1 bytes
|
2016-03-20 22:16:01 +00:00
|
|
|
|
tay
|
|
|
|
|
bra .3
|
|
|
|
|
|
|
|
|
|
.32 iny skip S.DNS.QTYPE HIGH
|
2017-01-31 16:40:37 +00:00
|
|
|
|
lda (ZPFrameInPtr),y
|
2016-03-17 07:31:11 +00:00
|
|
|
|
cmp #S.DNS.QTYPE.A
|
2016-03-20 22:16:01 +00:00
|
|
|
|
beq .40
|
|
|
|
|
|
|
|
|
|
tya
|
|
|
|
|
clc
|
|
|
|
|
adc #7 skip CLASS,TTL+DATALENHIGH
|
|
|
|
|
tay
|
|
|
|
|
sec skip DATALENLO
|
2017-01-31 16:40:37 +00:00
|
|
|
|
adc (ZPFrameInPtr),y add DATALEN
|
2016-03-20 22:16:01 +00:00
|
|
|
|
tay
|
|
|
|
|
dex
|
|
|
|
|
bne .3
|
|
|
|
|
bra .9
|
|
|
|
|
|
|
|
|
|
.40 iny skip QCLASS
|
2016-03-17 07:31:11 +00:00
|
|
|
|
iny
|
|
|
|
|
|
2016-03-27 21:06:56 +00:00
|
|
|
|
iny next pos
|
|
|
|
|
|
2016-03-17 07:31:11 +00:00
|
|
|
|
ldx #3
|
2017-01-31 16:40:37 +00:00
|
|
|
|
.4 lda (ZPFrameInPtr),y
|
2016-03-17 07:31:11 +00:00
|
|
|
|
sta DNS.TmpCache+S.DNSCACHE.TTL,x
|
2016-03-20 22:16:01 +00:00
|
|
|
|
iny
|
2016-03-17 07:31:11 +00:00
|
|
|
|
dex
|
|
|
|
|
bpl .4
|
|
|
|
|
|
|
|
|
|
iny skip DATALEN
|
|
|
|
|
iny
|
|
|
|
|
ldx #0
|
|
|
|
|
|
2017-01-31 16:40:37 +00:00
|
|
|
|
.5 lda (ZPFrameInPtr),y
|
2016-03-17 07:31:11 +00:00
|
|
|
|
sta DNS.TmpCache+S.DNSCACHE.IP,x
|
2016-03-27 21:06:56 +00:00
|
|
|
|
iny
|
2016-03-17 07:31:11 +00:00
|
|
|
|
inx
|
|
|
|
|
cpx #4
|
|
|
|
|
bne .5
|
|
|
|
|
|
|
|
|
|
jsr DNS.UPDATE.BY.ID
|
2016-03-16 16:37:02 +00:00
|
|
|
|
|
2017-01-29 21:47:19 +00:00
|
|
|
|
.9 lda hFrameIn
|
2018-09-17 15:42:38 +00:00
|
|
|
|
>SYSCALL FreeMem
|
2018-08-08 15:13:37 +00:00
|
|
|
|
clc
|
2016-03-16 16:37:02 +00:00
|
|
|
|
rts
|
2016-03-13 22:09:00 +00:00
|
|
|
|
*--------------------------------------
|
2015-03-14 21:48:35 +00:00
|
|
|
|
MAN
|
2017-03-30 06:31:12 +00:00
|
|
|
|
SAVE /A2OSX.SRC/LIB/LIBTCPIP.S.DNS
|
|
|
|
|
LOAD /A2OSX.SRC/LIB/LIBTCPIP.S
|
2015-03-14 21:48:35 +00:00
|
|
|
|
ASM
|