A2osX/SYS/KERNEL.S.TERMX.txt

1677 lines
27 KiB
Plaintext
Raw Normal View History

2018-12-11 16:41:25 +00:00
NEW
2019-05-15 05:46:12 +00:00
AUTO 3,1
2018-12-11 16:41:25 +00:00
*--------------------------------------
CURBLNK.SPEED .EQ 2
2018-12-11 16:41:25 +00:00
*--------------------------------------
.DUMMY
2018-12-14 16:19:05 +00:00
.OR ZPDRV
ZPIOCTL .BS 2
ZPBufPtr .BS 2
2020-05-04 20:46:21 +00:00
ZPDCBPtr .BS 2
2021-03-15 20:45:22 +00:00
ZPCnt .BS 2
2020-01-10 15:58:47 +00:00
2021-03-15 20:45:22 +00:00
ZPBufBL1 .BS 2
ZPBufBL2 .BS 2
ZPScrBL1 .BS 2
ZPScrBL2 .BS 2
2020-01-10 15:58:47 +00:00
*--------------------------------------
2020-05-04 20:46:21 +00:00
bActive .BS 1
2020-01-11 17:13:27 +00:00
ZPTmpX .BS 1
2019-05-15 15:30:46 +00:00
ZPTmpChar .BS 1
2020-01-10 15:58:47 +00:00
2021-03-15 20:45:22 +00:00
CsiH .BS 1
CsiPCnt .BS 1
CsiP .BS 4
2018-12-14 16:19:05 +00:00
.ED
2018-12-11 16:41:25 +00:00
*--------------------------------------
2020-02-06 16:23:59 +00:00
TERMX .DA TERMX.STATUS
.DA A2osX.BADCALL
.DA A2osX.BADCALL
.DA A2osX.BADCALL
.DA TERMX.CONTROL
.DA A2osX.BADCALL
.DA TERMX.OPEN
.DA TERMX.CLOSE
.DA TERMX.READ
.DA TERMX.WRITE
*--------------------------------------
2020-05-04 20:46:21 +00:00
TERMX.STATUS tya
beq .1
2020-01-10 15:58:47 +00:00
2021-05-04 17:31:21 +00:00
cmp #S.IOCTL.S.GETDIB
2019-02-20 16:07:43 +00:00
bne .3
2020-01-10 15:58:47 +00:00
2018-12-12 16:32:33 +00:00
ldy #S.DIB-1
.HS 2C BIT ABS
2018-12-12 16:32:33 +00:00
.1 ldy #3
2018-12-11 16:41:25 +00:00
2020-01-10 15:58:47 +00:00
sta CLRWRITEAUX
2020-02-06 16:23:59 +00:00
.2 lda TERMX.DIB,y
2018-12-17 14:24:39 +00:00
sta (ZPBufPtr),y
2018-12-12 16:32:33 +00:00
dey
bne .2
2019-11-14 14:48:12 +00:00
2021-05-04 17:31:21 +00:00
ldy #S.DCB.TTY.S
2018-12-13 16:39:24 +00:00
lda (ZPDCBPtr),y
2018-12-14 07:32:20 +00:00
sta (ZPBufPtr)
2018-12-11 16:41:25 +00:00
clc
rts
2019-11-14 14:48:12 +00:00
2021-05-04 17:31:21 +00:00
.3 cmp #S.IOCTL.S.EOF
2019-02-20 16:07:43 +00:00
bne .9
2020-02-06 16:23:59 +00:00
jsr TERMX.ISOPENED
beq TERMX.OPEN.E
2019-11-14 14:48:12 +00:00
2021-04-29 11:56:34 +00:00
jsr TERMX.CBLNK
2019-02-20 16:07:43 +00:00
ldy #S.DCB.TTY.OUTTAIL
lda (ZPDCBPtr),y
2019-02-21 06:29:41 +00:00
iny
2019-05-16 15:51:19 +00:00
eor (ZPDCBPtr),y OUTHEAD
2021-07-24 20:42:23 +00:00
bne .8
2018-12-11 16:41:25 +00:00
2019-02-20 16:07:43 +00:00
bit bActive
2019-05-16 15:51:19 +00:00
bpl .7
2019-11-14 14:48:12 +00:00
jsr TERMX.CheckOA
2019-05-16 15:51:19 +00:00
bmi .7
2019-11-14 14:48:12 +00:00
2019-02-20 16:07:43 +00:00
bit KBD
2019-05-16 15:51:19 +00:00
bmi .8
2019-02-20 16:07:43 +00:00
.7 lda #$ff EOF = TRUE
2019-05-16 15:51:19 +00:00
.HS 2C BIT ABS
.8 lda #0 EOF = FALSE
2019-02-20 16:07:43 +00:00
clc
rts
2019-11-14 14:48:12 +00:00
2018-12-11 16:41:25 +00:00
.9 lda #MLI.E.BADCTL
2019-11-14 14:48:12 +00:00
.HS 2C BIT ABS
2020-02-06 16:23:59 +00:00
TERMX.OPEN.E lda #MLI.E.OPEN
2018-12-11 16:41:25 +00:00
sec
rts
*--------------------------------------
2020-05-04 20:46:21 +00:00
TERMX.OPEN jsr TERMX.ISOPENED
2020-02-06 16:23:59 +00:00
bne TERMX.OPEN.E
2019-11-14 14:48:12 +00:00
2021-07-24 20:42:23 +00:00
lda (ZPDCBPtr) #S.DCB.TTY.DEVID
tax
2022-01-31 21:48:25 +00:00
lda IO.hFD in ZPTMP
2020-03-12 07:46:43 +00:00
sta CLRWRITEAUX
sta A2osX.SCRNDEVS,x
sta SETWRITEAUX
2018-12-14 16:19:05 +00:00
2021-05-04 17:31:21 +00:00
ldy #S.DCB.TTY.S
2018-12-13 16:39:24 +00:00
lda (ZPDCBPtr),y
2018-12-11 16:41:25 +00:00
ora #S.DIB.S.OPENED
2020-02-06 16:23:59 +00:00
ora TERMX.DIB+S.DIB.S
2018-12-13 16:39:24 +00:00
sta (ZPDCBPtr),y
jsr TERMX.RIS
2018-12-11 16:41:25 +00:00
*--------------------------------------
2020-02-06 16:23:59 +00:00
TERMX.CONTROL lda (ZPDCBPtr) #S.DCB.TTY.DEVID
2021-07-24 20:42:23 +00:00
2020-03-12 07:46:43 +00:00
sta CLRWRITEAUX
sta A2osX.ASCREEN
sta SETWRITEAUX
2021-07-24 20:42:23 +00:00
2018-12-17 14:24:39 +00:00
sta SETTEXT
2021-07-24 20:42:23 +00:00
sta CLRMIXED
2018-12-17 14:24:39 +00:00
2020-02-06 16:23:59 +00:00
jsr TERMX.SCRCPY
2021-07-24 20:42:23 +00:00
lda #0
ldy #S.DCB.TTY.bTITLE
2018-12-17 07:02:03 +00:00
sta (ZPDCBPtr),y
2018-12-11 16:41:25 +00:00
clc
rts
*--------------------------------------
2021-07-24 20:42:23 +00:00
TERMX.CLOSE jsr TERMX.ISOPENED
2018-12-11 16:41:25 +00:00
beq .9
2019-11-14 14:48:12 +00:00
2020-02-06 16:23:59 +00:00
lda TERMX.DIB+S.DIB.S
2018-12-13 16:39:24 +00:00
sta (ZPDCBPtr),y
2020-01-10 15:58:47 +00:00
2021-07-24 20:42:23 +00:00
lda (ZPDCBPtr) #S.DCB.TTY.DEVID
tax
2018-12-11 16:41:25 +00:00
2020-03-12 07:46:43 +00:00
sta CLRWRITEAUX
stz A2osX.SCRNDEVS,x
sta SETWRITEAUX
2021-07-24 20:42:23 +00:00
2018-12-11 16:41:25 +00:00
clc
rts
2020-01-10 15:58:47 +00:00
2018-12-14 16:19:05 +00:00
.9 lda #MLI.E.IO
2018-12-11 16:41:25 +00:00
sec
rts
*--------------------------------------
2021-05-04 17:31:21 +00:00
TERMX.ISOPENED ldy #S.DCB.TTY.S
2019-11-14 14:48:12 +00:00
lda (ZPDCBPtr),y
bit #S.DIB.S.OPENED
rts
*--------------------------------------
2020-02-06 16:23:59 +00:00
TERMX.READ bit bActive is screen active?
2018-12-14 16:19:05 +00:00
bpl .6 no....go check flush...
2021-04-29 11:56:34 +00:00
jsr TERMX.CBLNK
2018-12-11 16:41:25 +00:00
jsr TERMX.CheckOA
bmi .6 Open apple key, not for us...
2018-12-17 07:02:03 +00:00
2018-12-11 16:41:25 +00:00
lda KBD
bpl .6
2018-12-11 16:41:25 +00:00
sta KBDSTROBE
and #$7F
2020-02-10 16:24:49 +00:00
cmp #C.ESC
bne .1
2021-07-24 20:42:23 +00:00
2020-02-10 16:24:49 +00:00
lda #3
2020-02-14 07:21:56 +00:00
.1 ldx #KeyMap.Cnt-1
2019-12-04 13:46:58 +00:00
2021-04-29 11:56:34 +00:00
.2 cmp KeyMap,x
2018-12-11 16:41:25 +00:00
beq .3
2019-12-04 13:46:58 +00:00
2021-07-24 20:42:23 +00:00
dex
2019-05-25 19:24:07 +00:00
bpl .2
2019-12-04 13:46:58 +00:00
2019-05-25 19:24:07 +00:00
cmp #C.CR
bne .21
2021-05-09 17:04:44 +00:00
jsr TERMX.COUT
ldy #S.DCB.TTY.bLNM
2019-05-25 19:24:07 +00:00
lda (ZPDCBPtr),y
bpl .7
2019-12-04 13:46:58 +00:00
2019-05-25 19:24:07 +00:00
lda #C.LF
.21 jsr TERMX.COUT no remap....send char....
2018-12-11 16:41:25 +00:00
bra .7 and flush
2019-12-04 13:46:58 +00:00
.3 jsr TERMX.ESCCSI
lda CsiCodes,x
2021-05-09 17:04:44 +00:00
jsr TERMX.COUT
2019-05-25 19:24:07 +00:00
bra .7
2021-07-24 20:42:23 +00:00
2018-12-15 20:34:55 +00:00
.6 ldy #S.DCB.TTY.OUTTAIL
2018-12-13 16:39:24 +00:00
lda (ZPDCBPtr),y
2019-10-11 20:05:54 +00:00
iny
cmp (ZPDCBPtr),y OUTHEAD
2018-12-11 16:41:25 +00:00
beq .9 no char in output buffer...
2019-12-04 13:46:58 +00:00
2018-12-11 16:41:25 +00:00
.7 stz .8+1
2020-01-10 15:58:47 +00:00
2021-03-15 20:45:22 +00:00
.70 inc ZPCnt
2018-12-11 16:41:25 +00:00
bne .71
2019-12-04 13:46:58 +00:00
2021-03-15 20:45:22 +00:00
inc ZPCnt+1
2018-12-11 16:41:25 +00:00
beq .8
2019-12-04 13:46:58 +00:00
.71 ldy #S.DCB.TTY.OUTTAIL
lda (ZPDCBPtr),y
iny OUTHEAD
cmp (ZPDCBPtr),y
beq .8
2019-12-04 13:46:58 +00:00
tay
lda (ZPDCBPtr),y
pha
tya
inc
cmp #S.DCB.TTY.OUTBUF.MAX
bne .72
lda #S.DCB.TTY.OUTBUF
.72 ldy #S.DCB.TTY.OUTTAIL
sta (ZPDCBPtr),y
pla
2023-04-29 11:47:59 +00:00
2018-12-11 16:41:25 +00:00
ldy .8+1
2020-01-11 17:13:27 +00:00
sta CLRWRITEAUX
2018-12-11 16:41:25 +00:00
sta (ZPBufPtr),y
2020-01-11 17:13:27 +00:00
sta SETWRITEAUX
2018-12-11 16:41:25 +00:00
iny
sty .8+1
bra .70
2019-12-04 13:46:58 +00:00
2018-12-11 16:41:25 +00:00
.8 lda #$ff SELF MODIFIED
2021-07-24 20:42:23 +00:00
2020-01-11 17:13:27 +00:00
sta CLRWRITEAUX
2021-07-24 20:42:23 +00:00
2018-12-11 16:41:25 +00:00
ldy #S.IOCTL.BYTECNT
sta (ZPIOCTL),y
iny
lda #0
sta (ZPIOCTL),y
clc
rts
2019-12-04 13:46:58 +00:00
2019-05-12 20:45:11 +00:00
.9 lda #E.NODATA
* sec
2018-12-11 16:41:25 +00:00
rts
*--------------------------------------
2020-02-06 16:23:59 +00:00
TERMX.WRITE jsr TERMX.CUROFF
2019-11-14 14:48:12 +00:00
2021-03-15 20:45:22 +00:00
.1 inc ZPCnt
2018-12-12 16:32:33 +00:00
bne .2
2019-11-14 14:48:12 +00:00
2021-03-15 20:45:22 +00:00
inc ZPCnt+1
2019-05-25 19:24:07 +00:00
beq .8
2019-11-14 14:48:12 +00:00
2021-05-04 17:31:21 +00:00
.2 ldy #S.DCB.TTY.M
2018-12-13 16:39:24 +00:00
lda (ZPDCBPtr),y
2018-12-12 16:32:33 +00:00
tax
jsr .3
2018-12-11 16:41:25 +00:00
2018-12-12 16:32:33 +00:00
inc ZPBufPtr
bne .1
2018-12-12 16:32:33 +00:00
inc ZPBufPtr+1
bra .1
2018-12-11 16:41:25 +00:00
2018-12-12 16:32:33 +00:00
.3 jmp (.4,x)
2018-12-17 07:02:03 +00:00
.4 .DA TERMX.CIN
2020-02-06 16:23:59 +00:00
.DA TERMX.ESC
.DA TERMX.CSI
.DA TERMX.IAC
.DA TERMX.G0
.DA TERMX.G1
2019-11-14 14:48:12 +00:00
2019-05-25 19:24:07 +00:00
.8 clc
rts
2018-12-11 16:41:25 +00:00
*--------------------------------------
TERMX.CIN jsr TERM.GetBufByte
2018-12-12 16:32:33 +00:00
cmp #IAC
2018-12-11 16:41:25 +00:00
bne .1
2019-11-14 14:48:12 +00:00
2021-05-04 17:31:21 +00:00
lda #S.DCB.TTY.M.IAC
2021-03-15 20:45:22 +00:00
jmp TERMX.SETM
2019-11-14 14:48:12 +00:00
2018-12-17 07:02:03 +00:00
.1 cmp #C.DEL
beq TERMX.DEL
2019-11-14 14:48:12 +00:00
2018-12-11 16:41:25 +00:00
cmp #C.SPACE
2018-12-17 14:24:39 +00:00
bcs .8
2019-11-14 14:48:12 +00:00
2018-12-17 14:24:39 +00:00
ldx #CtrlChars.Cnt-1
2018-12-11 16:41:25 +00:00
2018-12-17 14:24:39 +00:00
.2 cmp CtrlChars,x
beq .3
2019-11-14 14:48:12 +00:00
2018-12-17 14:24:39 +00:00
dex
bpl .2
2019-11-14 14:48:12 +00:00
2018-12-17 14:24:39 +00:00
clc
rts
2019-11-14 14:48:12 +00:00
2018-12-17 14:24:39 +00:00
.3 txa
asl
tax
jmp (.4,x)
.4 .DA TERMX.ENQ
.DA TERMX.BS
.DA TERMX.LF
.DA TERMX.FF
.DA TERMX.CR
.DA TERMX.SO
.DA TERMX.SI
.DA TERMX.SETM.ESC
2020-02-06 16:23:59 +00:00
*--------------------------------------
2019-05-12 20:45:11 +00:00
.8 jsr SetCharAtCurPos
2018-12-11 16:41:25 +00:00
*--------------------------------------
2023-04-29 11:47:59 +00:00
TERMX.FS ldy #S.DCB.TTY.bDECAWM
lda (ZPDCBPtr),y
asl
.HS 89 BIT IMM
TERMX.CUF clc
php
ldy #S.DCB.TTY.CH
2018-12-13 16:39:24 +00:00
lda (ZPDCBPtr),y
2019-05-29 15:21:14 +00:00
inc
sta (ZPDCBPtr),y
cmp #80
2023-04-29 11:47:59 +00:00
bcc .7
2018-12-11 16:41:25 +00:00
2023-04-29 11:47:59 +00:00
plp
bcc .8
2021-07-24 20:42:23 +00:00
jmp TERMX.NEL
2019-05-25 19:24:07 +00:00
2023-04-29 11:47:59 +00:00
.7 plp
2020-02-06 16:23:59 +00:00
2023-04-29 11:47:59 +00:00
.8 clc
2019-05-25 19:24:07 +00:00
rts
2023-04-29 11:47:59 +00:00
*--------------------------------------
TERMX.BS
TERMX.CUB ldy #S.DCB.TTY.CH
2019-05-25 19:24:07 +00:00
lda (ZPDCBPtr),y
2023-04-29 11:47:59 +00:00
beq TERMX.BS.8
2019-05-25 19:24:07 +00:00
dec
sta (ZPDCBPtr),y
2023-04-29 11:47:59 +00:00
TERMX.BS.8 clc
2018-12-11 16:41:25 +00:00
rts
*--------------------------------------
TERMX.DEL ldy #S.DCB.TTY.CH
2018-12-13 16:39:24 +00:00
lda (ZPDCBPtr),y
2018-12-11 16:41:25 +00:00
beq .1
2019-11-14 14:48:12 +00:00
2018-12-12 16:32:33 +00:00
dec
2018-12-13 16:39:24 +00:00
sta (ZPDCBPtr),y
2018-12-11 16:41:25 +00:00
bra .3
2019-12-04 13:46:58 +00:00
.1 ldy #S.DCB.TTY.CV
2018-12-13 16:39:24 +00:00
lda (ZPDCBPtr),y
beq TERMX.BS.8
2018-12-12 16:32:33 +00:00
dec
2018-12-13 16:39:24 +00:00
sta (ZPDCBPtr),y
2018-12-12 16:32:33 +00:00
2019-12-04 13:46:58 +00:00
ldy #S.DCB.TTY.CH
2018-12-11 16:41:25 +00:00
lda #79
2018-12-13 16:39:24 +00:00
sta (ZPDCBPtr),y S.DCB.TTY.CH
2019-11-14 14:48:12 +00:00
.3 lda #C.SPACE
2018-12-11 16:41:25 +00:00
jmp SetCharAtCurPos
*--------------------------------------
TERMX.CR lda #0
2018-12-17 14:24:39 +00:00
ldy #S.DCB.TTY.CH
sta (ZPDCBPtr),y
2018-12-11 16:41:25 +00:00
clc
rts
2018-12-17 07:02:03 +00:00
*--------------------------------------
TERMX.SO sec
2019-05-15 15:30:46 +00:00
.HS 90 BCC
*--------------------------------------
TERMX.SI clc
2019-05-15 15:30:46 +00:00
ldy #S.DCB.TTY.bG0G1
ror
sta (ZPDCBPtr),y
clc
rts
*--------------------------------------
2021-05-04 17:31:21 +00:00
TERMX.ESC jsr TERM.GetBufByte y = #S.DCB.TTY.M
2018-12-12 16:32:33 +00:00
2018-12-11 16:41:25 +00:00
ldx #EscCodes.Cnt-1
2018-12-11 16:41:25 +00:00
.2 cmp EscCodes,x
beq .3
2018-12-11 16:41:25 +00:00
dex
bpl .2
2019-12-04 13:46:58 +00:00
bra TERMX.SETM.0
2018-12-11 16:41:25 +00:00
2019-05-15 15:30:46 +00:00
.3 phx
jsr .4
plx
lda EscModes,x
2021-03-15 20:45:22 +00:00
bra TERMX.SETM
2019-12-04 13:46:58 +00:00
2019-05-15 15:30:46 +00:00
.4 txa
2018-12-11 16:41:25 +00:00
asl
tax
2019-05-15 15:30:46 +00:00
jmp (.5,x)
2019-12-04 13:46:58 +00:00
.5 .DA TERMX.DECSC 7
.DA TERMX.DECRC 8
.DA TERMX.IND D
.DA TERMX.NEL E
.DA TERMX.RI M
.DA TERMX.RIS c
2021-05-04 17:31:21 +00:00
.DA TERMX.RTS [
.DA TERMX.RTS (
.DA TERMX.RTS )
2021-07-24 20:42:23 +00:00
*--------------------------------------
TERMX.SETM.ESC lda #S.DCB.TTY.M.ESC
.HS 2C BIT ABS
TERMX.SETM.0 lda #0
2021-05-04 17:31:21 +00:00
TERMX.SETM ldy #S.DCB.TTY.M
2019-05-15 15:30:46 +00:00
sta (ZPDCBPtr),y
2021-04-29 11:56:34 +00:00
ldy #S.DCB.TTY.INBUF
2023-04-29 11:47:59 +00:00
tya
2019-05-15 15:30:46 +00:00
sta (ZPDCBPtr),y
2023-04-29 11:47:59 +00:00
TERMX.SETM.8 clc
2021-05-04 17:31:21 +00:00
rts
2018-12-11 16:41:25 +00:00
*--------------------------------------
2021-04-29 11:56:34 +00:00
TERMX.CSI ldy #S.DCB.TTY.INBUF
2018-12-13 16:39:24 +00:00
lda (ZPDCBPtr),y
inc
sta (ZPDCBPtr),y
tay
2021-07-24 20:42:23 +00:00
2020-02-06 16:23:59 +00:00
jsr TERM.GetBufByte
2021-07-24 20:42:23 +00:00
2018-12-13 16:39:24 +00:00
sta (ZPDCBPtr),y
2018-12-11 16:41:25 +00:00
cmp #64 End of Seq ?
2020-02-06 16:23:59 +00:00
bcs TERMX.CSI.Exec
2021-04-29 11:56:34 +00:00
cpy #S.DCB.TTY.INBUF.MAX-1 buffer full?
2023-04-29 11:47:59 +00:00
bne TERMX.SETM.8
2019-10-16 20:42:21 +00:00
2023-04-29 11:47:59 +00:00
jmp TERMX.SETM.0
2018-12-11 16:41:25 +00:00
2021-03-15 20:45:22 +00:00
TERMX.CSI.Exec stz CsiH
stz CsiPCnt
2019-10-11 20:05:54 +00:00
2021-04-29 11:56:34 +00:00
lda #S.DCB.TTY.INBUF+1 EscSeq Ptr
2019-07-12 14:51:57 +00:00
clc
adc ZPDCBPtr
sta ZPPtr2
2019-10-11 20:05:54 +00:00
2021-04-29 11:56:34 +00:00
lda /S.DCB.TTY.INBUF+1
2019-07-12 14:51:57 +00:00
adc ZPDCBPtr+1
sta ZPPtr2+1
2019-10-11 20:05:54 +00:00
2019-07-12 14:51:57 +00:00
lda (ZPPtr2)
2019-05-25 19:24:07 +00:00
cmp #'?'
2019-07-12 14:51:57 +00:00
bne .2
2019-05-25 19:24:07 +00:00
2021-03-15 20:45:22 +00:00
sta CsiH
2019-10-11 20:05:54 +00:00
2021-05-04 17:31:21 +00:00
.1 jsr SHARED.NextCP2
2019-07-28 20:39:30 +00:00
2021-04-29 11:56:34 +00:00
.2 jsr MATH.Dec2ACC32
2019-07-12 14:51:57 +00:00
bcs .5
2018-12-11 16:41:25 +00:00
2021-05-04 17:31:21 +00:00
jsr SHARED.AddY2P2
2018-12-11 16:41:25 +00:00
lda #255
2019-07-12 14:51:57 +00:00
ldx ACC32+1
bne .3
2018-12-11 16:41:25 +00:00
2019-07-12 14:51:57 +00:00
lda ACC32
2021-03-15 20:45:22 +00:00
.3 ldx CsiPCnt
sta CsiP,x
inc CsiPCnt
2018-12-11 16:41:25 +00:00
2019-07-12 14:51:57 +00:00
lda (ZPPtr2)
2018-12-11 16:41:25 +00:00
cmp #';'
2019-07-12 14:51:57 +00:00
beq .1
2018-12-11 16:41:25 +00:00
2023-04-29 11:47:59 +00:00
.5 jsr TERMX.SETM.0
2019-10-11 20:05:54 +00:00
2019-07-12 14:51:57 +00:00
lda (ZPPtr2)
2018-12-15 20:34:55 +00:00
ldx #CsiCodes.Cnt-1
2018-12-11 16:41:25 +00:00
2019-07-12 14:51:57 +00:00
.6 cmp CsiCodes,x
beq .7
2021-07-24 20:42:23 +00:00
2018-12-11 16:41:25 +00:00
dex
2019-10-16 20:42:21 +00:00
bpl .6
2021-07-24 20:42:23 +00:00
2018-12-11 16:41:25 +00:00
clc
rts
2019-07-12 14:51:57 +00:00
.7 txa
2018-12-11 16:41:25 +00:00
asl
tax
2018-12-15 20:34:55 +00:00
jmp (.8,x)
.8 .DA TERMX.CUx A
.DA TERMX.CUx B
.DA TERMX.CUx C
.DA TERMX.CUx D
.DA TERMX.CUP H
.DA TERMX.ED J
.DA TERMX.EL K
.DA TERMX.HVP f
.DA TERMX.SM h
.DA TERMX.RM l
.DA TERMX.SGR m
.DA TERMX.DSR n
.DA TERMX.DECSTBM r
*--------------------------------------
* LNM : ESC [ 20
* DECAWM : ESC [ ? 7
* CUR : ESC [ ? 25
*--------------------------------------
TERMX.SM sec
2021-07-24 20:42:23 +00:00
.HS 90 BCC
2018-12-15 20:34:55 +00:00
*--------------------------------------
TERMX.RM clc
2019-05-25 19:24:07 +00:00
2021-03-15 20:45:22 +00:00
ldx CsiPCnt
2019-05-25 19:24:07 +00:00
beq .99
2021-07-24 20:42:23 +00:00
2018-12-15 20:34:55 +00:00
dex
2019-05-25 19:24:07 +00:00
bne .99
2021-07-24 20:42:23 +00:00
2021-03-15 20:45:22 +00:00
lda CsiP
ldx CsiH
2019-05-25 19:24:07 +00:00
php
bne .1
2019-10-11 20:05:54 +00:00
cmp #20 bLNM
2019-05-25 19:24:07 +00:00
bne .98
ldy #S.DCB.TTY.bLNM
2019-05-25 19:24:07 +00:00
bra .8
*--------------------------------------
.1 cpx #'?'
2019-05-25 19:24:07 +00:00
bne .98
cmp #7
bne .2
2019-10-11 20:05:54 +00:00
ldy #S.DCB.TTY.bDECAWM
bra .8
2023-05-16 16:53:52 +00:00
*--------------------------------------
.2 eor #25
bne .98
2019-10-11 20:05:54 +00:00
ldy #S.DCB.TTY.bCURON
plp
2023-04-29 11:47:59 +00:00
2023-05-16 16:53:52 +00:00
ror A = 0
2019-05-25 19:24:07 +00:00
sta (ZPDCBPtr),y
2023-05-16 16:53:52 +00:00
bmi .3 let it starts blinking..
jsr TERMX.CUROFF
2023-05-16 16:53:52 +00:00
.3 clc
2019-05-25 19:24:07 +00:00
rts
.8 plp
ror
sta (ZPDCBPtr),y
2023-05-16 16:53:52 +00:00
clc
rts
2019-10-03 06:25:27 +00:00
.98 plp
2019-05-25 19:24:07 +00:00
.99 clc
2018-12-15 20:34:55 +00:00
rts
2018-12-11 16:41:25 +00:00
*--------------------------------------
2023-04-29 11:47:59 +00:00
TERMX.SGR lda CsiPCnt
beq .10
2018-12-15 20:34:55 +00:00
ldx #0
2021-03-15 15:00:27 +00:00
2021-03-15 20:45:22 +00:00
.1 lda CsiP,x
2018-12-15 20:34:55 +00:00
bne .2
2021-03-15 15:00:27 +00:00
jsr .10
2018-12-15 20:34:55 +00:00
bra .7
2023-04-29 11:47:59 +00:00
.2 cmp #7
2019-05-12 20:45:11 +00:00
bne .7
2018-12-15 20:34:55 +00:00
2023-04-29 11:47:59 +00:00
jsr .11
2021-03-15 15:00:27 +00:00
.7 inx
2021-03-15 20:45:22 +00:00
dec CsiPCnt
2018-12-15 20:34:55 +00:00
bne .1
.8 clc
rts
2023-04-29 11:47:59 +00:00
.10 sec
.HS 90 BCC
.11 clc
lda #0
ror
ldy #S.DCB.TTY.bNORMAL
sta (ZPDCBPtr),y
2023-04-29 11:47:59 +00:00
rts
2018-12-15 20:34:55 +00:00
*--------------------------------------
TERMX.DSR ldx CsiPCnt
2018-12-15 20:34:55 +00:00
beq .8
2018-12-15 20:34:55 +00:00
dex
bne .8
2021-03-15 20:45:22 +00:00
lda CsiP
2018-12-15 20:34:55 +00:00
cmp #6
bne .8
jsr TERMX.ESCCSI
2018-12-15 20:34:55 +00:00
ldy #S.DCB.TTY.CV
lda (ZPDCBPtr),y
inc
jsr TERMX.10OUT
2018-12-15 20:34:55 +00:00
lda #';'
2021-05-09 17:04:44 +00:00
jsr TERMX.COUT
2021-07-24 20:42:23 +00:00
2018-12-15 20:34:55 +00:00
ldy #S.DCB.TTY.CH
lda (ZPDCBPtr),y
inc
jsr TERMX.10OUT
2018-12-15 20:34:55 +00:00
lda #'R'
2021-05-09 17:04:44 +00:00
jsr TERMX.COUT
2018-12-15 20:34:55 +00:00
.8 clc
rts
*--------------------------------------
TERMX.DECSTBM lda #0
2018-12-15 20:34:55 +00:00
ldx #23
ldy CsiPCnt
beq .8
cpy #2
2018-12-15 20:34:55 +00:00
bne .9
ldy CsiP
beq .9
2023-04-29 11:47:59 +00:00
dey
cpy #24
bcs .9
tya
ldy CsiP+1
beq .9
2023-04-29 11:47:59 +00:00
dey
cpy #24
bcs .9
phy
plx
2018-12-15 20:34:55 +00:00
.8 ldy #S.DCB.TTY.SCROLLTOP
sta (ZPDCBPtr),y
iny S.DCB.TTY.SCROLLBOT
txa
sta (ZPDCBPtr),y
2018-12-15 20:34:55 +00:00
.9 clc
rts
*--------------------------------------
TERMX.CUx ldy #1
2021-07-24 20:42:23 +00:00
lda CsiPCnt
beq .1
2021-07-24 20:42:23 +00:00
2021-03-15 20:45:22 +00:00
dec
bne .8
2021-07-24 20:42:23 +00:00
ldy CsiP
2021-03-15 15:00:27 +00:00
beq .8
2021-07-24 20:42:23 +00:00
.1 lda .80,x
sta .3+1
lda .80+1,x
sta .3+2
2019-05-14 16:04:16 +00:00
.2 phy
2021-03-15 15:00:27 +00:00
.3 jsr $FFFF SELF MODIFIED
2021-03-15 15:00:27 +00:00
ply
dey
bne .2
2019-05-14 16:04:16 +00:00
.8 clc
2019-05-14 16:04:16 +00:00
rts
2018-12-15 20:34:55 +00:00
2023-04-29 11:47:59 +00:00
.80 .DA TERMX.CUU
.DA TERMX.CUD
.DA TERMX.CUF
.DA TERMX.CUB
2018-12-15 20:34:55 +00:00
*--------------------------------------
TERMX.CUP
TERMX.HVP lda CsiPCnt
beq TERMX.HOME
2019-11-14 14:48:12 +00:00
2019-12-04 13:46:58 +00:00
ldx #1
2021-03-15 20:45:22 +00:00
lda CsiP
2018-12-15 20:34:55 +00:00
beq .2
2019-11-14 14:48:12 +00:00
2018-12-15 20:34:55 +00:00
ldx #24
cmp #24
bcs .2
2019-11-14 14:48:12 +00:00
2018-12-15 20:34:55 +00:00
tax
2019-11-14 14:48:12 +00:00
2018-12-15 20:34:55 +00:00
.2 dex
txa
ldy #S.DCB.TTY.CV
sta (ZPDCBPtr),y
2021-03-15 20:45:22 +00:00
dec CsiPCnt
beq .8
2019-11-14 14:48:12 +00:00
2018-12-15 20:34:55 +00:00
ldx #1
2021-03-15 20:45:22 +00:00
lda CsiP+1
2018-12-15 20:34:55 +00:00
beq .3
2019-11-14 14:48:12 +00:00
2018-12-15 20:34:55 +00:00
ldx #80
cmp #80
bcs .3
2019-11-14 14:48:12 +00:00
2018-12-15 20:34:55 +00:00
tax
2019-11-14 14:48:12 +00:00
2018-12-15 20:34:55 +00:00
.3 dex
txa
ldy #S.DCB.TTY.CH
sta (ZPDCBPtr),y
2019-11-14 14:48:12 +00:00
.8 clc
2018-12-15 20:34:55 +00:00
rts
2018-12-11 16:41:25 +00:00
*--------------------------------------
TERMX.HOME lda #0
2019-12-04 13:46:58 +00:00
ldy #S.DCB.TTY.CV
sta (ZPDCBPtr),y
ldy #S.DCB.TTY.CH
sta (ZPDCBPtr),y
clc
2019-12-04 13:46:58 +00:00
rts
2021-07-24 20:42:23 +00:00
*--------------------------------------
2020-02-06 16:23:59 +00:00
TERMX.G0 ldx #$80
2019-05-14 16:04:16 +00:00
.HS 2C BIT ABS
2020-02-06 16:23:59 +00:00
TERMX.G1 ldx #$40
2019-12-04 13:46:58 +00:00
ldy #S.DCB.TTY.bG0G1ALT
2019-05-12 20:45:11 +00:00
2020-02-06 16:23:59 +00:00
jsr TERM.GetBufByte
2019-05-14 16:04:16 +00:00
cmp #'0'
beq .1
2021-07-24 20:42:23 +00:00
2019-12-04 13:46:58 +00:00
txa
eor #$ff
and (ZPDCBPtr),y
bra .8
2021-07-24 20:42:23 +00:00
2019-12-04 13:46:58 +00:00
.1 txa
ora (ZPDCBPtr),y
.8 sta (ZPDCBPtr),y
jmp TERMX.SETM.0
2019-05-12 20:45:11 +00:00
*--------------------------------------
TERMX.RIS ldy #S.DCB.TTY.M
2021-05-04 17:31:21 +00:00
.1 lda RESET.VALUES-S.DCB.TTY.M,y
2018-12-15 20:34:55 +00:00
sta (ZPDCBPtr),y
2019-07-12 14:51:57 +00:00
iny
2021-04-29 11:56:34 +00:00
cpy #S.DCB.TTY.INBUF+1
2018-12-17 07:02:03 +00:00
bne .1
2023-04-29 11:47:59 +00:00
jmp TERMX.ED2 Erase Screen
2018-12-11 16:41:25 +00:00
*--------------------------------------
TERMX.ENQ ldx #0
2018-12-11 16:41:25 +00:00
.1 lda TERMX.ENQ.REP,x
2019-05-15 15:30:46 +00:00
2021-05-09 17:04:44 +00:00
jsr TERMX.COUT
2018-12-15 20:34:55 +00:00
inx
cpx #TERMX.ENQ.REP.L
2018-12-11 16:41:25 +00:00
bne .1
2018-12-11 16:41:25 +00:00
.8 clc
rts
*--------------------------------------
TERMX.LF ldy #S.DCB.TTY.bLNM
2018-12-13 16:39:24 +00:00
lda (ZPDCBPtr),y
bpl TERMX.IND
2021-03-15 20:45:22 +00:00
TERMX.NEL jsr TERMX.CR
2020-02-06 16:23:59 +00:00
2023-04-29 11:47:59 +00:00
TERMX.IND sec scroll
.HS 90 BCC
TERMX.CUD clc no scroll
php
ldy #S.DCB.TTY.CV
2018-12-13 16:39:24 +00:00
lda (ZPDCBPtr),y
ldy #S.DCB.TTY.SCROLLBOT
cmp (ZPDCBPtr),y
bcs .1
2021-03-15 20:45:22 +00:00
2018-12-12 16:32:33 +00:00
inc
2018-12-13 16:39:24 +00:00
ldy #S.DCB.TTY.CV
sta (ZPDCBPtr),y
2023-04-29 11:47:59 +00:00
plp
.8 clc
2018-12-12 16:32:33 +00:00
rts
2023-04-29 11:47:59 +00:00
.1 plp
bcc .8
ldy #S.DCB.TTY.SCROLLTOP
lda (ZPDCBPtr),y
tax
.2 jsr TERMX.SETUP.L1X
inx
jsr TERMX.COPY.XtoL1
txa
ldy #S.DCB.TTY.SCROLLBOT
cmp (ZPDCBPtr),y
bne .2
bra TERMX.EL2
2018-12-12 16:32:33 +00:00
*--------------------------------------
TERMX.EL ldx CsiPCnt
beq TERMX.EL0 Erase EOL
lda CsiP
beq TERMX.EL0 0:Erase EOL
2023-04-29 11:47:59 +00:00
dec
beq TERMX.EL1 1:Erase SOL
dec 2:Erase Line
beq TERMX.EL2
2023-04-29 11:47:59 +00:00
TERMX.EL.8 clc
rts
*--------------------------------------
TERMX.EL1 ldy #S.DCB.TTY.CH End
2018-12-13 16:39:24 +00:00
lda (ZPDCBPtr),y
2019-11-14 14:48:12 +00:00
cmp #80
bcc TERMX.EL2.1
2018-12-12 16:32:33 +00:00
TERMX.EL2 lda #80 End
2018-12-11 16:41:25 +00:00
TERMX.EL2.1 ldy #0 Start
bra TERMX.EL0.1
2019-01-16 14:37:21 +00:00
TERMX.EL0 ldy #S.DCB.TTY.CH
2019-01-16 14:37:21 +00:00
lda (ZPDCBPtr),y
tay Start
2019-11-14 14:48:12 +00:00
cpy #80
bcs TERMX.EL.8
2019-11-14 14:48:12 +00:00
lda #80 End
TERMX.EL0.1 sty .1+1 Save Start
2019-11-14 14:48:12 +00:00
sta .2+1 Save End
2018-12-11 16:41:25 +00:00
2018-12-13 16:39:24 +00:00
ldy #S.DCB.TTY.CV
lda (ZPDCBPtr),y
2018-12-12 16:32:33 +00:00
tax
2019-05-29 15:21:14 +00:00
2019-11-14 14:48:12 +00:00
.1 ldy #$ff SELF MODIFIED
.2 cpy #$ff SELF MODIFIED
bcs TERMX.EL.8
2019-11-14 14:48:12 +00:00
2018-12-12 16:32:33 +00:00
lda #" "
2018-12-11 16:41:25 +00:00
jsr SetCharAtYX X unmodified
2019-11-14 14:48:12 +00:00
inc .1+1
2019-05-29 15:21:14 +00:00
bra .1
2018-12-11 16:41:25 +00:00
*--------------------------------------
TERMX.DECSC ldy #S.DCB.TTY.CH
jsr .1
2021-07-24 20:42:23 +00:00
2019-12-04 13:46:58 +00:00
iny
2021-07-24 20:42:23 +00:00
.1 lda (ZPDCBPtr),y
2019-12-04 13:46:58 +00:00
iny
sta (ZPDCBPtr),y
rts
*--------------------------------------
TERMX.DECRC jsr TERMX.CUROFF
2021-07-24 20:42:23 +00:00
2019-12-04 13:46:58 +00:00
ldy #S.DCB.TTY.CV.SAVE
2021-07-24 20:42:23 +00:00
jsr .1
2021-07-24 20:42:23 +00:00
2019-12-04 13:46:58 +00:00
dey
.1 lda (ZPDCBPtr),y
2019-12-04 13:46:58 +00:00
dey
sta (ZPDCBPtr),y
rts
*--------------------------------------
2023-04-29 11:47:59 +00:00
TERMX.RI sec scroll
.HS 90 BCC
TERMX.CUU clc no scroll
php
ldy #S.DCB.TTY.SCROLLTOP
2019-11-14 14:48:12 +00:00
lda (ZPDCBPtr),y
ldy #S.DCB.TTY.CV
2019-11-14 14:48:12 +00:00
cmp (ZPDCBPtr),y
bcs .1
lda (ZPDCBPtr),y
dec
sta (ZPDCBPtr),y
2023-04-29 11:47:59 +00:00
plp
.8 clc
rts
2023-04-29 11:47:59 +00:00
.1 plp
bcc .8
ldy #S.DCB.TTY.SCROLLBOT
2018-12-13 16:39:24 +00:00
lda (ZPDCBPtr),y
2018-12-11 16:41:25 +00:00
2018-12-12 16:32:33 +00:00
tax
2019-11-14 14:48:12 +00:00
.2 jsr TERMX.SETUP.L1X
2018-12-11 16:41:25 +00:00
dex
2020-02-06 16:23:59 +00:00
jsr TERMX.COPY.XtoL1
2018-12-11 16:41:25 +00:00
2018-12-12 16:32:33 +00:00
txa
2018-12-13 16:39:24 +00:00
ldy #S.DCB.TTY.SCROLLTOP
cmp (ZPDCBPtr),y
bne .2
2018-12-11 16:41:25 +00:00
bra TERMX.EL2
2018-12-11 16:41:25 +00:00
*--------------------------------------
TERMX.CBLNK jsr TERMX.CCheck
bcs TERMX.RTS
2019-11-14 14:48:12 +00:00
2023-05-16 16:53:52 +00:00
* ldy #S.DCB.TTY.bCURON
2020-01-11 17:13:27 +00:00
lda DevMgr.Timer
and #CURBLNK.SPEED
2019-02-23 22:01:58 +00:00
eor (ZPDCBPtr),y
asl
beq TERMX.RTS
2019-02-23 22:01:58 +00:00
lda (ZPDCBPtr),y
eor #CURBLNK.SPEED
sta (ZPDCBPtr),y
asl
beq TERMX.CUROFF.1
2023-05-16 16:53:52 +00:00
TERMX.CURON jsr GetCharAtCurPos
2021-05-04 17:31:21 +00:00
bcs TERMX.RTS Out of screen
2019-06-02 08:58:46 +00:00
2018-12-11 16:41:25 +00:00
and #$80
eor #" "
jmp SetCharAtY.SCR
*--------------------------------------
TERMX.CUROFF jsr TERMX.CCheck
bcs TERMX.RTS
2019-11-14 14:48:12 +00:00
TERMX.CUROFF.1 jsr GetCharAtCurPos
bcs TERMX.RTS Out of screen
2021-07-24 20:42:23 +00:00
jmp SetCharAtY.SCR
2018-12-11 16:41:25 +00:00
*--------------------------------------
TERMX.CCheck sec
bit bActive
bpl .9
ldy #S.DCB.TTY.bCURON
lda (ZPDCBPtr),y
bpl .9
clc
.9
TERMX.RTS rts
*--------------------------------------
TERMX.10OUT jsr MATH.A2STR10NP
2018-12-11 16:41:25 +00:00
2019-06-24 15:32:22 +00:00
ldx #0
2021-05-04 17:31:21 +00:00
.1 lda FOUTBuf,x
beq TERMX.RTS
2019-06-24 15:32:22 +00:00
inx
2021-05-09 17:04:44 +00:00
jsr TERMX.COUT
2019-06-24 15:32:22 +00:00
bra .1
2018-12-11 16:41:25 +00:00
*--------------------------------------
TERMX.ESCCSI lda #C.ESC
jsr TERMX.COUT
lda #'['
*--------------------------------------
2021-05-09 17:04:44 +00:00
TERMX.COUT pha save char
2018-12-13 16:39:24 +00:00
ldy #S.DCB.TTY.OUTHEAD
lda (ZPDCBPtr),y
2018-12-15 20:34:55 +00:00
pha save actual HEAD
2018-12-13 16:39:24 +00:00
inc
2021-04-29 11:56:34 +00:00
cmp #S.DCB.TTY.OUTBUF.MAX
2018-12-13 16:39:24 +00:00
bne .1
2021-04-29 11:56:34 +00:00
lda #S.DCB.TTY.OUTBUF
2018-12-13 16:39:24 +00:00
2018-12-15 20:34:55 +00:00
.1 dey OUTTAIL
cmp (ZPDCBPtr),y HEAD+1 = TAIL ?
2018-12-13 16:39:24 +00:00
beq .9 CS, full!
2018-12-13 16:39:24 +00:00
iny
sta (ZPDCBPtr),y new head
ply old head
pla
sta (ZPDCBPtr),y
2018-12-11 16:41:25 +00:00
clc
2018-12-13 16:39:24 +00:00
rts
2018-12-13 16:39:24 +00:00
.9 pla
2018-12-11 16:41:25 +00:00
pla
rts
*--------------------------------------
TERMX.ED ldx CsiPCnt
beq TERMX.ED0
2023-04-29 11:47:59 +00:00
.1 lda CsiP
beq TERMX.ED0 0...
dec 1 ?
beq TERMX.ED1
.2 dec 2 ?
beq TERMX.ED2
2018-12-13 16:39:24 +00:00
TERMX.ED.8 clc
2019-07-12 14:51:57 +00:00
rts
*--------------------------------------
2023-04-29 11:47:59 +00:00
TERMX.ED0 ldy #S.DCB.TTY.CV Erase Cursor -> Bottom
2020-01-10 15:58:47 +00:00
sta (ZPDCBPtr),y
tax
2023-04-29 11:47:59 +00:00
bra TERMX.ED.1
2020-02-06 16:23:59 +00:00
2023-04-29 11:47:59 +00:00
TERMX.ED1 ldx #0 Erase Top -> Cursor
2020-01-10 15:58:47 +00:00
ldy #S.DCB.TTY.CV
sta (ZPDCBPtr),y
tay
2023-04-29 11:47:59 +00:00
bra TERMX.ED.2
TERMX.FF jsr TERMX.HOME
2020-02-06 16:23:59 +00:00
2023-04-29 11:47:59 +00:00
TERMX.ED2 ldx #0 Erase Screen
2020-01-10 15:58:47 +00:00
2023-04-29 11:47:59 +00:00
TERMX.ED.1 ldy #24
2020-01-10 15:58:47 +00:00
2023-04-29 11:47:59 +00:00
TERMX.ED.2 sty .1+1
2020-01-10 15:58:47 +00:00
.1 cpx #$ff SELF MODIFIED
beq .9
2020-02-06 16:23:59 +00:00
jsr TERMX.SETUP.L1X
2020-01-10 15:58:47 +00:00
lda #" "
bit bActive
bpl .4
2021-07-24 20:42:23 +00:00
2020-01-10 15:58:47 +00:00
sta SETPAGE2
jsr .7
sta CLRPAGE2
jsr .7
.4 ldy #79
2021-07-24 20:42:23 +00:00
2021-03-15 20:45:22 +00:00
.5 sta (ZPBufBL1),y
2020-01-10 15:58:47 +00:00
dey
bpl .5
inx
bra .1
2020-07-05 08:58:35 +00:00
2020-01-10 15:58:47 +00:00
.7 ldy #39
2021-03-15 20:45:22 +00:00
.8 sta (ZPScrBL1),y
2020-01-10 15:58:47 +00:00
dey
2021-07-24 20:42:23 +00:00
bpl .8
2020-01-10 15:58:47 +00:00
.9 rts
*--------------------------------------
TERMX.IAC ldy #S.DCB.TTY.INBUF
lda (ZPDCBPtr),y
inc
sta (ZPDCBPtr),y
tay
jsr TERM.GetBufByte
sta (ZPDCBPtr),y
cpy #S.DCB.TTY.INBUF+1 CMD ?
beq TERMX.ED.8 yes, wait for additional bytes
ldy #S.DCB.TTY.INBUF+1
lda (ZPDCBPtr),y get back CMD
cmp #SB
bne .1 not a SB/SE....stop with CMD/SUBCMD
jsr TERM.GetBufByte
cmp #SE
bne TERMX.ED.8 wait for ending SE....keep bIACMode
bra TERMX.IAC.SB
ldy #S.DCB.TTY.INBUF+1
lda (ZPDCBPtr),y get back CMD
.1 cmp #IAC
beq TERMX.IAC.SB.9
sec
sbc #WILL
bcc TERMX.IAC.SB.9
asl
tax
ldy #S.DCB.TTY.INBUF+2
lda (ZPDCBPtr),y Get SUBCMD in A
jmp (.8,x)
.8 .DA TERMX.IAC.RWILL
.DA TERMX.IAC.RWONT
.DA TERMX.IAC.RDO
.DA TERMX.IAC.RDONT
*--------------------------------------
TERMX.IAC.SB ldy #S.DCB.TTY.INBUF+2
lda (ZPDCBPtr),y Get SUBCMD in A
cmp #TN.O.TTYPE
bne TERMX.IAC.SB.9
iny
2020-01-11 17:13:27 +00:00
lda (ZPDCBPtr),y
cmp #SB.SEND
bne TERMX.IAC.SB.9
ldx #0
2020-01-11 17:13:27 +00:00
.1 lda SB.IS.TTYPE,x
jsr TERMX.COUT
inx
cpx #SB.IS.TTYPE.LEN
bne .1
TERMX.IAC.SB.9 jmp TERMX.SETM.0
*--------------------------------------
TERMX.IAC.RWILL cmp #TN.O.ECHO
* beq TERMX.IAC.SDO
beq TERMX.IAC.SB.9
ldx #TERMX.IAC1.L-1
.1 cmp TERMX.IAC1,x
beq TERMX.IAC.SB.9
dex
bpl .1
.8 bra TERMX.IAC.SDONT
*--------------------------------------
TERMX.IAC.RWONT ldx #TERMX.IAC1.L-1
.1 cmp TERMX.IAC1,x
beq TERMX.IAC.SDO
dex
bpl .1
jmp TERMX.SETM.0
*--------------------------------------
TERMX.IAC.RDO cmp #TN.O.ECHO
beq TERMX.IAC.SWONT
ldx #TERMX.IAC1.L-1
.1 cmp TERMX.IAC1,x
beq TERMX.IAC.SWILL
dex
bpl .1
bra TERMX.IAC.SWONT
*--------------------------------------
TERMX.IAC.RDONT ldx #TERMX.IAC1.L-1
.1 cmp TERMX.IAC1,x
beq TERMX.IAC.SWILL
dex
bpl .1
jmp TERMX.SETM.0
*--------------------------------------
TERMX.IAC.SWILL ldx #WILL
.HS 2C BIT ABS
*--------------------------------------
TERMX.IAC.SWONT ldx #WONT
.HS 2C BIT ABS
*--------------------------------------
TERMX.IAC.SDO ldx #DO
.HS 2C BIT ABS
*--------------------------------------
TERMX.IAC.SDONT ldx #DONT
*--------------------------------------
pha push CMD
phx
lda #IAC
jsr TERMX.COUT
pla
jsr TERMX.COUT
pla
jsr TERMX.COUT
jmp TERMX.SETM.0
*--------------------------------------
TERMX.CheckOA lda OPENAPPLE
php
bpl .5 Restore Title
ldy #S.DCB.TTY.bTITLE
lda (ZPDCBPtr),y
bmi .8
inc
2020-01-11 17:13:27 +00:00
sta (ZPDCBPtr),y
2020-02-06 16:23:59 +00:00
jsr TERM.GetDevName
2021-07-24 20:42:23 +00:00
2020-01-11 17:13:27 +00:00
ldx #0
2020-02-06 16:23:59 +00:00
jsr TERMX.SETUP.L1X.SCR
2020-01-11 17:13:27 +00:00
ldy #0
2021-05-04 17:31:21 +00:00
.1 jsr SHARED.TXTPTRgn
2020-01-11 17:13:27 +00:00
beq .3
cmp #$40
bcc .2
2020-01-11 17:13:27 +00:00
cmp #$60
bcs .2
2020-01-11 17:13:27 +00:00
and #$1F remap UPPERCASE
.2 phy
jsr SetCharAtY.SCR
ply
iny
bne .1
.3 lda #C.SPACE
.4 phy
jsr SetCharAtY.SCR
ply
iny
cpy #80
bne .4
2021-07-24 20:42:23 +00:00
plp
rts
.5 ldy #S.DCB.TTY.bTITLE
2020-01-11 17:13:27 +00:00
lda (ZPDCBPtr),y
bpl .8
2021-05-04 17:31:21 +00:00
dec
2020-01-11 17:13:27 +00:00
sta (ZPDCBPtr),y
ldx #0
jsr TERMX.SCR0CPY
.8 plp
rts
2020-01-11 17:13:27 +00:00
*--------------------------------------
2020-02-06 16:23:59 +00:00
TERMX.SCRCPY ldx #23
2020-01-10 15:58:47 +00:00
TERMX.SCR0CPY lda ZPDCBPtr
2020-01-10 15:58:47 +00:00
clc
2021-04-29 11:56:34 +00:00
adc BUF.BL,x
2020-01-10 15:58:47 +00:00
sta .80+1
2020-01-11 17:13:27 +00:00
2020-05-04 20:46:21 +00:00
lda ZPDCBPtr+1
2021-04-29 11:56:34 +00:00
adc BUF.BH,x
2020-01-10 15:58:47 +00:00
sta .80+2
2020-02-06 16:23:59 +00:00
jsr TERMX.SETUP.L1X.SCR
2020-01-10 15:58:47 +00:00
phx
ldx #78
sta SETPAGE2
ldy #39
jsr .8
ldx #79
sta CLRPAGE2
ldy #39
jsr .8
plx
dex
bpl TERMX.SCR0CPY
2020-01-10 15:58:47 +00:00
rts
2021-07-24 20:42:23 +00:00
2020-01-10 15:58:47 +00:00
.8 ldy #39
2020-01-11 17:13:27 +00:00
2020-01-10 15:58:47 +00:00
.80 lda $ffff,x SELF MODIFIED
2020-01-11 17:13:27 +00:00
2021-03-15 20:45:22 +00:00
sta (ZPScrBL1),y
2020-01-10 15:58:47 +00:00
dex
dex
dey
bpl .80
2020-01-11 17:13:27 +00:00
2020-01-10 15:58:47 +00:00
rts
*--------------------------------------
2020-02-06 16:23:59 +00:00
TERMX.COPY.XtoL1
2020-05-04 20:46:21 +00:00
lda ZPDCBPtr
2020-01-10 15:58:47 +00:00
clc
2021-04-29 11:56:34 +00:00
adc BUF.BL,x
2021-03-15 20:45:22 +00:00
sta ZPBufBL2
2020-01-11 17:13:27 +00:00
2020-05-04 20:46:21 +00:00
lda ZPDCBPtr+1
2021-04-29 11:56:34 +00:00
adc BUF.BH,x
2021-03-15 20:45:22 +00:00
sta ZPBufBL2+1
2020-01-10 15:58:47 +00:00
ldy #79
2021-03-15 20:45:22 +00:00
.1 lda (ZPBufBL2),y
2021-07-24 20:42:23 +00:00
sta (ZPBufBL1),y
2020-01-10 15:58:47 +00:00
dey
bpl .1
bit bActive
bpl .8
2021-04-29 11:56:34 +00:00
lda SCR.BL,x
2021-03-15 20:45:22 +00:00
sta ZPScrBL2
2021-04-29 11:56:34 +00:00
lda SCR.BH,x
2021-03-15 20:45:22 +00:00
sta ZPScrBL2+1
2020-07-05 08:58:35 +00:00
2020-01-10 15:58:47 +00:00
sta SETPAGE2
jsr .6
2020-01-10 15:58:47 +00:00
sta CLRPAGE2
.6 ldy #39
2021-03-15 20:45:22 +00:00
.7 lda (ZPScrBL2),y
2021-07-24 20:42:23 +00:00
sta (ZPScrBL1),y
2020-01-10 15:58:47 +00:00
dey
bpl .7
.8 rts
*--------------------------------------
SetCharAtCurPos pha
ldy #S.DCB.TTY.CV
lda (ZPDCBPtr),y
tax
ldy #S.DCB.TTY.CH
lda (ZPDCBPtr),y
tay
pla
cpy #80
bcs SetCharAtYX.8
*--------------------------------------
SetCharAtYX sty ZPTmpX
cmp #$40
2020-01-10 15:58:47 +00:00
bcc .1
2020-01-10 15:58:47 +00:00
cmp #$60
bcs .1
2020-01-10 15:58:47 +00:00
and #$1F remap UPPERCASE
.1 ldy #S.DCB.TTY.bNORMAL
2020-01-10 15:58:47 +00:00
ora (ZPDCBPtr),y
sta ZPTmpChar
ldy #S.DCB.TTY.bG0G1 Select Active Font
lda (ZPDCBPtr),y
clc
bpl .2
2020-01-10 15:58:47 +00:00
sec
.2 lda #$80
bcc .21
2020-01-10 15:58:47 +00:00
lsr
.21 iny #S.DCB.TTY.bG0G1ALT
and (ZPDCBPtr),y
beq .3 not Graphic mode
lda ZPTmpChar
cmp #$E0 Normal lowercase ?
bcc .3
tay
2021-07-24 20:42:23 +00:00
lda REMAP.E0.FF-$E0,y
2020-01-10 15:58:47 +00:00
sta ZPTmpChar
2020-02-06 16:23:59 +00:00
.3 jsr TERMX.SETUP.L1X
ldy ZPTmpX
2020-01-10 15:58:47 +00:00
lda ZPTmpChar
2021-07-24 20:42:23 +00:00
sta (ZPBufBL1),y
2020-01-10 15:58:47 +00:00
bit bActive
bmi SetCharAtY.SCR1
2023-04-29 11:47:59 +00:00
rts
2020-01-10 15:58:47 +00:00
SetCharAtY.SCR sty ZPTmpX
SetCharAtY.SCR1 lsr ZPTmpX
ldy ZPTmpX
2020-07-04 19:00:47 +00:00
2020-01-10 15:58:47 +00:00
bcs .2
2020-01-10 15:58:47 +00:00
sta SETPAGE2
2021-03-15 20:45:22 +00:00
sta (ZPScrBL1),y
sta CLRPAGE2
2020-07-06 12:03:05 +00:00
rts
2020-07-04 19:00:47 +00:00
.2 sta (ZPScrBL1),y
2020-01-10 15:58:47 +00:00
SetCharAtYX.8 rts
*--------------------------------------
GetCharAtCurPos ldy #S.DCB.TTY.CV
lda (ZPDCBPtr),y
cmp #24
bcs .9 Out of screen
tax
2020-02-06 16:23:59 +00:00
jsr TERMX.SETUP.L1X
2020-01-10 15:58:47 +00:00
ldy #S.DCB.TTY.CH
lda (ZPDCBPtr),y
cmp #80
bcs .9 Out of screen
tay
2021-07-24 20:42:23 +00:00
lda (ZPBufBL1),y
2020-01-10 15:58:47 +00:00
cmp #$20
bcs .8
2021-07-24 20:42:23 +00:00
* clc
2020-01-10 15:58:47 +00:00
adc #40 remap $00-$1F uppercase
.8 clc
.9 rts
*--------------------------------------
TERMX.SETUP.L1X lda ZPDCBPtr
clc
adc BUF.BL,x
sta ZPBufBL1
lda ZPDCBPtr+1
adc BUF.BH,x
sta ZPBufBL1+1
bit bActive
bpl TERMX.SETUP.L1X.8
TERMX.SETUP.L1X.SCR
lda SCR.BL,x
sta ZPScrBL1
lda SCR.BH,x
sta ZPScrBL1+1
TERMX.SETUP.L1X.8
rts
*--------------------------------------
KeyMap .DA #11,#10,#21,#8 esc[A,esc[B,esc[C,esc[D
KeyMap.Cnt .EQ *-KeyMap
*--------------------------------------
CtrlChars .DA #C.ENQ,#C.BS,#C.LF,#C.FF,#C.CR,#C.SO,#C.SI,#C.ESC
2019-07-12 14:51:57 +00:00
CtrlChars.Cnt .EQ *-CtrlChars
*--------------------------------------
EscCodes .AZ "78DEMc[()"
2019-07-12 14:51:57 +00:00
EscCodes.Cnt .EQ *-EscCodes
EscModes .DA #0,#0,#0,#0,#0,#0,#S.DCB.TTY.M.CSI,#S.DCB.TTY.M.G0,#S.DCB.TTY.M.G1
2019-07-12 14:51:57 +00:00
*--------------------------------------
CsiCodes .AS "ABCDHJKfhlmnr"
CsiCodes.Cnt .EQ *-CsiCodes
2019-07-12 14:51:57 +00:00
*--------------------------------------
* Enabled both sides
*--------------------------------------
TERMX.IAC1 .DA #TN.O.BINARY,#TN.O.SGA,#TN.O.TTYPE,#TN.O.NAWS
TERMX.IAC1.L .EQ *-TERMX.IAC1
*--------------------------------------
* Disabled both sides
*--------------------------------------
*TERMX.IAC0 .DA #TN.O.TSPEED,#TN.O.LINEMODE,#TN.O.STATUS
* .DA #TN.O.NEWENV,#TN.O.XDISPLOC
* .DA #TN.O.LFLOW,#TN.O.AUTH
*TERMX.IAC0.L .EQ *-TERMX.IAC0
*--------------------------------------
* Enabled Local, Disabled remote
*--------------------------------------
*TERMX.IAC10 .DA #TN.O.ECHO
*TERMX.IAC10.L .EQ *-TERMX.IAC10
2020-05-06 15:28:09 +00:00
*--------------------------------------
2020-08-18 19:56:50 +00:00
SB.IS.TTYPE .DA #IAC,#SB,#TN.O.TTYPE,#SB.IS
TERMX.ENQ.REP .AS "vt100"
TERMX.ENQ.REP.L .EQ *-TERMX.ENQ.REP
2019-07-12 14:51:57 +00:00
.DA #IAC,#SE
SB.IS.TTYPE.LEN .EQ *-SB.IS.TTYPE
2020-08-18 19:56:50 +00:00
SB.IS.NAWS .DA #IAC,#SB,#TN.O.NAWS,#SB.IS
2019-07-12 14:51:57 +00:00
.DA 80
.DA 24
.DA #IAC,#SE
SB.IS.NAWS.LEN .EQ *-SB.IS.NAWS
*--------------------------------------
2020-01-10 15:58:47 +00:00
RESET.VALUES .DA #0 MODE
.DA #0 CH
.DA #0 CH.SAVE
.DA #0 CV
.DA #0 CV.SAVE
2020-01-10 15:58:47 +00:00
.DA #0 SCROLLTOP
.DA #23 SCROLLBOT
.DA #$80 bCURON
2020-01-10 15:58:47 +00:00
.DA #0 bTITLE
.DA #$80 bNORMAL
.DA #$80 bDECAWM
.DA #$80 bLNM
2020-01-10 15:58:47 +00:00
.DA #0 bG0G1
.DA #0 bG0G1ALT
2021-04-29 11:56:34 +00:00
.DA #S.DCB.TTY.OUTBUF OUTTAIL
.DA #S.DCB.TTY.OUTBUF OUTHEAD
2021-07-24 20:42:23 +00:00
.DA #S.DCB.TTY.INBUF INBUFFER
2019-07-24 15:17:08 +00:00
*--------------------------------------
TERMX.DIB .DA #S.DIB.S.WRITE+S.DIB.S.READ
2019-07-24 15:17:08 +00:00
.DA #0,#0,#0
.PS "A2osX VT100 term"
2019-07-24 15:17:08 +00:00
.DA #S.DIB.T.CHAR
.DA #0
.DA K.VER
*--------------------------------------
* ` a b c d e f g h i j k l m n o
REMAP.E0.FF .HS 5b.41.42.43.44.45.46.47.48.49.20.5e.5a.5a.4e.4f
* p q r s t u v w x y z { | } ~ DEL
.HS 50.5c.52.53.54.55.56.57.5a.59.5a.5b.5c.5d.5e.5f
2019-07-24 15:17:08 +00:00
*--------------------------------------
2021-04-29 11:56:34 +00:00
SCR.BL .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.BH .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
2019-07-24 15:17:08 +00:00
*--------------------------------------
2021-04-29 11:56:34 +00:00
BUF.BL .DA #S.DCB.TTY+0
2020-05-04 20:46:21 +00:00
.DA #S.DCB.TTY+80
.DA #S.DCB.TTY+160
.DA #S.DCB.TTY+240
.DA #S.DCB.TTY+320
.DA #S.DCB.TTY+400
.DA #S.DCB.TTY+480
.DA #S.DCB.TTY+560
.DA #S.DCB.TTY+640
.DA #S.DCB.TTY+720
.DA #S.DCB.TTY+800
.DA #S.DCB.TTY+880
.DA #S.DCB.TTY+960
.DA #S.DCB.TTY+1040
.DA #S.DCB.TTY+1120
.DA #S.DCB.TTY+1200
.DA #S.DCB.TTY+1280
.DA #S.DCB.TTY+1360
.DA #S.DCB.TTY+1440
.DA #S.DCB.TTY+1520
.DA #S.DCB.TTY+1600
.DA #S.DCB.TTY+1680
.DA #S.DCB.TTY+1760
.DA #S.DCB.TTY+1840
2021-04-29 11:56:34 +00:00
BUF.BH .DA /S.DCB.TTY+0
2020-05-04 20:46:21 +00:00
.DA /S.DCB.TTY+80
.DA /S.DCB.TTY+160
.DA /S.DCB.TTY+240
.DA /S.DCB.TTY+320
.DA /S.DCB.TTY+400
.DA /S.DCB.TTY+480
.DA /S.DCB.TTY+560
.DA /S.DCB.TTY+640
.DA /S.DCB.TTY+720
.DA /S.DCB.TTY+800
.DA /S.DCB.TTY+880
.DA /S.DCB.TTY+960
.DA /S.DCB.TTY+1040
.DA /S.DCB.TTY+1120
.DA /S.DCB.TTY+1200
.DA /S.DCB.TTY+1280
.DA /S.DCB.TTY+1360
.DA /S.DCB.TTY+1440
.DA /S.DCB.TTY+1520
.DA /S.DCB.TTY+1600
.DA /S.DCB.TTY+1680
.DA /S.DCB.TTY+1760
.DA /S.DCB.TTY+1840
2020-01-10 15:58:47 +00:00
*--------------------------------------
2018-12-11 16:41:25 +00:00
MAN
2020-12-15 13:23:22 +00:00
SAVE usr/src/sys/kernel.s.termx
LOAD usr/src/sys/kernel.s
2018-12-11 16:41:25 +00:00
ASM