mirror of
https://github.com/A2osX/A2osX.git
synced 2025-02-09 02:30:35 +00:00
LBTCPIP:ARP/DNS debugging session #1
This commit is contained in:
parent
bb490f0347
commit
cf685a7b5b
BIN
A2OSX.BOOT.DSK
BIN
A2OSX.BOOT.DSK
Binary file not shown.
BIN
A2OSX.SRC.po
BIN
A2OSX.SRC.po
Binary file not shown.
@ -218,7 +218,7 @@ LIBSTR >PSTRING "libstr.o"
|
||||
LIBTCPIP >PSTRING "libtcpip.o"
|
||||
SSCANF.IP >PSTRING "%d.%d.%d.%d"
|
||||
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"
|
||||
*--------------------------------------
|
||||
DS.START
|
||||
|
@ -40,7 +40,6 @@ L.SSCANF.IP .DA SSCANF.IP
|
||||
L.IP .DA IP
|
||||
L.MSG0 .DA MSG0
|
||||
L.MSG1 .DA MSG1
|
||||
L.DNSNAME .DA DNSNAME
|
||||
.DA 0
|
||||
*--------------------------------------
|
||||
CS.INIT stz hHostName
|
||||
@ -103,19 +102,12 @@ CS.INIT.DUMP >LIBCALL hLIBTCPIP,LIBTCPIP.DNS.GETCACHE
|
||||
>PUSHW L.MSG0
|
||||
>LIBCALL hLIBSTR,LIBSTR.PRINTF
|
||||
|
||||
ldx #K.DNSCACHE.SIZE
|
||||
lda #K.DNSCACHE.SIZE
|
||||
sta EntryCount
|
||||
|
||||
.1 phx
|
||||
lda (ZPPTR1)
|
||||
.1 lda (ZPPTR1)
|
||||
beq .2
|
||||
|
||||
ldy #S.DNSCACHE.RDATA+4
|
||||
.5 dey
|
||||
lda (ZPPTR1),y
|
||||
>PUSHA
|
||||
cpy #S.DNSCACHE.RDATA
|
||||
bne .5
|
||||
|
||||
ldy #S.DNSCACHE.TTL+4
|
||||
.6 dey
|
||||
lda (ZPPTR1),y
|
||||
@ -123,31 +115,18 @@ CS.INIT.DUMP >LIBCALL hLIBTCPIP,LIBTCPIP.DNS.GETCACHE
|
||||
cpy #S.DNSCACHE.TTL
|
||||
bne .6
|
||||
|
||||
ldy #S.DNSCACHE.IP+4
|
||||
.5 dey
|
||||
lda (ZPPTR1),y
|
||||
>PUSHA
|
||||
cpy #S.DNSCACHE.IP
|
||||
bne .5
|
||||
|
||||
ldy #S.DNSCACHE.hNAME
|
||||
lda (ZPPTR1),y
|
||||
>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
|
||||
|
||||
>PUSHW L.MSG1
|
||||
@ -160,10 +139,8 @@ CS.INIT.DUMP >LIBCALL hLIBTCPIP,LIBTCPIP.DNS.GETCACHE
|
||||
bcc .3
|
||||
inc ZPPTR1+1
|
||||
|
||||
.3 plx
|
||||
dex
|
||||
beq .8
|
||||
jmp .1
|
||||
.3 dec EntryCount
|
||||
bne .1
|
||||
|
||||
.8 lda #0 tell TSKMGR that all done ok, but
|
||||
sec we do not want to stay in memory
|
||||
@ -190,14 +167,14 @@ CS.END
|
||||
LIBSTR >PSTRING "libstr.o"
|
||||
LIBTCPIP >PSTRING "libtcpip.o"
|
||||
SSCANF.IP >PSTRING "%d.%d.%d.%d"
|
||||
MSG0 >CSTRING "STS Hostname TTL IP Address\n"
|
||||
MSG1 >CSTRING "$%h %32S %h%h%h%h %d.%d.%d.%d\n"
|
||||
MSG0 >CSTRING "STS Hostname IP Address TTL\n"
|
||||
MSG1 >CSTRING "$%h %32S %03d.%03d.%03d.%03d %L\n"
|
||||
hLIBSTR .BS 1
|
||||
hLIBTCPIP .BS 1
|
||||
hHostName .BS 1
|
||||
hIP .BS 1
|
||||
IP .BS 4
|
||||
DNSNAME .BS K.DNS.MAXLEN+1
|
||||
EntryCount .BS 1
|
||||
MAN
|
||||
SAVE BIN/DNSINFO.S
|
||||
ASM
|
||||
|
211
LIB/LIBSTR.S.txt
211
LIB/LIBSTR.S.txt
@ -31,27 +31,27 @@ CS.START cld
|
||||
*--------------------------------------
|
||||
.1 .DA LIB.LOAD
|
||||
.DA LIB.UNLOAD
|
||||
.DA PRINTF
|
||||
.DA PRINTC
|
||||
.DA PRINTP
|
||||
.DA PrintF
|
||||
.DA PrintC
|
||||
.DA PrintP
|
||||
.DA STRMATCHP
|
||||
.DA STRCPYP
|
||||
.DA STRCATP
|
||||
.DA UCASEP
|
||||
.DA LCASEP
|
||||
.DA PRINTDATE
|
||||
.DA PRINTTIME
|
||||
.DA PrintDATE
|
||||
.DA PrintTIME
|
||||
.DA SSCANF
|
||||
*--------------------------------------
|
||||
PRINTFJMP1 .DA PRINTFA
|
||||
.DA PRINTFB,PRINTFBB
|
||||
.DA PRINTFD,PRINTFDD,PRINTFL
|
||||
.DA PRINTFE,PRINTFEE
|
||||
.DA PRINTFH,PRINTFHH
|
||||
.DA PRINTFI,PRINTFII
|
||||
.DA PRINTFSC,PRINTFSP
|
||||
.DA PRINTFT,PRINTFTT
|
||||
PRINTFJMP2 .DA PRINTFESC,PRINTFCR,PRINTFBKSLH,PRINTFPERCENT
|
||||
PrintFJMP1 .DA PrintFA
|
||||
.DA PrintFB,PrintFBB
|
||||
.DA PrintFD,PrintFDD,PrintFL
|
||||
.DA PrintFE,PrintFEE
|
||||
.DA PrintFH,PrintFHH
|
||||
.DA PrintFI,PrintFII
|
||||
.DA PrintFSC,PrintFSP
|
||||
.DA PrintFT,PrintFTT
|
||||
PrintFJMP2 .DA PrintFESC,PrintFCR,PrintFBKSLH,PrintFPERCENT
|
||||
*--------------------------------------
|
||||
.DA 0
|
||||
*--------------------------------------
|
||||
@ -59,28 +59,27 @@ LIB.LOAD
|
||||
LIB.UNLOAD clc
|
||||
rts
|
||||
*--------------------------------------
|
||||
* PRINTF :
|
||||
* PrintF :
|
||||
* Prints C-Style String
|
||||
* PULLW Pointer to Sting,Last Byte negative
|
||||
* %a pull 1 byte to print ATTRIB String
|
||||
* %b pull 1 byte to print BIN
|
||||
* %B pull 2 byte to print BIN
|
||||
* %d pull 1 byte to print unsigned DEC
|
||||
* %D pull 2 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 high Nibble HEX
|
||||
* %h pull 1 byte to print HEX
|
||||
* %H pull 2 bytes to print HEX
|
||||
* %i pull 1 byte to print signed DEC
|
||||
* %I pull 2 bytes to print signed DEC
|
||||
* %a pull 1 byte to Print ATTRIB String
|
||||
* %b pull 1 byte to Print BIN
|
||||
* %B pull 2 byte to Print BIN
|
||||
* %d pull 1 byte to Print unsigned DEC
|
||||
* %D pull 2 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 high Nibble HEX
|
||||
* %h pull 1 byte to Print HEX
|
||||
* %H pull 2 bytes to Print HEX
|
||||
* %i pull 1 byte 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 P-Style String
|
||||
* \e print 'ESC' ($1B,27)
|
||||
* \n print CR=13
|
||||
* \\ print \
|
||||
* \% print %
|
||||
|
||||
* \e Print 'ESC' ($1B,27)
|
||||
* \n Print CR=13
|
||||
* \\ Print \
|
||||
* \% Print %
|
||||
* padding :
|
||||
* %d '9' '12'
|
||||
* %2d ' 9' '12'
|
||||
@ -88,31 +87,31 @@ LIB.UNLOAD clc
|
||||
* %16s 'ABCDEFGHIjkl '
|
||||
* %011s 'ABCDEFGH000'
|
||||
*--------------------------------------
|
||||
PRINTF >PULLW ZPTmpPtr1
|
||||
PrintF >PULLW ZPTmpPtr1
|
||||
ldy #0
|
||||
PRINTFCOUT lda (ZPTmpPtr1),y
|
||||
PrintFCOUT lda (ZPTmpPtr1),y
|
||||
beq .1
|
||||
cmp #'%'
|
||||
beq PRINTFESC1
|
||||
beq PrintFESC1
|
||||
cmp #'\'
|
||||
beq PRINTFESC2
|
||||
beq PrintFESC2
|
||||
jsr COUT
|
||||
iny
|
||||
bne PRINTFCOUT
|
||||
bne PrintFCOUT
|
||||
.1 rts
|
||||
PRINTFEXIT ply
|
||||
PrintFEXIT ply
|
||||
iny
|
||||
bne PRINTFCOUT
|
||||
bne PrintFCOUT
|
||||
rts
|
||||
*--------------------------------------
|
||||
PRINTFESC1 stz PADLEN
|
||||
PrintFESC1 stz PADLEN
|
||||
lda #' '
|
||||
sta PADCHAR
|
||||
.1 ldx #PRINTFTBL1.END-PRINTFTBL1-1
|
||||
.1 ldx #PrintFTBL1.END-PrintFTBL1-1
|
||||
iny
|
||||
lda (ZPTmpPtr1),y
|
||||
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!
|
||||
dex
|
||||
bpl .2 no valid letter...
|
||||
@ -146,14 +145,14 @@ PRINTFESC1 stz PADLEN
|
||||
txa
|
||||
asl
|
||||
tax
|
||||
jmp (PRINTFJMP1,x)
|
||||
jmp (PrintFJMP1,x)
|
||||
.9 rts
|
||||
*--------------------------------------
|
||||
PRINTFESC2 ldx #PRINTFTBL2.END-PRINTFTBL2-1
|
||||
PrintFESC2 ldx #PrintFTBL2.END-PrintFTBL2-1
|
||||
iny
|
||||
lda (ZPTmpPtr1),y
|
||||
beq .9
|
||||
.2 cmp PRINTFTBL2,x
|
||||
.2 cmp PrintFTBL2,x
|
||||
beq .3
|
||||
dex
|
||||
bpl .2
|
||||
@ -162,23 +161,23 @@ PRINTFESC2 ldx #PRINTFTBL2.END-PRINTFTBL2-1
|
||||
txa
|
||||
asl
|
||||
tax
|
||||
jmp (PRINTFJMP2,x)
|
||||
jmp (PrintFJMP2,x)
|
||||
.9 rts
|
||||
*--------------------------------------
|
||||
PRINTFA >PULLA
|
||||
PrintFA >PULLA
|
||||
ldx #0
|
||||
.1 asl
|
||||
pha
|
||||
lda #'-'
|
||||
bcc .2
|
||||
lda PRINTF.ATTRIB,x
|
||||
lda PrintF.ATTRIB,x
|
||||
.2 jsr COUT
|
||||
pla
|
||||
inx
|
||||
cpx #8
|
||||
bne .1
|
||||
jmp PRINTFEXIT
|
||||
PRINTFB ldx #8
|
||||
jmp PrintFEXIT
|
||||
PrintFB ldx #8
|
||||
>PULLA
|
||||
.1 asl
|
||||
pha
|
||||
@ -189,26 +188,26 @@ PRINTFB ldx #8
|
||||
pla
|
||||
dex
|
||||
bne .1
|
||||
jmp PRINTFEXIT
|
||||
PRINTFBB >PULLA
|
||||
jmp PrintFEXIT
|
||||
PrintFBB >PULLA
|
||||
>PULLA
|
||||
jmp PRINTFEXIT
|
||||
PRINTFD >PULLA
|
||||
jmp PrintFEXIT
|
||||
PrintFD >PULLA
|
||||
sta HEXBUF
|
||||
stz HEXBUF+1
|
||||
stz HEXBUF+2
|
||||
stz HEXBUF+3
|
||||
jsr HEX2DEC
|
||||
jmp PRINTFEXIT
|
||||
PRINTFDD >PULLA
|
||||
jmp PrintFEXIT
|
||||
PrintFDD >PULLA
|
||||
sta HEXBUF
|
||||
>PULLA
|
||||
sta HEXBUF+1
|
||||
stz HEXBUF+2
|
||||
stz HEXBUF+3
|
||||
jsr HEX2DEC
|
||||
jmp PRINTFEXIT
|
||||
PRINTFL >PULLA
|
||||
jmp PrintFEXIT
|
||||
PrintFL >PULLA
|
||||
sta HEXBUF
|
||||
>PULLA
|
||||
sta HEXBUF+1
|
||||
@ -217,56 +216,56 @@ PRINTFL >PULLA
|
||||
>PULLA
|
||||
sta HEXBUF+3
|
||||
jsr HEX2DEC
|
||||
jmp PRINTFEXIT
|
||||
PRINTFE >PULLA
|
||||
jmp PrintFEXIT
|
||||
PrintFE >PULLA
|
||||
jsr PRHEX
|
||||
jmp PRINTFEXIT
|
||||
PRINTFEE >PULLA
|
||||
jmp PrintFEXIT
|
||||
PrintFEE >PULLA
|
||||
lsr
|
||||
lsr
|
||||
lsr
|
||||
lsr
|
||||
jsr PRHEX
|
||||
jmp PRINTFEXIT
|
||||
PRINTFH >PULLA
|
||||
jmp PrintFEXIT
|
||||
PrintFH >PULLA
|
||||
jsr PRBYTE
|
||||
jmp PRINTFEXIT
|
||||
PRINTFHH >PULLA
|
||||
jmp PrintFEXIT
|
||||
PrintFHH >PULLA
|
||||
pha
|
||||
>PULLA
|
||||
jsr PRBYTE
|
||||
pla
|
||||
jsr PRBYTE
|
||||
jmp PRINTFEXIT
|
||||
PRINTFI >PULLA
|
||||
jmp PRINTFEXIT
|
||||
PRINTFII >PULLA
|
||||
jmp PrintFEXIT
|
||||
PrintFI >PULLA
|
||||
jmp PrintFEXIT
|
||||
PrintFII >PULLA
|
||||
>PULLA
|
||||
jmp PRINTFEXIT
|
||||
PRINTFSC >PULLYA
|
||||
jsr PRINTYA
|
||||
jmp PRINTFEXIT
|
||||
PRINTFSP >PULLYA
|
||||
jsr PRINTYAP
|
||||
jmp PRINTFEXIT
|
||||
PRINTFT jsr PRINTTIME
|
||||
jmp PRINTFEXIT
|
||||
PRINTFTT jsr PRINTDATE
|
||||
jmp PRINTFEXIT
|
||||
jmp PrintFEXIT
|
||||
PrintFSC >PULLYA
|
||||
jsr PrintYA
|
||||
jmp PrintFEXIT
|
||||
PrintFSP >PULLYA
|
||||
jsr PrintYAP
|
||||
jmp PrintFEXIT
|
||||
PrintFT jsr PrintTIME
|
||||
jmp PrintFEXIT
|
||||
PrintFTT jsr PrintDATE
|
||||
jmp PrintFEXIT
|
||||
*--------------------------------------
|
||||
PRINTFESC lda #$1B ESC
|
||||
PrintFESC lda #$1B ESC
|
||||
jsr COUT
|
||||
jmp PRINTFEXIT
|
||||
PRINTFCR jsr CROUT
|
||||
jmp PRINTFEXIT
|
||||
PRINTFBKSLH lda #'\'
|
||||
jmp PrintFEXIT
|
||||
PrintFCR jsr CROUT
|
||||
jmp PrintFEXIT
|
||||
PrintFBKSLH lda #'\'
|
||||
jsr COUT
|
||||
jmp PRINTFEXIT
|
||||
PRINTFPERCENT lda #'%'
|
||||
jmp PrintFEXIT
|
||||
PrintFPERCENT lda #'%'
|
||||
jsr COUT
|
||||
jmp PRINTFEXIT
|
||||
jmp PrintFEXIT
|
||||
*--------------------------------------
|
||||
PRINTC >PULLW ZPTmpPtr2
|
||||
PrintC >PULLW ZPTmpPtr2
|
||||
ldy #0
|
||||
.1 lda (ZPTmpPtr2),y
|
||||
beq .8
|
||||
@ -275,7 +274,7 @@ PRINTC >PULLW ZPTmpPtr2
|
||||
bne .1
|
||||
.8 rts
|
||||
*--------------------------------------
|
||||
PRINTP >PULLW ZPTmpPtr2
|
||||
PrintP >PULLW ZPTmpPtr2
|
||||
ldy #0
|
||||
lda (ZPTmpPtr2),y
|
||||
tax
|
||||
@ -386,7 +385,7 @@ LCASEP phx
|
||||
* PULLW = DATE in ProDOS Format
|
||||
* A = year, Y = month/day
|
||||
*--------------------------------------
|
||||
PRINTDATE stz HEXBUF+1
|
||||
PrintDATE stz HEXBUF+1
|
||||
stz HEXBUF+2
|
||||
stz HEXBUF+3
|
||||
ldx #'0'
|
||||
@ -437,7 +436,7 @@ PRINTDATE stz HEXBUF+1
|
||||
* PULLW = TIME in ProDOS Format
|
||||
* A = hours, Y = minutes
|
||||
*--------------------------------------
|
||||
PRINTTIME stz HEXBUF+1
|
||||
PrintTIME stz HEXBUF+1
|
||||
stz HEXBUF+2
|
||||
stz HEXBUF+3
|
||||
ldx #'0'
|
||||
@ -553,11 +552,11 @@ SSCANF.IsDigit cmp #'0'
|
||||
*--------------------------------------
|
||||
********** PRIVATE FUNCTIONS **********
|
||||
*--------------------------------------
|
||||
* PRINTYAC :
|
||||
* PrintYAC :
|
||||
* Prints C-Style String
|
||||
* Y,A=Pointer to Sting, Last Byte 0
|
||||
*--------------------------------------
|
||||
PRINTYA >STYA ZPTmpPtr2
|
||||
PrintYA >STYA ZPTmpPtr2
|
||||
ldy #0
|
||||
.1 lda (ZPTmpPtr2),y
|
||||
beq .2
|
||||
@ -566,11 +565,11 @@ PRINTYA >STYA ZPTmpPtr2
|
||||
bne .1
|
||||
.2 rts
|
||||
*--------------------------------------
|
||||
* PRINTYAP :
|
||||
* PrintYAP :
|
||||
* Prints Pascal-Style String
|
||||
* Y,A=Pointer to Sting, LEN=1st Byte
|
||||
*--------------------------------------
|
||||
PRINTYAP phx
|
||||
PrintYAP phx
|
||||
>STYA ZPTmpPtr2
|
||||
ldy #0
|
||||
lda (ZPTmpPtr2),y
|
||||
@ -644,19 +643,19 @@ HEX2DEC phx
|
||||
lda PADLEN any Len format ?
|
||||
beq .5 no
|
||||
lda #10
|
||||
sec yes, print only digits starting at pos 10-padlen
|
||||
sec yes, Print only digits starting at pos 10-padlen
|
||||
sbc PADLEN
|
||||
.5 tax x=0 if no padlen, or x=10-padlen
|
||||
.6 lda ASCBUF,x
|
||||
cmp #'0' a zero?
|
||||
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'
|
||||
sty PADCHAR
|
||||
bra .8
|
||||
.7 cpx #9 last digit ?
|
||||
beq .8 print always
|
||||
ldy PADLEN no pad to fill, do not print 0
|
||||
beq .8 Print always
|
||||
ldy PADLEN no pad to fill, do not Print 0
|
||||
beq .9
|
||||
lda PADCHAR fill with PADCHAR
|
||||
.8 jsr COUT
|
||||
@ -768,11 +767,11 @@ COUT phx
|
||||
.9 rts
|
||||
*--------------------------------------
|
||||
CS.END
|
||||
PRINTFTBL1 .AS "abBdDLnNhHiIsStT"
|
||||
PRINTFTBL1.END
|
||||
PRINTFTBL2 .AS "en\%"
|
||||
PRINTFTBL2.END
|
||||
PRINTF.ATTRIB .AS "dnb+++wr"
|
||||
PrintFTBL1 .AS "abBdDLnNhHiIsStT"
|
||||
PrintFTBL1.END
|
||||
PrintFTBL2 .AS "en\%"
|
||||
PrintFTBL2.END
|
||||
PrintF.ATTRIB .AS "dnb+++wr"
|
||||
*--------------------------------------
|
||||
PADCHAR .BS 1
|
||||
PADLEN .BS 1
|
||||
|
@ -105,7 +105,7 @@ ARP.QUERY.I jsr ARP.FIND.BY.IP
|
||||
|
||||
lda ZPCachePtr
|
||||
clc
|
||||
adc S.ARPCACHE.MAC
|
||||
adc #S.ARPCACHE.MAC
|
||||
sta ZPCachePtr
|
||||
bcc .1
|
||||
inc ZPCachePtr+1
|
||||
@ -246,49 +246,49 @@ ARP.RESOLVE ldy #S.IP.DST
|
||||
lda ZPFrameBase1+1
|
||||
adc /S.ETH.DSTMAC
|
||||
sta ZPPtrMAC+1
|
||||
jmp ARP.QUERY.I
|
||||
*--------------------------------------
|
||||
ARP.FIND.BY.IP >LDYA L.ARP.CACHE
|
||||
>STYA ZPCachePtr
|
||||
|
||||
lda #K.ARPCACHE.SIZE
|
||||
sta TmpOffset
|
||||
ldx #K.ARPCACHE.SIZE
|
||||
|
||||
.1 lda (ZPCachePtr)
|
||||
beq .7
|
||||
beq .2
|
||||
|
||||
ldy #S.ARPCACHE.IP+3
|
||||
ldx #3
|
||||
ldy #S.ARPCACHE.IP
|
||||
lda (ZPCachePtr),y
|
||||
cmp (ZPPtrIP)
|
||||
bne .7
|
||||
bne .2
|
||||
|
||||
ldy #S.ARPCACHE.IP+1
|
||||
lda (ZPCachePtr),y
|
||||
ldy #1
|
||||
cmp (ZPPtrIP),y
|
||||
bne .7
|
||||
bne .2
|
||||
|
||||
ldy #S.ARPCACHE.IP+2
|
||||
lda (ZPCachePtr),y
|
||||
ldy #2
|
||||
cmp (ZPPtrIP),y
|
||||
bne .7
|
||||
bne .2
|
||||
|
||||
ldy #S.ARPCACHE.IP+3
|
||||
lda (ZPCachePtr),y
|
||||
ldy #3
|
||||
cmp (ZPPtrIP),y
|
||||
bne .7
|
||||
bne .2
|
||||
clc
|
||||
rts
|
||||
|
||||
.7 lda ZPCachePtr
|
||||
.2 lda ZPCachePtr
|
||||
clc
|
||||
adc #S.ARPCACHE
|
||||
sta ZPCachePtr
|
||||
bcc .8
|
||||
inc ZPCachePtr+1
|
||||
|
||||
.8 dec TmpOffset
|
||||
.8 dex
|
||||
bne .1
|
||||
sec
|
||||
rts
|
||||
|
@ -227,6 +227,48 @@ DNS.FIND.BY.NAME
|
||||
sec
|
||||
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
|
||||
>STYA ZPCachePtr
|
||||
|
||||
@ -339,11 +381,20 @@ DNS.DecodeMsg sta hFrame1
|
||||
>SYSCALL SYS.GetMemPtrA
|
||||
>STYA ZPFrameBase1
|
||||
|
||||
>DEBUG
|
||||
|
||||
ldy #S.DNS.F+1
|
||||
lda (ZPFrameBase1),y
|
||||
and /S.DNS.F.QR
|
||||
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
|
||||
lda (ZPFrameBase1),y
|
||||
beq .9
|
||||
@ -366,8 +417,37 @@ DNS.DecodeMsg sta hFrame1
|
||||
dex skip another QUERY ?
|
||||
bne .1
|
||||
|
||||
.3 iny skip high byte of offset
|
||||
iny skip lo byte of offset
|
||||
.3 iny Skip Pointer or labels....
|
||||
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
|
||||
>SYSCALL SYS.FreeMemA
|
||||
|
Loading…
x
Reference in New Issue
Block a user