Kernel 0.94

This commit is contained in:
Rémy GIBERT 2020-07-02 16:14:30 +02:00
parent 8dd8dda5bd
commit 60a70cc84b
6 changed files with 96 additions and 51 deletions

Binary file not shown.

View File

@ -41,10 +41,12 @@ L.DEVNAME.GFX .DA DEVNAME.GFX
L.FONTFILE .DA FONTFILE L.FONTFILE .DA FONTFILE
L.FONTFILEB .DA FONTFILEB L.FONTFILEB .DA FONTFILEB
L.PIXFILE .DA PIXFILE L.PIXFILE .DA PIXFILE
L.LOGOFILE .DA LOGOFILE
L.CB.RECT .DA CB.RECT L.CB.RECT .DA CB.RECT
L.CB.TEXTB .DA CB.TEXTB L.CB.TEXTB .DA CB.TEXTB
L.CB.TEXT .DA CB.TEXT L.CB.TEXT .DA CB.TEXT
L.CB.PIX .DA CB.PIX L.CB.PIX .DA CB.PIX
L.CB.LOGO .DA CB.LOGO
L.CB.Apple .DA CB.Apple L.CB.Apple .DA CB.Apple
L.BM.Apple .DA BM.Apple L.BM.Apple .DA BM.Apple
L.MESSAGEB .DA MESSAGEB L.MESSAGEB .DA MESSAGEB
@ -53,23 +55,26 @@ L.MESSAGE .DA MESSAGE
.DA 0 .DA 0
*-------------------------------------- *--------------------------------------
CS.INIT clc CS.INIT clc
rts CS.INIT.RTS rts
*-------------------------------------- *--------------------------------------
CS.RUN jsr GFX.Open CS.RUN jsr GFX.Open
bcs .9 bcs CS.INIT.RTS
jsr LoadResources jsr LoadResources
bcs .9 bcs CS.INIT.RTS
>LDYA L.CB.RECT >LDYA L.CB.RECT
jsr GFX.Write.YA jsr GFX.Write.YA
>LDYA L.BM.Apple
>STYA CB.Apple+S.CB.SrcPtr
>LDYA L.CB.PIX >LDYA L.CB.PIX
jsr GFX.Write.YA jsr GFX.Write.YA
>LDYA L.CB.LOGO
jsr GFX.Write.YA
>LDYA L.BM.Apple
>STYA CB.Apple+S.CB.SrcPtr
>LDYA L.CB.Apple >LDYA L.CB.Apple
jsr GFX.Write.YA jsr GFX.Write.YA
@ -77,7 +82,7 @@ CS.RUN jsr GFX.Open
sta CB.TEXTB+S.CB.hFont sta CB.TEXTB+S.CB.hFont
>LDYA L.MESSAGEB >LDYA L.MESSAGEB
>STYA CB.TEXTB+S.CB.TxtPtr >STYA CB.TEXTB+S.CB.TxtPtr
>LDYA L.CB.TEXTB >LDYA L.CB.TEXTB
jsr GFX.Write.YA jsr GFX.Write.YA
bcs .9 bcs .9
@ -108,15 +113,28 @@ CS.DOEVENT clc
CS.QUIT lda hFont CS.QUIT lda hFont
beq .1 beq .1
>SYSCALL FreeStkObj >SYSCALL FreeStkObj
.1 lda hFontB .1 lda hFontB
beq .2 beq .2
>SYSCALL FreeStkObj >SYSCALL FreeStkObj
.2 lda CB.PIX+S.CB.SrcPtr .2 lda CB.PIX+S.CB.SrcPtr
beq .3 beq .3
>SYSCALL FreeStkObj >SYSCALL FreeStkObj
.3 .3 lda CB.LOGO+S.CB.SrcPtr
beq .4
>SYSCALL FreeStkObj
.4 lda CB.TEXTB+S.CB.SrcPtr
beq .5
>SYSCALL FreeStkObj
.5 lda CB.TEXT+S.CB.SrcPtr
beq .6
>SYSCALL FreeStkObj
.6
lda hDevGFX lda hDevGFX
beq .8 beq .8
* >DEBUG * >DEBUG
@ -131,7 +149,7 @@ LoadResources >PUSHW L.FONTFILE
>PUSHBI $CC Type >PUSHBI $CC Type
>PUSHWZ Aux type >PUSHWZ Aux type
>SYSCALL LoadStkObj >SYSCALL LoadStkObj
bcs .9 bcs .99
stx hFont stx hFont
>PUSHW L.FONTFILEB >PUSHW L.FONTFILEB
@ -147,9 +165,17 @@ LoadResources >PUSHW L.FONTFILE
>PUSHBI $CB Type >PUSHBI $CB Type
>PUSHWZ Aux type >PUSHWZ Aux type
>SYSCALL LoadStkObj >SYSCALL LoadStkObj
bcs .9 .99 bcs .9
stx CB.PIX+S.CB.SrcPtr stx CB.PIX+S.CB.SrcPtr
>PUSHW L.LOGOFILE
>PUSHBI O.RDONLY
>PUSHBI $CB Type
>PUSHWZ Aux type
>SYSCALL LoadStkObj
bcs .9
stx CB.LOGO+S.CB.SrcPtr
.9 rts .9 rts
*-------------------------------------- *--------------------------------------
GFX.Open >PUSHBI 0 GFX.Open >PUSHBI 0
@ -172,8 +198,9 @@ DEVNAME.GFX .AZ "/dev/gfx"
FONTFILE .AZ "${ROOT}sbin/sysx7" FONTFILE .AZ "${ROOT}sbin/sysx7"
FONTFILEB .AZ "${ROOT}sbin/sysx7b" FONTFILEB .AZ "${ROOT}sbin/sysx7b"
PIXFILE .AZ "${ROOT}root/guitest/marilyn" PIXFILE .AZ "${ROOT}root/guitest/marilyn"
LOGOFILE .AZ "${ROOT}A2osX.logo"
MESSAGEB .AZ " DHGR Driver & OSD 'Off-Screen Driver' Test (SYSX7B Font, Inverse) " MESSAGEB .AZ " DHGR Driver & OSD 'Off-Screen Driver' Test (SYSX7B Font, Inverse) "
MESSAGE .AZ " 1234567890 abcdefghijklmnopqrstuvwxyz { + - * / } (SYSX7B Font, Normal) " MESSAGE .AZ " 1234567890 abcdefghijklmnopqrstuvwxyz { + - * / } (SYSX7 Font, Normal) "
CB.RECT .DA #S.CB.CMD.FILLRECT CB.RECT .DA #S.CB.CMD.FILLRECT
.DA #S.CB.OP.SET .DA #S.CB.OP.SET
@ -210,6 +237,19 @@ CB.PIX .DA #S.CB.CMD.BITBLT
.BS 2 SrcPtr .BS 2 SrcPtr
.DA 0 DSTPTR .DA 0 DSTPTR
CB.LOGO .DA #S.CB.CMD.BITBLT
.DA #S.CB.OP.SET+S.CB.OP.COLOR
.DA #S.CB.M.C16
.DA #0
.DA 0 X1
.DA 0 Y1
.DA 320 SrcW
.DA 40 SrcH
.DA 200 DstX
.DA 50 DstY
.BS 2 SrcPtr
.DA 0 DSTPTR
CB.TEXTB .DA #S.CB.CMD.DRAWTEXT+S.CB.CMD.OSD CB.TEXTB .DA #S.CB.CMD.DRAWTEXT+S.CB.CMD.OSD
.DA #S.CB.OP.SET+S.CB.OP.INVERSE .DA #S.CB.OP.SET+S.CB.OP.INVERSE
.DA #S.CB.M.MONO .DA #S.CB.M.MONO

