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

View File

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

View File

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

View File

@ -438,11 +438,11 @@ IRQ.Tick .BS 1
*-------------------------------------- *--------------------------------------
*BrkHandler bra * *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 * $BEF0->$BEFF : Kernel Config Block
*-------------------------------------- *--------------------------------------

View File

@ -309,6 +309,7 @@ SysScrInit >LDYAI Mem.XHiMem
>PUSHWI FD.TTY >PUSHWI FD.TTY
>PUSHWI FD.TTY.NAME >PUSHWI FD.TTY.NAME
>SYSCALL2 MKDev >SYSCALL2 MKDev
plx plx
bcs .9 bcs .9

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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