mirror of
https://github.com/A2osX/A2osX.git
synced 2025-01-22 22:30:25 +00:00
Kernel 0.9.1 : More TELNET support....
This commit is contained in:
parent
bad4a3fc8e
commit
04c739f318
Binary file not shown.
Binary file not shown.
@ -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
|
||||
|
@ -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
|
||||
|
250
SBIN/GETTY.S.txt
250
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 <DEV> <PROGRAM>\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
|
||||
|
@ -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
|
||||
|
Loading…
x
Reference in New Issue
Block a user