Kernel 0.92

This commit is contained in:
Rémy GIBERT 2018-12-17 15:24:39 +01:00
parent 18ed4d66be
commit a4b457498f
5 changed files with 164 additions and 167 deletions

Binary file not shown.

View File

@ -141,6 +141,8 @@ H.BIN.EXE.REL.TABLE .EQ 16
*
H.BIN.DRV.REL.TABLE .EQ 2 Including main jmp
*--------------------------------------
TTY.BUF.SIZE .EQ 80*24
*--------------------------------------
S.DCB.TTY.DEVID .EQ 0
S.DCB.TTY.STATUS .EQ 1
S.DCB.TTY.MODE .EQ 2
@ -167,9 +169,6 @@ S.DCB.TTY.OUTBUFFER.MAX .EQ 64
*
S.DCB.TTY .EQ 64
*--------------------------------------
S.TTYBUF.TITLE .EQ 48
S.TTYBUF.SCRBUF .EQ 128 24x80=1920 bytes
*--------------------------------------
MAN
SAVE USR/SRC/SYS/KERNEL.S.DEF
LOAD USR/SRC/SYS/KERNEL.S

View File

@ -249,28 +249,11 @@ MemMgrInit >LDYAI Mem.MHiMem
>STYA Mem.LoMem
stz Mem.LastSlot Reserve Slot #0
* reserve AUXmem for TTY Frame buffers
lda A2osX.TTYDEVS
inc +1 for /DEV/CONSOLE
asl
asl
asl 8 pages (2k)
sta .10+1
sta SETWRITEAUX
ldy #Mem.XHiMem
sty Mem.HiMem
lda /Mem.XHiMem
sec
.10 sbc #$FF SELF MODIFIED
sta Mem.HiMem+1
>STYA Mem.Free
>LDYAI Mem.XLoMem
>STYA Mem.LoMem
stz Mem.LastSlot Reserve Slot #0
sta CLRWRITEAUX
@ -309,49 +292,67 @@ MemMgrInit >LDYAI Mem.MHiMem
rts
*--------------------------------------
SysScrInit jsr SysScrInit.DCBBuf
SysScrInit >LDYAI Mem.XHiMem
>STYA FD.TTY+S.FD.DEV.BUFPTR
jsr SysScrInit.TTYPtrs
>PUSHWI FD.CONSOLE.NAME
>LDYAI FD.TTY
>SYSCALL MKDev
bcs .9
lda A2osX.TTYDEVS
ldx A2osX.TTYDEVS
.1 pha
.1 phx
inc FD.TTY+S.FD.DEV.DEVID
inc FD.TTY.NAME+3
lda FD.TTY+S.FD.DEV.BUFPTR+1
sec
sbc /2048
sta FD.TTY+S.FD.DEV.BUFPTR+1
jsr SysScrInit.DCBBuf
jsr SysScrInit.TTYPtrs
>PUSHWI FD.TTY.NAME
>LDYAI FD.TTY
>SYSCALL MKDev
pla
dec
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
*--------------------------------------
SysScrInit.DCBBuf
clc
SysScrInit.TTYPtrs
lda DevMgr.Free
sta FD.TTY+S.FD.DEV.DCBPTR
clc
adc #S.DCB.TTY
sta DevMgr.Free
lda DevMgr.Free+1
sta FD.TTY+S.FD.DEV.DCBPTR+1
adc /S.DCB.TTY
sta DevMgr.Free+1
lda FD.TTY+S.FD.DEV.BUFPTR
sec
sbc #TTY.BUF.SIZE
sta FD.TTY+S.FD.DEV.BUFPTR
lda FD.TTY+S.FD.DEV.BUFPTR+1
sbc /TTY.BUF.SIZE
sta FD.TTY+S.FD.DEV.BUFPTR+1
rts
*--------------------------------------
PS0.Init >LDYAI CORE.S.PS0 Select Process 0 (Kernel)
@ -1127,7 +1128,7 @@ FD.TTY .DA #S.FD.T.CDEV
.DA 0 BUSPTR
.DA DRV.TERM
.BS 2 DCBPTR
.DA $B800 BUFPTR
.BS 2 BUFPTR
*--------------------------------------
FD.CONSOLE.NAME .AZ "CONSOLE"
FD.TTY.NAME .AZ "TTY0"

