diff --git a/.Floppies/A2OSX.BUILD.po b/.Floppies/A2OSX.BUILD.po index ff3dcfd1..18f69996 100644 Binary files a/.Floppies/A2OSX.BUILD.po and b/.Floppies/A2OSX.BUILD.po differ diff --git a/BIN/SH.S.CORE.txt b/BIN/SH.S.CORE.txt index 4194f36e..db8947ac 100644 --- a/BIN/SH.S.CORE.txt +++ b/BIN/SH.S.CORE.txt @@ -120,14 +120,39 @@ CORE.Run >LDYA ZPInputBufPtr Save Actual cmd for looping .4 >LDYA L.CMD internal command ? jsr CORE.LookupInputBuf - bcs .6 no...assume external...no IO token Expected + bcc .41 - jsr CORE.SkipCharsA + jsr CORE.ArgV.Add + bra .42 + +.41 jsr CORE.SkipCharsA txa >STA.G CORE.IntCmd - bra .7 internal, do not add token + cpx #C.FOR + bcs .7 FOR...FI : always execute + +.42 jsr CORE.StkGet IF,WHILE,FOR ? + bcs .7 no particular context, exec... + + and #$C0 + cmp #$C0 + beq .7 context/parent context is TRUE, exec + +.43 jsr CORE.GetNextCharNB + bcs .44 EOF + + cmp #C.CR + beq .44 + + cmp #';' TODO ";" + bne .43 + +.44 jsr CORE.GetNextCharNB Skip EoL char + clc + rts + .5 >LDYA L.CORE.IO jsr CORE.LookupInputBuf bcs .6 @@ -165,32 +190,13 @@ CORE.ExecCmd jsr CORE.GetNextCharNB Skip EoL char CORE.ExecCmd.1 lda #0 sta (ZPArgVBufPtr) - jsr CORE.StkGet IF,WHILE,FOR ? - bcs .3 no particular context, exec... - tax - - >LDA.G CORE.IntCmd - bmi .2 external ... - - and #$3F - cmp #C.FOR - bcs .3 FOR...FI : always execute - -.2 txa - bpl .8 context is FALSE, skip line - asl - bpl .8 parent context is FALSE, skip line - -.3 >LDYA ZPArgVBuf + >LDYA ZPArgVBuf >STYA ZPArgVBufPtr >LDA.G CORE.IntCmd bmi CORE.ExecExtCmd tax jmp (J.CMD,x) - -.8 clc - rts CORE.ExecExtCmd >PUSHB.G CORE.PSFlags >LDYA ZPArgVBuf diff --git a/INC/A2osX.I.txt b/INC/A2osX.I.txt index d626ff92..cf1fe6c5 100644 --- a/INC/A2osX.I.txt +++ b/INC/A2osX.I.txt @@ -457,7 +457,7 @@ S.FD.DSOCK.OPEN .EQ 3 S.FD.DSOCK.CLOSE .EQ 4 S.FD.DSOCK.READ .EQ 5 S.FD.DSOCK.WRITE .EQ 6 -S.FD.DSOCK.STATUS .EQ 7 +S.FD.DSOCK.EOF .EQ 7 * S.FD.DSOCK .EQ 8 *-------------------------------------- diff --git a/LIB/LIBTCPIP.S.SKT.txt b/LIB/LIBTCPIP.S.SKT.txt index 1072f352..64722009 100644 --- a/LIB/LIBTCPIP.S.SKT.txt +++ b/LIB/LIBTCPIP.S.SKT.txt @@ -382,44 +382,22 @@ SKT.shutdown.STREAM * `>PUSHWI count` * `>PUSHW buf` * `lda fd` -* `>LIBCALL hLIBTCPIP,LIBTCPIP.skt.read` +* `>LIBCALL hLIBTCPIP,LIBTCPIP.read` * ## RETURN VALUE * CC: Y,A = bytes read * CS: A = EC *\-------------------------------------- SKT.Read jsr SKT.PullhFDDataInPtrLen - ldy #S.SOCKET.T - lda (ZPPtrSKT),y - cmp #S.SOCKET.T.STREAM - bne .90 bad skt + jsr SKT.EOF.I + bcs .9 I/O error - ldy #S.SOCKET.O - lda (ZPPtrSKT),y - and #S.SOCKET.O.ACCEPTCONN - bne .90 Bad Skt + tay + beq .9 exit with CC,Y,A = 0 + + jmp SKT.GetDataFromSktIn - ldy #S.SOCKET.TCP.S - lda (ZPPtrSKT),y - cmp #S.SOCKET.TCP.S.ESTBLSH - bcc .92 Not yet established...no data - cmp #S.SOCKET.TCP.S.FINWT2 - bcs .91 closing...IO err - - jsr SKT.GetDataFromSktIn - rts if CS, No data... - -.90 lda #ERR.SKT.BAD - sec - rts - -.91 lda #MLI.E.IO - sec - rts - -.92 lda #0 - sec -.99 rts +.9 rts */-------------------------------------- * # Write (STREAM) * ## C @@ -429,28 +407,15 @@ SKT.Read jsr SKT.PullhFDDataInPtrLen * `>PUSHWI count` * `>PUSHW buf` * `lda fd` -* `>LIBCALL hLIBTCPIP,LIBTCPIP.skt.write` +* `>LIBCALL hLIBTCPIP,LIBTCPIP.write` * ## RETURN VALUE * CC: Y,A = bytes written * CS: A = EC *\-------------------------------------- SKT.Write jsr SKT.PullhFDDataInPtrLen - ldy #S.SOCKET.T - lda (ZPPtrSKT),y - cmp #S.SOCKET.T.STREAM - bne .99 - - ldy #S.SOCKET.O - lda (ZPPtrSKT),y - and #S.SOCKET.O.ACCEPTCONN - bne .99 - - ldy #S.SOCKET.TCP.S - lda (ZPPtrSKT),y - cmp #S.SOCKET.TCP.S.ESTBLSH - bcc .90 Not yet established...no data - bne .91 + jsr SKT.CheckStream + bcs .9 jsr SKT.AddDataToSktOut will call SKT.GetTCB bcs .90 @@ -461,15 +426,7 @@ SKT.Write jsr SKT.PullhFDDataInPtrLen .90 lda #0 no data transfered sec - rts - -.91 lda #MLI.E.IO - sec - rts - -.99 lda #ERR.SKT.BAD - sec - rts +.9 rts */-------------------------------------- * # Recv (RAW,DGRAM,SEQPACKET) * # RecvFrom (RAW,DGRAM,SEQPACKET) @@ -480,7 +437,7 @@ SKT.Write jsr SKT.PullhFDDataInPtrLen * **In:** * `>PUSHW addr` (RecvFrom) * `lda fd` -* `>LIBCALL hLIBTCPIP,LIBTCPIP.skt.Recv` +* `>LIBCALL hLIBTCPIP,LIBTCPIP.Recv` * ## RETURN VALUE * CC: A = hMem * CS: A = EC @@ -589,7 +546,7 @@ SKT.Recv clc * `>PUSHWI count` * `>PUSHW buf` * `lda fd` -* `>LIBCALL hLIBTCPIP,LIBTCPIP.skt.send` +* `>LIBCALL hLIBTCPIP,LIBTCPIP.send` * ## RETURN VALUE * CC: Y,A = bytes written * CS: A = EC @@ -669,15 +626,47 @@ SKT.setsockopt >SYSCALL GetMemPtr sta (ZPPtrSKT),y * clc rts -*-------------------------------------- +*-------------------------------------- SKT.EOF >SYSCALL GetMemPtr >STYA ZPPtrSKT - - ldy #S.SOCKET.TCP.INUSED + +SKT.EOF.I ldy #S.SOCKET.TCP.INUSED lda (ZPPtrSKT),y iny ora (ZPPtrSKT),y - clc + bne .8 + + jsr SKT.CheckStream + bcs .9 + + lda #0 no DATA + +.8 clc +.9 rts +*-------------------------------------- +SKT.CheckStream ldy #S.SOCKET.T + lda (ZPPtrSKT),y + cmp #S.SOCKET.T.STREAM + bne .99 + + ldy #S.SOCKET.O + lda (ZPPtrSKT),y + and #S.SOCKET.O.ACCEPTCONN + bne .99 + + ldy #S.SOCKET.TCP.S + lda (ZPPtrSKT),y + beq .91 + cmp #S.SOCKET.TCP.S.CLWAIT + bcs .91 + rts CC=ESTBLSH...or less + +.91 lda #MLI.E.IO + sec + rts + +.99 lda #ERR.SKT.BAD + sec rts */-------------------------------------- * # GetTable @@ -957,13 +946,8 @@ SKT.AddDataToSktIn *-------------------------------------- SKT.GetDataFromSktIn jsr SKT.GetTCB - lda SKT.Cache+S.SOCKET.TCP.INUSED - ora SKT.Cache+S.SOCKET.TCP.INUSED+1 - bne .10 - sec - rts A=0,NO DATA - -.10 ldy #S.SOCKET.SQ.hInMem + + ldy #S.SOCKET.SQ.hInMem lda (ZPPtrSKT),y >SYSCALL GetMemPtr >STYA ZPTmpPtr1 Make ZPTmpPtr1=buffer base @@ -1042,11 +1026,7 @@ SKT.GetDataFromSktIn .7 pla discard byte counter HI -.8 lda ZPTmpPtr3 Do we have transfered something? - ora ZPTmpPtr3+1 - beq .9 - - >ADC16 SKT.Cache+S.SOCKET.TCP.INFREE,ZPTmpPtr3 +.8 >ADC16 SKT.Cache+S.SOCKET.TCP.INFREE,ZPTmpPtr3 >SBC16 SKT.Cache+S.SOCKET.TCP.INUSED,ZPTmpPtr3 lda SKT.Cache+S.SOCKET.TCP.OUTACKNUM+3 @@ -1074,10 +1054,6 @@ SKT.GetDataFromSktIn >LDYA ZPTmpPtr3 clc rts -.9 -* lda #0 - sec - rts *-------------------------------------- * From SKT.Write.TCP * Src : ZPDataInPtr/ZPDataInLen diff --git a/SBIN/GETTY.S.txt b/SBIN/GETTY.S.txt index 54101a9f..47528bca 100644 --- a/SBIN/GETTY.S.txt +++ b/SBIN/GETTY.S.txt @@ -117,17 +117,7 @@ CS.RUN.LOOP0 >LDYA L.ENV.TERM ldy #S.PS.hStdOut lda (pPs),y >SYSCALL fwrite - bcs .9 I/O error - -.2 >LDA.G ArgDev - >SYSCALL ArgV - >PUSHYA - >PUSHWI K.VER - >PUSHBI 4 - >LDYA L.MSG.GREETINGS - >SYSCALL printf - -.9 bcs CS.RUN.9 unable to send greetings...reset.. + bcs CS.RUN.EXIT I/O error jsr Init.Timeout @@ -148,23 +138,32 @@ CS.RUN.LOOP1 >SLEEP cmp #IAC beq CS.RUN.IACMODE >SYSCALL PutChar - bcc .2 + bcs CS.RUN.EXIT bra CS.RUN.LOOP1 .1 jsr Wait.Timeout bcc CS.RUN.LOOP1 + + >LDA.G ArgDev + >SYSCALL ArgV + >PUSHYA + >PUSHWI K.VER + >PUSHBI 4 + >LDYA L.MSG.GREETINGS + >SYSCALL printf + + bcs CS.RUN.EXIT unable to send greetings... .2 >PUSHBI S.PS.F.HOLD >LDA.G ArgProg >SYSCALL ArgV >SYSCALL ExecV - bcs CS.RUN.9 >SLEEP - >LDA.G bExitOnClose +CS.RUN.EXIT >LDA.G bExitOnClose bmi .8 jmp CS.RUN.LOOP0 diff --git a/SBIN/HTTPD.S.txt b/SBIN/HTTPD.S.txt index c3f2e7c7..36f25b02 100644 --- a/SBIN/HTTPD.S.txt +++ b/SBIN/HTTPD.S.txt @@ -23,7 +23,8 @@ CS.START cld jmp (.1,x) .DA #$61 6502,Level 1 (65c02) .DA #1 BIN Layout Version 1 - .DA 0 + .DA #S.PS.F.EVENT + .DA #0 .DA CS.END-CS.START CS .DA DS.END-DS.START DS .DA #64 SS @@ -51,9 +52,6 @@ CS.INIT >LDYA L.LIBTCPIP >SYSCALL LoadLib sta hLIBTCPIP - lda (pPs) - ora #S.PS.F.EVENT Now accept events - sta (pPs) clc rts *-------------------------------------- diff --git a/SBIN/TELNETD.S.txt b/SBIN/TELNETD.S.txt index 82a9a6c3..af4cbcde 100644 --- a/SBIN/TELNETD.S.txt +++ b/SBIN/TELNETD.S.txt @@ -63,18 +63,28 @@ CS.RUN jsr Init.Timeout >LDYA L.MSG.TCPWAIT >SYSCALL puts -.1 >LIBCALL hLIBTCPIP,LIBTCPIP.GETCFG is TCPIP loaded ? +.1 >SLEEP + + >LIBCALL hLIBTCPIP,LIBTCPIP.GETCFG is TCPIP loaded ? bcs .99 >STYA ZPIPCfgPtr lda (ZPIPCfgPtr) Configured ? bmi CS.RUN.INIT - >SLEEP jsr Wait.Timeout - bcc .1 + bcs .99 + + ldy #S.PS.hStdIn + lda (pPs),y + >SYSCALL feof + bcs .9 I/O err + tay + beq .1 + >SYSCALL GetChar - bcs .1 + bcs .9 + cmp #$03 bne .1 jmp CS.RUN.ABORT @@ -84,7 +94,7 @@ CS.RUN jsr Init.Timeout >SYSCALL puts pla sec - rts +.9 rts CS.RUN.INIT ldx #3 ldy #S.IPCFG.IP+3 @@ -122,16 +132,14 @@ CS.RUN.PORTOK >PUSHBI 0 no protocol >SYSCALL puts .2 >SLEEP - jsr CS.RUN.SERVER - bcs CS.RUN.ERR -* >SYSCALL GetChar -* bcs .2 + >LDA.G hSrvSocket + >LIBCALL hLIBTCPIP,LIBTCPIP.Accept + bcs .2 -* cmp #$03 -* beq CS.RUN.ABORT - - bra .2 + jsr CS.RUN.SERVER + bcc .2 + rts .9 pha >LDYA L.MSG.SKTERR @@ -144,15 +152,10 @@ CS.RUN.ABORT >LDYA L.MSG.ABORT >SYSCALL puts lda #3 -CS.RUN.ERR sec + sec rts *-------------------------------------- -CS.RUN.SERVER >LDA.G hSrvSocket - - >LIBCALL hLIBTCPIP,LIBTCPIP.Accept - bcs .8 - - pha +CS.RUN.SERVER pha ldy #hSockets ldx #CONN.MAX @@ -161,7 +164,7 @@ CS.RUN.SERVER >LDA.G hSrvSocket pla sta (pData),y - bra CS.RUN.CLIENT + bra CS.RUN.CLIENT .2 iny dex @@ -172,7 +175,9 @@ CS.RUN.SERVER >LDA.G hSrvSocket .8 clc rts *-------------------------------------- -CS.RUN.CLIENT >STA.G hClientSocket +CS.RUN.CLIENT >SLEEP give some time for TCPIP SYN/ACK + + >STA.G hClientSocket >SYSCALL GetMemPtr >STYA ZPSktPtr diff --git a/SYS/KERNEL.S.INIT.txt b/SYS/KERNEL.S.INIT.txt index a55cbdd8..9c5bcb5f 100644 --- a/SYS/KERNEL.S.INIT.txt +++ b/SYS/KERNEL.S.INIT.txt @@ -1142,7 +1142,7 @@ I.ENV.ROOT .AZ "ROOT" I.ENV.PATH .AZ "PATH=${ROOT}SBIN/:${ROOT}BIN/" I.ENV.LIB .AZ "LIB=${ROOT}LIB/" I.ENV.DRV .AZ "DRV=${ROOT}DRV/" -CTRLR.SHELL .AZ "${ROOT}BIN/SHELL" +CTRLR.SHELL .AZ "${ROOT}BIN/SH" ETCINIT.CMDLINE .AZ "${ROOT}ETC/INIT" *-------------------------------------- MLIOPEN00 .DA #3 diff --git a/SYS/KERNEL.S.IO.txt b/SYS/KERNEL.S.IO.txt index b62f1452..c2475044 100644 --- a/SYS/KERNEL.S.IO.txt +++ b/SYS/KERNEL.S.IO.txt @@ -404,9 +404,6 @@ IO.WRITE.CDEV ldx #IOCTL.WRITE .9 >RET 4 *-------------------------------------- -IO.EOF.SSOCK ldy #S.FD.SSOCK.EOF - .HS 2C BIT ABS -*-------------------------------------- IO.WRITE.SSOCK ldy #S.FD.SSOCK.WRITE .HS 2C BIT ABS *-------------------------------------- @@ -419,9 +416,24 @@ IO.READ.SSOCK ldy #S.FD.SSOCK.READ jsr K.GetMemPtr >STYA .1+1 - lda IO.hFD + lda IO.hFD -.1 jmp $FFFF SELF MODIFIED +.1 jsr $FFFF SELF MODIFIED + bcs .9 + + phy + ply + bne .9 + + tax + bne .9 + + inc pStack CC, Y,A = 0 + inc pStack + inc pStack + inc pStack keep buf/count on stack + sec BLOCKING I/O +.9 rts *-------------------------------------- * (pStack)+2 count * (pStack)+0 buf @@ -702,6 +714,20 @@ IO.EOF.CDEV >LDYAI K.IOBuf ora K.IOBuf+1 .9 rts *-------------------------------------- +IO.EOF.SSOCK ldy #S.FD.SSOCK.EOF + + lda (pFD),y + tax Function Offset in LIB + + ldy #S.FD.SSOCK.IOHANDLER + lda (pFD),y + jsr K.GetMemPtr + >STYA .1+1 + + lda IO.hFD + +.1 jmp $FFFF SELF MODIFIED +*-------------------------------------- IO.EOF.PIPE lda #MLI.E.IO sec diff --git a/SYS/KERNEL.S.MATH.txt b/SYS/KERNEL.S.MATH.txt index 03672bb2..86bb5d12 100644 --- a/SYS/KERNEL.S.MATH.txt +++ b/SYS/KERNEL.S.MATH.txt @@ -31,7 +31,7 @@ K.FPwr ldx #ROM.PWR jsr MATH.PullARG plx - bra MATH.Go + jmp GP.RomCallPushFAC */-------------------------------------- * # Log,Sqr,Exp,Cos,Sin,Tan,ATan * Return Log(x), Sqr(x), E^X, Cos(x), Sin(X), Tan(x), ATan(x) @@ -68,7 +68,7 @@ K.ATan ldx #ROM.ATAN jsr MATH.PullFAC plx - bra MATH.Go + jmp GP.RomCallPushFAC */-------------------------------------- * # float * Return 'floated' long @@ -92,7 +92,7 @@ K.Float ldx #4 ldx #ROM.LTOF -MATH.Go jmp GP.RomCallPushFAC + jmp GP.RomCallPushFAC */-------------------------------------- * # lrintf * Return float rounded into a long