diff --git a/.Floppies/A2OSX.BUILD.po b/.Floppies/A2OSX.BUILD.po index 0669ba65..1be90b2d 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 0329a52f..55abe76e 100644 Binary files a/.Floppies/A2OSX.SRC.po and b/.Floppies/A2OSX.SRC.po differ diff --git a/BIN/EDIT.S.txt b/BIN/EDIT.S.txt index 2a4ce3af..3f510194 100644 --- a/BIN/EDIT.S.txt +++ b/BIN/EDIT.S.txt @@ -453,7 +453,7 @@ DecTmpCount lda TmpCount *-------------------------------------- CS.END SEQ.DETECT .AZ "Querying terminal capabilities...\e[999;999H\e[6n" -SEQ.INIT .AZ "\ec\e[2;%dr" \e[?6h +SEQ.INIT .AZ "\ec\e[7h\e[2;%dr" \e[?6h SEQ.RESET .AZ "\ec" SEQ.SCROLLUP .AZ "\e[%d;%dH\eD" SEQ.SCROLLDN .AZ "\e[%d;%dH\eM" diff --git a/DRV/CONSOLE.DRV.S.txt b/DRV/CONSOLE.DRV.S.txt index 029470cb..4da80fb7 100644 --- a/DRV/CONSOLE.DRV.S.txt +++ b/DRV/CONSOLE.DRV.S.txt @@ -99,7 +99,9 @@ J.EscCodes .DA Scroll.Dn M .DA Scroll.Up D .DA RESET c *-------------------------------------- -J.EscSequences .DA Esc.DispAttr m +J.EscSequences .DA Esc.LWEnable h + .DA Esc.LWDisable l + .DA Esc.DispAttr m .DA Esc.Query n .DA Esc.Scroll r .DA Esc.Erase K @@ -158,14 +160,6 @@ OPEN sta A2osX.SCRNDEVS DEV.ID in A stz OutCnt jsr RESET - - ldy #0 - -.1 lda TelnetOpt,y - jsr Char.Out.Put - iny - cpy #TelnetOpt.LEN - bne .1 *-------------------------------------- CONTROL sta SETTEXT sta SETALTCHAR @@ -304,9 +298,15 @@ WRITE.COUT bit bEscMode *-------------------------------------- FS ldx CH cpx #79 - beq FS.8 + bne .1 + + bit LWFLG + bpl FS.8 - inc CH + stz CH + jmp LF + +.1 inc CH FS.8 clc rts @@ -353,20 +353,19 @@ COUT.EscMode bit bEscModeCSI .1 stz bEscMode - ldy #0 - ldx #0 + ldx #EscCodes.Cnt-1 -.2 iny - cmp EscCodes,y +.2 cmp EscCodes,x beq .3 - inx - inx - cpy EscCodes + dex bne .2 clc rts -.3 jmp (J.EscCodes,x) +.3 txa + asl + tax + jmp (J.EscCodes,x) *-------------------------------------- COUT.EscModeCSI inc EscSeq ldx EscSeq @@ -442,20 +441,20 @@ COUT.ExecEscSeq stz EscSeqParamCnt stz bEscModeCSI stz bEscMode - ldy #0 - ldx #0 + ldx #EscSeqCmds.Cnt-1 -.4 iny - cmp EscSeqCmds,y +.4 cmp EscSeqCmds,x beq .5 - inx - inx - cpy EscSeqCmds + dex bne .4 + clc rts -.5 jmp (J.EscSequences,x) +.5 txa + asl + tax + jmp (J.EscSequences,x) *-------------------------------------- COUT.IAC inc IACBuf ldx IACBuf @@ -591,10 +590,12 @@ COUT.IAC.DONT rts *-------------------------------------- RESET jsr CLRSCR - lda #0 - sta SCROLLTOP lda #23 sta SCROLLBOT + lda #0 + sta SCROLLTOP + dec + sta LWFLG *-------------------------------------- RESETATTR lda #$80 sta INVFLG @@ -643,8 +644,6 @@ ClrScr stz CH lda #" " -* php -* sei sta SETWRITEAUX ldy #39 @@ -653,7 +652,6 @@ ClrScr stz CH bpl .2 sta CLRWRITEAUX -* plp ldy #39 .3 sta (ZPBaseL1),y @@ -672,7 +670,7 @@ CROUT jsr CLREOL rts *-------------------------------------- LF ldy CV - cpy #23 + cpy SCROLLBOT beq SCROLL.UP inc CV clc @@ -730,6 +728,24 @@ SCROLL.DN ldx SCROLLBOT clc rts *-------------------------------------- +Esc.LWEnable sec + .HS 90 BCC +*-------------------------------------- +Esc.LWDisable clc + ldx EscSeqParamCnt + beq .8 + dex + bne .8 + + lda EscSeqParam + eor #7 + bne .8 + + ror LWFLG + +.8 clc + rts +*-------------------------------------- Esc.DispAttr ldx EscSeqParamCnt beq .8 @@ -1065,8 +1081,10 @@ BASEH .HS 04.04.05.05.06.06.07.07.04.04.05.05.06.06.07.07.04.04.05.05.06.06.07 CtrlChars .HS 05080A0C0D151B CtrlChars.Cnt .EQ *-CtrlChars *-------------------------------------- -EscCodes >PSTR "MDc" -EscSeqCmds >PSTR "mnrKH" +EscCodes .AZ "MDc" +EscCodes.Cnt .EQ *-EscCodes +EscSeqCmds .AS "hlmnrKH" +EscSeqCmds.Cnt .EQ *-EscSeqCmds ENQ.String .AZ "XTERM" *-------------------------------------- KeyRemapped .HS 05080A0B0D15 L,D,U,CR,R @@ -1078,18 +1096,15 @@ KeyRemappedUP .HS 1B5B4100 esc[A KeyRemappedCR .HS 0D0A00 crlf KeyRemappedRGHT .HS 1B5B4300 esc[C *-------------------------------------- -TelnetOpt .DA #IAC,#DO,#TELOPT.ECHO -TelnetOpt.LEN .EQ *-TelnetOpt -*-------------------------------------- TELOPS.STATUS *-------------------------------------- WILLDO .DA #TELOPT.BINARY,#TELOPT.SGA WILLDO.CNT .EQ *-WILLDO WILLDONT .DA #TELOPT.TSPEED,#TELOPT.LINEMODE,#TELOPT.STATUS WILLDONT.CNT .EQ *-WILLDONT -DOWILL .DA #TELOPT.BINARY,#TELOPT.SGA,#TELOPT.NAWS,#TELOPT.TTYPE,#TELOPT.NAWS +DOWILL .DA #TELOPT.BINARY,#TELOPT.SGA,#TELOPT.TTYPE,#TELOPT.NAWS DOWILL.CNT .EQ *-DOWILL -DOWONT .DA #TELOPT.NEWENVIRON,#TELOPT.XDISPLOC,#TELOPT.TSPEED,#TELOPT.LFLOW +DOWONT .DA #TELOPT.ECHO,#TELOPT.NEWENVIRON,#TELOPT.XDISPLOC,#TELOPT.TSPEED,#TELOPT.LFLOW DOWONT.CNT .EQ *-DOWONT SB.IS.TTYPE .DA #IAC,#SB,#TELOPT.TTYPE,#SB.IS .AS 'XTERM' @@ -1103,6 +1118,7 @@ SB.IS.NAWS.LEN .EQ *-SB.IS.NAWS *-------------------------------------- CH .BS 1 CV .BS 1 +LWFLG .BS 1 INVFLG .BS 1 SCROLLTOP .BS 1 SCROLLBOT .BS 1 diff --git a/LIB/LIBTCPIP.S.SKT.txt b/LIB/LIBTCPIP.S.SKT.txt index b42e364e..4593bdf1 100644 --- a/LIB/LIBTCPIP.S.SKT.txt +++ b/LIB/LIBTCPIP.S.SKT.txt @@ -165,15 +165,23 @@ SKT.Close jsr SKT.Get.I get SKT in ZPPtrSKT, S.SOCKET.SOCK in A bne * TO DO: Listening socket + ldy #S.SOCKET.TCP.STATUS + lda (ZPPtrSKT),y + cmp #S.SOCKET.TCP.STATUS.CLWAIT + bne .11 + + lda #S.SOCKET.TCP.STATUS.LASTACK + bra .12 + +.11 lda #S.SOCKET.TCP.STATUS.FINWT1 +.12 sta (ZPPtrSKT),y + ldy #S.SOCKET.TCP.OPTIONS lda (ZPPtrSKT),y ora #S.TCP.OPTIONS.FIN+S.TCP.OPTIONS.ACK sta (ZPPtrSKT),y - jsr TCP.OUT SKT.Close, Try to push FIN - - clc - rts + jmp TCP.OUT Try to push FIN/ACK */-------------------------------------- * # SKT.Get * Get Ptr to socket diff --git a/LIB/LIBTCPIP.S.TCP.txt b/LIB/LIBTCPIP.S.TCP.txt index 8e1b1bec..21a52e41 100644 --- a/LIB/LIBTCPIP.S.TCP.txt +++ b/LIB/LIBTCPIP.S.TCP.txt @@ -255,27 +255,9 @@ TCP.IN.JMP.ESTBLSH lda (ZPFrameInPtr),y and #S.TCP.OPTIONS.FIN beq .8 - - ldy #S.SOCKET.TCP.OPTIONS - lda (ZPPtrSKT),y - ora #S.TCP.OPTIONS.ACK ACK the FIN.... - sta (ZPPtrSKT),y - - jsr SKT.GetTCB - - ldx #3 - ldy #S.TCP.ACKNUM+3 - sec + jsr TCP.IN.ACKTheFIN -.3 lda SKT.TCBCache+S.TCB.OUTACKNUM,x - adc #0 - sta SKT.TCBCache+S.TCB.OUTACKNUM,x - dey - dex - bpl .3 - - jsr TCP.OUT.I SKT.GetTCB called, try to ACK the FIN bcs .9 ldy #S.SOCKET.TCP.STATUS @@ -317,12 +299,7 @@ TCP.IN.JMP.FINWT2.1 bit #S.TCP.OPTIONS.FIN bne .8 - ldy #S.SOCKET.TCP.OPTIONS - lda (ZPPtrSKT),y - ora #S.TCP.OPTIONS.ACK - sta (ZPPtrSKT),y - - jsr TCP.OUT ACK the FIN + jsr TCP.IN.ACKTheFIN bcs .9 ldy #S.SOCKET.TCP.STATUS @@ -350,6 +327,28 @@ TCP.IN.JMP.TIMEWT TCP.IN.JMP.CLOSED jmp SKT.Destroy *-------------------------------------- +TCP.IN.ACKTheFIN + ldy #S.SOCKET.TCP.OPTIONS + lda (ZPPtrSKT),y + ora #S.TCP.OPTIONS.ACK + sta (ZPPtrSKT),y + + jsr SKT.GetTCB + + ldx #3 + ldy #S.TCP.ACKNUM+3 + + sec + +.3 lda SKT.TCBCache+S.TCB.OUTACKNUM,x + adc #0 + sta SKT.TCBCache+S.TCB.OUTACKNUM,x + dey + dex + bpl .3 + + jmp TCP.OUT ACK the FIN +*-------------------------------------- TCP.IN.SetDataInPtrAndLen ldy #S.IP.TOTAL.LENGTH+1 lda (ZPFrameInPtr),y @@ -465,8 +464,6 @@ TCP.OUT.SendOptA.1 bit #S.TCP.OPTIONS.ACK beq .10 -* pha - ldx #3 ldy #S.TCP.ACKNUM+3 @@ -476,20 +473,10 @@ TCP.OUT.SendOptA.1 dex bpl .1 -* pla - -.10 -* clc -* bit #S.TCP.OPTIONS.FIN -* beq .11 -* sec - -.11 ldx #3 +.10 ldx #3 ldy #S.TCP.SEQNUM+3 .2 lda SKT.TCBCache+S.TCB.OUTNEXTSEQ,x -* adc #0 -* sta SKT.TCBCache+S.TCB.OUTNEXTSEQ,x sta (ZPFrameOutPtr),y dey dex @@ -506,19 +493,10 @@ TCP.OUT.SendOptA.1 bcs .9 ldy #S.SOCKET.TCP.OPTIONS - lda (ZPPtrSKT),y - and #S.TCP.OPTIONS.FIN - beq .8 - - ldy #S.SOCKET.TCP.STATUS - lda #S.SOCKET.TCP.STATUS.FINWT1 - sta (ZPPtrSKT),y - -.8 ldy #S.SOCKET.TCP.OPTIONS lda #0 sta (ZPPtrSKT),y - clc +* clc .9 rts *-------------------------------------- TCP.NewFrame ldx #S.IP.PROTOCOL.TCP diff --git a/SBIN/GETTY.S.txt b/SBIN/GETTY.S.txt index cc7179f9..59a88156 100644 --- a/SBIN/GETTY.S.txt +++ b/SBIN/GETTY.S.txt @@ -34,6 +34,8 @@ CS.START cld L.MSG.USAGE .DA MSG.USAGE L.MSG.GREETINGS .DA MSG.GREETINGS L.TELNETOPTS .DA TELNETOPTS +L.TELNETOPT.TTYPE .DA TELNETOPT.TTYPE +L.TELNETOPT.LINEMODE .DA TELNETOPT.LINEMODE L.ENV.TERM .DA ENV.TERM L.MSG.DEBUG .DA MSG.DEBUG .DA 0 End Of Reloc Table @@ -111,8 +113,6 @@ CS.RUN.LOOP .8 lda #2 >SYSCALL GetArg >SYSCALL ExecPS - - rts CS.RUN.8 clc rts @@ -125,7 +125,7 @@ CS.RUN.IACMODE jsr PrintHEX jsr PrintHEX - >STA.G IAC.VERB + >STA.G IAC.CMD .1 >SLEEP Wait for IAC OPT >SYSCALL GetChar @@ -133,15 +133,34 @@ CS.RUN.IACMODE jsr PrintHEX jsr PrintHEX - >STA.G IAC.OPT + >STA.G IAC.SUBCMD + tax - >LDA.G IAC.VERB + >LDA.G IAC.CMD cmp #SB beq CS.RUN.IACSB *-------------------------------------- -CS.RUN.IACVERB +CS.RUN.IACVERB cmp #WILL + bne .8 + + cpx #TELOPT.TTYPE + bne .2 + + >PUSHWI TELNETOPT.TTYPE.LEN + >PUSHW L.TELNETOPT.TTYPE + bra .7 - jmp CS.RUN.LOOP +.2 cpx #TELOPT.LINEMODE + bne .8 + + >PUSHWI TELNETOPT.LINEMODE.LEN + >PUSHW L.TELNETOPT.LINEMODE + +.7 ldy #S.PS.hStdOut + lda (pPs),y + >SYSCALL write + +.8 jmp CS.RUN.LOOP *-------------------------------------- CS.RUN.IACSB .1 >SLEEP @@ -186,7 +205,7 @@ CS.RUN.IACSB cmp #SE bne .8 - >LDA.G IAC.OPT + >LDA.G IAC.SUBCMD cmp #TELOPT.TTYPE bne .8 @@ -245,23 +264,25 @@ MSG.DEBUG .AZ "{%h}" *-------------------------------------- TELNETOPTS .DA #IAC,#WILL,#TELOPT.BINARY .DA #IAC,#WILL,#TELOPT.ECHO -* .DA #IAC,#DONT,#TELOPT.ECHO .DA #IAC,#WILL,#TELOPT.SGA .DA #IAC,#DO,#TELOPT.SGA .DA #IAC,#DO,#TELOPT.NAWS .DA #IAC,#DO,#TELOPT.TTYPE - .DA #IAC,#DONT,#TELOPT.LINEMODE -* .DA #IAC,#SB,#TELOPT.LINEMODE,#SB.SEND,#0,#IAC,#SE -* .DA #IAC,#SB,#TELOPT.TTYPE,#SB.SEND,#IAC,#SE + .DA #IAC,#DO,#TELOPT.LINEMODE TELNETOPTS.LEN .EQ *-TELNETOPTS +TELNETOPT.TTYPE .DA #IAC,#SB,#TELOPT.TTYPE,#SB.SEND,#IAC,#SE +TELNETOPT.TTYPE.LEN .EQ *-TELNETOPT.TTYPE +TELNETOPT.LINEMODE + .DA #IAC,#SB,#TELOPT.LINEMODE,#SB.SEND,#0,#IAC,#SE +TELNETOPT.LINEMODE.LEN ENV.TERM .AZ "TERM" *-------------------------------------- .DUMMY .OR 0 DS.START IAC.SB.DATA .BS 64 -IAC.VERB .BS 1 -IAC.OPT .BS 1 +IAC.CMD .BS 1 +IAC.SUBCMD .BS 1 IAC.SB .BS 1 hDEV .BS 1 TimeOut .BS 1 diff --git a/SBIN/SHELL.S.CL.txt b/SBIN/SHELL.S.CL.txt index 4dd31497..eabd35cf 100644 --- a/SBIN/SHELL.S.CL.txt +++ b/SBIN/SHELL.S.CL.txt @@ -3,24 +3,25 @@ PREFIX /A2OSX.BUILD AUTO 4,1 .LIST OFF *-------------------------------------- -CL.PrintPrompt >PUSHBI 0 - >LDYA L.ENV.PS1 +CL.PrintPrompt >LDYA L.ENV.PS1 >SYSCALL GetEnv - >SYSCALL ExpandStr - phx - >SYSCALL printf + bcs .1 + >SYSCALL ExpandStr + bcs .9 + + phx + pha >PUSHBI 0 + pla + >SYSCALL printf + pla + >SYSCALL FreeMem + +.1 >PUSHBI 0 >LDYA L.MSG.PROMPT >SYSCALL printf - plx - php - pha - txa - >SYSCALL FreeMem - pla - plp - rts +.9 rts *-------------------------------------- CL.CHARIN tax diff --git a/SBIN/SHELL.S.txt b/SBIN/SHELL.S.txt index ea6bda7c..3456aa75 100644 --- a/SBIN/SHELL.S.txt +++ b/SBIN/SHELL.S.txt @@ -358,7 +358,7 @@ INTCMDS .AZ "CD" .HS 00 *-------------------------------------- MSG.GREETINGS .AZ "\r\nA2osX-Shell %d.%d\r\n\r\n" -MSG.PROMPT .AZ "$ " +MSG.PROMPT .AZ "\e[7h$ " MSG.ECHO .AS ">%s" MSG.ECHOCRLF .AZ "\r\n" MSG.ERROR .AZ "[$%h]:%S.\r\n"