Kernel 0.92

This commit is contained in:
Rémy GIBERT 2018-12-15 21:34:55 +01:00
parent e1011e4ae9
commit 5d04ad0cf2
7 changed files with 284 additions and 262 deletions

View File

@ -5,8 +5,10 @@ AUTO 4,1
ECHO *** A2osX INIT Script *** ECHO *** A2osX INIT Script ***
SET PS1='$PWD' SET PS1='$PWD'
# Main Screen # Main Screen
# INSDRV CONSOLE.DRV GETTY /DEV/TTY1 ${ROOT}SBIN/LOGIN &
# STARTPROC GETTY /DEV/CON ${ROOT}SBIN/LOGIN GETTY /DEV/TTY2 ${ROOT}SBIN/LOGIN &
GETTY /DEV/TTY3 ${ROOT}SBIN/LOGIN &
GETTY /DEV/TTY4 ${ROOT}SBIN/LOGIN &
# Serial Login # Serial Login
#INSDRV SSC.DRV 9600,N,8,1,X #INSDRV SSC.DRV 9600,N,8,1,X
#INSDRV SSC.I.DRV 9600,N,8,1,X #INSDRV SSC.I.DRV 9600,N,8,1,X

View File

@ -14,6 +14,7 @@ K.OF.MAX .EQ 32
K.FLT.MAX .EQ 4 K.FLT.MAX .EQ 4
K.EVT.MAX .EQ 4 K.EVT.MAX .EQ 4
K.SCR.MAX .EQ 6 K.SCR.MAX .EQ 6
K.TTY.MAX .EQ 4
*-------------------------------------- *--------------------------------------
ZPDRV .EQ $20 32 bytes ZPDRV .EQ $20 32 bytes
ZPLIB .EQ $40 32 bytes ZPLIB .EQ $40 32 bytes
@ -45,7 +46,7 @@ A2osX.SLEEP .EQ $BD10
* $BEE0->$BEEF : Public Variables * $BEE0->$BEEF : Public Variables
*-------------------------------------- *--------------------------------------
A2osX.ASCREEN .EQ $BEE0 Active Screen A2osX.ASCREEN .EQ $BEE0 Active Screen
A2osX.SCRNDEVS .EQ $BEE1 -> $BEE4 (5 screen devices) A2osX.SCRNDEVS .EQ $BEE1 -> $BEE5 (5 screen devices)
A2osX.CPUTYPE .EQ $BEE6 A2osX.CPUTYPE .EQ $BEE6
A2osX.CPUSPEED .EQ $BEE7 WORD, (->255.99 Mhz) A2osX.CPUSPEED .EQ $BEE7 WORD, (->255.99 Mhz)
@ -60,7 +61,7 @@ A2osX.RANDOM16 .EQ $BEEE WORD
*-------------------------------------- *--------------------------------------
A2osX.KCONFIG .EQ $BEF0 A2osX.KCONFIG .EQ $BEF0
A2osX.HZ .EQ $BEF0 5/6 for 50/60Hz A2osX.HZ .EQ $BEF0 5/6 for 50/60Hz
A2osX.TTYDEVS .EQ $BEF1 K.SCR.MAX = 6 ! A2osX.TTYDEVS .EQ $BEF1 K.TTY.MAX = 4 !
A2osX.F .EQ $BEF8 A2osX.F .EQ $BEF8
A2osX.F.CHROOT .EQ %10000000 ChRooting to /RAMx A2osX.F.CHROOT .EQ %10000000 ChRooting to /RAMx
A2osX.F.PMODE .EQ %01000000 Preemptive Mode A2osX.F.PMODE .EQ %01000000 Preemptive Mode

View File

