Kernel 0.93+

This commit is contained in:
Rémy GIBERT 2020-01-11 18:13:27 +01:00
parent 92de51c7df
commit 1a55ca3830
9 changed files with 182 additions and 141 deletions

Binary file not shown.

View File

@ -150,7 +150,7 @@ CS.RUN.Loop >SYSCALL GetChar
bne .5
ldy #1
lda (ZPCfgPtr),y
and #3
and #7
inc
sta (ZPCfgPtr),y
jmp CS.RUN.REPaint

View File

@ -358,8 +358,10 @@ CORE.Lookup >STYA ZPPtr2
.6 inx
lda (ZPPtr1) Array Ending 0, lookup failed
bne .1
lda #E.SYN
sec
.9 sec
rts
.7 iny
@ -370,8 +372,6 @@ CORE.Lookup >STYA ZPPtr2
bcc .9 end of valid chars
clc
rts
.9 sec
rts
*--------------------------------------
* ArgV
*--------------------------------------

View File

@ -16,11 +16,8 @@ K.OF.MAX .EQ 32
K.USR.MAX .EQ 16
K.PS.MAX .EQ 32
K.EVT.MAX .EQ 4
K.SCR.MAX .EQ 6
K.TTY.MAX .EQ 4
K.TTY.MAX .EQ 8
K.IRQDEV.MAX .EQ 4
*--------------------------------------
ZPDRV .EQ $20 32 bytes

View File

@ -173,7 +173,9 @@ CORE.GetEvents lda #Evt.Table
.3 dec CORE.Tick10t
bne .6
.4 inc A2osX.TIMER16
.4 inc DevMgr.Timer
inc A2osX.TIMER16
bne .5
inc A2osX.TIMER16+1

View File

@ -36,7 +36,7 @@ Kernel.Init2 sei
>LDYA PAKME.AUXH
>STYA ZPInBufPtr
>LDYAI X.OSD
>LDYAI Mem.XHiMem
>STYA ZPOutBufPtr
jsr X.Unpak
@ -118,7 +118,7 @@ Kernel.Init3 sta SETALTZP
>PUSHWI FD.NULL.NAME
>LDYAI FD.NULL
>SYSCALL2 MKDev
jsr SysScrInit
bcs *
>PUSHWZ Aux type
@ -314,9 +314,12 @@ SysScrInit >LDYAI Mem.XHiMem
>PUSHWI FD.CONSOLE.NAME
>LDYAI FD.TTY
>SYSCALL2 MKDev
bcs .9
ldx A2osX.TTYDEVS
.1 phx
inc FD.TTY+S.FD.DEV.DEVID
inc FD.TTY.NAME+3
@ -326,13 +329,16 @@ SysScrInit >LDYAI Mem.XHiMem
>SYSCALL2 MKDev
plx
bcs .9
dex
bne .1
>LDYA FD.TTY+S.FD.DEV.BUFPTR
sta SETWRITEAUX
>STYA Mem.HiMem
>STYA Mem.Free
sta CLRWRITEAUX
clc
.9 rts
*--------------------------------------
@ -347,13 +353,15 @@ SysScrInit.TTYPtrs
lda DevMgr.Free+1
sta FD.TTY+S.FD.DEV.DCBPTR+1
sta .1+2
adc /S.DCB.TTY
sta DevMgr.Free+1
ldx #S.DCB.TTY-1
.1 stz $ffff,x SELF MODIFIED
dex
bpl .1
lda FD.TTY+S.FD.DEV.BUFPTR
sec
sbc #TTY.BUF.SIZE

View File

