Kernel 0.9.1 : Kernel/memory REORG for more IO buffers & room in LC for DHGR.DRV

This commit is contained in:
Rémy GIBERT 2017-11-21 17:27:07 +01:00
parent 93ec92c91b
commit b25be9cee0
17 changed files with 247 additions and 171 deletions

View File

@ -26,15 +26,6 @@ And return, if found, the full path to it.
+ DstStat = S.STAT
+ CS : not found
# Sleep
Make current process suspend until next RUN
## In :
+ (none)
## Out :
+ (none)
# GetDevByID.A
## IN:
@ -55,15 +46,6 @@ Make current process suspend until next RUN
+ X = DEVID
+ Y,A = DEVSLOT
# GetDevStatus.A
## IN:
+ A = DevID
## OUT:
+ CC = OK, CS = ERROR
+ Y,A = Ptr to S.DEVINFO
# OpenDir.YA
## In:

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@ -181,9 +181,13 @@ CS.RUN jsr CS.RUN.BuildCat
rts
*--------------------------------------
CS.RUN.BuildCat >LDA.G hDev
>SYSCALL GetDevStatus.A
>SYSCALL GetDevByID.A
bcs .99
>STYA pDev
ldx #DEVMGR.STATUS
jsr pDevJmp
bcs .99
>STYA ZPPtr1
ldy #S.DSTAT.SIZE
lda (ZPPtr1),y

View File

@ -90,7 +90,12 @@ STATUS >LDYA L.DEVSTAT
clc
rts
*--------------------------------------
OPEN stz CURON
OPEN sta A2osX.SCRNDEVS+1 DEV.ID in A
lda #S.DSTAT.S.OPENED
tsb DEVSTAT
stz CURON
stz bEscMode
stz bEscModeCSI
@ -98,8 +103,6 @@ OPEN stz CURON
stz OutPtr
stz OutCnt
sta A2osX.SCRNDEVS DEV.ID in A
jsr RESET
ldy #0
@ -114,13 +117,13 @@ CONTROL sta SETTEXT
sta SETALTCHAR
sta SET80DISP
sta CLR80STORE
sta CLRPAGE2
lda #1
sta SETPAGE2
lda #2
sta A2osX.ASCREEN
clc
rts
*--------------------------------------
CLOSE stz A2osX.SCRNDEVS
CLOSE stz A2osX.SCRNDEVS+1
clc
rts
*--------------------------------------
@ -128,7 +131,7 @@ READ jsr Char.Out.Get
bcc .8 IF cs,no char in output buffer...
lda A2osX.ASCREEN
cmp #1 is CON active?
cmp #2 is CON active?
bne .9 no....exit
lda A2osX.TIMER16
@ -666,7 +669,7 @@ CUROFF lda CURON
beq CUREXIT.RTS
CURBLNK lda A2osX.ASCREEN
cmp #1
cmp #2
beq CURBLNK1
lda CURON
@ -852,7 +855,7 @@ DRV.CS.END
EscCodes >PSTR "MDc"
EscSeqCmds >PSTR "mnrKH"
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
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
BASEH .HS 08.08.09.09.0A.0A.0B.0B.08.08.09.09.0A.0A.0B.0B.08.08.09.09.0A.0A.0B.0B
CH .BS 1
CV .BS 1
INVFLG .BS 1

View File

@ -123,61 +123,54 @@ BITBLT >LDYA CB.CACHE+S.CB.SrcPtr
* ^
* SCRBitOfsL (0->6)
*--------------------------------------
BLT.Get7BMBits ldx BLT.BMBitOfsL
lda
sta ZPBMShiftPtr+1
BLT.Get7BMBits lda (ZPBMDataPtr)
lda (ZPBMDataPtr)
and ShiftML,x Get only needed bits
ldx BLT.BMBitOfsL
beq BLT.Get7BMBits0 done! and no need to advance ZPBMDataPtr
lsr Range 0->127
dex Range 0->6
beq BLT.Get7BMBits1
ldy Shift7.LO-1,x X = 1->6
sty ZPBMShiftPtr+1
ldy Shift7.HI-1,x X = 1->6
sty ZPBMShiftPtr+1
and Mask7BitsL,x Get only needed bits
tay
lda (ZPBMShiftPtr),y
sta GBYTE
lda (ZPBMShiftPtr),y
pha
inc ZPBMDataPtr
inc ZPBMDataPtr Next BM data byte
bne .1
inc ZPBMDataPtr+1
.1 lda (ZPBMDataPtr)
and ShiftMH,x
and Mask7BitsH,x
tay
lda (ZPBMShiftPtr),y
ora GBYTE we have the 7 0xxxxxxx DATA bits
ldx
tay
lda Shift.LO
pla
ora (ZPBMShiftPtr),y
dec BLT.BMBitOfsL X = 1->6, ADD 7 MOD 8.....
rts
BLT.Get7BMBits0 and #%01111111 Get only 7 needed bits
ldx #7
stx BLT.BMBitOfsL Was 0, add 7 bits
rts
*--------------------------------------
ShiftML .DA #01111111
.DA #11111110
.DA #11111100
.DA #11111000
.DA #11110000
.DA #11100000
.DA #11000000
.DA #10000000
ShiftMH .DA #00000000
.DA #00000000
.DA #00000001
.DA #00000011
.DA #00000111
.DA #00001111
.DA #00011111
.DA #00111111
BLT.Get7BMBits1 stz BLT.BMBitOfsL Was 1, add 7 bits, MOD 8=0
inc ZPBMDataPtr go to next byte
bne .1
inc ZPBMDataPtr+1
.1 rts LSR did already 0xxxxxxx
*--------------------------------------
MAN
SAVE /A2OSX.SRC/DRV/DHGR.DRV.S.RECT
LOAD /A2OSX.SRC/DRV/DHGR.DRV.S