@ -122,8 +122,11 @@ CS.RUN.LOOP0 >LDYA L.ENV.TERM
bra .1 no data sent, loop bra .1 no data sent, loop
.2 >PUSHWI K.VER .2 >LDA.G ArgDev
>PUSHBI 2 >SYSCALL ArgV
>PUSHYA
>PUSHWI K.VER
>PUSHBI 4
>LDYA L.MSG.GREETINGS >LDYA L.MSG.GREETINGS
>SYSCALL printf >SYSCALL printf
@ -320,7 +323,7 @@ OptionList >PSTR "Ee"
OptionVars .DA #bExitOnClose,#bExitOnClose OptionVars .DA #bExitOnClose,#bExitOnClose
MSG.USAGE .AS "Usage : GETTY <DEV> <PROGRAM>\r\n" MSG.USAGE .AS "Usage : GETTY <DEV> <PROGRAM>\r\n"
.AZ " -E : Exit on disconnect\r\n" .AZ " -E : Exit on disconnect\r\n"
MSG.GREETINGS .AZ "\r\nA2osX-GeTTY %d.%d\r\n" MSG.GREETINGS .AZ "\r\nA2osX-GeTTY %d.%d on %s\r\n"
*-------------------------------------- *--------------------------------------
TELNETOPTS .DA #IAC,#WILL,#TELOPT.BINARY TELNETOPTS .DA #IAC,#WILL,#TELOPT.BINARY
.DA #IAC,#WILL,#TELOPT.ECHO .DA #IAC,#WILL,#TELOPT.ECHO

View File

@ -155,6 +155,7 @@ S.DCB.TTY.CURCHAR .EQ 8
S.DCB.TTY.bINVERSE .EQ 9 S.DCB.TTY.bINVERSE .EQ 9
S.DCB.TTY.bLINEWRAP .EQ 10 S.DCB.TTY.bLINEWRAP .EQ 10
S.DCB.TTY.bTITLE .EQ 13
S.DCB.TTY.OUTTAIL .EQ 14 S.DCB.TTY.OUTTAIL .EQ 14
S.DCB.TTY.OUTHEAD .EQ 15 S.DCB.TTY.OUTHEAD .EQ 15
S.DCB.TTY.INBUFFER .EQ 16 S.DCB.TTY.INBUFFER .EQ 16

View File

@ -145,14 +145,14 @@ Kernel.Init3 sta SETALTZP
>LDYAI MSG.Prefix >LDYAI MSG.Prefix
>SYSCALL printf >SYSCALL printf
* lda KBD lda KBD
* bpl .1 bpl .1
* sta KBDSTROBE sta KBDSTROBE
* cmp #146 CTRL-R for Maintenance mode cmp #146 CTRL-R for Maintenance mode
* bne .1 bne .1
>PUSHBI 0 >PUSHBI 0
>LDYAI MSG.CTRLD >LDYAI MSG.CTRLR
>SYSCALL printf >SYSCALL printf
>PUSHBI 0 PS Flags >PUSHBI 0 PS Flags
@ -672,11 +672,9 @@ IrqMgrInit.TClock
sta $c080,y sta $c080,y
lda #$40 lda #$40
sta SET80STORE
sta CLRPAGE2 sta CLRPAGE2
sta $478,x sta $478,x
sta $7f8,x sta $7f8,x
sta CLR80STORE
lda #64 lda #64
sta CORE.TickPerSec sta CORE.TickPerSec
@ -1069,7 +1067,7 @@ MSG.IRQ.POLL .AZ " Polling Mode."
MSG.EVT .AZ "Event Manager..." MSG.EVT .AZ "Event Manager..."
MSG.TSK .AZ "Task Manager..." MSG.TSK .AZ "Task Manager..."
MSG.Prefix .AZ "Root:%s\r\n" MSG.Prefix .AZ "Root:%s\r\n"
MSG.CTRLD .AZ "Ctrl-D Pressed, entering Maintenance mode..." MSG.CTRLR .AZ "Ctrl-R Pressed, entering ROOT mode..."
MSG.ETCINIT .AZ "Executing ETC/INIT Script:%s " MSG.ETCINIT .AZ "Executing ETC/INIT Script:%s "
MSG.StartupErr .AZ "Failed : [$%h]\r\n" MSG.StartupErr .AZ "Failed : [$%h]\r\n"
MSG.Init3.OK .AZ "OK\r\nA2osX[Stage3]:Complete.\r\n" MSG.Init3.OK .AZ "OK\r\nA2osX[Stage3]:Complete.\r\n"

View File