View File

@ -197,7 +197,8 @@ BITBLT.LOOP0 lda CB.Cache+S.CB.OP
inc BLT.BMDataPtr+1 inc BLT.BMDataPtr+1
.5 jmp BITBLT.LOOP0 .5 jmp BITBLT.LOOP0
.8 rts .8 clc
rts
*------------ Shift 1->6 Comment : SCRBitOfs=X=3 *------------ Shift 1->6 Comment : SCRBitOfs=X=3
BITBLT.LOOPx lda CB.Cache+S.CB.OP X = BLT.SCRBitOfs BITBLT.LOOPx lda CB.Cache+S.CB.OP X = BLT.SCRBitOfs
@ -281,7 +282,8 @@ BITBLT.LOOPx.7 and #$ff SELF MODIFIED : #%01110000 get only col2 bites
inc BLT.BMDataPtr+1 inc BLT.BMDataPtr+1
.2 jmp BITBLT.LOOPx .2 jmp BITBLT.LOOPx
.8 rts .8 clc
rts
*-------------------------------------- *--------------------------------------
* BM Data/Mask bits : * BM Data/Mask bits :
* 76543210 76543210 * 76543210 76543210

View File

@ -14,7 +14,8 @@ GBYTE .EQ ZPDRV+17
GBYTE2 .EQ ZPDRV+18 GBYTE2 .EQ ZPDRV+18
GWORD .EQ ZPDRV+20 GWORD .EQ ZPDRV+20
TXTPTR .EQ ZPDRV+22 *--------------------------------------
TXTPTR .EQ $B8
*-------------------------------------- *--------------------------------------
* Y,A = Ptr to S.CB in MAIN * Y,A = Ptr to S.CB in MAIN
*-------------------------------------- *--------------------------------------
@ -59,7 +60,7 @@ X.OSD ldy CBX.Cache+S.CB.DstPtr
*-------------------------------------- *--------------------------------------
OSD.SETPIXEL >LDYA CBX.Cache+S.CB.Y1 OSD.SETPIXEL >LDYA CBX.Cache+S.CB.Y1
ldx DstBM.Cache+S.BM.RowBytes ldx DstBM.Cache+S.BM.RowBytes
jsr YAMultX jsr OSD.YAMultX
pha pha
tya tya
clc clc
@ -174,11 +175,14 @@ OSD.GETTEXTSIZE clc
lda CBX.Cache+S.CB.hFONT lda CBX.Cache+S.CB.hFONT
>SYSCALL2 GetMemPtr >SYSCALL2 GetMemPtr
>STYA ZPFontPtr >STYA ZPFontPtr
ldy #S.FON-1 ldy #S.FON-1
.1 lda (ZPFontPtr),y .1 lda (ZPFontPtr),y
sta FON.Cache,y sta FON.Cache,y
dey dey
bpl .1 bpl .1
lda ZPFontPtr lda ZPFontPtr
clc clc
adc #S.FON adc #S.FON
@ -186,6 +190,7 @@ OSD.GETTEXTSIZE clc
lda ZPFontPtr+1 lda ZPFontPtr+1
adc /S.FON adc /S.FON
sta ZPTablePtr+1 sta ZPTablePtr+1
.2 >LDYA CBX.Cache+S.CB.TxtPtr .2 >LDYA CBX.Cache+S.CB.TxtPtr
>STYA TXTPTR >STYA TXTPTR
stz CBX.Cache+S.CB.SrcW stz CBX.Cache+S.CB.SrcW
@ -194,13 +199,10 @@ OSD.GETTEXTSIZE clc
lda FON.Cache+S.FON.PixH lda FON.Cache+S.FON.PixH
sta CBX.Cache+S.CB.SrcH sta CBX.Cache+S.CB.SrcH
stz CBX.Cache+S.CB.SrcH+1 stz CBX.Cache+S.CB.SrcH+1
.3 jsr OSD.TXTPTR.GetNext .3 jsr OSD.TXTPTR.GetNext
beq .4 beq .4
inc TXTPTR
bne .31
inc TXTPTR+1
.31
jsr OSD.FON.GetChar jsr OSD.FON.GetChar
lda (ZPCharPtr) Get Char PixelW lda (ZPCharPtr) Get Char PixelW
sec sec
@ -215,14 +217,18 @@ OSD.GETTEXTSIZE clc
ldx CBX.Cache+S.CB.SrcW+1 ldx CBX.Cache+S.CB.SrcW+1
ldy CBX.Cache+S.CB.SrcH ldy CBX.Cache+S.CB.SrcH
bcc OSD.DRAWTEXT.RTS bcc OSD.DRAWTEXT.RTS
sta DstBM.Cache+S.BM.W sta DstBM.Cache+S.BM.W
stx DstBM.Cache+S.BM.W+1 stx DstBM.Cache+S.BM.W+1
sty DstBM.Cache+S.BM.H sty DstBM.Cache+S.BM.H
stz DstBM.Cache+S.BM.H+1 stz DstBM.Cache+S.BM.H+1
lda #S.BM.F.BBP1 lda #S.BM.F.BBP1
sta DstBM.Cache+S.BM.F sta DstBM.Cache+S.BM.F
jsr OSD.BM.Create jsr OSD.BM.Create
bcs OSD.DRAWTEXT.RTS bcs OSD.DRAWTEXT.RTS
sta OSD.DRAWTEXT.END+1 save hBM, ZPDstBMPtr=BMData sta OSD.DRAWTEXT.END+1 save hBM, ZPDstBMPtr=BMData
>LDYA CBX.Cache+S.CB.TxtPtr >LDYA CBX.Cache+S.CB.TxtPtr
>STYA TXTPTR >STYA TXTPTR
@ -234,11 +240,6 @@ OSD.DRAWTEXT.LOOP
jsr OSD.TXTPTR.GetNext jsr OSD.TXTPTR.GetNext
beq OSD.DRAWTEXT.END beq OSD.DRAWTEXT.END
inc TXTPTR
bne .31
inc TXTPTR+1
.31
jsr OSD.FON.GetChar jsr OSD.FON.GetChar
lda (ZPCharPtr) Char PixW lda (ZPCharPtr) Char PixW
sta GBYTE sta GBYTE
@ -493,7 +494,7 @@ OSD.BM.Create lda DstBM.Cache+S.BM.W
ror DstBM.Cache+S.BM.RowBytes ror DstBM.Cache+S.BM.RowBytes
>LDYA DstBM.Cache+S.BM.H >LDYA DstBM.Cache+S.BM.H
ldx DstBM.Cache+S.BM.RowBytes ldx DstBM.Cache+S.BM.RowBytes
jsr YAMultX Compute BM total bytes jsr OSD.YAMultX Compute BM total bytes
pha pha
eor #$ff eor #$ff
sta ZPTmpPtr+1 sta ZPTmpPtr+1
@ -573,7 +574,7 @@ OSD.YAMultX stx GBYTE
CB.Update sta CLRWRITEAUX CB.Update sta CLRWRITEAUX
ldx CBX.Cache ldx CBX.Cache
ldy CB.CmdLen,x ldy CBX.CmdLen,x
.1 lda CBX.Cache,y .1 lda CBX.Cache,y
sta (ZPCmdPtr),y sta (ZPCmdPtr),y
@ -585,6 +586,20 @@ CB.Update sta CLRWRITEAUX
clc clc
rts rts
*-------------------------------------- *--------------------------------------
OSD.TXTPTR.GetNext
jmp ($a000)
*--------------------------------------
CBX.CmdLen .DA #S.CB.Y1+1 SETPIXEL
.DA #S.CB.Y1+1 GETPIXEL
.DA #S.CB.X2+1 HLINE
.DA #S.CB.Y2+1 VLINE
.DA #S.CB.Y2+1 FILLRECT
.DA #S.CB.DstPtr+1 BITBLT
.DA #S.CB.DstPtr+1 GETRECTBUFSIZE
.DA #S.CB.Y2+1 DRAWLINE
.DA #S.CB.TxtPtr+1 DRAWTEXT
.DA #S.CB.SrcH+1 GETTEXTSIZE
*--------------------------------------
CBX.Cache .BS S.CB CBX.Cache .BS S.CB
FON.Cache .BS S.FON FON.Cache .BS S.FON
SrcBM.Cache .BS S.BM SrcBM.Cache .BS S.BM

