LBTCPIP:ARP/DNS debugging session #1

This commit is contained in:
Rémy GIBERT 2016-03-17 08:31:11 +01:00
parent bb490f0347
commit cf685a7b5b
7 changed files with 216 additions and 160 deletions

Binary file not shown.

Binary file not shown.

View File

@ -218,7 +218,7 @@ LIBSTR >PSTRING "libstr.o"
LIBTCPIP >PSTRING "libtcpip.o" LIBTCPIP >PSTRING "libtcpip.o"
SSCANF.IP >PSTRING "%d.%d.%d.%d" SSCANF.IP >PSTRING "%d.%d.%d.%d"
MSG0 >CSTRING "STS TTL MAC Address IP Address\n" MSG0 >CSTRING "STS TTL MAC Address IP Address\n"
MSG1 >CSTRING "$%h %5d %h:%h:%h:%h:%h:%h %d.%d.%d.%d\n" MSG1 >CSTRING "$%h %5D %h:%h:%h:%h:%h:%h %d.%d.%d.%d\n"
MSG2 >CSTRING "%d.%d.%d.%d is at %h:%h:%h:%h:%h:%h\n" MSG2 >CSTRING "%d.%d.%d.%d is at %h:%h:%h:%h:%h:%h\n"
*-------------------------------------- *--------------------------------------
DS.START DS.START

View File

@ -40,7 +40,6 @@ L.SSCANF.IP .DA SSCANF.IP
L.IP .DA IP L.IP .DA IP
L.MSG0 .DA MSG0 L.MSG0 .DA MSG0
L.MSG1 .DA MSG1 L.MSG1 .DA MSG1
L.DNSNAME .DA DNSNAME
.DA 0 .DA 0
*-------------------------------------- *--------------------------------------
CS.INIT stz hHostName CS.INIT stz hHostName
@ -103,19 +102,12 @@ CS.INIT.DUMP >LIBCALL hLIBTCPIP,LIBTCPIP.DNS.GETCACHE
>PUSHW L.MSG0 >PUSHW L.MSG0
>LIBCALL hLIBSTR,LIBSTR.PRINTF >LIBCALL hLIBSTR,LIBSTR.PRINTF
ldx #K.DNSCACHE.SIZE lda #K.DNSCACHE.SIZE
sta EntryCount
.1 phx .1 lda (ZPPTR1)
lda (ZPPTR1)
beq .2 beq .2
ldy #S.DNSCACHE.RDATA+4
.5 dey
lda (ZPPTR1),y
>PUSHA
cpy #S.DNSCACHE.RDATA
bne .5
ldy #S.DNSCACHE.TTL+4 ldy #S.DNSCACHE.TTL+4
.6 dey .6 dey
lda (ZPPTR1),y lda (ZPPTR1),y
@ -123,31 +115,18 @@ CS.INIT.DUMP >LIBCALL hLIBTCPIP,LIBTCPIP.DNS.GETCACHE
cpy #S.DNSCACHE.TTL cpy #S.DNSCACHE.TTL
bne .6 bne .6
ldy #S.DNSCACHE.IP+4
.5 dey
lda (ZPPTR1),y
>PUSHA
cpy #S.DNSCACHE.IP
bne .5
ldy #S.DNSCACHE.hNAME ldy #S.DNSCACHE.hNAME
lda (ZPPTR1),y lda (ZPPTR1),y
>SYSCALL SYS.GetMemPtrA >SYSCALL SYS.GetMemPtrA
>STYA ZPPTR2 >PUSHYA
ldy #0 convert DNS-style string to PSTR
.10 lda (ZPPTR2),y
tax
beq .12
lda #'.'
sta DNSNAME,y
.11 iny
lda (ZPPTR2),y
sta DNSNAME,y
dex
bne .11
iny
bne .10
.12 dey
sty DNSNAME
>PUSHW L.DNSNAME
>PUSHB (ZPPTR1) Entry Status >PUSHB (ZPPTR1) Entry Status
>PUSHW L.MSG1 >PUSHW L.MSG1
@ -160,10 +139,8 @@ CS.INIT.DUMP >LIBCALL hLIBTCPIP,LIBTCPIP.DNS.GETCACHE
bcc .3 bcc .3
inc ZPPTR1+1 inc ZPPTR1+1
.3 plx .3 dec EntryCount
dex bne .1
beq .8
jmp .1
.8 lda #0 tell TSKMGR that all done ok, but .8 lda #0 tell TSKMGR that all done ok, but
sec we do not want to stay in memory sec we do not want to stay in memory
@ -190,14 +167,14 @@ CS.END
LIBSTR >PSTRING "libstr.o" LIBSTR >PSTRING "libstr.o"
LIBTCPIP >PSTRING "libtcpip.o" LIBTCPIP >PSTRING "libtcpip.o"
SSCANF.IP >PSTRING "%d.%d.%d.%d" SSCANF.IP >PSTRING "%d.%d.%d.%d"
MSG0 >CSTRING "STS Hostname TTL IP Address\n" MSG0 >CSTRING "STS Hostname IP Address TTL\n"
MSG1 >CSTRING "$%h %32S %h%h%h%h %d.%d.%d.%d\n" MSG1 >CSTRING "$%h %32S %03d.%03d.%03d.%03d %L\n"
hLIBSTR .BS 1 hLIBSTR .BS 1
hLIBTCPIP .BS 1 hLIBTCPIP .BS 1
hHostName .BS 1 hHostName .BS 1
hIP .BS 1 hIP .BS 1
IP .BS 4 IP .BS 4
DNSNAME .BS K.DNS.MAXLEN+1 EntryCount .BS 1
MAN MAN
SAVE BIN/DNSINFO.S SAVE BIN/DNSINFO.S
ASM ASM

