Kernel 0.94

This commit is contained in:
Rémy GIBERT 2020-03-12 08:46:43 +01:00
parent 8a81ee27bc
commit 1e0867a9f2
12 changed files with 73 additions and 40 deletions

Binary file not shown.

View File

@ -257,18 +257,15 @@ OPEN tax DEV.ID in A
bit DIB+S.DIB.S
bne CLOSE.IOE
txa
ldx #0
.10 ldy A2osX.SCRNDEVS,x
lda A2osX.SCRNDEVS+9
beq .20
inx
cpx #K.SCR.MAX
bne .10
lda #E.OOH
sec
rts
.20 sta A2osX.SCRNDEVS,x
sta DCB+S.DCB.GFX.DEVID
.20 stx A2osX.SCRNDEVS+9
stx DCB+S.DCB.GFX.DEVID
lda #S.DIB.S.OPENED
tsb DIB+S.DIB.S
@ -299,12 +296,16 @@ OPEN tax DEV.ID in A
CONTROL lda DCB+S.DCB.GFX.DEVID NON STANDARD
cmp A2osX.ASCREEN
beq .8
sta A2osX.ASCREEN
ldy #0
bit DCB+S.DCB.GFX.S
bpl .1 //c,EVE mode
ldy #CONTROL.EVE-CONTROL.80C
.1 ldx CONTROL.80C,y
beq .8 Ending 0
sta $C000,x
@ -314,6 +315,7 @@ CONTROL lda DCB+S.DCB.GFX.DEVID NON STANDARD
.8 clc
rts
CLOSE.IOE lda #MLI.E.IO
sec
rts
@ -321,16 +323,11 @@ CLOSE.IOE lda #MLI.E.IO
CLOSE lda #S.DIB.S.OPENED
bit DIB+S.DIB.S
beq CLOSE.IOE
trb DIB+S.DIB.S
ldx #0
lda DCB+S.DCB.GFX.DEVID
.1 cmp A2osX.SCRNDEVS,x
bne .2
stz A2osX.SCRNDEVS+9
stz A2osX.SCRNDEVS,x
.2 inx
cpx #K.SCR.MAX
bne .1
clc
rts
*--------------------------------------

View File

@ -52,10 +52,10 @@ A2osX.BADCALL .EQ $BC0C
*--------------------------------------
A2osX.SLEEP .EQ $BC10
*--------------------------------------
* $BEE0->$BEEF : Public Variables
* $BED0->$BEEF : Public Variables
*--------------------------------------
*A2osX.ASCREEN .EQ $BEE0 Active Screen
*A2osX.SCRNDEVS .EQ $BEE1 -> $BEE5 (5 screen devices)
A2osX.SCRNDEVS .EQ $BED0 0=console, 1-8=VT100, 9=GFX
A2osX.ASCREEN .EQ $BEDA Active Screen
A2osX.CPUTYPE .EQ $BEE6
A2osX.CPUSPEED .EQ $BEE7 WORD, (->255.99 Mhz)

View File

@ -94,10 +94,10 @@ CORE.Events jsr CORE.GetEvents
sta KBDSTROBE
and #$0F
tax
lda DevMgr.SCRNDEVS,x Get DevID
lda A2osX.SCRNDEVS,x Get DevID
beq .8 No device claimed this screen
cmp DevMgr.ASCREEN Same as active screen...nothing to do
cmp A2osX.ASCREEN Same as active screen...nothing to do
beq .8
>PUSHA
@ -165,7 +165,7 @@ CORE.GetEvents lda #Evt.Table
lda IRQ.Mode
eor #$C0
sta IRQ.Mode
ldx DevMgr.ASCREEN
ldx A2osX.ASCREEN
cpx #3 devID 3 is /DEV/CONSOLE
bne .22
sta SYS.BASL0+38

View File

@ -438,11 +438,11 @@ IRQ.Tick .BS 1
*--------------------------------------
*BrkHandler bra *
*--------------------------------------
GP.CodeEnd .BS $BEE0-*
GP.CodeEnd .BS $BED0-*
*--------------------------------------
* $BEE0->$BEEF : Public Variables
* $BED0->$BEEF : Public Variables
*--------------------------------------
.BS 16
.BS 32
*--------------------------------------
* $BEF0->$BEFF : Kernel Config Block
*--------------------------------------

View File

@ -112,7 +112,7 @@ Kernel.Init3 sta SETALTZP
>PUSHWI FD.NULL
>PUSHWI FD.NULL.NAME
>SYSCALL2 MKDev
jsr SysScrInit
bcs *
>PUSHWI DEV.CONSOLE
@ -296,7 +296,7 @@ SysScrInit >LDYAI Mem.XHiMem
>PUSHWI FD.TTY
>PUSHWI FD.CONSOLE.NAME
>SYSCALL2 MKDev
bcs .9
@ -309,6 +309,7 @@ SysScrInit >LDYAI Mem.XHiMem
>PUSHWI FD.TTY
>PUSHWI FD.TTY.NAME
>SYSCALL2 MKDev
plx
bcs .9

View File

