Kernel version 0.9 : EDIT improved ANSI/VT100 support, bugfix

This commit is contained in:
Rémy GIBERT 2017-03-06 17:58:05 +01:00
parent 528af99550
commit 01eebfd159
6 changed files with 112 additions and 62 deletions

Binary file not shown.

Binary file not shown.

View File

@ -39,14 +39,16 @@ Ctrl.A ldy #PromptMode
lda #PromptModeHelp lda #PromptModeHelp
sta (pData),y sta (pData),y
ldx #0
ldy #0
jsr GotoXY
>LDYA L.MSG.HELP >LDYA L.MSG.HELP
>STYA ZPPTR1 >STYA ZPPTR1
.1 lda (ZPPTR1) stz .1+1
.1 ldy #0
ldx #0
jsr GotoXY
lda (ZPPTR1)
beq .8 beq .8
>LDYA ZPPTR1 >LDYA ZPPTR1
@ -55,13 +57,11 @@ Ctrl.A ldy #PromptMode
>LDYA L.SEQ.CEOL >LDYA L.SEQ.CEOL
>SYSCALL CPrintFYA >SYSCALL CPrintFYA
bcs .9 bcs .9
lda #13
>SYSCALL PutCA
lda #10
>SYSCALL PutCA
sec inc .1+1
lda (ZPPTR1) lda (ZPPTR1)
sec
adc ZPPTR1 adc ZPPTR1
sta ZPPTR1 sta ZPPTR1
bcc .1 bcc .1
@ -520,17 +520,10 @@ Ctrl.Y ldy #FileY+1
rts rts
.9 jmp Ctrl.Q .9 jmp Ctrl.Q
*-------------------------------------- *--------------------------------------
Ctrl.Z Ctrl.Z clc
clc
rts rts
*-------------------------------------- *--------------------------------------
Ctrl.ESC ldy #bEscMode Ctrl.ESC clc
lda #$ff
sta (pData),y
inc
ldy #EscBuffer
sta (pData),y
clc
rts rts
*-------------------------------------- *--------------------------------------
Prompt.Editor cmp #127 Prompt.Editor cmp #127

View File

@ -10,6 +10,7 @@ SCRN.Init ldy #ScreenH
dec dec
>PUSHA >PUSHA
>LDYA L.SEQ.INIT >LDYA L.SEQ.INIT
>SYSCALL CPrintFYA >SYSCALL CPrintFYA
bcs .9 bcs .9
lda #12 lda #12
@ -42,6 +43,30 @@ SCRN.Init ldy #ScreenH
.9 rts .9 rts
*-------------------------------------- *--------------------------------------
SCRN.UpdateTopBar SCRN.UpdateTopBar
lda #1
>PUSHA
>PUSHA
>LDYA L.MSG.GOTOXY
>SYSCALL CPrintFYA
bcs .9
>LDYA L.SEQ.INV
>SYSCALL CPrintFYA
bcs .9
ldy #ScreenW
lda (pData),y
.3 pha
lda #' '
>SYSCALL PutCA
pla
bcs .9
dec
bne .3
ldy #hFileName ldy #hFileName
lda (pData),y lda (pData),y
beq .1 beq .1
@ -54,10 +79,7 @@ SCRN.UpdateTopBar
>LDYA L.MSG.TOPBAR >LDYA L.MSG.TOPBAR
>SYSCALL CPrintFYA >SYSCALL CPrintFYA
bcs .9
clc
.9 rts .9 rts
*-------------------------------------- *--------------------------------------
SCRN.UpdateMain ldy #ScreenY SCRN.UpdateMain ldy #ScreenY
@ -411,11 +433,19 @@ SCRN.UpdateViewPort
rts rts
.9 jmp Ctrl.Q .9 jmp Ctrl.Q
*-------------------------------------- *--------------------------------------
SCRN.scrollUp lda #$1B SCRN.scrollUp ldy #CurX
>SYSCALL PutCA lda (pData),y
bcs .9 inc
lda #'M' >PUSHA
>SYSCALL PutCA
ldy #CurY
lda (pData),y
inc
inc
>PUSHA
>LDYA L.SEQ.SCROLLUP
>SYSCALL CPrintFYA
bcs .9 bcs .9
ldy #ScreenY+1 ldy #ScreenY+1
@ -438,13 +468,21 @@ SCRN.scrollUp lda #$1B
rts rts
.9 jmp Ctrl.Q .9 jmp Ctrl.Q
*-------------------------------------- *--------------------------------------
SCRN.scrollDn lda #$1B SCRN.scrollDn ldy #CurX
>SYSCALL PutCA lda (pData),y
bcs .9 inc
lda #'D' >PUSHA
>SYSCALL PutCA
bcs .9
ldy #CurY
lda (pData),y
inc
inc
>PUSHA
>LDYA L.SEQ.SCROLLDN
>SYSCALL CPrintFYA
bcs .9
ldy #ScreenY+1 ldy #ScreenY+1
lda (pData),y lda (pData),y
tax tax