View File

@ -31,27 +31,27 @@ CS.START cld
*-------------------------------------- *--------------------------------------
.1 .DA LIB.LOAD .1 .DA LIB.LOAD
.DA LIB.UNLOAD .DA LIB.UNLOAD
.DA PRINTF .DA PrintF
.DA PRINTC .DA PrintC
.DA PRINTP .DA PrintP
.DA STRMATCHP .DA STRMATCHP
.DA STRCPYP .DA STRCPYP
.DA STRCATP .DA STRCATP
.DA UCASEP .DA UCASEP
.DA LCASEP .DA LCASEP
.DA PRINTDATE .DA PrintDATE
.DA PRINTTIME .DA PrintTIME
.DA SSCANF .DA SSCANF
*-------------------------------------- *--------------------------------------
PRINTFJMP1 .DA PRINTFA PrintFJMP1 .DA PrintFA
.DA PRINTFB,PRINTFBB .DA PrintFB,PrintFBB
.DA PRINTFD,PRINTFDD,PRINTFL .DA PrintFD,PrintFDD,PrintFL
.DA PRINTFE,PRINTFEE .DA PrintFE,PrintFEE
.DA PRINTFH,PRINTFHH .DA PrintFH,PrintFHH
.DA PRINTFI,PRINTFII .DA PrintFI,PrintFII
.DA PRINTFSC,PRINTFSP .DA PrintFSC,PrintFSP
.DA PRINTFT,PRINTFTT .DA PrintFT,PrintFTT
PRINTFJMP2 .DA PRINTFESC,PRINTFCR,PRINTFBKSLH,PRINTFPERCENT PrintFJMP2 .DA PrintFESC,PrintFCR,PrintFBKSLH,PrintFPERCENT
*-------------------------------------- *--------------------------------------
.DA 0 .DA 0
*-------------------------------------- *--------------------------------------
@ -59,28 +59,27 @@ LIB.LOAD
LIB.UNLOAD clc LIB.UNLOAD clc
rts rts
*-------------------------------------- *--------------------------------------
* PRINTF : * PrintF :
* Prints C-Style String * Prints C-Style String
* PULLW Pointer to Sting,Last Byte negative * PULLW Pointer to Sting,Last Byte negative
* %a pull 1 byte to print ATTRIB String * %a pull 1 byte to Print ATTRIB String
* %b pull 1 byte to print BIN * %b pull 1 byte to Print BIN
* %B pull 2 byte to print BIN * %B pull 2 byte to Print BIN
* %d pull 1 byte to print unsigned DEC * %d pull 1 byte to Print unsigned DEC
* %D pull 2 bytes to print unsigned DEC * %D pull 2 bytes to Print unsigned DEC
* %L pull 4 bytes to print unsigned DEC * %L pull 4 bytes to Print unsigned DEC
* %n pull 1 byte to print low Nibble HEX * %n pull 1 byte to Print low Nibble HEX
* %N pull 1 byte to print high Nibble HEX * %N pull 1 byte to Print high Nibble HEX
* %h pull 1 byte to print HEX * %h pull 1 byte to Print HEX
* %H pull 2 bytes to print HEX * %H pull 2 bytes to Print HEX
* %i pull 1 byte to print signed DEC * %i pull 1 byte to Print signed DEC
* %I pull 2 bytes to print signed DEC * %I pull 2 bytes to Print signed DEC
* %s pull 2 bytes ptr to C-Style String * %s pull 2 bytes ptr to C-Style String
* %S pull 2 bytes ptr to P-Style String * %S pull 2 bytes ptr to P-Style String
* \e print 'ESC' ($1B,27) * \e Print 'ESC' ($1B,27)
* \n print CR=13 * \n Print CR=13
* \\ print \ * \\ Print \
* \% print % * \% Print %
* padding : * padding :
* %d '9' '12' * %d '9' '12'
* %2d ' 9' '12' * %2d ' 9' '12'
@ -88,31 +87,31 @@ LIB.UNLOAD clc
* %16s 'ABCDEFGHIjkl ' * %16s 'ABCDEFGHIjkl '
* %011s 'ABCDEFGH000' * %011s 'ABCDEFGH000'
*-------------------------------------- *--------------------------------------
PRINTF >PULLW ZPTmpPtr1 PrintF >PULLW ZPTmpPtr1
ldy #0 ldy #0
PRINTFCOUT lda (ZPTmpPtr1),y PrintFCOUT lda (ZPTmpPtr1),y
beq .1 beq .1
cmp #'%' cmp #'%'
beq PRINTFESC1 beq PrintFESC1
cmp #'\' cmp #'\'
beq PRINTFESC2 beq PrintFESC2
jsr COUT jsr COUT
iny iny
bne PRINTFCOUT bne PrintFCOUT
.1 rts .1 rts
PRINTFEXIT ply PrintFEXIT ply
iny iny
bne PRINTFCOUT bne PrintFCOUT
rts rts
*-------------------------------------- *--------------------------------------
PRINTFESC1 stz PADLEN PrintFESC1 stz PADLEN
lda #' ' lda #' '
sta PADCHAR sta PADCHAR
.1 ldx #PRINTFTBL1.END-PRINTFTBL1-1 .1 ldx #PrintFTBL1.END-PrintFTBL1-1
iny iny
lda (ZPTmpPtr1),y lda (ZPTmpPtr1),y
beq .9 beq .9
.2 cmp PRINTFTBL1,x do we have a %x command? .2 cmp PrintFTBL1,x do we have a %x command?
beq .8 yes, jmp to it! beq .8 yes, jmp to it!
dex dex
bpl .2 no valid letter... bpl .2 no valid letter...
@ -146,14 +145,14 @@ PRINTFESC1 stz PADLEN
txa txa
asl asl
tax tax
jmp (PRINTFJMP1,x) jmp (PrintFJMP1,x)
.9 rts .9 rts
*-------------------------------------- *--------------------------------------
PRINTFESC2 ldx #PRINTFTBL2.END-PRINTFTBL2-1 PrintFESC2 ldx #PrintFTBL2.END-PrintFTBL2-1
iny iny
lda (ZPTmpPtr1),y lda (ZPTmpPtr1),y
beq .9 beq .9
.2 cmp PRINTFTBL2,x .2 cmp PrintFTBL2,x
beq .3 beq .3
dex dex
bpl .2 bpl .2
@ -162,23 +161,23 @@ PRINTFESC2 ldx #PRINTFTBL2.END-PRINTFTBL2-1
txa txa
asl asl
tax tax
jmp (PRINTFJMP2,x) jmp (PrintFJMP2,x)
.9 rts .9 rts
*-------------------------------------- *--------------------------------------
PRINTFA >PULLA PrintFA >PULLA
ldx #0 ldx #0
.1 asl .1 asl
pha pha
lda #'-' lda #'-'
bcc .2 bcc .2
lda PRINTF.ATTRIB,x lda PrintF.ATTRIB,x
.2 jsr COUT .2 jsr COUT
pla pla
inx inx
cpx #8 cpx #8
bne .1 bne .1
jmp PRINTFEXIT jmp PrintFEXIT
PRINTFB ldx #8 PrintFB ldx #8
>PULLA >PULLA
.1 asl .1 asl
pha pha
@ -189,26 +188,26 @@ PRINTFB ldx #8
pla pla
dex dex
bne .1 bne .1
jmp PRINTFEXIT jmp PrintFEXIT
PRINTFBB >PULLA PrintFBB >PULLA
>PULLA >PULLA
jmp PRINTFEXIT jmp PrintFEXIT
PRINTFD >PULLA PrintFD >PULLA
sta HEXBUF sta HEXBUF
stz HEXBUF+1 stz HEXBUF+1
stz HEXBUF+2 stz HEXBUF+2
stz HEXBUF+3 stz HEXBUF+3
jsr HEX2DEC jsr HEX2DEC
jmp PRINTFEXIT jmp PrintFEXIT
PRINTFDD >PULLA PrintFDD >PULLA
sta HEXBUF sta HEXBUF
>PULLA >PULLA
sta HEXBUF+1 sta HEXBUF+1
stz HEXBUF+2 stz HEXBUF+2
stz HEXBUF+3 stz HEXBUF+3
jsr HEX2DEC jsr HEX2DEC
jmp PRINTFEXIT jmp PrintFEXIT
PRINTFL >PULLA PrintFL >PULLA
sta HEXBUF sta HEXBUF
>PULLA >PULLA
sta HEXBUF+1 sta HEXBUF+1
@ -217,56 +216,56 @@ PRINTFL >PULLA
>PULLA >PULLA
sta HEXBUF+3 sta HEXBUF+3
jsr HEX2DEC jsr HEX2DEC
jmp PRINTFEXIT jmp PrintFEXIT
PRINTFE >PULLA PrintFE >PULLA
jsr PRHEX jsr PRHEX
jmp PRINTFEXIT jmp PrintFEXIT
PRINTFEE >PULLA PrintFEE >PULLA
lsr lsr
lsr lsr
lsr lsr
lsr lsr
jsr PRHEX jsr PRHEX
jmp PRINTFEXIT jmp PrintFEXIT
PRINTFH >PULLA PrintFH >PULLA
jsr PRBYTE jsr PRBYTE
jmp PRINTFEXIT jmp PrintFEXIT
PRINTFHH >PULLA PrintFHH >PULLA
pha pha
>PULLA >PULLA
jsr PRBYTE jsr PRBYTE
pla pla
jsr PRBYTE jsr PRBYTE
jmp PRINTFEXIT jmp PrintFEXIT
PRINTFI >PULLA PrintFI >PULLA
jmp PRINTFEXIT jmp PrintFEXIT
PRINTFII >PULLA PrintFII >PULLA
>PULLA >PULLA
jmp PRINTFEXIT jmp PrintFEXIT
PRINTFSC >PULLYA PrintFSC >PULLYA
jsr PRINTYA jsr PrintYA
jmp PRINTFEXIT jmp PrintFEXIT
PRINTFSP >PULLYA PrintFSP >PULLYA
jsr PRINTYAP jsr PrintYAP
jmp PRINTFEXIT jmp PrintFEXIT
PRINTFT jsr PRINTTIME PrintFT jsr PrintTIME
jmp PRINTFEXIT jmp PrintFEXIT
PRINTFTT jsr PRINTDATE PrintFTT jsr PrintDATE
jmp PRINTFEXIT jmp PrintFEXIT
*-------------------------------------- *--------------------------------------
PRINTFESC lda #$1B ESC PrintFESC lda #$1B ESC
jsr COUT jsr COUT
jmp PRINTFEXIT jmp PrintFEXIT
PRINTFCR jsr CROUT PrintFCR jsr CROUT
jmp PRINTFEXIT jmp PrintFEXIT
PRINTFBKSLH lda #'\' PrintFBKSLH lda #'\'
jsr COUT jsr COUT
jmp PRINTFEXIT jmp PrintFEXIT
PRINTFPERCENT lda #'%' PrintFPERCENT lda #'%'
jsr COUT jsr COUT
jmp PRINTFEXIT jmp PrintFEXIT
*-------------------------------------- *--------------------------------------
PRINTC >PULLW ZPTmpPtr2 PrintC >PULLW ZPTmpPtr2
ldy #0 ldy #0
.1 lda (ZPTmpPtr2),y .1 lda (ZPTmpPtr2),y
beq .8 beq .8
@ -275,7 +274,7 @@ PRINTC >PULLW ZPTmpPtr2
bne .1 bne .1
.8 rts .8 rts
*-------------------------------------- *--------------------------------------
PRINTP >PULLW ZPTmpPtr2 PrintP >PULLW ZPTmpPtr2
ldy #0 ldy #0
lda (ZPTmpPtr2),y lda (ZPTmpPtr2),y
tax tax
@ -386,7 +385,7 @@ LCASEP phx
* PULLW = DATE in ProDOS Format * PULLW = DATE in ProDOS Format
* A = year, Y = month/day * A = year, Y = month/day
*-------------------------------------- *--------------------------------------
PRINTDATE stz HEXBUF+1 PrintDATE stz HEXBUF+1
stz HEXBUF+2 stz HEXBUF+2
stz HEXBUF+3 stz HEXBUF+3
ldx #'0' ldx #'0'
@ -437,7 +436,7 @@ PRINTDATE stz HEXBUF+1
* PULLW = TIME in ProDOS Format * PULLW = TIME in ProDOS Format
* A = hours, Y = minutes * A = hours, Y = minutes
*-------------------------------------- *--------------------------------------
PRINTTIME stz HEXBUF+1 PrintTIME stz HEXBUF+1
stz HEXBUF+2 stz HEXBUF+2
stz HEXBUF+3 stz HEXBUF+3
ldx #'0' ldx #'0'
@ -553,11 +552,11 @@ SSCANF.IsDigit cmp #'0'
*-------------------------------------- *--------------------------------------
********** PRIVATE FUNCTIONS ********** ********** PRIVATE FUNCTIONS **********
*-------------------------------------- *--------------------------------------
* PRINTYAC : * PrintYAC :
* Prints C-Style String * Prints C-Style String
* Y,A=Pointer to Sting, Last Byte 0 * Y,A=Pointer to Sting, Last Byte 0
*-------------------------------------- *--------------------------------------
PRINTYA >STYA ZPTmpPtr2 PrintYA >STYA ZPTmpPtr2
ldy #0 ldy #0
.1 lda (ZPTmpPtr2),y .1 lda (ZPTmpPtr2),y
beq .2 beq .2
@ -566,11 +565,11 @@ PRINTYA >STYA ZPTmpPtr2
bne .1 bne .1
.2 rts .2 rts
*-------------------------------------- *--------------------------------------
* PRINTYAP : * PrintYAP :
* Prints Pascal-Style String * Prints Pascal-Style String
* Y,A=Pointer to Sting, LEN=1st Byte * Y,A=Pointer to Sting, LEN=1st Byte
*-------------------------------------- *--------------------------------------
PRINTYAP phx PrintYAP phx
>STYA ZPTmpPtr2 >STYA ZPTmpPtr2
ldy #0 ldy #0
lda (ZPTmpPtr2),y lda (ZPTmpPtr2),y
@ -644,19 +643,19 @@ HEX2DEC phx
lda PADLEN any Len format ? lda PADLEN any Len format ?
beq .5 no beq .5 no
lda #10 lda #10
sec yes, print only digits starting at pos 10-padlen sec yes, Print only digits starting at pos 10-padlen
sbc PADLEN sbc PADLEN
.5 tax x=0 if no padlen, or x=10-padlen .5 tax x=0 if no padlen, or x=10-padlen
.6 lda ASCBUF,x .6 lda ASCBUF,x
cmp #'0' a zero? cmp #'0' a zero?
beq .7 beq .7
inc PADLEN found a non zero, print all digits, even if 0, next time inc PADLEN found a non zero, Print all digits, even if 0, next time
ldy #'0' ldy #'0'
sty PADCHAR sty PADCHAR
bra .8 bra .8
.7 cpx #9 last digit ? .7 cpx #9 last digit ?
beq .8 print always beq .8 Print always
ldy PADLEN no pad to fill, do not print 0 ldy PADLEN no pad to fill, do not Print 0
beq .9 beq .9
lda PADCHAR fill with PADCHAR lda PADCHAR fill with PADCHAR
.8 jsr COUT .8 jsr COUT
@ -768,11 +767,11 @@ COUT phx
.9 rts .9 rts
*-------------------------------------- *--------------------------------------
CS.END CS.END
PRINTFTBL1 .AS "abBdDLnNhHiIsStT" PrintFTBL1 .AS "abBdDLnNhHiIsStT"
PRINTFTBL1.END PrintFTBL1.END
PRINTFTBL2 .AS "en\%" PrintFTBL2 .AS "en\%"
PRINTFTBL2.END PrintFTBL2.END
PRINTF.ATTRIB .AS "dnb+++wr" PrintF.ATTRIB .AS "dnb+++wr"
*-------------------------------------- *--------------------------------------
PADCHAR .BS 1 PADCHAR .BS 1
PADLEN .BS 1 PADLEN .BS 1