@ -8,14 +8,15 @@ CURSOR.BLINK.SPEED .EQ 2
ZPIOCTL .BS 2
ZPDCBPtr .BS 2
ZPBufPtr .BS 2
ZPCount .BS 2
ZPBufBase .BS 2
ZPBufBaseL1 .BS 2
ZPBufBaseL2 .BS 2
ZPScrBaseL1 .BS 2
ZPScrBaseL2 .BS 2
*--------------------------------------
ZPTmpWord .BS 2
ZPCount .BS 2
ZPTmpBool .BS 1
ZPTmpChar .BS 1
@ -25,9 +26,7 @@ CsiParamCnt .BS 1
CsiParams .BS 4
.ED
*--------------------------------------
DRV.TERM.STATUS ldy #S.IOCTL.STATCODE
lda (ZPIOCTL),y
beq .1
DRV.TERM.STATUS beq .1
cmp #S.IOCTL.STATCODE.GETDIB
bne .3
@ -94,7 +93,7 @@ DRV.TERM.OPEN.1 txa
beq .3
inx
cpx #K.SCR.MAX
cpx #K.TTY.MAX+1
bne .2
lda #E.OOH
@ -103,8 +102,8 @@ DRV.TERM.OPEN.1 txa
.3 sta DevMgr.SCRNDEVS,x
ldy #S.DCB.TTY.DEVID
sta (ZPDCBPtr),y
sta (ZPDCBPtr) #S.DCB.TTY.DEVID
ldy #S.DCB.TTY.STATUS
lda (ZPDCBPtr),y
ora #S.DIB.S.OPENED
@ -113,8 +112,7 @@ DRV.TERM.OPEN.1 txa
jsr RESET
*--------------------------------------
DRV.TERM.CONTROL
ldy #S.DCB.TTY.DEVID
lda (ZPDCBPtr),y
lda (ZPDCBPtr) #S.DCB.TTY.DEVID
sta DevMgr.ASCREEN
sta SETTEXT
@ -136,10 +134,9 @@ DRV.TERM.CLOSE jsr DRV.TERM.ISOPENED
lda DRV.TERM.DIB+S.DIB.S
sta (ZPDCBPtr),y
ldx #0
ldy #S.DCB.TTY.DEVID
.1 lda DevMgr.SCRNDEVS,x
cmp (ZPDCBPtr),y
cmp (ZPDCBPtr) #S.DCB.TTY.DEVID
bne .2
stz DevMgr.SCRNDEVS,x
@ -147,7 +144,7 @@ DRV.TERM.CLOSE jsr DRV.TERM.ISOPENED
rts
.2 inx
cpx #K.SCR.MAX+1
cpx #K.TTY.MAX+1
bne .1
.9 lda #MLI.E.IO
@ -228,12 +225,17 @@ DRV.TERM.READ bit bActive is screen active?
bcs .8
ldy .8+1
sta CLRWRITEAUX
sta (ZPBufPtr),y
sta SETWRITEAUX
iny
sty .8+1
bra .70
.8 lda #$ff SELF MODIFIED
sta CLRWRITEAUX
ldy #S.IOCTL.BYTECNT
sta (ZPIOCTL),y
iny
@ -276,7 +278,7 @@ DRV.TERM.WRITE jsr DRV.TERM.CUROFF
.8 clc
rts
*--------------------------------------
DRV.TERM.COUT lda (ZPBufPtr)
DRV.TERM.COUT jsr DRV.TERM.GetBufByte
cmp #IAC
bne .1
@ -407,7 +409,7 @@ DRV.TERM.COUT.ESC
lda #S.DCB.TTY.MODE.ESC
bra DRV.TERM.SETMODE
*--------------------------------------
DRV.TERM.ESC lda (ZPBufPtr) y = #S.DCB.TTY.MODE
DRV.TERM.ESC jsr DRV.TERM.GetBufByte y = #S.DCB.TTY.MODE
ldx #EscCodes.Cnt-1
.2 cmp EscCodes,x
@ -454,7 +456,9 @@ DRV.TERM.CSI ldy #S.DCB.TTY.INBUFFER
inc
sta (ZPDCBPtr),y
tay
lda (ZPBufPtr)
jsr DRV.TERM.GetBufByte
sta (ZPDCBPtr),y
cmp #64 End of Seq ?
bcs DRV.TERM.CSI.Exec
@ -725,7 +729,7 @@ DRV.TERM.G1 ldx #$40
ldy #S.DCB.TTY.bG0G1ALT
lda (ZPBufPtr)
jsr DRV.TERM.GetBufByte
cmp #'0'
beq .1
@ -745,7 +749,9 @@ DRV.TERM.IAC ldy #S.DCB.TTY.INBUFFER
inc
sta (ZPDCBPtr),y
tay
lda (ZPBufPtr)
jsr DRV.TERM.GetBufByte
sta (ZPDCBPtr),y
cpy #S.DCB.TTY.INBUFFER+1 CMD ?
beq Csi.Home.8 yes, wait for additional bytes
@ -755,7 +761,8 @@ DRV.TERM.IAC ldy #S.DCB.TTY.INBUFFER
cmp #SB
bne .1 not a SB/SE....stop with CMD/SUBCMD
lda (ZPBufPtr)
jsr DRV.TERM.GetBufByte
cmp #SE
bne Csi.Home.8 wait for ending SE....keep bIACMode
bra COUT.IAC.SB
@ -996,7 +1003,7 @@ DRV.TERM.CURBLNK
bit bActive
bpl .9
lda A2osX.TIMER16
lda DevMgr.Timer
and #CURSOR.BLINK.SPEED
ldy #S.DCB.TTY.bCURON
eor (ZPDCBPtr),y
@ -1087,108 +1094,13 @@ Char.Out.Get ldy #S.DCB.TTY.OUTTAIL
clc
.9 rts
*--------------------------------------
DRV.TERM.GetIOCTLBufCntDCB
>STYA ZPIOCTL
ldy #S.IOCTL.BUFPTR
lda (ZPIOCTL),y
sta ZPBufPtr
iny
lda (ZPIOCTL),y
sta ZPBufPtr+1
iny #S.IOCTL.BYTECNT
lda (ZPIOCTL),y
eor #$ff
sta ZPCount
iny
lda (ZPIOCTL),y
eor #$ff
sta ZPCount+1
*--------------------------------------
DRV.TERM.GetDCB ldy #S.FD.DEV.DCBPTR
lda (pFD),y
sta ZPDCBPtr
iny
lda (pFD),y
sta ZPDCBPtr+1
ldy #S.DCB.TTY.DEVID
lda (ZPDCBPtr),y
cmp DevMgr.ASCREEN
beq .1 CS
clc
.1 ror bActive
rts
*--------------------------------------
DRV.TERM.Title.ON
ldy #S.DCB.TTY.bTITLE
lda (ZPDCBPtr),y
bmi DRV.TERM.Title.RTS
lda #$ff
sta (ZPDCBPtr),y
ldy #S.DCB.TTY.DEVID
lda (ZPDCBPtr),y
tax
lda Dev.Table-1,x
clc
adc #S.FD.DEV
tay
lda Dev.Table,x
adc /S.FD.DEV
>STYA ZPTmpWord
ldx #0
jsr DRV.TERM.SETUP.L1X.SCR
ldy #0
.1 lda (ZPTmpWord),y
beq .3
cmp #$40
bcc .2
cmp #$60
bcs .2
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
DRV.TERM.Title.RTS
rts
DRV.TERM.Title.OFF
ldy #S.DCB.TTY.bTITLE
lda (ZPDCBPtr),y
bpl DRV.TERM.Title.RTS
lda #$0
sta (ZPDCBPtr),y
jmp DRV.TERM.LINE0CPY
*--------------------------------------
DRV.TERM.SETUP.L1X
ldy #S.FD.DEV.BUFPTR
lda (pFD),y
lda ZPBufBase
clc
adc BUF.BASEL,x
sta ZPBufBaseL1
iny
lda (pFD),y
lda ZPBufBase+1
adc BUF.BASEH,x
sta ZPBufBaseL1+1
@ -1254,6 +1166,54 @@ DRV.TERM.CLRSCR.2
bpl .8
.9 rts
*--------------------------------------
DRV.TERM.Title.ON
ldy #S.DCB.TTY.bTITLE
lda (ZPDCBPtr),y
bmi DRV.TERM.Title.RTS
lda #$ff
sta (ZPDCBPtr),y
jsr DRV.TERM.GetDevName
ldx #0
jsr DRV.TERM.SETUP.L1X.SCR
ldy #0
.1 jsr SHARED.TXTPTR.GetNext
beq .3
cmp #$40
bcc .2
cmp #$60
bcs .2
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
DRV.TERM.Title.RTS
rts
DRV.TERM.Title.OFF
ldy #S.DCB.TTY.bTITLE
lda (ZPDCBPtr),y
bpl DRV.TERM.Title.RTS
lda #$0
sta (ZPDCBPtr),y
*--------------------------------------
DRV.TERM.LINE0CPY
ldx #0
.HS 2C BIT ABS
@ -1261,13 +1221,12 @@ DRV.TERM.SCRCPY ldx #23
sta SET80STORE
.1 ldy #S.FD.DEV.BUFPTR
lda (pFD),y
.1 lda ZPBufBase
clc
adc BUF.BASEL,x
sta .80+1
iny
lda (pFD),y
lda ZPBufBase+1
adc BUF.BASEH,x
sta .80+2
jsr DRV.TERM.SETUP.L1X.SCR
@ -1293,23 +1252,26 @@ DRV.TERM.SCRCPY ldx #23
dex
bpl .1
rts
.8 ldy #39
.80 lda $ffff,x SELF MODIFIED
.81 sta (ZPScrBaseL1),y
sta (ZPScrBaseL1),y
dex
dex
dey
bpl .80
rts
*--------------------------------------
DRV.TERM.COPY.XtoL1
ldy #S.FD.DEV.BUFPTR
lda (pFD),y
lda ZPBufBase
clc
adc BUF.BASEL,x
sta ZPBufBaseL2
iny
lda (pFD),y
lda ZPBufBase+1
adc BUF.BASEH,x
sta ZPBufBaseL2+1