View File

@ -147,6 +147,12 @@ J.LBUF.DrawAtY .DA LBUF.DrawAtY.XOR
.DA LBUF.DrawAtY.SET
.DA LBUF.DrawAtY.ORA
.DA LBUF.DrawAtY.AND
L.SHIFT.R2 .DA SHIFT.R2
.DA SHIFT.R3
.DA SHIFT.R4
.DA SHIFT.R5
.DA SHIFT.R6
.DA SHIFT.R7
L.DSTAT .DA DSTAT
L.Color.Pixels .DA Color.Pixels
.DA 0 end or relocation
@ -156,6 +162,23 @@ STATUS >LDYA L.DSTAT
rts
*--------------------------------------
OPEN sta A2osX.SCRNDEVS+2 DEV.ID in A
ldx #0
ldy #0
.1 lda L.SHIFT.R2,x Get relocated LO BYTE
sta Shift7.LO,y
inx
lda L.SHIFT.R2,x Get relocated HI BYTE
sta Shift7.HI,y
inx
iny
cpy #6 6 LO/HI bytes to set in tables
bne .1
*--------------------------------------
CONTROL ldy #0
@ -344,6 +367,9 @@ CONTROL.LCM
.DA #SETDHIRES
.DA #$ff
*--------------------------------------
Shift7.LO .BS 6
Shift7.HI .BS 6
*--------------------------------------
CB.CmdLen .DA S.CB.Y1+1 SETPIXEL
.DA S.CB.Y1+1 GETPIXEL
.DA S.CB.X2+1 HLINE

View File

@ -5,21 +5,20 @@ INC 1
AUTO 6
.LIST OFF
*--------------------------------------
Mono.NMasks .DA #%01111110
.DA #%01111101
.DA #%01111011
.DA #%01110111
.DA #%01101111
.DA #%01011111
.DA #%00111111
*--------------------------------------
Mono.Masks .DA #%00000001
.DA #%00000010
.DA #%00000100
.DA #%00001000
.DA #%00010000
.DA #%00100000
.DA #%01000000
Mask7BitsL .DA #01111111 Useless
.DA #01111110
.DA #01111100
.DA #01111000
.DA #01110000
.DA #01100000
.DA #01000000
Mask7BitsH .DA #00000000 Useless
.DA #00000001
.DA #00000011
.DA #00000111
.DA #00001111
.DA #00011111
.DA #00111111
*--------------------------------------
C1.MASK .DA #%10000000 mod 0.....
C2.DATA .DA #%10000001 ->C1.DATA
@ -37,6 +36,22 @@ C2.MASK .DA #%11111110
.DA #%11000000
.DA #%10000000
*--------------------------------------
Mono.NMasks .DA #%01111110
.DA #%01111101
.DA #%01111011
.DA #%01110111
.DA #%01101111
.DA #%01011111
.DA #%00111111
*--------------------------------------
Mono.Masks .DA #%00000001
.DA #%00000010
.DA #%00000100
.DA #%00001000
.DA #%00010000
.DA #%00100000
.DA #%01000000
*--------------------------------------
* bits to "and" to reset color of pixel (0 means nothing to do)
* 4 bytes * 7 mods
*--------------------------------------
@ -156,6 +171,13 @@ MOD7.256 .HS 040506
.HS 00010203040506
.HS 00
*--------------------------------------
SHIFT.R2 .BS 128
SHIFT.R3 .BS 128
SHIFT.R4 .BS 128
SHIFT.R5 .BS 128
SHIFT.R6 .BS 128
SHIFT.R7 .BS 128
*--------------------------------------
BASEL .HS 00.00.00.00.00.00.00.00
.HS 80.80.80.80.80.80.80.80
.HS 00.00.00.00.00.00.00.00