View File

@ -105,7 +105,7 @@ ARP.QUERY.I jsr ARP.FIND.BY.IP
lda ZPCachePtr lda ZPCachePtr
clc clc
adc S.ARPCACHE.MAC adc #S.ARPCACHE.MAC
sta ZPCachePtr sta ZPCachePtr
bcc .1 bcc .1
inc ZPCachePtr+1 inc ZPCachePtr+1
@ -246,49 +246,49 @@ ARP.RESOLVE ldy #S.IP.DST
lda ZPFrameBase1+1 lda ZPFrameBase1+1
adc /S.ETH.DSTMAC adc /S.ETH.DSTMAC
sta ZPPtrMAC+1 sta ZPPtrMAC+1
jmp ARP.QUERY.I
*-------------------------------------- *--------------------------------------
ARP.FIND.BY.IP >LDYA L.ARP.CACHE ARP.FIND.BY.IP >LDYA L.ARP.CACHE
>STYA ZPCachePtr >STYA ZPCachePtr
lda #K.ARPCACHE.SIZE ldx #K.ARPCACHE.SIZE
sta TmpOffset
.1 lda (ZPCachePtr) .1 lda (ZPCachePtr)
beq .7 beq .2
ldy #S.ARPCACHE.IP+3 ldy #S.ARPCACHE.IP
ldx #3
lda (ZPCachePtr),y lda (ZPCachePtr),y
cmp (ZPPtrIP) cmp (ZPPtrIP)
bne .7 bne .2
ldy #S.ARPCACHE.IP+1 ldy #S.ARPCACHE.IP+1
lda (ZPCachePtr),y lda (ZPCachePtr),y
ldy #1 ldy #1
cmp (ZPPtrIP),y cmp (ZPPtrIP),y
bne .7 bne .2
ldy #S.ARPCACHE.IP+2 ldy #S.ARPCACHE.IP+2
lda (ZPCachePtr),y lda (ZPCachePtr),y
ldy #2 ldy #2
cmp (ZPPtrIP),y cmp (ZPPtrIP),y
bne .7 bne .2
ldy #S.ARPCACHE.IP+3 ldy #S.ARPCACHE.IP+3
lda (ZPCachePtr),y lda (ZPCachePtr),y
ldy #3 ldy #3
cmp (ZPPtrIP),y cmp (ZPPtrIP),y
bne .7 bne .2
clc clc
rts rts
.7 lda ZPCachePtr .2 lda ZPCachePtr
clc clc
adc #S.ARPCACHE adc #S.ARPCACHE
sta ZPCachePtr sta ZPCachePtr
bcc .8 bcc .8
inc ZPCachePtr+1 inc ZPCachePtr+1
.8 dec TmpOffset .8 dex
bne .1 bne .1
sec sec
rts rts

