diff --git a/A2OSX.BOOT.po b/A2OSX.BOOT.po index a2a2017e..7f37738d 100644 Binary files a/A2OSX.BOOT.po and b/A2OSX.BOOT.po differ diff --git a/A2OSX.DEV.po b/A2OSX.DEV.po index 9aec28ad..361e6b72 100644 Binary files a/A2OSX.DEV.po and b/A2OSX.DEV.po differ diff --git a/A2OSX.SRC.po b/A2OSX.SRC.po index db8a71b5..6f252ffd 100644 Binary files a/A2OSX.SRC.po and b/A2OSX.SRC.po differ diff --git a/BIN/NETSTAT.S.txt b/BIN/NETSTAT.S.txt index 0ebe687e..0fce3c42 100644 --- a/BIN/NETSTAT.S.txt +++ b/BIN/NETSTAT.S.txt @@ -69,6 +69,8 @@ CS.RUN >LDYA L.MSG0 lda #K.SKTTABLE.SIZE sta SocketCount + >DEBUG + .1 lda (ZPPTR1) beq .7 @@ -100,13 +102,15 @@ CS.RUN >LDYA L.MSG0 >LDYA L.MSG1 >SYSCALL CPrintFYA -.7 clc - lda ZPPTR1 +.7 lda ZPPTR1 + clc adc #S.SOCKET sta ZPPTR1 + lda ZPPTR1+1 adc /S.SOCKET sta ZPPTR1+1 + dec SocketCount bne .1 diff --git a/INC/A2osX.I.txt b/INC/A2osX.I.txt index b03f7f67..5937042d 100644 --- a/INC/A2osX.I.txt +++ b/INC/A2osX.I.txt @@ -585,6 +585,15 @@ S.NODE.DEV .EQ 5 *-------------------------------------- * S.NODE.LNK *-------------------------------------- +S.NODE.SSOCK.HSKT .EQ 2 +*S.NODE.SSOCK.OPEN .EQ 3 +*S.NODE.SSOCK.CLOSE .EQ 4 +*S.NODE.SSOCK.READ .EQ 5 +*S.NODE.SSOCK.WRITE .EQ 6 +*S.NODE.SSOCK.STATUS .EQ 7 +* +S.NODE.SSOCK .EQ 8 +*-------------------------------------- S.NODE.FIFO.S .EQ 2 S.NODE.FIFO.S.Opened .EQ 1 S.NODE.FIFO.S.Closed .EQ 2 diff --git a/INC/DHCP.I.txt b/INC/DHCP.I.txt index 5b260a39..10acc61f 100644 --- a/INC/DHCP.I.txt +++ b/INC/DHCP.I.txt @@ -39,6 +39,7 @@ S.DHCP.OPTIONS.MASK .EQ 1 S.DHCP.OPTIONS.GW .EQ 3 S.DHCP.OPTIONS.DNS .EQ 6 S.DHCP.OPTIONS.DOMAIN .EQ 15 +S.DHCP.OPTIONS.MSGTYPE .EQ 53 S.DHCP.OPTIONS.END .EQ 255 * S.DHCP .EQ S.UDP+240 diff --git a/LIB/LIBTCPIP.S.SKT.txt b/LIB/LIBTCPIP.S.SKT.txt index aa576823..29b4cd71 100644 --- a/LIB/LIBTCPIP.S.SKT.txt +++ b/LIB/LIBTCPIP.S.SKT.txt @@ -175,12 +175,21 @@ SKT.CloseA cmp #K.SKTTABLE.SIZE cmp #S.SOCKET.SOCK.RAW beq .8 + cmp #S.SOCKET.SOCK.STREAM + bne SKT.GetA.9 + ldy #S.SOCKET.SO lda (ZPPtrSKT),y bit #S.SOCKET.SO.ACCEPTCONN - beq * + bne * + ldy #S.SOCKET.TCP.OPTIONS + lda (ZPPtrSKT),y + ora #S.TCP.OPTIONS.FIN + sta (ZPPtrSKT),y + clc + rts .8 lda #0 sta (ZPPtrSKT) @@ -393,7 +402,7 @@ SKT.Write.TCP ldy #S.SOCKET.TCP.STATUS jsr SKT.AddDataToSktOut bcs .90 - jsr TCP.OUT try to push, ignore error.... + jsr TCP.OUT.ESTBLSH try to push, ignore error.... clc rts diff --git a/LIB/LIBTCPIP.S.TCP.txt b/LIB/LIBTCPIP.S.TCP.txt index 13ffad95..5079f308 100644 --- a/LIB/LIBTCPIP.S.TCP.txt +++ b/LIB/LIBTCPIP.S.TCP.txt @@ -73,6 +73,8 @@ TCP.IN jsr IP.FillSKT.TemplateSrcDst ldy #S.SOCKET.TCP.STATUS lda (ZPPtrSKT),y + cmp #S.SOCKET.TCP.STATUS.TIMEWT + bcs * asl tax jmp (L.TCP.IN.JMP,x) @@ -91,8 +93,8 @@ TCP.IN jsr IP.FillSKT.TemplateSrcDst .9 clc Discard frame rts *-------------------------------------- -TCP.IN.RST txa - jsr SKT.CloseA +TCP.IN.RST lda #0 + sta (ZPPtrSKT) clc rts *-------------------------------------- @@ -152,15 +154,7 @@ TCP.IN.JMP.LISTEN dex bpl .4 - ldy #S.SOCKET.TCP.STATUS - lda #S.SOCKET.TCP.STATUS.SYNRCVD - sta (ZPPtrSKT),y - - ldy #S.SOCKET.TCP.OPTIONS - lda #S.TCP.OPTIONS.SYN+S.TCP.OPTIONS.ACK - sta (ZPPtrSKT),y - - jsr TCP.Out + jsr TCP.OUT.SYNACK bcs .9 ldy #S.SOCKET.TCP.STATUS @@ -172,10 +166,6 @@ TCP.IN.JMP.LISTEN rts *-------------------------------------- TCP.IN.JMP.SYNSENT - clc - rts -*-------------------------------------- -TCP.IN.JMP.SYNRCVD ldy #S.TCP.OPTIONS only accept ACK packet lda (ZPFrameInPtr),y cmp #S.TCP.OPTIONS.ACK @@ -218,6 +208,10 @@ TCP.IN.JMP.SYNRCVD .8 clc rts *-------------------------------------- +TCP.IN.JMP.SYNRCVD + clc + rts +*-------------------------------------- TCP.IN.JMP.ESTBLSH ldy #S.TCP.OPTIONS lda (ZPFrameInPtr),y @@ -292,29 +286,33 @@ TCP.IN.JMP.TIMEWT clc rts *-------------------------------------- -TCP.OUT ldy #S.SOCKET.TCP.OPTIONS - lda (ZPPtrSKT),y - bit #S.TCP.OPTIONS.SYN - beq TCP.OUT.ESTBLSH - - >LDYAI 0 +TCP.OUT.SYNACK >LDYAI 0 jsr TCP.NewFrame bcs .9 + ldx #3 + ldy #S.TCP.ACK.NUMBER+3 + +.1 lda TmpDWord,x + sta (ZPFrameOutPtr),y + dey + dex + bpl .1 + ldy #S.TCP.OPTIONS lda #S.TCP.OPTIONS.SYN+S.TCP.OPTIONS.ACK - sta (ZPFrameOutPtr),y + sta (ZPFrameOutPtr),y jsr TCP.SendFrame bcs .9 - ldy #S.TCP.OPTIONS + ldy #S.SOCKET.TCP.OPTIONS lda #0 - sta (ZPFrameOutPtr),y + sta (ZPPtrSKT),y ldy #S.SOCKET.TCP.STATUS lda #S.SOCKET.TCP.STATUS.SYNSENT - sta (ZPFrameOutPtr),y + sta (ZPPtrSKT),y clc .9 rts @@ -379,12 +377,7 @@ TCP.OUT.ESTBLSH ldy #S.SOCKET.SQ.OUTUSED ldy #S.SOCKET.TCP.OPTIONS lda (ZPPtrSKT),y - bit #S.TCP.OPTIONS.ACK - beq .7 - ldy #S.TCP.OPTIONS - lda (ZPFrameOutPtr),y - ora #S.TCP.OPTIONS.ACK sta (ZPFrameOutPtr),y .7 jsr TCP.SendFrame @@ -392,7 +385,15 @@ TCP.OUT.ESTBLSH ldy #S.SOCKET.SQ.OUTUSED ldy #S.SOCKET.TCP.OPTIONS lda (ZPPtrSKT),y - and #$ff^S.TCP.OPTIONS.ACK + bit #S.TCP.OPTIONS.FIN + beq .70 + + ldy #S.SOCKET.TCP.STATUS + lda #S.SOCKET.TCP.STATUS.FINWT1 + sta (ZPPtrSKT),y + +.70 ldy #S.SOCKET.TCP.OPTIONS + lda #0 sta (ZPPtrSKT),y ldx #3 diff --git a/SBIN/DHCPCLNT.S.txt b/SBIN/DHCPCLNT.S.txt index b157e75e..1f769c2e 100644 --- a/SBIN/DHCPCLNT.S.txt +++ b/SBIN/DHCPCLNT.S.txt @@ -74,13 +74,14 @@ CS.INIT >LDYA L.LIBTCPIP stz IPCFG - >LDYA A2OSX.TIMER16 - >STYA DHCP.DISC.XID - >STYA DHCP.REQ.XID - >LDYA A2OSX.RANDOM16 - >STYA DHCP.DISC.XID+2 - >STYA DHCP.REQ.XID+2 + ldx #3 +.11 lda A2osX.TIMER16,x + sta DHCP.DISC.XID,x + sta DHCP.REQ.XID,x + dex + bpl .11 + ldx #5 .2 lda IPCFG+S.IPCFG.MAC,x sta DHCP.DISC.CHADDR,x @@ -134,7 +135,7 @@ CS.RUN.ROFFER >SYSCALL Sleep jsr CS.RUN.SKT.RCVD bcc .1 jsr Wait.Timeout - bcc CS.RUN.ROFFER + bne CS.RUN.ROFFER lda #1 jmp CS.RUN.KO @@ -170,7 +171,7 @@ CS.RUN.RACK >SYSCALL Sleep jsr CS.RUN.SKT.RCVD bcc .1 jsr Wait.Timeout - bcc CS.RUN.RACK + bne CS.RUN.RACK lda #2 bra CS.RUN.KO @@ -250,49 +251,48 @@ CS.QUIT ldy #hSocket CheckDHCPOffer jsr CheckDHCPXID bcs .9 - >LDAXI S.DHCP.OPTIONS - jsr SetFramePtr1AX + lda ZPFrameBase + clc + adc #S.DHCP.OPTIONS + sta ZPFramePtr + + lda ZPFrameBase+1 + adc /S.DHCP.OPTIONS + sta ZPFramePtr+1 - ldy #2 DHCPOffer ? + lda (ZPFramePtr) + cmp #S.DHCP.OPTIONS.MSGTYPE + bne .9 + + ldy #2 lda (ZPFramePtr),y cmp #S.DHCP.OPTIONS.DHCPOffer bne .9 ldy #S.DHCP.YIADDR+3 ldx #3 + .1 lda (ZPFrameBase),y sta DHCP.REQ.OPT.REQIP,x + sta IPCFG+S.IPCFG.IP,x dey dex bpl .1 - ldx #3 - ldy #S.IPCFG.IP+3 -.2 lda DHCP.REQ.OPT.REQIP,x - sta IPCFG,y - dey - dex - bpl .2 - ldy #S.IP.SRC+3 ldx #3 + .3 lda (ZPFrameBase),y sta DHCP.REQ.OPT.SVRIP,x + sta IPCFG+S.IPCFG.DHCPSRVR,x dey dex bpl .3 - ldx #3 - ldy #S.IPCFG.DHCPSRVR+3 -.4 lda DHCP.REQ.OPT.SVRIP,x - sta IPCFG,y - dey - dex - bpl .4 - .5 inc ZPFramePtr skip Option 53 (DHCPOffer:530102) bne .6 inc ZPFramePtr+1 + .6 lda (ZPFramePtr) sec adc ZPFramePtr add option len + 1 @@ -377,10 +377,20 @@ GetDHCPOption.CopyIP CheckDHCPAck jsr CheckDHCPXID bcs .9 - >LDAXI S.DHCP.OPTIONS - jsr SetFramePtr1AX + lda ZPFrameBase + clc + adc #S.DHCP.OPTIONS + sta ZPFramePtr + + lda ZPFrameBase+1 + adc /S.DHCP.OPTIONS + sta ZPFramePtr+1 - ldy #2 DHCPAck ? + lda (ZPFramePtr) + cmp #S.DHCP.OPTIONS.MSGTYPE + bne .9 + + ldy #2 lda (ZPFramePtr),y cmp #S.DHCP.OPTIONS.DHCPAck bne .9 @@ -395,6 +405,7 @@ CheckDHCPAck jsr CheckDHCPXID *-------------------------------------- CheckDHCPXID ldy #S.DHCP.XID+3 ldx #3 + .1 lda (ZPFrameBase),y cmp DHCP.DISC.XID,x same XID ? bne .9 @@ -408,25 +419,14 @@ CheckDHCPXID ldy #S.DHCP.XID+3 .9 sec rts *-------------------------------------- -SetFramePtr1AX clc - adc ZPFrameBase - sta ZPFramePtr - txa - adc ZPFrameBase+1 - sta ZPFramePtr+1 - rts -*-------------------------------------- Init.Timeout ldy #TimeOut lda #TIMEOUT.MAX sta (pData),y rts *-------------------------------------- -Wait.TimeOut sec - ldy #TimeOut +Wait.TimeOut ldy #TimeOut lda (pData),y - beq .9 - clc -.9 rts + rts *-------------------------------------- CS.END LIBTCPIP >PSTR "libtcpip.o" @@ -438,7 +438,6 @@ MSG.CFG.ND >CSTR "DHCPCLNT:No Device, exiting.\r\n" MSG.CFG.NA >CSTR "DHCPCLNT:TCPIP Already configured, exiting.\r\n" hLIBTCPIP .BS 1 IPCFG .BS S.IPCFG -FrameLen .BS 2 *-------------------------------------- Socket .DA #S.SOCKET.SOCK.DGRAM .BS 3 diff --git a/SYS/KERNEL.S.DEV.txt b/SYS/KERNEL.S.DEV.txt index dadb965f..7009ddc4 100644 --- a/SYS/KERNEL.S.DEV.txt +++ b/SYS/KERNEL.S.DEV.txt @@ -171,8 +171,24 @@ K.MkNodYA jsr K.GetDevByNameYA Ptr1=NAME * CC = OK, CS = ERROR * A = hFILE *\-------------------------------------- -K.MkNodA sec - rts +K.MkNodA sta .1+1 + >PUSHWI S.NODE.SSOCK + >PUSHBI S.MEM.F.INIT0 + jsr K.GetMem + bcs .9 + + >STYA ZPPtr1 + + ldy #S.NODE.T + lda #S.NODE.T.SSOCK + sta (ZPPtr1),y + + ldy #S.NODE.SSOCK.HSKT +.1 lda #$ff + + sta (ZPPtr1),y + txa +.9 rts */-------------------------------------- * #MKFIFO * return a S.FILE to a new FIFO diff --git a/SYS/KERNEL.S.INIT3.txt b/SYS/KERNEL.S.INIT3.txt index c2b3385c..46fdc3c5 100644 --- a/SYS/KERNEL.S.INIT3.txt +++ b/SYS/KERNEL.S.INIT3.txt @@ -384,22 +384,12 @@ SP.DRV.hi lda #$ff *-------------------------------------- BLK.DRV *-------------------------------------- -EvtMgrInit -* lda #10 -* sta EVTMGR.10TH.CNT WARNING!!!! WRONG BANK!!! +EvtMgrInit lda #$A5 + sta A2osX.TIMER16 + lda #$9B + sta A2osX.TIMER16+1 -* lda A2osX.HZ -* sta EVTMGR.HZ.CNT - - lda MACHID - and #MACHID.TYPE - cmp #MACHID.TYPE.IIc - bne .8 - -* sta CLRIOUDIS -* sta ENBVBLIIC - -.8 lda /EvtMgr.Table + lda /EvtMgr.Table sta pEvent+1 clc rts diff --git a/SYS/KERNEL.S.RUN.txt b/SYS/KERNEL.S.RUN.txt index 569ad593..c158cc48 100644 --- a/SYS/KERNEL.S.RUN.txt +++ b/SYS/KERNEL.S.RUN.txt @@ -8,7 +8,11 @@ AUTO 6 SYS.BASL0 .EQ $800 *-------------------------------------- K.KernelRun jsr TSK.TskMgrRun + stx A2osX.RANDOM16 jsr EVT.GetEvents + txa + eor KBD + sta A2osX.RANDOM16+1 bcs .4 CS=no event jsr TSK.DispatchEvents @@ -51,9 +55,7 @@ K.KernelRun jsr TSK.TskMgrRun .42 bit OPENAPPLE bpl K.KernelRun - inc A2osX.RANDOM16 lda KBD - sta A2osX.RANDOM16+1 bpl K.KernelRun diff --git a/SYS/KERNEL.S.txt b/SYS/KERNEL.S.txt index 57695aae..86e6bb0e 100644 --- a/SYS/KERNEL.S.txt +++ b/SYS/KERNEL.S.txt @@ -85,7 +85,6 @@ A2osX.D002 .EQ * .INB SYS/KERNEL.S.ARG .INB SYS/KERNEL.S.ENV *-------------------------------------- - .INB SYS/KERNEL.S.CNV .INB SYS/KERNEL.S.RUN .INB SYS/KERNEL.S.EVT .INB SYS/KERNEL.S.TSK @@ -100,6 +99,7 @@ A2osX.E000 .EQ * .INB SYS/KERNEL.S.DAT .INB SYS/KERNEL.S.IRQ .INB SYS/KERNEL.S.MEM + .INB SYS/KERNEL.S.CNV .INB SYS/KERNEL.S.CHR *-------------------------------------- PullPtr1Ptr2Ptr3