From ad58d078229a543d2a25f4508635e9f9640c2c62 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C3=A9my=20GIBERT?= Date: Thu, 6 Dec 2018 17:39:53 +0100 Subject: [PATCH] Kernel 0.92 --- .Floppies/A2OSX.BUILD.po | Bin 33553920 -> 33553920 bytes BIN/HTTPGET.S.txt | 1 + BIN/IPCONFIG.S.DEV.txt | 37 +++ BIN/IPCONFIG.S.DHCP.txt | 495 ++++++++++++++++++++++++++++++++++++++ BIN/IPCONFIG.S.ETC.txt | 505 +++++++++++++++++++++++++++++++++++++++ BIN/IPCONFIG.S.txt | 108 ++++++++- LIB/LIBTCPIP.S.txt | 45 +--- 7 files changed, 1145 insertions(+), 46 deletions(-) create mode 100644 BIN/IPCONFIG.S.DEV.txt create mode 100644 BIN/IPCONFIG.S.DHCP.txt create mode 100644 BIN/IPCONFIG.S.ETC.txt diff --git a/.Floppies/A2OSX.BUILD.po b/.Floppies/A2OSX.BUILD.po index 8a18438fc0cd0e24ce2536ef9e260a5ce538ecd5..5290af86584e63d47075b3383eff2129df56aa5f 100644 GIT binary patch delta 24750 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 0 + >LDYA L.DEVNAME + >SYSCALL open + bcc .1 + inc DEVNAME+8 + lda DEVNAME+8 + cmp #'8' + bne DEV.Bind + + >LDYA L.MSG.DEV.KO + >SYSCALL puts + + lda #MLI.E.NODEV + sec + rts + +.1 sta IPCFG+S.IPCFG.hFD + + >PUSHW L.DEVNAME + >PUSHBI 2 + >LDYA L.MSG.DEV.OK + >SYSCALL printf + + clc + rts +*-------------------------------------- +MAN +SAVE USR/SRC/SBIN/IPCONFIG.S.DEV +LOAD USR/SRC/SBIN/IPCONFIG.S +ASM diff --git a/BIN/IPCONFIG.S.DHCP.txt b/BIN/IPCONFIG.S.DHCP.txt new file mode 100644 index 00000000..c63dc363 --- /dev/null +++ b/BIN/IPCONFIG.S.DHCP.txt @@ -0,0 +1,495 @@ +NEW +PREFIX +AUTO 4,1 + .LIST OFF +*-------------------------------------- +* Relocation Table +*-------------------------------------- +.1 .DA CS.INIT + .DA CS.RUN + .DA CS.DOEVENT + .DA CS.QUIT +L.LIBTCPIP .DA LIBTCPIP +L.IPCFG .DA IPCFG +L.SA.LOCAL .DA SA.LOCAL +L.SA.REMOTE .DA SA.REMOTE +L.MSG.CFG1 .DA MSG.CFG1 +L.MSG.CFG2 .DA MSG.CFG2 +L.MSG.CFG.KO .DA MSG.CFG.KO +L.MSG.CFG.OK .DA MSG.CFG.OK +L.MSG.CFG.ND .DA MSG.CFG.ND +L.MSG.CFG.NA .DA MSG.CFG.NA +L.DHCP.DISC .DA DHCP.DISC +L.DHCP.REQ .DA DHCP.REQ + .DA 0 +*-------------------------------------- +CS.INIT >LDYA L.LIBTCPIP + >SYSCALL LoadLib + bcs .9 + sta hLIBTCPIP + + >LIBCALL hLIBTCPIP,LIBTCPIP.GET.IPCFG + bcs .9 + + >STYA ZPIPCfgPtr + + lda (ZPIPCfgPtr) + and #S.IPCFG.STATUS.OK + bne .99 Already Configured, exit + + ldy #S.IPCFG.hFD + lda (ZPIPCfgPtr),y + beq .98 + + ldy #S.IPCFG-1 + +.1 lda (ZPIPCfgPtr),y + sta IPCFG,y + dey + bne .1 + + stz IPCFG+S.IPCFG.STATUS + + ldx #3 + +.11 lda A2osX.TIMER16,x + sta DHCP.DISC.XID,x + sta DHCP.REQ.XID,x + dex + bpl .11 + + ldx #5 + +.2 lda IPCFG+S.IPCFG.MAC,x + sta DHCP.DISC.CHADDR,x + sta DHCP.REQ.CHADDR,x + dex + bpl .2 + + clc +.9 rts + +.98 >LDYA L.MSG.CFG.ND + bra .90 +.99 >LDYA L.MSG.CFG.NA + +.90 >SYSCALL puts + lda #0 + sec + rts +*-------------------------------------- +CS.RUN >PUSHBI 0 no protocol + lda #S.SOCKET.T.DGRAM + >LIBCALL hLIBTCPIP,LIBTCPIP.Socket + bcc .1 +.9 jmp CS.RUN.KO + +.1 >STA.G hSocket + pha + >PUSHW L.SA.LOCAL + pla + >LIBCALL hLIBTCPIP,LIBTCPIP.Bind + bcs .9 + + >PUSHWI S.SOCKET.O.BROADCAST + >LDA.G hSocket + >LIBCALL hLIBTCPIP,LIBTCPIP.setsockopt + + >PUSHW L.SA.REMOTE + >LDA.G hSocket + >LIBCALL hLIBTCPIP,LIBTCPIP.Connect + bcs .9 + + >LDYA L.MSG.CFG1 + >SYSCALL puts + + jsr Init.Timeout + +CS.RUN.SDISC >PUSHWI DHCP.DISC.LEN + >PUSHW L.DHCP.DISC + >LDA.G hSocket + + >LIBCALL hLIBTCPIP,LIBTCPIP.Send + bcc .1 + jmp CS.RUN.KO + +.1 lda #S.IPCFG.STATUS.SDISC + sta IPCFG + +CS.RUN.ROFFER >SLEEP + + jsr CS.RUN.SKT.RCVD + bcc .1 + jsr Wait.Timeout + bne CS.RUN.ROFFER + + lda #1 + jmp CS.RUN.KO + +.1 jsr CheckDHCPOffer + + bcs CS.RUN.ROFFER + + lda #S.IPCFG.STATUS.ROFFER + sta IPCFG + +CS.RUN.SREQ ldx #3 + +.1 >PUSHB IPCFG+S.IPCFG.DHCPSRVR,x + dex + bpl .1 + + >PUSHBI 4 + >LDYA L.MSG.CFG2 + >SYSCALL printf + + >PUSHWI DHCP.REQ.LEN + >PUSHW L.DHCP.REQ + >LDA.G hSocket + >LIBCALL hLIBTCPIP,LIBTCPIP.Send + bcs CS.RUN.KO + + lda #S.IPCFG.STATUS.SREQ + sta IPCFG + +CS.RUN.RACK >SLEEP + + jsr CS.RUN.SKT.RCVD + bcc .1 + jsr Wait.Timeout + bne CS.RUN.RACK + lda #2 + bra CS.RUN.KO + +.1 jsr CheckDHCPAck + bcs CS.RUN.RACK + +CS.RUN.OK lda #S.IPCFG.STATUS.OK + sta IPCFG + + >PUSHW L.IPCFG + >LIBCALL hLIBTCPIP,LIBTCPIP.SET.IPCFG + + ldx #3 +.1 lda IPCFG+S.IPCFG.MASK,x + >PUSHA + dex + bpl .1 + + ldx #3 +.2 lda IPCFG+S.IPCFG.IP,x + >PUSHA + dex + bpl .2 + + >PUSHBI 8 + >LDYA L.MSG.CFG.OK + >SYSCALL printf + lda #0 Leave with NO ERROR + sec + rts + +CS.RUN.KO pha + >PUSHA + >PUSHBI 1 + >LDYA L.MSG.CFG.KO + >SYSCALL printf + pla + sec + rts +*-------------------------------------- +CS.RUN.SKT.RCVD >LDA.G hSocket + >LIBCALL hLIBTCPIP,LIBTCPIP.Recv + bcs .9 + >STA.G hFrame + + >SYSCALL GetMemPtr + >STYA ZPFrameBase +.9 rts +*-------------------------------------- +CS.DOEVENT lda (pEvent) + bpl .9 is it a TIMER event? + + ldy #TimeOut + lda (pData),y + beq .9 + + dec + sta (pData),y + +.9 sec do not discard TIMER event + rts +*-------------------------------------- +CS.QUIT >LDA.G hSocket + beq .1 + + >LIBCALL hLIBTCPIP,LIBTCPIP.Shutdown + +.1 lda hLIBTCPIP + beq .8 + >SYSCALL UnloadLib + +.8 clc + rts +*-------------------------------------- +CheckDHCPOffer jsr CheckDHCPXID + bcs .9 + + lda ZPFrameBase + clc + adc #S.DHCP.OPTIONS + sta ZPFramePtr + + lda ZPFrameBase+1 + adc /S.DHCP.OPTIONS + sta ZPFramePtr+1 + + lda (ZPFramePtr) + cmp #S.DHCP.OPTIONS.MSGTYPE + bne .9 + + ldy #2 + lda (ZPFramePtr),y + cmp #S.DHCP.OPTIONS.DHCPOffer + bne .9 + + ldy #S.DHCP.GIADDR+3 + ldx #3 + +.1 lda (ZPFrameBase),y + sta DHCP.REQ.GIADDR,x + dey + dex + bpl .1 + + ldy #S.DHCP.YIADDR+3 + ldx #3 + +.2 lda (ZPFrameBase),y + sta DHCP.REQ.OPT.REQIP,x + sta IPCFG+S.IPCFG.IP,x + dey + dex + bpl .2 + + ldy #S.IP.SRC+3 + ldx #3 + +.3 lda (ZPFrameBase),y + sta DHCP.REQ.OPT.SVRIP,x + sta IPCFG+S.IPCFG.DHCPSRVR,x + dey + dex + bpl .3 + +.5 inc ZPFramePtr skip Option 53 (DHCPOffer:530102) + bne .6 + inc ZPFramePtr+1 + +.6 lda (ZPFramePtr) + sec + adc ZPFramePtr add option len + 1 + sta ZPFramePtr + bcc .7 + inc ZPFramePtr+1 + +.7 lda (ZPFramePtr) + cmp #S.DHCP.OPTIONS.END + beq .8 + jsr GetDHCPOption + bra .5 + +.8 jsr CS.RUN.DISCARD + clc + rts + +.9 jsr CS.RUN.DISCARD + sec + rts +*-------------------------------------- +CS.RUN.DISCARD >LDA.G hFrame + >SYSCALL FreeMem + rts +*-------------------------------------- +GetDHCPOption cmp #S.DHCP.OPTIONS.MASK + bne .1 + ldx #S.IPCFG.MASK + bra GetDHCPOption.CopyIP + +.1 cmp #S.DHCP.OPTIONS.GW + bne .2 + + ldx #S.IPCFG.GW + bra GetDHCPOption.CopyIP + +.2 cmp #S.DHCP.OPTIONS.DNS + bne .3 + + ldx #S.IPCFG.DNS1 + bra GetDHCPOption.CopyIP + +.3 cmp #S.DHCP.OPTIONS.DOMAIN + bne .9 + + ldy #1 + + lda (ZPFramePtr),y Get String len + cmp #80 + bcc .4 + lda #79 + +.4 sta IPCFG+S.IPCFG.DOMAIN store len + tax + +.5 iny + lda (ZPFramePtr),y + sta IPCFG+S.IPCFG.DOMAIN-1,y + dex + bne .5 + +.9 rts +*-------------------------------------- +GetDHCPOption.CopyIP + ldy #1 + lda (ZPFramePtr),y Get Byte count + cmp #9 + bcc .1 + lda #8 max 8 bytes (2 DNS) + +.1 iny + +.2 pha + + lda (ZPFramePtr),y + sta IPCFG,x + iny + inx + + pla + dec + bne .2 + + rts +*-------------------------------------- +CheckDHCPAck jsr CheckDHCPXID + bcs .9 + + lda ZPFrameBase + clc + adc #S.DHCP.OPTIONS + sta ZPFramePtr + + lda ZPFrameBase+1 + adc /S.DHCP.OPTIONS + sta ZPFramePtr+1 + + lda (ZPFramePtr) + cmp #S.DHCP.OPTIONS.MSGTYPE + bne .9 + + ldy #2 + lda (ZPFramePtr),y + cmp #S.DHCP.OPTIONS.DHCPAck + bne .9 + + jsr CS.RUN.DISCARD + clc + rts + +.9 jsr CS.RUN.DISCARD + sec + rts +*-------------------------------------- +CheckDHCPXID ldy #S.DHCP.XID+3 + ldx #3 + +.1 lda (ZPFrameBase),y + cmp DHCP.DISC.XID,x same XID ? + bne .9 + dey + dex + bpl .1 + + clc + rts + +.9 sec + rts +*-------------------------------------- +Init.Timeout ldy #TimeOut + lda #TIMEOUT.MAX + sta (pData),y + rts +*-------------------------------------- +Wait.TimeOut ldy #TimeOut + lda (pData),y + rts +*-------------------------------------- +CS.END +LIBTCPIP .AZ "libtcpip" +MSG.CFG1 .AZ "DHCPCLNT:Searching for DHCP servers..." +MSG.CFG2 .AZ "DHCPCLNT:Reply from DHCP Server at %d.%d.%d.%d, requesting...\r\n" +MSG.CFG.KO .AZ "DHCPCLNT:Time Out [%h].\r\n" +MSG.CFG.OK .AZ "DHCPCLNT:Success:[IP=%d.%d.%d.%d/%d.%d.%d.%d]\r\n" +MSG.CFG.ND .AZ "DHCPCLNT:No Device, exiting." +MSG.CFG.NA .AZ "DHCPCLNT:TCPIP Already configured, exiting." +hLIBTCPIP .BS 1 +IPCFG .BS S.IPCFG +*-------------------------------------- +SA.LOCAL .DA #AF.INET S.SOCKADDR.AF + .BS 1 + .HS 00.00.00.00 S.SOCKADDR.ADDR + .DA UDP.PORT.DHCPC S.SOCKADDR.PORT +*-------------------------------------- +SA.REMOTE .DA #AF.INET S.SOCKADDR.AF + .BS 1 + .HS FF.FF.FF.FF S.SOCKADDR.ADDR + .DA UDP.PORT.DHCPS S.SOCKADDR.PORT +*-------------------------------------- +DHCP.DISC .HS 01010600 OP,HTYPE,HLEN,HOPS +DHCP.DISC.XID .BS 4 + .HS 0000 SECS + .DA S.DHCP.FLAGS.BRDCST + .HS 00000000 CIADDR +DHCP.DISC.YIADDR .HS 00000000 + .HS 00000000 SIADDR +DHCP.DISC.GIADDR .HS 00000000 +DHCP.DISC.CHADDR .HS 00000000.00000000.00000000.00000000 + .BS 64 SNAME + .BS 128 FILE + .HS 63825363 COOKIE + .HS 3501 OPT + .DA #S.DHCP.OPTIONS.DHCPDiscover + .HS 37040103060FFF +DHCP.DISC.LEN .EQ *-DHCP.DISC +*-------------------------------------- +DHCP.REQ .HS 01010600 OP,HTYPE,HLEN,HOPS +DHCP.REQ.XID .BS 4 + .HS 0000 SECS + .DA S.DHCP.FLAGS.BRDCST + .HS 00000000 CIADDR +DHCP.REQ.YIADDR .HS 00000000 + .HS 00000000 SIADDR +DHCP.REQ.GIADDR .HS 00000000 +DHCP.REQ.CHADDR .HS 00000000.00000000.00000000.00000000 + .BS 64 SNAME + .BS 128 FILE + .HS 63825363 COOKIE + .HS 3501 OPT + .DA #S.DHCP.OPTIONS.DHCPRequest + .HS 3204 +DHCP.REQ.OPT.REQIP .BS 4 + .HS 3604 +DHCP.REQ.OPT.SVRIP .BS 4 + .HS FF +DHCP.REQ.LEN .EQ *-DHCP.REQ +*-------------------------------------- +DS.START +TimeOut .BS 1 +hSocket .BS 1 +hFrame .BS 1 +DS.END +MAN +SAVE USR/SRC/SBIN/IPCONFIG.S.DHCP +LOAD USR/SRC/SBIN/IPCONFIG.S +ASM diff --git a/BIN/IPCONFIG.S.ETC.txt b/BIN/IPCONFIG.S.ETC.txt new file mode 100644 index 00000000..0486f5dc --- /dev/null +++ b/BIN/IPCONFIG.S.ETC.txt @@ -0,0 +1,505 @@ +NEW +PREFIX +AUTO 4,1 + .LIST OFF +*-------------------------------------- +CFG.EtcFiles >LDYAI 256 + >SYSCALL GetMem + bcs .9 + + >STYA ZPTmpPtr1 + stx CFG.hBuf1 + + >LDYA L.HOSTNAME + jsr CFG.Read.PrintF + jsr CFG.Read.HOSTNAME + + lda IPCFG+S.IPCFG.HOSTNAME + bne .4 + + ldy #$ff + +.2 iny + lda CFG.DefaultHost,y + sta IPCFG+S.IPCFG.HOSTNAME,y + bne .2 + +.3 lda A2osX.TIMER16 + jsr CFG.A2CharAX + sta IPCFG+S.IPCFG.HOSTNAME+6 + stx IPCFG+S.IPCFG.HOSTNAME+7 + + lda A2osX.TIMER16+1 + jsr CFG.A2CharAX + sta IPCFG+S.IPCFG.HOSTNAME+8 + stx IPCFG+S.IPCFG.HOSTNAME+9 + +.4 >LDYA L.TCPIP.CONF + jsr CFG.Read.PrintF + jsr CFG.Read.TCPIP.CONF + + lda IPCFG+S.IPCFG.IP + beq .5 + + lda #S.IPCFG.STATUS.OK + sta IPCFG+S.IPCFG.STATUS + +.5 >LDYA L.HOSTS + jsr CFG.Read.PrintF + jsr CFG.Read.HOSTS + + jsr SET.IPCFG.I + + lda CFG.hBuf1 + >SYSCALL freemem + +.9 rts +*-------------------------------------- +CFG.Read.PrintF >PUSHYA + >PUSHBI 2 + >LDYA L.MSG.CFG + >SYSCALL printf + rts +*-------------------------------------- +CFG.Read.HOSTNAME + >LDYA L.HOSTNAME + jsr CFG.Read.Open + jsr CFG.Read.Result + bcs .9 + +.1 jsr CFG.Read.GetS + bcs .8 + + lda (ZPTmpPtr1) + beq .1 empty line... + cmp #'# + beq .1 comment... + + ldy #0 + +.2 lda (ZPTmpPtr1),y + sta IPCFG+S.IPCFG.HOSTNAME,y + beq .8 end of name + + iny + cpy #15 + bne .2 + +.8 clc + .HS B0 BCS +.9 sec + jmp CFG.Read.Close +*-------------------------------------- +CFG.Read.TCPIP.CONF + >LDYA L.TCPIP.CONF + jsr CFG.Read.Open + jsr CFG.Read.Result + bcs .9 + +.1 jsr CFG.Read.GetS + bcs .8 + + lda (ZPTmpPtr1) + beq .1 empty line... + cmp #'# + beq .1 comment... + + ldy #$ff + +.2 iny + lda (ZPTmpPtr1),y + beq .3 + cmp #' ' + bne .2 + +.3 lda L.CFG.Keywords + sta ZPTmpPtr2 + lda L.CFG.Keywords+1 + sta ZPTmpPtr2+1 + + ldx #0 + +.4 phy save keyword len + + tya + cmp (ZPTmpPtr2) + bne .6 + +.5 lda (ZPTmpPtr2),y + dey + cmp (ZPTmpPtr1),y + bne .6 + tya + bne .5 + + ply discard keyword len + jsr .80 + bra .1 + +.6 lda (ZPTmpPtr2) + sec + adc ZPTmpPtr2 + sta ZPTmpPtr2 + bcc .7 + inc ZPTmpPtr2+1 + +.7 inx + inx + ply reset keyword len + + lda (ZPTmpPtr2) + bne .4 + + bra .1 + +.8 clc + .HS B0 BCS +.9 sec + jmp CFG.Read.Close + +.80 jmp (J.CFG.Keywords,x) +*-------------------------------------- +CFG.Read.address + ldx #S.IPCFG.IP+3 + bra CFG.Read.IP +CFG.Read.netmask + ldx #S.IPCFG.MASK+3 + bra CFG.Read.IP +CFG.Read.gateway + ldx #S.IPCFG.GW+3 + bra CFG.Read.IP +CFG.Read.nameserver + ldx #S.IPCFG.DNS1+3 + lda IPCFG,x + beq CFG.Read.IP + ldx #S.IPCFG.DNS2+3 + +CFG.Read.IP ldy #3 + +.1 txa + clc + adc L.IPCFG + pha + lda L.IPCFG+1 + adc #0 + >PUSHA @IP[3][2][1][0] + pla + >PUSHA + dex + dey + bpl .1 + + >PUSHBI 8 4 PTRs on stack + >PUSHW L.HST.SScanF + + lda (ZPTmpPtr2) + sec + adc ZPTmpPtr1 + tay + + lda ZPTmpPtr1+1 + adc #0 + + >SYSCALL SScanF + rts + +CFG.Read.dnsdomain + lda (ZPTmpPtr2) + sec + adc ZPTmpPtr1 + sta ZPTmpPtr1 + bcc .1 + inc ZPTmpPtr1+1 + +.1 ldy #$ff + +.2 iny + lda (ZPTmpPtr1),y + sta IPCFG+S.IPCFG.DOMAIN,y + beq .8 + cpy #K.DNS.MAXLEN + bne .2 + lda #0 + sta IPCFG+S.IPCFG.DOMAIN,y +.8 rts +*-------------------------------------- +CFG.Read.HOSTS stz CFG.hBuf2 + stz CFG.hBuf3 + + >LDYA L.HOSTS + jsr CFG.Read.Open + jsr CFG.Read.Result + bcs .9 + + >LDYAI 256 + >SYSCALL GetMem + bcs .9 + + >STYA ZPTmpPtr2 + stx CFG.hBuf2 + + >LDYAI 256 + >SYSCALL GetMem + bcs .9 + + >STYA ZPTmpPtr3 + stx CFG.hBuf3 + +.1 jsr CFG.Read.GetS + bcs .8 + + lda (ZPTmpPtr1) + beq .1 empty line... + cmp #'# + beq .1 comment... + + jsr CFG.Read.HOSTS.Scan + bcs .1 + + cmp #5 + bcc .1 less than 5 parameters, ignore + beq .2 no alias + + >LDYA ZPTmpPtr3 + jsr CFG.DNS.Add + +.2 >LDYA ZPTmpPtr2 + jsr CFG.DNS.Add + + bra .1 + +.8 clc + .HS B0 BCS +.9 sec + + php + pha + lda CFG.hBuf3 + beq .90 + >SYSCALL freemem +.90 lda CFG.hBuf2 + beq .91 + >SYSCALL freemem + +.91 jmp CFG.Read.Close2 +*-------------------------------------- +CFG.Read.HOSTS.Scan + >PUSHW ZPTmpPtr3 + >PUSHW ZPTmpPtr2 + + ldx #3 + +.2 txa + clc + adc L.CFG.IP + tay + lda L.CFG.IP+1 + adc #0 + >PUSHYA @IP[3][2][1][0] + + dex + bpl .2 + + >PUSHBI 12 6 PTRs on stack + >PUSHW L.CFG.HOSTS.SScanF + >LDYA ZPTmpPtr1 + + >SYSCALL SScanF + rts +*-------------------------------------- +CFG.DNS.ADD >STYA ZPTmpPtr1 + + >PUSHW ZPTmpPtr1 + + ldy #3 + +.1 lda CFG.IP,y + >PUSHA + dey + bpl .1 + + >PUSHBI 6 + >LDYA L.MSG.DNS.ADD + >SYSCALL printf + + >LDYA L.CFG.IP + + >PUSHYA + >PUSHW ZPTmpPtr1 + jsr DNS.Add +*-------------------------------------- +CFG.Read.Result bcc .1 + >PUSHA + >PUSHBI 1 + >LDYA L.MSG.CFG.KO + >SYSCALL printf + sec + rts + +.1 >LDYA L.MSG.CFG.OK + >SYSCALL puts + rts +*-------------------------------------- +CFG.Read.Open stz CFG.hCfgFile + stz CFG.hCfgPath + + >SYSCALL ExpandStr + bcs .9 + + stx CFG.hCfgPath + pha + + >PUSHWI 0 + >PUSHBI S.FI.T.TXT + >PUSHBI O.RDONLY + + pla + >SYSCALL fopen + bcs .9 + + sta CFG.hCfgFile +* clc +.9 rts +*-------------------------------------- +CFG.Read.Close php + pha + +CFG.Read.Close2 + lda CFG.hCfgPath + beq .1 + >SYSCALL FreeMem + +.1 lda CFG.hCfgFile + beq .8 + >SYSCALL fclose + +.8 pla + plp + rts +*-------------------------------------- +CFG.Read.GetS >PUSHWI 255 + >PUSHW ZPTmpPtr1 + lda CFG.hCfgFile + >SYSCALL fgets +* bcs .9 +* >LDYA ZPTmpPtr1 +* >SYSCALL puts + +.9 rts +*-------------------------------------- +CFG.A2CharAX pha + lsr + lsr + lsr + lsr + 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 +*-------------------------------------- +SET.IPCFG >PULLW ZPTmpPtr1 IPCFG + + ldy #0 + +.1 lda (ZPTmpPtr1),y + sta IPCFG,y + iny + cpy #S.IPCFG + bne .1 + +SET.IPCFG.I >LDYA L.DCB.NIC + >STYA IOCTL+S.IOCTL.BUFPTR + lda #S.IOCTL.STATCODE.GETDCB + sta IOCTL+S.IOCTL.STATCODE + + >PUSHW L.IOCTL + >PUSHBI IOCTL.STATUS + lda IPCFG+S.IPCFG.hFD + >SYSCALL IOCTL + bcs * + + ldx #5 + +.10 lda DCB.NIC+S.DCB.NIC.MAC,x + sta IPCFG+S.IPCFG.MAC,x + sta ARP.REQ.SRCMAC,x + sta ARP.REQ.SHA,x + sta ARP.REP.SRCMAC,x + sta ARP.REP.SHA,x + dex + bpl .10 + + ldx #3 + +.11 lda IPCFG+S.IPCFG.IP,x + sta SA.LOCAL+S.SOCKADDR.ADDR,x + sta ARP.REQ.SPA,x + sta ARP.REP.SPA,x + dex + bpl .11 + + lda DCB.NIC+S.DCB.NIC.FLAGS + and #S.DCB.NIC.FLAGS.ARPOFFLOAD + beq .2 + + ldx #11 + +.1 lda IPCFG+S.IPCFG.IP,x + sta DCB.NIC+S.DCB.NIC.IP,x + dex + bpl .1 + + lda S.IOCTL.CTRLCODE.SETDCB + sta S.IOCTL.CTRLCODE + + >PUSHW L.IOCTL + >PUSHBI IOCTL.CONTROL + lda IPCFG+S.IPCFG.hFD + >SYSCALL IOCTL + bcs .9 + +.2 lda hDNSSocket + beq .3 + jsr SKT.Shutdown + stz hDNSSocket + +.3 lda IPCFG+S.IPCFG.DNS1 + beq .8 + + >PUSHBI 0 no protocol + lda #S.SOCKET.T.DGRAM + jsr SKT.Socket + bcs .9 + + sta hDNSSocket + + stz SA.LOCAL+S.SOCKADDR.PORT + stz SA.LOCAL+S.SOCKADDR.PORT+1 + + >PUSHW L.SA.LOCAL + lda hDNSSocket + jsr SKT.Bind + +.8 clc +.9 rts +*-------------------------------------- +* grab a copy on the fly for lib function +* OUT : +* Y,A = PTR to S.IPCFG +*-------------------------------------- +GET.IPCFG >LDYA L.IPCFG + clc + rts +*-------------------------------------- +MAN +SAVE USR/SRC/SBIN/IPCONFIG.S.ETC +LOAD USR/SRC/SBIN/IPCONFIG.S +ASM diff --git a/BIN/IPCONFIG.S.txt b/BIN/IPCONFIG.S.txt index 2f623957..24de9f4c 100644 --- a/BIN/IPCONFIG.S.txt +++ b/BIN/IPCONFIG.S.txt @@ -4,17 +4,24 @@ AUTO 4,1 .LIST OFF .OP 65C02 .OR $2000 - .TF BIN/IPCONFIG + .TF SBIN/IPCONFIG2 *-------------------------------------- .INB INC/MACROS.I .INB INC/A2OSX.I + .INB INC/MLI.E.I .INB INC/NIC.I .INB INC/ETH.I .INB INC/LIBTCPIP.I *-------------------------------------- -pIPCFG .EQ ZPBIN -pFD .EQ ZPBIN+2 -pDEV .EQ ZPBIN+4 + .DUMMY + .OR ZPBIN +ZS.START +ZPPtr1 .BS 2 +pIPCFG .BS 2 +pFD .BS 2 +pDEV .BS 2 +ZS.END + .ED *-------------------------------------- * File Header (16 Bytes) *-------------------------------------- @@ -26,7 +33,7 @@ CS.START cld .DA CS.END-CS.START CS .DA DS.END-DS.START DS .DA #16 SS - .DA #6 ZP + .DA #ZS.END-ZS.START Zero Page Size .DA 0 *-------------------------------------- * Relocation Table @@ -36,6 +43,7 @@ CS.START cld .DA CS.DOEVENT .DA CS.QUIT L.LIBTCPIP .DA LIBTCPIP +L.MSG.USAGE .DA MSG.USAGE L.MSG0 .DA MSG0 L.MSG0.NL .DA MSG0.NL L.MSG0.L .DA MSG0.L @@ -55,6 +63,16 @@ L.MSG2.IP .DA MSG2.IP L.MSG2.GW .DA MSG2.GW L.MSG2.DNS .DA MSG2.DNS L.MSG2.HOSTNAME .DA MSG2.HOSTNAME +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.MSG.DNS.ADD .DA MSG.DNS.ADD +L.HOSTNAME .DA HOSTNAME +L.TCPIP.CONF .DA TCPIP.CONF +L.HOSTS .DA HOSTS .DA 0 *-------------------------------------- CS.INIT >LDYA L.LIBTCPIP @@ -64,7 +82,42 @@ CS.INIT >LDYA L.LIBTCPIP .9 rts *-------------------------------------- -CS.RUN >PUSHBI 0 +CS.RUN +.1 >INC.G ArgCount + >SYSCALL ArgV + bcs .7 + + >STYA ZPPtr1 + + lda (ZPPtr1) + cmp #'-' + bne .99 + + ldy #1 + lda (ZPPtr1),y + + ldx OptionList + +.2 cmp OptionList,x + beq .3 + dex + bne .2 + +.99 >PUSHBI 0 + >LDYA L.MSG.USAGE + >SYSCALL printf + lda #E.SYN + sec + rts + +.3 ldy OptionVars-1,x + lda #$80 + sta (pData),y + bra .1 + +.7 +*-------------------------------------- +CS.RUN.STATUS >PUSHBI 0 >LDYA L.MSG0 >SYSCALL printf @@ -279,10 +332,20 @@ CS.QUIT lda hLIBTCPIP .8 clc rts +*-------------------------------------- + .INB USR/SRC/SBIN/IPCONFIG.S.DEV *-------------------------------------- CS.END LIBTCPIP .AZ "libtcpip" *-------------------------------------- +OptionList >PSTR "DESdes" +OptionVars .DA #bDHCP,#bETC,#bSet,#bDHCP,#bETC,#bSet +*-------------------------------------- +MSG.USAGE .AS "Usage : IPCONFIG \r\n" + .AS " -D : Try to get IP address from DHCP\r\n" + .AS " -E : Read ETC files\r\n" + .AZ " -S : Set/Reset TCPIP configuration (-E, then -D if required)\r\n" +*-------------------------------------- MSG0 .AZ "TCP/IP Status : " MSG0.L .AZ "Loaded" MSG0.NL .AZ "Not Loaded" @@ -310,10 +373,41 @@ MSG2.GW .AZ " Gateway : %d.%d.%d.%d\r\n" MSG2.DNS .AZ " DNS : %d.%d.%d.%d,%d.%d.%d.%d\r\n" MSG2.HOSTNAME .AZ " Hostname : %s.%s\r\n" hLIBTCPIP .BS 1 +*-------------------------------------- +DEVNAME .AZ "/DEV/ETH1" +MSG.DEV.KO .AZ "No Device Found, exiting." +MSG.DEV.OK .AZ "Bound To Device : %s\r\n" +MSG.CFG .AZ "Reading %s..." +MSG.CFG.KO .AZ "Failed!!! [%h]\r\n" +MSG.CFG.OK .AZ "OK." +MSG.DNS.ADD .AZ " - Adding static host %d.%d.%d.%d %s..." +*-------------------------------------- +HOSTNAME .AZ "${ROOT}ETC/HOSTNAME" +TCPIP.CONF .AZ "${ROOT}ETC/TCPIP.CONF" +HOSTS .AZ "${ROOT}ETC/HOSTS" +*-------------------------------------- +CFG.DefaultHost .AZ "a2osx-XXXX" +CFG.Keywords >PSTR "address" + >PSTR "netmask" + >PSTR "gateway" + >PSTR "nameserver" + >PSTR "dnsdomain" + .DA #0 +CFG.hBuf1 .BS 1 +CFG.hBuf2 .BS 1 +CFG.hBuf3 .BS 1 +CFG.hCfgPath .BS 1 +CFG.hCfgFile .BS 1 +CFG.IP .BS 4 +CFG.HOSTS.SScanF .AZ "%d.%d.%d.%d %s %s" *-------------------------------------- .DUMMY .OR 0 DS.START +ArgCount .BS 1 +bDHCP .BS 1 +bETC .BS 1 +bSet .BS 1 FD.ETH .BS 1 IOCTL .BS S.IOCTL DIB .BS S.DIB @@ -321,5 +415,5 @@ DCB.NIC .BS S.DCB.NIC DS.END .ED *-------------------------------------- MAN -SAVE USR/SRC/BIN/BIN/IPCONFIG.S +SAVE USR/SRC/SBIN/IPCONFIG.S ASM diff --git a/LIB/LIBTCPIP.S.txt b/LIB/LIBTCPIP.S.txt index ae551656..2e2f2a4f 100644 --- a/LIB/LIBTCPIP.S.txt +++ b/LIB/LIBTCPIP.S.txt @@ -115,16 +115,6 @@ CS.START cld .DA SKT.GetTable *-------------------------------------- -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.MSG.DNS.ADD .DA MSG.DNS.ADD -L.HOSTNAME .DA HOSTNAME -L.TCPIP.CONF .DA TCPIP.CONF -L.HOSTS .DA HOSTS L.IPCFG .DA IPCFG L.CFG.IP .DA CFG.IP L.CFG.HOSTS.SScanF .DA CFG.HOSTS.SScanF @@ -209,9 +199,13 @@ LIB.UNLOAD dec RefCount LIB.UNLOAD.8 clc rts *-------------------------------------- -POLL >PUSHW L.IOCTL +POLL lda IPCFG+S.IPCFG.hFD + beq .99 + + pha + >PUSHW L.IOCTL >PUSHBI IOCTL.READ - lda IPCFG+S.IPCFG.hFD + pla >SYSCALL IOCTL bcs .99 No Frame @@ -388,33 +382,6 @@ SKT.Dump ldy #S.SOCKET.REM.PORT+1 *-------------------------------------- CS.END *-------------------------------------- -DEVNAME .AZ "/DEV/ETH1" -MSG.DEV.KO .AZ "LIBTCPIP:No Device Found, exiting." -MSG.DEV.OK .AZ "LIBTCPIP:Bound To Device : %s\r\n" -MSG.CFG .AZ "LIBTCPIP:Reading %s..." -MSG.CFG.KO .AZ "Failed!!! [%h]\r\n" -MSG.CFG.OK .AZ "OK." -MSG.DNS.ADD .AZ " - Adding static host %d.%d.%d.%d %s..." -*-------------------------------------- -HOSTNAME .AZ "${ROOT}ETC/HOSTNAME" -TCPIP.CONF .AZ "${ROOT}ETC/TCPIP.CONF" -HOSTS .AZ "${ROOT}ETC/HOSTS" -*-------------------------------------- -CFG.DefaultHost .AZ "a2osx-XXXX" -CFG.Keywords >PSTR "address" - >PSTR "netmask" - >PSTR "gateway" - >PSTR "nameserver" - >PSTR "dnsdomain" - .DA #0 -CFG.hBuf1 .BS 1 -CFG.hBuf2 .BS 1 -CFG.hBuf3 .BS 1 -CFG.hCfgPath .BS 1 -CFG.hCfgFile .BS 1 -CFG.IP .BS 4 -CFG.HOSTS.SScanF .AZ "%d.%d.%d.%d %s %s" -*-------------------------------------- SA.LOCAL .DA #AF.INET S.SOCKADDR.AF .BS 1 .BS 4 S.SOCKADDR.ADDR