mirror of
https://github.com/A2osX/A2osX.git
synced 2025-02-14 04:31:11 +00:00
Kernel 0.94
This commit is contained in:
parent
01d68659f4
commit
8088be4a8f
Binary file not shown.
@ -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
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
Loading…
x
Reference in New Issue
Block a user