PR#3 PREFIX /DATA/A2OSX NEW INC 1 AUTO 6 .LIST ON .OP 65C02 .OR $2000 .TF BIN/DNS *-------------------------------------- .INB INC/MACROS.I .INB INC/A2OSX.I .INB INC/KERNEL.I .INB INC/LIBSTR.I .INB INC/LIBTCPIP.I *-------------------------------------- ZPPTR1 .EQ ZPBIN *-------------------------------------- * Main entry point *-------------------------------------- * Code signature and INIT table *-------------------------------------- * CLD $D8 * JMP (*,x) $7C * #JMPTABLE * /JMPTABLE *-------------------------------------- CS.START cld jmp (.1,x) .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 .DA 0 .DA CS.END-CS.START Code Length To Relocate .DA DS.END-DS.START Data Segment to Allocate *-------------------------------------- CS.INIT stz hHostName stz hIP >LIBLOADP L.LIBSTR sta hLIBSTR >LIBLOADP L.LIBTCPIP sta hLIBTCPIP ldy #S.PS.hARGS lda (pPsContext),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 (pPsContext),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 >PUSHWI 1800 default TTL >PUSHW L.IP >PUSHB hHostName >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.IP+3 lda (ZPPTR1),y >PUSHA dey lda (ZPPTR1),y >PUSHA dey lda (ZPPTR1),y >PUSHA dey lda (ZPPTR1),y >PUSHA ldy #S.DNSCACHE.TTL lda (ZPPTR1),y pha iny lda (ZPPTR1),y ply >PUSHYA ldy #S.DNSCACHE.hNAME lda (ZPPTR1),y >SYSCALL SYS.GetMemPtrA >PUSHYA >PUSHB (ZPPTR1) >PUSHW L.MSG1 >LIBCALL hLIBSTR,LIBSTR.PRINTF .2 lda ZPPTR1 clc adc #S.DNSCACHE sta ZPPTR1 bcc .3 inc ZPPTR1+1 .3 plx dex bne .1 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 %05D %d.%d.%d.%d\n" DS.START hLIBSTR .BS 1 hLIBTCPIP .BS 1 hHostName .BS 1 hIP .BS 1 IP .BS 4 DS.END MAN SAVE BIN/DNS.S ASM