View File

@ -36,8 +36,8 @@ DRV.TERM cld
.DA DRV.TERM.READ
.DA DRV.TERM.WRITE
*--------------------------------------
DRV.TERM.STATUS jsr DRV.TERM.GetIOCTLBufAndCnt
DRV.TERM.STATUS jsr DRV.TERM.GetIOCTLBufCntDCB
ldy #S.IOCTL.STATCODE
lda (ZPIOCTL),y
beq .1
@ -50,12 +50,10 @@ DRV.TERM.STATUS jsr DRV.TERM.GetIOCTLBufAndCnt
.1 ldy #3
.2 lda DRV.TERM.DIB,y
.3 sta (ZPBufPtr),y
sta (ZPBufPtr),y
dey
bne .2
jsr DRV.TERM.GetDCB
ldy #S.DCB.TTY.STATUS
lda (ZPDCBPtr),y
sta (ZPBufPtr)
@ -106,14 +104,14 @@ DRV.TERM.OPEN ldx #0 DEV.ID in A
jsr RESET
*--------------------------------------
DRV.TERM.CONTROL
sta SETTEXT
jsr DRV.TERM.GetDCB
ldy #S.DCB.TTY.DEVID
lda (ZPDCBPtr),y
sta A2osX.ASCREEN
sta SETTEXT
jsr DRV.TERM.SCRCPY
lda #0
@ -157,8 +155,7 @@ DRV.TERM.CLOSE jsr DRV.TERM.GetDCB
sec
rts
*--------------------------------------
DRV.TERM.READ jsr DRV.TERM.GetIOCTLBufAndCnt
jsr DRV.TERM.GetDCB
DRV.TERM.READ jsr DRV.TERM.GetIOCTLBufCntDCB
bit bActive is screen active?
bpl .6 no....go check flush...
@ -242,17 +239,16 @@ DRV.TERM.READ jsr DRV.TERM.GetIOCTLBufAndCnt
sec
rts
*--------------------------------------
DRV.TERM.WRITE jsr DRV.TERM.GetIOCTLBufAndCnt
jsr DRV.TERM.GetDCB
DRV.TERM.WRITE jsr DRV.TERM.GetIOCTLBufCntDCB
jsr DRV.TERM.CUROFF
.1 inc ZPCount
bne .2
inc ZPCount+1
beq FS.8
.2 jsr DRV.TERM.CUROFF
ldy #S.DCB.TTY.MODE
.2 ldy #S.DCB.TTY.MODE
lda (ZPDCBPtr),y
tax
@ -276,18 +272,41 @@ DRV.TERM.COUT lda (ZPBufPtr)
bne .1
lda #S.DCB.TTY.MODE.IAC
bra DRV.TERM.SETMODE
jmp DRV.TERM.SETMODE
.1 cmp #C.DEL
beq DRV.TERM.COUT.DEL
cmp #C.SPACE
bcc DRV.TERM.COUT.Ctrl
bcs .8
ldx #CtrlChars.Cnt-1
ldy #S.DCB.TTY.bINVERSE
.2 cmp CtrlChars,x
beq .3
dex
bpl .2
clc
rts
.3 txa
asl
tax
jmp (.4,x)
.4 .DA ENQ 5
.DA BS 8
.DA LF 10
.DA DRV.TERM.COUT.FF
.DA DRV.TERM.COUT.CR
.DA DRV.TERM.COUT.FS
.DA DRV.TERM.COUT.ESC
.8 ldy #S.DCB.TTY.bINVERSE
ora (ZPDCBPtr),y
jsr SetCharAtCurPos
*--------------------------------------
FS ldy #S.DCB.TTY.CH
DRV.TERM.COUT.FS
ldy #S.DCB.TTY.CH
lda (ZPDCBPtr),y
cmp #79
bne .1
@ -332,30 +351,23 @@ DRV.TERM.COUT.DEL
ora (ZPDCBPtr),y
jmp SetCharAtCurPos
*--------------------------------------
DRV.TERM.COUT.Ctrl
ldx #CtrlChars.Cnt-1
.1 cmp CtrlChars,x
beq .2
dex
bpl .1
DRV.TERM.COUT.FF
lda #0
ldy #S.DCB.TTY.CV
sta (ZPDCBPtr),y
dey
sta (ZPDCBPtr),y
jmp DRV.TERM.CLRSCR
*--------------------------------------
DRV.TERM.COUT.CR
lda #0
ldy #S.DCB.TTY.CH
sta (ZPDCBPtr),y
clc
rts
.2 txa
asl
tax
jmp (.8,x)
.8 .DA ENQ 5
.DA BS 8
.DA LF 10
.DA FF 12
.DA CROUT 13
.DA FS 21
.DA ESC 27
*--------------------------------------
ESC lda #S.DCB.TTY.MODE.ESC
DRV.TERM.COUT.ESC
lda #S.DCB.TTY.MODE.ESC
bra DRV.TERM.SETMODE
*--------------------------------------
DRV.TERM.ESC lda (ZPBufPtr)
@ -860,19 +872,6 @@ BS ldy #S.DCB.TTY.CH
.2 clc
rts
*--------------------------------------
FF lda #0
ldy #S.DCB.TTY.CV
sta (ZPDCBPtr),y
dey
sta (ZPDCBPtr),y
jmp DRV.TERM.CLRSCR
*--------------------------------------
CROUT lda #0
ldy #S.DCB.TTY.CH
sta (ZPDCBPtr),y
clc
rts
*--------------------------------------
LF ldy #S.DCB.TTY.CV
lda (ZPDCBPtr),y
ldy #S.DCB.TTY.SCROLLBOT
@ -1092,23 +1091,7 @@ Char.Out.Get ldy #S.DCB.TTY.OUTTAIL
.9 rts
*--------------------------------------
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 A2osX.ASCREEN
beq .1 CS
clc
.1 ror bActive
rts
*--------------------------------------
DRV.TERM.GetIOCTLBufAndCnt
DRV.TERM.GetIOCTLBufCntDCB
>STYA ZPIOCTL
ldy #S.IOCTL.BUFPTR
@ -1127,7 +1110,21 @@ DRV.TERM.GetIOCTLBufAndCnt
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 A2osX.ASCREEN
beq .1 CS
clc
.1 ror bActive
rts
*--------------------------------------
DRV.TERM.Title.ON
@ -1153,13 +1150,7 @@ DRV.TERM.Title.ON
.1 lda (ZPTmpWord),y
beq .2
cmp #$40
bcc .10
cmp #$5F
bcs .10
and #$3F
.10 phy
phy
jsr SetCharAtY.SCR
ply
iny
@ -1185,6 +1176,29 @@ DRV.TERM.Title.OFF
sta (ZPDCBPtr),y
jmp DRV.TERM.LINE0CPY
*--------------------------------------
DRV.TERM.SETUP.L1X
ldy #S.FD.DEV.BUFPTR
lda (pFD),y
clc
adc BUF.BASEL,x
sta ZPBufBaseL1
iny
lda (pFD),y
adc BUF.BASEH,x
sta ZPBufBaseL1+1
bit bActive
bpl DRV.TERM.SETUP.L1X.8
DRV.TERM.SETUP.L1X.SCR
lda SCR.BASEL,x
sta ZPScrBaseL1
lda SCR.BASEH,x
sta ZPScrBaseL1+1
DRV.TERM.SETUP.L1X.8
rts
*--------------------------------------
RESET.VALUES .DA #0 S.DCB.TTY.MODE
.DA #0 S.DCB.TTY.CH
.DA #0 S.DCB.TTY.CV

