From d7367620469666cb3cbdbfe080c9a87fb5f207f9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C3=A9my=20GIBERT?= Date: Sat, 28 Jan 2017 23:05:20 +0100 Subject: [PATCH] Kernel version 0.9 : TCPIP migration, fixed timing issues in DHCPCLNT, Broadcast not cleared properly....and working on TCP.... --- A2OSX.BOOT.po | Bin 143360 -> 143360 bytes A2OSX.DEV.po | Bin 143360 -> 143360 bytes A2OSX.SRC.po | Bin 819200 -> 819200 bytes BIN/IPCONFIG.S.txt | 94 ++++++++++++++++++------------ BIN/MEMDUMP.S.txt | 73 ++++++++--------------- BIN/NETSTAT.S.txt | 17 ++++-- DRV/UTHERNET.DRV.S.txt | 4 +- LIB/LIBTCPIP.S.TCP.txt | 127 ++++++++++++++++++++++++++++++++++------- LIB/LIBTCPIP.S.txt | 13 ++++- README.md | 6 +- SBIN/DHCPCLNT.S.txt | 4 -- SBIN/HTTPD.S.txt | 52 ++++------------- SBIN/TCPIP.S.txt | 7 ++- SBIN/TELNETD.S.txt | 4 +- 14 files changed, 237 insertions(+), 164 deletions(-) diff --git a/A2OSX.BOOT.po b/A2OSX.BOOT.po index faeebb7c24198c712836b5c7573b7190d74538c7..4794c5675dae5e8b950676abaa3a08cc2cb347aa 100644 GIT binary patch delta 5787 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 diff --git a/A2OSX.DEV.po b/A2OSX.DEV.po index a7046dc75ab0a32051f86faa61af877f0628ce5a..44bdfcf7343c362e42e89fffbd7486545e7a4fe8 100644 GIT binary patch delta 165 zcmZp8z|ru4V}q6;qt0e+!Mh$I@=PoYAfTsUt01i;t0b@FuavD+uGFfuLFt0hQ>9-@ z{K^ar3m7*lNljGRq{YcGNlPMO(KZE!y&EJ>GJl9TDSUxz0rN&B&;JvZ8rT*vuVk30 zG}$@IlF@Z?ZPXu@O%4KVlPjaM7R4}00rf0k0Go4C>;liq{|lHWDlK3DY1nKTcbsvu N0F!)E!m*00000E+9Q1{vkXfJ|b=+iXxUGq$1BE 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 Ee*&q@W&i*H delta 15062 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 R2$jO#6xCP%Z~wPV_&)`uvo-(# diff --git a/BIN/IPCONFIG.S.txt b/BIN/IPCONFIG.S.txt index f60c834e..a227d0af 100644 --- a/BIN/IPCONFIG.S.txt +++ b/BIN/IPCONFIG.S.txt @@ -14,7 +14,7 @@ AUTO 6 *-------------------------------------- ZPIPCfgPtr .EQ ZPBIN ZPDevPtr .EQ ZPBIN+2 -ZPDevInfoPtr .EQ ZPBIN+4 +ZPDevStatPtr .EQ ZPBIN+4 *-------------------------------------- * File Header (16 Bytes) *-------------------------------------- @@ -55,13 +55,17 @@ 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 .DA 0 *-------------------------------------- CS.INIT >LDYA L.LIBTCPIP >SYSCALL LoadLibYA + bcs .9 sta hLIBTCPIP - - >LDYA L.MSG0 + clc +.9 rts +*-------------------------------------- +CS.RUN >LDYA L.MSG0 >SYSCALL CPrintFYA >LIBCALL hLIBTCPIP,LIBTCPIP.GET.IPCFG @@ -69,44 +73,58 @@ CS.INIT >LDYA L.LIBTCPIP ldy #S.IPCFG.HDEV lda (ZPIPCfgPtr),y - bne CS.INIT.DUMPDEV + bne CS.RUN.DUMPDEV >LDYA L.MSG0.NL >SYSCALL CPrintFYA - jmp CS.INIT.DONE + jmp CS.RUN.DONE -CS.INIT.DUMPDEV sta DevID +CS.RUN.DUMPDEV sta DevID >SYSCALL GetDevByIDA >STYA ZPDevPtr - lda DevID - >SYSCALL GetDevInfoA - >STYA ZPDevInfoPtr - + ldy #S.DEV.JMP + lda (ZPDevPtr),y + sta NetDevJmp+1 + iny + lda (ZPDevPtr),y + sta NetDevJmp+2 + + ldx #DEVMGR.STATUS + jsr NetDevJmp + >STYA ZPDevStatPtr + >LDYA L.MSG0.L >SYSCALL CPrintFYA - ldy #S.DEVSTAT.NET.MAC+6 -.1 dey - >PUSHB (ZPDevInfoPtr),y - cpy #S.DEVSTAT.NET.MAC + ldy #S.DEVSTAT.NET.MAC+5 + +.1 >PUSHB (ZPDevStatPtr),y + dey + cpy #S.DEVSTAT.NET.MAC-1 bne .1 - lda ZPDevPtr - clc - adc #S.DEV.NAME - tay - lda ZPDevPtr+1 - adc #0 - >PUSHYA + ldy #S.DEV.F + lda (ZPDevPtr),y + and #S.DEV.F.LEN + sta DevName + tax + +.10 iny + lda (ZPDevPtr),y + sta DevName-S.DEV.NAME,y + dex + bne .10 + + >PUSHW L.DevName >PUSHB DevID >LDYA L.MSG1.DEV >SYSCALL CPrintFYA - ldy #S.DEVSTAT.FLAGS - lda (ZPDevInfoPtr),y + ldy #S.DEVSTAT.NET.FLAGS + lda (ZPDevStatPtr),y and #S.DEVSTAT.NET.FLAGS.ARPOFFLOAD beq .2 lda #1 @@ -114,8 +132,8 @@ CS.INIT.DUMPDEV sta DevID >LDYA L.MSG1.DEV.ARP >SYSCALL CPrintFYA - ldy #S.DEVSTAT.FLAGS - lda (ZPDevInfoPtr),y + ldy #S.DEVSTAT.NET.FLAGS + lda (ZPDevStatPtr),y and #S.DEVSTAT.NET.FLAGS.IPOFFLOAD beq .3 lda #1 @@ -124,15 +142,15 @@ CS.INIT.DUMPDEV sta DevID >SYSCALL CPrintFYA ldy #S.DEVSTAT.NET.STATUS - lda (ZPDevInfoPtr),y + lda (ZPDevStatPtr),y and #S.DEVSTAT.NET.STATUS.OK - bne CS.INIT.LINK + bne CS.RUN.LINK >PUSHW L.MSG1.LINK.KO >LDYA L.MSG1.LINK >SYSCALL CPrintFYA - bra CS.INIT.DUMPIP + bra CS.RUN.DUMPIP -CS.INIT.LINK >PUSHW L.MSG1.LINK.OK +CS.RUN.LINK >PUSHW L.MSG1.LINK.OK >LDYA L.MSG1.LINK >SYSCALL CPrintFYA @@ -140,7 +158,7 @@ CS.INIT.LINK >PUSHW L.MSG1.LINK.OK >SYSCALL CPrintFYA ldy #S.DEVSTAT.NET.STATUS - lda (ZPDevInfoPtr),y + lda (ZPDevStatPtr),y and #$0F tax @@ -152,7 +170,7 @@ CS.INIT.LINK >PUSHW L.MSG1.LINK.OK bne .4 ldy #S.DEVSTAT.NET.STATUS - lda (ZPDevInfoPtr),y + lda (ZPDevStatPtr),y and #S.DEVSTAT.NET.STATUS.FD bne .5 >LDYA L.MSG1.DPLX.HD @@ -160,7 +178,7 @@ CS.INIT.LINK >PUSHW L.MSG1.LINK.OK .5 >LDYA L.MSG1.DPLX.FD .6 >SYSCALL CPrintFYA -CS.INIT.DUMPIP >LDYA L.MSG2 +CS.RUN.DUMPIP >LDYA L.MSG2 >SYSCALL CPrintFYA lda (ZPIPCfgPtr) and #S.IPCFG.STATUS.OK @@ -226,19 +244,22 @@ CS.INIT.DUMPIP >LDYA L.MSG2 >LDYA L.MSG2.HOSTNAME >SYSCALL CPrintFYA -CS.INIT.DONE lda #0 tell TSKMGR that all done ok, but +CS.RUN.DONE lda #0 tell TSKMGR that all done ok, but sec we do not want to stay in memory rts *-------------------------------------- -CS.RUN -CS.DOEVENT clc +CS.DOEVENT sec rts *-------------------------------------- CS.QUIT lda hLIBTCPIP + beq .8 >SYSCALL FreeMemA - clc + +.8 clc rts *-------------------------------------- +NetDevJmp jmp * +*-------------------------------------- CS.END LIBTCPIP >PSTR "libtcpip.o" *-------------------------------------- @@ -266,6 +287,7 @@ MSG2.DNS >CSTR " DNS : %d.%d.%d.%d,%d.%d.%d.%d\n" MSG2.HOSTNAME >CSTR " Hostname : %S.%S\n" hLIBTCPIP .BS 1 DevID .BS 1 +DevName .BS 5 MAN SAVE BIN/IPCONFIG.S ASM diff --git a/BIN/MEMDUMP.S.txt b/BIN/MEMDUMP.S.txt index 191fc757..74d6c1df 100644 --- a/BIN/MEMDUMP.S.txt +++ b/BIN/MEMDUMP.S.txt @@ -56,13 +56,28 @@ CS.INIT ldy #MEM.COUNT Skip SLOT0 ora #S.PS.F.EVENT Now accept events sta (pPs) clc -.9 rts + rts *-------------------------------------- -CS.RUN ldy #bCANCEL - lda (pData),y - bne .9 +CS.RUN >SYSCALL GetC + bcs .13 + + cmp #3 Ctrl-C ? + beq .9 + + cmp #19 Ctrl-S ? + bne .12 ldy #bSTOP + lda (pData),y + eor #$ff + sta (pData),y + bra .13 + +.12 ldy #bSTOP + lda #0 + sta (pData),y + +.13 ldy #bSTOP lda (pData),y bne .8 @@ -186,12 +201,15 @@ CS.RUN.PRINTMEM ldy #S.MEM.LEN >LDYA L.MSG1 >SYSCALL CPrintFYA - + + lda (ZPPTR1) Free ? assume raw data... + bpl .10 + ldy #S.MEM.BIN lda (ZPPTR1),y bne .7 ****** DATA - ldy #S.MEM.PTR +.10 ldy #S.MEM.PTR lda (ZPPTR1),y sta ZPPTR2 iny @@ -246,47 +264,7 @@ CS.RUN.PRINTMEM ldy #S.MEM.LEN .9 rts *-------------------------------------- -CS.DOEVENT ldy #S.EVT.hDEV is Event from active IN device? - lda (pEvent),y - ldy #S.PS.hStdIn - cmp (pPs),y - bne .9 - - lda (pEvent) - and #S.EVT.F.KEY is it a KEY event? - beq .9 - - ldy #S.EVT.DATAHI is it an O or SAPPLE key ? - lda (pEvent),y - bne .9 - - ldy #S.EVT.DATALO - lda (pEvent),y - cmp #$03 Ctrl-C - bne .1 - - lda #$FF - ldy #bCANCEL - sta (pData),y - bra .8 - -.1 cmp #$13 Ctrl-S - bne .2 - - ldy #bSTOP - lda (pData),y - eor #$FF - sta (pData),y - bra .8 - -.2 ldy #bSTOP - lda #0 - sta (pData),y - -.8 clc - rts - -.9 sec +CS.DOEVENT sec rts *-------------------------------------- CS.QUIT clc @@ -311,7 +289,6 @@ LINE.COUNT .BS 1 MEM.COUNT .BS 1 USED.COUNT .BS 1 bSTOP .BS 1 -bCANCEL .BS 1 DS.END .ED *-------------------------------------- diff --git a/BIN/NETSTAT.S.txt b/BIN/NETSTAT.S.txt index b35df342..d809dc9f 100644 --- a/BIN/NETSTAT.S.txt +++ b/BIN/NETSTAT.S.txt @@ -56,9 +56,13 @@ L.MSG1.S .DA MSG1.S.0 *-------------------------------------- CS.INIT >LDYA L.LIBTCPIP >SYSCALL LoadLibYA - sta hLIBTCPIP + bcs .9 - >LDYA L.MSG0 + sta hLIBTCPIP + clc +.9 rts +*-------------------------------------- +CS.RUN >LDYA L.MSG0 >SYSCALL CPrintFYA >LIBCALL hLIBTCPIP,LIBTCPIP.SKT.GETTABLE @@ -107,17 +111,18 @@ CS.INIT >LDYA L.LIBTCPIP dec SocketCount bne .1 -CS.INIT.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 *-------------------------------------- -CS.RUN -CS.DOEVENT clc +CS.DOEVENT sec rts *-------------------------------------- CS.QUIT lda hLIBTCPIP + beq .8 + >SYSCALL FreeMemA - clc +.8 clc rts *-------------------------------------- CS.END diff --git a/DRV/UTHERNET.DRV.S.txt b/DRV/UTHERNET.DRV.S.txt index fc023777..b9550567 100644 --- a/DRV/UTHERNET.DRV.S.txt +++ b/DRV/UTHERNET.DRV.S.txt @@ -260,7 +260,7 @@ READBLOCK.RxOK and /PP.RxEvent.Brdcast bne .1 .8 lda #$ff hMem - ldy #$ff Flags + ldy #$00 Flags clc rts *-------------------------------------- @@ -386,7 +386,7 @@ DEVSTAT .DA #S.DEV.S.BLOCK+S.DEV.S.WRITE+S.DEV.S.READ .BS 1 Subtype .BS 2 Version *-------------------------------------- -FLAGS .DA 0 +FLAGS .DA #0 LINK.STATUS .BS 1 OK/DUPLEX/SPEED MAC .BS 6 MAN diff --git a/LIB/LIBTCPIP.S.TCP.txt b/LIB/LIBTCPIP.S.TCP.txt index 088b6c94..57960f11 100644 --- a/LIB/LIBTCPIP.S.TCP.txt +++ b/LIB/LIBTCPIP.S.TCP.txt @@ -1,6 +1,6 @@ PR#3 PREFIX /A2OSX.SRC -NEW +LOMEM $A00 INC 1 AUTO 6 .LIST OFF @@ -75,7 +75,7 @@ TCP.IN ldy #S.IP.SRC+3 cpy #S.SOCKET.DST.PORT+2 bne .6 - jmp TCP.IN.ESTABLISHED + jmp TCP.IN.REGULAR .7 lda ZPPtrSKT clc @@ -101,6 +101,7 @@ TCP.IN.LISTEN.NEW ldx #3 sec + .1 lda (ZPFrameBase1),y adc #0 sta TmpSocket+S.SOCKET.SQ.ACKNUM,x @@ -143,14 +144,21 @@ TCP.IN.LISTEN.NEW jmp TCP.SendSYNACK *-------------------------------------- -TCP.IN.ESTABLISHED - stx hSocket +TCP.IN.REGULAR stx hSocket ldy #S.SOCKET.STATUS lda (ZPPtrSKT),y - cmp #S.SOCKET.STATUS.SYNRCVD Waiting for ACK to establish? - bne .1 - - ldy #S.TCP.OPTIONS yes, only accept ACK packet + asl + tax + jmp (L.TCP.IN.JMP,x) +*-------------------------------------- +TCP.IN.JMP.CLOSED +TCP.IN.JMP.LISTEN +TCP.IN.JMP.SYNSENT + clc + rts +*-------------------------------------- +TCP.IN.JMP.SYNRCVD + ldy #S.TCP.OPTIONS only accept ACK packet lda (ZPFrameBase1),y cmp #S.TCP.OPTIONS.ACK bne .8 @@ -206,18 +214,100 @@ TCP.IN.ESTABLISHED .8 clc rts +*-------------------------------------- +TCP.IN.JMP.ESTBLSH + ldy #S.TCP.OPTIONS + lda (ZPFrameBase1),y + cmp #S.TCP.OPTIONS.ACK + bne .3 -.1 cmp #S.SOCKET.STATUS.ESTBLSH - bne .99 - - - - - bra * -.99 clc + jsr TCP.UpdateAck + +.3 lda ZPFrameBase1 + clc + adc #S.TCP + sta ZPDataPtr + lda ZPFrameBase1+1 + adc /S.TCP + sta ZPDataPtr+1 + + ldy #S.TCP.DATAOFFSET + lda (ZPFrameBase1),y + lsr + lsr + clc + adc ZPDataPtr + sta ZPDataPtr + lda ZPDataPtr+1 + adc ZPDataPtr+1 + sta ZPDataPtr+1 + + lda ZPDataPtr + sec + sbc ZPFrameBase1 + sta ZPDataLen + lda ZPDataPtr+1 + sbc ZPFrameBase1+1 + sta ZPDataLen+1 + + ldy #S.SOCKET.SQ.ACKNUM+3 + lda (ZPPtrSKT),y + clc + adc ZPDataLen + sta (ZPPtrSKT),y + dey + lda (ZPPtrSKT),y + adc ZPDataLen+1 + sta (ZPPtrSKT),y + dey + lda (ZPPtrSKT),y + adc #0 + sta (ZPPtrSKT),y + dey + lda (ZPPtrSKT),y + adc #0 + sta (ZPPtrSKT),y + + jsr TCP.SendACK + + clc rts *-------------------------------------- -TCP.SendSYNACK ldy #S.SOCKET.SRC.ADDR+3 +TCP.IN.JMP.CLWAIT +TCP.IN.JMP.LASTACK +TCP.IN.JMP.FINWT1 +TCP.IN.JMP.FINWT2 +TCP.IN.JMP.CLOSING +TCP.IN.JMP.TIMEWT + clc + rts +*-------------------------------------- +TCP.UpdateAck ldy #S.TCP.ACK.NUMBER + ldx #4 + +.1 lda (ZPFrameBase1),y + pha + iny + dex + bne .1 + + ldy #S.SOCKET.SQ.ACKNUM+3 + ldx #4 + +.2 pla + sta (ZPPtrSKT),y + dey + dex + bne .2 + rts +*-------------------------------------- +TCP.SendACK lda #S.TCP.OPTIONS.ACK + bra TCP.SendMSG +TCP.SendSYNACK lda #S.TCP.OPTIONS.SYN+S.TCP.OPTIONS.ACK + +TCP.SendMSG sta TCP.MSG+S.TCP.OPTIONS + + ldy #S.SOCKET.SRC.ADDR+3 ldx #3 .1 lda (ZPPtrSKT),y sta TCP.MSG+S.IP.SRC,x @@ -255,9 +345,6 @@ TCP.SendSYNACK ldy #S.SOCKET.SRC.ADDR+3 dex bpl .3 - lda #S.TCP.OPTIONS.SYN+S.TCP.OPTIONS.ACK - sta TCP.MSG+S.TCP.OPTIONS - >PUSHW L.TCP.MSG jsr SEND.TCP.FRAME diff --git a/LIB/LIBTCPIP.S.txt b/LIB/LIBTCPIP.S.txt index 6f5439f0..cac33330 100644 --- a/LIB/LIBTCPIP.S.txt +++ b/LIB/LIBTCPIP.S.txt @@ -1,6 +1,6 @@ PR#3 PREFIX /A2OSX.SRC -NEW +LOMEM $A00 INC 1 AUTO 6 .LIST OFF @@ -97,6 +97,17 @@ L.DNS.CACHE .DA DNS.CACHE L.SKT.TABLE .DA SKT.TABLE L.TmpSocket .DA TmpSocket L.TCP.MSG .DA TCP.MSG +L.TCP.IN.JMP .DA TCP.IN.JMP.CLOSED + .DA TCP.IN.JMP.LISTEN + .DA TCP.IN.JMP.SYNSENT + .DA TCP.IN.JMP.SYNRCVD + .DA TCP.IN.JMP.ESTBLSH + .DA TCP.IN.JMP.CLWAIT + .DA TCP.IN.JMP.LASTACK + .DA TCP.IN.JMP.FINWT1 + .DA TCP.IN.JMP.FINWT2 + .DA TCP.IN.JMP.CLOSING + .DA TCP.IN.JMP.TIMEWT .DA 0 *-------------------------------------- LIB.LOAD lda bFirstLoad diff --git a/README.md b/README.md index 4ac2fc74..35d9630f 100644 --- a/README.md +++ b/README.md @@ -151,15 +151,15 @@ note : '$VAR' does NOT expand Variable | ARP | Working | dump ARP cache, setup a static ARP entry | 0.8 | | PING | Working | | 0.8 | | DNSINFO | Working | dump DNS cache, setup a static DNS entry | | 0.8 | -| IPCONFIG | Working | renamed from NETINFO | 0.8 | -| NETSTAT | Working | | 0.8 | +| IPCONFIG | Working | renamed from NETINFO | 0.9 | +| NETSTAT | Working | | 0.9 | ## BIN,External DEV Shell commands: | Name | Status | Comment | K.Ver | | ---- | ------ | ------- | ----- | | ASM | In Progress | S-C MASM based multi CPU assembler | | | DEVDUMP | | | 0.8 | -| MEMDUMP | Working | | 0.8 | +| MEMDUMP | Working | | 0.9 | | RPCDUMP | Working | tool based on UDP socket API, renamed from RPCINFO | 0.8 | ## Misc diff --git a/SBIN/DHCPCLNT.S.txt b/SBIN/DHCPCLNT.S.txt index 44d70587..60248f54 100644 --- a/SBIN/DHCPCLNT.S.txt +++ b/SBIN/DHCPCLNT.S.txt @@ -414,9 +414,6 @@ Wait.TimeOut sec ldy #TimeOut lda (pData),y beq .9 - ldy #bCTRLC - lda (pData),y - bmi .9 clc .9 rts *-------------------------------------- @@ -480,7 +477,6 @@ DHCP.REQ.LEN .EQ *-DHCP.REQ *-------------------------------------- DS.START TimeOut .BS 1 -bCTRLC .BS 1 hSocket .BS 1 hFrame .BS 1 DS.END diff --git a/SBIN/HTTPD.S.txt b/SBIN/HTTPD.S.txt index fde5207a..2001b659 100644 --- a/SBIN/HTTPD.S.txt +++ b/SBIN/HTTPD.S.txt @@ -70,6 +70,11 @@ CS.RUN jsr Init.Timeout >SYSCALL Sleep jsr Wait.Timeout bcc .1 + >SYSCALL GetC + bcs .1 + cmp #$03 + bne .1 + jmp CS.RUN.ABORT .99 >LDYA L.MSG.TCPIPERR >SYSCALL CPrintFYA @@ -96,12 +101,12 @@ CS.RUN.INIT ldx #3 >SYSCALL CPrintFYA .11 >SYSCALL Sleep - ldy #bCTRLC - lda (pData),y - bmi .99 - bra .11 + >SYSCALL GetC + bcs .12 + cmp #03 + beq CS.RUN.ABORT - ldy #hSocket +.12 ldy #hSocket lda (pData),y >LIBCALL hLIBTCPIP,LIBTCPIP.SKT.ACCEPTA @@ -127,46 +132,13 @@ CS.RUN.INIT ldx #3 sec rts -.99 >LDYA L.MSG.ABORT +CS.RUN.ABORT >LDYA L.MSG.ABORT >SYSCALL CPrintFYA lda #0 sec rts *-------------------------------------- -CS.DOEVENT lda (pEvent) - bpl .1 is it a TIMER event? - - asl One second ? - bpl .9 - - ldy #TimeOut - lda (pData),y - beq .9 - - dec - sta (pData),y - sec do not discard TIMER event - rts - -.1 bit #S.EVT.F.KEY is it a KEY event? - beq .9 - - ldy #S.EVT.DATAHI is it an O or SAPPLE key ? - lda (pEvent),y - bne .9 - - ldy #S.EVT.DATALO - lda (pEvent),y - cmp #$03 Ctrl-C - bne .9 - - lda #$FF - ldy #bCTRLC - sta (pData),y - clc - rts - -.9 sec +CS.DOEVENT sec rts *-------------------------------------- CS.QUIT ldy #hSocket diff --git a/SBIN/TCPIP.S.txt b/SBIN/TCPIP.S.txt index b0558c8d..078b027d 100644 --- a/SBIN/TCPIP.S.txt +++ b/SBIN/TCPIP.S.txt @@ -151,8 +151,13 @@ CS.INIT.DEV >LDYA L.DEVNAME CS.RUN ldx #DEVMGR.READBLOCK jsr NetDevJmp bcs .8 - + sta .1+1 + >LIBCALL hLIBTCPIP,LIBTCPIP.RCVD.FRAMEA + bcc .8 + +.1 lda #$ff + >SYSCALL FreeMemA .8 clc rts diff --git a/SBIN/TELNETD.S.txt b/SBIN/TELNETD.S.txt index 852e757e..58879ceb 100644 --- a/SBIN/TELNETD.S.txt +++ b/SBIN/TELNETD.S.txt @@ -40,7 +40,7 @@ CS.INIT >LDYA L.LIBTCPIP sta hLIBTCPIP >PUSHWI S.IP.PROTOCOL.TCP - >PUSHWI TCP.PORT.TELNETS + >PUSHWI TCP.PORT.TELNET >LIBCALL hLIBTCPIP,LIBTCPIP.NewSrvSocket bcs .99 sta hSrvSocket @@ -52,8 +52,6 @@ CS.RUN >PUSHB hSrvSocket >LIBCALL hLIBTCPIP,LIBTCPIP.SrvSocketAccept bcs .8 - >LIBCALL hLIBTCPIP,LIBTCPIP.CreateDevice - bcs *