A2osX/SYS/KERNEL.S.TERM.txt

1224 lines
21 KiB
Plaintext
Raw Normal View History

2018-12-11 16:41:25 +00:00
NEW
PREFIX
AUTO 4,1
*--------------------------------------
CURSOR.BLINK.SPEED .EQ 2
ESCSEQ.MAXLEN .EQ 16
OUTBUF.MAXLEN .EQ 32
IACBUF.MAXLEN .EQ 32
*--------------------------------------
ZPIOCTL .EQ ZPDRV
ZPTTYPtr .EQ ZPDRV+2
ZPTmpWord .EQ ZPDRV+4
ZPTmpBool .EQ ZPDRV+6
ZPBufPtr .EQ ZPDRV+8
ZPCount .EQ ZPDRV+10
2018-12-12 07:05:29 +00:00
ZPBufBaseL1 .EQ ZPDRV+12
ZPBufBaseL2 .EQ ZPDRV+14
ZPScrBaseL1 .EQ ZPDRV+16
ZPScrBaseL2 .EQ ZPDRV+18
2018-12-11 16:41:25 +00:00
*--------------------------------------
DRV.TERM cld
>STYA pIOCTL
ldy #S.FD.DEV.BUFPTR
lda (pFD),y
sta ZPTTYPtr
iny
lda (pFD),y
sta ZPTTYPtr+1
lda (ZPTTYPtr) S.TTY.DEVID
cmp A2osX.ASCREEN
beq .1 CS
clc
.1 ror bActive
jmp (.8,x)
.8 .DA DRV.TERM.STATUS
.DA A2osX.BADCALL
.DA A2osX.BADCALL
.DA A2osX.BADCALL
.DA DRV.TERM.CONTROL
.DA A2osX.BADCALL
.DA DRV.TERM.OPEN
.DA DRV.TERM.CLOSE
.DA DRV.TERM.READ
.DA DRV.TERM.WRITE
*--------------------------------------
DRV.TERM.STATUS ldy #S.IOCTL.STATCODE
lda (ZPIOCTL),y
beq .1
cmp #S.IOCTL.STATCODE.GETDIB
bne .9
ldx #S.DIB-1
.HS 2C bit abs
.1 ldx #3
ldy #S.IOCTL.BUFPTR
lda (ZPIOCTL),y
sta .3+1
iny
lda (ZPIOCTL),y
sta .3+2
.2 lda DRV.TERM.DIB,x
.3 sta $ffff,x SELF MODIFIED
dex
bpl .2
clc
rts
.9 lda #MLI.E.BADCTL
sec
rts
*--------------------------------------
DRV.TERM.OPEN ldx #0
.1 ldy A2osX.SCRNDEVS,x
beq .2
inx
cpx #K.SCR.MAX
bne .1
lda #E.OOH
sec
rts
.9 lda #MLI.E.OPEN
sec
rts
.2 sta A2osX.SCRNDEVS,x DEV.ID in A
sta (ZPTTYPtr)
ldy #S.TTY.STATUS
lda (ZPTTYPtr),y
bit #S.DIB.S.OPENED
bne .9
ora #S.DIB.S.OPENED
ora DRV.TERM.DIB+S.DIB.S
sta (ZPTTYPtr),y
stz OutPtr
stz OutCnt
jsr RESET
*--------------------------------------
DRV.TERM.CONTROL
sta SETTEXT
sta SETALTCHAR
sta SET80DISP
sta CLR80STORE
sta CLRPAGE2
lda (ZPTTYPtr)
sta A2osX.ASCREEN
clc
rts
*--------------------------------------
DRV.TERM.CLOSE ldy #S.TTY.STATUS
lda (ZPTTYPtr),y
bit #S.DIB.S.OPENED
beq .9
lda DRV.TERM.DIB+S.DIB.S
sta (ZPTTYPtr),y
ldx #0
.1 lda A2osX.SCRNDEVS,x
cmp (ZPTTYPtr)
bne .2
stz A2osX.SCRNDEVS,x
.2 inx
cpx #K.SCR.MAX
bne .1
clc
rts
.9 lda MLI.E.IO
sec
rts
*--------------------------------------
DRV.TERM.READ lda A2osX.ASCREEN
cmp (ZPTTYPtr) is screen active?
bne .6 no....go check flush...
lda A2osX.TIMER16
and #CURSOR.BLINK.SPEED
eor CURON
beq .1
jsr CURBLNK
.1 lda OPENAPPLE
bmi .6 Open apple key, not for us...
lda KBD
bpl .6
sta KBDSTROBE
and #$7F
ldx KeyRemapped
.2 cmp KeyRemapped,x
beq .3
dex
bne .2
jsr Char.Out.Put no remap....send char....
bra .7 and flush
.3 lda KeyRemappedIdx,x
tay
.4 lda KeyRemappedTbl,y
beq .7 end of remap....flush
jsr Char.Out.Put
iny
bra .4
.6 lda OutCnt
beq .9 no char in output buffer...
.7 stz .8+1
jsr GetPtrsAndCnt
.70 inc ZPCount
bne .71
inc ZPCount+1
beq .8
.71 jsr Char.Out.Get
bcs .8
ldy .8+1
sta (ZPBufPtr),y
iny
sty .8+1
bra .70
.8 lda #$ff SELF MODIFIED
ldy #S.IOCTL.BYTECNT
sta (ZPIOCTL),y
iny
lda #0
sta (ZPIOCTL),y
clc
rts
.9 lda #0 Error = char
sec
rts
*--------------------------------------
DRV.TERM.WRITE jsr GetPtrsAndCnt
.2 inc ZPCount
bne .3
inc ZPCount+1
beq .8
.3 lda (ZPBufPtr)
inc ZPBufPtr
bne .4
inc ZPBufPtr+1
.4 jsr DRV.TERM.WRITE.COUT
bra .2
.8 clc
rts
*--------------------------------------
DRV.TERM.WRITE.COUT
bit bEscMode
bmi COUT.EscMode
bit bIACMode
bpl .10
jmp COUT.IAC
.10 cmp #IAC
bne .1
sta bIACMode
stz IACBuf
clc
rts
.1 pha
jsr CUROFF
pla
cmp #C.DEL
beq DEL
cmp #C.SPACE
bcc COUT.Ctrl
ora INVFLG
jsr SetCharAtCurPos
*--------------------------------------
FS ldx CH
cpx #79
bne .1
bit LWFLG
bpl FS.8
stz CH
jmp LF
.1 inc CH
FS.8 clc
rts
*--------------------------------------
DEL ldx CH
beq .1
dec CH
bra .3
.1 ldy CV
beq FS.8
lda #79
sta CH
dec CV
.3 lda #$20
ora INVFLG
jmp SetCharAtCurPos
*--------------------------------------
COUT.Ctrl ldx #CtrlChars.Cnt-1
.1 cmp CtrlChars,x
beq .2
dex
bpl .1
clc
rts
.2 txa
asl
tax
jmp (J.CtrlChars,x)
*--------------------------------------
J.CtrlChars .DA ENQ 5
.DA BS 8
.DA LF 10
.DA CLRSCR 12
.DA CROUT 13
.DA FS 21
.DA ESC 27
*--------------------------------------
COUT.EscMode bit bEscModeCSI
bmi COUT.EscModeCSI
cmp #'['
bne .1
dec bEscModeCSI
stz EscSeq
clc
rts
.1 stz bEscMode
ldx #EscCodes.Cnt-1
.2 cmp EscCodes,x
beq .3
dex
bpl .2
clc
rts
.3 txa
asl
tax
jmp (J.EscCodes,x)
*--------------------------------------
J.EscCodes .DA Scroll.Dn M
.DA Scroll.Up D
.DA RESET c
*--------------------------------------
COUT.EscModeCSI inc EscSeq
ldx EscSeq
sta EscSeq,x
cmp #64 End of Seq ?
bcs COUT.ExecEscSeq
cpx #ESCSEQ.MAXLEN too long?
bne .1
stz bEscModeCSI
stz bEscMode
.1 clc
rts
COUT.ExecEscSeq stz EscSeqParamCnt
stz bEscSeqInNum
ldx #0 EscSeq Ptr
.10 stz ZPTmpWord
stz ZPTmpWord+1
.1 inx
lda EscSeq,x
cmp #'0'
bcc .2
cmp #'9'+1
bcs .2
dec bEscSeqInNum
and #$0F
pha
lda ZPTmpWord
ldy ZPTmpWord+1
asl ZPTmpWord param=param*10
rol ZPTmpWord+1
asl ZPTmpWord
rol ZPTmpWord+1
clc
adc ZPTmpWord
sta ZPTmpWord
tya
adc ZPTmpWord+1
sta ZPTmpWord+1
asl ZPTmpWord
rol ZPTmpWord+1
pla
clc
adc ZPTmpWord
sta ZPTmpWord
bcc .1
inc ZPTmpWord+1
bra .1
.2 bit bEscSeqInNum
bpl .3
stz bEscSeqInNum
lda #255
ldy ZPTmpWord+1
bne .21
lda ZPTmpWord
.21 ldy EscSeqParamCnt
sta EscSeqParam,y
inc EscSeqParamCnt
.3 lda EscSeq,x
cmp #';'
beq .10
stz bEscModeCSI
stz bEscMode
ldx #EscSeqCmds.Cnt-1
.4 cmp EscSeqCmds,x
beq .5
dex
bne .4
clc
rts
.5 txa
asl
tax
jmp (J.EscSequences,x)
*--------------------------------------
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
.DA Esc.Home H
*--------------------------------------
COUT.IAC inc IACBuf
ldx IACBuf
cpx #IACBUF.MAXLEN
beq *
sta IACBuf,x
cpx #1 CMD ?
beq .8 yes, wait for additional bytes
ldy IACBuf+1 get back CMD
cpy #SB
bne .1 not a SB/SE....stop with CMD/SUBCMD
cmp #SE
bne .8 wait for ending SE....keep bIACMode
.1 cpy #IAC
beq .9
tya
sec
sbc #SB
bcc .9
asl
tax
lda IACBuf+2 Get SUBCMD in A
cpx #10
bcs *
jmp (J.COUT.IAC.CMDS,x)
.9 stz bIACMode
.8 clc
rts
*--------------------------------------
J.COUT.IAC.CMDS .DA COUT.IAC.SB
.DA COUT.IAC.WILL
.DA COUT.IAC.WONT
.DA COUT.IAC.DO
.DA COUT.IAC.DONT
.DA 0 end of relocation
*--------------------------------------
COUT.IAC.SB cmp #TELOPT.TTYPE
bne .9
lda IACBuf+3
cmp #SB.SEND
bne .9
ldy #0
.1 lda SB.IS.TTYPE,y
jsr Char.Out.Put
iny
cpy #SB.IS.TTYPE.LEN
bne .1
.9 stz bIACMode
clc
rts
*--------------------------------------
COUT.IAC.WILL ldx #WILLDO.CNT-1
.1 cmp WILLDO,x
beq .7
dex
bpl .1
ldx #WILLDONT.CNT-1
.2 cmp WILLDONT,x
beq .8
dex
bpl .2
bra .9
.7 ldx #DO
.HS 2C BIT ABS
.8 ldx #DONT
bra COUT.IAC.SendAX
.9 stz bIACMode
clc
rts
*--------------------------------------
COUT.IAC.WONT
.9 stz bIACMode
clc
rts
*--------------------------------------
COUT.IAC.DO ldx #DOWILL.CNT-1
.1 cmp DOWILL,x
beq .7
dex
bpl .1
ldx #DOWONT.CNT-1
.2 cmp DOWONT,x
beq .8
dex
bpl .2
bra COUT.IAC.SendAX.9
.7 ldx #WILL
.HS 2C BIT ABS
.8 ldx #WONT
*--------------------------------------
COUT.IAC.SendAX
pha push CMD
phx
lda #IAC
jsr Char.Out.Put
pla
jsr Char.Out.Put
pla
jsr Char.Out.Put
COUT.IAC.SendAX.9
stz bIACMode
clc
rts
*--------------------------------------
COUT.IAC.DONT
.9 stz bIACMode
clc
rts
*--------------------------------------
RESET stz CURON
stz bEscMode
stz bEscModeCSI
jsr CLRSCR
lda #23
sta SCROLLBOT
lda #0
sta SCROLLTOP
dec
sta LWFLG
*--------------------------------------
RESETATTR lda #$80
sta INVFLG
clc
rts
*--------------------------------------
ESC lda #$80
sta bEscMode
clc
rts
*--------------------------------------
ENQ ldy #0
.1 lda ENQ.String,y
beq .8
jsr Char.Out.Put
iny
bne .1
.8 clc
rts
*--------------------------------------
BS ldx CH
beq .1
dec CH
bra .3
.1 ldy CV
bne .2
clc
rts
.2 lda #79
sta CH
dec CV
.3 clc
rts
*--------------------------------------
ClrScr ldx #23
.1 jsr SETUP.L1X
lda #" "
2018-12-12 07:05:29 +00:00
bit bActive
bpl .4
2018-12-11 16:41:25 +00:00
sta SETWRITEAUX
ldy #39
2018-12-12 07:05:29 +00:00
.2 sta (ZPScrBaseL1),y
2018-12-11 16:41:25 +00:00
dey
bpl .2
sta CLRWRITEAUX
ldy #39
2018-12-12 07:05:29 +00:00
.3 sta (ZPScrBaseL1),y
2018-12-11 16:41:25 +00:00
dey
bpl .3
2018-12-12 07:05:29 +00:00
.4 sta SETWRITEAUX
ldy #79
.5 sta (ZPBufBaseL1),y
dey
bpl .5
2018-12-11 16:41:25 +00:00
dex
bpl .1
stz CV
*--------------------------------------
CROUT stz CH
clc
rts
*--------------------------------------
LF ldy CV
cpy SCROLLBOT
beq SCROLL.UP
inc CV
clc
rts
*--------------------------------------
SCROLL.UP ldx SCROLLTOP
.1 jsr SETUP.L1X
inx
jsr COPY.XtoL1
cpx SCROLLBOT
bne .1
*--------------------------------------
CLREOL ldy CH Start
ldx #80 End
bra CLR
CLRLINE ldy #0 Start
ldx #80 End
bra CLR
CLRSOL ldy #0 Start
ldx CH End
CLR stx .2+1
ldx CV
.1 lda #" "
phy
jsr SetCharAtYX X unmodified
ply
iny
.2 cpy #$ff Self Modified
bne .1
clc
rts
*--------------------------------------
SCROLL.DN ldx SCROLLBOT
.1 jsr SETUP.L1X
dex
jsr COPY.XtoL1
cpx SCROLLTOP
bne .1
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
.1 lda EscSeqParam-1,x
bne .2
jsr RESETATTR
bra .7
.2 cmp #7
bne .8
stz INVFLG
.7 dex
bne .1
.8 clc
rts
*--------------------------------------
Esc.Query ldx EscSeqParamCnt
beq .8
dex
bne .8
lda EscSeqParam
cmp #6
bne .8
lda #C.ESC
jsr Char.Out.Put
lda #'['
jsr Char.Out.Put
lda CV
inc
jsr Decimal.Out
lda #';'
jsr Char.Out.Put
lda CH
inc
jsr Decimal.Out
lda #'R'
jsr Char.Out.Put
.8 clc
rts
*--------------------------------------
Esc.Scroll ldx EscSeqParamCnt
bne .1
lda #0
ldy #23
bra .8
.1 cpx #2
bne .9
lda EscSeqParam
dec
ldy EscSeqParam+1
dey
.8 sta SCROLLTOP
sty SCROLLBOT
.9 clc
rts
*--------------------------------------
Esc.Erase ldx EscSeqParamCnt
bne .1
jmp CLREOL
.1 lda EscSeqParam
cmp #1
bne .2
jmp CLRSOL
.2 cmp #2
bne .9
jmp CLRLINE
.9 clc
rts
*--------------------------------------
Esc.Home ldx EscSeqParamCnt
bne .1
stz CH
stz CV
clc
rts
.1 ldx #1
lda EscSeqParam
beq .2
ldx #24
cmp #24
bcs .2
tax
.2 dex
stx CV
dec EscSeqParamCnt
beq .8
ldx #1
lda EscSeqParam+1
beq .3
ldx #80
cmp #80
bcs .3
tax
.3 dex
stx CH
.8 clc
rts
*--------------------------------------
CUROFF lda CURON
beq CUREXIT.RTS
CURBLNK lda A2osX.ASCREEN
cmp (ZPTTYPtr)
beq CURBLNK1
lda CURON
bne CURBLNK.OFF
rts do not Light if screen is not active
CURBLNK1 lda CURON
bne CURBLNK.OFF
jsr GetCharAtCurPos
sta CURCHAR
and #$80
eor #" "
bra CUREXIT
CURBLNK.OFF lda CURCHAR
CUREXIT jsr SetCharAtCurPos
lda CURON
eor #CURSOR.BLINK.SPEED
sta CURON
CUREXIT.RTS rts
*--------------------------------------
SetCharAtCurPos ldy CH
ldx CV
*--------------------------------------
SetCharAtYX cmp #$40
bcc .10
cmp #$5F
bcs .10
and #$3F
.10 pha
jsr SETUP.L1X
tya
lsr
tay
pla
bcs .1
sta SETWRITEAUX
2018-12-12 07:05:29 +00:00
.1 sta (ZPScrBaseL1),y
2018-12-11 16:41:25 +00:00
sta CLRWRITEAUX
rts
*--------------------------------------
GetCharAtCurPos ldy CH
ldx CV
*--------------------------------------
GetCharAtYX jsr SETUP.L1X
tya
lsr
tay
bcs .1
sta SETREADAUX
2018-12-12 07:05:29 +00:00
.1 lda (ZPScrBaseL1),y
2018-12-11 16:41:25 +00:00
sta CLRREADAUX
rts
*--------------------------------------
SETUP.L1X lda SCR.BASEL,x
2018-12-12 07:05:29 +00:00
clc
adc ZPTTYPtr
sta ZPBufBaseL1
2018-12-11 16:41:25 +00:00
lda SCR.BASEH,x
2018-12-12 07:05:29 +00:00
adc ZPTTYPtr+1
sta ZPBufBaseL1+1
bit bActive
bpl .8
lda SCR.BASEL,x
sta ZPScrBaseL1
lda SCR.BASEH,x
sta ZPScrBaseL1+1
.8 rts
2018-12-11 16:41:25 +00:00
*--------------------------------------
2018-12-12 07:05:29 +00:00
COPY.XtoL1 ldy #79
sta SETWRITEAUX
sta SETREADAUX
.1 lda (ZPBufBaseL2),y
sta (ZPBufBaseL1),y
dey
bpl .1
sta CLRWRITEAUX
sta CLRREADAUX
bit bActive
bpl .8
lda SCR.BASEL,x
sta ZPScrBaseL2
2018-12-11 16:41:25 +00:00
lda SCR.BASEH,x
2018-12-12 07:05:29 +00:00
sta ZPScrBaseL2+1
2018-12-11 16:41:25 +00:00
sta SETWRITEAUX
sta SETREADAUX
2018-12-12 07:05:29 +00:00
jsr .6
2018-12-11 16:41:25 +00:00
sta CLRWRITEAUX
sta CLRREADAUX
2018-12-12 07:05:29 +00:00
.6 ldy #39
2018-12-11 16:41:25 +00:00
2018-12-12 07:05:29 +00:00
.7 lda (ZPScrBaseL2),y
sta (ZPScrBaseL1),y
2018-12-11 16:41:25 +00:00
dey
2018-12-12 07:05:29 +00:00
bpl .7
.8 rts
2018-12-11 16:41:25 +00:00
*--------------------------------------
Decimal.Out stz ZPTmpWord
stz ZPTmpWord+1
ldx #8
sed
tay
.1 tya
asl
tay
lda ZPTmpWord
adc ZPTmpWord
sta ZPTmpWord
lda ZPTmpWord+1
adc ZPTmpWord+1
sta ZPTmpWord+1
dex
bne .1
cld
stz ZPTmpBool No leading 0
lda ZPTmpWord+1
and #$0f
beq .2
dec ZPTmpBool non zero, print everything
jsr Char.Out.Put30
.2 lda ZPTmpWord
lsr
lsr
lsr
lsr
bne .3
bit ZPTmpBool Print this digit ?
bpl .4
.3 jsr Char.Out.Put30
.4 lda ZPTmpWord
and #$0f
*--------------------------------------
Char.Out.Put30 ora #$30
Char.Out.Put pha
lda OutPtr
clc
adc OutCnt
and #OUTBUF.MAXLEN-1
tax
pla
sta OutBuffer,x
inc OutCnt
rts
*--------------------------------------
Char.Out.Get sec
lda OutCnt
beq .9
dec OutCnt
ldx OutPtr
lda OutBuffer,x
pha
txa
inc
and #OUTBUF.MAXLEN-1
sta OutPtr
pla
clc
.9 rts
*--------------------------------------
GetPtrsAndCnt ldy #S.IOCTL.BUFPTR
lda (ZPIOCTL),y
sta ZPBufPtr
iny
lda (ZPIOCTL),y
sta ZPBufPtr+1
* ldy #S.IOCTL.BYTECNT
iny
lda (ZPIOCTL),y
eor #$ff
sta ZPCount
iny
lda (ZPIOCTL),y
eor #$ff
sta ZPCount+1
rts
*--------------------------------------
DRV.CS.END
*--------------------------------------
SCR.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
SCR.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
*--------------------------------------
BUF.BASEL .DA #S.TTY.SCRBUF
.DA #S.TTY.SCRBUF+80
.DA #S.TTY.SCRBUF+160
.DA #S.TTY.SCRBUF+240
.DA #S.TTY.SCRBUF+320
.DA #S.TTY.SCRBUF+400
.DA #S.TTY.SCRBUF+480
.DA #S.TTY.SCRBUF+560
.DA #S.TTY.SCRBUF+640
.DA #S.TTY.SCRBUF+720
.DA #S.TTY.SCRBUF+800
.DA #S.TTY.SCRBUF+880
.DA #S.TTY.SCRBUF+960
.DA #S.TTY.SCRBUF+1040
.DA #S.TTY.SCRBUF+1120
.DA #S.TTY.SCRBUF+1200
.DA #S.TTY.SCRBUF+1280
.DA #S.TTY.SCRBUF+1360
.DA #S.TTY.SCRBUF+1440
.DA #S.TTY.SCRBUF+1520
.DA #S.TTY.SCRBUF+1600
.DA #S.TTY.SCRBUF+1680
.DA #S.TTY.SCRBUF+1760
.DA #S.TTY.SCRBUF+1840
BUF.BASEH .DA /S.TTY.SCRBUF
.DA /S.TTY.SCRBUF+80
.DA /S.TTY.SCRBUF+160
.DA /S.TTY.SCRBUF+240
.DA /S.TTY.SCRBUF+320
.DA /S.TTY.SCRBUF+400
.DA /S.TTY.SCRBUF+480
.DA /S.TTY.SCRBUF+560
.DA /S.TTY.SCRBUF+640
.DA /S.TTY.SCRBUF+720
.DA /S.TTY.SCRBUF+800
.DA /S.TTY.SCRBUF+880
.DA /S.TTY.SCRBUF+960
.DA /S.TTY.SCRBUF+1040
.DA /S.TTY.SCRBUF+1120
.DA /S.TTY.SCRBUF+1200
.DA /S.TTY.SCRBUF+1280
.DA /S.TTY.SCRBUF+1360
.DA /S.TTY.SCRBUF+1440
.DA /S.TTY.SCRBUF+1520
.DA /S.TTY.SCRBUF+1600
.DA /S.TTY.SCRBUF+1680
.DA /S.TTY.SCRBUF+1760
.DA /S.TTY.SCRBUF+1840
*--------------------------------------
CtrlChars .HS 05080A0C0D151B
CtrlChars.Cnt .EQ *-CtrlChars
*--------------------------------------
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
KeyRemappedIdx .HS 050004080C0F
KeyRemappedTbl .EQ *
KeyRemappedLEFT .HS 1B5B4400 esc[D
KeyRemappedDOWN .HS 1B5B4200 esc[B
KeyRemappedUP .HS 1B5B4100 esc[A
KeyRemappedCR .HS 0D0A00 crlf
KeyRemappedRGHT .HS 1B5B4300 esc[C
*--------------------------------------
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.TTYPE,#TELOPT.NAWS
DOWILL.CNT .EQ *-DOWILL
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'
.DA #IAC,#SE
SB.IS.TTYPE.LEN .EQ *-SB.IS.TTYPE
SB.IS.NAWS .DA #IAC,#SB,#TELOPT.NAWS,#SB.IS
.DA 80
.DA 24
.DA #IAC,#SE
SB.IS.NAWS.LEN .EQ *-SB.IS.NAWS
*--------------------------------------
bActive .BS 1
2018-12-12 07:05:29 +00:00
*--------------------------------------
2018-12-11 16:41:25 +00:00
CH .BS 1
CV .BS 1
LWFLG .BS 1
INVFLG .BS 1
SCROLLTOP .BS 1
SCROLLBOT .BS 1
CURON .BS 1
CURCHAR .BS 1
OutBuffer .BS OUTBUF.MAXLEN
OutPtr .BS 1
OutCnt .BS 1
bIACMode .BS 1
IACBuf .BS OUTBUF.MAXLEN+1
bEscMode .BS 1
bEscModeCSI .BS 1
bEscSeqInNum .BS 1
EscSeq .BS ESCSEQ.MAXLEN+1
EscSeqParamCnt .BS 1
EscSeqParam .BS 4
*--------------------------------------
DRV.TERM.DIB .DA #S.DIB.S.WRITE+S.DIB.S.READ
.DA #0,#0,#0
>PSTR "A2osX VT100 TERM"
.DA #S.DIB.T.CHAR
.DA #0
.DA K.VER
*--------------------------------------
MAN
SAVE USR/SRC/SYS/KERNEL.S.TERM
LOAD USR/SRC/SYS/KERNEL.S
ASM