View File

@ -2,29 +2,6 @@ NEW
PREFIX
AUTO 4,1
*--------------------------------------
DRV.TERM.SETUP.L1X
ldy #S.FD.DEV.BUFPTR
lda (pFD),y
clc
adc BUF.BASEL,x
sta ZPBufBaseL1
iny
lda (pFD),y
adc BUF.BASEH,x
sta ZPBufBaseL1+1
bit bActive
bpl DRV.TERM.SETUP.L1X.8
DRV.TERM.SETUP.L1X.SCR
lda SCR.BASEL,x
sta ZPScrBaseL1
lda SCR.BASEH,x
sta ZPScrBaseL1+1
DRV.TERM.SETUP.L1X.8
rts
*--------------------------------------
SCR.BASEL .HS 00.80.00.80.00.80.00.80.28.A8.28.A8.28.A8.28.A8.50.D0.50.D0.50.D0.50.D0
SCR.BASEH .HS 04.04.05.05.06.06.07.07.04.04.05.05.06.06.07.07.04.04.05.05.06.06.07.07
*--------------------------------------
@ -89,20 +66,12 @@ DRV.TERM.CLRSCR ldx #23
sta SETPAGE2
ldy #39
.2 sta (ZPScrBaseL1),y
dey
bpl .2
jsr .7
sta CLRPAGE2
ldy #39
.3 sta (ZPScrBaseL1),y
dey
bpl .3
jsr .7
.4 sta SETWRITEAUX
ldy #79
@ -115,12 +84,14 @@ DRV.TERM.CLRSCR ldx #23
dex
bpl .1
rts
lda #0
ldy #S.DCB.TTY.CV
sta (ZPDCBPtr),y
.7 ldy #39
.8 sta (ZPScrBaseL1),y
dey
sta (ZPDCBPtr),y
bpl .8
rts
*--------------------------------------
DRV.TERM.LINE0CPY
@ -172,7 +143,13 @@ DRV.TERM.SCRCPY ldx #23
.8 ldy #39
.80 lda $ffff,x SELF MODIFIED
sta (ZPScrBaseL1),y
cmp #$40
bcc .81
cmp #$5F
bcs .81
and #$3F
.81 sta (ZPScrBaseL1),y
dex
dex
dey
@ -180,6 +157,17 @@ DRV.TERM.SCRCPY ldx #23
rts
*--------------------------------------
DRV.TERM.COPY.XtoL1
ldy #S.FD.DEV.BUFPTR
lda (pFD),y
clc
adc BUF.BASEL,x
sta ZPBufBaseL2
iny
lda (pFD),y
adc BUF.BASEH,x
sta ZPBufBaseL2+1
ldy #79
sta SETWRITEAUX
@ -214,6 +202,7 @@ DRV.TERM.COPY.XtoL1
sta (ZPScrBaseL1),y
dey
bpl .7
.8 rts
*--------------------------------------
SetCharAtCurPos.SCR
@ -228,13 +217,7 @@ SetCharAtCurPos.SCR
jsr DRV.TERM.SETUP.L1X.SCR
pla
cmp #$40
bcc .1
cmp #$5F
bcs .1
and #$3F
.1 bra SetCharAtY.SCR
bra SetCharAtY.SCR
SetCharAtCurPos pha
ldy #S.DCB.TTY.CV
@ -245,13 +228,7 @@ SetCharAtCurPos pha
tay
pla
*--------------------------------------
SetCharAtYX cmp #$40
bcc .1
cmp #$5F
bcs .1
and #$3F
.1 pha
SetCharAtYX pha
phy
jsr DRV.TERM.SETUP.L1X
ply
@ -263,8 +240,14 @@ SetCharAtYX cmp #$40
bit bActive
bpl SetCharAtYX.8
SetCharAtY.SCR
pha
SetCharAtY.SCR cmp #$40
bcc .1
cmp #$5F
bcs .1
and #$3F
.1 pha
tya
lsr