A2osX/DRV/CONSOLE.DRV.S.txt

1153 lines
19 KiB
Plaintext
Raw Normal View History

2017-12-22 21:24:30 +00:00
NEW
PREFIX /A2OSX.BUILD
2017-12-22 21:24:30 +00:00
AUTO 4,1
2015-03-14 21:48:35 +00:00
.LIST OFF
.OP 65C02
.OR $2000
2018-07-19 15:33:55 +00:00
.TF DRV/CONSOLE.DRV
2015-03-14 21:48:35 +00:00
*--------------------------------------
2018-07-19 15:33:55 +00:00
.INB INC/MACROS.I
.INB INC/A2OSX.I
2018-10-02 15:52:30 +00:00
.INB INC/MLI.E.I
2018-07-19 15:33:55 +00:00
.INB INC/IO.I
.INB INC/NET.TELNET.I
2015-03-14 21:48:35 +00:00
*--------------------------------------
2015-06-03 18:30:57 +00:00
* File Header (16 Bytes)
2015-03-14 21:48:35 +00:00
*--------------------------------------
2015-06-03 18:30:57 +00:00
CS.START cld
jmp Dev.Detect cld,jmp abs=DRV
.DA #$61 6502,Level 1 (65c02)
.DA #1 DRV Layout Version 1
.DA 0
2018-06-29 14:16:40 +00:00
.DA CS.END-CS.START Code Length To Relocate
2018-06-28 15:26:34 +00:00
.DA 0
.DA 0
.DA 0
2015-03-14 21:48:35 +00:00
*--------------------------------------
2015-06-03 18:30:57 +00:00
* Relocation Table
2015-03-14 21:48:35 +00:00
*--------------------------------------
2015-06-03 18:30:57 +00:00
L.MSG.DETECT .DA MSG.DETECT
2018-07-17 15:45:59 +00:00
L.DRV.CS.START .DA DRV.CS.START
L.FD.DEV .DA FD.DEV
2015-06-03 18:30:57 +00:00
.DA 0 End Of Reloc Table
*--------------------------------------
Dev.Detect >LDYA L.MSG.DETECT
2018-08-22 15:23:27 +00:00
>SYSCALL puts
2018-07-16 15:29:18 +00:00
2018-07-17 15:45:59 +00:00
>PUSHWI DRV.END
>PUSHWI DRV.CS.END
>PUSHWI DRV.CS.START
>LDYA L.DRV.CS.START
2018-06-28 15:26:34 +00:00
>SYSCALL InsDrv
bcs .9
2018-07-17 15:45:59 +00:00
>STYA FD.DEV+S.FD.DEV.DRVPTR
2018-06-28 15:26:34 +00:00
2018-07-17 15:45:59 +00:00
>LDYA L.FD.DEV
>SYSCALL MKDEV
2018-06-28 15:26:34 +00:00
.9 rts
2018-10-08 05:55:28 +00:00
*--------------------------------------
2015-06-03 18:30:57 +00:00
CS.END
2018-08-22 15:23:27 +00:00
MSG.DETECT .AZ "Apple IIe/IIc 80 Col Driver."
2018-07-17 15:45:59 +00:00
FD.DEV .DA #S.FD.T.CDEV
2018-06-25 15:34:03 +00:00
.DA #0 HANDLER
.DA #0 BUSID
.DA #0 DEVID
2018-07-13 14:38:24 +00:00
.DA 0 BUSPTR
2018-06-29 14:16:40 +00:00
.BS 2 DRVPTR
.AZ "CON" NAME
2018-06-25 15:34:03 +00:00
.HS 00000000
2015-06-03 18:30:57 +00:00
*--------------------------------------
* Driver Code
*--------------------------------------
2018-06-29 14:16:40 +00:00
CURSOR.BLINK.SPEED .EQ 2
ESCSEQ.MAXLEN .EQ 16
2018-09-09 08:11:42 +00:00
OUTBUF.MAXLEN .EQ 32
IACBUF.MAXLEN .EQ 32
2018-06-29 14:16:40 +00:00
*--------------------------------------
ZPBaseL1 .EQ ZPDRV
ZPBaseL2 .EQ ZPDRV+2
ZPTmpWord .EQ ZPDRV+4
ZPTmpBool .EQ ZPDRV+6
2018-09-09 08:11:42 +00:00
ZPIOCTL .EQ ZPDRV+8
ZPBufPtr .EQ ZPDRV+10
ZPCount .EQ ZPDRV+12
2018-06-29 14:16:40 +00:00
*--------------------------------------
2018-06-25 15:34:03 +00:00
DRV.CS.START cld
jmp (.1,x)
.1 .DA STATUS
.DA A2osX.BADCALL
.DA A2osX.BADCALL
.DA A2osX.BADCALL
2017-01-12 17:43:45 +00:00
.DA CONTROL
.DA A2osX.BADCALL
2017-01-12 17:43:45 +00:00
.DA OPEN
2015-03-14 21:48:35 +00:00
.DA CLOSE
2017-01-12 17:43:45 +00:00
.DA READ
.DA WRITE
2018-07-05 15:39:36 +00:00
.DA A2osX.BADCALL IRQ
2016-01-04 07:22:28 +00:00
*--------------------------------------
J.CtrlChars .DA ENQ 5
.DA BS 8
2016-01-04 07:22:28 +00:00
.DA LF 10
.DA CLRSCR 12
2016-01-04 07:22:28 +00:00
.DA CROUT 13
.DA FS 21
2016-01-04 07:22:28 +00:00
.DA ESC 27
*--------------------------------------
J.EscCodes .DA Scroll.Dn M
.DA Scroll.Up D
2016-01-04 07:22:28 +00:00
.DA RESET c
*--------------------------------------
2018-09-13 15:29:02 +00:00
J.EscSequences .DA Esc.LWEnable h
.DA Esc.LWDisable l
.DA Esc.DispAttr m
2016-01-04 07:22:28 +00:00
.DA Esc.Query n
.DA Esc.Scroll r
2016-01-04 07:22:28 +00:00
.DA Esc.Erase K
.DA Esc.Home H
2018-09-09 08:11:42 +00:00
*--------------------------------------
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
2015-03-14 21:48:35 +00:00
*--------------------------------------
2018-07-19 15:33:55 +00:00
STATUS >STYA ZPIOCTL
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 DIB,x
.3 sta $ffff,x SELF MODIFIED
dex
bpl .2
2017-01-12 17:43:45 +00:00
clc
rts
2018-07-19 15:33:55 +00:00
.9 lda #MLI.E.BADCTL
sec
rts
2017-01-12 17:43:45 +00:00
*--------------------------------------
2018-06-20 15:02:09 +00:00
OPEN sta A2osX.SCRNDEVS DEV.ID in A
2018-07-19 15:33:55 +00:00
lda #S.DIB.S.OPENED
tsb DIB+S.DIB.S
2016-01-04 07:22:28 +00:00
stz OutPtr
stz OutCnt
jsr RESET
2017-01-12 17:43:45 +00:00
*--------------------------------------
CONTROL sta SETTEXT
sta SETALTCHAR
sta SET80DISP
sta CLR80STORE
2018-06-20 15:02:09 +00:00
sta CLRPAGE2
lda #1
2017-01-12 17:43:45 +00:00
sta A2osX.ASCREEN
2015-03-14 21:48:35 +00:00
clc
rts
*--------------------------------------
2018-07-19 15:33:55 +00:00
CLOSE lda #S.DIB.S.OPENED
trb DIB+S.DIB.S
2018-07-20 05:43:11 +00:00
stz A2osX.SCRNDEVS
2017-01-12 17:43:45 +00:00
clc
rts
*--------------------------------------
2018-07-18 15:30:42 +00:00
READ >STYA ZPIOCTL
lda A2osX.ASCREEN
2018-06-20 15:02:09 +00:00
cmp #1 is CON active?
2018-09-09 08:11:42 +00:00
bne .6 no....go check flush...
lda A2osX.TIMER16
2015-03-14 21:48:35 +00:00
and #CURSOR.BLINK.SPEED
eor CURON
2015-10-19 20:35:00 +00:00
beq .1
2015-03-14 21:48:35 +00:00
jsr CURBLNK
2015-10-19 20:35:00 +00:00
.1 lda OPENAPPLE
2018-09-09 08:11:42 +00:00
bmi .6 Open apple key, not for us...
2016-03-13 21:52:57 +00:00
lda KBD
2018-09-09 08:11:42 +00:00
bpl .6
sta KBDSTROBE
and #$7F
ldx KeyRemapped
.2 cmp KeyRemapped,x
beq .3
dex
bne .2
2018-09-09 08:11:42 +00:00
jsr Char.Out.Put no remap....send char....
bra .7 and flush
.3 lda KeyRemappedIdx,x
2016-01-04 07:22:28 +00:00
tay
2015-03-14 21:48:35 +00:00
2016-01-04 07:22:28 +00:00
.4 lda KeyRemappedTbl,y
2018-09-09 08:11:42 +00:00
beq .7 end of remap....flush
jsr Char.Out.Put
2016-01-04 07:22:28 +00:00
iny
bra .4
2018-09-09 08:11:42 +00:00
.6 lda OutCnt
beq .9 no char in output buffer...
2018-07-18 15:30:42 +00:00
2018-09-09 08:11:42 +00:00
.7 stz .8+1
jsr GetPtrsAndCnt
2018-07-18 15:30:42 +00:00
2018-09-09 08:11:42 +00:00
.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
2018-07-18 15:30:42 +00:00
ldy #S.IOCTL.BYTECNT
sta (ZPIOCTL),y
iny
2018-09-09 08:11:42 +00:00
lda #0
2018-07-18 15:30:42 +00:00
sta (ZPIOCTL),y
clc
2016-01-04 07:22:28 +00:00
rts
2017-01-12 17:43:45 +00:00
.9 lda #0 Error = char
2015-03-14 21:48:35 +00:00
sec
rts
*--------------------------------------
2018-07-18 15:30:42 +00:00
WRITE >STYA ZPIOCTL
2018-09-09 08:11:42 +00:00
jsr GetPtrsAndCnt
2018-07-18 15:30:42 +00:00
.2 inc ZPCount
bne .3
inc ZPCount+1
2018-09-09 08:11:42 +00:00
beq .8
2018-07-18 15:30:42 +00:00
.3 lda (ZPBufPtr)
inc ZPBufPtr
bne .4
inc ZPBufPtr+1
.4 jsr WRITE.COUT
2018-09-09 08:11:42 +00:00
bra .2
.8 clc
rts
2018-07-18 15:30:42 +00:00
*--------------------------------------
WRITE.COUT bit bEscMode
2016-01-04 07:22:28 +00:00
bmi COUT.EscMode
bit bIACMode
2017-10-05 15:39:17 +00:00
bpl .10
2018-09-09 08:11:42 +00:00
jmp COUT.IAC
2017-10-05 15:39:17 +00:00
.10 cmp #IAC
bne .1
sta bIACMode
2017-10-05 15:39:17 +00:00
stz IACBuf
clc
rts
.1 pha
jsr CUROFF
pla
cmp #$7f
beq DEL
cmp #32
2016-01-04 07:22:28 +00:00
bcc COUT.Ctrl
ora INVFLG
2017-11-23 16:51:52 +00:00
jsr SetCharAtCurPos
*--------------------------------------
FS ldx CH
cpx #79
2018-09-13 15:29:02 +00:00
bne .1
bit LWFLG
bpl FS.8
2018-09-13 15:29:02 +00:00
stz CH
jmp LF
.1 inc CH
2017-10-05 15:39:17 +00:00
FS.8 clc
rts
2016-01-04 07:22:28 +00:00
*--------------------------------------
DEL ldx CH
beq .1
dec CH
bra .3
.1 ldy CV
2017-10-05 15:39:17 +00:00
beq FS.8
lda #79
sta CH
dec CV
.3 lda #$20
ora INVFLG
2017-11-23 16:51:52 +00:00
jmp SetCharAtCurPos
*--------------------------------------
COUT.Ctrl ldx #CtrlChars.Cnt-1
2016-01-04 07:22:28 +00:00
.1 cmp CtrlChars,x
beq .2
dex
bpl .1
2016-01-04 07:22:28 +00:00
clc
rts
2015-03-14 21:48:35 +00:00
.2 txa
asl
tax
jmp (J.CtrlChars,x)
2016-01-04 07:22:28 +00:00
*--------------------------------------
COUT.EscMode bit bEscModeCSI
bmi COUT.EscModeCSI
cmp #'['
bne .1
2016-01-04 07:22:28 +00:00
dec bEscModeCSI
stz EscSeq
clc
2015-03-14 21:48:35 +00:00
rts
2016-01-04 07:22:28 +00:00
.1 stz bEscMode
2015-03-14 21:48:35 +00:00
2018-09-13 15:29:02 +00:00
ldx #EscCodes.Cnt-1
2016-01-04 07:22:28 +00:00
2018-09-13 15:29:02 +00:00
.2 cmp EscCodes,x
2016-01-04 07:22:28 +00:00
beq .3
2018-09-13 15:29:02 +00:00
dex
2018-10-29 08:41:10 +00:00
bpl .2
2016-01-04 07:22:28 +00:00
clc
rts
2018-09-13 15:29:02 +00:00
.3 txa
asl
tax
jmp (J.EscCodes,x)
2016-01-04 07:22:28 +00:00
*--------------------------------------
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
2016-01-04 07:22:28 +00:00
ldx #0 EscSeq Ptr
.10 stz ZPTmpWord
stz ZPTmpWord+1
2016-01-04 07:22:28 +00:00
.1 inx
lda EscSeq,x
2017-11-23 16:51:52 +00:00
cmp #'0'
bcc .2
cmp #'9'+1
2016-01-04 07:22:28 +00:00
bcs .2
2016-01-04 07:22:28 +00:00
dec bEscSeqInNum
and #$0F
pha
lda ZPTmpWord
ldy ZPTmpWord+1
asl ZPTmpWord param=param*10
rol ZPTmpWord+1
asl ZPTmpWord
rol ZPTmpWord+1
2016-01-04 07:22:28 +00:00
clc
adc ZPTmpWord
sta ZPTmpWord
2016-01-04 07:22:28 +00:00
tya
adc ZPTmpWord+1
sta ZPTmpWord+1
asl ZPTmpWord
rol ZPTmpWord+1
2016-01-04 07:22:28 +00:00
pla
clc
adc ZPTmpWord
sta ZPTmpWord
2016-01-04 07:22:28 +00:00
bcc .1
inc ZPTmpWord+1
2016-01-04 07:22:28 +00:00
bra .1
2016-01-04 07:22:28 +00:00
.2 bit bEscSeqInNum
bpl .3
2016-01-04 07:22:28 +00:00
stz bEscSeqInNum
lda #255
ldy ZPTmpWord+1
2016-01-04 07:22:28 +00:00
bne .21
lda ZPTmpWord
2016-01-04 07:22:28 +00:00
.21 ldy EscSeqParamCnt
sta EscSeqParam,y
inc EscSeqParamCnt
2016-01-04 07:22:28 +00:00
.3 lda EscSeq,x
cmp #';'
beq .10
2016-01-04 07:22:28 +00:00
stz bEscModeCSI
stz bEscMode
2018-09-13 15:29:02 +00:00
ldx #EscSeqCmds.Cnt-1
2016-01-04 07:22:28 +00:00
2018-09-13 15:29:02 +00:00
.4 cmp EscSeqCmds,x
2016-01-04 07:22:28 +00:00
beq .5
2018-09-13 15:29:02 +00:00
dex
2016-01-04 07:22:28 +00:00
bne .4
2018-09-13 15:29:02 +00:00
clc
rts
2018-09-13 15:29:02 +00:00
.5 txa
asl
tax
jmp (J.EscSequences,x)
*--------------------------------------
2018-09-09 08:11:42 +00:00
COUT.IAC inc IACBuf
2017-10-05 15:39:17 +00:00
ldx IACBuf
2018-09-09 08:11:42 +00:00
cpx #IACBUF.MAXLEN
beq *
2017-10-05 15:39:17 +00:00
sta IACBuf,x
2018-09-09 08:11:42 +00:00
cpx #1 CMD ?
2017-10-05 15:39:17 +00:00
beq .8 yes, wait for additional bytes
2018-09-09 08:11:42 +00:00
ldy IACBuf+1 get back CMD
2017-10-05 15:39:17 +00:00
cpy #SB
2018-09-09 08:11:42 +00:00
bne .1 not a SB/SE....stop with CMD/SUBCMD
2017-10-05 15:39:17 +00:00
cmp #SE
bne .8 wait for ending SE....keep bIACMode
2018-09-09 08:11:42 +00:00
.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
*--------------------------------------
COUT.IAC.SB cmp #TELOPT.TTYPE
bne .9
2017-10-05 15:39:17 +00:00
lda IACBuf+3
cmp #SB.SEND
2018-09-09 08:11:42 +00:00
bne .9
2017-10-05 15:39:17 +00:00
ldy #0
.1 lda SB.IS.TTYPE,y
jsr Char.Out.Put
iny
cpy #SB.IS.TTYPE.LEN
bne .1
2018-09-09 08:11:42 +00:00
.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
2017-10-05 15:39:17 +00:00
2018-09-09 08:11:42 +00:00
.7 ldx #DO
.HS 2C BIT ABS
2018-09-03 15:24:54 +00:00
2018-09-09 08:11:42 +00:00
.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
2018-09-03 15:24:54 +00:00
lda #IAC
jsr Char.Out.Put
2018-09-09 08:11:42 +00:00
pla
2018-09-03 15:24:54 +00:00
jsr Char.Out.Put
2018-09-09 08:11:42 +00:00
pla
2018-09-03 15:24:54 +00:00
jsr Char.Out.Put
2018-09-09 08:11:42 +00:00
COUT.IAC.SendAX.9
stz bIACMode
2017-10-05 15:39:17 +00:00
2018-09-09 08:11:42 +00:00
clc
rts
*--------------------------------------
COUT.IAC.DONT
.9 stz bIACMode
clc
2017-10-05 15:39:17 +00:00
rts
*--------------------------------------
2018-10-29 08:41:10 +00:00
RESET stz CURON
stz bEscMode
stz bEscModeCSI
jsr CLRSCR
lda #23
sta SCROLLBOT
2018-09-13 15:29:02 +00:00
lda #0
sta SCROLLTOP
dec
sta LWFLG
*--------------------------------------
RESETATTR lda #$80
sta INVFLG
clc
2016-01-04 07:22:28 +00:00
rts
2015-03-14 21:48:35 +00:00
*--------------------------------------
2016-01-04 07:22:28 +00:00
ESC lda #$80
sta bEscMode
clc
rts
2015-06-03 18:30:57 +00:00
*--------------------------------------
ENQ ldy #0
.1 lda ENQ.String,y
beq .8
jsr Char.Out.Put
iny
bne .1
.8 clc
rts
*--------------------------------------
2016-01-04 07:22:28 +00:00
BS ldx CH
beq .1
dec CH
bra .3
2016-01-04 07:22:28 +00:00
.1 ldy CV
bne .2
clc
2015-03-14 21:48:35 +00:00
rts
2016-01-04 07:22:28 +00:00
.2 lda #79
sta CH
dec CV
.3 clc
rts
2015-06-03 18:30:57 +00:00
*--------------------------------------
ClrScr stz CH
stz CV
ldx #23
.1 jsr SETUP.L1X
lda #" "
sta SETWRITEAUX
ldy #39
2018-10-29 08:41:10 +00:00
.2 sta (ZPBaseL1),y
2015-03-14 21:48:35 +00:00
dey
bpl .2
sta CLRWRITEAUX
ldy #39
.3 sta (ZPBaseL1),y
2015-03-14 21:48:35 +00:00
dey
bpl .3
dex
bpl .1
clc
2015-03-14 21:48:35 +00:00
rts
*--------------------------------------
2016-01-04 07:22:28 +00:00
CROUT jsr CLREOL
stz CH
clc
rts
*--------------------------------------
2016-01-04 07:22:28 +00:00
LF ldy CV
2018-09-13 15:29:02 +00:00
cpy SCROLLBOT
2016-01-04 07:22:28 +00:00
beq SCROLL.UP
inc CV
clc
rts
*--------------------------------------
SCROLL.UP ldx SCROLLTOP
.1 jsr SETUP.L1X
inx
2017-11-23 16:51:52 +00:00
jsr COPY.XtoL1
2015-03-14 21:48:35 +00:00
cpx SCROLLBOT
bne .1
*--------------------------------------
2017-11-23 16:51:52 +00:00
CLREOL ldy CH Start
ldx #80 End
bra CLR
2017-11-23 16:51:52 +00:00
CLRLINE ldy #0 Start
ldx #80 End
bra CLR
2017-11-23 16:51:52 +00:00
CLRSOL ldy #0 Start
ldx CH End
2017-11-23 16:51:52 +00:00
CLR stx .2+1
ldx CV
.1 lda #" "
2017-11-23 16:51:52 +00:00
phy
jsr SetCharAtYX X unmodified
ply
iny
.2 cpy #$ff Self Modified
bne .1
2017-11-23 16:51:52 +00:00
clc
rts
2015-03-14 21:48:35 +00:00
*--------------------------------------
2016-01-04 07:22:28 +00:00
SCROLL.DN ldx SCROLLBOT
.1 jsr SETUP.L1X
2016-01-04 07:22:28 +00:00
dex
2017-11-23 16:51:52 +00:00
jsr COPY.XtoL1
2016-01-04 07:22:28 +00:00
cpx SCROLLTOP
bne .1
2016-01-04 07:22:28 +00:00
clc
rts
*--------------------------------------
2018-09-13 15:29:02 +00:00
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
*--------------------------------------
2016-01-04 07:22:28 +00:00
Esc.DispAttr ldx EscSeqParamCnt
beq .8
2016-01-04 07:22:28 +00:00
.1 lda EscSeqParam-1,x
bne .2
jsr RESETATTR
bra .7
2016-01-04 07:22:28 +00:00
.2 cmp #7
bne .8
stz INVFLG
2016-01-04 07:22:28 +00:00
.7 dex
bne .1
2016-01-04 07:22:28 +00:00
.8 clc
rts
*--------------------------------------
Esc.Query ldx EscSeqParamCnt
beq .8
dex
bne .8
lda EscSeqParam
cmp #6
bne .8
lda #$1B
jsr Char.Out.Put
2016-01-04 07:22:28 +00:00
lda #$5B
jsr Char.Out.Put
2016-01-04 07:22:28 +00:00
lda CV
inc
jsr Decimal.Out
2016-01-04 07:22:28 +00:00
lda #';'
jsr Char.Out.Put
2016-01-04 07:22:28 +00:00
lda CH
inc
jsr Decimal.Out
lda #'R'
jsr Char.Out.Put
2016-01-04 07:22:28 +00:00
.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
*--------------------------------------
2015-03-14 21:48:35 +00:00
CUROFF lda CURON
beq CUREXIT.RTS
2015-06-03 18:30:57 +00:00
CURBLNK lda A2osX.ASCREEN
2018-06-20 15:02:09 +00:00
cmp #1
2016-06-07 06:10:18 +00:00
beq CURBLNK1
2015-03-14 21:48:35 +00:00
lda CURON
bne CURBLNK.OFF
rts do not Light if screen is not active
CURBLNK1 lda CURON
bne CURBLNK.OFF
2017-11-23 16:51:52 +00:00
jsr GetCharAtCurPos
2015-03-14 21:48:35 +00:00
sta CURCHAR
and #$80
eor #" "
2015-03-14 21:48:35 +00:00
bra CUREXIT
2017-11-23 16:51:52 +00:00
CURBLNK.OFF lda CURCHAR
CUREXIT jsr SetCharAtCurPos
lda CURON
2015-03-14 21:48:35 +00:00
eor #CURSOR.BLINK.SPEED
sta CURON
CUREXIT.RTS rts
*--------------------------------------
2017-11-23 16:51:52 +00:00
SetCharAtCurPos ldy CH
ldx CV
*--------------------------------------
SetCharAtYX cmp #$40
bcc .10
cmp #$5F
bcs .10
and #$3F
2017-11-23 16:51:52 +00:00
.10 pha
jsr SETUP.L1X
tya
2015-03-14 21:48:35 +00:00
lsr
2017-11-23 16:51:52 +00:00
tay
2017-11-23 16:51:52 +00:00
pla
bcs .1
* php
* sei
sta SETWRITEAUX
.1 sta (ZPBaseL1),y
sta CLRWRITEAUX
* plp
2017-11-23 16:51:52 +00:00
rts
*.1 sta (ZPBaseL1),y
* rts
2015-03-14 21:48:35 +00:00
*--------------------------------------
2017-11-23 16:51:52 +00:00
GetCharAtCurPos ldy CH
ldx CV
*--------------------------------------
GetCharAtYX jsr SETUP.L1X
2015-03-14 21:48:35 +00:00
2017-11-23 16:51:52 +00:00
tya
lsr
tay
2017-11-23 16:51:52 +00:00
bcs .1
* php
* sei
sta SETREADAUX
.1 lda (ZPBaseL1),y
sta CLRREADAUX
* plp
2017-11-23 16:51:52 +00:00
rts
*.1 lda (ZPBaseL1),y
* rts
2015-03-14 21:48:35 +00:00
*--------------------------------------
SETUP.L1X lda BASEL,x
sta ZPBaseL1
lda BASEH,x
sta ZPBaseL1+1
rts
*--------------------------------------
2017-11-23 16:51:52 +00:00
COPY.XtoL1 lda BASEL,x
sta ZPBaseL2
lda BASEH,x
sta ZPBaseL2+1
2017-11-23 16:51:52 +00:00
* php
* sei
sta SETWRITEAUX
sta SETREADAUX
2017-11-23 16:51:52 +00:00
jsr .1
sta CLRWRITEAUX
sta CLRREADAUX
* plp
2017-11-23 16:51:52 +00:00
.1 ldy #39
.2 lda (ZPBaseL2),y
sta (ZPBaseL1),y
dey
bpl .2
rts
*--------------------------------------
Decimal.Out stz ZPTmpWord
stz ZPTmpWord+1
2016-01-04 07:22:28 +00:00
ldx #8
sed
2016-01-04 07:22:28 +00:00
tay
2016-01-04 07:22:28 +00:00
.1 tya
asl
tay
lda ZPTmpWord
adc ZPTmpWord
sta ZPTmpWord
lda ZPTmpWord+1
adc ZPTmpWord+1
sta ZPTmpWord+1
2016-01-04 07:22:28 +00:00
dex
bne .1
2016-01-04 07:22:28 +00:00
cld
stz ZPTmpBool No leading 0
2018-05-09 06:02:05 +00:00
lda ZPTmpWord+1
2016-01-04 07:22:28 +00:00
and #$0f
beq .2
dec ZPTmpBool non zero, print everything
2018-05-09 06:02:05 +00:00
jsr Char.Out.Put30
.2 lda ZPTmpWord
2016-01-04 07:22:28 +00:00
lsr
lsr
lsr
lsr
bne .3
bit ZPTmpBool Print this digit ?
2016-01-04 07:22:28 +00:00
bpl .4
2018-05-09 06:02:05 +00:00
.3 jsr Char.Out.Put30
.4 lda ZPTmpWord
2016-01-04 07:22:28 +00:00
and #$0f
*--------------------------------------
2018-05-09 06:02:05 +00:00
Char.Out.Put30 ora #$30
Char.Out.Put pha
2016-01-04 07:22:28 +00:00
lda OutPtr
clc
adc OutCnt
2018-09-09 08:11:42 +00:00
and #OUTBUF.MAXLEN-1
2016-01-04 07:22:28 +00:00
tax
pla
sta OutBuffer,x
inc OutCnt
rts
*--------------------------------------
2016-01-04 07:22:28 +00:00
Char.Out.Get sec
lda OutCnt
beq .9
dec OutCnt
ldx OutPtr
lda OutBuffer,x
pha
txa
inc
2018-09-09 08:11:42 +00:00
and #OUTBUF.MAXLEN-1
2016-01-04 07:22:28 +00:00
sta OutPtr
pla
clc
2016-01-04 07:22:28 +00:00
.9 rts
*--------------------------------------
2018-09-09 08:11:42 +00:00
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
*--------------------------------------
2015-06-03 18:30:57 +00:00
DRV.CS.END
2018-09-10 05:48:35 +00:00
*--------------------------------------
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
*--------------------------------------
CtrlChars .HS 05080A0C0D151B
CtrlChars.Cnt .EQ *-CtrlChars
*--------------------------------------
2018-09-13 15:29:02 +00:00
EscCodes .AZ "MDc"
EscCodes.Cnt .EQ *-EscCodes
EscSeqCmds .AS "hlmnrKH"
EscSeqCmds.Cnt .EQ *-EscSeqCmds
ENQ.String .AZ "XTERM"
*--------------------------------------
2015-12-13 21:29:51 +00:00
KeyRemapped .HS 05080A0B0D15 L,D,U,CR,R
KeyRemappedIdx .HS 050004080C0F
2016-01-04 07:22:28 +00:00
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
2018-09-10 05:48:35 +00:00
*--------------------------------------
2018-09-12 15:27:00 +00:00
TELOPS.STATUS
*--------------------------------------
2018-09-11 21:15:15 +00:00
WILLDO .DA #TELOPT.BINARY,#TELOPT.SGA
2018-09-09 08:11:42 +00:00
WILLDO.CNT .EQ *-WILLDO
2018-09-11 21:15:15 +00:00
WILLDONT .DA #TELOPT.TSPEED,#TELOPT.LINEMODE,#TELOPT.STATUS
2018-09-09 08:11:42 +00:00
WILLDONT.CNT .EQ *-WILLDONT
2018-09-13 15:29:02 +00:00
DOWILL .DA #TELOPT.BINARY,#TELOPT.SGA,#TELOPT.TTYPE,#TELOPT.NAWS
2018-09-09 08:11:42 +00:00
DOWILL.CNT .EQ *-DOWILL
2018-09-13 15:29:02 +00:00
DOWONT .DA #TELOPT.ECHO,#TELOPT.NEWENVIRON,#TELOPT.XDISPLOC,#TELOPT.TSPEED,#TELOPT.LFLOW
2018-09-09 08:11:42 +00:00
DOWONT.CNT .EQ *-DOWONT
2018-09-10 05:48:35 +00:00
SB.IS.TTYPE .DA #IAC,#SB,#TELOPT.TTYPE,#SB.IS
.AS 'XTERM'
.DA #IAC,#SE
SB.IS.TTYPE.LEN .EQ *-SB.IS.TTYPE
2018-09-12 15:27:00 +00:00
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
2018-09-09 08:11:42 +00:00
*--------------------------------------
CH .BS 1
CV .BS 1
2018-09-13 15:29:02 +00:00
LWFLG .BS 1
2018-09-09 08:11:42 +00:00
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
2018-09-09 08:11:42 +00:00
IACBuf .BS OUTBUF.MAXLEN+1
bEscMode .BS 1
bEscModeCSI .BS 1
2016-01-04 07:22:28 +00:00
bEscSeqInNum .BS 1
EscSeq .BS ESCSEQ.MAXLEN+1
EscSeqParamCnt .BS 1
EscSeqParam .BS 4
*--------------------------------------
2018-07-19 15:33:55 +00:00
DIB .DA #S.DIB.S.WRITE+S.DIB.S.READ
2017-01-12 17:43:45 +00:00
.DA #0,#0,#0
>PSTR "ANSI 80c Console"
2018-07-19 15:33:55 +00:00
.DA #S.DIB.T.CHAR
2017-01-12 17:43:45 +00:00
.DA #0
2018-08-25 11:23:59 +00:00
.DA K.VER
2015-03-14 21:48:35 +00:00
*--------------------------------------
2018-06-28 15:26:34 +00:00
DRV.END
2015-03-14 21:48:35 +00:00
MAN
SAVE /A2OSX.SRC/DRV/CONSOLE.DRV.S
2015-03-14 21:48:35 +00:00
ASM