diff --git a/.Floppies/A2OSX.BUILD.po b/.Floppies/A2OSX.BUILD.po index 505a49a5..7c57594a 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 04ab4e44..02110630 100644 Binary files a/.Floppies/A2OSX.SRC.po and b/.Floppies/A2OSX.SRC.po differ diff --git a/DRV/CONSOLE.DRV.S.txt b/DRV/CONSOLE.DRV.S.txt index 302057ff..3ad8395e 100644 --- a/DRV/CONSOLE.DRV.S.txt +++ b/DRV/CONSOLE.DRV.S.txt @@ -11,7 +11,6 @@ AUTO 6 .INB /A2OSX.BUILD/INC/MACROS.I .INB /A2OSX.BUILD/INC/A2OSX.I .INB /A2OSX.BUILD/INC/IO.I - .INB /A2OSX.BUILD/INC/MLI.ERR.I .INB /A2OSX.BUILD/INC/NET.TELNET.I *-------------------------------------- CURSOR.BLINK.SPEED .EQ 8 @@ -175,11 +174,14 @@ READ jsr Char.Out.Get WRITE bit bEscMode bmi COUT.EscMode bit bIACMode - bmi COUT.IACMode + bpl .10 - cmp #IAC + jmp COUT.IACMode + +.10 cmp #IAC bne .1 sta bIACMode + stz IACBuf clc rts @@ -198,10 +200,11 @@ WRITE bit bEscMode *-------------------------------------- FS ldx CH cpx #79 - beq .8 + beq FS.8 inc CH -.8 clc + +FS.8 clc rts *-------------------------------------- DEL ldx CH @@ -210,7 +213,7 @@ DEL ldx CH bra .3 .1 ldy CV - beq .8 + beq FS.8 lda #79 sta CH @@ -221,9 +224,6 @@ DEL ldx CH ldx CH ldy CV jmp SetCharAtXY - -.8 clc - rts *-------------------------------------- COUT.Ctrl ldx #CtrlChars.Cnt-1 @@ -239,17 +239,6 @@ COUT.Ctrl ldx #CtrlChars.Cnt-1 tax jmp (J.CtrlChars,x) *-------------------------------------- -COUT.IACMode tax - bmi .8 go store 2nd byte (WILL, WONT....) - -* 3rd byte...option... -* ignore all for now -* reset bIACMode - -.8 sta bIACMode - clc - rts -*-------------------------------------- COUT.EscMode bit bEscModeCSI bmi COUT.EscModeCSI cmp #'[' @@ -363,6 +352,44 @@ COUT.ExecEscSeq stz EscSeqParamCnt .5 jmp (J.EscSequences,x) *-------------------------------------- +COUT.IACMode inc IACBuf + ldx IACBuf + sta IACBuf,x + + cpx #1 VERB ? + beq .8 yes, wait for additional bytes + + ldy IACBuf+1 get back VERB + cpy #SB + bne .7 not a SB/SE....end of SEQ + + cmp #SE + bne .8 wait for ending SE....keep bIACMode + + lda IACBuf+2 Get OPT + cmp #TELOPT.TTYPE + bne .7 + + lda IACBuf+3 + cmp #SB.SEND + bne .7 + + ldy #0 + +.1 lda SB.IS.TTYPE,y + jsr Char.Out.Put + iny + cpy #SB.IS.TTYPE.LEN + bne .1 + +.7 + + + stz bIACMode + +.8 clc + rts +*-------------------------------------- RESET jsr CLRSCR lda #0 sta SCROLLTOP @@ -853,6 +880,7 @@ TelnetOpt .DA #IAC,#DO,#TELOPT.ECHO CtrlChars.Cnt .EQ 7 CtrlChars .HS 05080A0C0D151B bIACMode .BS 1 +IACBuf .BS 33 bEscMode .BS 1 bEscModeCSI .BS 1 bEscSeqInNum .BS 1 @@ -867,7 +895,11 @@ DEVSTAT .DA #S.DEVSTAT.S.WRITE+S.DEVSTAT.S.READ .DA #S.DEVSTAT.T.CHAR .DA #0 .DA $0900 -ENQ.String >CSTR "A2osXTERM" +ENQ.String >CSTR "A2osXTERM" +SB.IS.TTYPE .DA #IAC,#SB,#TELOPT.TTYPE,#SB.IS + .AS 'A2osXTERM' + .DA #IAC,#SE +SB.IS.TTYPE.LEN .EQ *-SB.IS.TTYPE *-------------------------------------- MAN SAVE /A2OSX.SRC/DRV/CONSOLE.DRV.S diff --git a/INC/NET.TELNET.I.txt b/INC/NET.TELNET.I.txt index b9e4800b..b10955dd 100644 --- a/INC/NET.TELNET.I.txt +++ b/INC/NET.TELNET.I.txt @@ -6,12 +6,10 @@ AUTO 6 *-------------------------------------- * https://android.googlesource.com/platform/prebuilts/gcc/linux-x86/host/x86_64-linux-glibc2.7-4.6/+/jb-dev/sysroot/usr/include/arpa/telnet.h *-------------------------------------- -TCP.PORT.TELNET .EQ 23 +TCP.PORT.TELNET .EQ 23 *-------------------------------------- -SE .EQ 240 -SB .EQ 250 -SB.IS .EQ 0 -SB.SEND .EQ 1 +SE .EQ 240 $F0 +SB .EQ 250 $FA WILL .EQ 251 $FB WONT .EQ 252 $FC DO .EQ 253 $FD @@ -60,5 +58,8 @@ TELOPT.ENCRYPT .EQ 38 Encryption option TELOPT.NEWENVIRON .EQ 39 New - Environment variables TELOPT.EXOPL .EQ 255 extended-options-list *-------------------------------------- +SB.IS .EQ 0 +SB.SEND .EQ 1 +*-------------------------------------- MAN SAVE /A2OSX.BUILD/INC/NET.TELNET.I diff --git a/SBIN/GETTY.S.txt b/SBIN/GETTY.S.txt index fe55e9ba..fb2f608f 100644 --- a/SBIN/GETTY.S.txt +++ b/SBIN/GETTY.S.txt @@ -12,7 +12,7 @@ AUTO 6 .INB /A2OSX.BUILD/INC/A2OSX.I .INB /A2OSX.BUILD/INC/NET.TELNET.I *-------------------------------------- -TIMEOUT.MAX .EQ 10 1 sec. +TIMEOUT.MAX .EQ 100 1 sec. *-------------------------------------- ZPTmp1 .EQ ZPBIN *-------------------------------------- @@ -23,9 +23,10 @@ CS.START cld .DA #$61 6502,Level 1 (65c02) .DA #1 BIN Layout Version 1 .DA 0 - .DA CS.END-CS.START - .DA DS.END-DS.START Data Segment to Allocate - .DA 16 SS + .DA CS.END-CS.START CS + .DA DS.END-DS.START DS + .DA #16 SS + .DA #2 ZP .DA 0 *-------------------------------------- * Relocation Table @@ -35,9 +36,11 @@ CS.START cld .DA CS.DOEVENT .DA CS.QUIT L.MSG.USAGE .DA MSG.USAGE -L.MSG.TELNET.OPT .DA MSG.TELNET.OPT +L.MSG.TELNETOPT .DA MSG.TELNETOPT L.MSG.GREETINGS .DA MSG.GREETINGS -L.TERM .DA TERM +L.ENV.TERM .DA ENV.TERM +L.HEX .DA HEX +L.HEX2 .DA HEX2 .DA 0 End Of Reloc Table *-------------------------------------- CS.INIT ldy #S.PS.ARGC @@ -82,115 +85,52 @@ CS.INIT ldy #S.PS.ARGC sec .9 rts *-------------------------------------- -CS.RUN jsr Init.Timeout - -.66 >SYSCALL Sleep +CS.RUN >SYSCALL Sleep >SYSCALL GetChar - bcc .1 - bcs .66 -* jsr Wait.Timeout -* bcc .66 + bcs CS.RUN + +.11 jsr PRINTA2 + >SYSCALL Sleep + >SYSCALL GetChar + + bcc .11 + + jsr Init.Timeout -* jmp .2 + ldy #0 +.1 lda MSG.TELNETOPT,y + phy + >SYSCALL PutChar.A + ply + iny + cpy #MSG.TELNETOPT.LEN + bne .1 -.10 >SYSCALL Sleep - >SYSCALL GetChar - bcs .1 +* >LDYA L.MSG.TELNETOPT +* >SYSCALL PrintF.YA +* bcs * +CS.RUN.LOOP - -.1 cmp #IAC - beq .11 - - jmp .2 - -.11 >SYSCALL Sleep +.1 >SYSCALL Sleep >SYSCALL GetChar - bcs .11 + bcs .4 - ldy #IAC.VERB - sta (pData),y - -.12 >SYSCALL Sleep - >SYSCALL GetChar - bcs .12 - - ldy #IAC.OPT - sta (pData),y - - ldy #IAC.VERB - lda (pData),y - cmp #SB - bne .10 - - ldy #IAC.OPT - lda (pData),y - cmp #TELOPT.TTYPE - bne .15 only interested in Term Type, go get IAC,SE - -.13 >SYSCALL Sleep - >SYSCALL GetChar - bcs .13 - - cmp #SB.IS not a valid reply, go get IAC,SE - bne .15 - - lda #0 - sta (pData) reset IAC.TERM - -.14 >SYSCALL Sleep - >SYSCALL GetChar - bcs .14 + jsr PRINTA cmp #IAC - beq .16 end of DATA, go wait SE + beq CS.RUN.IACMODE - pha - lda (pData) - inc - tay - sta (pData) - pla - - sta (pData),y - bra .14 - -.15 >SYSCALL Sleep - >SYSCALL GetChar - bcs .15 - - cmp #IAC - bne .15 - -.16 >SYSCALL Sleep - >SYSCALL GetChar - bcs .16 - - cmp #SE - bne .16 - - - jmp .10 - -.2 - - lda (pData) - beq .5 - >PUSHW pData - >PUSHW L.TERM - >SYSCALL SetEnv - -.5 - >LDYA L.MSG.TELNET.OPT - >SYSCALL PrintF.YA - bcs * +.4 jsr Wait.Timeout + bcc .1 + >LDYA L.MSG.GREETINGS >SYSCALL PrintF.YA - bcs .8 unable to send greetings...loop.. + bcs .8 unable to send greetings...reset.. ldy #hBinName lda (pData),y @@ -201,6 +141,87 @@ CS.RUN jsr Init.Timeout .8 clc rts *-------------------------------------- +CS.RUN.IACMODE >SYSCALL Sleep Wait for IAC VERB (or SB) + >SYSCALL GetChar + bcs CS.RUN.IACMODE + + >STA.G IAC.VERB + jsr PRINTA + +.1 >SYSCALL Sleep Wait for IAC OPT + >SYSCALL GetChar + bcs .1 + + >STA.G IAC.OPT + jsr PRINTA + + >LDA.G IAC.VERB + cmp #SB + beq CS.RUN.IACSB +*-------------------------------------- +CS.RUN.IACVERB + lda #'.' + >SYSCALL PutChar.A + jmp CS.RUN.LOOP +*-------------------------------------- +CS.RUN.IACSB +.1 >SYSCALL Sleep + >SYSCALL GetChar + bcs .1 + + >STA.G IAC.SB + + jsr PRINTA + + lda #0 + sta (pData) reset IAC.SB.DATA + +.2 >SYSCALL Sleep + >SYSCALL GetChar + bcs .2 + + cmp #IAC + beq .4 end of DATA, go wait SE + + pha + jsr PRINTA + + ldy #IAC.SB.DATA-1 + +.3 iny + lda (pData),y + bne .3 + + pla + sta (pData),y + iny + lda #0 + sta (pData),y + bra .2 + +.4 >SYSCALL Sleep + >SYSCALL GetChar + bcs .4 + + cmp #SE + bne .8 + + >LDA.G IAC.OPT + cmp #TELOPT.TTYPE + bne .8 + + >LDA.G IAC.SB + cmp #SB.IS + bne .8 + + >PUSHEA.G IAC.SB.DATA + >PUSHW L.ENV.TERM + >SYSCALL SetEnv + +.8 lda #':' + >SYSCALL PutChar.A + jmp CS.RUN.LOOP +*-------------------------------------- CS.DOEVENT lda (pEvent) bpl .9 is it a TIMER event? @@ -237,12 +258,24 @@ Wait.TimeOut sec clc .9 rts *-------------------------------------- +PRINTA pha + >PUSHA + >LDYA L.HEX + >SYSCALL PrintF.YA + pla + rts +*-------------------------------------- +PRINTA2 pha + >PUSHA + >LDYA L.HEX2 + >SYSCALL PrintF.YA + pla + rts CS.END MSG.USAGE >CSTR "Usage : GETTY \r\n" -MSG.TELNET.OPT -* .DA #IAC,#WILL,#TELOPT.BINARY -* .DA #IAC,#DO,#TELOPT.LINEMODE -* .DA #IAC,#SB,#TELOPT.LINEMODE,#1,#0,#IAC,#SE +MSG.TELNETOPT .DA #IAC,#WILL,#TELOPT.BINARY + .DA #IAC,#DO,#TELOPT.LINEMODE + .DA #IAC,#SB,#TELOPT.LINEMODE,#SB.SEND,#0,#IAC,#SE .DA #IAC,#DONT,#TELOPT.ECHO .DA #IAC,#WILL,#TELOPT.ECHO .DA #IAC,#WILL,#TELOPT.SGA @@ -250,19 +283,22 @@ MSG.TELNET.OPT * .DA #IAC,#DO,#TELOPT.NAWS .DA #IAC,#DO,#TELOPT.TTYPE .DA #IAC,#SB,#TELOPT.TTYPE,#SB.SEND,#IAC,#SE - .DA #0 -MSG.GREETINGS >CSTR "\r\nA2osX-GeTTY\r\n" -TERM >CSTR "TERM" +MSG.TELNETOPT.LEN .EQ *-MSG.TELNETOPT +MSG.GREETINGS >CSTR "\r\nA2osX-GeTTY 0.9.1\r\n" +ENV.TERM >CSTR "TERM" +HEX >CSTR "[%h]" +HEX2 >CSTR "{%h}" * \e[12h *-------------------------------------- .DUMMY .OR 0 DS.START -IAC.TERM .BS 64 +IAC.SB.DATA .BS 64 hBinName .BS 1 TimeOut .BS 1 IAC.VERB .BS 1 IAC.OPT .BS 1 +IAC.SB .BS 1 DS.END .ED MAN SAVE /A2OSX.SRC/SBIN/GETTY.S diff --git a/SBIN/SHELL.S.CMD.txt b/SBIN/SHELL.S.CMD.txt index 8dbf54bb..19d2b7bf 100644 --- a/SBIN/SHELL.S.CMD.txt +++ b/SBIN/SHELL.S.CMD.txt @@ -232,7 +232,7 @@ Cmd.Exec.EXT.BIN >SYSCALL ExecProcessNewEnvYA jmp Cmd.Exec.Done -.2 >SYSCALL CreateProcessYA +.2 >SYSCALL CreateProcessNewEnvYA jmp Cmd.Exec.Done *-------------------------------------- Cmd.Exec.EXT.Search