diff --git a/.Floppies/A2OSX.BUILD.po b/.Floppies/A2OSX.BUILD.po index 27963d2f..b775f3be 100644 Binary files a/.Floppies/A2OSX.BUILD.po and b/.Floppies/A2OSX.BUILD.po differ diff --git a/BIN/IPCONFIG.S.DHCP.txt b/BIN/IPCONFIG.S.DHCP.txt index 18becb4e..7002f60d 100644 --- a/BIN/IPCONFIG.S.DHCP.txt +++ b/BIN/IPCONFIG.S.DHCP.txt @@ -3,7 +3,7 @@ PREFIX AUTO 4,1 .LIST OFF *-------------------------------------- -DHCP.INIT lda (pIPCFG) +DHCP.INIT lda IPCFG+S.IPCFG.STATUS and #S.IPCFG.STATUS.OK bne .99 Already Configured, exit @@ -30,7 +30,7 @@ DHCP.INIT lda (pIPCFG) .99 >LDYA L.MSG.DHCP.NA -.90 >SYSCALL puts + >SYSCALL puts lda #0 sec rts diff --git a/BIN/IPCONFIG.S.ETC.txt b/BIN/IPCONFIG.S.ETC.txt index 75be9d13..5bd7257c 100644 --- a/BIN/IPCONFIG.S.ETC.txt +++ b/BIN/IPCONFIG.S.ETC.txt @@ -177,7 +177,7 @@ CFG.Read.IP ldy #3 bpl .1 >PUSHBI 8 4 PTRs on stack - >PUSHW L.HST.SScanF + >PUSHW L.CFG.IP.SScanF lda (ZPTmpPtr2) sec @@ -210,8 +210,8 @@ CFG.Read.dnsdomain sta IPCFG+S.IPCFG.DOMAIN,y .8 rts *-------------------------------------- -CFG.Read.HOSTS stz CFG.hBuf2 - stz CFG.hBuf3 +CFG.Read.HOSTS stz CFG.hBuf2 + stz CFG.hBuf3 >LDYA L.HOSTS jsr CFG.Read.Open @@ -288,7 +288,7 @@ CFG.Read.HOSTS.Scan bpl .2 >PUSHBI 12 6 PTRs on stack - >PUSHW L.CFG.HOSTS.SScanF + >PUSHW L.CFG.HOST.SScanF >LDYA ZPTmpPtr1 >SYSCALL SScanF @@ -368,11 +368,7 @@ CFG.Read.GetS >PUSHWI 255 >PUSHW ZPTmpPtr1 lda CFG.hCfgFile >SYSCALL fgets - bcs .9 - >LDYA ZPTmpPtr1 - >SYSCALL puts - -.9 rts + rts *-------------------------------------- MAN SAVE USR/SRC/SBIN/IPCONFIG.S.ETC diff --git a/BIN/IPCONFIG.S.txt b/BIN/IPCONFIG.S.txt index 0016f926..4b0d91e6 100644 --- a/BIN/IPCONFIG.S.txt +++ b/BIN/IPCONFIG.S.txt @@ -4,7 +4,7 @@ AUTO 4,1 .LIST OFF .OP 65C02 .OR $2000 - .TF BIN/IPCONFIG2 + .TF BIN/IPCONFIG *-------------------------------------- .INB INC/MACROS.I .INB INC/A2OSX.I @@ -21,7 +21,6 @@ TIMEOUT.MAX .EQ 200 20 sec. .DUMMY .OR ZPBIN ZS.START -ZPPtr1 .BS 2 pIPCFG .BS 2 pFD .BS 2 ZPIPCfgPtr .BS 2 @@ -40,10 +39,11 @@ 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 CS - .DA DS.END-DS.START DS - .DA #16 SS + .DA #S.PS.F.EVENT + .DA #0 + .DA CS.END-CS.START Code Size (without Constants) + .DA DS.END-DS.START Data SegmentSize + .DA #16 Stack Size .DA #ZS.END-ZS.START Zero Page Size .DA 0 *-------------------------------------- @@ -80,13 +80,11 @@ L.HOSTNAME .DA HOSTNAME L.TCPIP.CONF .DA TCPIP.CONF L.HOSTS .DA HOSTS L.IPCFG .DA IPCFG -L.IOCTL .DA IOCTL -L.DCB.NIC .DA DCB.NIC -L.CFG.IP .DA CFG.IP -L.HST.SScanF .DA HST.SScanF -L.CFG.HOSTS.SScanF .DA CFG.HOSTS.SScanF -L.CFG.DefaultHost .DA CFG.DefaultHost L.IPCFG.HOSTNAME .DA IPCFG+S.IPCFG.HOSTNAME +L.CFG.IP .DA CFG.IP +L.CFG.IP.SScanF .DA CFG.IP.SScanF +L.CFG.HOST.SScanF .DA CFG.HOST.SScanF +L.CFG.DefaultHost .DA CFG.DefaultHost L.CFG.Keywords .DA CFG.Keywords J.CFG.Keywords .DA CFG.Read.address .DA CFG.Read.netmask @@ -133,14 +131,14 @@ CS.RUN >LIBCALL hLIBTCPIP,LIBTCPIP.GETCFG >SYSCALL ArgV bcs .4 - >STYA ZPPtr1 + >STYA ZPTmpPtr1 - lda (ZPPtr1) + lda (ZPTmpPtr1) cmp #'-' bne .99 ldy #1 - lda (ZPPtr1),y + lda (ZPTmpPtr1),y ldx OptionList @@ -162,24 +160,29 @@ CS.RUN >LIBCALL hLIBTCPIP,LIBTCPIP.GETCFG bra .1 .4 lda (pIPCFG) S.IPCFG.STATUS - bne CS.RUN.DUMP + bne .5 no config, force all + + lda #$ff + >STA.G bETC + >STA.G bDHCP + +.5 >LDA.G bETC + bpl .6 jsr CFG.EtcFiles -* jsr DHCP.INIT -* bcs .8 +.6 >LDA.G bDHCP + bpl .8 + + jsr DHCP.INIT + bcs .8 -* jsr DHCP.RUN + jsr DHCP.RUN -* jsr DHCP.QUIT + jsr DHCP.QUIT .8 >PUSHW L.IPCFG - >DEBUG - >LIBCALL hLIBTCPIP,LIBTCPIP.SETCFG - -* lda #0 -* sec -* rts + >LIBCALL hLIBTCPIP,LIBTCPIP.SETCFG *-------------------------------------- CS.RUN.DUMP ldy #S.IPCFG.DevID lda (pIPCFG),y @@ -409,7 +412,7 @@ Wait.TimeOut ldy #TimeOut .INB USR/SRC/SBIN/IPCONFIG.S.ETC *-------------------------------------- CS.END -LIBTCPIP .AZ "libtcpip2" +LIBTCPIP .AZ "libtcpip" hLIBTCPIP .BS 1 *-------------------------------------- OptionList >PSTR "DEde" @@ -423,7 +426,6 @@ MSG.USAGE .AS "Usage : IPCONFIG \r\n" MSG.NODEV .AZ "TCP/IP not bound to any device." *-------------------------------------- IPCFG .BS S.IPCFG -IOCTL .BS S.IOCTL *-------------------------------------- MSG1.DEV .AS "NIC Device Configuration :\r\n" .AS " Device ID : $%h\r\n" @@ -456,7 +458,6 @@ 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" -HST.SScanF .AZ "%d.%d.%d.%d" *-------------------------------------- CFG.DefaultHost .AZ "a2osx-%H" CFG.Keywords >PSTR "address" @@ -471,7 +472,8 @@ 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" +CFG.IP.SScanF .AZ "%d.%d.%d.%d" +CFG.HOST.SScanF .AZ "%d.%d.%d.%d %s %s" *-------------------------------------- MSG.DHCP.CFG1 .AZ "Searching for DHCP servers..." MSG.DHCP.CFG2 .AZ "Reply from DHCP Server at %d.%d.%d.%d, requesting...\r\n" @@ -534,6 +536,7 @@ ArgIndex .BS 1 bDHCP .BS 1 bETC .BS 1 DIB .BS S.DIB +IOCTL .BS S.IOCTL DCB.NIC .BS S.DCB.NIC TimeOut .BS 1 hSocket .BS 1 diff --git a/INC/LIB.NET.I.txt b/INC/LIB.NET.I.txt new file mode 100644 index 00000000..9f5ee422 --- /dev/null +++ b/INC/LIB.NET.I.txt @@ -0,0 +1,18 @@ +NEW +PREFIX +AUTO 4,1 + .LIST OFF + .OP 65C02 +*-------------------------------------- +LIBNET.SETCFG .EQ 4 +LIBNET.GETCFG .EQ 6 + +LIBNET.INCOMING .EQ 8 +LIBNET.PULSE .EQ 10 +*-------------------------------------- +S.NETCFG.STATUS .EQ 0 +S.NETCFG.DevID .EQ 1 +S.NETCFG.MAC .EQ 2 +*-------------------------------------- +MAN +SAVE INC/LIB.NET.I diff --git a/LIB/LIBTCPIP.S.txt b/LIB/LIBTCPIP.S.txt index bce8111c..71a0e355 100644 --- a/LIB/LIBTCPIP.S.txt +++ b/LIB/LIBTCPIP.S.txt @@ -4,7 +4,7 @@ AUTO 4,1 .LIST OFF .OP 65C02 .OR $2000 - .TF LIB/LIBTCPIP2 + .TF LIB/LIBTCPIP *-------------------------------------- IPDEBUG .EQ 0 *-------------------------------------- diff --git a/SBIN/NETWORKD.S.txt b/SBIN/NETWORKD.S.txt index 9ffc83f9..a574116f 100644 --- a/SBIN/NETWORKD.S.txt +++ b/SBIN/NETWORKD.S.txt @@ -5,22 +5,24 @@ AUTO 4,1 .OP 65C02 .OR $2000 .TF SBIN/NETWORKD +*-------------------------------------- +LIB.MAX .EQ 4 *-------------------------------------- .INB INC/MACROS.I .INB INC/A2OSX.I + .INB INC/MLI.I .INB INC/MLI.E.I .INB INC/ETH.I - .INB INC/LIBTCPIP.I - .INB INC/LIBETALK.I + .INB INC/LIB.NET.I *-------------------------------------- * Zero Page Segment, up to 32 bytes *-------------------------------------- .DUMMY .OR ZPBIN ZS.START -pIPCFG .BS 2 -ZS.END - .ED +pNETCFG .BS 2 +pBuf .BS 2 +ZS.END .ED *-------------------------------------- * File Header (16 Bytes) *-------------------------------------- @@ -45,23 +47,30 @@ CS.START cld L.DEVNAME .DA DEVNAME L.MSG.DEV.OK .DA MSG.DEV.OK L.MSG.DEV.KO .DA MSG.DEV.KO -L.LIBTCPIP .DA LIBTCPIP -L.LIBETALK .DA LIBETALK +L.MSG.LIB .DA MSG.LIB L.IOCTL .DA IOCTL +L.ETCNETWORK .DA ETCNETWORK .DA 0 *-------------------------------------- -CS.INIT clc - rts +CS.INIT jsr CS.INIT.DEV + bcs .9 + + jsr CS.INIT.LIBS + bcs .9 + + jsr CS.INIT.CONF + +.9 rts *-------------------------------------- -CS.RUN >PUSHBI 0 +CS.INIT.DEV >PUSHBI 0 >LDYA L.DEVNAME >SYSCALL open - bcc .1 + bcc .8 inc DEVNAME+8 lda DEVNAME+8 cmp #'8' - bne CS.RUN + bne CS.INIT.DEV >LDYA L.MSG.DEV.KO >SYSCALL puts @@ -70,90 +79,152 @@ CS.RUN >PUSHBI 0 sec rts -.1 sta DevID +.8 sta DevID >PUSHW L.DEVNAME >PUSHBI 2 >LDYA L.MSG.DEV.OK >SYSCALL printf - >LDYA L.LIBTCPIP + rts +*-------------------------------------- +CS.INIT.LIBS lda LibCnt +.1 inc + >SYSCALL ArgV + bcs .8 + + phy + pha + + >PUSHYA + >PUSHBI 2 + >LDYA L.MSG.LIB + >SYSCALL printf + + pla + ply >SYSCALL LoadLib - bcs .2 - sta hLIBTCPIP + bcs .9 - >LIBCALL hLIBTCPIP,LIBTCPIP.GETCFG - >STYA pIPCFG + ldy LibCnt + sta hLIBs,y + inc LibCnt - ldy #S.IPCFG.DevID + tay + ldx #LIBNET.GETCFG + jsr A2osX.LIBCALL + >STYA pNETCFG + lda DevID - sta (pIPCFG),y + ldy #S.NETCFG.DevID + sta (pNETCFG),y -.2 >LDYA L.LIBETALK - >SYSCALL LoadLib - bcs .3 - sta hLIBETALK + lda LibCnt + cmp #LIB.MAX + bne .1 + +.8 clc -.3 -CS.RUN.LOOP >SLEEP +.9 rts +*-------------------------------------- +CS.INIT.CONF >LDYAI 64 + >SYSCALL GetMem + bcs .9 - >PUSHW L.IOCTL + >STYA pBuf + stx hLineBuf + + >PUSHWI 0 + >PUSHBI S.FI.T.TXT + >PUSHBI O.RDONLY + + >LDYA L.ETCNETWORK + >SYSCALL fopen + bcs .9 + + sta hNetworkFile + +.1 >PUSHWI 63 + >PUSHW pBuf + lda hNetworkFile + >SYSCALL fgets + bcs .8 + + >PUSHBI 0 PS Flags + >LDYA pBuf + >SYSCALL execL + bra .1 + +.8 lda hNetworkFile + >SYSCALL fclose + + clc +.9 rts +*-------------------------------------- +CS.RUN >PUSHW L.IOCTL >PUSHBI IOCTL.READ lda DevID >SYSCALL IOCTL - bcs CS.RUN.LOOP No Frame + bcs .8 No Frame sta hFrameIn - ldx hLIBTCPIP - beq .1 + ldx #0 + +.1 ldy hLIBs,x + beq .7 >PUSHW L.IOCTL lda hFrameIn - >LIBCALL hLIBTCPIP,LIBTCPIP.INCOMING - bcc CS.RUN.LOOP + phx + ldx #LIBNET.INCOMING + jsr A2osX.LIBCALL + plx + bcc .8 -.1 ldx hLIBETALK - beq .9 + inx + bra .1 - >PUSHW L.IOCTL - lda hFrameIn - >LIBCALL hLIBETALK,LIBETALK.INCOMING - bcc CS.RUN.LOOP - -.9 lda hFrameIn +.7 lda hFrameIn >SYSCALL freemem - bra CS.RUN.LOOP +.8 clc + rts *-------------------------------------- CS.DOEVENT lda (pEvent) bpl .9 - ldx hLIBTCPIP - beq .1 - >LIBCALL hLIBTCPIP,LIBTCPIP.PULSE + ldx #0 -.1 ldx hLIBETALK +.1 ldy hLIBs,x beq .9 + phx + ldx #LIBNET.PULSE lda (pEvent) - >LIBCALL hLIBETALK,LIBETALK.PULSE + jsr A2osX.LIBCALL + plx + + inx + bra .1 .9 sec never discard TIME event rts *-------------------------------------- -CS.QUIT lda hLIBTCPIP - beq .1 +CS.QUIT ldx #0 - >SYSCALL UnloadLib +.1 lda hLIBs,x + beq .7 -.1 lda hLIBETALK - beq .2 - - >SYSCALL UnloadLib + phx + >SYSCALL UnLoadLib + plx -.2 >PUSHWI 0 + inx + bra .1 + +.7 >PUSHWI 0 >PUSHBI IOCTL.CLOSE lda DevID >SYSCALL IOCTL @@ -166,12 +237,15 @@ CS.END DEVNAME .AZ "/DEV/ETH1" MSG.DEV.KO .AZ "NETWORKD:No Device Found, exiting." MSG.DEV.OK .AZ "NETWORKD:Bound To Device : %s\r\n" -LIBTCPIP .AZ "libtcpip2" -LIBETALK .AZ "libetalk" +MSG.LIB .AZ "NETWORKD:Loading %s ...\r\n" DevID .BS 1 -hLIBTCPIP .BS 1 -hLIBETALK .BS 1 +LibCnt .BS 1 +hLIBs .BS LIB.MAX+1 for ending 0 if MAX libs IOCTL .BS S.IOCTL +*ETCNETWORK .AZ "${ROOT}ETC/NETWORK" +ETCNETWORK .AZ "../ETC/NETWORK" +hNetworkFile .BS 1 +hLineBuf .BS 1 hFrameIn .BS 1 *-------------------------------------- .DUMMY