diff --git a/A2OSX.BOOT.DSK b/A2OSX.BOOT.DSK index 912e37fe..8ee7eccd 100644 Binary files a/A2OSX.BOOT.DSK and b/A2OSX.BOOT.DSK differ diff --git a/A2OSX.SRC.po b/A2OSX.SRC.po index 734cf219..49fa4fbd 100644 Binary files a/A2OSX.SRC.po and b/A2OSX.SRC.po differ diff --git a/BIN/ARP.S.txt b/BIN/ARP.S.txt index 0800d4af..18fe8e06 100644 --- a/BIN/ARP.S.txt +++ b/BIN/ARP.S.txt @@ -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 diff --git a/BIN/DNSINFO.S.txt b/BIN/DNSINFO.S.txt index 80821913..9e526d81 100644 --- a/BIN/DNSINFO.S.txt +++ b/BIN/DNSINFO.S.txt @@ -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 diff --git a/LIB/LIBSTR.S.txt b/LIB/LIBSTR.S.txt index 6ee76a4a..7387efac 100644 --- a/LIB/LIBSTR.S.txt +++ b/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 diff --git a/LIB/LIBTCPIP.S.ARP.txt b/LIB/LIBTCPIP.S.ARP.txt index 18350c9d..71822bfc 100644 --- a/LIB/LIBTCPIP.S.ARP.txt +++ b/LIB/LIBTCPIP.S.ARP.txt @@ -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 diff --git a/LIB/LIBTCPIP.S.DNS.txt b/LIB/LIBTCPIP.S.DNS.txt index 6e9bb435..74f39244 100644 --- a/LIB/LIBTCPIP.S.DNS.txt +++ b/LIB/LIBTCPIP.S.DNS.txt @@ -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