View File

@ -227,6 +227,48 @@ DNS.FIND.BY.NAME
sec sec
rts rts
*-------------------------------------- *--------------------------------------
DNS.UPDATE.BY.ID
>LDYA L.DNS.CACHE
>STYA ZPCachePtr
ldx #K.DNSCACHE.SIZE
.1 lda (ZPCachePtr)
beq .6 empty DNS cache entry?
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
ldy #S.DNSCACHE-1
.2 lda DNS.TmpCache,y
sta (ZPCachePtr),y
dey
cpy #S.DNSCACHE.hNAME
bne .2
lda #S.DNSCACHE.STATUS.RESOLVED
sta (ZPCachePtr)
clc
rts
.6 lda ZPCachePtr
clc
adc #S.DNSCACHE
sta ZPCachePtr
bcc .7
inc ZPCachePtr+1
.7 dex
bne .1
sec
rts
*--------------------------------------
DNS.FIND.FREE >LDYA L.DNS.CACHE DNS.FIND.FREE >LDYA L.DNS.CACHE
>STYA ZPCachePtr >STYA ZPCachePtr
@ -339,11 +381,20 @@ DNS.DecodeMsg sta hFrame1
>SYSCALL SYS.GetMemPtrA >SYSCALL SYS.GetMemPtrA
>STYA ZPFrameBase1 >STYA ZPFrameBase1
>DEBUG
ldy #S.DNS.F+1 ldy #S.DNS.F+1
lda (ZPFrameBase1),y lda (ZPFrameBase1),y
and /S.DNS.F.QR and /S.DNS.F.QR
beq .9 beq .9
ldy #S.DNS.ID
lda (ZPFrameBase1),y
sta DNS.TmpCache+S.DNSCACHE.ID+1
iny
lda (ZPFrameBase1),y
sta DNS.TmpCache+S.DNSCACHE.ID
ldy #S.DNS.ANCOUNT+1 ldy #S.DNS.ANCOUNT+1
lda (ZPFrameBase1),y lda (ZPFrameBase1),y
beq .9 beq .9
@ -366,8 +417,37 @@ DNS.DecodeMsg sta hFrame1
dex skip another QUERY ? dex skip another QUERY ?
bne .1 bne .1
.3 iny skip high byte of offset .3 iny Skip Pointer or labels....
iny skip lo byte of offset lda (ZPFrameBase1),y
bne .3
iny skip S.DNS.QTYPE HIGH
iny
lda (ZPFrameBase1),y
cmp #S.DNS.QTYPE.A
bne .9
iny skip QCLASS
iny
ldx #3
.4 iny
lda (ZPFrameBase1),y
sta DNS.TmpCache+S.DNSCACHE.TTL,x
dex
bpl .4
iny skip DATALEN
iny
ldx #0
.5 iny
lda (ZPFrameBase1),y
sta DNS.TmpCache+S.DNSCACHE.IP,x
inx
cpx #4
bne .5
jsr DNS.UPDATE.BY.ID
.9 lda hFrame1 .9 lda hFrame1
>SYSCALL SYS.FreeMemA >SYSCALL SYS.FreeMemA