Kernel 0.94

This commit is contained in:
Rémy GIBERT 2020-07-02 08:11:15 +02:00
parent 12231d6fec
commit 8dd8dda5bd
6 changed files with 145 additions and 103 deletions

Binary file not shown.

View File

@ -57,42 +57,34 @@ CS.INIT clc
*-------------------------------------- *--------------------------------------
CS.RUN jsr GFX.Open CS.RUN jsr GFX.Open
bcs .9 bcs .9
jsr LoadResources jsr LoadResources
bcs .9 bcs .9
>LDYA L.CB.RECT >LDYA L.CB.RECT
jsr GFX.Write.YA jsr GFX.Write.YA
>LDYA L.BM.Apple >LDYA L.BM.Apple
>STYA CB.Apple+S.CB.SrcPtr >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.Apple >LDYA L.CB.Apple
jsr GFX.Write.YA jsr GFX.Write.YA
lda #0
sec
rts
lda hFontB lda hFontB
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
* >SYSCALL OSD jsr GFX.Write.YA
bcs .9 bcs .9
>LDYA L.CB.TEXTB >LDYA L.CB.TEXTB
jsr GFX.Write.YA jsr GFX.Write.YA
lda hFont lda hFont
sta CB.TEXT+S.CB.hFont sta CB.TEXT+S.CB.hFont
@ -100,7 +92,7 @@ CS.RUN jsr GFX.Open
>STYA CB.TEXT+S.CB.TxtPtr >STYA CB.TEXT+S.CB.TxtPtr
>LDYA L.CB.TEXT >LDYA L.CB.TEXT
* >SYSCALL OSD jsr GFX.Write.YA
bcs .9 bcs .9
>LDYA L.CB.TEXT >LDYA L.CB.TEXT
@ -218,7 +210,7 @@ CB.PIX .DA #S.CB.CMD.BITBLT
.BS 2 SrcPtr .BS 2 SrcPtr
.DA 0 DSTPTR .DA 0 DSTPTR
CB.TEXTB .DA #S.CB.CMD.DRAWTEXT 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
.BS 1 hFONT .BS 1 hFONT
@ -231,7 +223,7 @@ CB.TEXTB .DA #S.CB.CMD.DRAWTEXT
.BS 2 TXTPTR .BS 2 TXTPTR
.DA 0 DSTPTR .DA 0 DSTPTR
CB.TEXT .DA #S.CB.CMD.DRAWTEXT CB.TEXT .DA #S.CB.CMD.DRAWTEXT+S.CB.CMD.OSD
.DA #S.CB.OP.SET .DA #S.CB.OP.SET
.DA #S.CB.M.MONO .DA #S.CB.M.MONO
.BS 1 hFONT .BS 1 hFONT
@ -243,7 +235,6 @@ CB.TEXT .DA #S.CB.CMD.DRAWTEXT
.DA 184 DstY .DA 184 DstY
.BS 2 TXTPTR .BS 2 TXTPTR
.DA 0 DSTPTR .DA 0 DSTPTR
*-------------------------------------- *--------------------------------------
BM.Apple .DA #S.BM.F.BBP4 BM.Apple .DA #S.BM.F.BBP4
.DA #2 RowBytes .DA #2 RowBytes

View File

@ -15,8 +15,8 @@ NEW
* S.CB.SrcPtr+1 = 0, hMem in S.CB.SrcPtr * S.CB.SrcPtr+1 = 0, hMem in S.CB.SrcPtr
* S.CB.DstPtr : pointer to Save Buffer * S.CB.DstPtr : pointer to Save Buffer
*-------------------------------------- *--------------------------------------
BITBLT ldy CB.CACHE+S.CB.SrcPtr BITBLT ldy CB.Cache+S.CB.SrcPtr
lda CB.CACHE+S.CB.SrcPtr+1 lda CB.Cache+S.CB.SrcPtr+1
bne BITBLT.1 bne BITBLT.1
sta SETREADAUX sta SETREADAUX

View File