@ -59,7 +59,9 @@ IO.WRITE.PIPE ldy #S.FD.PIPE.S
ldy #S.FD.PIPE.Head+1
jsr IO.PIPE.GET.BUF
>STYA IO.PIPE.DSTBUF
>PULLA get cnt lo
sta IO.PIPE.CNT
eor #$ff
@ -81,22 +83,28 @@ IO.WRITE.PIPE ldy #S.FD.PIPE.S
pla
inc
beq .8
pha
.2 lda (IO.PIPE.SRCBUF)
sta (IO.PIPE.DSTBUF),y
inc IO.PIPE.SRCBUF
bne .4
inc IO.PIPE.SRCBUF+1
.4 iny
bne .1
lda IO.PIPE.BUFH
inc
cmp IO.PIPE.SIZEH
beq .6
sta IO.PIPE.BUFH
inc IO.PIPE.DSTBUF+1
bra .1
.6 stz IO.PIPE.BUFH
lda IO.PIPE.BASEH Pipe Buffer Base
sta IO.PIPE.DSTBUF+1
@ -131,10 +139,12 @@ IO.READ.PIPE ldy #S.FD.PIPE.Used+1
dey
ora (pFD),y
bne .10 yes...
ldy #S.FD.PIPE.S
lda (pFD),y
bmi IO.READ.PIPE.EOF Remote PS closed the Pipe
bpl IO.READ.PIPE.NODATA
.10 >PULLW IO.PIPE.DSTBUF get dest buf
ldy #S.FD.PIPE.Tail+1
@ -146,6 +156,7 @@ IO.READ.PIPE ldy #S.FD.PIPE.Used+1
tax
ldy #S.FD.PIPE.Used
cmp (pFD),y
>PULLA get cnt hi
pha
iny #S.FD.PIPE.Used+1
@ -158,6 +169,7 @@ IO.READ.PIPE ldy #S.FD.PIPE.Used+1
tax
iny
lda (pFD),y X,A = Used
.12 stx IO.PIPE.CNT
sta IO.PIPE.CNT+1
@ -174,25 +186,32 @@ IO.READ.PIPE ldy #S.FD.PIPE.Used+1
.1 inx
bne .2
pla
inc
beq .8
pha
.2 lda (IO.PIPE.SRCBUF),y
sta (IO.PIPE.DSTBUF)
inc IO.PIPE.DSTBUF
bne .4
inc IO.PIPE.DSTBUF+1
.4 iny
bne .1
lda IO.PIPE.BUFH
inc
cmp IO.PIPE.SIZEH
beq .6
sta IO.PIPE.BUFH
inc IO.PIPE.SRCBUF+1
bra .1
.6 stz IO.PIPE.BUFH
lda IO.PIPE.BASEH
sta IO.PIPE.SRCBUF+1 Restore Pipe Buf base

View File

@ -149,6 +149,12 @@ SHARED.ZPPtr3.GetY
sta SETREADAUX
rts
*--------------------------------------
SHARED.GetScrnDevX
sta CLRREADAUX
lda A2osX.SCRNDEVS,x
sta SETREADAUX
rts
*--------------------------------------
MAN
SAVE USR/SRC/SYS/KERNEL.S.SHARED
LOAD USR/SRC/SYS/KERNEL.S

View File

@ -307,6 +307,7 @@ K.Pipe sta .1+1 SIZE HI
txa hFD
* clc
rts
.9 pha save error code
lda .8+1 get back PIPE buffer

View File

@ -77,7 +77,7 @@ TERM.GetDCB ldy #S.FD.DEV.DCBPTR
sta ZPBufBase+1
lda (ZPDCBPtr) #S.DCB.TTY.DEVID
cmp DevMgr.ASCREEN
cmp A2osX.ASCREEN
beq .1 CS
clc

View File

@ -98,21 +98,28 @@ TERMX.OPEN tax
jsr TERMX.ISOPENED
bne TERMX.OPEN.E
TERMX.OPEN.1 txa
phx
ldx #0
.2 ldy DevMgr.SCRNDEVS,x
.2 jsr SHARED.GetScrnDevX
beq .3
inx
cpx #K.TTY.MAX+1
bne .2
plx
lda #E.OOH
sec
rts
.3 sta DevMgr.SCRNDEVS,x
.3 pla
sta CLRWRITEAUX
sta A2osX.SCRNDEVS,x
sta SETWRITEAUX
sta (ZPDCBPtr) #S.DCB.TTY.DEVID
@ -124,8 +131,11 @@ TERMX.OPEN.1 txa
jsr RESET
*--------------------------------------
TERMX.CONTROL lda (ZPDCBPtr) #S.DCB.TTY.DEVID
sta DevMgr.ASCREEN
sta CLRWRITEAUX
sta A2osX.ASCREEN
sta SETWRITEAUX
sta SETTEXT
jsr TERMX.SCRCPY
@ -146,11 +156,13 @@ TERMX.CLOSE jsr TERMX.ISOPENED
sta (ZPDCBPtr),y
ldx #0
.1 lda DevMgr.SCRNDEVS,x
.1 jsr SHARED.GetScrnDevX
cmp (ZPDCBPtr) #S.DCB.TTY.DEVID
bne .2
stz DevMgr.SCRNDEVS,x
sta CLRWRITEAUX
stz A2osX.SCRNDEVS,x
sta SETWRITEAUX
clc
rts
@ -181,7 +193,7 @@ TERMX.READ bit bActive is screen active?
.1 jsr TERMX.Title.OFF
lda KBD
sta A2osX.RANDOM16
bpl .6
sta KBDSTROBE
@ -1311,8 +1323,7 @@ SetCharAtCurPos pha
cpy #80
bcs SetCharAtYX.8
*--------------------------------------
SetCharAtYX ror A2osX.RANDOM16+1
cmp #$40
SetCharAtYX cmp #$40
bcc .1
cmp #$60
bcs .1

View File

@ -114,8 +114,6 @@ A2osX.E0.B .PH $E000
.INB USR/SRC/SYS/KERNEL.S.PFT
DevMgr.Timer .BS 1
DevMgr.ASCREEN .BS 1
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