View File

@ -116,7 +116,7 @@ SYS.Rename .EQ $42
SYS.GetDevByID.A .EQ $48
SYS.GetDevByName.YA .EQ $4A
SYS.GetDevStatus.A .EQ $4C
* .EQ $4C
* .EQ $4E
* .EQ $50

View File

@ -93,28 +93,27 @@ K.MLI.PATH .EQ $03B0 64+1 -> $03F0
*--------------------------------------
*** $3F0-$3FF IRQ Handler.... ***
*--------------------------------------
* Main/Aux $400 -> $7FF : Console Screen
* Main/Aux $800 -> $BFF : System Screen
* Main/Aux $400 -> $7FF : TXT PAGE1 System Screen
* Main/Aux $800 -> $BFF : TXT PAGE2 Console Screen
*--------------------------------------
PS.Table.PID .EQ $0C00 K.PS.MAX
PS.Table.hMem .EQ $0C20 K.PS.MAX
* free $0C00->$17FF = $C00 (3072) Aux
*--------------------------------------
Evt.Table .EQ $0C40 K.EVT.MAX*S.EVT.SIZE=8*8=64b
*** Z80 Reserved $1000-10FF***
*--------------------------------------
Flt.Table .EQ $0C80 K.FLT.MAX*S.FLT.SIZE=4*32=128b
*--------------------------------------
K.IOBuf256 .EQ $0D00 Main
K.Buf256 .EQ $0E00 Main
*--------------------------------------
K.STACKTOP .EQ $0F20 down to $0f00
*--------------------------------------
*** Z80 Reserved $0F00-10FF***
*--------------------------------------
Z80STACK .EQ $0FFF (0FFFFh) Down to $0F20
Z80JMP .EQ $1000 (00000h) Up To $10FF
Z80STACK .EQ $10FF (000FFh) Down to $1000
*--------------------------------------
* free $1100->$15FF = $500 Main
* free $0C00->$17FF = $C00 Aux
PS.Table.PID .EQ $1100 K.PS.MAX
PS.Table.hMem .EQ $1120 K.PS.MAX
*--------------------------------------
Evt.Table .EQ $1140 K.EVT.MAX*S.EVT.SIZE=8*8=64b
*--------------------------------------
Flt.Table .EQ $1180 K.FLT.MAX*S.FLT.SIZE=4*32=128b
*--------------------------------------
K.STACKTOP .EQ $12FF down to $1200
*--------------------------------------
K.Buf256 .EQ $1300 Main
K.IOBuf512 .EQ $1400 Main
*--------------------------------------
Dev.Table .EQ $1600 K.DEV.MAX*S.DEV=32*16=512b
*--------------------------------------

View File

@ -4,8 +4,6 @@ LOMEM $A00
INC 1
AUTO 6
*--------------------------------------
SYS.BASL0 .EQ $800
*--------------------------------------
CORE.Run lda CORE.PSCount
sta CORE.Counter
bne .1 SHOULD NEVER HAPPEN!!!
@ -162,9 +160,9 @@ CORE.GetEvents lda #Evt.Table
sta CORE.VBLState save new
bpl .8 Up2down transition,no tick
lda SYS.BASL0+37
lda SYS.BASL0+38
eor #$80
sta SYS.BASL0+37
sta SYS.BASL0+38
.2 inc A2osX.TIMER16
bne .3
@ -412,7 +410,7 @@ CORE.DestroyEvent
CORE.PSSelect0 >LDYAI CORE.S.PS0 Select PS0
>STYA pPs
>LDYA CORE.S.PS0+S.PS.ZP+4
>LDYAI K.STACKTOP
>STYA pStack
rts
*--------------------------------------
@ -472,7 +470,7 @@ CORE.Tick10t .BS 1
CORE.Counter .BS 1
CORE.PSCount .DA #0
CORE.LastPSID .DA #0
CORE.S.PS0 .BS S.PS
CORE.S.PS0 .BS S.PS.PC+2
*--------------------------------------
MAN
SAVE /A2OSX.SRC/SYS/KERNEL.S.CORE

View File