View File

@ -2,6 +2,7 @@ NEW
AUTO 3,1
*--------------------------------------
DRV.TERM cld
jmp (.1,x)
.1 .DA DRV.TERM.STATUS.LC
@ -18,13 +19,15 @@ DRV.TERM cld
DRV.TERM.STATUS.LC
jsr DRV.TERM.GetIOCTLBufCntDCB
ldy #S.IOCTL.STATCODE
lda (ZPIOCTL),y
sta SETREADAUX
sta SETWRITEAUX
jsr DRV.TERM.STATUS
sta CLRREADAUX
sta CLRWRITEAUX
rts
DRV.TERM.CONTROL.LC
jsr DRV.TERM.GetDCB
@ -79,6 +82,74 @@ DRV.TERM.WRITE.LC
rts
*--------------------------------------
DRV.TERM.GetIOCTLBufCntDCB
>STYA ZPIOCTL
ldy #S.IOCTL.BUFPTR
lda (ZPIOCTL),y
sta ZPBufPtr
iny
lda (ZPIOCTL),y
sta ZPBufPtr+1
iny #S.IOCTL.BYTECNT
lda (ZPIOCTL),y
eor #$ff
sta ZPCount
iny
lda (ZPIOCTL),y
eor #$ff
sta ZPCount+1
*--------------------------------------
DRV.TERM.GetDCB ldy #S.FD.DEV.DCBPTR
lda (pFD),y
sta ZPDCBPtr
iny
lda (pFD),y
sta ZPDCBPtr+1
iny S.FD.DEV.BUFPTR
lda (pFD),y
sta ZPBufBase
iny
lda (pFD),y
sta ZPBufBase+1
lda (ZPDCBPtr) #S.DCB.TTY.DEVID
cmp DevMgr.ASCREEN
beq .1 CS
clc
.1 ror bActive
rts
*--------------------------------------
DRV.TERM.GetBufByte
sta CLRREADAUX
lda (ZPBufPtr)
sta SETREADAUX
rts
*--------------------------------------
DRV.TERM.GetDevName
sta CLRREADAUX
lda (ZPDCBPtr) #S.DCB.TTY.DEVID
tax
lda Dev.Table-1,x
clc
adc #S.FD.DEV
sta TXTPTR
lda Dev.Table,x
adc /S.FD.DEV
sta TXTPTR+1
sta SETREADAUX
rts
*--------------------------------------
MAN
SAVE USR/SRC/SYS/KERNEL.S.TERMLC
LOAD USR/SRC/SYS/KERNEL.S

View File

@ -116,8 +116,9 @@ A2osX.E0.B .PH $E000
********* TMP ***** go to A2osX.D2
.INB USR/SRC/SYS/KERNEL.S.ENV
*--------------------------------------
DevMgr.Timer .BS 1
DevMgr.ASCREEN .BS 1
DevMgr.SCRNDEVS .BS 10 1-8, VT100, 9=GFX 0 = console
DevMgr.SCRNDEVS .BS K.TTY.MAX+2 1-8=VT100, 9=GFX, 0=console
DevMgr.Stat .DA DevMgr.FreeMem
DevMgr.Free .DA DevMgr.FreeMem
.DA DevMgr.HiMem