View File

@ -81,6 +81,7 @@ Dev.Detect >LDYA L.MSG.DETECT
bit DCB+S.DCB.GFX.S bit DCB+S.DCB.GFX.S
bmi .3 bmi .3
>LDYA L.MSG.DETECT.80C >LDYA L.MSG.DETECT.80C
.3 >SYSCALL PutS .3 >SYSCALL PutS
@ -107,6 +108,7 @@ Dev.Detect >LDYA L.MSG.DETECT
sta SETWRITEAUX sta SETWRITEAUX
>STYA $800 >STYA $800
sta CLRWRITEAUX sta CLRWRITEAUX
sta SETHIRES sta SETHIRES
sta SET80STORE sta SET80STORE
@ -231,31 +233,23 @@ OSD.install >LDYA L.OSD
inc ZPPtr2+1 inc ZPPtr2+1
bra .1 bra .1
.3 ldy #OSD.TXTPTR.GetNext.LEN-1 .3 sta CLRWRITEAUX
.4 lda OSD.TXTPTR.GetNext,y
sta SETPAGE2
sta $2000+240,y
sta CLRPAGE2
sta $2000+240,y
dey
bpl .4
.8 sta CLRWRITEAUX
rts rts
*-------------------------------------- *--------------------------------------
ClrScr ldx #0 ClrScr ldx #0
txa lda #0 txa lda #0
.1 ldy BASEL,x .1 ldy BASEL,x
sty ZPPtr1 sty ZPPtr1
ldy BASEH,x ldy BASEH,x
sty ZPPtr1+1 sty ZPPtr1+1
sta SETPAGE2 sta SETPAGE2
jsr .2 jsr .2
sta CLRPAGE2 sta CLRPAGE2
jsr .2 jsr .2
inx inx
cpx #192 cpx #192
bne .1 bne .1
@ -263,9 +257,11 @@ ClrScr ldx #0
rts rts
.2 ldy #39 .2 ldy #39
.3 sta (ZPPtr1),y .3 sta (ZPPtr1),y
dey dey
bpl .3 bpl .3
rts rts
*-------------------------------------- *--------------------------------------
CS.END CS.END
@ -475,7 +471,6 @@ WRITE >STYA ZPIOCTL NON STANDARD
bpl .3 bpl .3
sta SETREADAUX sta SETREADAUX
jsr X.OSD jsr X.OSD
sta CLRREADAUX sta CLRREADAUX
sta CLRWRITEAUX sta CLRWRITEAUX
@ -636,15 +631,6 @@ DRV.END
OSD .PH $1000 OSD .PH $1000
.INB usr/src/drv/dhgr.drv.s.osd .INB usr/src/drv/dhgr.drv.s.osd
.EP .EP
*--------------------------------------
.PH $2000+240
OSD.TXTPTR.GetNext
sta CLRREADAUX
lda (TXTPTR)
sta SETREADAUX
rts
OSD.TXTPTR.GetNext.LEN .EQ *-OSD.TXTPTR.GetNext
.EP
*-------------------------------------- *--------------------------------------
.LIST ON .LIST ON
DRV.CS.SIZE .EQ DRV.CS.END-DRV.CS.START DRV.CS.SIZE .EQ DRV.CS.END-DRV.CS.START

View File

@ -14,7 +14,6 @@ NEW
.INB inc/mli.e.i .INB inc/mli.e.i
.INB inc/net.telnet.i .INB inc/net.telnet.i
.INB inc/xy.mouse.i .INB inc/xy.mouse.i
* .INB inc/gfx.i
.INB inc/kernel.i .INB inc/kernel.i
.INB usr/src/sys/kernel.s.def .INB usr/src/sys/kernel.s.def
@ -48,6 +47,9 @@ A2osX.AUX .DA #0
.DA A2osX.AUX.S .DA A2osX.AUX.S
A2osX.AUX.B .PH Mem.XHiMem A2osX.AUX.B .PH Mem.XHiMem
.DA SHARED.TXTPTR.GetNext
.INB usr/src/sys/kernel.s.termx .INB usr/src/sys/kernel.s.termx
.INB usr/src/sys/kernel.s.strvx .INB usr/src/sys/kernel.s.strvx
.INB usr/src/sys/kernel.s.envx .INB usr/src/sys/kernel.s.envx