View File

@ -44,6 +44,8 @@ CS.START cld
L.SEQ.DETECT .DA SEQ.DETECT L.SEQ.DETECT .DA SEQ.DETECT
L.SEQ.INIT .DA SEQ.INIT L.SEQ.INIT .DA SEQ.INIT
L.SEQ.RESET .DA SEQ.RESET L.SEQ.RESET .DA SEQ.RESET
L.SEQ.SCROLLUP .DA SEQ.SCROLLUP
L.SEQ.SCROLLDN .DA SEQ.SCROLLDN
L.SEQ.INV .DA SEQ.INV L.SEQ.INV .DA SEQ.INV
L.SEQ.NORM .DA SEQ.NORM L.SEQ.NORM .DA SEQ.NORM
L.SEQ.CEOL .DA SEQ.CEOL L.SEQ.CEOL .DA SEQ.CEOL
@ -131,7 +133,7 @@ CS.INIT lda #$ff
.9 rts .9 rts
*-------------------------------------- *--------------------------------------
CS.RUN >LDYA L.SEQ.DETECT CS.RUN >LDYA L.SEQ.DETECT
>SYSCALL CPrintFYA Send Query for term W & H >SYSCALL CPrintFYA Send Query for term W & H
bcs .9 bcs .9
.1 >SYSCALL Sleep .1 >SYSCALL Sleep
@ -188,9 +190,6 @@ CS.QUIT ldy #hBuffer
.8 >LDYA L.SEQ.RESET .8 >LDYA L.SEQ.RESET
>SYSCALL CPrintFYA >SYSCALL CPrintFYA
bcs .9
lda #12
>SYSCALL PutCA
.9 rts .9 rts
*-------------------------------------- *--------------------------------------
CharIn tax CharIn tax
@ -199,7 +198,7 @@ CharIn tax
lda (pData),y lda (pData),y
asl asl
txa txa
bcc .1 bcc .1 Not in ESC mode
cmp #'[' cmp #'['
beq .8 beq .8
@ -221,15 +220,25 @@ CharIn tax
jsr CharIn.Esc jsr CharIn.Esc
bcs .8 Not translated, exit bcs .8 Not translated, exit
.1 pha .1 cmp #27 Esc ?
bne .2
ldy #bEscMode
lda #$ff
sta (pData),y
inc
ldy #EscBuffer
sta (pData),y
.8 clc
rts
.2 pha
ldy #PromptMode ldy #PromptMode
lda (pData),y lda (pData),y
tax tax
pla pla
jmp (J.PROMPT,x) jmp (J.PROMPT,x)
.8 clc
rts
*-------------------------------------- *--------------------------------------
CharIn.Esc ldy #bEscMode CharIn.Esc ldy #bEscMode
lda #0 lda #0
@ -246,6 +255,7 @@ CharIn.Esc ldy #bEscMode
ldx EscChars ldx EscChars
.1 cmp EscChars,x .1 cmp EscChars,x
beq .2 beq .2
dex dex
bne .1 bne .1
@ -363,14 +373,22 @@ LoadFile >PUSHWI 0 Aux type
>SYSCALL GetMemPtrA >SYSCALL GetMemPtrA
>STYA ZPPTR1 >STYA ZPPTR1
>LDYA TmpLen lda TmpLen
>STYA TmpCount eor #$ff
tax
lda TmpLen+1
eor #$ff
pha
ldy #0 ldy #0
.5 jsr DecTmpCount .5 inx
beq .6 bne .6
lda (ZPPTR1),y pla
inc
beq .7
pha
.6 lda (ZPPTR1),y
sta (ZPPTR2),y sta (ZPPTR2),y
iny iny
bne .5 bne .5
@ -378,7 +396,7 @@ LoadFile >PUSHWI 0 Aux type
inc ZPPTR2+1 inc ZPPTR2+1
bra .5 bra .5
.6 ldy #FileLen .7 ldy #FileLen
lda TmpLen lda TmpLen
sta (pData),y sta (pData),y
iny iny
@ -434,12 +452,14 @@ DecTmpCount lda TmpCount
*-------------------------------------- *--------------------------------------
CS.END CS.END
SEQ.DETECT >CSTR "Querying terminal capabilities...\e[999;999H\e[6n" SEQ.DETECT >CSTR "Querying terminal capabilities...\e[999;999H\e[6n"
SEQ.INIT >CSTR "\ec\e[2;%dr" SEQ.INIT >CSTR "\ec\e[2;%dr" \e[?6h
SEQ.RESET >CSTR "\ec" SEQ.RESET >CSTR "\ec"
SEQ.SCROLLUP >CSTR "\e[%d;%dH\eD"
SEQ.SCROLLDN >CSTR "\e[%d;%dH\eM"
SEQ.INV >CSTR "\e[7m" SEQ.INV >CSTR "\e[7m"
SEQ.NORM >CSTR "\e[0m" SEQ.NORM >CSTR "\e[0m"
SEQ.CEOL >CSTR "\e[K" SEQ.CEOL >CSTR "\e[K"
MSG.TOPBAR >CSTR "\e[1;1H\e[7mA2osX Edit:%S\e[K\e[0m" MSG.TOPBAR >CSTR "\e[1;1HA2osX Edit:%S"
MSG.STATUSBAR >CSTR "\e[%d;1H\e[7mPress Ctrl-A For Help Length:%D Col:%d Line:%D\e[K\e[0m" MSG.STATUSBAR >CSTR "\e[%d;1H\e[7mPress Ctrl-A For Help Length:%D Col:%d Line:%D\e[K\e[0m"
MSG.STATUSBAR.H >CSTR "\e[%d;1H\e[7mPress any key to exit this screen:\e[K\e[0m" MSG.STATUSBAR.H >CSTR "\e[%d;1H\e[7mPress any key to exit this screen:\e[K\e[0m"
MSG.STATUSBAR.F >CSTR "\e[%d;1H\e[7mFind:%S\e[K\e[0m" MSG.STATUSBAR.F >CSTR "\e[%d;1H\e[7mFind:%S\e[K\e[0m"

View File

@ -72,12 +72,12 @@ L.STAT .DA STAT
J.CtrlChars .DA ENQ 5 J.CtrlChars .DA ENQ 5
.DA BS 8 .DA BS 8
.DA LF 10 .DA LF 10
.DA HOME 12 .DA CLRSCR 12
.DA CROUT 13 .DA CROUT 13
.DA ESC 27 .DA ESC 27
*-------------------------------------- *--------------------------------------
J.EscCodes .DA Scroll.Dn D J.EscCodes .DA Scroll.Dn M
.DA Scroll.Up M .DA Scroll.Up D
.DA RESET c .DA RESET c
*-------------------------------------- *--------------------------------------
J.EscSequences .DA Esc.DispAttr m J.EscSequences .DA Esc.DispAttr m
@ -106,7 +106,6 @@ OPEN stz CURON
sta A2osX.SCRNDEVS DEV.ID in A sta A2osX.SCRNDEVS DEV.ID in A
jsr RESET jsr RESET
jsr HOME
ldy #0 ldy #0
@ -321,7 +320,8 @@ COUT.ExecEscSeq stz EscSeqParamCnt
*-------------------------------------- *--------------------------------------
* PRIVATE * PRIVATE
*-------------------------------------- *--------------------------------------
RESET lda #0 RESET jsr CLRSCR
lda #0
sta SCROLLTOP sta SCROLLTOP
lda #23 lda #23
sta SCROLLBOT sta SCROLLBOT
@ -367,7 +367,7 @@ BS ldx CH
ldy CV ldy CV
jmp SetCharAtXY jmp SetCharAtXY
*-------------------------------------- *--------------------------------------
HOME stz CH ClrScr stz CH
stz CV stz CV
ldx #23 ldx #23
@ -377,8 +377,7 @@ HOME stz CH
lda BASEH,x lda BASEH,x
sta ZPBaseL1+1 sta ZPBaseL1+1
lda #' ' lda #" "
ora INVFLG
php php
sei sei
@ -794,7 +793,7 @@ Char.Out.Get sec
.9 rts .9 rts
*-------------------------------------- *--------------------------------------
DRV.CS.END DRV.CS.END
EscCodes >PSTR "DMc" EscCodes >PSTR "MDc"
EscSeqCmds >PSTR "mnrKH" EscSeqCmds >PSTR "mnrKH"
BASEL .HS 00.80.00.80.00.80.00.80.28.A8.28.A8.28.A8.28.A8.50.D0.50.D0.50.D0.50.D0 BASEL .HS 00.80.00.80.00.80.00.80.28.A8.28.A8.28.A8.28.A8.50.D0.50.D0.50.D0.50.D0
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.07 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.07
@ -820,7 +819,7 @@ 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 .DA #IAC,#DO,#TELOPT.ECHO
.DA #13,#10,#0 .DA #0
*-------------------------------------- *--------------------------------------
CtrlChars.Cnt .EQ 6 CtrlChars.Cnt .EQ 6
CtrlChars .HS 05080A0C0D1B CtrlChars .HS 05080A0C0D1B