@ -18,27 +18,32 @@ TXTPTR .EQ ZPDRV+22
*-------------------------------------- *--------------------------------------
* Y,A = Ptr to S.CB in MAIN * Y,A = Ptr to S.CB in MAIN
*-------------------------------------- *--------------------------------------
X.OSD ldy CB.Cache+S.CB.DstPtr X.OSD ldy CBX.Cache+S.CB.DstPtr
lda CB.Cache+S.CB.DstPtr+1 lda CBX.Cache+S.CB.DstPtr+1
bne .11 Ptr To Aux bne .1 Ptr To Aux
tya hBM in Aux tya hBM in Aux
beq .7 no Src BM beq .4 no Src BM
>SYSCALL2 GetMemPtr >SYSCALL2 GetMemPtr
.11 >STYA ZPDstBMPtr .1 >STYA ZPDstBMPtr
ldx #0 ldx #0
.1 lda (ZPDstBMPtr)
.2 lda (ZPDstBMPtr)
sta DstBM.Cache,x sta DstBM.Cache,x
inc ZPDstBMPtr inc ZPDstBMPtr
bne .2 bne .3
inc ZPDstBMPtr+1 inc ZPDstBMPtr+1
.2 inx .3 inx
cpx #S.BM cpx #S.BM
bne .1 bne .2
.7 ldx CB.Cache+S.CB.CMD .4 lda CBX.Cache+S.CB.CMD
asl
tax
jmp (.8,x) jmp (.8,x)
*-------------------------------------- *--------------------------------------
.8 .DA OSD.SETPIXEL .8 .DA OSD.SETPIXEL
@ -52,7 +57,7 @@ X.OSD ldy CB.Cache+S.CB.DstPtr
.DA OSD.DRAWTEXT .DA OSD.DRAWTEXT
.DA OSD.GETTEXTSIZE .DA OSD.GETTEXTSIZE
*-------------------------------------- *--------------------------------------
OSD.SETPIXEL >LDYA CB.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 YAMultX
pha pha
@ -63,32 +68,32 @@ OSD.SETPIXEL >LDYA CB.Cache+S.CB.Y1
pla pla
adc ZPDstBMPtr+1 adc ZPDstBMPtr+1
sta ZPDstBMPtr+1 sta ZPDstBMPtr+1
lda CB.Cache+S.CB.M lda CBX.Cache+S.CB.M
bit #S.CB.M.C16 bit #S.CB.M.C16
bne OSD.SETPIXEL.C16 bne OSD.SETPIXEL.C16
OSD.SETPIXEL.M lda CB.Cache+S.CB.X1 OSD.SETPIXEL.M lda CBX.Cache+S.CB.X1
pha pha
and #$7 MOD 7 and #$7 MOD 7
tax tax
pla pla
lsr CB.Cache+S.CB.X1 lsr CBX.Cache+S.CB.X1
ror ror
lsr CB.Cache+S.CB.X1 lsr CBX.Cache+S.CB.X1
ror ror
lsr CB.Cache+S.CB.X1 lsr CBX.Cache+S.CB.X1
ror ror
clc clc
adc ZPDstBMPtr adc ZPDstBMPtr
sta ZPDstBMPtr sta ZPDstBMPtr
lda CB.Cache+S.CB.X1 lda CBX.Cache+S.CB.X1
adc ZPDstBMPtr+1 adc ZPDstBMPtr+1
sta ZPDstBMPtr+1 sta ZPDstBMPtr+1
lda CB.Cache+S.CB.OP lda CBX.Cache+S.CB.OP
* cmp #S.CB.OP.XOR * cmp #S.CB.OP.XOR
beq .2 beq .2
lda CB.Cache+S.CB.COLOR lda CBX.Cache+S.CB.COLOR
bne .1 bne .1
lda (ZPDstBMPtr) lda (ZPDstBMPtr)
and Mono8.NMasks,x and Mono8.NMasks,x
@ -126,7 +131,7 @@ OSD.FILLRECT
* S.CB.SrcPtr+1 = 0, hMem in S.CB.SrcPtr * S.CB.SrcPtr+1 = 0, hMem in S.CB.SrcPtr
* S.CB.DstPtr : pointer to Save Buffer * S.CB.DstPtr : pointer to Save Buffer
*-------------------------------------- *--------------------------------------
OSD.BITBLT >LDYA CB.CACHE+S.CB.SrcPtr OSD.BITBLT >LDYA CBX.Cache+S.CB.SrcPtr
bne OSD.BITBLT.1 bne OSD.BITBLT.1
tya tya
>SYSCALL2 GetMemPtr >SYSCALL2 GetMemPtr
@ -166,7 +171,7 @@ OSD.DRAWTEXT sec
*-------------------------------------- *--------------------------------------
OSD.GETTEXTSIZE clc OSD.GETTEXTSIZE clc
php php
lda CB.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
@ -181,30 +186,35 @@ OSD.GETTEXTSIZE clc
lda ZPFontPtr+1 lda ZPFontPtr+1
adc /S.FON adc /S.FON
sta ZPTablePtr+1 sta ZPTablePtr+1
.2 >LDYA CB.Cache+S.CB.TxtPtr .2 >LDYA CBX.Cache+S.CB.TxtPtr
>STYA TXTPTR >STYA TXTPTR
stz CB.Cache+S.CB.SrcW stz CBX.Cache+S.CB.SrcW
stz CB.Cache+S.CB.SrcW+1 stz CBX.Cache+S.CB.SrcW+1
lda FON.Cache+S.FON.PixH lda FON.Cache+S.FON.PixH
sta CB.Cache+S.CB.SrcH sta CBX.Cache+S.CB.SrcH
stz CB.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
adc CB.Cache+S.CB.SrcW adc CBX.Cache+S.CB.SrcW
sta CB.Cache+S.CB.SrcW sta CBX.Cache+S.CB.SrcW
bcc .3 bcc .3
inc CB.Cache+S.CB.SrcW+1 inc CBX.Cache+S.CB.SrcW+1
bra .3 bra .3
.4 plp .4 plp
lda CB.Cache+S.CB.SrcW lda CBX.Cache+S.CB.SrcW
ldx CB.Cache+S.CB.SrcW+1 ldx CBX.Cache+S.CB.SrcW+1
ldy CB.Cache+S.CB.SrcH ldy CBX.Cache+S.CB.SrcH
bcc OSD.GETRECTBUFSIZE.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
@ -212,9 +222,9 @@ OSD.GETTEXTSIZE clc
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.GETRECTBUFSIZE.RTS bcs OSD.DRAWTEXT.RTS
sta OSD.DRAWTEXT.END+1 save hBM, ZPDstBMPtr=BMData sta OSD.DRAWTEXT.END+1 save hBM, ZPDstBMPtr=BMData
>LDYA CB.Cache+S.CB.TxtPtr >LDYA CBX.Cache+S.CB.TxtPtr
>STYA TXTPTR >STYA TXTPTR
stz GWORD reset Col index in BM stz GWORD reset Col index in BM
@ -223,6 +233,12 @@ OSD.GETTEXTSIZE clc
OSD.DRAWTEXT.LOOP 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
@ -249,14 +265,14 @@ OSD.DRAWTEXT.LOOP
adc GWORD Update Col Index in BM adc GWORD Update Col Index in BM
sta GWORD sta GWORD
bra OSD.DRAWTEXT.LOOP bra OSD.DRAWTEXT.LOOP
OSD.DRAWTEXT.RTS
OSD.DRAWTEXT.END OSD.DRAWTEXT.END
lda #$FF SELF MODIFIED lda #$FF SELF MODIFIED
sta CB.Cache+S.CB.SrcPtr Save hBM in Src CB sta CBX.Cache+S.CB.SrcPtr Save hBM in Src CB
stz CB.Cache+S.CB.SrcPtr+1 stz CBX.Cache+S.CB.SrcPtr+1
lda #S.CB.CMD.BITBLT lda #S.CB.CMD.BITBLT
sta CB.Cache+S.CB.CMD sta CBX.Cache+S.CB.CMD
jmp CB.Update jmp CB.Update
*-------------------------------------- *--------------------------------------
OSD.DRAWTEXT.JMP OSD.DRAWTEXT.JMP
@ -509,7 +525,7 @@ OSD.BM.Create lda DstBM.Cache+S.BM.W
sta .4+2 sta .4+2
ldy #0 ldy #0
lda CB.Cache+S.CB.OP lda CBX.Cache+S.CB.OP
and #S.CB.OP.INVERSE and #S.CB.OP.INVERSE
beq .3 beq .3
@ -554,20 +570,22 @@ OSD.YAMultX stx GBYTE
bne .2 bne .2
rts rts
*-------------------------------------- *--------------------------------------
CB.Update ldy #S.CB-1 CB.Update sta CLRWRITEAUX
sta SETWRITEAUX
.1 lda CB.Cache,y ldx CBX.Cache
ldy CB.CmdLen,x
.1 lda CBX.Cache,y
sta (ZPCmdPtr),y sta (ZPCmdPtr),y
dey dey
bpl .1 bpl .1
sta CLRWRITEAUX sta SETWRITEAUX
clc clc
rts rts
*-------------------------------------- *--------------------------------------
*CB.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
DstBM.Cache .BS S.BM DstBM.Cache .BS S.BM

