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 CS.END
SEQ.DETECT .AZ "Querying terminal capabilities...\e[999;999H\e[6n" 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.RESET .AZ "\ec"
SEQ.SCROLLUP .AZ "\e[%d;%dH\eD" SEQ.SCROLLUP .AZ "\e[%d;%dH\eD"
SEQ.SCROLLDN .AZ "\e[%d;%dH\eM" SEQ.SCROLLDN .AZ "\e[%d;%dH\eM"

View File

@ -99,7 +99,9 @@ J.EscCodes .DA Scroll.Dn M
.DA Scroll.Up D .DA Scroll.Up D
.DA RESET c .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.Query n
.DA Esc.Scroll r .DA Esc.Scroll r
.DA Esc.Erase K .DA Esc.Erase K
@ -158,14 +160,6 @@ OPEN sta A2osX.SCRNDEVS DEV.ID in A
stz OutCnt stz OutCnt
jsr RESET jsr RESET
ldy #0
.1 lda TelnetOpt,y
jsr Char.Out.Put
iny
cpy #TelnetOpt.LEN
bne .1
*-------------------------------------- *--------------------------------------
CONTROL sta SETTEXT CONTROL sta SETTEXT
sta SETALTCHAR sta SETALTCHAR
@ -304,9 +298,15 @@ WRITE.COUT bit bEscMode
*-------------------------------------- *--------------------------------------
FS ldx CH FS ldx CH
cpx #79 cpx #79
beq FS.8 bne .1
bit LWFLG
bpl FS.8
inc CH stz CH
jmp LF
.1 inc CH
FS.8 clc FS.8 clc
rts rts
@ -353,20 +353,19 @@ COUT.EscMode bit bEscModeCSI
.1 stz bEscMode .1 stz bEscMode
ldy #0 ldx #EscCodes.Cnt-1
ldx #0
.2 iny .2 cmp EscCodes,x
cmp EscCodes,y
beq .3 beq .3
inx dex
inx
cpy EscCodes
bne .2 bne .2
clc clc
rts rts
.3 jmp (J.EscCodes,x) .3 txa
asl
tax
jmp (J.EscCodes,x)
*-------------------------------------- *--------------------------------------
COUT.EscModeCSI inc EscSeq COUT.EscModeCSI inc EscSeq
ldx EscSeq ldx EscSeq
@ -442,20 +441,20 @@ COUT.ExecEscSeq stz EscSeqParamCnt
stz bEscModeCSI stz bEscModeCSI
stz bEscMode stz bEscMode
ldy #0 ldx #EscSeqCmds.Cnt-1
ldx #0
.4 iny .4 cmp EscSeqCmds,x
cmp EscSeqCmds,y
beq .5 beq .5
inx dex
inx
cpy EscSeqCmds
bne .4 bne .4
clc clc
rts rts
.5 jmp (J.EscSequences,x) .5 txa
asl
tax
jmp (J.EscSequences,x)
*-------------------------------------- *--------------------------------------
COUT.IAC inc IACBuf COUT.IAC inc IACBuf
ldx IACBuf ldx IACBuf
@ -591,10 +590,12 @@ COUT.IAC.DONT
rts rts
*-------------------------------------- *--------------------------------------
RESET jsr CLRSCR RESET jsr CLRSCR
lda #0
sta SCROLLTOP
lda #23 lda #23
sta SCROLLBOT sta SCROLLBOT
lda #0
sta SCROLLTOP
dec
sta LWFLG
*-------------------------------------- *--------------------------------------
RESETATTR lda #$80 RESETATTR lda #$80
sta INVFLG sta INVFLG
@ -643,8 +644,6 @@ ClrScr stz CH
lda #" " lda #" "
* php
* sei
sta SETWRITEAUX sta SETWRITEAUX
ldy #39 ldy #39
@ -653,7 +652,6 @@ ClrScr stz CH
bpl .2 bpl .2
sta CLRWRITEAUX sta CLRWRITEAUX
* plp
ldy #39 ldy #39
.3 sta (ZPBaseL1),y .3 sta (ZPBaseL1),y
@ -672,7 +670,7 @@ CROUT jsr CLREOL
rts rts
*-------------------------------------- *--------------------------------------
LF ldy CV LF ldy CV
cpy #23 cpy SCROLLBOT
beq SCROLL.UP beq SCROLL.UP
inc CV inc CV
clc clc
@ -730,6 +728,24 @@ SCROLL.DN ldx SCROLLBOT
clc clc
rts 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 Esc.DispAttr ldx EscSeqParamCnt
beq .8 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 .HS 05080A0C0D151B
CtrlChars.Cnt .EQ *-CtrlChars CtrlChars.Cnt .EQ *-CtrlChars
*-------------------------------------- *--------------------------------------
EscCodes >PSTR "MDc" EscCodes .AZ "MDc"
EscSeqCmds >PSTR "mnrKH" EscCodes.Cnt .EQ *-EscCodes
EscSeqCmds .AS "hlmnrKH"
EscSeqCmds.Cnt .EQ *-EscSeqCmds
ENQ.String .AZ "XTERM" ENQ.String .AZ "XTERM"
*-------------------------------------- *--------------------------------------
KeyRemapped .HS 05080A0B0D15 L,D,U,CR,R KeyRemapped .HS 05080A0B0D15 L,D,U,CR,R
@ -1078,18 +1096,15 @@ KeyRemappedUP .HS 1B5B4100 esc[A
KeyRemappedCR .HS 0D0A00 crlf KeyRemappedCR .HS 0D0A00 crlf
KeyRemappedRGHT .HS 1B5B4300 esc[C KeyRemappedRGHT .HS 1B5B4300 esc[C
*-------------------------------------- *--------------------------------------
TelnetOpt .DA #IAC,#DO,#TELOPT.ECHO
TelnetOpt.LEN .EQ *-TelnetOpt
*--------------------------------------
TELOPS.STATUS TELOPS.STATUS
*-------------------------------------- *--------------------------------------
WILLDO .DA #TELOPT.BINARY,#TELOPT.SGA WILLDO .DA #TELOPT.BINARY,#TELOPT.SGA
WILLDO.CNT .EQ *-WILLDO WILLDO.CNT .EQ *-WILLDO
WILLDONT .DA #TELOPT.TSPEED,#TELOPT.LINEMODE,#TELOPT.STATUS WILLDONT .DA #TELOPT.TSPEED,#TELOPT.LINEMODE,#TELOPT.STATUS
WILLDONT.CNT .EQ *-WILLDONT 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 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 DOWONT.CNT .EQ *-DOWONT
SB.IS.TTYPE .DA #IAC,#SB,#TELOPT.TTYPE,#SB.IS SB.IS.TTYPE .DA #IAC,#SB,#TELOPT.TTYPE,#SB.IS
.AS 'XTERM' .AS 'XTERM'
@ -1103,6 +1118,7 @@ SB.IS.NAWS.LEN .EQ *-SB.IS.NAWS
*-------------------------------------- *--------------------------------------
CH .BS 1 CH .BS 1
CV .BS 1 CV .BS 1
LWFLG .BS 1
INVFLG .BS 1 INVFLG .BS 1
SCROLLTOP .BS 1 SCROLLTOP .BS 1
SCROLLBOT .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 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 ldy #S.SOCKET.TCP.OPTIONS
lda (ZPPtrSKT),y lda (ZPPtrSKT),y
ora #S.TCP.OPTIONS.FIN+S.TCP.OPTIONS.ACK ora #S.TCP.OPTIONS.FIN+S.TCP.OPTIONS.ACK
sta (ZPPtrSKT),y sta (ZPPtrSKT),y
jsr TCP.OUT SKT.Close, Try to push FIN jmp TCP.OUT Try to push FIN/ACK
clc
rts
*/-------------------------------------- */--------------------------------------
* # SKT.Get * # SKT.Get
* Get Ptr to socket * Get Ptr to socket

View File

@ -255,27 +255,9 @@ TCP.IN.JMP.ESTBLSH
lda (ZPFrameInPtr),y lda (ZPFrameInPtr),y
and #S.TCP.OPTIONS.FIN and #S.TCP.OPTIONS.FIN
beq .8 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 bcs .9
ldy #S.SOCKET.TCP.STATUS ldy #S.SOCKET.TCP.STATUS
@ -317,12 +299,7 @@ TCP.IN.JMP.FINWT2.1
bit #S.TCP.OPTIONS.FIN bit #S.TCP.OPTIONS.FIN
bne .8 bne .8
ldy #S.SOCKET.TCP.OPTIONS jsr TCP.IN.ACKTheFIN
lda (ZPPtrSKT),y
ora #S.TCP.OPTIONS.ACK
sta (ZPPtrSKT),y
jsr TCP.OUT ACK the FIN
bcs .9 bcs .9
ldy #S.SOCKET.TCP.STATUS ldy #S.SOCKET.TCP.STATUS
@ -350,6 +327,28 @@ TCP.IN.JMP.TIMEWT
TCP.IN.JMP.CLOSED TCP.IN.JMP.CLOSED
jmp SKT.Destroy 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 TCP.IN.SetDataInPtrAndLen
ldy #S.IP.TOTAL.LENGTH+1 ldy #S.IP.TOTAL.LENGTH+1
lda (ZPFrameInPtr),y lda (ZPFrameInPtr),y
@ -465,8 +464,6 @@ TCP.OUT.SendOptA.1
bit #S.TCP.OPTIONS.ACK bit #S.TCP.OPTIONS.ACK
beq .10 beq .10
* pha
ldx #3 ldx #3
ldy #S.TCP.ACKNUM+3 ldy #S.TCP.ACKNUM+3
@ -476,20 +473,10 @@ TCP.OUT.SendOptA.1
dex dex
bpl .1 bpl .1
* pla .10 ldx #3
.10
* clc
* bit #S.TCP.OPTIONS.FIN
* beq .11
* sec
.11 ldx #3
ldy #S.TCP.SEQNUM+3 ldy #S.TCP.SEQNUM+3
.2 lda SKT.TCBCache+S.TCB.OUTNEXTSEQ,x .2 lda SKT.TCBCache+S.TCB.OUTNEXTSEQ,x
* adc #0
* sta SKT.TCBCache+S.TCB.OUTNEXTSEQ,x
sta (ZPFrameOutPtr),y sta (ZPFrameOutPtr),y
dey dey
dex dex
@ -506,19 +493,10 @@ TCP.OUT.SendOptA.1
bcs .9 bcs .9
ldy #S.SOCKET.TCP.OPTIONS 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 lda #0
sta (ZPPtrSKT),y sta (ZPPtrSKT),y
clc * clc
.9 rts .9 rts
*-------------------------------------- *--------------------------------------
TCP.NewFrame ldx #S.IP.PROTOCOL.TCP TCP.NewFrame ldx #S.IP.PROTOCOL.TCP

View File

@ -34,6 +34,8 @@ CS.START cld
L.MSG.USAGE .DA MSG.USAGE L.MSG.USAGE .DA MSG.USAGE
L.MSG.GREETINGS .DA MSG.GREETINGS L.MSG.GREETINGS .DA MSG.GREETINGS
L.TELNETOPTS .DA TELNETOPTS L.TELNETOPTS .DA TELNETOPTS
L.TELNETOPT.TTYPE .DA TELNETOPT.TTYPE
L.TELNETOPT.LINEMODE .DA TELNETOPT.LINEMODE
L.ENV.TERM .DA ENV.TERM L.ENV.TERM .DA ENV.TERM
L.MSG.DEBUG .DA MSG.DEBUG L.MSG.DEBUG .DA MSG.DEBUG
.DA 0 End Of Reloc Table .DA 0 End Of Reloc Table
@ -111,8 +113,6 @@ CS.RUN.LOOP
.8 lda #2 .8 lda #2
>SYSCALL GetArg >SYSCALL GetArg
>SYSCALL ExecPS >SYSCALL ExecPS
rts
CS.RUN.8 clc CS.RUN.8 clc
rts rts
@ -125,7 +125,7 @@ CS.RUN.IACMODE jsr PrintHEX
jsr PrintHEX jsr PrintHEX
>STA.G IAC.VERB >STA.G IAC.CMD
.1 >SLEEP Wait for IAC OPT .1 >SLEEP Wait for IAC OPT
>SYSCALL GetChar >SYSCALL GetChar
@ -133,15 +133,34 @@ CS.RUN.IACMODE jsr PrintHEX
jsr PrintHEX jsr PrintHEX
>STA.G IAC.OPT >STA.G IAC.SUBCMD
tax
>LDA.G IAC.VERB >LDA.G IAC.CMD
cmp #SB cmp #SB
beq CS.RUN.IACSB 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 CS.RUN.IACSB
.1 >SLEEP .1 >SLEEP
@ -186,7 +205,7 @@ CS.RUN.IACSB
cmp #SE cmp #SE
bne .8 bne .8
>LDA.G IAC.OPT >LDA.G IAC.SUBCMD
cmp #TELOPT.TTYPE cmp #TELOPT.TTYPE
bne .8 bne .8
@ -245,23 +264,25 @@ MSG.DEBUG .AZ "{%h}"
*-------------------------------------- *--------------------------------------
TELNETOPTS .DA #IAC,#WILL,#TELOPT.BINARY TELNETOPTS .DA #IAC,#WILL,#TELOPT.BINARY
.DA #IAC,#WILL,#TELOPT.ECHO .DA #IAC,#WILL,#TELOPT.ECHO
* .DA #IAC,#DONT,#TELOPT.ECHO
.DA #IAC,#WILL,#TELOPT.SGA .DA #IAC,#WILL,#TELOPT.SGA
.DA #IAC,#DO,#TELOPT.SGA .DA #IAC,#DO,#TELOPT.SGA
.DA #IAC,#DO,#TELOPT.NAWS .DA #IAC,#DO,#TELOPT.NAWS
.DA #IAC,#DO,#TELOPT.TTYPE .DA #IAC,#DO,#TELOPT.TTYPE
.DA #IAC,#DONT,#TELOPT.LINEMODE .DA #IAC,#DO,#TELOPT.LINEMODE
* .DA #IAC,#SB,#TELOPT.LINEMODE,#SB.SEND,#0,#IAC,#SE
* .DA #IAC,#SB,#TELOPT.TTYPE,#SB.SEND,#IAC,#SE
TELNETOPTS.LEN .EQ *-TELNETOPTS 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" ENV.TERM .AZ "TERM"
*-------------------------------------- *--------------------------------------
.DUMMY .DUMMY
.OR 0 .OR 0
DS.START DS.START
IAC.SB.DATA .BS 64 IAC.SB.DATA .BS 64
IAC.VERB .BS 1 IAC.CMD .BS 1
IAC.OPT .BS 1 IAC.SUBCMD .BS 1
IAC.SB .BS 1 IAC.SB .BS 1
hDEV .BS 1 hDEV .BS 1
TimeOut .BS 1 TimeOut .BS 1

View File

@ -3,24 +3,25 @@ PREFIX /A2OSX.BUILD
AUTO 4,1 AUTO 4,1
.LIST OFF .LIST OFF
*-------------------------------------- *--------------------------------------
CL.PrintPrompt >PUSHBI 0 CL.PrintPrompt >LDYA L.ENV.PS1
>LDYA L.ENV.PS1
>SYSCALL GetEnv >SYSCALL GetEnv
>SYSCALL ExpandStr bcs .1
phx
>SYSCALL printf
>SYSCALL ExpandStr
bcs .9
phx
pha
>PUSHBI 0 >PUSHBI 0
pla
>SYSCALL printf
pla
>SYSCALL FreeMem
.1 >PUSHBI 0
>LDYA L.MSG.PROMPT >LDYA L.MSG.PROMPT
>SYSCALL printf >SYSCALL printf
plx .9 rts
php
pha
txa
>SYSCALL FreeMem
pla
plp
rts
*-------------------------------------- *--------------------------------------
CL.CHARIN tax CL.CHARIN tax

View File

@ -358,7 +358,7 @@ INTCMDS .AZ "CD"
.HS 00 .HS 00
*-------------------------------------- *--------------------------------------
MSG.GREETINGS .AZ "\r\nA2osX-Shell %d.%d\r\n\r\n" 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.ECHO .AS ">%s"
MSG.ECHOCRLF .AZ "\r\n" MSG.ECHOCRLF .AZ "\r\n"
MSG.ERROR .AZ "[$%h]:%S.\r\n" MSG.ERROR .AZ "[$%h]:%S.\r\n"