From fa3964ddffe794177e5f4ce68519fe170430af24 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C3=A9my=20GIBERT?= Date: Mon, 14 Jan 2019 16:37:56 +0000 Subject: [PATCH] Kernel 0.92 --- .Floppies/A2OSX.BUILD.po | Bin 33553920 -> 33553920 bytes BIN/IPCONFIG.S.DEV.txt | 39 --------------- BIN/IPCONFIG.S.DHCP.txt | 6 --- BIN/IPCONFIG.S.ETC.txt | 52 ++------------------ BIN/IPCONFIG.S.txt | 100 ++++++++++++++++++++------------------- INC/LIBETALK.I.txt | 6 +++ LIB/LIBETALK.S.txt | 41 +++++++++++----- LIB/LIBTCPIP.S.txt | 25 +++++----- SBIN/NETWORKD.S.txt | 22 ++++++--- 9 files changed, 119 insertions(+), 172 deletions(-) delete mode 100644 BIN/IPCONFIG.S.DEV.txt diff --git a/.Floppies/A2OSX.BUILD.po b/.Floppies/A2OSX.BUILD.po index 652fdc983a48ee29b9e04face3d998d3c1a25e0b..e09eeb02d6bf3ef6cd0dadb5d63d72f78bcc6a55 100644 GIT binary patch delta 28263 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 j0 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 bSHN$8{{#FE_yh1K;4i@6!hYp~F#rDpzrW_$ diff --git a/BIN/IPCONFIG.S.DEV.txt b/BIN/IPCONFIG.S.DEV.txt deleted file mode 100644 index cb960930..00000000 --- a/BIN/IPCONFIG.S.DEV.txt +++ /dev/null @@ -1,39 +0,0 @@ -NEW -PREFIX -AUTO 4,1 - .LIST OFF -*-------------------------------------- -* PULLW = PTR to S.IPCFG -*-------------------------------------- -DEV.Bind >PUSHBI 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 ldy #S.IPCFG.DevID - sta (pIPCFG),y - - >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 index ba15843c..0249efc8 100644 --- a/BIN/IPCONFIG.S.DHCP.txt +++ b/BIN/IPCONFIG.S.DHCP.txt @@ -6,10 +6,6 @@ AUTO 4,1 DHCP.INIT lda (pIPCFG) and #S.IPCFG.STATUS.OK bne .99 Already Configured, exit - - ldy #S.IPCFG.DevID - lda (pIPCFG),y - beq .98 ldy #S.IPCFG-1 @@ -39,8 +35,6 @@ DHCP.INIT lda (pIPCFG) clc .9 rts -.98 >LDYA L.MSG.DHCP.ND - bra .90 .99 >LDYA L.MSG.DHCP.NA .90 >SYSCALL puts diff --git a/BIN/IPCONFIG.S.ETC.txt b/BIN/IPCONFIG.S.ETC.txt index 2ccc72d5..f7b626af 100644 --- a/BIN/IPCONFIG.S.ETC.txt +++ b/BIN/IPCONFIG.S.ETC.txt @@ -17,23 +17,12 @@ CFG.EtcFiles >LDYAI 256 lda IPCFG+S.IPCFG.HOSTNAME bne .4 - ldy #$ff + >PUSHW A2osX.TIMER16 + >PUSHBI 2 + >PUSHW L.CFG.DefaultHost + >LDYA L.IPCFG.HOSTNAME + >SYSCALL sprintf -.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 @@ -48,8 +37,6 @@ CFG.EtcFiles >LDYAI 256 jsr CFG.Read.PrintF jsr CFG.Read.HOSTS - >LIBCALL hLIBTCPIP,LIBTCPIP.SETCFG - lda CFG.hBuf1 >SYSCALL freemem @@ -381,36 +368,7 @@ 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 -*-------------------------------------- -* grab a copy on the fly for lib function -* OUT : -* Y,A = PTR to S.IPCFG -*-------------------------------------- -GET.IPCFG >LDYA L.IPCFG - clc rts *-------------------------------------- MAN diff --git a/BIN/IPCONFIG.S.txt b/BIN/IPCONFIG.S.txt index fa619b5a..c2470e08 100644 --- a/BIN/IPCONFIG.S.txt +++ b/BIN/IPCONFIG.S.txt @@ -55,9 +55,7 @@ CS.START cld .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 +L.MSG.NODEV .DA MSG.NODEV L.MSG1.DEV .DA MSG1.DEV L.MSG1.DEV.ARP .DA MSG1.DEV.ARP L.MSG1.DEV.IP .DA MSG1.DEV.IP @@ -74,9 +72,6 @@ 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 @@ -90,13 +85,14 @@ 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.Keywords .DA CFG.Keywords J.CFG.Keywords .DA CFG.Read.address .DA CFG.Read.netmask .DA CFG.Read.gateway .DA CFG.Read.nameserver .DA CFG.Read.dnsdomain - .DA 0 *-------------------------------------- * DHCP *-------------------------------------- @@ -106,10 +102,10 @@ L.MSG.DHCP.CFG1 .DA MSG.DHCP.CFG1 L.MSG.DHCP.CFG2 .DA MSG.DHCP.CFG2 L.MSG.DHCP.KO .DA MSG.DHCP.KO L.MSG.DHCP.OK .DA MSG.DHCP.OK -L.MSG.DHCP.ND .DA MSG.DHCP.ND L.MSG.DHCP.NA .DA MSG.DHCP.NA L.DHCP.DISC .DA DHCP.DISC L.DHCP.REQ .DA DHCP.REQ + .DA 0 *-------------------------------------- CS.INIT >LDYA L.LIBTCPIP >SYSCALL LoadLib @@ -118,10 +114,24 @@ CS.INIT >LDYA L.LIBTCPIP .9 rts *-------------------------------------- -CS.RUN -.1 >INC.G ArgCount +CS.RUN >LIBCALL hLIBTCPIP,LIBTCPIP.GETCFG + >STYA pIPCFG + + ldy #S.IPCFG.DevID + lda (pIPCFG),y + bne .1 + + >LDYA L.MSG.NODEV + >SYSCALL puts + lda #MLI.E.NODEV + sec + rts + +.1 sta IPCFG+S.IPCFG.DevID + + >INC.G ArgIndex >SYSCALL ArgV - bcs .7 + bcs .4 >STYA ZPPtr1 @@ -151,24 +161,28 @@ CS.RUN sta (pData),y bra .1 -.7 -*-------------------------------------- -CS.RUN.STATUS >PUSHBI 0 - >LDYA L.MSG0 - >SYSCALL printf +.4 lda (pIPCFG) S.IPCFG.STATUS + bne CS.RUN.DUMP - >LIBCALL hLIBTCPIP,LIBTCPIP.GETCFG - >STYA pIPCFG + jsr CFG.EtcFiles - ldy #S.IPCFG.DevID +* jsr DHCP.INIT +* bcs .8 + +* jsr DHCP.RUN +* jsr DHCP.QUIT + +.8 >PUSHW L.IPCFG + >LIBCALL hLIBTCPIP,LIBTCPIP.SETCFG + +* lda #0 +* sec +* rts +*-------------------------------------- +CS.RUN.DUMP ldy #S.IPCFG.DevID lda (pIPCFG),y - bne .1 - >LDYA L.MSG0.NL - >SYSCALL puts - jmp CS.RUN.DONE - -.1 tax + tax lda Dev.Table,x sta pFD lda Dev.Table+1,x @@ -190,10 +204,7 @@ CS.RUN.STATUS >PUSHBI 0 lda (pIPCFG),y >SYSCALL IOCTL -CS.RUN.DUMP >LDYA L.MSG0.L - >SYSCALL puts - - ldy #DCB.NIC+S.DCB.NIC.MAC+5 +CS.RUN.DUMPNIC ldy #DCB.NIC+S.DCB.NIC.MAC+5 ldx #6 .1 lda (pData),y @@ -360,7 +371,7 @@ CS.RUN.DUMPIP >PUSHBI 0 >LDYA L.MSG2.HOSTNAME >SYSCALL printf -CS.RUN.DONE lda #0 tell TSKMGR that all done ok, but + lda #0 tell TSKMGR that all done ok, but sec we do not want to stay in memory rts *-------------------------------------- @@ -392,26 +403,27 @@ Wait.TimeOut ldy #TimeOut lda (pData),y rts *-------------------------------------- - .INB USR/SRC/SBIN/IPCONFIG.S.DEV .INB USR/SRC/SBIN/IPCONFIG.S.DHCP .INB USR/SRC/SBIN/IPCONFIG.S.ETC *-------------------------------------- CS.END LIBTCPIP .AZ "libtcpip2" +hLIBTCPIP .BS 1 *-------------------------------------- -OptionList >PSTR "DESdes" -OptionVars .DA #bDHCP,#bETC,#bSet,#bDHCP,#bETC,#bSet +OptionList >PSTR "DEde" +OptionVars .DA #bDHCP,#bETC,#bDHCP,#bETC *-------------------------------------- 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" +MSG.NODEV .AZ "TCP/IP not bound to any device." *-------------------------------------- -MSG1.DEV .AS "Device Configuration :\r\n" +IPCFG .BS S.IPCFG +IOCTL .BS S.IOCTL +*-------------------------------------- +MSG1.DEV .AS "NIC Device Configuration :\r\n" .AS " Device ID : $%h\r\n" .AS " Device Name : %s\r\n" .AS " Device Type : %S\r\n" @@ -433,13 +445,9 @@ MSG2.IP .AZ " IP/Mask : %d.%d.%d.%d/%d.%d.%d.%d\r\n" 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.KO .AZ "Not Found. [%h]\r\n" MSG.CFG.OK .AZ "OK." MSG.DNS.ADD .AZ " - Adding static host %d.%d.%d.%d %s..." *-------------------------------------- @@ -448,7 +456,7 @@ TCPIP.CONF .AZ "${ROOT}ETC/TCPIP.CONF" HOSTS .AZ "${ROOT}ETC/HOSTS" HST.SScanF .AZ "%d.%d.%d.%d" *-------------------------------------- -CFG.DefaultHost .AZ "a2osx-XXXX" +CFG.DefaultHost .AZ "a2osx-%H" CFG.Keywords >PSTR "address" >PSTR "netmask" >PSTR "gateway" @@ -462,13 +470,11 @@ CFG.hCfgPath .BS 1 CFG.hCfgFile .BS 1 CFG.IP .BS 4 CFG.HOSTS.SScanF .AZ "%d.%d.%d.%d %s %s" -IPCFG .BS S.IPCFG *-------------------------------------- MSG.DHCP.CFG1 .AZ "Searching for DHCP servers..." MSG.DHCP.CFG2 .AZ "Reply from DHCP Server at %d.%d.%d.%d, requesting...\r\n" MSG.DHCP.KO .AZ "Time Out [%h].\r\n" MSG.DHCP.OK .AZ "Success:[IP=%d.%d.%d.%d/%d.%d.%d.%d]\r\n" -MSG.DHCP.ND .AZ "No Device, exiting." MSG.DHCP.NA .AZ "TCPIP Already configured, exiting." *-------------------------------------- SA.LOCAL .DA #AF.INET S.SOCKADDR.AF @@ -522,11 +528,9 @@ DHCP.REQ.LEN .EQ *-DHCP.REQ .DUMMY .OR 0 DS.START -ArgCount .BS 1 +ArgIndex .BS 1 bDHCP .BS 1 bETC .BS 1 -bSet .BS 1 -IOCTL .BS S.IOCTL DIB .BS S.DIB DCB.NIC .BS S.DCB.NIC TimeOut .BS 1 diff --git a/INC/LIBETALK.I.txt b/INC/LIBETALK.I.txt index dfc60c2c..0b5ce527 100644 --- a/INC/LIBETALK.I.txt +++ b/INC/LIBETALK.I.txt @@ -10,6 +10,12 @@ LIBETALK.GETCFG .EQ 6 LIBETALK.INCOMING .EQ 8 LIBETALK.PULSE .EQ 10 *-------------------------------------- +S.ETKCFG.STATUS .EQ 0 +S.ETKCFG.DevID .EQ 1 +S.ETKCFG.MAC .EQ 2 +* +S.ETKCFG .EQ 8 +*-------------------------------------- MAN SAVE INC/LIBETALK.I LOAD USR/SRC/LIB/LIBETALK.S diff --git a/LIB/LIBETALK.S.txt b/LIB/LIBETALK.S.txt index b50e8a8f..e0651b3b 100644 --- a/LIB/LIBETALK.S.txt +++ b/LIB/LIBETALK.S.txt @@ -10,6 +10,7 @@ AUTO 4,1 .INB INC/A2OSX.I .INB INC/NIC.I .INB INC/ETH.I + .INB INC/LIBETALK.I *-------------------------------------- ZPFrameInPtr .EQ ZPLIB ZPFrameInLen .EQ ZPLIB+2 @@ -24,6 +25,7 @@ ZPDataOutPtr .EQ ZPLIB+12 ZPDataOutLen .EQ ZPLIB+14 ZPIOCTL .EQ ZPLIB+16 +ZPTmpPtr1 .EQ ZPLIB+18 *-------------------------------------- * File Header (16 Bytes) *-------------------------------------- @@ -42,21 +44,36 @@ CS.START cld .1 .DA LIB.LOAD .DA LIB.UNLOAD - .DA SETCFG - .DA GETCFG + .DA CFG.SET + .DA CFG.GET .DA INCOMING .DA PULSE *-------------------------------------- +L.ETKCFG .DA ETKCFG .DA 0 *-------------------------------------- LIB.LOAD *-------------------------------------- LIB.UNLOAD + + clc + rts *-------------------------------------- -SETCFG +CFG.SET >PULLW ZPTmpPtr1 IPCFG + + ldy #0 + +.1 lda (ZPTmpPtr1),y + sta ETKCFG,y + iny + cpy #S.ETKCFG + bne .1 + + clc + rts *-------------------------------------- -GETCFG +CFG.GET >LDYA L.ETKCFG clc rts *-------------------------------------- @@ -64,29 +81,27 @@ INCOMING sta hFrameIn >PULLW ZPIOCTL ldy #S.IOCTL.BUFPTR+3 - ldx #3 -.1 lda (ZPIOCTL),y - sta ZPFrameInPtr,x +.1 lda (ZPIOCTL),y Get Frame Ptr & Len + sta ZPFrameInPtr-S.IOCTL.BUFPTR,y dey - dex bpl .1 sec rts *-------------------------------------- -* Expire = every sec -* Retry = every 100 msec +*-------------------------------------- +* A = S.EVT.F *-------------------------------------- PULSE and #S.EVT.F.T1SEC - beq .1 + beq .9 -.1 clc - rts +.9 rts *-------------------------------------- CS.END *-------------------------------------- hFrameIn .BS 1 +ETKCFG .BS S.ETKCFG *-------------------------------------- MAN SAVE USR/SRC/LIB/LIBETALK.S diff --git a/LIB/LIBTCPIP.S.txt b/LIB/LIBTCPIP.S.txt index f0c5e850..bce8111c 100644 --- a/LIB/LIBTCPIP.S.txt +++ b/LIB/LIBTCPIP.S.txt @@ -189,12 +189,14 @@ LIB.UNLOAD.8 clc rts *-------------------------------------- INCOMING sta hFrameIn - ldx #3 + + >PULLW ZPTmpPtr1 + ldy #S.IOCTL.BUFPTR+3 -.10 lda IOCTL+S.IOCTL.BUFPTR,x Get Frame Ptr & Len - sta ZPFrameInPtr,x - dex - bpl .10 +.1 lda (ZPTmpPtr1),y Get Frame Ptr & Len + sta ZPFrameInPtr-S.IOCTL.BUFPTR,y + dey + bpl .1 ldy #S.ETH.EII.TYPE lda (ZPFrameInPtr),y @@ -203,24 +205,23 @@ INCOMING sta hFrameIn lda (ZPFrameInPtr),y cmp #S.ETH.EII.TYPE.ARP - bne .1 + bne .2 cpx /S.ETH.EII.TYPE.ARP - bne .1 + bne .2 jmp ARP.IN -.1 cmp #S.ETH.EII.TYPE.IP +.2 cmp #S.ETH.EII.TYPE.IP bne .9 cpx /S.ETH.EII.TYPE.IP bne .9 jmp IP.IN -.9 lda hFrameIn - >SYSCALL FreeMem - -.99 rts +.9 sec + rts *-------------------------------------- +* A = S.EVT.F * Expire = every sec * Retry = every 100 msec *-------------------------------------- diff --git a/SBIN/NETWORKD.S.txt b/SBIN/NETWORKD.S.txt index ba5e5be8..9ffc83f9 100644 --- a/SBIN/NETWORKD.S.txt +++ b/SBIN/NETWORKD.S.txt @@ -18,7 +18,7 @@ AUTO 4,1 .DUMMY .OR ZPBIN ZS.START -* MyPtr .BS 2 +pIPCFG .BS 2 ZS.END .ED *-------------------------------------- @@ -70,7 +70,7 @@ CS.RUN >PUSHBI 0 sec rts -.1 sta hFD +.1 sta DevID >PUSHW L.DEVNAME >PUSHBI 2 @@ -81,6 +81,13 @@ CS.RUN >PUSHBI 0 >SYSCALL LoadLib bcs .2 sta hLIBTCPIP + + >LIBCALL hLIBTCPIP,LIBTCPIP.GETCFG + >STYA pIPCFG + + ldy #S.IPCFG.DevID + lda DevID + sta (pIPCFG),y .2 >LDYA L.LIBETALK >SYSCALL LoadLib @@ -92,7 +99,7 @@ CS.RUN.LOOP >SLEEP >PUSHW L.IOCTL >PUSHBI IOCTL.READ - lda hFD + lda DevID >SYSCALL IOCTL bcs CS.RUN.LOOP No Frame @@ -129,6 +136,7 @@ CS.DOEVENT lda (pEvent) .1 ldx hLIBETALK beq .9 + lda (pEvent) >LIBCALL hLIBETALK,LIBETALK.PULSE @@ -147,7 +155,7 @@ CS.QUIT lda hLIBTCPIP .2 >PUSHWI 0 >PUSHBI IOCTL.CLOSE - lda hFD + lda DevID >SYSCALL IOCTL clc @@ -156,11 +164,11 @@ CS.QUIT lda hLIBTCPIP CS.END *-------------------------------------- DEVNAME .AZ "/DEV/ETH1" -MSG.DEV.KO .AZ "No Device Found, exiting." -MSG.DEV.OK .AZ "Bound To Device : %s\r\n" +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" -hFD .BS 1 +DevID .BS 1 hLIBTCPIP .BS 1 hLIBETALK .BS 1 IOCTL .BS S.IOCTL