Kernel 0.9.2

This commit is contained in:
Rémy GIBERT 2018-09-13 17:29:02 +02:00
parent 838a517fb0
commit 7f402fc02b
9 changed files with 145 additions and 121 deletions

Binary file not shown.

Binary file not shown.

View File

@ -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"

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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"