PR#3 PREFIX /A2OSX.SRC NEW INC 1 AUTO 6 .LIST OFF .OP 65C02 .OR $2000 .TF /A2OSX.BOOT/BIN/DNSINFO *-------------------------------------- .INB INC/MACROS.I .INB INC/A2OSX.I .INB INC/LIBSTR.I .INB INC/LIBTCPIP.I *-------------------------------------- ZPPTR1 .EQ ZPBIN ZPPTR2 .EQ ZPBIN+2 *-------------------------------------- * File Header (16 Bytes) *-------------------------------------- CS.START cld jmp (.1,x) .DA #$61 6502,Level 1 (65c02) .DA #1 BIN Layout Version 1 .DA 0 .DA CS.END-CS.START Code Length To Relocate .DA 0 No Data Segment to Allocate .DA 0 .DA 0 *-------------------------------------- * Relocation Table *-------------------------------------- .1 .DA CS.INIT .DA CS.RUN .DA CS.EVENT .DA CS.QUIT L.LIBSTR .DA LIBSTR L.LIBTCPIP .DA LIBTCPIP 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 stz hIP >LDYA L.LIBSTR >SYSCALL SYS.LoadLibYA sta hLIBSTR >LDYA L.LIBTCPIP >SYSCALL SYS.LoadLibYA sta hLIBTCPIP ldy #S.PS.hARGS lda (pPs),y bne CS.INIT.ADD jmp CS.INIT.DUMP CS.INIT.ADD >PUSHA >PUSHBI $20 Push SEP=' ' >PUSHBI 1 Push 1 for getting hostname >SYSCALL SYS.PStrGetTkn bcs .91 sta hHostName ldy #S.PS.hARGS lda (pPs),y >PUSHA >PUSHBI $20 Push SEP=' ' >PUSHBI 2 Push 2 for getting IP >SYSCALL SYS.PStrGetTkn .91 bcs .9 sta hIP >PUSHW L.IP >PUSHW L.SSCANF.IP lda hIP >SYSCALL SYS.GetMemPtrA >PUSHYA >LIBCALL hLIBSTR,LIBSTR.SSCANF bcs .9 >PUSHW L.IP lda hHostName >SYSCALL SYS.GetMemPtrA >PUSHYA >LIBCALL hLIBTCPIP,LIBTCPIP.DNS.ADD bcs .99 lda #0 tell TSKMGR that all done ok, but sec we do not want to stay in memory rts .9 lda #SYSMGR.ERRSYN sec .99 rts CS.INIT.DUMP >LIBCALL hLIBTCPIP,LIBTCPIP.DNS.GETCACHE >STYA ZPPTR1 >PUSHW L.MSG0 >LIBCALL hLIBSTR,LIBSTR.PRINTF ldx #K.DNSCACHE.SIZE .1 phx 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 >PUSHA cpy #S.DNSCACHE.TTL bne .6 ldy #S.DNSCACHE.hNAME lda (ZPPTR1),y >SYSCALL SYS.GetMemPtrA >STYA ZPPTR2 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 >LIBCALL hLIBSTR,LIBSTR.PRINTF .2 lda ZPPTR1 clc adc #S.DNSCACHE sta ZPPTR1 bcc .3 inc ZPPTR1+1 .3 plx dex beq .8 jmp .1 .8 lda #0 tell TSKMGR that all done ok, but sec we do not want to stay in memory rts *-------------------------------------- CS.RUN CS.EVENT clc rts *-------------------------------------- CS.QUIT lda hHostName beq .1 >SYSCALL SYS.FreeMemA .1 lda hIP beq .2 >SYSCALL SYS.FreeMemA .2 lda hLIBTCPIP >SYSCALL SYS.UnloadLibA lda hLIBSTR >SYSCALL SYS.UnloadLibA clc rts *-------------------------------------- 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" hLIBSTR .BS 1 hLIBTCPIP .BS 1 hHostName .BS 1 hIP .BS 1 IP .BS 4 DNSNAME .BS K.DNS.MAXLEN+1 MAN SAVE BIN/DNSINFO.S ASM