diff --git a/SBIN/DHCPCLNT.S.txt b/SBIN/DHCPCLNT.S.txt index 7ac8d1eb..9a6597da 100644 --- a/SBIN/DHCPCLNT.S.txt +++ b/SBIN/DHCPCLNT.S.txt @@ -53,13 +53,14 @@ CS.INIT >LDYA L.LIBTCPIP >STYA ZPPtr1 lda (ZPPtr1) - bmi .99 Already Configured, exit + and #S.IPCFG.STATUS.OK + bne .99 Already Configured, exit - ldy #S.IPCFG -.1 dey - lda (ZPPtr1),y + ldy #0 +.1 lda (ZPPtr1),y sta IPCFG,y - tya + iny + cpy #S.IPCFG bne .1 >LDYA A2OSX.TIMER16 @@ -72,12 +73,10 @@ CS.INIT >LDYA L.LIBTCPIP lda #0 sta IPCFG - ldy #S.IPCFG.MAC+5 ldx #5 -.2 lda IPCFG,y +.2 lda IPCFG+S.IPCFG.MAC,x sta FRAME.DISC.CHADDR,x sta FRAME.REQ.CHADDR,x - dey dex bpl .2 @@ -334,7 +333,7 @@ GetDHCPOption cmp #S.DHCP.OPTIONS.MASK .2 cmp #S.DHCP.OPTIONS.DNS bne .3 - ldy #S.IPCFG.DNS + ldy #S.IPCFG.DNS1 bra GetDHCPOption.CopyIP .3 cmp #S.DHCP.OPTIONS.DOMAIN diff --git a/SBIN/TCPIP.S.ARP.txt b/SBIN/TCPIP.S.ARP.txt deleted file mode 100644 index 3b3273ae..00000000 --- a/SBIN/TCPIP.S.ARP.txt +++ /dev/null @@ -1,99 +0,0 @@ -PR#3 -PREFIX /A2OSX.SRC -NEW -INC 1 -AUTO 6 - .LIST OFF -*-------------------------------------- -ARPListener jsr GetIPCFG - - ldy #S.ARP.TPA - ldx #S.IPCFG.IP - -.1 lda (ZPFrameBase1),y - cmp IPCFG,x - bne .9 - iny - inx - cpx #S.IPCFG.IP+4 - bne .1 - - ldy #S.ARP.OPERATION+1 HI byte - lda (ZPFrameBase1),y - cmp #S.ARP.OPERATION.REQ - beq ARPListener.REQ - - cmp #S.ARP.OPERATION.REP - beq ARPListener.REP - -.9 clc Discard any other ARP frames - rts - -ARPListener.REP >LDAXI S.ARP.SHA - jsr SetFramePtr1AX - >PUSHW ZPFramePtr1 - >LDAXI S.ARP.SPA - jsr SetFramePtr1AX - >PUSHW ZPFramePtr1 - >LIBCALL hLIBTCPIP,LIBTCPIP.ARP.ADD - clc -ARPListener.RTS rts - -ARPListener.REQ >LIBCALL hLIBTCPIP,LIBTCPIP.NEW.ARP.FRAME - bcs ARPListener.RTS - - phx - >STYA ZPFrameBase2 - ldy #S.ARP.OPERATION+1 - lda #S.ARP.OPERATION.REP - sta (ZPFrameBase2),y - - >LDAXI S.ARP.SHA - jsr SetFramePtr1AX - - >LDAXI S.ETH.DSTMAC - jsr SetFramePtr2AX - - ldy #6 - jsr CopyFramePtr12 - - >LDAXI S.ARP.THA - jsr SetFramePtr2AX - - ldy #10 IP(4) + MAC(6) - jsr CopyFramePtr12 - - >PUSHW ZPFramePtr1 still point to SHA - >LDAXI S.ARP.SPA - jsr SetFramePtr1AX - >PUSHW ZPFramePtr1 - >LIBCALL hLIBTCPIP,LIBTCPIP.ARP.ADD - - ldx #5 - ldy #S.ARP.SHA+5 -.4 lda IPCFG+S.IPCFG.MAC,x - sta (ZPFrameBase2),y - dey - dex - bpl .4 - - ldx #3 - ldy #S.ARP.SPA+3 -.5 lda IPCFG+S.IPCFG.IP,x - sta (ZPFrameBase2),y - dey - dex - bpl .5 - - >PUSHW ZPFrameBase2 - >LIBCALL hLIBTCPIP,LIBTCPIP.SEND.ARP.FRAME - - pla - >SYSCALL SYS.FreeMemA - clc - rts -*-------------------------------------- -MAN -SAVE SBIN/TCPIP.S.ARP -LOAD SBIN/TCPIP.S -ASM diff --git a/SBIN/TCPIP.S.CFG.txt b/SBIN/TCPIP.S.CFG.txt deleted file mode 100644 index b527ac52..00000000 --- a/SBIN/TCPIP.S.CFG.txt +++ /dev/null @@ -1,270 +0,0 @@ -PR#3 -PREFIX /A2OSX.SRC -NEW -INC 1 -AUTO 6 - .LIST OFF -*-------------------------------------- -CFG.Read >PUSHW L.HOSTNAME - >LDYA L.MSG.CFG - >SYSCALL SYS.PSTROutYA - - jsr CFG.Read.HOSTNAME - bcc .1 - >PUSHA - >LDYA L.MSG.CFG.KO - >SYSCALL SYS.PSTROutYA - bra .2 - -.1 >LDYA L.MSG.CFG.OK - >SYSCALL SYS.PSTROutYA - -.2 >PUSHW L.TCPIP.CONF - >LDYA L.MSG.CFG - >SYSCALL SYS.PSTROutYA - - jsr CFG.Read.TCPIP.CONF - bcc .3 - >PUSHA - >LDYA L.MSG.CFG.KO - >SYSCALL SYS.PSTROutYA - bra .4 -.3 >LDYA L.MSG.CFG.OK - >SYSCALL SYS.PSTROutYA -.4 rts -*-------------------------------------- -CFG.Read.HOSTNAME - clc - rts -*-------------------------------------- -CFG.Read.TCPIP.CONF - >LDYA L.TCPIP.CONF - >SYSCALL SYS.LoadFileYA - bcs .99 - stx CFG.hCfgFile - >STYA CFG.FileLen - txa - >SYSCALL SYS.GetMemPtrA - >STYA ZPIPCfgPtr - -.1 jsr CFG.GetLine - bcs .89 - - jsr CFG.GetKeyword - bcs .1 - - lda CFG.Keyword - bne .3 - - ldy TmpBuffer256 - - lda TmpBuffer256+1,y - cmp #35 DOMAIN too long!!! - bcs .1 - - sta IPCFG+S.IPCFG.DOMAIN - ldx #0 - -.2 lda TmpBuffer256+2,y - sta IPCFG+S.IPCFG.DOMAIN,x - beq .1 - inx - iny - bne .2 - bra .1 - -.3 jsr CFG.ScanIP - bcs .1 - - ldy CFG.Keyword - lda CFG.Keyword.Map,y - tax - ldy #0 - -.4 lda CFG.IP+1,y - sta IPCFG,x - inx - iny - cpy #4 - bne .4 - lda CFG.Keyword - cmp #1 - bne .1 - lda #S.IPCFG.STATUS.OK - sta IPCFG - bra .1 - -.89 lda CFG.hCfgFile - >SYSCALL SYS.FreeMemA - - clc - rts - - -.99 sec - rts -*-------------------------------------- -CFG.GetLine stz TmpBuffer256 - ldx #0 - ldy #0 - -.1 jsr CFG.GetChar - bne .2 end of file? - txa - bne .8 - sec - rts - -.2 cmp #$0D - beq .8 end of line - inx - sta TmpBuffer256,x - cmp #'=' - bne .3 - txa - dec - tay -.3 cpx #64 line too long ? - bne .1 - sec - rts - -.8 tya = found ? - beq .9 - - sta TmpBuffer256 - txa - sec - sbc TmpBuffer256 - sta TmpBuffer256+1,y - stz TmpBuffer256+1,x End with 0 for ScanIP - clc - rts - -.9 sec - rts -*-------------------------------------- -CFG.GetChar lda CFG.FileLen - bne .1 - lda CFG.FileLen+1 - beq .9 - dec CFG.FileLen+1 -.1 dec CFG.FileLen - lda (ZPIPCfgPtr) - inc ZPIPCfgPtr - bne .9 - inc ZPIPCfgPtr+1 NZ -.9 rts -*-------------------------------------- -CFG.GetKeyword stz CFG.Keyword - - ldx #0 - -.1 phx - ldy #0 - -.2 lda CFG.Keywords,x - cmp TmpBuffer256,y - bne .3 - cpy TmpBuffer256 - beq .4 - inx - iny - bne .2 - plx - sec - rts - -.3 inc CFG.Keyword - plx - txa - sec - adc CFG.Keywords,x - tax - lda CFG.Keywords,x - bne .1 - sec - rts - -.4 plx - clc - rts -*-------------------------------------- -CFG.ScanIP stz CFG.IP - - ldx TmpBuffer256 - -.1 ldy #0 -.11 lda TmpBuffer256+2,x - beq .3 - cmp #'0' - bcc .2 - cmp #'9'+1 - bcs .2 - cpy #3 - beq .9 - iny - sta CFG.StrBuf,y - inx - bra .11 - -.2 cmp #'.' - bne .9 - -.3 sty CFG.StrBuf - lda CFG.IP - cmp #4 - beq .9 - jsr CFG.Dec2Hex - bcs .9 - lda CFG.HexByte - inc CFG.IP - ldy CFG.IP - sta CFG.IP,y - inx - lda TmpBuffer256+1,x - bne .1 - clc - rts - -.9 sec - rts -*-------------------------------------- -CFG.Dec2Hex sec - ldy CFG.StrBuf - beq .9 - - lda CFG.StrBuf+1 - and #$0f - sta CFG.HexByte - - ldy #1 - -.1 cpy CFG.StrBuf - beq .8 - iny - lda CFG.HexByte - asl CFG.HexByte - bcs .9 - asl CFG.HexByte - bcs .9 - adc CFG.HexByte - bcs .9 - asl - bcs .9 - sta CFG.HexByte - lda CFG.StrBuf,y - and #$0f - adc CFG.HexByte - sta CFG.HexByte - bcc .1 -.9 rts - -.8 clc - rts -*-------------------------------------- - -MAN -SAVE SBIN/TCPIP.S.CFG -LOAD SBIN/TCPIP.S -ASM diff --git a/SBIN/TCPIP.S.DNS.txt b/SBIN/TCPIP.S.DNS.txt deleted file mode 100644 index 34041191..00000000 --- a/SBIN/TCPIP.S.DNS.txt +++ /dev/null @@ -1,50 +0,0 @@ -PR#3 -PREFIX /A2OSX.SRC -NEW -INC 1 -AUTO 6 - .LIST OFF -*-------------------------------------- -DNSListener ldy #S.DNS.F+1 - lda (ZPFrameBase1),y - and /S.DNS.F.QR - beq .9 - - ldy #S.DNS.ANCOUNT+1 - lda (ZPFrameBase1),y - beq .9 - - ldy #S.DNS.QDCOUNT+1 - lda (ZPFrameBase1),y - tax - beq .3 no QUERY to skip - - ldy #S.DNS Read query - -.1 lda (ZPFrameBase1),y - beq .2 - iny - bne .1 -.2 tya - clc - adc #4 Skip QTYPE & QCLASS - tay - dex skip another QUERY ? - bne .1 - -.3 iny skip high byte of offset - iny skip lo byte of offset - - clc - rts - -.9 sec - rts - -*-------------------------------------- - -*-------------------------------------- -MAN -SAVE SBIN/TCPIP.S.DNS -LOAD SBIN/TCPIP.S -ASM diff --git a/SBIN/TCPIP.S.ICMP.txt b/SBIN/TCPIP.S.ICMP.txt deleted file mode 100644 index d9d92623..00000000 --- a/SBIN/TCPIP.S.ICMP.txt +++ /dev/null @@ -1,58 +0,0 @@ -PR#3 -PREFIX /A2OSX.SRC -NEW -INC 1 -AUTO 6 - .LIST OFF -*-------------------------------------- -ICMPListener ldy #S.ICMP.TYPE - lda (ZPFrameBase1),y - cmp #S.ICMP.TYPE.ECHOREQ - bne .9 - - jsr GetIPCFG - - ldy #S.IP.DST - ldx #S.IPCFG.IP -.10 lda (ZPFrameBase1),y - cmp IPCFG,x - bne .9 - iny - inx - cpx #S.IPCFG.IP+4 - bne .10 - - >LIBCALL hLIBTCPIP,LIBTCPIP.NEW.ICMP.FRAME - bcs .9 - phx - >STYA ZPFrameBase2 - ldy #S.ICMP.TYPE - lda #S.ICMP.TYPE.ECHOREP - sta (ZPFrameBase2),y - jsr MakeIPReply - - ldy #S.ICMP.IDENTIFIER -.1 lda (ZPFrameBase1),y - sta (ZPFrameBase2),y - iny - cpy #ZPFrameLen1 - bne .1 - - >PUSHW ZPFrameLen1 - >PUSHW ZPFrameBase2 - >LIBCALL hLIBTCPIP,LIBTCPIP.SEND.ICMP.FRAME - - pla - >SYSCALL SYS.FreeMemA - clc - rts -.9 sec - rts - -*-------------------------------------- - -*-------------------------------------- -MAN -SAVE SBIN/TCPIP.S.ICMP -LOAD SBIN/TCPIP.S -ASM diff --git a/SBIN/TCPIP.S.txt b/SBIN/TCPIP.S.txt index 06d50148..3e35e005 100644 --- a/SBIN/TCPIP.S.txt +++ b/SBIN/TCPIP.S.txt @@ -15,9 +15,6 @@ AUTO 6 ZPFrameBase1 .EQ ZPBIN ZPFrameLen1 .EQ ZPBIN+2 ZPFramePtr1 .EQ ZPBIN+4 -ZPFrameBase2 .EQ ZPBIN+6 -ZPFrameLen2 .EQ ZPBIN+8 -ZPFramePtr2 .EQ ZPBIN+10 ZPIPCfgPtr .EQ ZPBIN+12 ZPIPDevPtr .EQ ZPBIN+14 *-------------------------------------- @@ -40,12 +37,15 @@ CS.START cld .DA CS.DOEVENT .DA CS.QUIT L.LIBTCPIP .DA LIBTCPIP -L.MSG.HELP .DA MSG.HELP +L.DEVNAME .DA DEVNAME +L.MSG.DEV.KO .DA MSG.DEV.KO +L.MSG.DEV.OK .DA MSG.DEV.OK L.MSG.CFG .DA MSG.CFG L.MSG.CFG.KO .DA MSG.CFG.KO L.MSG.CFG.OK .DA MSG.CFG.OK L.HOSTNAME .DA HOSTNAME L.TCPIP.CONF .DA TCPIP.CONF +L.HOSTS .DA HOSTS L.IPCFG .DA IPCFG .DA 0 *-------------------------------------- @@ -54,36 +54,42 @@ CS.INIT >LDYA L.LIBTCPIP bcs .99 sta hLIBTCPIP - ldy #S.PS.hARGS - lda (pPs),y - bne .1 - >LDYA L.MSG.HELP - >SYSCALL SYS.PSTROutYA - lda #0 - sec - rts - -.1 jsr CS.INIT.DEV + jsr CS.INIT.DEV bcs .99 jsr CFG.Read continue even if error opening CFG file - ldx #S.IPCFG.HOSTNAME - lda IPCFG,x - bne .3 + lda IPCFG+S.IPCFG.HOSTNAME + bne .4 ldy #0 .2 lda DefaultHostName,y - sta IPCFG,x beq .3 - inx + sta IPCFG+S.IPCFG.HOSTNAME,y iny bne .2 -.3 >PUSHW L.IPCFG - >PUSHBI K.PROTOID.IP - >SYSCALL SYS.AddNetCfg - bcs .99 +.3 lda A2osX.TIMER16 + jsr A2CharAX + sta IPCFG+S.IPCFG.HOSTNAME,y + iny + txa + sta IPCFG+S.IPCFG.HOSTNAME,y + iny + + lda A2osX.TIMER16+1 + jsr A2CharAX + sta IPCFG+S.IPCFG.HOSTNAME,y + iny + txa + sta IPCFG+S.IPCFG.HOSTNAME,y + iny + + lda #0 + sta IPCFG+S.IPCFG.HOSTNAME,y + +.4 >PUSHW L.IPCFG + >LIBCALL hLIBTCPIP,LIBTCPIP.SET.IPCFG lda (pPs) ora #S.PS.F.EVENT Now accept events @@ -92,29 +98,36 @@ CS.INIT >LDYA L.LIBTCPIP clc .99 rts *-------------------------------------- -CS.INIT.DEV ldy #S.PS.hARGS - lda (pPs),y - >PUSHA - >PUSHBI $20 Push SEP=' ' - >PUSHBI 1 Push 1 for getting DEV - >SYSCALL SYS.PStrGetTkn - bcs .99 - sta hDEVNAME save DevName for discard - >SYSCALL SYS.GetDevByNameA - bcs .98 - >STYA pNetDevJmp+1 +CS.INIT.DEV >LDYA L.DEVNAME + >SYSCALL SYS.GetDevByNameYA + bcc .1 + inc DEVNAME+4 + lda DEVNAME+4 + cmp #'8' + bne CS.INIT.DEV + + >LDYA L.MSG.DEV.KO + >SYSCALL SYS.PSTROutYA + lda #DEVMGR.ERRDNF + sec + rts + +.1 >STYA pNetDevJmp+1 txa sta hNetDev - ldx #S.IPCFG.HDEV - sta IPCFG,x + sta IPCFG+S.IPCFG.HDEV + + >PUSHW L.DEVNAME + >LDYA L.MSG.DEV.OK + >SYSCALL SYS.PSTROutYA ldx #DEVMGR.OPEN jsr pNetDevJmp - bcs .98 + bcs .9 ldx #DEVMGR.GETINFO jsr pNetDevJmp - bcs .98 + bcs .9 >STYA ZPIPDevPtr ldy #1 @@ -124,22 +137,17 @@ CS.INIT.DEV ldy #S.PS.hARGS iny ldx #S.IPCFG.MAC -.1 lda (ZPIPDevPtr),y +.2 lda (ZPIPDevPtr),y sta IPCFG,x iny inx cpx #S.IPCFG.MAC+6 - bne .1 + bne .2 - jsr .98 clc rts - -.98 pha - lda hDEVNAME - >SYSCALL SYS.FreeMemA - pla -.99 sec + +.9 sec rts *-------------------------------------- CS.RUN clc @@ -152,11 +160,9 @@ CS.DOEVENT lda (pEvent) ldy #S.EVT.hDEV lda (pEvent),y cmp hNetDev - beq CS.DOEVENT.NET -.9 sec - rts + bne .9 -CS.DOEVENT.NET ldy #S.EVT.DATALO Get Frame hMem + ldy #S.EVT.DATALO Get Frame hMem lda (pEvent),y >SYSCALL SYS.GetMemPtrA >STYA ZPFrameBase1 @@ -178,149 +184,382 @@ CS.DOEVENT.NET ldy #S.EVT.DATALO Get Frame hMem bne .1 cpx /S.ETH.ETHERTYPE.ARP bne .1 - jsr ARPListener - bcc .89 + + >PUSHW ZPFrameLen1 + >PUSHW ZPFrameBase1 + >LIBCALL hLIBTCPIP,LIBTCPIP.ARP.IN rts .1 cmp #S.ETH.ETHERTYPE.IP - bne .99 + bne .9 cpx /S.ETH.ETHERTYPE.IP - bne .99 + bne .9 - ldy #S.IP.PROTOCOL - lda (ZPFrameBase1),y - cmp #S.IP.PROTOCOL.ICMP - bne .2 - jsr ICMPListener - bcc .89 - rts - -.2 cmp #S.IP.PROTOCOL.UDP - bne .21 - - ldy #S.UDP.DSTPORT - lda /UDP.PORT.DNS - cmp (ZPFrameBase1),y - bne .3 - iny - lda #UDP.PORT.DNS - cmp (ZPFrameBase1),y - bne .3 - - jsr DNSListener - bcc .89 - rts - -.21 >PUSHW ZPFrameLen1 - >PUSHW ZPFrameBase1 - >LIBCALL hLIBTCPIP,LIBTCPIP.UDP.LISTENER - bcc .89 - rts - -.3 cmp #S.IP.PROTOCOL.TCP - bne .99 >PUSHW ZPFrameLen1 >PUSHW ZPFrameBase1 - >LIBCALL hLIBTCPIP,LIBTCPIP.TCP.LISTENER - bcc .89 + >LIBCALL hLIBTCPIP,LIBTCPIP.IP.IN rts -.89 clc - rts - -.99 sec +.9 sec rts *-------------------------------------- -CS.QUIT ldx #DEVMGR.CLOSE +CS.QUIT lda IPCFG+S.IPCFG.HDEV + beq .1 + ldx #DEVMGR.CLOSE jsr pNetDevJmp - lda hLIBTCPIP +.1 lda hLIBTCPIP >SYSCALL SYS.UnloadLibA clc rts *-------------------------------------- +CFG.Read >PUSHW L.HOSTNAME + >LDYA L.MSG.CFG + >SYSCALL SYS.PSTROutYA + + jsr CFG.Read.HOSTNAME + bcc .1 + >PUSHA + >LDYA L.MSG.CFG.KO + >SYSCALL SYS.PSTROutYA + bra .2 +.1 >LDYA L.MSG.CFG.OK + >SYSCALL SYS.PSTROutYA + +.2 >PUSHW L.TCPIP.CONF + >LDYA L.MSG.CFG + >SYSCALL SYS.PSTROutYA + + jsr CFG.Read.TCPIP.CONF + bcc .3 + >PUSHA + >LDYA L.MSG.CFG.KO + >SYSCALL SYS.PSTROutYA + bra .4 +.3 >LDYA L.MSG.CFG.OK + >SYSCALL SYS.PSTROutYA + +.4 >PUSHW L.HOSTS + >LDYA L.MSG.CFG + >SYSCALL SYS.PSTROutYA + + jsr CFG.Read.HOSTS + bcc .5 + >PUSHA + >LDYA L.MSG.CFG.KO + >SYSCALL SYS.PSTROutYA + bra .6 +.5 >LDYA L.MSG.CFG.OK + >SYSCALL SYS.PSTROutYA +.6 rts *-------------------------------------- -*-------------------------------------- -*-------------------------------------- -GetIPCFG >LIBCALL hLIBTCPIP,LIBTCPIP.GET.IPCFG +CFG.Read.HOSTNAME + >LDYA L.HOSTNAME + >SYSCALL SYS.LoadFileYA + bcs .99 + stx CFG.hCfgFile + >STYA CFG.FileLen + + txa + >SYSCALL SYS.GetMemPtrA >STYA ZPIPCfgPtr - ldy #S.IPCFG + lda CFG.FileLen+1 + bne .2 + ldy CFG.FileLen + beq .2 + cpy #15 + bcs .2 + + sta IPCFG+S.IPCFG.HOSTNAME,y + .1 dey + bmi .89 lda (ZPIPCfgPtr),y - sta IPCFG,y - tya + sta IPCFG+S.IPCFG.HOSTNAME,y + bra .1 + +.2 jsr .89 + sec + rts + +.89 lda CFG.hCfgFile + >SYSCALL SYS.FreeMemA + + clc +.99 rts +*-------------------------------------- +CFG.Read.TCPIP.CONF + >LDYA L.TCPIP.CONF + >SYSCALL SYS.LoadFileYA + bcs .99 + stx CFG.hCfgFile + >STYA CFG.FileLen + txa + >SYSCALL SYS.GetMemPtrA + >STYA ZPIPCfgPtr + +.1 jsr CFG.GetLine + bcs .89 + + jsr CFG.GetKeyword + bcs .1 + + lda CFG.Keyword + bne .3 + + ldy TmpBuffer256 + + lda TmpBuffer256+1,y + cmp #35 DOMAIN too long!!! + bcs .1 + + sta IPCFG+S.IPCFG.DOMAIN + ldx #0 + +.2 lda TmpBuffer256+2,y + sta IPCFG+S.IPCFG.DOMAIN,x + beq .1 + inx + iny + bne .2 + bra .1 + +.3 jsr CFG.ScanIP + bcs .1 + + ldy CFG.Keyword + lda CFG.Keyword.Map,y + tax + ldy #0 + +.4 lda CFG.IP+1,y + sta IPCFG,x + inx + iny + cpy #4 + bne .4 + lda CFG.Keyword + cmp #1 bne .1 - rts -*-------------------------------------- -MakeIPReply >LDAXI S.IP.SRC - jsr SetFramePtr1AX - >LDAXI S.IP.DST - jsr SetFramePtr2AX - ldy #4 - jsr CopyFramePtr12 + lda #S.IPCFG.STATUS.OK + sta IPCFG + bra .1 - >LDAXI S.IP.DST - jsr SetFramePtr1AX - >LDAXI S.IP.SRC - jsr SetFramePtr2AX - ldy #4 - jsr CopyFramePtr12 +.89 lda CFG.hCfgFile + >SYSCALL SYS.FreeMemA - >LDAXI S.ETH.SRCMAC - jsr SetFramePtr1AX - >LDAXI S.ETH.DSTMAC - jsr SetFramePtr2AX - ldy #6 - jsr CopyFramePtr12 - rts + clc +.99 rts *-------------------------------------- -* A,X = Frame PTR -*-------------------------------------- -SetFramePtr1AX clc - adc ZPFrameBase1 - sta ZPFramePtr1 +CFG.Read.HOSTS >LDYA L.HOSTS + >SYSCALL SYS.LoadFileYA + bcs .99 + stx CFG.hCfgFile + >STYA CFG.FileLen + txa - adc ZPFrameBase1+1 - sta ZPFramePtr1+1 - rts + >SYSCALL SYS.GetMemPtrA + >STYA ZPIPCfgPtr + +.89 lda CFG.hCfgFile + >SYSCALL SYS.FreeMemA + clc +.99 rts *-------------------------------------- -* A,X = Frame PTR -*-------------------------------------- -SetFramePtr2AX clc - adc ZPFrameBase2 - sta ZPFramePtr2 +CFG.GetLine stz TmpBuffer256 + ldx #0 + ldy #0 + +.1 jsr CFG.GetChar + bne .2 end of file? txa - adc ZPFrameBase2+1 - sta ZPFramePtr2+1 + bne .8 + sec + rts + +.2 cmp #$0D + beq .8 end of line + inx + sta TmpBuffer256,x + cmp #'=' + bne .3 + txa + dec + tay +.3 cpx #64 line too long ? + bne .1 + sec + rts + +.8 tya = found ? + beq .9 + + sta TmpBuffer256 + txa + sec + sbc TmpBuffer256 + sta TmpBuffer256+1,y + stz TmpBuffer256+1,x End with 0 for ScanIP + clc + rts + +.9 sec + rts +*-------------------------------------- +CFG.GetChar lda CFG.FileLen + bne .1 + lda CFG.FileLen+1 + beq .9 + dec CFG.FileLen+1 +.1 dec CFG.FileLen + lda (ZPIPCfgPtr) + inc ZPIPCfgPtr + bne .9 + inc ZPIPCfgPtr+1 NZ +.9 rts +*-------------------------------------- +CFG.GetKeyword stz CFG.Keyword + + ldx #0 + +.1 phx + ldy #0 + +.2 lda CFG.Keywords,x + cmp TmpBuffer256,y + bne .3 + cpy TmpBuffer256 + beq .4 + inx + iny + bne .2 + plx + sec + rts + +.3 inc CFG.Keyword + plx + txa + sec + adc CFG.Keywords,x + tax + lda CFG.Keywords,x + bne .1 + sec + rts + +.4 plx + clc rts *-------------------------------------- -* Y = bytes to copy from ZPFramePtr1 to ZPFramePtr2 -*-------------------------------------- -CopyFramePtr12 dey - lda (ZPFramePtr1),y - sta (ZPFramePtr2),y - tya - bne CopyFramePtr12 +CFG.ScanIP stz CFG.IP + + ldx TmpBuffer256 + +.1 ldy #0 +.11 lda TmpBuffer256+2,x + beq .3 + cmp #'0' + bcc .2 + cmp #'9'+1 + bcs .2 + cpy #3 + beq .9 + iny + sta CFG.StrBuf,y + inx + bra .11 + +.2 cmp #'.' + bne .9 + +.3 sty CFG.StrBuf + lda CFG.IP + cmp #4 + beq .9 + jsr CFG.Dec2Hex + bcs .9 + lda CFG.HexByte + inc CFG.IP + ldy CFG.IP + sta CFG.IP,y + inx + lda TmpBuffer256+1,x + bne .1 + clc rts + +.9 sec + rts +*-------------------------------------- +CFG.Dec2Hex sec + ldy CFG.StrBuf + beq .9 + + lda CFG.StrBuf+1 + and #$0f + sta CFG.HexByte + + ldy #1 + +.1 cpy CFG.StrBuf + beq .8 + iny + lda CFG.HexByte + asl CFG.HexByte + bcs .9 + asl CFG.HexByte + bcs .9 + adc CFG.HexByte + bcs .9 + asl + bcs .9 + sta CFG.HexByte + lda CFG.StrBuf,y + and #$0f + adc CFG.HexByte + sta CFG.HexByte + bcc .1 +.9 rts + +.8 clc + rts +*-------------------------------------- +A2CharAX pha + lsr + lsr + lsr + lsr + and #$0F + ora #$30 + cmp #'9'+1 + bcc .1 + adc #6 +.1 tax + pla + and #$0F + ora #$30 + cmp #'9'+1 + bcc .8 + adc #6 +.8 rts *-------------------------------------- pNetDevJmp jmp * -*-------------------------------------- - .INB SBIN/TCPIP.S.CFG - .INB SBIN/TCPIP.S.ARP - .INB SBIN/TCPIP.S.DNS - .INB SBIN/TCPIP.S.ICMP *-------------------------------------- CS.END *-------------------------------------- LIBTCPIP >PSTRING "libtcpip.o" -MSG.HELP >PSTRING "Usage: TCPIP ETHx\n" +DEVNAME >PSTRING "ETH1" +MSG.DEV.KO >PSTRING "TCPIP:No Device Found, exiting.\n" +MSG.DEV.OK >PSTRING "TCPIP:Bound To Device : %S\n" MSG.CFG >PSTRING "TCPIP:Reading %S..." MSG.CFG.KO >PSTRING "Failed!!! [%h]\n" MSG.CFG.OK >PSTRING "OK.\n" HOSTNAME >PSTRING "${A2OSX}ETC/HOSTNAME" TCPIP.CONF >PSTRING "${A2OSX}ETC/TCPIP.CONF" -DefaultHostName >CSTRING "a2osx-host" +HOSTS >PSTRING "${A2OSX}ETC/HOSTS" +DefaultHostName >CSTRING "a2osx-" CFG.Keywords >PSTRING "DOMAIN" >PSTRING "IP" >PSTRING "MASK" @@ -331,13 +570,12 @@ CFG.Keyword.Map .DA #0 End Of Keyword table and NA Keyword .DA #S.IPCFG.IP .DA #S.IPCFG.MASK .DA #S.IPCFG.GW - .DA #S.IPCFG.DNS - .DA #S.IPCFG.DNS+4 + .DA #S.IPCFG.DNS1 + .DA #S.IPCFG.DNS2 hLIBTCPIP .BS 1 -hDEVNAME .BS 1 hNetDev .BS 1 DEVFLAGS .BS 1 -IPCFG .BS S.IPCFG Get in cache for faster access with ,X +IPCFG .BS S.IPCFG CFG.hCfgFile .BS 1 CFG.FileLen .BS 2 CFG.Keyword .BS 1 diff --git a/SBIN/TELNETD.S.txt b/SBIN/TELNETD.S.txt index d65da292..ac547a91 100644 --- a/SBIN/TELNETD.S.txt +++ b/SBIN/TELNETD.S.txt @@ -41,15 +41,15 @@ CS.INIT >LDYA L.LIBTCPIP >PUSHWI S.IP.PROTOCOL.TCP >PUSHWI TCP.PORT.TELNETS - >LIBCALL hLIBTCPIP,LIBTCPIP.CreateSocket + >LIBCALL hLIBTCPIP,LIBTCPIP.NewSrvSocket bcs .99 sta hSrvSocket clc .99 rts *-------------------------------------- -CS.RUN lda hSrvSocket - >LIBCALL hLIBTCPIP,LIBTCPIP.ListenSocket +CS.RUN >PUSHB hSrvSocket + >LIBCALL hLIBTCPIP,LIBTCPIP.SrvSocketAccept bcs .8 >LIBCALL hLIBTCPIP,LIBTCPIP.CreateDevice @@ -64,7 +64,7 @@ CS.DOEVENT clc rts *-------------------------------------- CS.QUIT >PUSHB hSrvSocket - >LIBCALL hLIBTCPIP,LIBTCPIP.DestroySocket + >LIBCALL hLIBTCPIP,LIBTCPIP.CloseSocket lda hLIBTCPIP