View File

@ -39,7 +39,7 @@ L.DRV.CS.START .DA DRV.CS.START
L.FD.DEV .DA FD.DEV L.FD.DEV .DA FD.DEV
L.FD.DEV.NAME .DA FD.DEV.NAME L.FD.DEV.NAME .DA FD.DEV.NAME
*-------------------------------------- *--------------------------------------
L.X.OSD .DA X.OSD L.OSD .DA OSD
.DA 0 End Of Reloc Table .DA 0 End Of Reloc Table
*-------------------------------------- *--------------------------------------
Dev.Detect >LDYA L.MSG.DETECT Dev.Detect >LDYA L.MSG.DETECT
@ -48,9 +48,11 @@ Dev.Detect >LDYA L.MSG.DETECT
and #MACHID.T and #MACHID.T
cmp #MACHID.T.IIc cmp #MACHID.T.IIc
bne .1 bne .1
* stz DCB+S.DCB.GFX.S //c : 80c Mode * stz DCB+S.DCB.GFX.S //c : 80c Mode
>LDYA L.MSG.DETECT.IIC >LDYA L.MSG.DETECT.IIC
bra .3 bra .3
.1 php .1 php
sei sei
sta SET80STORE sta SET80STORE
@ -192,17 +194,17 @@ DrvReloc lda FD.DEV+S.FD.DEV.DRVPTR
rts rts
*-------------------------------------- *--------------------------------------
OSD.install >LDYA L.X.OSD OSD.install >LDYA L.OSD
>STYA ZPPtr1 >STYA ZPPtr1
>LDYAI X.OSD >LDYAI X.OSD
>STYA ZPPtr2 >STYA ZPPtr2
lda /X.OSD.LEN lda /X.OSD.LEN
eor #$ff eor #$ff
pha pha
lda /X.OSD.LEN lda #X.OSD.LEN
eor #$ff eor #$ff
tax tax
@ -215,7 +217,7 @@ OSD.install >LDYA L.X.OSD
pla pla
inc inc
beq .8 beq .3
pha pha
@ -225,10 +227,20 @@ OSD.install >LDYA L.X.OSD
iny iny
bne .1 bne .1
inc ZPPtr1 inc ZPPtr1+1
inc ZPPtr2 inc ZPPtr2+1
bra .1 bra .1
.3 ldy #OSD.TXTPTR.GetNext.LEN-1
.4 lda OSD.TXTPTR.GetNext,y
sta SETPAGE2
sta $2000+240,y
sta CLRPAGE2
sta $2000+240,y
dey
bpl .4
.8 sta CLRWRITEAUX .8 sta CLRWRITEAUX
rts rts
*-------------------------------------- *--------------------------------------
@ -435,31 +447,39 @@ CLOSE lda #S.DIB.S.OPENED
WRITE >STYA ZPIOCTL NON STANDARD WRITE >STYA ZPIOCTL NON STANDARD
sta SET80STORE sta SET80STORE
lda (ZPIOCTL) Get Cmd lda (ZPIOCTL) Get Cmd
bmi .2
.1 tax
tax
ldy CB.CmdLen,x ldy CB.CmdLen,x
.2 lda (ZPIOCTL),y asl
pha
.1 lda (ZPIOCTL),y
sta CB.Cache,y sta CB.Cache,y
dey dey
bpl .2 bpl .1
plx
jmp (J.Cmds,x)
.10 jmp (J.Cmds,x) .2 sta SETWRITEAUX
and #$7f
tax
ldy CB.CmdLen,x
.3 lda (ZPIOCTL),y
sta CBX.Cache,y
dey
bpl .3
*--------------------------------------
OSD.TXTPTR.GetNext
sta CLRREADAUX
lda (TXTPTR)
sta SETREADAUX sta SETREADAUX
beq OSD.TXTPTR.RTS
OSD.TXTPTR.Next inc TXTPTR jsr X.OSD
bne OSD.TXTPTR.RTS sta CLRREADAUX
inc TXTPTR+1 sta CLRWRITEAUX
OSD.TXTPTR.RTS rts rts
*-------------------------------------- *--------------------------------------
* IN: * IN:
* Y = LO * Y = LO
@ -579,13 +599,16 @@ Shift.R.HI .DA /SHIFT.L6
.DA /SHIFT.L2 .DA /SHIFT.L2
.DA /SHIFT.L1 .DA /SHIFT.L1
*-------------------------------------- *--------------------------------------
CB.CmdLen .DA S.CB.Y1+1 SETPIXEL CB.CmdLen .DA #S.CB.Y1+1 SETPIXEL
.DA S.CB.Y1+1 GETPIXEL .DA #S.CB.Y1+1 GETPIXEL
.DA S.CB.X2+1 HLINE .DA #S.CB.X2+1 HLINE
.DA S.CB.Y2+1 VLINE .DA #S.CB.Y2+1 VLINE
.DA S.CB.Y2+1 FILLRECT .DA #S.CB.Y2+1 FILLRECT
.DA S.CB.DstPtr+1 BITBLT .DA #S.CB.DstPtr+1 BITBLT
.DA S.CB.DstPtr+1 GETRECTBUFSIZE .DA #S.CB.DstPtr+1 GETRECTBUFSIZE
.DA #S.CB.Y2+1 DRAWLINE
.DA #S.CB.TxtPtr+1 DRAWTEXT
.DA #S.CB.SrcH+1 GETTEXTSIZE
*-------------------------------------- *--------------------------------------
CB.Cache .BS S.CB CB.Cache .BS S.CB
BM.Cache .BS S.BM BM.Cache .BS S.BM
@ -610,9 +633,18 @@ DCB .DA #S.DCB.T.GFX
*-------------------------------------- *--------------------------------------
DRV.END DRV.END
*-------------------------------------- *--------------------------------------
.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