@ -244,6 +244,8 @@ A2osX.PrtDrv.GetDev
A2osX.PrtDrv.Cnt
.HS 03030301030101010404
*--------------------------------------
* NULL DEVICE
*--------------------------------------
DevMgr.NUL.Code .DA .1 STATUS
.DA A2osX.BADCALL READBLOCK
.DA A2osX.BADCALL WRITEBLOCK
@ -268,6 +270,8 @@ DevMgr.NUL.Code .DA .1 STATUS
.DA #0
.DA $0900
*--------------------------------------
* SYS DEVICE
*--------------------------------------
DevMgr.SYS.Code .DA .1 STATUS
.DA A2osX.BADCALL READBLOCK
.DA A2osX.BADCALL WRITEBLOCK
@ -293,40 +297,24 @@ DevMgr.SYS.Code .DA .1 STATUS
DevMgr.SYS.Open stz DevMgr.SYS.CH
stz DevMgr.SYS.CV
ldx #0
ldy #0
.1 lda DevMgr.SYS.TITLE,y
beq .2
jsr DevMgr.SYS.SetCharAtYX
iny
bne .1
.2 lda #$20
jsr DevMgr.SYS.SetCharAtYX
iny
cpy #80
bne .2
jsr DevMgr.SYS.Home
lda #1
sta A2osX.SCRNDEVS+1 fall in Control
sta A2osX.SCRNDEVS fall in Control
*--------------------------------------
DevMgr.SYS.Control
sta SETTEXT
sta SETALTCHAR
sta SET80DISP
sta CLR80STORE
sta SETPAGE2
lda #2
sta CLRPAGE2
lda #1
sta A2osX.ASCREEN
clc
rts
*--------------------------------------
DevMgr.SYS.Read lda A2osX.ASCREEN
cmp #2 is SYS active?
cmp #1 is SYS active?
bne .9
lda OPENAPPLE
@ -421,20 +409,24 @@ DevMgr.SYS.Scroll
php
sei
sta SETWRITEAUX
sta SETREADAUX
* sta SET80STORE
* sta SETPAGE2
ldy #39
.2 lda (ZPDRV+2),y
sta (ZPDRV),y
dey
bpl .2
sta CLRWRITEAUX
sta CLRREADAUX
* sta CLRPAGE2
* sta CLR80STORE
plp
ldy #39
.3 lda (ZPDRV+2),y
sta (ZPDRV),y
dey
@ -449,19 +441,24 @@ DevMgr.SYS.ClrLineAtX
lda DevMgr.SYS.BASEH,x
sta ZPDRV+1
lda #$A0
ldy #39
php
sei
lda #$A0
ldy #39
.1 sta SETWRITEAUX
* sta SET80STORE
.1
* sta SETPAGE2
sta (ZPDRV),y
sta CLRWRITEAUX
* sta CLRPAGE2
sta (ZPDRV),y
dey
bpl .1
* sta CLR80STORE
plp
rts
@ -494,31 +491,39 @@ DevMgr.SYS.SetCharAtYX
tya
lsr
tay
bcs .2
pla
bcs .2
php
sei
sta SETWRITEAUX
sta SET80STORE
* sta SETPAGE2
sta (ZPDRV),y
sta CLRWRITEAUX
* sta CLRPAGE2
sta CLR80STORE
plp
ply
rts
.2 pla
sta (ZPDRV),y
.2 sta (ZPDRV),y
ply
rts
*--------------------------------------
DevMgr.SYS.CH .BS 1
DevMgr.SYS.CV .BS 1
*--------------------------------------
DevMgr.SYS.TITLE >CSTR "A2osX System Screen"
DevMgr.SYS.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
DevMgr.SYS.BASEH .HS 08.08.09.09.0A.0A.0B.0B.08.08.09.09.0A.0A.0B.0B.08.08.09.09.0A.0A.0B.0B
DevMgr.SYS.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
*--------------------------------------
.LIST ON
DevMgr.FreeMem .EQ *
.LIST OFF
MAN
SAVE /A2OSX.SRC/SYS/KERNEL.S.D01
LOAD /A2OSX.SRC/SYS/KERNEL.S

View File

@ -77,20 +77,6 @@ K.GetDevByName.YA
K.GetDevDNF lda #MLI.E.NODEV CS from cpx/beq
rts
*/--------------------------------------
* # GetDevStatus.A
* ## IN:
* A = DevID
* ## OUT:
* CC = OK, CS = ERROR
* Y,A = Ptr to S.DEVINFO
*\--------------------------------------
K.GetDevStatus.A
jsr K.GetDevByID.A
bcs K.GetDevDNF
>STYA ZPPtr1
ldx #DEVMGR.STATUS
jmp (ZPPtr1)
*--------------------------------------
MAN
SAVE /A2OSX.SRC/SYS/KERNEL.S.DEV

