diff --git a/.Floppies/A2OSX.BUILD.po b/.Floppies/A2OSX.BUILD.po index 51c691e6..346d915b 100644 Binary files a/.Floppies/A2OSX.BUILD.po and b/.Floppies/A2OSX.BUILD.po differ diff --git a/.Floppies/A2OSX.SRC.po b/.Floppies/A2OSX.SRC.po index 5e73b19b..4dcf0fb4 100644 Binary files a/.Floppies/A2OSX.SRC.po and b/.Floppies/A2OSX.SRC.po differ diff --git a/DRV/UTHERNET.DRV.S.txt b/DRV/UTHERNET.DRV.S.txt index 44191d1e..dcae8b2a 100644 --- a/DRV/UTHERNET.DRV.S.txt +++ b/DRV/UTHERNET.DRV.S.txt @@ -62,7 +62,7 @@ Dev.Detect >STYA ARGS cmp #DEVID beq .3 -.2 dec DEV.HEADER.NAME+4 +.2 dec DEV.HEADER.NAME+3 txa sec sbc #$10 @@ -127,7 +127,7 @@ Dev.Detect >STYA ARGS *-------------------------------------- CS.END MSG.DETECT >CSTR "UtherNet/CS8900A Driver.\r\n" -MSG.DETECT.OK >CSTR "UtherNet/CS8900A Installed As Device : %S\r\n" +MSG.DETECT.OK >CSTR "UtherNet/CS8900A Installed As Device : %s\r\n" MSG.DETECT.KO >CSTR "Hardware Not Found.\r\n" ARGS .BS 2 *-------------------------------------- @@ -137,7 +137,7 @@ DEV.HEADER cld jmp (DRV.CS.START,x) .DA #0 .BS 6 -DEV.HEADER.NAME >PSTR "ETH7" NAME +DEV.HEADER.NAME >CSTR "ETH7" NAME *-------------------------------------- * Driver Code *-------------------------------------- diff --git a/LIB/LIBTCPIP.S.CFG.txt b/LIB/LIBTCPIP.S.CFG.txt index 713c58c0..19021041 100644 --- a/LIB/LIBTCPIP.S.CFG.txt +++ b/LIB/LIBTCPIP.S.CFG.txt @@ -37,7 +37,7 @@ SET.IPCFG >PULLW ZPTmpPtr1 lda IPCFG+S.IPCFG.HDEV - >SYSCALL GetDevByIDA + >SYSCALL GetDevByID.A >STYA NetDevJmp+1 ldx #DEVMGR.STATUS diff --git a/LIB/LIBTCPIP.S.DNS.txt b/LIB/LIBTCPIP.S.DNS.txt index 4e442a4d..2100d19f 100644 --- a/LIB/LIBTCPIP.S.DNS.txt +++ b/LIB/LIBTCPIP.S.DNS.txt @@ -156,7 +156,7 @@ DNS.ADD.I sta DNS.TmpCache jsr DNS.FIND.FREE >LDYA ZPPtrDNS - >SYSCALL NewPStrYA + >SYSCALL NewStr.YA bcs .9 txa ldy #S.DNSCACHE.hNAME diff --git a/LIB/LIBTCPIP.S.SKT.txt b/LIB/LIBTCPIP.S.SKT.txt index ddd2351f..7e95f4a8 100644 --- a/LIB/LIBTCPIP.S.SKT.txt +++ b/LIB/LIBTCPIP.S.SKT.txt @@ -309,13 +309,7 @@ SKT.AcceptA jsr SKT.GetA.I * ## Out : * A = hFile *\-------------------------------------- -SKT.MkNodA sta NODE.SSOCK+S.NODE.SSOCK.HSKT - - >SYSCALL MkNod.A - - - -K.MkNod.A sta .1+1 +SKT.MkNodA sta .1+1 >LDYAI S.NODE.SSOCK >SYSCALL GetMem0.YA bcs .9 diff --git a/LIB/LIBTCPIP.S.txt b/LIB/LIBTCPIP.S.txt index cb40db4b..771fb071 100644 --- a/LIB/LIBTCPIP.S.txt +++ b/LIB/LIBTCPIP.S.txt @@ -10,7 +10,8 @@ AUTO 6 *-------------------------------------- .INB /A2OSX.BUILD/INC/MACROS.I .INB /A2OSX.BUILD/INC/A2OSX.I - .INB /A2OSX.BUILD/INC/MLI.ERR.I +* .INB /A2OSX.BUILD/INC/MLI.ERR.I +MLI.ERR.IO .EQ $27 .INB /A2OSX.BUILD/INC/NET.I .INB /A2OSX.BUILD/INC/LIBTCPIP.I *-------------------------------------- @@ -295,8 +296,8 @@ NODE.SSOCK .BS 1 S.NODE.HANDLER .BS 1 S.NODE.SSOCK.HSKT .DA #0 S.NODE.SSOCK.OPEN .DA #0 S.NODE.SSOCK.CLOSE - .DA LIBTCPIP.SKT.GetChar.A - .DA LIBTCPIP.SKT.PutChar + .DA #0 + .DA #0 .DA #0 S.NODE.SSOCK.STATUS *-------------------------------------- MAN diff --git a/README.md b/README.md index 6b32a4a4..6d2a098b 100644 --- a/README.md +++ b/README.md @@ -121,7 +121,7 @@ OApple+1,OApple+2,OApple+3 to switch between screens : Kernel Log, text, DHGR. | SHELL | Working | (See Internal Shell commands) | 0.9.1 | | KCONFIG | Working | Kernel Configuration Utility | 0.9.1 | | ---- | ------ | ------- | ----- | -| TCPIP | Working | Socket API.ARP,IP,ICMP,UDP & TCP ok | 0.9 | +| TCPIPD | Working | Socket API.ARP,IP,ICMP,UDP & TCP ok | 0.9 | | DHCPCLNT| Working | rewritten to use new Socket API | 0.9 | | TELNETD | In Progress | | 0.9 | | HTTPD | In Progress | | 0.9 | diff --git a/SBIN/DHCPCLNT.S.txt b/SBIN/DHCPCLNT.S.txt index 7e70390c..992f8b9a 100644 --- a/SBIN/DHCPCLNT.S.txt +++ b/SBIN/DHCPCLNT.S.txt @@ -26,9 +26,10 @@ CS.START cld .DA #$61 6502,Level 1 (65c02) .DA #1 BIN Layout Version 1 .DA 0 - .DA CS.END-CS.START - .DA DS.END-DS.START Data Segment to Allocate - .DA 0 + .DA CS.END-CS.START CS + .DA DS.END-DS.START DS + .DA #16 SS + .DA #6 ZP .DA 0 *-------------------------------------- * Relocation Table @@ -51,7 +52,7 @@ L.DHCP.REQ .DA DHCP.REQ .DA 0 *-------------------------------------- CS.INIT >LDYA L.LIBTCPIP - >SYSCALL LoadLibYA + >SYSCALL LoadLib.YA sta hLIBTCPIP >LIBCALL hLIBTCPIP,LIBTCPIP.GET.IPCFG @@ -245,7 +246,7 @@ CS.QUIT ldy #hSocket >LIBCALL hLIBTCPIP,LIBTCPIP.SKT.CloseA .1 lda hLIBTCPIP - >SYSCALL UnloadLibA + >SYSCALL UnloadLib.A clc rts *-------------------------------------- @@ -439,7 +440,7 @@ Wait.TimeOut ldy #TimeOut rts *-------------------------------------- CS.END -LIBTCPIP >PSTR "libtcpip.o" +LIBTCPIP >CSTR "libtcpip.o" MSG.CFG1 >CSTR "DHCPCLNT:Searching for DHCP servers...\r\n" MSG.CFG2 >CSTR "DHCPCLNT:Reply from DHCP Server at %d.%d.%d.%d, requesting...\r\n" MSG.CFG.KO >CSTR "DHCPCLNT:Time Out [%h].\r\n" diff --git a/SBIN/TCPIPD.S.CFG.txt b/SBIN/TCPIPD.S.CFG.txt new file mode 100644 index 00000000..17beb41a --- /dev/null +++ b/SBIN/TCPIPD.S.CFG.txt @@ -0,0 +1,373 @@ +PR#3 +PREFIX /A2OSX.BUILD +NEW +INC 1 +AUTO 6 + .LIST OFF +*-------------------------------------- +CFG.Read >PUSHW L.HOSTNAME + >LDYA L.MSG.CFG + >SYSCALL PrintF.YA + + jsr CFG.Read.HOSTNAME + bcc .1 + >PUSHA + >LDYA L.MSG.CFG.KO + bra .2 +.1 >LDYA L.MSG.CFG.OK +.2 >SYSCALL PrintF.YA + + >PUSHW L.TCPIP.CONF + >LDYA L.MSG.CFG + >SYSCALL PrintF.YA + + jsr CFG.Read.TCPIP.CONF + bcc .3 + >PUSHA + >LDYA L.MSG.CFG.KO + bra .4 +.3 >LDYA L.MSG.CFG.OK +.4 >SYSCALL PrintF.YA + + >PUSHW L.HOSTS + >LDYA L.MSG.CFG + >SYSCALL PrintF.YA + + jsr CFG.Read.HOSTS + bcc .5 + >PUSHA + >LDYA L.MSG.CFG.KO + bra .6 +.5 >SYSCALL PrintF.YA +.6 >LDYA L.MSG.CFG.OK + >SYSCALL PrintF.YA + rts +*-------------------------------------- +CFG.Read.HOSTNAME + stz CFG.hCfgFile + stz CFG.hCfgPath + + >LDYA L.HOSTNAME + >SYSCALL ExpandStr.YA + bcs .99 + + stx CFG.hCfgPath + pha + + >PUSHWI 0 Aux type + >PUSHBI 4 S.FILEINFO.TYPE.TXT + >PUSHBI SYS.FOpen.R + pla + >PUSHYA + >SYSCALL LoadFile + bcs .9 + stx CFG.hCfgFile + >STYA CFG.FileLen + + txa + >SYSCALL GetMemPtr.A + >STYA ZPIPCfgPtr + +* read 15 chars MAX, until CR or EOF + + ldx #$15 + lda CFG.FileLen+1 + bne .1 File is more than 256....? + + ldx CFG.FileLen + beq .9 len is 0 !!! + +.1 ldy #0 + +.2 lda (ZPIPCfgPtr),y + cmp #13 + beq .8 A CR, end of name + + iny + sta IPCFG+S.IPCFG.HOSTNAME,y + dex + bne .2 + +.8 sty IPCFG+S.IPCFG.HOSTNAME + + jsr CFG.Read.CleanUp + clc + rts + +.9 jsr CFG.Read.CleanUp + sec +.99 rts +*-------------------------------------- +CFG.Read.TCPIP.CONF + stz CFG.hCfgFile + stz CFG.hCfgPath + + >LDYA L.TCPIP.CONF + >SYSCALL ExpandStr.YA + bcs .99 + + stx CFG.hCfgPath + pha + + >PUSHWI 0 Aux type + >PUSHBI 4 S.FILEINFO.TYPE.TXT + >PUSHBI SYS.FOpen.R + pla + >PUSHYA + >SYSCALL LoadFile + bcs .9 + stx CFG.hCfgFile + >STYA CFG.FileLen + txa + >SYSCALL GetMemPtr.A + >STYA ZPIPCfgPtr + +.1 jsr CFG.GetLine + bcs .8 + + jsr CFG.GetKeyword + bcs .1 + + lda CFG.Keyword + bne .3 + + ldy UsrBuf256 + + lda UsrBuf256+1,y + cmp #35 DOMAIN too long!!! + bcs .1 + + sta IPCFG+S.IPCFG.DOMAIN + ldx #0 + +.2 lda UsrBuf256+2,y + sta IPCFG+S.IPCFG.DOMAIN,x + beq .1 + inx + iny + bne .2 + bra .1 + +.9 jsr CFG.Read.CleanUp + sec +.99 rts + +.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 + +.8 jsr CFG.Read.CleanUp + clc + rts +*-------------------------------------- +CFG.Read.HOSTS >PUSHWI 0 Aux type + >PUSHBI 4 S.FILEINFO.TYPE.TXT + >PUSHBI SYS.FOpen.R + >PUSHW L.HOSTS + >SYSCALL LoadFile + bcs .99 + stx CFG.hCfgFile + >STYA CFG.FileLen + + txa + >SYSCALL GetMemPtr.A + >STYA ZPIPCfgPtr + +.89 lda CFG.hCfgFile + >SYSCALL FreeMem.A + clc +.99 rts +*-------------------------------------- +CFG.Read.CleanUp + pha + lda CFG.hCfgPath + beq .1 + >SYSCALL FreeMem.A + +.1 lda CFG.hCfgFile + beq .8 + >SYSCALL FreeMem.A + +.8 pla + rts +*-------------------------------------- +CFG.GetLine stz UsrBuf256 + 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 UsrBuf256,x + cmp #'=' + bne .3 + txa + dec + tay +.3 cpx #64 line too long ? + bne .1 + sec + rts + +.8 tya = found ? + beq .9 + + sta UsrBuf256 + txa + sec + sbc UsrBuf256 + sta UsrBuf256+1,y + stz UsrBuf256+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 UsrBuf256,y + bne .3 + cpy UsrBuf256 + 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 UsrBuf256 + +.1 ldy #0 +.11 lda UsrBuf256+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 UsrBuf256+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 /A2OSX.SRC/SBIN/TCPIPD.S.CFG +LOAD /A2OSX.SRC/SBIN/TCPIPD.S +ASM diff --git a/SBIN/TCPIPD.S.txt b/SBIN/TCPIPD.S.txt new file mode 100644 index 00000000..da9b4978 --- /dev/null +++ b/SBIN/TCPIPD.S.txt @@ -0,0 +1,228 @@ +PR#3 +PREFIX /A2OSX.BUILD +NEW +INC 1 +AUTO 6 + .LIST OFF + .OP 65C02 + .OR $2000 + .TF /A2OSX.BUILD/SBIN/TCPIPD +*-------------------------------------- + .INB /A2OSX.BUILD/INC/MACROS.I + .INB /A2OSX.BUILD/INC/A2OSX.I + .INB /A2OSX.BUILD/INC/LIBTCPIP.I +*-------------------------------------- +ZPIPCfgPtr .EQ ZPBIN +ZPIPDevPtr .EQ ZPBIN+2 +*-------------------------------------- +* File Header (16 Bytes) +*-------------------------------------- +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 #4 ZP + .DA 0 +*-------------------------------------- +* Relocation Table +*-------------------------------------- +.1 .DA CS.INIT + .DA CS.RUN + .DA CS.DOEVENT + .DA CS.QUIT +L.LIBTCPIP .DA LIBTCPIP +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 +*-------------------------------------- +CS.INIT >LDYA L.LIBTCPIP + >SYSCALL LoadLib.YA + bcs .99 + sta hLIBTCPIP + + jsr CS.INIT.DEV + bcs .99 + + jsr CFG.Read continue even if error opening CFG file + + lda IPCFG+S.IPCFG.HOSTNAME + bne .4 + + ldy DefaultHostName + +.2 lda DefaultHostName,y + sta IPCFG+S.IPCFG.HOSTNAME,y + dey + bpl .2 + +.3 lda A2osX.TIMER16 + jsr A2CharAX + sta IPCFG+S.IPCFG.HOSTNAME+7 + stx IPCFG+S.IPCFG.HOSTNAME+8 + + lda A2osX.TIMER16+1 + jsr A2CharAX + sta IPCFG+S.IPCFG.HOSTNAME+9 + stx IPCFG+S.IPCFG.HOSTNAME+10 + +.4 >PUSHW L.IPCFG + >LIBCALL hLIBTCPIP,LIBTCPIP.SET.IPCFG + + lda (pPs) + ora #S.PS.F.EVENT Now accept events + sta (pPs) + + clc +.99 rts +*-------------------------------------- +CS.INIT.DEV >LDYA L.DEVNAME + >SYSCALL GetDevByName.YA + bcc .1 + inc DEVNAME+3 + lda DEVNAME+3 + cmp #'8' + bne CS.INIT.DEV + + >LDYA L.MSG.DEV.KO + >SYSCALL PrintF.YA + lda #$28 MLI.ERR.NODEV + sec + rts + +.1 >STYA ZPIPDevPtr + >STYA NetDevJmp+1 + stx hNetDev + stx IPCFG+S.IPCFG.HDEV + + >PUSHW L.DEVNAME + >LDYA L.MSG.DEV.OK + >SYSCALL PrintF.YA + + ldx #DEVMGR.OPEN + jsr NetDevJmp + bcs .9 + + ldx #DEVMGR.STATUS + jsr NetDevJmp + bcs .9 + >STYA ZPIPDevPtr + + ldy #S.DEVSTAT+2 MAC + ldx #S.IPCFG.MAC + +.2 lda (ZPIPDevPtr),y + sta IPCFG,x + iny + inx + cpx #S.IPCFG.MAC+6 + bne .2 + + clc + rts + +.9 sec + rts +*-------------------------------------- +CS.RUN >LIBCALL hLIBTCPIP,LIBTCPIP.POLL + clc + rts +*-------------------------------------- +CS.DOEVENT lda (pEvent) + bpl .9 + + >LIBCALL hLIBTCPIP,LIBTCPIP.PULSEA + +.9 sec never discard TIME event + rts +*-------------------------------------- +CS.QUIT lda IPCFG+S.IPCFG.HDEV + beq .1 + ldx #DEVMGR.CLOSE + jsr NetDevJmp + +.1 lda hLIBTCPIP + >SYSCALL UnloadLib.A + 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 +*-------------------------------------- +NetDevJmp jmp * +*-------------------------------------- + .INB /A2OSX.SRC/SBIN/TCPIPD.S.CFG +*-------------------------------------- +CS.END +*-------------------------------------- +LIBTCPIP >CSTR "libtcpip.o" +DEVNAME >CSTR "ETH1" +MSG.DEV.KO >CSTR "TCPIPD:No Device Found, exiting.\r\n" +MSG.DEV.OK >CSTR "TCPIPD:Bound To Device : %s\r\n" +MSG.CFG >CSTR "TCPIPD:Reading %S..." +MSG.CFG.KO >CSTR "Failed!!! [%h]\r\n" +MSG.CFG.OK >CSTR "OK.\r\n" +*-------------------------------------- +HOSTNAME >CSTR "${A2OSX}ETC/HOSTNAME" +TCPIP.CONF >CSTR "${A2OSX}ETC/TCPIP.CONF" +HOSTS >CSTR "${A2OSX}ETC/HOSTS" +DefaultHostName >PSTR "a2osx-XXXX" +CFG.Keywords >PSTR "DOMAIN" + >PSTR "IP" + >PSTR "MASK" + >PSTR "GW" + >PSTR "DNS1" + >PSTR "DNS2" +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.DNS1 + .DA #S.IPCFG.DNS2 +hLIBTCPIP .BS 1 +hNetDev .BS 1 +IPCFG .BS S.IPCFG +CFG.hCfgFile .BS 1 +CFG.hCfgPath .BS 1 +CFG.FileLen .BS 2 +CFG.Keyword .BS 1 +CFG.StrBuf .BS 4 +CFG.HexByte .BS 1 +CFG.IP .BS 5 +UsrBuf256 .BS 256 +*-------------------------------------- + .DUMMY + .OR 0 +DS.START +DS.END .ED +*-------------------------------------- +MAN +SAVE /A2OSX.SRC/SBIN/TCPIPD.S +ASM