@ -41,15 +41,16 @@ S.FON .EQ 8
*-------------------------------------- *--------------------------------------
S.CB.CMD .EQ 0 S.CB.CMD .EQ 0
S.CB.CMD.SETPIXEL .EQ 0 S.CB.CMD.SETPIXEL .EQ 0
S.CB.CMD.GETPIXEL .EQ 2 S.CB.CMD.GETPIXEL .EQ 1
S.CB.CMD.HLINE .EQ 4 S.CB.CMD.HLINE .EQ 2
S.CB.CMD.VLINE .EQ 6 S.CB.CMD.VLINE .EQ 3
S.CB.CMD.FILLRECT .EQ 8 S.CB.CMD.FILLRECT .EQ 4
S.CB.CMD.BITBLT .EQ 10 S.CB.CMD.BITBLT .EQ 5
S.CB.CMD.GETRECTBUFSIZE .EQ 12 S.CB.CMD.GETRECTBUFSIZE .EQ 6
S.CB.CMD.DRAWLINE .EQ 14 S.CB.CMD.DRAWLINE .EQ 7
S.CB.CMD.DRAWTEXT .EQ 16 S.CB.CMD.DRAWTEXT .EQ 8
S.CB.CMD.GETTEXTSIZE .EQ 18 S.CB.CMD.GETTEXTSIZE .EQ 9
S.CB.CMD.OSD .EQ 128
S.CB.OP .EQ 1 S.CB.OP .EQ 1
S.CB.OP.XOR .EQ 0 screen EOR bitmap -> Screen S.CB.OP.XOR .EQ 0 screen EOR bitmap -> Screen
S.CB.OP.SET .EQ 2 replace screen with bitmap S.CB.OP.SET .EQ 2 replace screen with bitmap