Kernel 0.94

This commit is contained in:
Rémy GIBERT 2020-10-12 17:36:10 +02:00
parent 01d68659f4
commit 8088be4a8f
4 changed files with 189 additions and 90 deletions

Binary file not shown.

View File

@ -10,40 +10,149 @@ NEW
* S.CB.SrcH : height in bitmap/mask
* S.CB.SrcPtr : pointer to S.BM
* S.CB.SrcPtr+1 = 0, hMem in S.CB.SrcPtr
* S.CB.DstPtr : pointer to Save Buffer
* S.CB.DstPtr : pointer to Save/restore Buffer
*--------------------------------------
BITBLT ldy CB.Cache+S.CB.SrcPtr
lda CB.Cache+S.CB.SrcPtr+1
BITBLT >LDYA CB.Cache+S.CB.X1
jsr LBUF.SetBounds1YA
stx BLT.ScrBitOfs
lda CB.Cache+S.CB.X1
clc
adc CB.Cache+S.CB.SrcW
tay
lda CB.Cache+S.CB.X1+1
adc CB.Cache+S.CB.SrcW+1
pha
tya
sbc #0
tay
pla
sbc #0
jsr LBUF.SetBounds2YA
*--------------------------------------
lda CB.Cache+S.CB.OP
bit #S.CB.OP.RESTORE
beq BITBLT.0
ldy CB.Cache+S.CB.DstPtr
lda CB.Cache+S.CB.DstPtr+1
bne .1
sta SETREADAUX DstPtr is AUX hMem
tya
>SYSCALL2 GetMemPtr
.1 >STYA ZPBMSavePtr
ldy CB.Cache+S.CB.Y1
.2 lda BASEL,y setup line Base Ptr
sta ZPBasePtr
lda BASEH,y
sta ZPBasePtr+1
iny
phy
ldx LBUF.C1
.3 ldy COL.BANK,x
sta $C000,y
txa
lsr
tay
lda (ZPBMSavePtr)
sta (ZPBasePtr),y
inc ZPBMSavePtr
bne .4
inc ZPBMSavePtr+1
.4 cpx LBUF.C2
inx
bcc .3
ply
cpy CB.Cache+S.CB.Y2
bne .2
sta CLRREADAUX
rts
*--------------------------------------
BITBLT.0 bit #S.CB.OP.SAVE
beq BITBLT.1
ldy CB.Cache+S.CB.DstPtr
lda CB.Cache+S.CB.DstPtr+1
bne .1
tya DstPtr is AUX hMem
>SYSCALL2 GetStkObjPtr
sta SETWRITEAUX
.1 >STYA ZPBMSavePtr
ldy CB.Cache+S.CB.Y1
.2 lda BASEL,y setup line Base Ptr
sta ZPBasePtr
lda BASEH,y
sta ZPBasePtr+1
iny
phy
ldx LBUF.C1
.3 ldy COL.BANK,x
sta $C000,y
txa
lsr
tay
lda (ZPBasePtr),y
sta (ZPBMSavePtr)
inc ZPBMSavePtr
bne .4
inc ZPBMSavePtr+1
.4 cpx LBUF.C2
inx
bcc .3
ply
cpy CB.Cache+S.CB.Y2
bne .2
sta CLRWRITEAUX
lda CB.Cache+S.CB.OP
*--------------------------------------
BITBLT.1 and #$0F
beq .8
ldy CB.Cache+S.CB.SrcPtr
lda CB.Cache+S.CB.SrcPtr+1
bne .4
sta SETREADAUX SrcPtr is AUX hMem
tya
>SYSCALL2 GetMemPtr
.1 >STYA ZPBMDataPtr
.4 >STYA ZPBMDataPtr
lda CB.Cache+S.CB.OP
bit #S.CB.OP.SAVE+S.CB.OP.RESTORE
beq .3
jsr BITBLT.2
ldy CB.Cache+S.CB.DstPtr
lda CB.Cache+S.CB.DstPtr+1
bne .2
sta SETWRITEAUX DstPtr is AUX hMem
tya
>SYSCALL2 GetMemPtr
.2 >STYA ZPBMSavePtr
.8 sta CLRREADAUX
.3 jsr BITBLT.1
sta CLRREADAUX
sta CLRWRITEAUX
rts
BITBLT.1 ldy #S.BM-1
*--------------------------------------
BITBLT.2 ldy #S.BM-1
.1 lda (ZPBMDataPtr),y
sta BM.Cache,y
@ -51,6 +160,7 @@ BITBLT.1 ldy #S.BM-1
bpl .1
ldx #0
lda BM.Cache+S.BM.F
cmp #S.BM.F.BBP1
beq .11
@ -117,23 +227,7 @@ BITBLT.1 ldy #S.BM-1
inc BLT.BMMaskPtr+1
.4 >LDYA CB.Cache+S.CB.X1
jsr LBUF.SetBounds1YA
stx BLT.ScrBitOfs
lda CB.Cache+S.CB.X1
clc
adc CB.Cache+S.CB.SrcW
tay
lda CB.Cache+S.CB.X1+1
adc CB.Cache+S.CB.SrcW+1
pha
tya
sbc #0
tay
pla
sbc #0
jsr LBUF.SetBounds2YA
ldx BLT.ScrBitOfs
.4 ldx BLT.ScrBitOfs
beq BITBLT.LOOP0
ldy Shift.L.LO-1,x X = 1->6
@ -147,6 +241,7 @@ BITBLT.1 ldy #S.BM-1
sta BITBLT.LOOPx.3+1
sta BITBLT.LOOPx.7+1
jmp BITBLT.LOOPx
*------------ Shift 0
BITBLT.LOOP0 lda CB.Cache+S.CB.OP
@ -211,12 +306,14 @@ BITBLT.LOOP0 lda CB.Cache+S.CB.OP
bcc .5
inc BLT.BMDataPtr+1
.5 jmp BITBLT.LOOP0
.8 clc
rts
*------------ Shift 1->6 Comment : SCRBitOfs=X=3
BITBLT.LOOPx lda CB.Cache+S.CB.OP X = BLT.ScrBitOfs
bit #S.CB.OP.MASK
beq BITBLT.LOOPx.4
@ -299,7 +396,9 @@ BITBLT.LOOPx.7 and #$ff SELF MODIFIED : #%01110000 get only col2 bites
adc BM.Cache+S.BM.RowBytes
sta BLT.BMDataPtr
bcc .2
inc BLT.BMDataPtr+1
.2 jmp BITBLT.LOOPx
.8 clc