View File

@ -11,6 +11,8 @@ ZPPtr2 .EQ ZPKERNEL+2
ZPPtr3 .EQ ZPKERNEL+4
ZPPtr4 .EQ ZPKERNEL+6
*--------------------------------------
SYS.BASL0 .EQ $400
*--------------------------------------
Kernel.Init sei
ldx #$FF
txs
@ -400,7 +402,7 @@ KConfigLoad >LDAXI MSG.KCREAD
jsr PrintFAX
rts
*--------------------------------------
Z80Code.Start .HS 31FFFF START: LD SP,0FFFFH Init Stack
Z80Code.Start .HS 31FF00 START: LD SP,000FFH Init Stack
.HS 3EFF LD A,0FFH Set Flag
.HS 320D00 LD (FLAG),A
.HS 3200E1 LD (0E100H),A Back to 6502
@ -434,19 +436,73 @@ PS0Init ldx #S.DEV*2 NUL,SYS
sta Dev.Table-1,x
dex
bne .1
lda #2
sta DevMgr.Count
>LDYAI CORE.S.PS0 Select Process 0 (Kernel)
ldx #0
sta SET80STORE
ldy #0
.2 lda DevMgr.SYS.TITLE,y
beq .3
cmp #$40
bcc .10
cmp #$5F
bcs .10
and #$3F
.10 php
sei
sta SETPAGE2
sta SYS.BASL0,x
sta CLRPAGE2
plp
iny
lda DevMgr.SYS.TITLE,y
beq .5
cmp #$40
bcc .11
cmp #$5F
bcs .11
and #$3F
.11 sta SYS.BASL0,x
iny
inx
bra .2
.3 lda #$20
.4 php
sei
sta SETPAGE2
sta SYS.BASL0,x
sta CLRPAGE2
plp
.5 lda #$20
sta SYS.BASL0,x
inx
cpx #40
bne .4
sta CLR80STORE
>LDYAI CORE.S.PS0 Select Process 0 (Kernel)
>STYA pPs
>LDYAI K.STACKTOP
>STYA pStack
>STYA CORE.S.PS0+S.PS.ZP+4 init Kernel Soft Stack
>LDYAI DEV.SYS
>SYSCALL MkNod.YA
>SYSCALL MkNod.YA Will open SYS
bcs .9
ldy #S.PS.hStdIn
@ -462,6 +518,8 @@ PS0Init ldx #S.DEV*2 NUL,SYS
clc
.9 rts
*--------------------------------------
DevMgr.SYS.TITLE >CSTR "A2osX System Screen"
*--------------------------------------
DevMgr.NUL cld
jmp (DevMgr.NUL.Code,x)
.DA #S.DEV.S.WRITE+S.DEV.S.READ+S.DEV.S.OPENED
@ -502,7 +560,7 @@ IrqMgrInit >LDYAI MSG.IRQ
bcs .1
lda #'v'
sta SYS.BASL0+37
sta SYS.BASL0+38
>LDYAI K.IrqH.VBL
>STYA K.IrqH+1
@ -516,7 +574,7 @@ IrqMgrInit >LDYAI MSG.IRQ
bcs .8
lda #'c'
sta SYS.BASL0+37
sta SYS.BASL0+38
>LDYAI K.IrqH.TClock
>STYA K.IrqH+1
@ -530,7 +588,7 @@ IrqMgrInit >LDYAI MSG.IRQ
.8 jsr IrqMgrInit.HZ2Tick
lda #'p'
sta SYS.BASL0+37
sta SYS.BASL0+38
>LDYAI MSG.IRQ.POLL
>SYSCALL PrintF.YA

View File

@ -71,9 +71,9 @@ K.IrqH.TCLOCK ldy IRQ.VBL.n0
inc CORE.IRQTick
lda SYS.BASL0+37
lda SYS.BASL0+38
eor #$80
sta SYS.BASL0+37
sta SYS.BASL0+38
clc
rts
@ -92,9 +92,9 @@ K.IrqH.VBL jsr IRQ.VBL.MSM SERVEMOUSE
inc CORE.IRQTick
lda SYS.BASL0+37
lda SYS.BASL0+38
eor #$80
sta SYS.BASL0+37
sta SYS.BASL0+38
clc
rts

View File

@ -50,7 +50,7 @@ K.SYSCALL.JMP .DA 0 $00
.DA 0
.DA K.GetDevByID.A
.DA K.GetDevByName.YA
.DA K.GetDevStatus.A
.DA 0
.DA 0
.DA 0 $50