@ -16,6 +16,11 @@ ZPScrBaseL1 .BS 2
ZPScrBaseL2 .BS 2 ZPScrBaseL2 .BS 2
ZPTmpWord .BS 2 ZPTmpWord .BS 2
ZPTmpBool .BS 1 ZPTmpBool .BS 1
*--------------------------------------
bActive .BS 1
bCsiInNum .BS 1
CsiParamCnt .BS 1
CsiParams .BS 4
.ED .ED
*-------------------------------------- *--------------------------------------
DRV.TERM cld DRV.TERM cld
@ -33,7 +38,7 @@ DRV.TERM cld
*-------------------------------------- *--------------------------------------
DRV.TERM.STATUS >STYA ZPIOCTL DRV.TERM.STATUS >STYA ZPIOCTL
jsr GetIOCTLBuf jsr DRV.TERM.GetIOCTLBuf
ldy #S.IOCTL.STATCODE ldy #S.IOCTL.STATCODE
lda (ZPIOCTL),y lda (ZPIOCTL),y
@ -81,7 +86,9 @@ DRV.TERM.OPEN ldx #0 DEV.ID in A
sec sec
rts rts
.2 pha DEV.ID in A .2 sta A2osX.SCRNDEVS,x
pha
jsr DRV.TERM.GetDCB jsr DRV.TERM.GetDCB
@ -146,7 +153,7 @@ DRV.TERM.CLOSE jsr DRV.TERM.GetDCB
*-------------------------------------- *--------------------------------------
DRV.TERM.READ >STYA ZPIOCTL DRV.TERM.READ >STYA ZPIOCTL
jsr GetIOCTLBufAndCnt jsr DRV.TERM.GetIOCTLBufAndCnt
jsr DRV.TERM.GetDCB jsr DRV.TERM.GetDCB
@ -160,7 +167,7 @@ DRV.TERM.READ >STYA ZPIOCTL
ldy #S.DCB.TTY.bCURON ldy #S.DCB.TTY.bCURON
eor (ZPDCBPtr),y eor (ZPDCBPtr),y
beq .1 beq .1
jsr CURBLNK jsr CURBLNK
.1 lda OPENAPPLE .1 lda OPENAPPLE
@ -171,7 +178,7 @@ DRV.TERM.READ >STYA ZPIOCTL
sta KBDSTROBE sta KBDSTROBE
and #$7F and #$7F
ldx KeyRemapped ldx KeyRemapped
.2 cmp KeyRemapped,x .2 cmp KeyRemapped,x
beq .3 beq .3
@ -181,23 +188,22 @@ DRV.TERM.READ >STYA ZPIOCTL
bra .7 and flush bra .7 and flush
.3 lda KeyRemappedIdx,x .3 lda KeyRemappedIdx,x
tay tax
.4 lda KeyRemappedTbl,y .4 lda KeyRemappedTbl,x
beq .7 end of remap....flush beq .7 end of remap....flush
jsr Char.Out.Put jsr Char.Out.Put
iny inx
bra .4 bra .4
.6 ldy #S.DCB.TTY.OUTHEAD .6 ldy #S.DCB.TTY.OUTTAIL
lda (ZPDCBPtr),y lda (ZPDCBPtr),y
dey OUTTAIL iny
cmp (ZPDCBPtr),y cmp (ZPDCBPtr),y OUTHEAD
beq .9 no char in output buffer... beq .9 no char in output buffer...
.7 stz .8+1 .7 stz .8+1
jsr GetIOCTLBufAndCnt
.70 inc ZPCount .70 inc ZPCount
bne .71 bne .71
@ -229,7 +235,7 @@ DRV.TERM.READ >STYA ZPIOCTL
*-------------------------------------- *--------------------------------------
DRV.TERM.WRITE >STYA ZPIOCTL DRV.TERM.WRITE >STYA ZPIOCTL
jsr GetIOCTLBufAndCnt jsr DRV.TERM.GetIOCTLBufAndCnt
jsr DRV.TERM.GetDCB jsr DRV.TERM.GetDCB
@ -240,7 +246,7 @@ DRV.TERM.WRITE >STYA ZPIOCTL
inc ZPCount+1 inc ZPCount+1
beq .8 beq .8
.2 ldy #S.DCB.TTY.MODE .2 ldy #S.DCB.TTY.MODE
lda (ZPDCBPtr),y lda (ZPDCBPtr),y
tax tax
@ -357,11 +363,12 @@ DRV.TERM.ESC lda (ZPBufPtr)
clc clc
rts rts
.1 lda #0 .1 lda #0 y = #S.DCB.TTY.MODE
sta (ZPDCBPtr),y sta (ZPDCBPtr),y
ldx #EscCodes.Cnt-1 ldx #EscCodes.Cnt-1
lda (ZPBufPtr)
.2 cmp EscCodes,x .2 cmp EscCodes,x
beq .3 beq .3
dex dex
@ -373,9 +380,9 @@ DRV.TERM.ESC lda (ZPBufPtr)
.3 txa .3 txa
asl asl
tax tax
jmp (J.EscCodes,x) jmp (.4,x)
*--------------------------------------
J.EscCodes .DA Scroll.Dn M .4 .DA Scroll.Dn M
.DA Scroll.Up D .DA Scroll.Up D
.DA RESET c .DA RESET c
*-------------------------------------- *--------------------------------------
@ -388,7 +395,7 @@ DRV.TERM.CSI ldy #S.DCB.TTY.INBUFFER
lda (ZPBufPtr) lda (ZPBufPtr)
sta (ZPDCBPtr),y sta (ZPDCBPtr),y
cmp #64 End of Seq ? cmp #64 End of Seq ?
bcs COUT.ExecEscSeq bcs DRV.TERM.CSI.Exec
cpy #S.DCB.TTY.INBUFFER.MAX-1 buffer full? cpy #S.DCB.TTY.INBUFFER.MAX-1 buffer full?
bne .8 bne .8
@ -400,12 +407,11 @@ DRV.TERM.CSI ldy #S.DCB.TTY.INBUFFER
.8 clc .8 clc
rts rts
COUT.ExecEscSeq stz EscSeqParamCnt DRV.TERM.CSI.Exec
stz bEscSeqInNum stz CsiParamCnt
stz bCsiInNum
ldy #S.DCB.TTY.INBUFFER EscSeq Ptr ldy #S.DCB.TTY.INBUFFER EscSeq Ptr
lda (ZPDCBPtr),y
tay
.10 stz ZPTmpWord .10 stz ZPTmpWord
stz ZPTmpWord+1 stz ZPTmpWord+1
@ -418,19 +424,23 @@ COUT.ExecEscSeq stz EscSeqParamCnt
cmp #'9'+1 cmp #'9'+1
bcs .2 bcs .2
dec bEscSeqInNum dec bCsiInNum
and #$0F and #$0F
pha pha
lda ZPTmpWord lda ZPTmpWord
ldy ZPTmpWord+1 ldx ZPTmpWord+1
asl ZPTmpWord param=param*10 asl ZPTmpWord param=param*10
rol ZPTmpWord+1 rol ZPTmpWord+1
asl ZPTmpWord asl ZPTmpWord
rol ZPTmpWord+1 rol ZPTmpWord+1
clc clc
adc ZPTmpWord adc ZPTmpWord
sta ZPTmpWord sta ZPTmpWord
tya txa
adc ZPTmpWord+1 adc ZPTmpWord+1
sta ZPTmpWord+1 sta ZPTmpWord+1
asl ZPTmpWord asl ZPTmpWord
@ -444,30 +454,34 @@ COUT.ExecEscSeq stz EscSeqParamCnt
inc ZPTmpWord+1 inc ZPTmpWord+1
bra .1 bra .1
.2 bit bEscSeqInNum .2 bit bCsiInNum
bpl .3 bpl .3
stz bEscSeqInNum stz bCsiInNum
lda #255 lda #255
ldx ZPTmpWord+1 ldx ZPTmpWord+1
bne .21 bne .21
lda ZPTmpWord lda ZPTmpWord
.21 ldx EscSeqParamCnt .21 ldx CsiParamCnt
sta EscSeqParam,x sta CsiParams,x
inc EscSeqParamCnt inc CsiParamCnt
.3 lda (ZPDCBPtr),y .3 lda (ZPDCBPtr),y
cmp #';' cmp #';'
beq .10 beq .10
pha
lda #0 lda #0
ldy #S.DCB.TTY.MODE ldy #S.DCB.TTY.MODE
sta (ZPDCBPtr),y sta (ZPDCBPtr),y
ldx #EscSeqCmds.Cnt-1 pla
ldx #CsiCodes.Cnt-1
.4 cmp EscSeqCmds,x .4 cmp CsiCodes,x
beq .5 beq .5
dex dex
bne .4 bne .4
@ -478,15 +492,178 @@ COUT.ExecEscSeq stz EscSeqParamCnt
.5 txa .5 txa
asl asl
tax tax
jmp (J.EscSequences,x) jmp (.8,x)
.8 .DA Csi.LWEnable h
.DA Csi.LWDisable l
.DA Csi.DispAttr m
.DA Csi.Query n
.DA Csi.Scroll r
.DA Csi.Erase K
.DA Csi.Home H
*-------------------------------------- *--------------------------------------
J.EscSequences .DA Esc.LWEnable h Csi.LWEnable sec
.DA Esc.LWDisable l .HS 90 BCC
.DA Esc.DispAttr m *--------------------------------------
.DA Esc.Query n Csi.LWDisable clc
.DA Esc.Scroll r ldx CsiParamCnt
.DA Esc.Erase K beq .8
.DA Esc.Home H dex
bne .8
lda CsiParams
eor #7
bne .8
ror
ldy #S.DCB.TTY.bLINEWRAP
sta (ZPDCBPtr),y
.8 clc
rts
*--------------------------------------
Csi.DispAttr ldx CsiParamCnt
beq .8
.1 lda CsiParams-1,x
bne .2
jsr RESETATTR
bra .7
.2 eor #7
bne .8
ldy #S.DCB.TTY.bINVERSE
sta (ZPDCBPtr),y
.7 dex
bne .1
.8 clc
rts
*--------------------------------------
Csi.Query ldx CsiParamCnt
beq .8
dex
bne .8
lda CsiParams
cmp #6
bne .8
lda #C.ESC
jsr Char.Out.Put
lda #'['
jsr Char.Out.Put
ldy #S.DCB.TTY.CV
lda (ZPDCBPtr),y
inc
jsr Decimal.Out
lda #';'
jsr Char.Out.Put
ldy #S.DCB.TTY.CH
lda (ZPDCBPtr),y
inc
jsr Decimal.Out
lda #'R'
jsr Char.Out.Put
.8 clc
rts
*--------------------------------------
Csi.Scroll ldy CsiParamCnt
bne .1
lda #0
ldx #23
bra .8
.1 cpy #2
bne .9
lda CsiParams
dec
ldx CsiParams+1
dex
.8 ldy #S.DCB.TTY.SCROLLTOP
sta (ZPDCBPtr),y
iny S.DCB.TTY.SCROLLBOT
txa
sta (ZPDCBPtr),y
.9 clc
rts
*--------------------------------------
Csi.Erase ldx CsiParamCnt
bne .1
jmp CLREOL
.1 lda CsiParams
cmp #1
bne .2
jmp CLRSOL
.2 cmp #2
bne .9
jmp CLRLINE
.9 clc
rts
*--------------------------------------
Csi.Home lda CsiParamCnt
bne .1
ldy #S.DCB.TTY.CH
sta (ZPDCBPtr),y
iny
sta (ZPDCBPtr),y
clc
rts
.1 ldx #1
lda CsiParams
beq .2
ldx #24
cmp #24
bcs .2
tax
.2 dex
txa
ldy #S.DCB.TTY.CV
sta (ZPDCBPtr),y
dec CsiParamCnt
beq .8
ldx #1
lda CsiParams+1
beq .3
ldx #80
cmp #80
bcs .3
tax
.3 dex
txa
ldy #S.DCB.TTY.CH
sta (ZPDCBPtr),y
.8 clc
rts
*-------------------------------------- *--------------------------------------
DRV.TERM.IAC ldy #S.DCB.TTY.INBUFFER DRV.TERM.IAC ldy #S.DCB.TTY.INBUFFER
lda (ZPDCBPtr),y lda (ZPDCBPtr),y
@ -534,7 +711,6 @@ J.COUT.IAC.CMDS .DA COUT.IAC.SB
.DA COUT.IAC.WONT .DA COUT.IAC.WONT
.DA COUT.IAC.DO .DA COUT.IAC.DO
.DA COUT.IAC.DONT .DA COUT.IAC.DONT
.DA 0 end of relocation
*-------------------------------------- *--------------------------------------
COUT.IAC.SB cmp #TELOPT.TTYPE COUT.IAC.SB cmp #TELOPT.TTYPE
bne .9 bne .9
@ -544,12 +720,12 @@ COUT.IAC.SB cmp #TELOPT.TTYPE
cmp #SB.SEND cmp #SB.SEND
bne .9 bne .9
ldy #0 ldx #0
.1 lda SB.IS.TTYPE,y .1 lda SB.IS.TTYPE,x
jsr Char.Out.Put jsr Char.Out.Put
iny inx
cpy #SB.IS.TTYPE.LEN cpx #SB.IS.TTYPE.LEN
bne .1 bne .1
.9 bra RESET.MODE .9 bra RESET.MODE
@ -648,6 +824,13 @@ RESET jsr RESET.MODE
lda #23 lda #23
sta (ZPDCBPtr),y sta (ZPDCBPtr),y
lda #S.DCB.TTY.OUTBUFFER
ldy #S.DCB.TTY.OUTTAIL
sta (ZPDCBPtr),y
iny
sta (ZPDCBPtr),y
jsr DRV.TERM.CLRSCR jsr DRV.TERM.CLRSCR
*-------------------------------------- *--------------------------------------
RESETATTR lda #$80 RESETATTR lda #$80
@ -664,12 +847,12 @@ J.CtrlChars .DA ENQ 5
.DA FS 21 .DA FS 21
.DA ESC 27 .DA ESC 27
*-------------------------------------- *--------------------------------------
ENQ ldy #0 ENQ ldx #0
.1 lda ENQ.String,y .1 lda ENQ.String,x
beq .8 beq .8
jsr Char.Out.Put jsr Char.Out.Put
iny inx
bne .1 bne .1
.8 clc .8 clc
@ -729,7 +912,7 @@ SCROLL.UP ldy #S.DCB.TTY.SCROLLTOP
tax tax
.1 jsr SETUP.L1X .1 jsr DRV.TERM.SETUP.L1X
inx inx
@ -782,7 +965,7 @@ SCROLL.DN ldy #S.DCB.TTY.SCROLLBOT
tax tax
.1 jsr SETUP.L1X .1 jsr DRV.TERM.SETUP.L1X
dex dex
@ -796,175 +979,13 @@ SCROLL.DN ldy #S.DCB.TTY.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
ldy #S.DCB.TTY.bLINEWRAP
sta (ZPDCBPtr),y
.8 clc
rts
*--------------------------------------
Esc.DispAttr ldx EscSeqParamCnt
beq .8
.1 lda EscSeqParam-1,x
bne .2
jsr RESETATTR
bra .7
.2 eor #7
bne .8
ldy #S.DCB.TTY.bINVERSE
sta (ZPDCBPtr),y
.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
ldy #S.DCB.TTY.CV
lda (ZPDCBPtr),y
inc
jsr Decimal.Out
lda #';'
jsr Char.Out.Put
ldy #S.DCB.TTY.CH
lda (ZPDCBPtr),y
inc
jsr Decimal.Out
lda #'R'
jsr Char.Out.Put
.8 clc
rts
*--------------------------------------
Esc.Scroll ldy EscSeqParamCnt
bne .1
lda #0
ldx #23
bra .8
.1 cpy #2
bne .9
lda EscSeqParam
dec
ldx EscSeqParam+1
dex
.8 ldy #S.DCB.TTY.SCROLLTOP
sta (ZPDCBPtr),y
iny S.DCB.TTY.SCROLLBOT
txa
sta (ZPDCBPtr),y
.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 lda EscSeqParamCnt
bne .1
ldy #S.DCB.TTY.CH
sta (ZPDCBPtr),y
iny
sta (ZPDCBPtr),y
clc
rts
.1 ldx #1
lda EscSeqParam
beq .2
ldx #24
cmp #24
bcs .2
tax
.2 dex
txa
ldy #S.DCB.TTY.CV
sta (ZPDCBPtr),y
dec EscSeqParamCnt
beq .8
ldx #1
lda EscSeqParam+1
beq .3
ldx #80
cmp #80
bcs .3
tax
.3 dex
txa
ldy #S.DCB.TTY.CH
sta (ZPDCBPtr),y
.8 clc
rts
*--------------------------------------
CUROFF ldy #S.DCB.TTY.bCURON CUROFF ldy #S.DCB.TTY.bCURON
lda (ZPDCBPtr),y lda (ZPDCBPtr),y
beq CUREXIT.RTS beq CUREXIT.RTS
CURBLNK bit bActive CURBLNK bit bActive
bpl CURBLNK1 bmi CURBLNK1
ldy #S.DCB.TTY.bCURON ldy #S.DCB.TTY.bCURON
lda (ZPDCBPtr),y lda (ZPDCBPtr),y
@ -1042,12 +1063,12 @@ Decimal.Out stz ZPTmpWord
*-------------------------------------- *--------------------------------------
Char.Out.Put30 ora #$30 Char.Out.Put30 ora #$30
Char.Out.Put pha Char.Out.Put pha save char
ldy #S.DCB.TTY.OUTHEAD ldy #S.DCB.TTY.OUTHEAD
lda (ZPDCBPtr),y lda (ZPDCBPtr),y
pha pha save actual HEAD
inc inc
cmp #S.DCB.TTY.OUTBUFFER.MAX cmp #S.DCB.TTY.OUTBUFFER.MAX
@ -1055,9 +1076,9 @@ Char.Out.Put pha
lda #S.DCB.TTY.OUTBUFFER lda #S.DCB.TTY.OUTBUFFER
.1 dey .1 dey OUTTAIL
cmp (ZPDCBPtr),y cmp (ZPDCBPtr),y HEAD+1 = TAIL ?
beq .9 CS, full! beq .9 CS, full!
iny iny
@ -1073,9 +1094,9 @@ Char.Out.Put pha
pla pla
rts rts
*-------------------------------------- *--------------------------------------
Char.Out.Get ldy #S.DCB.TTY.OUTHEAD Char.Out.Get ldy #S.DCB.TTY.OUTTAIL
lda (ZPDCBPtr),y lda (ZPDCBPtr),y
dey OUTTAIL iny OUTHEAD
cmp (ZPDCBPtr),y cmp (ZPDCBPtr),y
beq .9 CS beq .9 CS
@ -1116,7 +1137,7 @@ DRV.TERM.GetActive
.1 ror bActive .1 ror bActive
rts rts
*-------------------------------------- *--------------------------------------
GetIOCTLBufAndCnt DRV.TERM.GetIOCTLBufAndCnt
ldy #S.IOCTL.BYTECNT ldy #S.IOCTL.BYTECNT
lda (ZPIOCTL),y lda (ZPIOCTL),y
@ -1127,7 +1148,8 @@ GetIOCTLBufAndCnt
eor #$ff eor #$ff
sta ZPCount+1 sta ZPCount+1
GetIOCTLBuf ldy #S.IOCTL.BUFPTR DRV.TERM.GetIOCTLBuf
ldy #S.IOCTL.BUFPTR
lda (ZPIOCTL),y lda (ZPIOCTL),y
sta ZPBufPtr sta ZPBufPtr
iny iny
@ -1136,16 +1158,16 @@ GetIOCTLBuf ldy #S.IOCTL.BUFPTR
rts rts
*-------------------------------------- *--------------------------------------
SETUP.L1X clc DRV.TERM.SETUP.L1X
ldy #S.FD.DEV.BUFPTR ldy #S.FD.DEV.BUFPTR
lda BUF.BASEL,x lda (pFD),y
adc (pFD),y clc
adc BUF.BASEL,x
sta ZPBufBaseL1 sta ZPBufBaseL1
iny iny
lda BUF.BASEH,x lda (pFD),y
adc (pFD),y adc BUF.BASEH,x
sta ZPBufBaseL1+1 sta ZPBufBaseL1+1
bit bActive bit bActive
@ -1214,8 +1236,8 @@ CtrlChars.Cnt .EQ *-CtrlChars
*-------------------------------------- *--------------------------------------
EscCodes .AZ "MDc" EscCodes .AZ "MDc"
EscCodes.Cnt .EQ *-EscCodes EscCodes.Cnt .EQ *-EscCodes
EscSeqCmds .AS "hlmnrKH" CsiCodes .AS "hlmnrKH"
EscSeqCmds.Cnt .EQ *-EscSeqCmds CsiCodes.Cnt .EQ *-CsiCodes
ENQ.String .AZ "XTERM" ENQ.String .AZ "XTERM"
*-------------------------------------- *--------------------------------------
KeyRemapped .HS 05080A0B0D15 L,D,U,CR,R KeyRemapped .HS 05080A0B0D15 L,D,U,CR,R
@ -1227,8 +1249,6 @@ KeyRemappedUP .HS 1B5B4100 esc[A
KeyRemappedCR .HS 0D0A00 crlf KeyRemappedCR .HS 0D0A00 crlf
KeyRemappedRGHT .HS 1B5B4300 esc[C KeyRemappedRGHT .HS 1B5B4300 esc[C
*-------------------------------------- *--------------------------------------
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
@ -1247,11 +1267,6 @@ SB.IS.NAWS .DA #IAC,#SB,#TELOPT.NAWS,#SB.IS
.DA #IAC,#SE .DA #IAC,#SE
SB.IS.NAWS.LEN .EQ *-SB.IS.NAWS SB.IS.NAWS.LEN .EQ *-SB.IS.NAWS
*-------------------------------------- *--------------------------------------
bActive .BS 1
bEscSeqInNum .BS 1
EscSeqParamCnt .BS 1
EscSeqParam .BS 4
*--------------------------------------
DRV.TERM.DIB .DA #S.DIB.S.WRITE+S.DIB.S.READ DRV.TERM.DIB .DA #S.DIB.S.WRITE+S.DIB.S.READ
.DA #0,#0,#0 .DA #0,#0,#0
>PSTR "A2osX VT100 TERM" >PSTR "A2osX VT100 TERM"

View File

@ -3,8 +3,9 @@ PREFIX
AUTO 4,1 AUTO 4,1
*-------------------------------------- *--------------------------------------
DRV.TERM.CLRSCR ldx #23 DRV.TERM.CLRSCR ldx #23
sta SET80STORE
.1 jsr SETUP.L1X
.1 jsr DRV.TERM.SETUP.L1X
lda #" " lda #" "
@ -48,6 +49,7 @@ DRV.TERM.CLRSCR ldx #23
rts rts
*-------------------------------------- *--------------------------------------
DRV.TERM.SCRCPY ldx #0 DRV.TERM.SCRCPY ldx #0
sta SET80STORE
.1 ldy #S.FD.DEV.BUFPTR .1 ldy #S.FD.DEV.BUFPTR
lda (pFD),y lda (pFD),y
@ -71,7 +73,7 @@ DRV.TERM.SCRCPY ldx #0
sta SETREADAUX sta SETREADAUX
ldx #79 ldx #78
ldy #39 ldy #39
sta SETPAGE2 sta SETPAGE2
@ -82,7 +84,7 @@ DRV.TERM.SCRCPY ldx #0
dey dey
bpl .2 bpl .2
ldx #78 ldx #79
ldy #39 ldy #39
sta CLRPAGE2 sta CLRPAGE2
@ -118,7 +120,7 @@ SetCharAtYX cmp #$40
.1 pha .1 pha
phy phy
jsr SETUP.L1X jsr DRV.TERM.SETUP.L1X
ply ply
pla pla
@ -137,7 +139,7 @@ SetCharAtYX cmp #$40
pla pla
bcs .2 bcs .2
sta SET80STORE
sta SETPAGE2 sta SETPAGE2
.2 sta (ZPScrBaseL1),y .2 sta (ZPScrBaseL1),y
sta CLRPAGE2 sta CLRPAGE2
@ -147,7 +149,7 @@ GetCharAtCurPos ldy #S.DCB.TTY.CV
lda (ZPDCBPtr),y lda (ZPDCBPtr),y
tax tax
jsr SETUP.L1X jsr DRV.TERM.SETUP.L1X
ldy #S.DCB.TTY.CH ldy #S.DCB.TTY.CH
lda (ZPDCBPtr),y lda (ZPDCBPtr),y
@ -179,7 +181,7 @@ COPY.XtoL1 ldy #79
sta ZPScrBaseL2 sta ZPScrBaseL2
lda SCR.BASEH,x lda SCR.BASEH,x
sta ZPScrBaseL2+1 sta ZPScrBaseL2+1
sta SET80STORE
sta SETPAGE2 sta SETPAGE2
jsr .6 jsr .6