View File

@ -24,7 +24,7 @@ LBUF.SetBounds2YA
rts
.1 lda C1.MASK,x
and C2.MASK,x
ora C2.MASK,x
sta LBUF.C1.MASK
lda C1.DATA,x
ora C2.DATA,x
@ -37,58 +37,9 @@ LBUF.DrawAtY lda BASEL,y setup line Base Ptr
sta ZPBasePtr+1
lda CB.Cache+S.CB.OP
bit #S.CB.OP.RESTORE
bne .4
bit #S.CB.OP.SAVE
beq .3
ldx LBUF.C1
.1 ldy COL.BANK,x
sta $C000,y
txa
lsr
tay
lda (ZPBasePtr),y
sta (ZPBMSavePtr)
inc ZPBMSavePtr
bne .2
inc ZPBMSavePtr+1
.2 cpx LBUF.C2
inx
bcc .1
lda CB.Cache+S.CB.OP
.3 and #$F
beq .8
and #$F
tax
jmp (J.LBUF.DrawAtY,x)
.4 ldx LBUF.C1
.5 ldy COL.BANK,x
sta $C000,y
txa
lsr
tay
lda (ZPBMSavePtr)
sta (ZPBasePtr),y
inc ZPBMSavePtr
bne .6
inc ZPBMSavePtr+1
.6 cpx LBUF.C2
inx
bcc .5
.8 rts
*--------------------------------------
LBUF.DrawAtY.SET
LBUF.DrawAtY.AND.SET

View File

@ -256,6 +256,9 @@ MENU.Show >SYSCALL2 GetMemPtr
.5 >LDYA ZPMENUPtr
jsr OBJ.SetX2Y2
jsr MENU.Save
bcs MENU.Show.RTS
jsr MENU.Show.Borders
ldy #S.MENU.MITEMS
@ -344,6 +347,52 @@ MENU.Show.GetW ldy #S.MITEM.F
.8 rts
*--------------------------------------
MENU.Save jsr CB.ClearCache
lda #S.CB.CMD.GETRECTBUFSIZE
sta CB.Cache+S.CB.CMD
ldy #S.OBJ.X1
ldx #0
.1 lda (ZPMENUPtr),y
sta CB.Cache+S.CB.X1
iny
inx
cpx #8 X1,Y1,X2,Y2
bne .1
jsr GFXWrite.CB
>SYSCALL NewStkObj
bcs .9
stx CB.Cache+S.CB.DstPtr
ldy #S.MENU.hSAVEBUF
sta (ZPMENUPtr),y
lda #S.CB.CMD.BITBLT
sta CB.Cache+S.CB.CMD
lda #S.CB.OP.SAVE
sta CB.Cache+S.CB.OP
ldy #S.OBJ.W
ldx #0
.2 lda (ZPMENUPtr),y
sta CB.Cache+S.CB.SrcW
iny
inx
cpx #4 W,H
bne .2
>DEBUG
jsr GFXWrite.CB
* clc
.9 rts
*--------------------------------------
MENU.Show.Borders
lda #S.CB.CMD.FILLRECT
jsr PutA2CBBuf