diff --git a/.Floppies/A2OSX.BUILD.po b/.Floppies/A2OSX.BUILD.po index e7c99521..b638fc2e 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 39adefc8..62ced5a4 100644 Binary files a/.Floppies/A2OSX.SRC.po and b/.Floppies/A2OSX.SRC.po differ diff --git a/ETC/TCPIP.CONF b/ETC/TCPIP.CONF index fdef07cf..be11210e 100644 --- a/ETC/TCPIP.CONF +++ b/ETC/TCPIP.CONF @@ -1,11 +1,11 @@ NEW PREFIX /A2OSX.BUILD AUTO 4,1 -IP=192.168.1.150 -MASK=255.255.255.0 -GW=192.168.1.254 -DNS1=192.168.1.2 -DNS2=192.168.1.1 -DOMAIN=coincoin.hd.free.fr +address 192.168.1.150 +netmask 255.255.255.0 +gateway 192.168.1.254 +nameserver 192.168.1.2 +nameserver 192.168.1.254 +dnsdomain coincoin.hd.free.fr MAN TEXT ETC/TCPIP.CONF diff --git a/INC/A2osX.I.txt b/INC/A2osX.I.txt index bd13f4d0..3376adec 100644 --- a/INC/A2osX.I.txt +++ b/INC/A2osX.I.txt @@ -101,7 +101,7 @@ SYS.GetC .EQ $24 SYS.GetChar .EQ $26 SYS.FPutS .EQ $28 SYS.PutS .EQ $2A -* .EQ $2C +SYS.FGetS .EQ $2C * .EQ $2E SYS.FOpen .EQ $30 diff --git a/LIB/LIBTCPIP.S.CFG.txt b/LIB/LIBTCPIP.S.CFG.txt index 1a5e910d..36440ea9 100644 --- a/LIB/LIBTCPIP.S.CFG.txt +++ b/LIB/LIBTCPIP.S.CFG.txt @@ -5,23 +5,43 @@ AUTO 4,1 *-------------------------------------- * PULLW = PTR to S.IPCFG *-------------------------------------- -SET.IPCFG >PULLW ZPTmpPtr1 IPCFG +CFG.Init >LDYA L.DEVNAME + >SYSCALL GetDevByName + bcc .1 + inc DEVNAME+3 + lda DEVNAME+3 + cmp #'8' + bne CFG.Init + >LDYA L.MSG.DEV.KO + >SYSCALL printf + + lda #MLI.E.NODEV +.9 sec + rts + +.1 stx IPCFG+S.IPCFG.HDEV + + >PUSHW L.DEVNAME + >LDYA L.MSG.DEV.OK + >SYSCALL printf + + >PUSHWI 0 + >PUSHBI IOCTL.OPEN + lda IPCFG+S.IPCFG.HDEV + >SYSCALL IOCTL + bcs .9 + >LDYA L.DCB.NIC >STYA IOCTL+S.IOCTL.BUFPTR lda #S.IOCTL.STATCODE.GETDCB sta IOCTL+S.IOCTL.STATCODE - ldx #IOCTL.STATUS - jsr SET.IPCFG.IOCTL - - ldy #0 - -.1 lda (ZPTmpPtr1),y - sta IPCFG,y - iny - cpy #S.IPCFG - bne .1 + >PUSHW L.IOCTL + >PUSHBI IOCTL.STATUS + lda IPCFG+S.IPCFG.HDEV + >SYSCALL IOCTL + bcs .9 ldx #5 @@ -43,34 +63,421 @@ SET.IPCFG >PULLW ZPTmpPtr1 IPCFG dex bpl .3 - lda DCB.NIC+S.DCB.NIC.FLAGS - and #S.DCB.NIC.FLAGS.ARPOFFLOAD +CFG.EtcFiles >LDYA L.MSG.CFG + >SYSCALL printf + + jsr CFG.Read.HOSTNAME + jsr CFG.Read.Result + + lda IPCFG+S.IPCFG.HOSTNAME + bne .4 + + ldy #$ff + +.2 iny + lda DefaultHostName,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 >PUSHW L.TCPIP.CONF + >LDYA L.MSG.CFG + >SYSCALL printf + + jsr CFG.Read.TCPIP.CONF + jsr CFG.Read.Result + + >PUSHW L.HOSTS + >LDYA L.MSG.CFG + >SYSCALL printf + + jsr CFG.Read.HOSTS + jsr CFG.Read.Result + + jmp SET.IPCFG.I +*-------------------------------------- +CFG.Read.Result bcc .1 + >PUSHA + >LDYA L.MSG.CFG.KO + bra .2 +.1 >LDYA L.MSG.CFG.OK +.2 >SYSCALL printf + rts +*-------------------------------------- +CFG.Read.HOSTNAME + >LDYA L.HOSTNAME + jsr CFG.Read.LoadFile + bcs .9 + +* 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 (ZPTmpPtr1),y + cmp #13 + beq .8 A CR, end of name + + sta IPCFG+S.IPCFG.HOSTNAME,y + iny + dex + bne .2 + +.8 lda #0 + sta IPCFG+S.IPCFG.HOSTNAME,y + + jsr CFG.Read.CleanUp + clc + rts + +.9 jsr CFG.Read.CleanUp + sec + rts +*-------------------------------------- +CFG.Read.TCPIP.CONF + >LDYA L.TCPIP.CONF + jsr CFG.Read.LoadFile + bcs .9 + +.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 + 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 >LDYA L.HOSTS + + jsr CFG.Read.LoadFile + bcs .9 + + +.8 jsr CFG.Read.CleanUp + clc + rts + +.9 jsr CFG.Read.CleanUp + sec + rts +*-------------------------------------- +CFG.Read.LoadFile + stz CFG.hCfgFile + stz CFG.hCfgPath + + >SYSCALL ExpandStr + bcs .9 + + stx CFG.hCfgPath + pha + + >PUSHWI 0 Aux type + >PUSHBI 4 S.FI.T.TXT + >PUSHBI SYS.FOpen.R + pla + >SYSCALL LoadFile + bcs .9 + + stx CFG.hCfgFile + >STYA CFG.FileLen + txa + >SYSCALL GetMemPtr + >STYA ZPTmpPtr1 +.9 rts +*-------------------------------------- +CFG.Read.CleanUp + pha + lda CFG.hCfgPath + beq .1 + >SYSCALL FreeMem + +.1 lda CFG.hCfgFile + beq .8 + >SYSCALL FreeMem + +.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 (ZPTmpPtr1) + inc ZPTmpPtr1 + bne .9 + inc ZPTmpPtr1+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 +*-------------------------------------- +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 lda DCB.NIC+S.DCB.NIC.FLAGS + and #S.DCB.NIC.FLAGS.ARPOFFLOAD + beq .2 ldx #11 -.31 lda IPCFG+S.IPCFG.IP,x +.1 lda IPCFG+S.IPCFG.IP,x sta DCB.NIC+S.DCB.NIC.IP,x dex - bpl .31 + bpl .1 -* lda S.IOCTL.CTRLCODE.SETDCB same as lda S.IOCTL.STATCODE.GETDCB -* sta S.IOCTL.CTRLCODE same as sta S.IOCTL.STATCODE + lda S.IOCTL.CTRLCODE.SETDCB + sta S.IOCTL.CTRLCODE - ldx #IOCTL.CONTROL - jsr SET.IPCFG.IOCTL + >PUSHW L.IOCTL + >PUSHBI IOCTL.CONTROL + lda IPCFG+S.IPCFG.HDEV + >SYSCALL IOCTL + bcs .9 -.4 lda hDNSSocket1 - beq .41 +.2 lda hDNSSocket1 + beq .3 jsr SKT.Close stz hDNSSocket1 -.41 lda hDNSSocket2 - beq .42 +.3 lda hDNSSocket2 + beq .4 jsr SKT.Close stz hDNSSocket2 -.42 lda IPCFG+S.IPCFG.DNS1 +.4 lda IPCFG+S.IPCFG.DNS1 beq .6 ldx #3 @@ -110,13 +517,6 @@ SET.IPCFG >PULLW ZPTmpPtr1 IPCFG .8 clc .9 rts - -SET.IPCFG.IOCTL >PUSHW L.IOCTL - txa - >PUSHA - lda IPCFG+S.IPCFG.HDEV - >SYSCALL IOCTL - rts *-------------------------------------- * grab a copy on the fly for lib function * OUT : diff --git a/LIB/LIBTCPIP.S.txt b/LIB/LIBTCPIP.S.txt index 391e46c8..1475e07b 100644 --- a/LIB/LIBTCPIP.S.txt +++ b/LIB/LIBTCPIP.S.txt @@ -83,6 +83,15 @@ CS.START cld .DA SKT.Read .DA SKT.ReadFrame *-------------------------------------- +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 L.ARP.REQ .DA ARP.REQ L.ARP.REP .DA ARP.REP @@ -110,9 +119,14 @@ L.TCP.IN.JMP .DA TCP.IN.JMP.CLOSED *-------------------------------------- LIB.LOAD ldx RefCount bne .8 - + sta FD.SSOCK+S.FD.HANDLER + + jsr CFG.Init + bcs .9 + jsr ARP.CLEAR + jsr DNS.CLEAR >LDYAI K.SKTTABLE.SIZE*S.SOCKET @@ -122,13 +136,22 @@ LIB.LOAD ldx RefCount stx hSocketTable .8 inc RefCount + clc .9 rts *-------------------------------------- LIB.UNLOAD dec RefCount bne LIB.UNLOAD.8 - lda hSocketTable + lda IPCFG+S.IPCFG.HDEV + beq .1 + + >PUSHWI 0 + >PUSHBI IOCTL.CLOSE + lda IPCFG+S.IPCFG.HDEV + >SYSCALL IOCTL + +.1 lda hSocketTable beq LIB.UNLOAD.8 >SYSCALL FreeMem @@ -224,6 +247,53 @@ GetDynPort inc DYNPORT.LAST *-------------------------------------- CS.END *-------------------------------------- +DEVNAME .AZ "ETH1" +MSG.DEV.KO .AZ "TCPIPD:No Device Found, exiting.\r\n" +MSG.DEV.OK .AZ "TCPIPD:Bound To Device : %s\r\n" +MSG.CFG .AZ "TCPIPD:Reading %s..." +MSG.CFG.KO .AZ "Failed!!! [%h]\r\n" +MSG.CFG.OK .AZ "OK.\r\n" +*-------------------------------------- +HOSTNAME .AZ "${A2OSX}ETC/HOSTNAME" +TCPIP.CONF .AZ "${A2OSX}ETC/TCPIP.CONF" +HOSTS .AZ "${A2OSX}ETC/HOSTS" +DefaultHostName .AZ "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 +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 +*-------------------------------------- +FD.SSOCK .BS 1 S.FD.HANDLER + .DA #S.FD.T.SSOCK + .BS 1 S.FD.SSOCK.HSKT + .DA #0 S.FD.SSOCK.OPEN + .DA #0 S.FD.SSOCK.CLOSE + .DA #0 + .DA #0 + .DA #0 S.FD.SSOCK.STATUS +*-------------------------------------- +IOCTL .BS S.IOCTL +DCB.NIC .BS S.DCB.NIC +IPCFG .BS S.IPCFG +ARP.CACHE .BS K.ARPCACHE.SIZE*S.ARPCACHE +DNS.CACHE .BS K.DNSCACHE.SIZE*S.DNSCACHE +*-------------------------------------- ARP.REQ .DA S.ARP Frame size ARP.REQ.DSTMAC .HS FFFFFFFFFFFF ARP.REQ.SRCMAC .BS 6 @@ -266,9 +336,6 @@ DNS.MSG.ID .BS 2 .BS 6 ANCOUNT,NSCOUNT,ARCOUNT DNS.MSG.NAME .BS K.DNS.MAXLEN+6 *-------------------------------------- -IPCFG .BS S.IPCFG -ARP.CACHE .BS K.ARPCACHE.SIZE*S.ARPCACHE -DNS.CACHE .BS K.DNSCACHE.SIZE*S.DNSCACHE FRM.QUEUE.Tail .BS 1 FRM.QUEUE.Head .BS 1 FRM.QUEUE.hMem .BS K.FRMQUEUE.SIZE @@ -296,16 +363,6 @@ bTextMode .BS 1 HST.SScanF .AZ "%d.%d.%d.%d" IP.ID .BS 2 IP.CHECKSUM .BS 4 -FD.SSOCK .BS 1 S.FD.HANDLER - .DA #S.FD.T.SSOCK - .BS 1 S.FD.SSOCK.HSKT - .DA #0 S.FD.SSOCK.OPEN - .DA #0 S.FD.SSOCK.CLOSE - .DA #0 - .DA #0 - .DA #0 S.FD.SSOCK.STATUS -IOCTL .BS S.IOCTL -DCB.NIC .BS S.DCB.NIC *-------------------------------------- MAN SAVE /A2OSX.SRC/LIB/LIBTCPIP.S diff --git a/SBIN/TCPIPD.S.CFG.txt b/SBIN/TCPIPD.S.CFG.txt deleted file mode 100644 index 1c58d892..00000000 --- a/SBIN/TCPIPD.S.CFG.txt +++ /dev/null @@ -1,381 +0,0 @@ -NEW -PREFIX /A2OSX.BUILD -AUTO 4,1 - .LIST OFF -*-------------------------------------- -CFG.Read >PUSHW L.HOSTNAME - >LDYA L.MSG.CFG - >SYSCALL printf - - jsr CFG.Read.HOSTNAME - jsr CFG.Read.Result - - lda IPCFG+S.IPCFG.HOSTNAME - bne .4 - - ldy #$ff - -.2 iny - lda DefaultHostName,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 >PUSHW L.TCPIP.CONF - >LDYA L.MSG.CFG - >SYSCALL printf - - jsr CFG.Read.TCPIP.CONF - jsr CFG.Read.Result - - >PUSHW L.HOSTS - >LDYA L.MSG.CFG - >SYSCALL printf - - jsr CFG.Read.HOSTS -*-------------------------------------- -CFG.Read.Result bcc .1 - >PUSHA - >LDYA L.MSG.CFG.KO - bra .2 -.1 >LDYA L.MSG.CFG.OK -.2 >SYSCALL printf - rts -*-------------------------------------- -CFG.Read.HOSTNAME - >LDYA L.HOSTNAME - jsr CFG.Read.LoadFile - bcs .9 - -* 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 - - sta IPCFG+S.IPCFG.HOSTNAME,y - iny - dex - bne .2 - -.8 lda #0 - sta IPCFG+S.IPCFG.HOSTNAME,y - - jsr CFG.Read.CleanUp - clc - rts - -.9 jsr CFG.Read.CleanUp - sec - rts -*-------------------------------------- -CFG.Read.TCPIP.CONF - >LDYA L.TCPIP.CONF - jsr CFG.Read.LoadFile - bcs .9 - -.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 - 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 >LDYA L.HOSTS - - jsr CFG.Read.LoadFile - bcs .9 - - -.8 jsr CFG.Read.CleanUp - clc - rts - -.9 jsr CFG.Read.CleanUp - sec - rts -*-------------------------------------- -CFG.Read.LoadFile - stz CFG.hCfgFile - stz CFG.hCfgPath - - >SYSCALL ExpandStr - bcs .9 - - stx CFG.hCfgPath - pha - - >PUSHWI 0 Aux type - >PUSHBI 4 S.FI.T.TXT - >PUSHBI SYS.FOpen.R - pla - >SYSCALL LoadFile - bcs .9 - - stx CFG.hCfgFile - >STYA CFG.FileLen - txa - >SYSCALL GetMemPtr - >STYA ZPIPCfgPtr -.9 rts -*-------------------------------------- -CFG.Read.CleanUp - pha - lda CFG.hCfgPath - beq .1 - >SYSCALL FreeMem - -.1 lda CFG.hCfgFile - beq .8 - >SYSCALL FreeMem - -.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 -*-------------------------------------- -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 -*-------------------------------------- -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 index f2dc0831..ef898880 100644 --- a/SBIN/TCPIPD.S.txt +++ b/SBIN/TCPIPD.S.txt @@ -35,16 +35,6 @@ CS.START cld .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 @@ -52,14 +42,6 @@ CS.INIT >LDYA L.LIBTCPIP bcs .99 sta hLIBTCPIP - jsr CS.INIT.DEV - bcs .99 - - jsr CFG.Read continue even if error opening CFG file - - >PUSHW L.IPCFG - >LIBCALL hLIBTCPIP,LIBTCPIP.SET.IPCFG - lda (pPs) ora #S.PS.F.EVENT Now accept events sta (pPs) @@ -67,38 +49,6 @@ CS.INIT >LDYA L.LIBTCPIP clc .99 rts *-------------------------------------- -CS.INIT.DEV >LDYA L.DEVNAME - >SYSCALL GetDevByName - bcc .1 - inc DEVNAME+3 - lda DEVNAME+3 - cmp #'8' - bne CS.INIT.DEV - - >LDYA L.MSG.DEV.KO - >SYSCALL printf - - lda #MLI.E.NODEV - sec - rts - -.1 txa - >STA.G hDev - sta IPCFG+S.IPCFG.HDEV - - >PUSHW L.DEVNAME - >LDYA L.MSG.DEV.OK - >SYSCALL printf - - >PUSHWI 0 - >PUSHBI IOCTL.OPEN - >LDA.G hDev - >SYSCALL IOCTL - rts - -.9 sec - rts -*-------------------------------------- CS.RUN >LIBCALL hLIBTCPIP,LIBTCPIP.POLL clc rts @@ -110,62 +60,19 @@ CS.DOEVENT lda (pEvent) .9 sec never discard TIME event rts *-------------------------------------- -CS.QUIT >LDA.G hDev - beq .1 - - >PUSHWI 0 - >PUSHBI IOCTL.CLOSE - >LDA.G hDev - >SYSCALL IOCTL - -.1 lda hLIBTCPIP +CS.QUIT lda hLIBTCPIP >SYSCALL UnloadLib clc rts -*-------------------------------------- - .INB /A2OSX.SRC/SBIN/TCPIPD.S.CFG *-------------------------------------- CS.END *-------------------------------------- LIBTCPIP .AZ "libtcpip.o" -DEVNAME .AZ "ETH1" -MSG.DEV.KO .AZ "TCPIPD:No Device Found, exiting.\r\n" -MSG.DEV.OK .AZ "TCPIPD:Bound To Device : %s\r\n" -MSG.CFG .AZ "TCPIPD:Reading %s..." -MSG.CFG.KO .AZ "Failed!!! [%h]\r\n" -MSG.CFG.OK .AZ "OK.\r\n" -*-------------------------------------- -HOSTNAME .AZ "${A2OSX}ETC/HOSTNAME" -TCPIP.CONF .AZ "${A2OSX}ETC/TCPIP.CONF" -HOSTS .AZ "${A2OSX}ETC/HOSTS" -DefaultHostName .AZ "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 -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 -hDev .BS 1 DS.END .ED *-------------------------------------- MAN diff --git a/SYS/KERNEL.S.STDIO.txt b/SYS/KERNEL.S.STDIO.txt index 16279e09..8a98d2b2 100644 --- a/SYS/KERNEL.S.STDIO.txt +++ b/SYS/KERNEL.S.STDIO.txt @@ -70,7 +70,7 @@ K.PutS >STYA K.S.IOCTL+S.IOCTL.BUFPTR * # FPutS * Write Str to FILE * ## C -* `int fputs ( const char * str, hFILE stream );` +* `int fputs (hFILE stream, const char * str );` * **In:** * PUSHB : hFILE * Y,A: str @@ -100,6 +100,28 @@ K.FPutS.I jsr IO.SELECT stx K.S.IOCTL+S.IOCTL.BYTECNT+1 jmp IO.Write.I */-------------------------------------- +* # FGetS +* read bytes from stream into the array +* pointed to by s, until n-1 bytes are read, or a is read and +* transferred to s, or an end-of-file condition is encountered. The +* string is then terminated with a null byte. +* ## C +* `char *fgets(hFILE stream, char * s, int n);` +* ## ASM +* **In:** +* `>PUSHW n` +* `>PUSHW s` +* `lda hFILE` +* `>SYSCALL fgets` +* **Out:** +* Y,A: s +* CC = success +*\-------------------------------------- +K.FGetS + + clc + rts +*/-------------------------------------- * # PrintF/SPrintF/FPrintF * Prints C-Style String * ## C @@ -642,6 +664,7 @@ BCDBUF .EQ ARG * + %U : dword * + %h : HEX byte * + %H : HEX word +* + %s : string * `>PUSHW ptr` * `...` * `>PUSHBI bytecount` @@ -681,12 +704,11 @@ K.SScanF >STYA ZPPtr2 String to Scan bne .21 inc ZPPtr1+1 -.21 ldx #K.SScanFJMP-K.SScanFTBL-2 +.21 ldx #K.SScanFCNT-K.SScanFTBL-1 .3 cmp K.SScanFTBL,x beq .4 dex - dex bpl .3 .9 jsr .8 @@ -717,13 +739,13 @@ K.SScanF >STYA ZPPtr2 String to Scan iny sty K.SScanF.ByteIdx - lda K.SScanFTBL+1,x Get VAR size jmp (K.SScanFJMP,x) *-------------------------------------- K.SScanF.ByteCnt .BS 1 K.SScanF.ByteIdx .BS 1 *-------------------------------------- -K.SScanFTBL .DA #'i,#1,#'d,#1,#'I,#2,#'D,#2,#'l,#4,#'u,#4,#'h,#1,#'H,#2 +K.SScanFTBL .DA #'i,#'d,#'I,#'D,#'l,#'u,#'h,#'H,#'s +K.SScanFCNT .DA #1, #1, #2, #2, #4, #4, #1, #2 K.SScanFJMP .DA K.SScanF.I .DA K.SScanF.D .DA K.SScanF.II @@ -732,28 +754,26 @@ K.SScanFJMP .DA K.SScanF.I .DA K.SScanF.U .DA K.SScanF.H .DA K.SScanF.HH + .DA K.SScanF.S *-------------------------------------- K.SScanF.I K.SScanF.D K.SScanF.II K.SScanF.DD K.SScanF.L -K.SScanF.U pha Save VAL size +K.SScanF.U lda K.SScanFTBL+1,x Get VAR size + pha Save VAL size jsr STDLIB.GetDec bra K.SScanF.GetVAL *-------------------------------------- K.SScanF.HH -K.SScanF.H pha +K.SScanF.H lda K.SScanFTBL+1,x Get VAR size + pha jsr STDLIB.GetHex -K.SScanF.GetVAL tya Y=char count parsed - clc - adc ZPPtr2 - sta ZPPtr2 - bcc .1 - inc ZPPtr2+1 +K.SScanF.GetVAL jsr K.SScanF.Fwd Y=char count parsed .1 ply get back VAL size @@ -763,6 +783,24 @@ K.SScanF.GetVAL tya Y=char count parsed bne .2 .9 rts +*-------------------------------------- +K.SScanF.S ldy #$ff + +.1 iny + lda (ZPPtr2),y + sta (ZPPtr3),y + beq K.SScanF.Fwd + cmp #' ' + bne .1 + iny + +K.SScanF.Fwd tya Y=char count parsed + clc + adc ZPPtr2 + sta ZPPtr2 + bcc .8 + inc ZPPtr2+1 +.8 rts */-------------------------------------- * # FOpen * Open a file