diff --git a/.Floppies/A2OSX.BUILD.po b/.Floppies/A2OSX.BUILD.po index 16c425f5..c32ae858 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 fe618eba..57c8f5bc 100644 Binary files a/.Floppies/A2OSX.SRC.po and b/.Floppies/A2OSX.SRC.po differ diff --git a/BIN/TELNET.S.txt b/BIN/TELNET.S.txt index 8de2547a..5bb557a3 100644 --- a/BIN/TELNET.S.txt +++ b/BIN/TELNET.S.txt @@ -16,6 +16,7 @@ BUFSIZE .EQ 256 *-------------------------------------- ZPIPCfgPtr .EQ ZPBIN ZPBufPtr .EQ ZPBIN+2 +ZPBufLen .EQ ZPBIN+4 *-------------------------------------- * File Header (16 Bytes) *-------------------------------------- @@ -27,7 +28,7 @@ CS.START cld .DA CS.END-CS.START Code Length To Relocate .DA DS.END-DS.START Data Segment to Allocate .DA #16 SS - .DA #2 ZP + .DA #6 ZP .DA 0 *-------------------------------------- .1 .DA CS.INIT @@ -42,6 +43,7 @@ L.MSG.UNKNOWN .DA MSG.UNKNOWN L.MSG.HOSTOK .DA MSG.HOSTOK L.MSG.SKTKO .DA MSG.SKTKO L.MSG.SKTOK .DA MSG.SKTOK +L.MSG.SKTERR .DA MSG.SKTERR .DA 0 *-------------------------------------- CS.INIT >LDYA L.LIBTCPIP @@ -82,7 +84,6 @@ CS.RUN.IPOK ldy #S.PS.ARGC >PUSHYA >LIBCALL hLIBTCPIP,LIBTCPIP.HST.GETBYNAME bcc CS.RUN.HOSTOK - >SLEEP jsr Wait.Timeout bcc .2 @@ -150,14 +151,14 @@ CS.RUN.OPENSKT ldx #3 txa >STA.G hBuf - >DEBUG - -CS.RUN.LOOP >PUSHB.G hSocket +CS.RUN.LOOP >SLEEP + + >PUSHB.G hSocket >PUSHW ZPBufPtr >PUSHWI BUFSIZE >LIBCALL hLIBTCPIP,LIBTCPIP.SKT.Read bcc .1 - + tay beq .2 no char rts @@ -177,16 +178,22 @@ CS.RUN.LOOP >PUSHB.G hSocket bcc .3 tay beq CS.RUN.LOOP + + >PUSHA + >PUSHBI 1 + >LDYA L.MSG.SKTERR + >SYSCALL printf rts -.3 phy - pha +.3 >STYA ZPBufLen + + lda (ZPBufPtr) + cmp #3 Ctrl-C + beq .9 + >PUSHB.G hSocket >PUSHW ZPBufPtr - pla - >PUSHA - pla - >PUSHA + >PUSHW ZPBufLen >LIBCALL hLIBTCPIP,LIBTCPIP.SKT.Write bcs CS.RUN.ERR @@ -209,11 +216,10 @@ CS.DOEVENT lda (pEvent) .9 sec do not discard TIMER event rts *-------------------------------------- -CS.QUIT ldy #hSocket - lda (pData),y +CS.QUIT >LDA.G hSocket beq .1 - >LIBCALL hLIBTCPIP,LIBTCPIP.SKT.Close +* >LIBCALL hLIBTCPIP,LIBTCPIP.SKT.Close .1 >LDA.G hBuf beq .2 @@ -247,6 +253,7 @@ MSG.UNKNOWN .AZ "%s: Unknown host\r\n" MSG.HOSTOK .AZ "Connecting to %d.%d.%d.%d (%s) ...\r\n" MSG.SKTKO .AZ "Failed to Open Socket." MSG.SKTOK .AZ "Connected." +MSG.SKTERR .AZ "Socket Error : $%h\r\n" *-------------------------------------- Socket .DA #S.SOCKET.SOCK.STREAM .BS 1 diff --git a/INC/A2osX.I.txt b/INC/A2osX.I.txt index 2699e5c6..e2735173 100644 --- a/INC/A2osX.I.txt +++ b/INC/A2osX.I.txt @@ -293,8 +293,13 @@ S.MSTAT .EQ 24 * IOCTL device API *-------------------------------------- C.EOF .EQ 4 +C.ENQ .EQ 5 +C.BS .EQ 8 C.LF .EQ 10 +C.FF .EQ 12 C.CR .EQ 13 +C.FS .EQ 21 +C.ESC .EQ 27 C.DEL .EQ 127 *-------------------------------------- DEVID.NULL .EQ 0 diff --git a/INC/LIBTCPIP.I.txt b/INC/LIBTCPIP.I.txt index 24128f43..20a14775 100644 --- a/INC/LIBTCPIP.I.txt +++ b/INC/LIBTCPIP.I.txt @@ -59,12 +59,7 @@ ERR.SKT.BAD .EQ $BD ERR.DNS.PENDING .EQ $B9 ERR.DNS.ERROR .EQ $B8 -ERR.ARP .EQ $B7 - ERR.ARP.PENDING .EQ $B5 -ERR.ARP.ERROR .EQ $B4 - -ERR.DEV .EQ $B3 *-------------------------------------- UDP.PORT.DNS .EQ 53 UDP.PORT.PMAP .EQ 111 diff --git a/LIB/LIBTCPIP.S.ARP.txt b/LIB/LIBTCPIP.S.ARP.txt index 12aed582..6dd467c8 100644 --- a/LIB/LIBTCPIP.S.ARP.txt +++ b/LIB/LIBTCPIP.S.ARP.txt @@ -215,6 +215,7 @@ ARP.QUERY.I jsr ARP.FIND.BY.IP iny cpy #S.ARPCACHE.MAC+6 bne .2 + clc rts diff --git a/LIB/LIBTCPIP.S.FRM.txt b/LIB/LIBTCPIP.S.FRM.txt index 423e2d3c..68d06bd5 100644 --- a/LIB/LIBTCPIP.S.FRM.txt +++ b/LIB/LIBTCPIP.S.FRM.txt @@ -228,7 +228,9 @@ FRM.Queue ldy hFrameOut no hFrame, cannot queue for retry inx cpx #K.FRMQUEUE.SIZE bne .1 + ldx #0 + .1 cpx FRM.QUEUE.Tail beq .9 ldy FRM.QUEUE.Head @@ -240,9 +242,9 @@ FRM.Queue ldy hFrameOut no hFrame, cannot queue for retry lda hFrameOut sta FRM.QUEUE.hMem,y lda ZPFrameOutLen - sta FRM.QUEUE.LenL,x + sta FRM.QUEUE.LenL,y lda ZPFrameOutLen+1 - sta FRM.QUEUE.LenH,x + sta FRM.QUEUE.LenH,y clc rts @@ -266,8 +268,9 @@ FRM.Retry ldx FRM.QUEUE.Tail sta ZPFrameOutLen+1 lda FRM.QUEUE.State,x - cmp #ERR.DEV+1 Device error ? - bcc .1 yes, retry sending... + cmp #ERR.ARP.PENDING + bne .1 + jsr IP.SetDestMAC Err is ARP or higher, retry getting MAC bcs .2 still error getting dest MAC @@ -283,11 +286,13 @@ FRM.Retry ldx FRM.QUEUE.Tail lda FRM.QUEUE.hMem,x >SYSCALL FreeMem -.4 ldx FRM.QUEUE.Tail + ldx FRM.QUEUE.Tail inx cpx #K.FRMQUEUE.SIZE bne .5 + ldx #0 + .5 stx FRM.QUEUE.Tail bra .10 diff --git a/LIB/LIBTCPIP.S.SKT.txt b/LIB/LIBTCPIP.S.SKT.txt index 860c5782..bf8de0a6 100644 --- a/LIB/LIBTCPIP.S.SKT.txt +++ b/LIB/LIBTCPIP.S.SKT.txt @@ -8,7 +8,7 @@ AUTO 4,1 * **In:** * PUSHW = PTR to S.SOCKET template * **Out:** -* YA = PTR to new S.SOCKET +* Y,A = PTR to new S.SOCKET * X = hSocket *\-------------------------------------- SKT.New >PULLW ZPTmpPtr1 @@ -29,7 +29,7 @@ SKT.New >PULLW ZPTmpPtr1 >STYA ZPTmpPtr2 lda #$ff - sta TmpOffset to keep track of any free slot + sta TmpByte to keep track of any free slot ldx #0 @@ -52,12 +52,12 @@ SKT.New >PULLW ZPTmpPtr1 sec rts -.4 lda TmpOffset +.4 lda TmpByte bpl .5 already found an empty slot.... >LDYA ZPTmpPtr2 found one... >STYA ZPPtrSKT save it! - stx TmpOffset + stx TmpByte .5 lda ZPTmpPtr2 clc @@ -69,7 +69,7 @@ SKT.New >PULLW ZPTmpPtr1 cpx #K.SKTTABLE.SIZE bne .2 - lda TmpOffset Did we found an empty slot ? + lda TmpByte Did we found an empty slot ? bmi .9 ldy #S.SOCKET.HDR-1 @@ -90,19 +90,19 @@ SKT.New >PULLW ZPTmpPtr1 jsr SKT.NewTCB bcs .99 - + lda #S.TCP.OPTIONS.SYN - jsr TCP.OUT.SendOptA Send SYN,Only for CLIENT conn!!!! + jsr TCP.OUT.SendOptA Send SYN,Only for CLIENT conn!!!! bcs .99 ldy #S.SOCKET.TCP.STATUS lda #S.SOCKET.TCP.STATUS.SYNSENT sta (ZPPtrSKT),y -.8 lda TmpOffset +.8 lda TmpByte ora #$80 tax - >LDYA ZPTmpPtr3 + >LDYA ZPPtrSKT clc rts @@ -339,7 +339,7 @@ SKT.MkNod sta .1+1 SKT.Read >PULLW ZPDataOutLen >PULLW ZPDataOutPtr >PULLA - + SKT.Read.I jsr SKT.Get.I bcs .99 cmp #S.SOCKET.SOCK.STREAM diff --git a/LIB/LIBTCPIP.S.TCP.txt b/LIB/LIBTCPIP.S.TCP.txt index f88dda2c..a2754d9c 100644 --- a/LIB/LIBTCPIP.S.TCP.txt +++ b/LIB/LIBTCPIP.S.TCP.txt @@ -169,13 +169,28 @@ TCP.IN.JMP.SYNSENT dex bpl .1 + ldx #3 + ldy #S.TCP.SEQNUM+3 + + sec ACK=SEC+1 + +.2 lda (ZPFrameInPtr),y + adc #0 + sta SKT.TCBCache+S.TCB.INLASTSEQNUM,x + sta SKT.TCBCache+S.TCB.OUTACKNUM,x + dey + dex + bpl .2 + lda #S.TCP.OPTIONS.ACK jsr TCP.OUT.SendOptA SYN.ACK recieved, Send, ACK bcs .9 ldy #S.SOCKET.TCP.STATUS lda #S.SOCKET.TCP.STATUS.ESTBLSH - sta (ZPPtrSKT),y + sta (ZPPtrSKT),y + + jsr SKT.StoreTCB .8 clc .9 rts @@ -450,7 +465,6 @@ TCP.OUT.SendOptA TCP.OUT.SendOptA.1 ldy #S.TCP.OPTIONS - ora #S.TCP.OPTIONS.ACK sta (ZPFrameOutPtr),y ldx #3 diff --git a/LIB/LIBTCPIP.S.txt b/LIB/LIBTCPIP.S.txt index 727ff2ea..05d1ad0b 100644 --- a/LIB/LIBTCPIP.S.txt +++ b/LIB/LIBTCPIP.S.txt @@ -114,7 +114,6 @@ L.ARP.CACHE .DA ARP.CACHE L.DNS.CACHE .DA DNS.CACHE L.SKT.Template .DA SKT.Template L.HST.SScanF .DA HST.SScanF -L.TmpByte .DA TmpByte L.IOCTL .DA IOCTL L.DCB.NIC .DA DCB.NIC L.TCP.IN.JMP .DA TCP.IN.JMP.CLOSED @@ -218,7 +217,7 @@ POLL >PUSHW L.IOCTL PULSE and #S.EVT.F.T1SEC beq .1 - jsr ARP.EXPIRE +* jsr ARP.EXPIRE jsr DNS.EXPIRE .1 jsr DNS.POLL @@ -367,7 +366,6 @@ TmpDWord .BS 4 TmpOffset .BS 2 hFrameIn .BS 1 hFrameOut .BS 1 -bTextMode .BS 1 HST.SScanF .AZ "%d.%d.%d.%d" IP.ID .BS 2 IP.CHECKSUM .BS 4